Mail Archives: geda-user/2013/04/18/10:12:06
The 0.1mil is needed for proper imperial drill file generation.
Apart form this, the list of %m unit modifiers is now properly
documented and a redundant test was removed.
---
src/pcb-printf.c | 7 +++++--
src/pcb-printf.h | 16 ++++++++++++----
2 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/src/pcb-printf.c b/src/pcb-printf.c
index a434834..e53df64 100644
--- a/src/pcb-printf.c
+++ b/src/pcb-printf.c
@@ -84,6 +84,9 @@ static Unit Units[] = {
{ 0, "mil", NULL, 'l', 1, IMPERIAL, ALLOW_MIL, 2,
0.1, 1.0, 10, 100, 1000,
{ "" } },
+ { 0, "dmil", NULL, 't', 10, IMPERIAL, ALLOW_DMIL, 0,
+ 1, 10, 100, 1000, 10000,
+ { "" } },
{ 0, "cmil", NULL, 'c', 100, IMPERIAL, ALLOW_CMIL, 0,
1, 10, 100, 1000, 10000,
{ "pcb" } }
@@ -358,11 +361,11 @@ static gchar *CoordsToString(Coord coord[], int n_coords, const char *printf_spe
for (i = 0; i < n_coords; ++i)
value[i] = value[i] * Units[n].scale_factor;
- /* Create sprintf specifier, using default_prec no preciscion is given */
+ /* Create sprintf specifier, using default_prec no precision is given */
i = 0;
while (printf_spec[i] == '%' || isdigit(printf_spec[i]) ||
printf_spec[i] == '-' || printf_spec[i] == '+' ||
- printf_spec[i] == '#' || printf_spec[i] == '0')
+ printf_spec[i] == '#')
++i;
if (printf_spec[i] == '.')
printf_buff = g_strdup_printf (", %sf", printf_spec);
diff --git a/src/pcb-printf.h b/src/pcb-printf.h
index 3d4e0d2..6d044d7 100644
--- a/src/pcb-printf.h
+++ b/src/pcb-printf.h
@@ -34,9 +34,16 @@
* it.
*
* The new specifiers are:
+ * %mk output a measure in km
+ * %mf output a measure in meters
+ * %me output a measure in cm
* %mm output a measure in mm
+ * %mu output a measure in µm
+ * %mn output a measure in nm
* %mM output a measure in scaled (mm/um) metric
* %ml output a measure in mil
+ * %mc output a measure in cmil
+ * %mt output a measure in 1/10 of mils (for Excellon drill files)
* %mL output a measure in scaled (mil/in) imperial
* %ms output a measure in most natural mm/mil units
* %mS output a measure in most natural scaled units
@@ -79,12 +86,13 @@ enum e_allow {
ALLOW_KM = 32,
ALLOW_CMIL = 1024,
- ALLOW_MIL = 2048,
- ALLOW_IN = 4096,
+ ALLOW_DMIL = 2048,
+ ALLOW_MIL = 4096,
+ ALLOW_IN = 8192,
ALLOW_METRIC = ALLOW_NM | ALLOW_UM | ALLOW_MM |
ALLOW_CM | ALLOW_M | ALLOW_KM,
- ALLOW_IMPERIAL = ALLOW_CMIL | ALLOW_MIL | ALLOW_IN,
+ ALLOW_IMPERIAL = ALLOW_CMIL | ALLOW_DMIL | ALLOW_MIL | ALLOW_IN,
/* This is all units allowed in parse_l.l */
#if 0
ALLOW_READABLE = ALLOW_NM | ALLOW_UM | ALLOW_MM |
@@ -94,7 +102,7 @@ enum e_allow {
ALLOW_READABLE = ALLOW_MIL | ALLOW_MM,
#endif
- ALLOW_ALL = ~0
+ ALLOW_ALL = ~ALLOW_DMIL
};
enum e_family { METRIC, IMPERIAL };
--
1.7.10.4
- Raw text -