diff --git a/globalconst.h b/globalconst.h index ff8e696..71bc61a 100755 --- a/globalconst.h +++ b/globalconst.h @@ -60,36 +60,36 @@ /* --------------------------------------------------------------------------- * some limit specifications */ -#define LARGE_VALUE 10000000 /* maximum extent of board and elements in 1/100 mil */ +#define LARGE_VALUE 10000000 /* maximum extent of board and elements */ #define MAX_LAYER 16 /* max number of layer, check source */ /* code for more changes, a *lot* more changes */ #define DEF_LAYER 8 /* default number of layers for new boards */ #define NUM_STYLES 4 -#define MIN_LINESIZE 1 /* thickness of lines in 1/100000'' */ +#define MIN_LINESIZE MIL_TO_COORD(0.01) /* thickness of lines */ #define MAX_LINESIZE LARGE_VALUE #define MIN_TEXTSCALE 10 /* scaling of text objects in percent */ #define MAX_TEXTSCALE 10000 -#define MIN_PINORVIASIZE 2000 /* size of a pin or via in 1/100 mils */ -#define MIN_PINORVIAHOLE 400 /* size of a pins or vias drilling hole */ +#define MIN_PINORVIASIZE MIL_TO_COORD(20) /* size of a pin or via */ +#define MIN_PINORVIAHOLE MIL_TO_COORD(4) /* size of a pins or vias drilling hole */ #define MAX_PINORVIASIZE LARGE_VALUE -#define MIN_PINORVIACOPPER 400 /* min difference outer-inner diameter */ -#define MIN_PADSIZE 100 /* min size of a pad */ +#define MIN_PINORVIACOPPER MIL_TO_COORD(4) /* min difference outer-inner diameter */ +#define MIN_PADSIZE MIL_TO_COORD(1) /* min size of a pad */ #define MAX_PADSIZE LARGE_VALUE /* max size of a pad */ -#define MIN_DRC_VALUE 10 -#define MAX_DRC_VALUE 50000 -#define MIN_DRC_SILK 100 -#define MAX_DRC_SILK 3000 -#define MIN_DRC_DRILL 100 -#define MAX_DRC_DRILL 5000 +#define MIN_DRC_VALUE MIL_TO_COORD(0.1) +#define MAX_DRC_VALUE MIL_TO_COORD(500) +#define MIN_DRC_SILK MIL_TO_COORD(1) +#define MAX_DRC_SILK MIL_TO_COORD(30) +#define MIN_DRC_DRILL MIL_TO_COORD(1) +#define MAX_DRC_DRILL MIL_TO_COORD(50) #define MIN_DRC_RING 0 -#define MAX_DRC_RING 10000 -#define MIN_GRID 1 /* min grid in 1/100 mils */ -#define MAX_GRID 100000 /* max grid in 1/100 mils */ +#define MAX_DRC_RING MIL_TO_COORD(100) +#define MIN_GRID 1 +#define MAX_GRID MIL_TO_COORD(1000) #define MAX_FONTPOSITION 255 /* upper limit of characters in my font */ #define MAX_COORD LARGE_VALUE /* coordinate limits */ -#define MIN_SIZE 1000 /* lowest width and height of the board */ +#define MIN_SIZE MIL_TO_COORD(10) /* lowest width and height of the board */ #define MAX_BUFFER 5 /* number of pastebuffers */ /* additional changes in menu.c are */ /* also required to select more buffers */ diff --git a/src/action.c b/src/action.c index 9bad677..c959dfc 100644 --- a/src/action.c +++ b/src/action.c @@ -1857,15 +1857,15 @@ ActionDRCheck (int argc, char **argv, int x, int y) if (gui->drc_gui == NULL || gui->drc_gui->log_drc_overview) { - Message (_("Rules are minspace %d.%02d, minoverlap %d.%d " - "minwidth %d.%02d, minsilk %d.%02d\n" - "min drill %d.%02d, min annular ring %d.%02d\n"), - (PCB->Bloat + 1) / 100, (PCB->Bloat + 1) % 100, - PCB->Shrink / 100, PCB->Shrink % 100, - PCB->minWid / 100, PCB->minWid % 100, - PCB->minSlk / 100, PCB->minSlk % 100, - PCB->minDrill / 100, PCB->minDrill % 100, - PCB->minRing / 100, PCB->minRing % 100); + Message (_("Rules are minspace %.2f, minoverlap %.2f " + "minwidth %.2f, minsilk %.2f\n" + "min drill %.2f, min annular ring %.2f\n"), + COORD_TO_MIL(PCB->Bloat + 1), + COORD_TO_MIL(PCB->Shrink), + COORD_TO_MIL(PCB->minWid), + COORD_TO_MIL(PCB->minSlk), + COORD_TO_MIL(PCB->minDrill), + COORD_TO_MIL(PCB->minRing)); } count = DRCAll (); if (gui->drc_gui == NULL || gui->drc_gui->log_drc_overview) @@ -2394,7 +2394,7 @@ from. %end-doc */ -#define GAP 10000 +#define GAP MIL_TO_COORD(100) static int ActionDisperseElements (int argc, char **argv, int x, int y) diff --git a/src/autoplace.c b/src/autoplace.c index e1461c6..c2b104a 100644 --- a/src/autoplace.c +++ b/src/autoplace.c @@ -379,7 +379,7 @@ ComputeCost (NetListTypePtr Nets, double T0, double T) box->Y2 = maxy; } /* okay, add half-perimeter to cost! */ - W += (maxx - minx) / 100 + (maxy - miny) / 100 + + W += COORD_TO_MIL(maxx - minx) + COORD_TO_MIL(maxy - miny) + ((allpads && !allsameside) ? CostParameter.via_cost : 0); } /* now compute penalty function Wc which is proportional to diff --git a/src/buffer.c b/src/buffer.c index 43d5c2b..e38a2ec 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -1064,7 +1064,7 @@ ConvertBufferToElement (BufferTypePtr Buffer) { char num[8]; if (via->Mask < via->Thickness) - via->Mask = via->Thickness + 2 * MASKFRAME * 100; /* MASKFRAME is in mils */ + via->Mask = via->Thickness + 2 * MIL_TO_COORD(MASKFRAME); /* MASKFRAME is in mils */ if (via->Name) CreateNewPin (Element, via->X, via->Y, via->Thickness, via->Clearance, via->Mask, via->DrillingHole, diff --git a/src/change.c b/src/change.c index 277717a..c65c534 100644 --- a/src/change.c +++ b/src/change.c @@ -739,7 +739,7 @@ ChangeLineClearSize (LayerTypePtr Layer, LineTypePtr Line) if (Line->Clearance == 0) { CLEAR_FLAG (CLEARLINEFLAG, Line); - Line->Clearance = 1000; + Line->Clearance = MIL_TO_COORD(10); } SetLineBoundingBox (Line); r_insert_entry (Layer->line_tree, (BoxTypePtr) Line, 0); @@ -820,7 +820,7 @@ ChangeArcClearSize (LayerTypePtr Layer, ArcTypePtr Arc) if (Arc->Clearance == 0) { CLEAR_FLAG (CLEARLINEFLAG, Arc); - Arc->Clearance = 1000; + Arc->Clearance = MIL_TO_COORD(10); } SetArcBoundingBox (Arc); r_insert_entry (Layer->arc_tree, (BoxTypePtr) Arc, 0); diff --git a/src/const.h b/src/const.h index 3b6cd30..724b3be 100644 --- a/src/const.h +++ b/src/const.h @@ -65,12 +65,16 @@ #define COS_22_5_DEGREE 0.923879533 /* cos(22.5) */ #define TAN_30_DEGREE 0.577350269 /* tan(30) */ #define TAN_60_DEGREE 1.732050808 /* tan(60) */ -#define MIL_TO_MM 0.025400000 -#define MM_TO_MIL (1./MIL_TO_MM) -#define COOR_TO_MM 0.000254000 -#define MM_TO_COOR (1./COOR_TO_MM) #define LN_2_OVER_2 0.346573590 +/* PCB/physical unit conversions */ +#define COORD_TO_MIL(n) ((n) / 100.0) +#define MIL_TO_COORD(n) ((n) * 100.0) +#define COORD_TO_MM(n) ((n) * 0.000254) +#define MM_TO_COORD(n) ((n) / 0.000254) +#define COORD_TO_INCH(n) (COORD_TO_MIL(n) / 1000.0) +#define INCH_TO_COORD(n) (MIL_TO_COORD(n) * 1000.0) + /* --------------------------------------------------------------------------- * modes */ diff --git a/src/create.c b/src/create.c index f942c40..6409139 100644 --- a/src/create.c +++ b/src/create.c @@ -248,8 +248,8 @@ CreateNewVia (DataTypePtr Data, if (SQUARE (via->X - X) + SQUARE (via->Y - Y) <= SQUARE (via->DrillingHole / 2 + DrillingHole / 2)) { - Message (_("Dropping via at (%d, %d) because it's hole would overlap with the via " - "at (%d, %d)\n"), X/100, Y/100, via->X/100, via->Y/100); + Message (_("Dropping via at (%f, %f) because it's hole would overlap with the via " + "at (%f, %f)\n"), COORD_TO_MIL(X), COORD_TO_MIL(Y), COORD_TO_MIL(via->X), COORD_TO_MIL(via->Y)); return (NULL); /* don't allow via stacking */ } } diff --git a/src/djopt.c b/src/djopt.c index 4995c08..09abdc5 100644 --- a/src/djopt.c +++ b/src/djopt.c @@ -1719,7 +1719,7 @@ orthopull () c = c->next; } if (rv) - printf ("orthopull: %d mils saved\n", rv / 100); + printf ("orthopull: %f mils saved\n", COORD_TO_MIL(rv)); return rv; } @@ -2099,8 +2099,8 @@ vianudge () /* at this point, we know we can move it */ - dprintf ("vianudge: nudging via at %d,%d by %d mils saving %d\n", - c->x, c->y, len / 100, saved / 100); + dprintf ("vianudge: nudging via at %d,%d by %f mils saving %f\n", + c->x, c->y, COORD_TO_MIL(len), COORD_TO_MIL(saved)); rv += len * saved; move_corner (c, c2->x, c2->y); @@ -2111,7 +2111,7 @@ vianudge () } if (rv) - printf ("vianudge: %d mils saved\n", rv / 100); + printf ("vianudge: %f mils saved\n", COORD_TO_MIL(rv)); return rv; } diff --git a/src/find.c b/src/find.c index 7620d85..44bd706 100644 --- a/src/find.c +++ b/src/find.c @@ -157,7 +157,7 @@ RCSID ("$Id$"); #define IS_PV_ON_PAD(PV,Pad) \ ( IsPointInPad((PV)->X, (PV)->Y, MAX((PV)->Thickness/2 +Bloat,0), (Pad))) -#define LENGTH_TO_HUMAN(value) (Settings.grid_units_mm ? ((value) / 100000.0 * 25.4) : ((value) / 100.0)) +#define LENGTH_TO_HUMAN(value) (Settings.grid_units_mm ? COORD_TO_MM(value) : COORD_TO_MIL(value)) #define LENGTH_DIGITS (Settings.grid_units_mm ? 4 : 2) #define LENGTH_UNITS_STRING (Settings.grid_units_mm ? "mm" : "mils") diff --git a/src/hid/batch/batch.c b/src/hid/batch/batch.c index 99c2220..f14d75f 100644 --- a/src/hid/batch/batch.c +++ b/src/hid/batch/batch.c @@ -85,8 +85,8 @@ info (int argc, char **argv, int x, int y) } printf("Filename: %s\n", PCB->Filename); printf("Size: %g x %g mils, %g x %g mm\n", - PCB->MaxWidth / 100.0, - PCB->MaxHeight / 100.0, + COORD_TO_MIL(PCB->MaxWidth), + COORD_TO_MIL(PCB->MaxHeight), PCB->MaxWidth * COOR_TO_MM, PCB->MaxHeight * COOR_TO_MM); cg = GetLayerGroupNumberByNumber (component_silk_layer); diff --git a/src/hid/gcode/gcode.c b/src/hid/gcode/gcode.c index 6491afd..50f22cb 100644 --- a/src/hid/gcode/gcode.c +++ b/src/hid/gcode/gcode.c @@ -68,7 +68,7 @@ #endif #define CRASH fprintf(stderr, "HID error: pcb called unimplemented GCODE function %s.\n", __FUNCTION__); abort() -#define pcb_unit 100000.0 /* pcb internal units per inch */ +#define pcb_unit (INCH_TO_COORD(1)) /* pcb internal units per inch */ struct color_struct { /* the descriptor used by the gd library */ @@ -182,7 +182,7 @@ REGISTER_ATTRIBUTES (gcode_attribute_list) /* *** Utility funcions **************************************************** */ -/* convert from default PCB units (1/100 mil) to gcode units */ +/* convert from default PCB units to gcode units */ static int pcb_to_gcode (int pcb) { int gcode; @@ -446,7 +446,7 @@ gcode_do_export (HID_Attr_Val * options) gcode_cutdepth = options[HA_cutdepth].real_value * scale; gcode_drilldepth = options[HA_drilldepth].real_value * scale; gcode_safeZ = options[HA_safeZ].real_value * scale; - gcode_toolradius = options[HA_toolradius].real_value * scale * pcb_unit; /* in PCB units (1/100 mil) */ + gcode_toolradius = options[HA_toolradius].real_value * scale * pcb_unit; /* in PCB units */ if (metric) gcode_toolradius *= 1 / 25.4; gcode_choose_groups (); diff --git a/src/hid/gerber/gerber.c b/src/hid/gerber/gerber.c index d5843ef..9642579 100644 --- a/src/hid/gerber/gerber.c +++ b/src/hid/gerber/gerber.c @@ -145,7 +145,7 @@ int n_pending_drills = 0, max_pending_drills = 0; /*----------------------------------------------------------------------------*/ /* Defined Constants */ /*----------------------------------------------------------------------------*/ -#define AUTO_OUTLINE_WIDTH 800 /* Auto-geneated outline width of 8 mils */ +#define AUTO_OUTLINE_WIDTH MIL_TO_COORD(8) /* Auto-geneated outline width of 8 mils */ /*----------------------------------------------------------------------------*/ @@ -203,16 +203,16 @@ printAperture(FILE *f, int i) { case ROUND: fprintf (f, "%%ADD%dC,%.4f*%%\015\012", dCode, - width / 100000.0); + COORD_TO_INCH(width)); break; case SQUARE: fprintf (f, "%%ADD%dR,%.4fX%.4f*%%\015\012", - dCode, width / 100000.0, width / 100000.0); + dCode, COORD_TO_INCH(width), COORD_TO_INCH(width)); break; case OCTAGON: fprintf (f, "%%AMOCT%d*5,0,8,0,0,%.4f,22.5*%%\015\012" "%%ADD%dOCT%d*%%\015\012", dCode, - width / (100000.0 * COS_22_5_DEGREE), dCode, + COORD_TO_INCH(width) / COS_22_5_DEGREE, dCode, dCode); break; #if 0 @@ -628,7 +628,7 @@ gerber_set_layer (const char *name, int group, int empty) if (curapp->aperture_used[i]) fprintf (f, "T%02dC%.3f\015\012", i + DCODE_BASE, - global_aperture_sizes[i] / 100000.0); + COORD_TO_INCH(global_aperture_sizes[i])); fprintf (f, "%%\015\012"); /* FIXME */ return 1; diff --git a/src/hid/gtk/gtkhid-main.c b/src/hid/gtk/gtkhid-main.c index 5af6ed6..eb7e248 100644 --- a/src/hid/gtk/gtkhid-main.c +++ b/src/hid/gtk/gtkhid-main.c @@ -1652,9 +1652,9 @@ CursorAction(int argc, char **argv, int x, int y) * come up with PCB internal units. */ if (strncasecmp (argv[3], "mm", 2) == 0) - xu = yu = MM_TO_COOR; + xu = yu = MM_TO_COORD(1); else if (strncasecmp (argv[3], "mil", 3) == 0) - xu = yu = 100; + xu = yu = MIL_TO_COORD(1); else if (strncasecmp (argv[3], "grid", 4) == 0) xu = yu = PCB->Grid; else if (strncasecmp (argv[3], "view", 4) == 0) diff --git a/src/hid/gtk/gui-drc-window.c b/src/hid/gtk/gui-drc-window.c index 70a097e..674e495 100644 --- a/src/hid/gtk/gui-drc-window.c +++ b/src/hid/gtk/gui-drc-window.c @@ -962,9 +962,6 @@ ghid_drc_window_show (gboolean raise) gtk_widget_show_all (drc_window); } -#define UNIT1(value) (Settings.grid_units_mm ? ((value) / 100000.0 * 25.4) : ((value) / 100.0)) -#define UNIT(value) UNIT1(value) , (Settings.grid_units_mm ? "mm" : "mils") - void ghid_drc_window_append_violation (DrcViolationType *violation) { GhidDrcViolation *violation_obj; diff --git a/src/hid/gtk/gui-misc.c b/src/hid/gtk/gui-misc.c index 8bda96d..97d12b6 100644 --- a/src/hid/gtk/gui-misc.c +++ b/src/hid/gtk/gui-misc.c @@ -509,17 +509,17 @@ ghid_set_status_line_label (void) "text=%i%% " "buffer=#%i"), Settings.ShowSolderSide ? _("solder") : _("component"), - PCB->Grid / 100.0, + COORD_TO_MIL(PCB->Grid), (int) Settings.GridFactor, TEST_FLAG (ALLDIRECTIONFLAG, PCB) ? "all" : (PCB->Clipping == 0 ? "45" : (PCB->Clipping == 1 ? "45_/" : "45\\_")), TEST_FLAG (RUBBERBANDFLAG, PCB) ? ",R " : " ", - Settings.LineThickness / 100.0, - Settings.ViaThickness / 100.0, - Settings.ViaDrillingHole / 100.0, + COORD_TO_MIL(Settings.LineThickness), + COORD_TO_MIL(Settings.ViaThickness), + COORD_TO_MIL(Settings.ViaDrillingHole), ghidgui->compact_horizontal ? "\n" : "", - Settings.Keepaway / 100.0, + COORD_TO_MIL(Settings.Keepaway), Settings.TextScale, Settings.BufferNumber + 1); else snprintf (text, sizeof (text), @@ -532,16 +532,16 @@ ghid_set_status_line_label (void) "text=%i%% " "buffer=#%i"), Settings.ShowSolderSide ? _("solder") : _("component"), - PCB->Grid * COOR_TO_MM, (int) Settings.GridFactor, + COORD_TO_MM(PCB->Grid), (int) Settings.GridFactor, TEST_FLAG (ALLDIRECTIONFLAG, PCB) ? "all" : (PCB->Clipping == 0 ? "45" : (PCB->Clipping == 1 ? "45_/" : "45\\_")), TEST_FLAG (RUBBERBANDFLAG, PCB) ? ",R " : " ", - Settings.LineThickness * COOR_TO_MM, - Settings.ViaThickness * COOR_TO_MM, - Settings.ViaDrillingHole * COOR_TO_MM, + COORD_TO_MM(Settings.LineThickness), + COORD_TO_MM(Settings.ViaThickness), + COORD_TO_MM(Settings.ViaDrillingHole), ghidgui->compact_horizontal ? "\n" : "", - Settings.Keepaway * COOR_TO_MM, + COORD_TO_MM(Settings.Keepaway), Settings.TextScale, Settings.BufferNumber + 1); ghid_status_line_set_text (text); @@ -569,7 +569,7 @@ ghid_get_grid_factor(void) if (!Settings.grid_units_mm) return -1; - factor = PCB->Grid * COOR_TO_MM * grid_scale; + factor = COORD_TO_MM(PCB->Grid) * grid_scale; rounded_factor = floor (factor + .5); /* check whether the grid is actually metric @@ -585,20 +585,20 @@ ghid_get_grid_factor(void) static double ghid_grid_pcb_to_units (double x, double grid_factor) { - double x_scaled = (Settings.grid_units_mm? COOR_TO_MM: 1./100) * x; + double x_scaled = (Settings.grid_units_mm ? COORD_TO_MM(1): COORD_TO_MIL(1)) * x; double nearest_gridpoint; if (grid_factor < 0) return x_scaled; - x *= COOR_TO_MM; + x = COORD_TO_MM(x); nearest_gridpoint = floor (x / grid_factor + .5); /* honour snapping to an unaligned object */ - if (fabs (nearest_gridpoint * grid_factor - x) > COOR_TO_MM) + if (fabs (nearest_gridpoint * grid_factor - x) > COORD_TO_MM(1)) return x_scaled; /* without mm-adjusted grid_factor - (return floor (x / PCB->Grid + .5) * PCB->Grid * COOR_TO_MM), + (return floor (x / PCB->Grid + .5) * COORD_TO_MM(PCB->Grid)), the round-off errors redintroduce the bug for 0.1 or 0.05 mm grid at coordinates more than 1500 mm. grid_factor makes the stuff work at least up to 254 m, diff --git a/src/hid/gtk/gui-top-window.c b/src/hid/gtk/gui-top-window.c index f33678a..961e0a4 100644 --- a/src/hid/gtk/gui-top-window.c +++ b/src/hid/gtk/gui-top-window.c @@ -408,34 +408,32 @@ ghid_update_toggle_flags () #define N_GRID_SETTINGS 11 -#define MM_TO_PCB(mm) ((mm) * 100000 / 25.4) - static gdouble grid_mil_values[N_GRID_SETTINGS] = { - 10.0, - 20.0, - 50.0, - 100.0, - 200.0, - 500.0, - 1000.0, - 2000.0, - 2500.0, - 5000.0, - 10000.0 + MIL_TO_COORD (0.10), + MIL_TO_COORD (0.20), + MIL_TO_COORD (0.50), + MIL_TO_COORD (1.00), + MIL_TO_COORD (2.00), + MIL_TO_COORD (5.00), + MIL_TO_COORD (10.0), + MIL_TO_COORD (20.0), + MIL_TO_COORD (25.0), + MIL_TO_COORD (50.0), + MIL_TO_COORD (100) }; static gdouble grid_mm_values[N_GRID_SETTINGS] = { - MM_TO_PCB (0.002), - MM_TO_PCB (0.005), - MM_TO_PCB (0.01), - MM_TO_PCB (0.02), - MM_TO_PCB (0.05), - MM_TO_PCB (0.1), - MM_TO_PCB (0.2), - MM_TO_PCB (0.25), - MM_TO_PCB (0.5), - MM_TO_PCB (1.0), - MM_TO_PCB (2.0) + MM_TO_COORD (0.002), + MM_TO_COORD (0.005), + MM_TO_COORD (0.01), + MM_TO_COORD (0.02), + MM_TO_COORD (0.05), + MM_TO_COORD (0.1), + MM_TO_COORD (0.2), + MM_TO_COORD (0.25), + MM_TO_COORD (0.5), + MM_TO_COORD (1.0), + MM_TO_COORD (2.0) }; /* When the user toggles grid units mil<->mm, call this to get an diff --git a/src/hid/gtk/gui.h b/src/hid/gtk/gui.h index f419530..81eab52 100644 --- a/src/hid/gtk/gui.h +++ b/src/hid/gtk/gui.h @@ -55,14 +55,11 @@ /* Go from from the grid units in use (millimeters or mils) to PCB units | and back again. - | PCB keeps values internally to 1/100000 inch (0.01 mils), but gui + | PCB keeps values internally higher precision, but gui | widgets (spin buttons, labels, etc) need mils or millimeters. */ -#define FROM_PCB_UNITS(v) (Settings.grid_units_mm ? \ - ((v) * 0.000254) : ((v) * 0.01)) - -#define TO_PCB_UNITS(v) (Settings.grid_units_mm ? \ - ((v) / 0.000254 + 0.5) : ((v) * 100.0 + 0.5)) +#define FROM_PCB_UNITS(v) (Settings.grid_units_mm ? COORD_TO_MM(v) : COORD_TO_MIL(v)) +#define TO_PCB_UNITS(v) (Settings.grid_units_mm ? MM_TO_COORD(v) : MIL_TO_COORD(v)) extern int ghid_flip_x, ghid_flip_y; #define SIDE_X(x) ((ghid_flip_x ? PCB->MaxWidth - (x) : (x))) diff --git a/src/hid/lesstif/dialogs.c b/src/hid/lesstif/dialogs.c index 8756d1f..ffe99eb 100644 --- a/src/hid/lesstif/dialogs.c +++ b/src/hid/lesstif/dialogs.c @@ -1140,9 +1140,9 @@ sz_str2val (Widget w, int pcbu) return atoi (buf); sscanf (buf, "%lf", &d); if (Settings.grid_units_mm) - return MM_TO_PCB (d); + return MM_TO_COORD (d); else - return MIL_TO_PCB (d); + return MIL_TO_COORD (d); } static void @@ -1153,9 +1153,9 @@ sz_val2str (Widget w, int u, int pcbu) if (pcbu) { if (Settings.grid_units_mm) - d = PCB_TO_MM (u); + d = COORD_TO_MM (u); else - d = PCB_TO_MIL (u); + d = COORD_TO_MIL (u); sprintf (buf, "%.2f", d + 0.002); } else diff --git a/src/hid/lesstif/lesstif.h b/src/hid/lesstif/lesstif.h index 66a5c12..1bd368f 100644 --- a/src/hid/lesstif/lesstif.h +++ b/src/hid/lesstif/lesstif.h @@ -60,7 +60,3 @@ extern void lesstif_attributes_dialog (char *, AttributeListType *); #define need_idle_proc lesstif_need_idle_proc #define show_crosshair lesstif_show_crosshair -#define PCB_TO_MIL(n) ((n) / 100.0) -#define PCB_TO_MM(n) ((n) / 100000.0 * 25.4) -#define MIL_TO_PCB(n) (int)((n) * 100.0 + 0.2) -#define MM_TO_PCB(n) (int)((n) / 25.4 * 100000.0 + 0.2) diff --git a/src/hid/lesstif/main.c b/src/hid/lesstif/main.c index c1b12d3..d211da3 100644 --- a/src/hid/lesstif/main.c +++ b/src/hid/lesstif/main.c @@ -872,9 +872,9 @@ CursorAction(int argc, char **argv, int x, int y) dy = -dy; if (strncasecmp (argv[3], "mm", 2) == 0) - xu = yu = MM_TO_COOR; + xu = yu = MM_TO_COORD(1); else if (strncasecmp (argv[3], "mil", 3) == 0) - xu = yu = 100; + xu = yu = MIL_TO_COORD(1); else if (strncasecmp (argv[3], "grid", 4) == 0) xu = yu = PCB->Grid; else if (strncasecmp (argv[3], "view", 4) == 0) @@ -888,7 +888,7 @@ CursorAction(int argc, char **argv, int x, int y) yu = PCB->MaxHeight / 100.0; } else - xu = yu = 100; + xu = yu = MIL_TO_COORD(1); EventMoveCrosshair (Crosshair.X+(int)(dx*xu), Crosshair.Y+(int)(dy*yu)); gui->set_crosshair (Crosshair.X, Crosshair.Y, pan_warp); @@ -2298,16 +2298,16 @@ coords_to_widget (int x, int y, Widget w, int prev_state) if (Settings.grid_units_mm) { /* MM */ - dx = PCB_TO_MM (x); - dy = PCB_TO_MM (y); - g = PCB_TO_MM (PCB->Grid); + dx = COORD_TO_MM (x); + dy = COORD_TO_MM (y); + g = COORD_TO_MM (PCB->Grid); } else { /* Mils */ - dx = PCB_TO_MIL (x); - dy = PCB_TO_MIL (y); - g = PCB_TO_MIL (PCB->Grid); + dx = COORD_TO_MIL (x); + dy = COORD_TO_MIL (y); + g = COORD_TO_MIL (PCB->Grid); } if (x < 0 && prev_state >= 0) buf[0] = 0; @@ -2358,9 +2358,9 @@ pcb2str (int pcbval) bufp = (bufp + 1) % 20; if (Settings.grid_units_mm) - d = PCB_TO_MM (pcbval); + d = COORD_TO_MM (pcbval); else - d = PCB_TO_MIL (pcbval); + d = COORD_TO_MIL (pcbval); if ((int) (d * 100 + 0.5) == (int) (d + 0.005) * 100) sprintf (buf[bufp], "%d", (int) d); @@ -2617,16 +2617,16 @@ idle_proc (XtPointer dummy) { if (Settings.grid_units_mm) { - g = PCB_TO_MM (old_grid); - x = PCB_TO_MM (old_gx); - y = PCB_TO_MM (old_gy); + g = COORD_TO_MM (old_grid); + x = COORD_TO_MM (old_gx); + y = COORD_TO_MM (old_gy); u = "mm"; } else { - g = PCB_TO_MIL (old_grid); - x = PCB_TO_MIL (old_gx); - y = PCB_TO_MIL (old_gy); + g = COORD_TO_MIL (old_grid); + x = COORD_TO_MIL (old_gx); + y = COORD_TO_MIL (old_gy); u = "mil"; } if (x || y) @@ -2656,12 +2656,12 @@ idle_proc (XtPointer dummy) if (Settings.grid_units_mm) { - g = PCB_TO_MM (view_zoom); + g = COORD_TO_MM (view_zoom); units = "mm"; } else { - g = PCB_TO_MIL (view_zoom); + g = COORD_TO_MIL (view_zoom); units = "mil"; } if ((int) (g * 100 + 0.5) == (int) (g + 0.005) * 100) diff --git a/src/hid/lesstif/styles.c b/src/hid/lesstif/styles.c index 829caab..9e9b61c 100644 --- a/src/hid/lesstif/styles.c +++ b/src/hid/lesstif/styles.c @@ -101,9 +101,9 @@ update_one_value (int i, int v) char buf[100]; double d; if (use_mm) - d = PCB_TO_MM (v); + d = COORD_TO_MM (v); else - d = PCB_TO_MIL (v); + d = COORD_TO_MIL (v); sprintf (buf, "%.2f", d); XmTextSetString (style_values[i], buf); @@ -172,9 +172,9 @@ style_value_cb (Widget w, int i, void *cbs) s = XmTextGetString (w); sscanf (s, "%lf", &d); if (use_mm) - n = MM_TO_PCB (d); + n = MM_TO_COORD (d); else - n = MIL_TO_PCB (d); + n = MIL_TO_COORD (d); switch (i) { case SSthick: diff --git a/src/hid/nelma/nelma.c b/src/hid/nelma/nelma.c index 6e911ff..7d136d6 100644 --- a/src/hid/nelma/nelma.c +++ b/src/hid/nelma/nelma.c @@ -182,12 +182,12 @@ REGISTER_ATTRIBUTES(nelma_attribute_list) /* *** Utility funcions **************************************************** */ -/* convert from default PCB units (1/100 mil) to nelma units */ +/* convert from default PCB units to nelma units */ static int pcb_to_nelma(int pcb) { int nelma; - nelma = (pcb * nelma_dpi) / 100000; + nelma = COORD_TO_INCH(pcb) * nelma_dpi; return nelma; } diff --git a/src/hid/png/png.c b/src/hid/png/png.c index ab64e5a..cb38659 100644 --- a/src/hid/png/png.c +++ b/src/hid/png/png.c @@ -316,13 +316,13 @@ parse_bloat (char *str) suf[0] = 0; sscanf (str, "%lf %s", &val, suf); if (strcasecmp (suf, "in") == 0) - bloat = val * 100000.0; + bloat = INCH_TO_COORD(val); else if (strcasecmp (suf, "mil") == 0) - bloat = val * 100.0; + bloat = MIL_TO_COORD(val); else if (strcasecmp (suf, "mm") == 0) - bloat = val * MM_TO_COOR; + bloat = MM_TO_COORD(val); else if (strcasecmp (suf, "um") == 0) - bloat = val * MM_TO_COOR / 1000.0; + bloat = MM_TO_COORD(val) / 1000.0; else if (strcasecmp (suf, "pix") == 0 || strcasecmp (suf, "px") == 0) bloat = val * scale; @@ -628,13 +628,10 @@ png_do_export (HID_Attr_Val * options) if (dpi > 0) { /* - * a scale of 1 means 1 pixel is 1/100 mil - * a scale of 100,000 means 1 pixel is 1 inch - * FIXME -- need to use a macro to go from PCB units - * so if we ever change pcb's internal units, this - * will get updated. + * a scale of 1 means 1 pixel is 1 inch + * a scale of 10 means 1 pixel is 10 inches */ - scale = 100000.0 / dpi; + scale = INCH_TO_COORD(1) / dpi; w = w / scale; h = h / scale; } diff --git a/src/hid/ps/eps.c b/src/hid/ps/eps.c index f94175f..afcfb73 100644 --- a/src/hid/ps/eps.c +++ b/src/hid/ps/eps.c @@ -231,7 +231,7 @@ eps_hid_export_to_file (FILE * the_file, HID_Attr_Val * options) in_mono = options[HA_mono].int_value; -#define pcb2em(x) (int)((x) / 100000.0 * 72.0 * options[HA_scale].real_value + 1) +#define pcb2em(x) (int)(COORD_TO_INCH(x) * 72.0 * options[HA_scale].real_value + 1) fprintf (f, "%%%%BoundingBox: 0 0 %d %d\n", pcb2em (bounds->X2 - bounds->X1), pcb2em (bounds->Y2 - bounds->Y1)); diff --git a/src/hid/ps/ps.c b/src/hid/ps/ps.c index a417753..79459d6 100644 --- a/src/hid/ps/ps.c +++ b/src/hid/ps/ps.c @@ -110,44 +110,44 @@ typedef struct * {A,B,C,D,E}-Size here are the ANSI sizes and not the architectural sizes. */ -#define MARGINX 50000 -#define MARGINY 50000 +#define MARGINX MIL_TO_COORD(500) +#define MARGINY MIL_TO_COORD(500) static MediaType media_data[] = { - {"A0", 3311023, 4681102, MARGINX, MARGINY}, - {"A1", 2338582, 3311023, MARGINX, MARGINY}, - {"A2", 1653543, 2338582, MARGINX, MARGINY}, - {"A3", 1169291, 1653543, MARGINX, MARGINY}, - {"A4", 826771, 1169291, MARGINX, MARGINY}, - {"A5", 582677, 826771, MARGINX, MARGINY}, - {"A6", 413385, 582677, MARGINX, MARGINY}, - {"A7", 291338, 413385, MARGINX, MARGINY}, - {"A8", 204724, 291338, MARGINX, MARGINY}, - {"A9", 145669, 204724, MARGINX, MARGINY}, - {"A10", 102362, 145669, MARGINX, MARGINY}, - {"B0", 3937007, 5566929, MARGINX, MARGINY}, - {"B1", 2783464, 3937007, MARGINX, MARGINY}, - {"B2", 1968503, 2783464, MARGINX, MARGINY}, - {"B3", 1389763, 1968503, MARGINX, MARGINY}, - {"B4", 984251, 1389763, MARGINX, MARGINY}, - {"B5", 692913, 984251, MARGINX, MARGINY}, - {"B6", 492125, 692913, MARGINX, MARGINY}, - {"B7", 346456, 492125, MARGINX, MARGINY}, - {"B8", 244094, 346456, MARGINX, MARGINY}, - {"B9", 173228, 244094, MARGINX, MARGINY}, - {"B10", 122047, 173228, MARGINX, MARGINY}, - {"Letter", 850000, 1100000, MARGINX, MARGINY}, - {"11x17", 1100000, 1700000, MARGINX, MARGINY}, - {"Ledger", 1700000, 1100000, MARGINX, MARGINY}, - {"Legal", 850000, 1400000, MARGINX, MARGINY}, - {"Executive", 750000, 1000000, MARGINX, MARGINY}, - {"A-size", 850000, 1100000, MARGINX, MARGINY}, - {"B-size", 1100000, 1700000, MARGINX, MARGINY}, - {"C-size", 1700000, 2200000, MARGINX, MARGINY}, - {"D-size", 2200000, 3400000, MARGINX, MARGINY}, - {"E-size", 3400000, 4400000, MARGINX, MARGINY}, - {"US-Business_Card", 350000, 200000, 0, 0}, - {"Intl-Business_Card", 337500, 212500, 0, 0} + {"A0", MM_TO_COORD(841), MM_TO_COORD(1189), MARGINX, MARGINY}, + {"A1", MM_TO_COORD(594), MM_TO_COORD(841), MARGINX, MARGINY}, + {"A2", MM_TO_COORD(420), MM_TO_COORD(594), MARGINX, MARGINY}, + {"A3", MM_TO_COORD(297), MM_TO_COORD(420), MARGINX, MARGINY}, + {"A4", MM_TO_COORD(210), MM_TO_COORD(297), MARGINX, MARGINY}, + {"A5", MM_TO_COORD(148), MM_TO_COORD(210), MARGINX, MARGINY}, + {"A6", MM_TO_COORD(105), MM_TO_COORD(148), MARGINX, MARGINY}, + {"A7", MM_TO_COORD(74), MM_TO_COORD(105), MARGINX, MARGINY}, + {"A8", MM_TO_COORD(52), MM_TO_COORD(74), MARGINX, MARGINY}, + {"A9", MM_TO_COORD(37), MM_TO_COORD(52), MARGINX, MARGINY}, + {"A10", MM_TO_COORD(26), MM_TO_COORD(37), MARGINX, MARGINY}, + {"B0", MM_TO_COORD(1000), MM_TO_COORD(1414), MARGINX, MARGINY}, + {"B1", MM_TO_COORD(707), MM_TO_COORD(1000), MARGINX, MARGINY}, + {"B2", MM_TO_COORD(500), MM_TO_COORD(707), MARGINX, MARGINY}, + {"B3", MM_TO_COORD(353), MM_TO_COORD(500), MARGINX, MARGINY}, + {"B4", MM_TO_COORD(250), MM_TO_COORD(353), MARGINX, MARGINY}, + {"B5", MM_TO_COORD(176), MM_TO_COORD(250), MARGINX, MARGINY}, + {"B6", MM_TO_COORD(125), MM_TO_COORD(176), MARGINX, MARGINY}, + {"B7", MM_TO_COORD(88), MM_TO_COORD(125), MARGINX, MARGINY}, + {"B8", MM_TO_COORD(62), MM_TO_COORD(88), MARGINX, MARGINY}, + {"B9", MM_TO_COORD(44), MM_TO_COORD(62), MARGINX, MARGINY}, + {"B10", MM_TO_COORD(31), MM_TO_COORD(44), MARGINX, MARGINY}, + {"Letter", INCH_TO_COORD(8.5), INCH_TO_COORD(11), MARGINX, MARGINY}, + {"11x17", INCH_TO_COORD(11), INCH_TO_COORD(17), MARGINX, MARGINY}, + {"Ledger", INCH_TO_COORD(17), INCH_TO_COORD(11), MARGINX, MARGINY}, + {"Legal", INCH_TO_COORD(8.5), INCH_TO_COORD(14), MARGINX, MARGINY}, + {"Executive", INCH_TO_COORD(7.5), INCH_TO_COORD(10), MARGINX, MARGINY}, + {"A-size", INCH_TO_COORD(8.5), INCH_TO_COORD(11), MARGINX, MARGINY}, + {"B-size", INCH_TO_COORD(11), INCH_TO_COORD(17), MARGINX, MARGINY}, + {"C-size", INCH_TO_COORD(17), INCH_TO_COORD(22), MARGINX, MARGINY}, + {"D-size", INCH_TO_COORD(22), INCH_TO_COORD(34), MARGINX, MARGINY}, + {"E-size", INCH_TO_COORD(34), INCH_TO_COORD(44), MARGINX, MARGINY}, + {"US-Business_Card", INCH_TO_COORD(3.5), INCH_TO_COORD(2.0), 0, 0}, + {"Intl-Business_Card", INCH_TO_COORD(3.375), INCH_TO_COORD(2.125), 0, 0} }; #undef MARGINX @@ -349,8 +349,8 @@ ps_start_file (FILE *f) */ fprintf (f, "%%%%DocumentMedia: %s %g %g 0 \"\" \"\"\n", media_data[media].name, - media_data[media].Width * 72.0 / 100000.0, - media_data[media].Height * 72.0 / 100000.0); + COORD_TO_INCH(media_data[media].Width) * 72.0, + COORD_TO_INCH(media_data[media].Height) * 72.0); fprintf (f, "%%%%DocumentPaperSizes: %s\n", media_data[media].name); @@ -615,8 +615,8 @@ corner (int x, int y, int dx, int dy) int len = (PCB->MaxWidth + PCB->MaxHeight) / 10; int len2 = (PCB->MaxWidth + PCB->MaxHeight) / 50; #else - int len = 200000; - int len2 = 20000; + int len = MIL_TO_COORD(2000); + int len2 = MIL_TO_COORD(200); #endif int thick = 0; /* @@ -790,7 +790,7 @@ ps_set_layer (const char *name, int group, int empty) * If users don't want to make smaller boards, or use fewer drill * sizes, they can always ignore this sheet. */ if (SL_TYPE (idx) == SL_FAB) { - int natural = (int) ((boffset - 0.5) * 100000) - PCB->MaxHeight / 2; + int natural = (int) ((boffset - 0.5) * INCH_TO_COORD(1)) - PCB->MaxHeight / 2; int needed = PrintFab_overhang(); fprintf (f, "%% PrintFab overhang natural %d, needed %d\n", natural, needed); if (needed > natural) @@ -840,7 +840,7 @@ ps_set_layer (const char *name, int group, int empty) fprintf (f, "/a { gsave setlinewidth translate scale 0 0 1 5 3 roll arc stroke grestore} bind def\n"); if (drill_helper) fprintf (f, - "/dh { gsave %d setlinewidth 0 gray %d 0 360 arc stroke grestore} bind def\n", + "/dh { gsave %f setlinewidth 0 gray %f 0 360 arc stroke grestore} bind def\n", MIN_PINORVIAHOLE, MIN_PINORVIAHOLE * 3 / 2); } #if 0 diff --git a/src/main.c b/src/main.c index d14c935..ab9a614 100644 --- a/src/main.c +++ b/src/main.c @@ -484,24 +484,24 @@ HID_Attribute main_attribute_list[] = { COLOR (WarnColor, "#ff8000", "warn-color", "color for warnings"), COLOR (MaskColor, "#ff0000", "mask-color", "color for solder mask"), - ISET (ViaThickness, 6000, "via-thickness", 0), - ISET (ViaDrillingHole, 2800, "via-drilling-hole", 0), - ISET (LineThickness, 1000, "line-thickness", + ISET (ViaThickness, MIL_TO_COORD(60), "via-thickness", 0), + ISET (ViaDrillingHole, MIL_TO_COORD(28), "via-drilling-hole", 0), + ISET (LineThickness, MIL_TO_COORD(10), "line-thickness", "Initial thickness of new lines."), - ISET (RatThickness, 1000, "rat-thickness", 0), - ISET (Keepaway, 1000, "keepaway", 0), - ISET (MaxWidth, 600000, "default-PCB-width", 0), - ISET (MaxHeight, 500000, "default-PCB-height", 0), + ISET (RatThickness, MIL_TO_COORD(10), "rat-thickness", 0), + ISET (Keepaway, MIL_TO_COORD(10), "keepaway", 0), + ISET (MaxWidth, MIL_TO_COORD(MIL_TO_COORD(60)), "default-PCB-width", 0), + ISET (MaxHeight, MIL_TO_COORD(MIL_TO_COORD(50)), "default-PCB-height", 0), ISET (TextScale, 100, "text-scale", 0), - ISET (AlignmentDistance, 200, "alignment-distance", 0), - ISET (Bloat, 1000, "bloat", 0), - ISET (Shrink, 1000, "shrink", 0), - ISET (minWid, 1000, "min-width", "DRC minimum copper spacing"), - ISET (minSlk, 1000, "min-silk", "DRC minimum silk width"), - ISET (minDrill, 1500, "min-drill", "DRC minimum drill diameter"), - ISET (minRing, 1000, "min-ring", "DRC minimum annular ring"), - - RSET (Grid, 1000, "grid", 0), + ISET (AlignmentDistance, MIL_TO_COORD(2), "alignment-distance", 0), + ISET (Bloat, MIL_TO_COORD(10), "bloat", 0), + ISET (Shrink, MIL_TO_COORD(10), "shrink", 0), + ISET (minWid, MIL_TO_COORD(10), "min-width", "DRC minimum copper spacing"), + ISET (minSlk, MIL_TO_COORD(10), "min-silk", "DRC minimum silk width"), + ISET (minDrill, MIL_TO_COORD(15), "min-drill", "DRC minimum drill diameter"), + ISET (minRing, MIL_TO_COORD(10), "min-ring", "DRC minimum annular ring"), + + RSET (Grid, MIL_TO_COORD(10), "grid", 0), RSET (grid_increment_mm, 0.1, "grid-increment-mm", 0), RSET (grid_increment_mil, 5.0, "grid-increment-mil", 0), RSET (size_increment_mm, 0.2, "size-increment-mm", 0), @@ -510,7 +510,7 @@ HID_Attribute main_attribute_list[] = { RSET (line_increment_mil, 5.0, "line-increment-mil", 0), RSET (clear_increment_mm, 0.05, "clear-increment-mm", 0), RSET (clear_increment_mil, 2.0, "clear-increment-mil", 0), - RSET (IsleArea, 200000000, "minimum polygon area", 0), + RSET (IsleArea, MIL_TO_COORD(1400) * MIL_TO_COORD(1400), "minimum polygon area", 0), ISET (BackupInterval, 60, "backup-interval", 0), @@ -564,10 +564,10 @@ HID_Attribute main_attribute_list[] = { SSET (GnetlistProgram, NULL, "gnetlist", "Sets the name and optionally full path to the gnetlist(3) program"), - ISET (PinoutOffsetX, 100, "pinout-offset-x", 0), - ISET (PinoutOffsetY, 100, "pinout-offset-y", 0), - ISET (PinoutTextOffsetX, 800, "pinout-text-offset-x", 0), - ISET (PinoutTextOffsetY, -100, "pinout-text-offset-y", 0), + ISET (PinoutOffsetX, MIL_TO_COORD(1), "pinout-offset-x", 0), + ISET (PinoutOffsetY, MIL_TO_COORD(1), "pinout-offset-y", 0), + ISET (PinoutTextOffsetX, MIL_TO_COORD(8), "pinout-text-offset-x", 0), + ISET (PinoutTextOffsetY, MIL_TO_COORD(-1), "pinout-text-offset-y", 0), BSET (DrawGrid, 0, "draw-grid", "default to drawing the grid at startup"), BSET (ClearLine, 1, "clear-line", 0), @@ -609,11 +609,11 @@ REGISTER_ATTRIBUTES (main_attribute_list) if (Settings.LineThickness > MAX_LINESIZE || Settings.LineThickness < MIN_LINESIZE) - Settings.LineThickness = 1000; + Settings.LineThickness = MIL_TO_COORD(10); if (Settings.ViaThickness > MAX_PINORVIASIZE || Settings.ViaThickness < MIN_PINORVIASIZE) - Settings.ViaThickness = 4000; + Settings.ViaThickness = MIL_TO_COORD(40); if (Settings.ViaDrillingHole <= 0) Settings.ViaDrillingHole = diff --git a/src/misc.c b/src/misc.c index d63aef1..5037480 100644 --- a/src/misc.c +++ b/src/misc.c @@ -139,13 +139,13 @@ GetValue (const char *val, const char *units, bool * absolute) if (units && *units) { if (strncasecmp (units, "mm", 2) == 0) - value *= MM_TO_COOR; + value = MM_TO_COORD(value); else if (strncasecmp (units, "cm", 2) == 0) - value *= MM_TO_COOR * 10; + value = 10 * MM_TO_COORD(value); else if (strncasecmp (units, "mil", 3) == 0) - value *= 100; + value = MIL_TO_COORD(value); else if (strncasecmp (units, "in", 3) == 0) - value *= 100000; + value = INCH_TO_COORD(value); } return value; } @@ -845,7 +845,7 @@ ParseRouteString (char *s, RouteStyleTypePtr routeStyle, int scale) /* for backwards-compatibility, we use a 10-mil default * for styles which omit the keepaway specification. */ if (*s != ',') - routeStyle->Keepaway = 1000; + routeStyle->Keepaway = MIL_TO_COORD(10); else { s++; diff --git a/src/parse_l.l b/src/parse_l.l index 57cd1c6..56d3b84 100644 --- a/src/parse_l.l +++ b/src/parse_l.l @@ -143,10 +143,10 @@ Attribute { return(T_ATTRIBUTE); } yylval.number = (unsigned) *(yytext+1); return(CHAR_CONST); } -{FLOATINGMM} { return parse_number(3937.0079); } -{FLOATINGUM} { return parse_number(3.9370079); } -{FLOATINGIN} { return parse_number(100000.0); } -{FLOATINGMIL} { return parse_number(100.0); } +{FLOATINGMM} { return parse_number(MM_TO_COORD(1)); } +{FLOATINGUM} { return parse_number(MM_TO_COORD(1) * 1000); } +{FLOATINGIN} { return parse_number(INCH_TO_COORD(1)); } +{FLOATINGMIL} { return parse_number(MIL_TO_COORD(1)); } {DECIMAL} { return parse_number(1.0); } {HEX} { diff --git a/src/print.c b/src/print.c index cd19d31..286888d 100644 --- a/src/print.c +++ b/src/print.c @@ -316,12 +316,12 @@ PrintFab (void) /*FPrintOutline (); */ gui->set_line_width (Output.fgGC, FAB_LINE_W); text_at (200000, yoff, 0, - "Maximum Dimensions: %d mils wide, %d mils high", - PCB->MaxWidth / 100, PCB->MaxHeight / 100); + "Maximum Dimensions: %f mils wide, %f mils high", + COORD_TO_MIL(PCB->MaxWidth), COORD_TO_MIL(PCB->MaxHeight)); text_at (PCB->MaxWidth / 2, PCB->MaxHeight + 2000, 1, - "Board outline is the centerline of this %d mil" - " rectangle - 0,0 to %d,%d mils", - FAB_LINE_W / 100, PCB->MaxWidth / 100, PCB->MaxHeight / 100); + "Board outline is the centerline of this %f mil" + " rectangle - 0,0 to %f,%f mils", + COORD_TO_MIL(FAB_LINE_W), COORD_TO_MIL(PCB->MaxWidth), COORD_TO_MIL(PCB->MaxHeight)); } else { diff --git a/src/report.c b/src/report.c index 6adf368..5131ec6 100644 --- a/src/report.c +++ b/src/report.c @@ -54,7 +54,7 @@ static double units(double value) -{return (Settings.grid_units_mm ? (value * COOR_TO_MM) : (value / 100.0));} +{return (Settings.grid_units_mm ? COORD_TO_MM(value) : COORD_TO_MIL(value));} #define UNIT(value) units(value), (Settings.grid_units_mm ? "mm" : "mils") @@ -619,17 +619,17 @@ ReportAllNetLengths (int argc, char **argv, int x, int y) if (strcasecmp (units_name, "mm") == 0) { prec = 4; - scale = COOR_TO_MM; + scale = COORD_TO_MM(1); } else if (strcasecmp (units_name, "mil") == 0) { prec = 2; - scale = .01; + scale = COORD_TO_MIL(1); } else if (strcasecmp (units_name, "in") == 0) { prec = 5; - scale = 1./100000; + scale = COORD_TO_INCH(1); } else { diff --git a/src/vendor.c b/src/vendor.c index 5b7f5eb..8f02e63 100644 --- a/src/vendor.c +++ b/src/vendor.c @@ -327,29 +327,25 @@ ActionLoadVendorFrom (int argc, char **argv, int x, int y) sval = resource_value (res, "units"); if (sval == NULL) { - sf = 100; + sf = MIL_TO_COORD(1); } else if ((NSTRCMP (sval, "mil") == 0) || (NSTRCMP (sval, "mils") == 0)) { - sf = 100; + sf = MIL_TO_COORD(1); } else if ((NSTRCMP (sval, "inch") == 0) || (NSTRCMP (sval, "inches") == 0)) { - sf = 100000; + sf = INCH_TO_COORD(1); } else if (NSTRCMP (sval, "mm") == 0) { - /* - * divide by .0254 to convert mm to mils. Then multiply by 100 - * for PCB units - */ - sf = (100.0 / 0.0254); + sf = MM_TO_COORD(1); } else { Message ("\"%s\" is not a supported units. Defaulting to inch\n", sval); - sf = 100000; + sf = INCH_TO_COORD(1); }