r5327 - developers/werner/fped

werner at docs.openmoko.org werner at docs.openmoko.org
Tue Jul 28 18:10:51 CEST 2009


Author: werner
Date: 2009-07-28 18:10:50 +0200 (Tue, 28 Jul 2009)
New Revision: 5327

Modified:
   developers/werner/fped/TODO
   developers/werner/fped/gui_canvas.c
   developers/werner/fped/gui_inst.c
   developers/werner/fped/inst.c
   developers/werner/fped/qfn.fpd
Log:
- completed arc support
- zoom now centers around pointer position



Modified: developers/werner/fped/TODO
===================================================================
--- developers/werner/fped/TODO	2009-07-28 11:38:13 UTC (rev 5326)
+++ developers/werner/fped/TODO	2009-07-28 16:10:50 UTC (rev 5327)
@@ -6,7 +6,7 @@
 - stack elements (1): frames, pads, silk, vecs
 - stack elements (2): all unselected below all selected
 - stack elements (3): circle on top of vec
-- detect recursive evaluation
+- detect recursive evaluation (through variables)
 - eliminate duplicate instances
 - populate input area
 - bug: center moves in qfn.fpd
@@ -20,4 +20,4 @@
 - add default unit (combine with grid unit selection ?)
 - consider adding auto/mm/mil selection for each dimension
 - syntax seems a little cryptic. too many dots and at signs.
-- added measurements
+- add measurements

Modified: developers/werner/fped/gui_canvas.c
===================================================================
--- developers/werner/fped/gui_canvas.c	2009-07-28 11:38:13 UTC (rev 5326)
+++ developers/werner/fped/gui_canvas.c	2009-07-28 16:10:50 UTC (rev 5327)
@@ -150,6 +150,8 @@
 	if (ctx.scale < 2)
 		return;
 	ctx.scale /= 2;
+	ctx.center.x = (ctx.center.x+pos.x)/2;
+	ctx.center.y = (ctx.center.y+pos.y)/2;
 	update_zoom();
 	redraw();
 }
@@ -167,6 +169,8 @@
 	    bbox.min.y < ctx.widget->allocation.height)
 		return;
 	ctx.scale *= 2;
+	ctx.center.x = 2*ctx.center.x-pos.x;
+	ctx.center.y = 2*ctx.center.y-pos.y;
 	update_zoom();
 	redraw();
 }

Modified: developers/werner/fped/gui_inst.c
===================================================================
--- developers/werner/fped/gui_inst.c	2009-07-28 11:38:13 UTC (rev 5326)
+++ developers/werner/fped/gui_inst.c	2009-07-28 16:10:50 UTC (rev 5327)
@@ -32,7 +32,7 @@
 	pos.y = -pos.y;
 	pos.x += ctx->widget->allocation.width/2;
 	pos.y += ctx->widget->allocation.height/2;
-fprintf(stderr, "%d %d\n", (int) pos.x, (int) pos.y);
+//fprintf(stderr, "%d %d\n", (int) pos.x, (int) pos.y);
 	return pos;
 }
 

Modified: developers/werner/fped/inst.c
===================================================================
--- developers/werner/fped/inst.c	2009-07-28 11:38:13 UTC (rev 5326)
+++ developers/werner/fped/inst.c	2009-07-28 16:10:50 UTC (rev 5327)
@@ -189,17 +189,26 @@
 
 static struct inst_ops arc_ops = {
 	.debug	= arc_op_debug,
-	.draw	= gui_draw_pad,
+	.draw	= gui_draw_arc,
 };
 
 
 int inst_arc(struct coord center, struct coord start, struct coord end)
 {
 	struct inst *inst;
-	unit_type r;
+	double r, a1, a2;
 
 	inst = add_inst(&arc_ops, center);
-	r = hypot(start.x-center.x, start.y-center.y);
+	r =hypot(start.x-center.x, start.y-center.y);
+	a1 = atan2(start.y-center.y, start.x-center.x)/M_PI*180.0;
+	a2 = atan2(end.y-center.y, end.x-center.x)/M_PI*180.0;
+	if (a1 < 0)
+		a1 += 360.0;
+	if (a2 < 0)
+		a2 += 2*M_PI;
+	inst->u.arc.r = r;
+	inst->u.arc.a1 = a1;
+	inst->u.arc.a2 = a2;
 	inst->bbox.min.x = center.x-r;
 	inst->bbox.max.x = center.x+r;
 	inst->bbox.min.y = center.x-r;

Modified: developers/werner/fped/qfn.fpd
===================================================================
--- developers/werner/fped/qfn.fpd	2009-07-28 11:38:13 UTC (rev 5326)
+++ developers/werner/fped/qfn.fpd	2009-07-28 16:10:50 UTC (rev 5327)
@@ -25,3 +25,10 @@
 
 .vec @ P*(n-N/4/2), -Ay/2
 .frame pad_up .
+
+# ARC, just for testing
+
+c = .vec @ -1mm, 1mm
+r = .vec c 0mm, 0.5mm
+e = .vec c -0.5mm, 0mm
+.arc c r, e




More information about the commitlog mailing list