]> Pileus Git - ~andy/ct/commitdiff
Use dynamic memory, fix CSS for tables
authorAndy Spencer <andy753421@gmail.com>
Tue, 12 Jan 2010 21:28:45 +0000 (21:28 +0000)
committerAndy Spencer <andy753421@gmail.com>
Tue, 12 Jan 2010 21:28:45 +0000 (21:28 +0000)
knot/html.ct
knot/knot.c
knot/knot.h
knot/mkfile
mkfile

index 40fbe44c88be7bad8d379559aed257b6a633caad..fa6e766d20cb8d4c4782bfcee22fdd1240b2296d 100644 (file)
@@ -9,7 +9,7 @@
        <% } %>
 <% } %>
 
-<% void print_index(tile_t **tiles) { %>
+<% void print_index(row_t *rows) { %>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
        <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
        <head>
                <style type="text/css">
-                       *   { border:0; margin:0; padding:0; }
-                       table { border-collapse:separate; margin:auto; width:1800px;}
-                       td  { width:64px; height:64px; border-spacing:0px 0px;}
+                       td  { min-width:64px; height:64px; }
                        img { position:absolute; }
                </style>
        </head>
        <body>
        <table cellpadding="0" cellspacing="0">
-               <% for (int row = 1; row < 10; row++) { %>
+               <% for (int row = 1; rows[row].cols; row++) { %>
                <tr>
-                       <% for (int col = 1; col < 30; col++) { %>
+                       <% for (int col = 1; col < rows[row].ncols; col++) { %>
                        <td>
-                       <% print_img(tiles[row][col].bot); %>
-                       <% print_img(tiles[row][col].top); %>
+                               <% print_img(rows[row].cols[col].bot); %>
+                               <% print_img(rows[row].cols[col].top); %>
                        </td>
                        <% } %>
                </tr>
index 13954d1aaf647800691c2355fe6acfb776dada24..9743cf4a3536d95209266b256791a9cd0a7b1b4a 100644 (file)
@@ -1,18 +1,17 @@
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include "knot.h"
 
-static void do_tile(tile_t **tiles, int row, int col)
+static void do_tile(row_t *rows, int row, int col)
 {
-       tile_t *t = &tiles[row][col];
-       tile_t *l = &tiles[row][col-1];
-       tile_t *r = &tiles[row][col+1];
-       tile_t *u = &tiles[row-1][col];
-       //tile_t *d = &tiles[row+1][col];
+       tile_t *t = &rows[row  ].cols[col  ];
+       tile_t *l = &rows[row  ].cols[col-1];
+       tile_t *u = &rows[row-1].cols[col  ];
 
        /* Fill in what we know */
-       switch (tiles[row][col].c) {
+       switch (t->c) {
        case '-':  t->top = LEFT | RIGHT; break;
        case '|':  t->top = UP | DOWN;    break;
        case '\'': t->top = UP;           break;
@@ -22,8 +21,9 @@ static void do_tile(tile_t **tiles, int row, int col)
        /* Follow bottoms */
        if (t->c == '|' && (l->top | l->bot) & RIGHT)
                t->bot = LEFT | RIGHT;
-       if (t->c == '-' && (u->top | u->bot) & DOWN)
-               t->bot = UP | DOWN;
+       if (rows[row-1].ncols >= col)
+               if (t->c == '-' && (u->top | u->bot) & DOWN)
+                       t->bot = UP | DOWN;
 
        /* Adds sides for ''s and .'s */
        if (t->c == '.' || t->c == '\'') {
@@ -46,30 +46,25 @@ static void print_ptrn(int ptrn)
 int main()
 {
        /* Init tiles */
-       tile_t *tiles[64];
-       for (int i = 0; i < 64; i++)
-               tiles[i] = calloc(512, sizeof(tile_t));
-
-       /* Read data */
        char c;
        int row = 1, col = 1;
+       row_t *rows = calloc(sizeof(row_t), (row+2));
        while ((c = getchar()) != EOF) {
-               if (row > 63 || col > 511)
-                       exit(-1);
                if (c == '\n') {
                        row++;
                        col = 1;
+                       rows = realloc(rows, sizeof(row_t) * (row+2));
+                       rows[row+1] = (row_t){};
                } else {
-                       tiles[row][col].c = c;
+                       rows[row].cols = realloc(rows[row].cols, sizeof(tile_t) * (col+1));
+                       rows[row].ncols = col+1;
+                       rows[row].cols[col] = (tile_t){};
+                       rows[row].cols[col].c = c;
+                       do_tile(rows, row, col);
                        col++;
                }
        }
 
-       /* Process */
-       for (row = 1; row < 63; row++)
-               for (col = 1; col < 511; col++)
-                       do_tile(tiles, row, col);
-
        /* Output */
        //for (row = 1; row < 63; row++) {
        //      for (col = 1; col < 511; col++) {
@@ -81,5 +76,5 @@ int main()
        //}
 
        /* HTML */
-       print_index(tiles);
+       print_index(rows);
 }
index 0e777975c1e1ca7f707ea1cbec302f8145845647..52a1aef8677121cee35a7a4982c0a4e82552eef7 100644 (file)
@@ -11,4 +11,9 @@ typedef struct {
        int bot;
 } tile_t;
 
-void print_index(tile_t **tiles);
+typedef struct {
+       tile_t *cols;
+       int ncols;
+} row_t;
+
+void print_index(row_t *rows);
index f38e2c9e9cedf243eb055c734696eb1b82144539..ea142e4cbf07b47f0f2ee612036c33089d55fe30 100644 (file)
@@ -2,6 +2,7 @@ PROGS=knot
 CLEAN=html.c *.html
 
 default:V: hitch.html
+
 knot: knot.o html.o knot.h 
 
 %.html: $PROGS %.txt
diff --git a/mkfile b/mkfile
index cbbaef13007119ffa230cba11d0135fa96599e9f..ab461944c26fc57587d257a0d29c954aeec544b6 100644 (file)
--- a/mkfile
+++ b/mkfile
@@ -1,6 +1,6 @@
 PROGS=ct lib
 PKGS=glib-2.0
-default:V: run
+default:V: all
 lib-run:V: lib
        ./lib
 ct-run:V: ct