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