r5368 - developers/werner/fped

werner at docs.openmoko.org werner at docs.openmoko.org
Sun Aug 2 21:42:24 CEST 2009


Author: werner
Date: 2009-08-02 21:42:23 +0200 (Sun, 02 Aug 2009)
New Revision: 5368

Modified:
   developers/werner/fped/coord.c
   developers/werner/fped/fpd.y
   developers/werner/fped/inst.c
   developers/werner/fped/obj.c
   developers/werner/fped/obj.h
Log:
- widths can now be edited
- when selecting a measurement, the offset is now shown in the name field
- fixed integer overflow in dist_line_xy



Modified: developers/werner/fped/coord.c
===================================================================
--- developers/werner/fped/coord.c	2009-08-02 16:35:09 UTC (rev 5367)
+++ developers/werner/fped/coord.c	2009-08-02 19:42:23 UTC (rev 5368)
@@ -108,7 +108,7 @@
 		bx = px-bx;
 		by = py-by;
 		a = hypot(ax, ay);
-		f = (ax*bx+ay*by)/a/a;
+		f = ((double) ax*bx+(double) ay*by)/a/a;
 		if (f >= 0 && f <= 1) {
 			bx -= f*ax;
 			by -= f*ay;

Modified: developers/werner/fped/fpd.y
===================================================================
--- developers/werner/fped/fpd.y	2009-08-02 16:35:09 UTC (rev 5367)
+++ developers/werner/fped/fpd.y	2009-08-02 19:42:23 UTC (rev 5368)
@@ -388,14 +388,14 @@
 			$$ = new_obj(ot_rect);
 			$$->base = $2;
 			$$->u.rect.other = $3;
-			$$->width = $4;
+			$$->u.rect.width = $4;
 		}
 	| TOK_LINE base base opt_expr
 		{
 			$$ = new_obj(ot_line);
 			$$->base = $2;
 			$$->u.line.other = $3;
-			$$->width = $4;
+			$$->u.line.width = $4;
 		}
 	| TOK_CIRC base base opt_expr
 		{
@@ -403,7 +403,7 @@
 			$$->base = $2;
 			$$->u.arc.start = $3;
 			$$->u.arc.end = $3;
-			$$->width = $4;
+			$$->u.arc.width = $4;
 		}
 	| TOK_ARC base base base opt_expr
 		{
@@ -411,7 +411,7 @@
 			$$->base = $2;
 			$$->u.arc.start = $3;
 			$$->u.arc.end = $4;
-			$$->width = $5;
+			$$->u.arc.width = $5;
 		}
 	| TOK_MEAS base base expr
 		{

Modified: developers/werner/fped/inst.c
===================================================================
--- developers/werner/fped/inst.c	2009-08-02 16:35:09 UTC (rev 5367)
+++ developers/werner/fped/inst.c	2009-08-02 19:42:23 UTC (rev 5368)
@@ -182,7 +182,7 @@
 }
 
 
-static void rect_status(struct coord a, struct coord b)
+static void rect_status(struct coord a, struct coord b, unit_type width)
 {
 	struct coord d = sub_vec(b, a);
 	double angle;
@@ -197,6 +197,8 @@
 		status_set_angle("a = %3.1f deg", angle);
 	}
 	status_set_r("r = %5.2f mm", hypot(units_to_mm(d.x), units_to_mm(d.y)));
+	if (width != -1)
+		status_set_name("width = %5.2f mm", units_to_mm(width));
 }
 
 
@@ -268,7 +270,7 @@
 static void vec_op_select(struct inst *self)
 {
 	status_set_name(self->vec->name ? self->vec->name : "");
-	rect_status(self->base, self->u.rect.end);
+	rect_status(self->base, self->u.rect.end, -1);
 	edit_unique_null(&self->vec->name, validate_vec_name, self->vec);
 }
 
@@ -307,7 +309,8 @@
 
 static void line_op_select(struct inst *self)
 {
-	rect_status(self->bbox.min, self->bbox.max);
+	rect_status(self->bbox.min, self->bbox.max, self->u.rect.width);
+	edit_expr(&self->obj->u.line.width);
 }
 
 
@@ -346,7 +349,8 @@
 
 static void rect_op_select(struct inst *self)
 {
-	rect_status(self->bbox.min, self->bbox.max);
+	rect_status(self->bbox.min, self->bbox.max, self->u.rect.width);
+	edit_expr(&self->obj->u.rect.width);
 }
 
 
@@ -398,7 +402,7 @@
 static void pad_op_select(struct inst *self)
 {
 	status_set_name(self->u.name);
-	rect_status(self->bbox.min, self->bbox.max);
+	rect_status(self->bbox.min, self->bbox.max, -1);
 	edit_name(&self->obj->u.pad.name, validate_pad_name, NULL);
 }
 
@@ -442,6 +446,8 @@
 	    self->u.arc.a1 == self->u.arc.a2 ? 360 :
 	    self->u.arc.a2-self->u.arc.a1);
 	status_set_r("r = %5.2f mm", units_to_mm(self->u.arc.r));
+	status_set_name("width = %5.2f mm", units_to_mm(self->u.arc.width));
+	edit_expr(&self->obj->u.arc.width);
 }
 
 
@@ -495,7 +501,8 @@
 
 static void meas_op_select(struct inst *self)
 {
-	rect_status(self->bbox.min, self->bbox.max);
+	rect_status(self->bbox.min, self->bbox.max, -1);
+	status_set_name("offset = %5.2f mm", units_to_mm(self->u.meas.offset));
 	edit_expr(&self->obj->u.meas.offset);
 }
 

Modified: developers/werner/fped/obj.c
===================================================================
--- developers/werner/fped/obj.c	2009-08-02 16:35:09 UTC (rev 5367)
+++ developers/werner/fped/obj.c	2009-08-02 19:42:23 UTC (rev 5368)
@@ -96,7 +96,7 @@
 				return 0;
 			break;
 		case ot_line:
-			width = eval_unit_default(obj->width, frame,
+			width = eval_unit_default(obj->u.line.width, frame,
 			    DEFAULT_SILK_WIDTH);
 			if (is_undef(width))
 				return 0;
@@ -106,7 +106,7 @@
 				return 0;
 			break;
 		case ot_rect:
-			width = eval_unit_default(obj->width, frame,
+			width = eval_unit_default(obj->u.rect.width, frame,
 			    DEFAULT_SILK_WIDTH);
 			if (is_undef(width))
 				return 0;
@@ -127,7 +127,7 @@
 				return 0;
 			break;
 		case ot_arc:
-			width = eval_unit_default(obj->width, frame,
+			width = eval_unit_default(obj->u.arc.width, frame,
 			    DEFAULT_SILK_WIDTH);
 			if (is_undef(width))
 				return 0;

Modified: developers/werner/fped/obj.h
===================================================================
--- developers/werner/fped/obj.h	2009-08-02 16:35:09 UTC (rev 5367)
+++ developers/werner/fped/obj.h	2009-08-02 19:42:23 UTC (rev 5368)
@@ -117,6 +117,7 @@
 
 struct rect {
 	struct vec *other; /* NULL if frame origin */
+	struct expr *width;
 };
 
 struct pad {
@@ -127,6 +128,7 @@
 struct arc {
 	struct vec *start; /* NULL if frame origin */
 	struct vec *end; /* NULL if this is a circle */
+	struct expr *width;
 };
 
 struct meas {
@@ -145,7 +147,6 @@
 		struct meas meas;
 	} u;
 	struct vec *base;
-	struct expr *width; /* may be NULL. not used in "meas" */
 	struct obj *next;
 };
 




More information about the commitlog mailing list