r5519 - trunk/eda/fped
werner at docs.openmoko.org
werner at docs.openmoko.org
Sat Aug 22 10:58:26 CEST 2009
Author: werner
Date: 2009-08-22 10:58:26 +0200 (Sat, 22 Aug 2009)
New Revision: 5519
Modified:
trunk/eda/fped/README
trunk/eda/fped/gui_style.h
trunk/eda/fped/inst.h
trunk/eda/fped/postscript.c
Log:
- postscript.c: added DSC comments
- postscript.c: generate a page for each package
- gui_style.h: changed monospaced font to Liberation Mono, to alleviate "l" vs.
"1" problem
Modified: trunk/eda/fped/README
===================================================================
--- trunk/eda/fped/README 2009-08-22 08:58:00 UTC (rev 5518)
+++ trunk/eda/fped/README 2009-08-22 08:58:26 UTC (rev 5519)
@@ -21,6 +21,7 @@
- fig2dev
- ImageMagick
- Gtk+ 2.x development package (libgtk2.0-dev or similar)
+- Liberation Fonts (ttf-liberation or similar)
Check out the repository:
Modified: trunk/eda/fped/gui_style.h
===================================================================
--- trunk/eda/fped/gui_style.h 2009-08-22 08:58:00 UTC (rev 5518)
+++ trunk/eda/fped/gui_style.h 2009-08-22 08:58:26 UTC (rev 5519)
@@ -47,7 +47,8 @@
#define FRAME_EYE_R1 3
#define FRAME_EYE_R2 5
-#define ITEM_LIST_FONT "Courier Bold 8"
+#define ITEM_LIST_FONT "Liberation Mono 8"
+//#define ITEM_LIST_FONT "Courier Bold 8"
#define SELECT_R 6 /* pixels within which we select */
Modified: trunk/eda/fped/inst.h
===================================================================
--- trunk/eda/fped/inst.h 2009-08-22 08:58:00 UTC (rev 5518)
+++ trunk/eda/fped/inst.h 2009-08-22 08:58:26 UTC (rev 5519)
@@ -139,10 +139,12 @@
#define FOR_INST_PRIOS_DOWN(prio) \
for (prio = ip_n-1; prio != (enum inst_prio) -1; prio--)
+#define FOR_PKG_INSTS(pkg, prio, inst) \
+ for (inst = (pkg)->insts[prio]; inst; inst = inst->next)
+
#define FOR_ALL_INSTS(i, prio, inst) \
for (i = 0; i != 2; i++) \
- for (inst = (i ? active_pkg : pkgs)->insts[prio]; inst; \
- inst = inst->next)
+ FOR_PKG_INSTS(i ? active_pkg : pkgs, prio, inst)
void inst_select_outside(void *item, void (*deselect)(void *item));
Modified: trunk/eda/fped/postscript.c
===================================================================
--- trunk/eda/fped/postscript.c 2009-08-22 08:58:00 UTC (rev 5518)
+++ trunk/eda/fped/postscript.c 2009-08-22 08:58:26 UTC (rev 5519)
@@ -247,7 +247,6 @@
c = add_vec(a1, b1);
d = sub_vec(b1, a1);
-//s = stralloc_printf("%s%lgmm", meas->label ? meas->label : "", len);
fprintf(file, "gsave %d %d moveto\n", c.x/2, c.y/2);
fprintf(file, " /Helvetica-Bold findfont dup\n");
fprintf(file, " (%s) %d %d realsize\n", s,
@@ -329,16 +328,21 @@
{
enum inst_prio prio;
const struct inst *inst;
- int i;
fprintf(file, "gsave %f dup scale\n", zoom);
ps_cross(file, pkgs->insts[ip_frame]);
- FOR_INST_PRIOS_UP(prio)
- FOR_ALL_INSTS(i, prio, inst)
+ FOR_INST_PRIOS_UP(prio) {
+ FOR_PKG_INSTS(pkgs, prio, inst)
ps_background(file, prio, inst);
- FOR_INST_PRIOS_UP(prio)
- FOR_ALL_INSTS(i, prio, inst)
+ FOR_PKG_INSTS(pkg, prio, inst)
+ ps_background(file, prio, inst);
+ }
+ FOR_INST_PRIOS_UP(prio) {
+ FOR_PKG_INSTS(pkgs, prio, inst)
ps_foreground(file, prio, inst);
+ FOR_PKG_INSTS(pkg, prio, inst)
+ ps_foreground(file, prio, inst);
+ }
fprintf(file, "grestore\n");
}
@@ -368,14 +372,32 @@
}
-static void ps_package(FILE *file, const struct pkg *pkg)
+
+static void ps_page(FILE *file, int page)
{
+ fprintf(file, "%%%%Page: %d %d\n", page, page);
+
+ fprintf(file, "%%%%BeginPageSetup\n");
+ fprintf(file,
+"currentpagedevice /PageSize get\n"
+" aload pop\n"
+" 2 div exch 2 div exch\n"
+" translate\n"
+" 72 %d div 1000 div dup scale\n",
+ (int) MIL_UNITS);
+ fprintf(file, "%%%%EndPageSetup\n");
+}
+
+
+static void ps_package(FILE *file, const struct pkg *pkg, int page)
+{
struct bbox bbox;
unit_type x, y;
unit_type w, h;
double f;
unit_type c, d;
+ ps_page(file, page);
ps_header(file, pkg);
x = 2*PAGE_HALF_WIDTH-2*PS_DIVIDER_BORDER;
@@ -465,18 +487,18 @@
/* ----- File level -------------------------------------------------------- */
-static void prologue(FILE *file)
+static void prologue(FILE *file, int pages)
{
- fprintf(file, "%%!PS\n");
+ fprintf(file, "%%!PS-Adobe-3.0\n");
+ fprintf(file, "%%%%Pages: %d\n", pages);
+ fprintf(file, "%%%%EndComments\n");
- fprintf(file,
-"currentpagedevice /PageSize get\n"
-" aload pop\n"
-" 2 div exch 2 div exch\n"
-" translate\n"
-" 72 %d div 1000 div dup scale\n",
- (int) MIL_UNITS);
+ fprintf(file, "%%%%BeginDefaults\n");
+ fprintf(file, "%%%%PageResources: font Helvetica Helvetica-Bold\n");
+ fprintf(file, "%%%%EndDefaults\n");
+ fprintf(file, "%%%%BeginProlog\n");
+
fprintf(file,
"/dotpath {\n"
" gsave flattenpath pathbbox clip newpath\n"
@@ -581,6 +603,8 @@
"/realsize {\n"
" 254 div 72 mul 1000 div 0 matrix currentmatrix idtransform pop\n"
" } def\n");
+
+ fprintf(file, "%%%%EndProlog\n");
}
@@ -592,8 +616,17 @@
int postscript(FILE *file)
{
- prologue(file);
- ps_package(file, active_pkg);
+ struct pkg *pkg;
+ int pages;
+
+ for (pkg = pkgs; pkg; pkg = pkg->next)
+ if (pkg->name)
+ pages++;
+ prologue(file, pages);
+ pages = 0;
+ for (pkg = pkgs; pkg; pkg = pkg->next)
+ if (pkg->name)
+ ps_package(file, pkg, ++pages);
epilogue(file);
fflush(file);
More information about the commitlog
mailing list