Index: work/old/tools/gerbertotk.c =================================================================== --- work/old/tools/gerbertotk.c (revision 36966) +++ work/old/tools/gerbertotk.c (nonexistent) @@ -1,259 +0,0 @@ -/* - * COPYRIGHT - * - * gerbertotk, simple Gerber file to tcl/tk program converter - * Copyright (C) 1996 Albert John FitzPatrick III - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * Contact addresses for paper mail and Email: - * Albert John FitzPatrick III/ 8803 Humming Bird Lane/ Quinton, VA 23141/ - * USA. - * ajf_nylorac@acm.org - * - */ - -/* WARNING: This is an alpha version. Use it with many grains of salt. */ - -static char Copyright[] = "Copyright (C) 1996 Albert John FitzPatrick III"; - -/* - * Example Usage: - * cat *.gbr | gerbertotk | wish - */ - -#include -#include - -typedef long GerberValue; - -typedef struct { - int gc_inComment; - GerberValue gc_d; - GerberValue gc_x1; - GerberValue gc_y1; - GerberValue gc_x2; - GerberValue gc_y2; - GerberValue gc_i; - GerberValue gc_j; - } GerberContext; - -GerberContext gc; - -#define gbMaxX 10000L -#define gbMaxY 10000L -#define tkScale 4L -#define tkX(x) (800L * (x) * tkScale / gbMaxX) -#define tkY(y) ((600L * (gbMaxY - (y)) * tkScale / gbMaxY)) - - -do_cmd(GerberContext *gc, int cmd, char *buffer) -{ - GerberValue value = atol(buffer); - - switch (cmd) { - case 'G': - switch (value) { - case 4L: - gc->gc_inComment = 1; - break; - } - break; - case 'X': - gc->gc_x2 = value; - break; - case 'Y': - gc->gc_y2 = value; - break; - case 'I': - gc->gc_i = value; - break; - case 'J': - gc->gc_j = value; - break; - case 'D': - switch (value) { - case 1L: - /* Move with light on. */ - printf(".f.c create line %ld %ld %ld %ld\n", - (long) tkX(gc->gc_x1), - (long) tkY(gc->gc_y1), - (long) tkX(gc->gc_x2), - (long) tkY(gc->gc_y2) - ); - gc->gc_x1 = gc->gc_x2; - gc->gc_y1 = gc->gc_y2; - break; - case 2L: - /* Move with light off. */ - gc->gc_x1 = gc->gc_x2; - gc->gc_y1 = gc->gc_y2; - break; - case 3L: - /* Move with light off. Flash light on. Turn light off. */ - printf(".f.c create line %ld %ld %ld %ld\n", - (long) tkX(gc->gc_x2), - (long) tkY(gc->gc_y2), - (long) tkX(gc->gc_x2), - (long) tkY(gc->gc_y2) - ); - break; - default: - gc->gc_d = value; - break; - } - break; - case 'M': - break; - case '*': - gc->gc_inComment = 0; - break; - case '\0': - /* FIXME: what if missing on first time? - fprintf(stderr, "Missing Gerber command character.\n"); - */ - break; - } -} - - -main(int argc, char *argv[]) -{ - int ch; - int cmd; - char buffer[1024]; - char *bp; - - if (argc != 1) { - fprintf(stderr, "%s: %s\n", - argv[0], - Copyright - ); - fprintf(stderr, "%s: Usage: %s\n", - argv[0], - argv[0] - ); - exit(1); - } - - bp = buffer; - cmd = '\0'; - gc.gc_inComment = 0; - gc.gc_d = 0L; - gc.gc_x1 = 0L; - gc.gc_y1 = 0L; - gc.gc_x2 = 0L; - gc.gc_y2 = 0L; - gc.gc_i = 0L; - gc.gc_j = 0L; - - printf("button .exit \\\n"); - printf("\t-command exit \\\n"); - printf("\t-text Exit\n"); - printf("frame .f\n"); - printf("canvas .f.c \\\n"); - printf("\t-width 800 \\\n"); - printf("\t-height 600 \\\n"); - printf("\t-scrollregion { 0 0 10000 10000 } \\\n"); - printf("\t-xscroll { .f.h set } \\\n"); - printf("\t-yscroll { .f.v set }\n"); - printf("scrollbar .f.v \\\n"); - printf("\t-orient vertical \\\n"); - printf("\t-command { .f.c yview }\n"); - printf("scrollbar .f.h \\\n"); - printf("\t-orient horizontal \\\n"); - printf("\t-command { .f.c xview }\n"); - - printf("\n"); - printf("pack .exit .f \\\n"); - printf("\t-side top \\\n"); - printf("\t-expand yes \\\n"); - printf("\t-fill both\n"); - printf("pack .f.v \\\n"); - printf("\t-side right \\\n"); - printf("\t-fill y\n"); - printf("pack .f.h \\\n"); - printf("\t-side bottom \\\n"); - printf("\t-fill x\n"); - printf("pack .f.c \\\n"); - printf("\t-side left\n"); - - printf("\n"); - - while ((ch = getchar()) != EOF) { - if (gc.gc_inComment && ch != '*') - continue; - - switch (ch) { - case 'D': - case 'G': - case 'X': - case 'Y': - case 'I': - case 'J': - case 'M': - do_cmd(&gc, cmd, buffer); - cmd = ch; - bp = buffer; - break; - case '*': - /* FIXME: Handle other EOB characters. */ - if (gc.gc_inComment) - do_cmd(&gc, ch, buffer); - else - do_cmd(&gc, cmd, buffer); - cmd = '\0'; - bp = buffer; - break; - case '\r': - /* FIXME: only after EOB. */ - cmd = '\0'; - bp = buffer; - break; - case '\012': - /* FIXME: only after EOB. */ - cmd = '\0'; - bp = buffer; - break; - case '+': - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - *bp++ = (char) ch; - *bp = '\0'; - break; - default: - do_cmd(&gc, cmd, buffer); - cmd = '\0'; - bp = buffer; - if (! gc.gc_inComment) - fprintf(stderr, "Unknown Gerber command '%c' (%d).\n", - (char) ch, - ch - ); - break; - } - } - - exit(0); -} Property changes on: work/old/tools/gerbertotk.c ___________________________________________________________________ Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property