1
0
mirror of git://projects.qi-hardware.com/fped.git synced 2024-11-18 08:07:31 +02:00

In the GUI, pad names were always centered on the pad. In the case of

through-hole pads, this could easily make them disappear into the hole. We now
draw them outside the hole.

- gui_inst.c: when showing through-hole pads, gui_draw_pad_text now places the
  pad name into the largest area of the pad outside the hole
- test/frame_ref: removed redundant "with" in all titles



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5946 99fdad57-331a-0410-800a-d7fa5415bdb3
This commit is contained in:
werner 2010-04-27 10:57:09 +00:00
parent 82a12023cd
commit dc1e644da1
2 changed files with 67 additions and 13 deletions

View File

@ -234,20 +234,18 @@ unit_type gui_dist_pad(struct inst *self, struct coord pos, unit_type scale)
} }
static void gui_draw_pad_text(struct inst *self) static void pad_text_in_rect(struct inst *self,
struct coord min, struct coord max)
{ {
struct coord min = translate(self->base);
struct coord max = translate(self->u.pad.other);
GdkGC *gc; GdkGC *gc;
struct coord c; struct coord c;
unit_type h, w; unit_type h, w;
int rot; int rot;
w = self->bbox.max.x-self->bbox.min.x; w = max.x-min.x;
h = self->bbox.max.y-self->bbox.min.y; h = max.y-min.y;
rot = w/1.1 < h; rot = w/1.1 < h;
gc = gc_ptext[get_mode(self)]; gc = gc_ptext[get_mode(self)];
sort_coord(&min, &max);
c = add_vec(min, max); c = add_vec(min, max);
h = max.y-min.y; h = max.y-min.y;
w = max.x-min.x; w = max.x-min.x;
@ -257,6 +255,62 @@ static void gui_draw_pad_text(struct inst *self)
} }
static void maximize_box(struct coord *min_box, struct coord *max_box,
unit_type x_min, unit_type y_min, unit_type x_max, unit_type y_max)
{
unit_type d_box, d_new, d;
d_box = max_box->x-min_box->x;
d = max_box->y-min_box->y;
if (d < d_box)
d_box = d;
d_new = x_max-x_min;
d = y_max-y_min;
if (d < d_new)
d_new = d;
if (d_new < d_box)
return;
min_box->x = x_min;
min_box->y = y_min;
max_box->x = x_max;
max_box->y = y_max;
}
static void gui_draw_pad_text(struct inst *self)
{
struct coord pad_min = translate(self->base);
struct coord pad_max = translate(self->u.pad.other);
struct coord hole_min, hole_max;
struct coord box_min, box_max;
sort_coord(&pad_min, &pad_max);
if (!self->u.pad.hole) {
pad_text_in_rect(self, pad_min, pad_max);
return;
}
hole_min = translate(self->u.pad.hole->base);
hole_max = translate(self->u.pad.hole->u.hole.other);
sort_coord(&hole_min, &hole_max);
box_min.x = box_min.y = box_max.x = box_max.y;
maximize_box(&box_min, &box_max,
pad_min.x, pad_min.y, pad_max.x, hole_min.y); /* top */
maximize_box(&box_min, &box_max,
pad_min.x, hole_max.y, pad_max.x, pad_max.y); /* bottom */
maximize_box(&box_min, &box_max,
pad_min.x, pad_min.y, hole_min.x, pad_max.y); /* left */
maximize_box(&box_min, &box_max,
hole_max.x, pad_min.y, pad_max.x, pad_max.y); /* right */
pad_text_in_rect(self, box_min, box_max);
}
static GdkGC *pad_gc(const struct inst *inst, int *fill) static GdkGC *pad_gc(const struct inst *inst, int *fill)
{ {
*fill = TRUE; *fill = TRUE;

View File

@ -3,7 +3,7 @@
############################################################################### ###############################################################################
fped_dump "frame reference: with \"frame\" (origin)" <<EOF fped_dump "frame reference: \"frame\" (origin)" <<EOF
frame f {} frame f {}
frame f @ frame f @
EOF EOF
@ -20,7 +20,7 @@ EOF
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
fped_dump "frame reference: with \"%frame\" (current frame origin)" <<EOF fped_dump "frame reference: \"%frame\" (current frame origin)" <<EOF
frame f {} frame f {}
%frame f @ %frame f @
EOF EOF
@ -37,7 +37,7 @@ EOF
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
fped_dump "frame reference: with \"%frame\" (current frame vector)" <<EOF fped_dump "frame reference: \"%frame\" (current frame vector)" <<EOF
frame f {} frame f {}
v: vec @(0mm, 0mm) v: vec @(0mm, 0mm)
%frame f v %frame f v
@ -56,7 +56,7 @@ EOF
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
fped_dump "frame reference: with \"%frame\" (other frame origin)" <<EOF fped_dump "frame reference: \"%frame\" (other frame origin)" <<EOF
frame f {} frame f {}
frame g {} frame g {}
%frame f g.@ %frame f g.@
@ -77,7 +77,7 @@ EOF
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
fped_dump "frame reference: with \"%frame\" (other frame base)" <<EOF fped_dump "frame reference: \"%frame\" (other frame base)" <<EOF
frame f {} frame f {}
frame g { frame g {
v: vec @(0mm, 0mm) v: vec @(0mm, 0mm)
@ -101,7 +101,7 @@ EOF
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
fped_fail "frame reference: with \"%frame\" (cycle)" <<EOF fped_fail "frame reference: \"%frame\" (cycle)" <<EOF
frame f { frame f {
} }
@ -117,7 +117,7 @@ EOF
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
fped_dump "frame reference: with \"%frame\" (out-of-order)" <<EOF fped_dump "frame reference: \"%frame\" (out-of-order)" <<EOF
frame f { frame f {
} }