Attached are the diffs I made to dia. This is relative to the
source (CVS) tree I had checked out.
There are several distinct changes:
(1) grid display subsetting
(2) default default [sic] values
(3) font list bug fixes
The main trick is that #2 is a user-visible non-bug fix, which
everybody might not agree with my choices. The best thing would
be to parameterize or config-file that (or figure out how it is
already config-file'd and just fix my environment)
+- Donovan Kolbly +1 512 493-8351 /
/ Netpliance <[EMAIL PROTECTED]> /
/ Pager <[EMAIL PROTECTED]> /
pez:dia> cvs diff -c
cvs server: Diffing .
cvs server: Diffing app
Index: app/grid.c
===================================================================
RCS file: /cvs/gnome/dia/app/grid.c,v
retrieving revision 1.13
diff -c -r1.13 grid.c
*** app/grid.c 2000/02/26 11:54:52 1.13
--- app/grid.c 2000/04/19 15:53:48
***************
*** 33,43 ****
int width = ddisp->renderer->pixel_width;
int height = ddisp->renderer->pixel_height;
! if ( (ddisplay_transform_length(ddisp, grid->width_x) <= 1.0) ||
! (ddisplay_transform_length(ddisp, grid->width_y) <= 1.0) ) {
! return;
}
!
if (grid->visible) {
real pos;
int x,y;
--- 33,55 ----
int width = ddisp->renderer->pixel_width;
int height = ddisp->renderer->pixel_height;
! double grid_dx, grid_dy;
! int i, grid_skip;
! static int skip_list[10] = { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 };
!
! grid_dx = ddisplay_transform_length(ddisp, grid->width_x);
! grid_dy = ddisplay_transform_length(ddisp, grid->width_y);
!
! i = 0;
! while (i<10
! && (grid_dx * skip_list[i]) < 10.0
! && (grid_dy * skip_list[i]) < 10.0) {
! i++;
}
! if (i == 10)
! return; /* can't find a big enough skip size! */
! grid_skip = skip_list[i];
!
if (grid->visible) {
real pos;
int x,y;
***************
*** 52,76 ****
}
/* Vertical lines: */
! pos = ceil( update->left / grid->width_x )*grid->width_x;
while (pos <= update->right) {
ddisplay_transform_coords(ddisp, pos,0,&x,&y);
(renderer->interactive_ops->draw_pixel_line)(renderer,
x, 0,
x, height,
&prefs.grid.colour);
! pos += grid->width_x;
}
/* Horizontal lines: */
! pos = ceil( update->top / grid->width_y )*grid->width_y;
while (pos <= update->bottom) {
ddisplay_transform_coords(ddisp, 0,pos,&x,&y);
(renderer->interactive_ops->draw_pixel_line)(renderer,
0, y,
width, y,
&prefs.grid.colour);
! pos += grid->width_y;
}
}
--- 64,88 ----
}
/* Vertical lines: */
! pos = ceil( update->left / (grid->width_x * grid_skip) )*grid->width_x*grid_skip;
while (pos <= update->right) {
ddisplay_transform_coords(ddisp, pos,0,&x,&y);
(renderer->interactive_ops->draw_pixel_line)(renderer,
x, 0,
x, height,
&prefs.grid.colour);
! pos += grid->width_x * grid_skip;
}
/* Horizontal lines: */
! pos = ceil( update->top / (grid->width_y * grid_skip) )*grid->width_y*grid_skip;
while (pos <= update->bottom) {
ddisplay_transform_coords(ddisp, 0,pos,&x,&y);
(renderer->interactive_ops->draw_pixel_line)(renderer,
0, y,
width, y,
&prefs.grid.colour);
! pos += grid->width_y * grid_skip;
}
}
Index: app/linewidth_area.c
===================================================================
RCS file: /cvs/gnome/dia/app/linewidth_area.c,v
retrieving revision 1.4
diff -c -r1.4 linewidth_area.c
*** app/linewidth_area.c 2000/02/09 01:41:11 1.4
--- app/linewidth_area.c 2000/04/19 15:53:48
***************
*** 19,28 ****
#include "attributes.h"
#include "intl.h"
- #define BASE_WIDTH 0.05
#define PIXELS_BETWEEN_LINES 6
#define NUMLINES 5
#define X_OFFSET(i) (PIXELS_BETWEEN_LINES*(i)+((i)-1)*(i)/2)
#define AREA_WIDTH X_OFFSET(NUMLINES+1)
--- 19,29 ----
#include "attributes.h"
#include "intl.h"
#define PIXELS_BETWEEN_LINES 6
#define NUMLINES 5
+ static float width_suite[NUMLINES] = { 0, 0.01, 0.02, 0.03, 0.05, 0.1 };
+
#define X_OFFSET(i) (PIXELS_BETWEEN_LINES*(i)+((i)-1)*(i)/2)
#define AREA_WIDTH X_OFFSET(NUMLINES+1)
***************
*** 131,139 ****
target = linewidth_area_target (bevent->x, bevent->y);
if (target != 0) {
active_linewidth = target;
linewidth_area_draw(widget);
! attributes_set_default_linewidth(BASE_WIDTH*(target-1));
}
}
break;
--- 132,145 ----
target = linewidth_area_target (bevent->x, bevent->y);
if (target != 0) {
+ float lw;
active_linewidth = target;
linewidth_area_draw(widget);
! if ((target > 0) && (target <= NUMLINES))
! lw = width_suite[target-1];
! else
! lw = 0.05*target;
! attributes_set_default_linewidth(lw);
}
}
break;
***************
*** 167,173 ****
(GtkSignalFunc) linewidth_area_events,
NULL);
! attributes_set_default_linewidth(BASE_WIDTH*active_linewidth);
linewidth_area_widget = linewidth_area;
return linewidth_area;
--- 173,179 ----
(GtkSignalFunc) linewidth_area_events,
NULL);
! attributes_set_default_linewidth(width_suite[active_linewidth]);
linewidth_area_widget = linewidth_area;
return linewidth_area;
***************
*** 175,189 ****
static void
linewidth_dialog_ok(GtkWidget *widget, gpointer data) {
! float newvalue =
gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON(linewidth_button));
! if (fabs(newvalue/BASE_WIDTH-rint(newvalue/BASE_WIDTH)) > 0.0005 ||
! (newvalue/BASE_WIDTH > NUMLINES)) {
! active_linewidth = 0;
} else {
! active_linewidth = newvalue/BASE_WIDTH+1.0005;
}
linewidth_area_draw(GTK_WIDGET(linewidth_area_widget));
! attributes_set_default_linewidth(newvalue);
gtk_widget_hide(linewidth_dialog);
}
--- 181,204 ----
static void
linewidth_dialog_ok(GtkWidget *widget, gpointer data) {
! float lw = gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON(linewidth_button));
! int i, best = 0;
!
! /* see if it is "pretty close" to an existing line width,
! * and round it to that one if so
! */
! for (i=1; i<NUMLINES; i++) {
! if (fabs( lw - width_suite[i] ) < fabs( lw - width_suite[best] ))
! best = i;
! }
! if (fabs( lw - width_suite[best] ) < 0.0005) {
! active_linewidth = best+1;
! lw = width_suite[best];
} else {
! active_linewidth = 0;
}
linewidth_area_draw(GTK_WIDGET(linewidth_area_widget));
! attributes_set_default_linewidth(lw);
gtk_widget_hide(linewidth_dialog);
}
cvs server: Diffing app/pixmaps
cvs server: Diffing broken-files
cvs server: Diffing doc
cvs server: Diffing lib
Index: lib/arrows.c
===================================================================
RCS file: /cvs/gnome/dia/lib/arrows.c,v
retrieving revision 1.7
diff -c -r1.7 arrows.c
*** lib/arrows.c 2000/03/03 17:05:52 1.7
--- lib/arrows.c 2000/04/19 15:53:48
***************
*** 358,363 ****
--- 358,397 ----
}
+ static int
+ arrow_needs_setback( ArrowType type )
+ {
+ switch (type)
+ {
+ case ARROW_HALF_HEAD:
+ case ARROW_HOLLOW_TRIANGLE:
+ case ARROW_FILLED_TRIANGLE:
+ case ARROW_HOLLOW_DIAMOND:
+ case ARROW_FILLED_DIAMOND:
+ return 1;
+ default:
+ return 0;
+ }
+ }
+ /*
+ * set back the line for an arrow so that it doesn't
+ * clobber the tip of the arrow
+ */
+ int
+ setback_points( Arrow *arrow, Point *from, Point *to )
+ {
+ if (arrow_needs_setback( arrow->type ))
+ {
+ Point d = *to;
+ point_sub( &d, from );
+ point_normalize( &d );
+
+ point_scale( &d, arrow->length / 2.0 );
+ point_sub( to, &d );
+ return 1;
+ }
+ return 0;
+ }
Index: lib/arrows.h
===================================================================
RCS file: /cvs/gnome/dia/lib/arrows.h,v
retrieving revision 1.6
diff -c -r1.6 arrows.h
*** lib/arrows.h 2000/01/25 23:54:35 1.6
--- lib/arrows.h 2000/04/19 15:53:48
***************
*** 48,51 ****
--- 48,56 ----
real length, real width, real linewidth,
Color *fg_color, Color *bg_color);
+ /*
+ * adjust `to' so it doesn't overwrite the tip of `arrow'
+ */
+ extern int setback_points(Arrow *arrow, Point *from, Point *to);
+
#endif /* ARROWS_H */
Index: lib/attributes.c
===================================================================
RCS file: /cvs/gnome/dia/lib/attributes.c,v
retrieving revision 1.3
diff -c -r1.3 attributes.c
*** lib/attributes.c 1999/08/23 07:02:25 1.3
--- lib/attributes.c 2000/04/19 15:53:48
***************
*** 22,29 ****
static real attributes_default_linewidth = 0.1;
! static Arrow attributes_start_arrow = { ARROW_NONE, 0.8, 0.8 };
! static Arrow attributes_end_arrow = { ARROW_NONE, 0.8, 0.8 };
static LineStyle attributes_linestyle = LINESTYLE_SOLID;
static real attributes_dash_length = 1.0;
--- 22,29 ----
static real attributes_default_linewidth = 0.1;
! static Arrow attributes_start_arrow = { ARROW_NONE, 0.6, 0.2 };
! static Arrow attributes_end_arrow = { ARROW_NONE, 0.6, 0.2 };
static LineStyle attributes_linestyle = LINESTYLE_SOLID;
static real attributes_dash_length = 1.0;
Index: lib/text.c
===================================================================
RCS file: /cvs/gnome/dia/lib/text.c,v
retrieving revision 1.11
diff -c -r1.11 text.c
*** lib/text.c 1999/11/21 15:49:08 1.11
--- lib/text.c 2000/04/19 15:53:48
***************
*** 430,436 ****
p2.y = curs_y + text->height;
renderer->ops->set_linestyle(renderer, LINESTYLE_SOLID);
! renderer->ops->set_linewidth(renderer, 0.1);
renderer->ops->draw_line(renderer, &p1, &p2, &color_black);
}
}
--- 430,436 ----
p2.y = curs_y + text->height;
renderer->ops->set_linestyle(renderer, LINESTYLE_SOLID);
! renderer->ops->set_linewidth(renderer, 0.0);
renderer->ops->draw_line(renderer, &p1, &p2, &color_black);
}
}
Index: lib/widgets.c
===================================================================
RCS file: /cvs/gnome/dia/lib/widgets.c,v
retrieving revision 1.18
diff -c -r1.18 widgets.c
*** lib/widgets.c 2000/01/25 23:54:35 1.18
--- lib/widgets.c 2000/04/19 15:53:49
***************
*** 102,108 ****
g_hash_table_insert(font_nr_hashtable,
fontname,
! GINT_TO_POINTER(i));
list = g_list_next(list);
i++;
--- 102,108 ----
g_hash_table_insert(font_nr_hashtable,
fontname,
! GINT_TO_POINTER(i+1));
list = g_list_next(list);
i++;
***************
*** 132,138 ****
message_error("Trying to set invalid font!\n");
font_nr = 0;
} else {
! font_nr = GPOINTER_TO_INT(font_nr_ptr);
}
gtk_option_menu_set_history(GTK_OPTION_MENU(fs), font_nr);
--- 132,138 ----
message_error("Trying to set invalid font!\n");
font_nr = 0;
} else {
! font_nr = GPOINTER_TO_INT(font_nr_ptr)-1;
}
gtk_option_menu_set_history(GTK_OPTION_MENU(fs), font_nr);
Index: lib/widgets.h
===================================================================
RCS file: /cvs/gnome/dia/lib/widgets.h,v
retrieving revision 1.10
diff -c -r1.10 widgets.h
*** lib/widgets.h 1999/05/18 20:03:38 1.10
--- lib/widgets.h 2000/04/19 15:53:49
***************
*** 160,167 ****
#define IS_DIAARROWSELECTOR(obj) GTK_CHECK_TYPE (obj,
dia_arrow_selector_get_type ())
#define DEFAULT_ARROW ARROW_NONE
! #define DEFAULT_ARROW_LENGTH 0.8
! #define DEFAULT_ARROW_WIDTH 0.8
typedef struct _DiaArrowSelector DiaArrowSelector;
typedef struct _DiaArrowSelectorClass DiaArrowSelectorClass;
--- 160,167 ----
#define IS_DIAARROWSELECTOR(obj) GTK_CHECK_TYPE (obj,
dia_arrow_selector_get_type ())
#define DEFAULT_ARROW ARROW_NONE
! #define DEFAULT_ARROW_LENGTH 0.3
! #define DEFAULT_ARROW_WIDTH 0.2
typedef struct _DiaArrowSelector DiaArrowSelector;
typedef struct _DiaArrowSelectorClass DiaArrowSelectorClass;
cvs server: Diffing lib/pixmaps
cvs server: Diffing objects
cvs server: Diffing objects/ER
cvs server: Diffing objects/ER/pixmaps
cvs server: Diffing objects/FS
cvs server: Diffing objects/FS/pixmaps
cvs server: Diffing objects/GRAFCET
cvs server: Diffing objects/GRAFCET/pixmaps
cvs server: Diffing objects/SADT
cvs server: Diffing objects/SADT/pixmaps
cvs server: Diffing objects/UML
cvs server: Diffing objects/UML/pixmaps
cvs server: Diffing objects/chronogram
cvs server: Diffing objects/chronogram/pixmaps
cvs server: Diffing objects/custom
cvs server: Diffing objects/custom/Circuit
cvs server: Diffing objects/custom/pixmaps
cvs server: Diffing objects/flowchart
cvs server: Diffing objects/flowchart/pixmaps
cvs server: Diffing objects/network
cvs server: Diffing objects/network/pixmaps
cvs server: Diffing objects/standard
Index: objects/standard/box.c
===================================================================
RCS file: /cvs/gnome/dia/objects/standard/box.c,v
retrieving revision 1.22
diff -c -r1.22 box.c
*** objects/standard/box.c 2000/02/18 11:27:28 1.22
--- objects/standard/box.c 2000/04/19 15:53:49
***************
*** 504,510 ****
elem->corner = *startpoint;
elem->width = DEFAULT_WIDTH;
! elem->height = DEFAULT_WIDTH;
box->border_width = attributes_get_default_linewidth();
box->border_color = attributes_get_foreground();
--- 504,510 ----
elem->corner = *startpoint;
elem->width = DEFAULT_WIDTH;
! elem->height = DEFAULT_HEIGHT;
box->border_width = attributes_get_default_linewidth();
box->border_color = attributes_get_foreground();
Index: objects/standard/line.c
===================================================================
RCS file: /cvs/gnome/dia/objects/standard/line.c,v
retrieving revision 1.24
diff -c -r1.24 line.c
*** objects/standard/line.c 2000/02/17 02:30:40 1.24
--- objects/standard/line.c 2000/04/19 15:53:50
***************
*** 242,261 ****
static void
line_draw(Line *line, Renderer *renderer)
{
! Point *endpoints;
!
assert(line != NULL);
assert(renderer != NULL);
endpoints = &line->connection.endpoints[0];
renderer->ops->set_linewidth(renderer, line->line_width);
renderer->ops->set_linestyle(renderer, line->line_style);
renderer->ops->set_dashlength(renderer, line->dashlength);
renderer->ops->set_linecaps(renderer, LINECAPS_BUTT);
renderer->ops->draw_line(renderer,
! &endpoints[0], &endpoints[1],
&line->line_color);
if (line->start_arrow.type != ARROW_NONE) {
--- 242,267 ----
static void
line_draw(Line *line, Renderer *renderer)
{
! Point from, to, *endpoints;
! int setback_start, setback_end;
!
assert(line != NULL);
assert(renderer != NULL);
endpoints = &line->connection.endpoints[0];
+ from = endpoints[0];
+ to = endpoints[1];
renderer->ops->set_linewidth(renderer, line->line_width);
renderer->ops->set_linestyle(renderer, line->line_style);
renderer->ops->set_dashlength(renderer, line->dashlength);
renderer->ops->set_linecaps(renderer, LINECAPS_BUTT);
+ setback_points(&line->end_arrow, &endpoints[0], &to);
+ setback_points(&line->start_arrow, &endpoints[1], &from);
+
renderer->ops->draw_line(renderer,
! &from, &to,
&line->line_color);
if (line->start_arrow.type != ARROW_NONE) {
Index: objects/standard/polyline.c
===================================================================
RCS file: /cvs/gnome/dia/objects/standard/polyline.c,v
retrieving revision 1.17
diff -c -r1.17 polyline.c
*** objects/standard/polyline.c 2000/02/17 02:30:40 1.17
--- objects/standard/polyline.c 2000/04/19 15:53:50
***************
*** 204,213 ****
PolyConn *poly = &polyline->poly;
Point *points;
int n;
- points = &poly->points[0];
n = poly->numpoints;
renderer->ops->set_linewidth(renderer, polyline->line_width);
renderer->ops->set_linestyle(renderer, polyline->line_style);
renderer->ops->set_dashlength(renderer, polyline->dashlength);
--- 204,219 ----
PolyConn *poly = &polyline->poly;
Point *points;
int n;
+ int setback_start, setback_end;
n = poly->numpoints;
+ /* make a copy so we can setback if needed */
+ points = alloca(n * sizeof(Point));
+ memcpy(points, poly->points, sizeof(Point)*n);
+ setback_points(&polyline->start_arrow,&poly->points[1],&points[0]);
+ setback_points(&polyline->end_arrow,&poly->points[n-2],&points[n-1]);
+
renderer->ops->set_linewidth(renderer, polyline->line_width);
renderer->ops->set_linestyle(renderer, polyline->line_style);
renderer->ops->set_dashlength(renderer, polyline->dashlength);
***************
*** 218,231 ****
if (polyline->start_arrow.type != ARROW_NONE) {
arrow_draw(renderer, polyline->start_arrow.type,
! &points[0], &points[1],
polyline->start_arrow.length, polyline->start_arrow.width,
polyline->line_width,
&polyline->line_color, &color_white);
}
if (polyline->end_arrow.type != ARROW_NONE) {
arrow_draw(renderer, polyline->end_arrow.type,
! &points[n-1], &points[n-2],
polyline->end_arrow.length, polyline->end_arrow.width,
polyline->line_width,
&polyline->line_color, &color_white);
--- 224,237 ----
if (polyline->start_arrow.type != ARROW_NONE) {
arrow_draw(renderer, polyline->start_arrow.type,
! &poly->points[0], &poly->points[1],
polyline->start_arrow.length, polyline->start_arrow.width,
polyline->line_width,
&polyline->line_color, &color_white);
}
if (polyline->end_arrow.type != ARROW_NONE) {
arrow_draw(renderer, polyline->end_arrow.type,
! &poly->points[n-1], &poly->points[n-2],
polyline->end_arrow.length, polyline->end_arrow.width,
polyline->line_width,
&polyline->line_color, &color_white);
Index: objects/standard/textobj.c
===================================================================
RCS file: /cvs/gnome/dia/objects/standard/textobj.c,v
retrieving revision 1.17
diff -c -r1.17 textobj.c
*** objects/standard/textobj.c 2000/02/17 02:30:40 1.17
--- objects/standard/textobj.c 2000/04/19 15:53:50
***************
*** 62,68 ****
static TextobjDefaultsDialog *textobj_defaults_dialog;
static TextobjProperties default_properties =
! { 1.0, NULL, ALIGN_CENTER }; /* Can't initialize the font here */
static real textobj_distance_from(Textobj *textobj, Point *point);
static void textobj_select(Textobj *textobj, Point *clicked_point,
--- 62,68 ----
static TextobjDefaultsDialog *textobj_defaults_dialog;
static TextobjProperties default_properties =
! { 0.3, NULL, ALIGN_CENTER }; /* Can't initialize the font here */
static real textobj_distance_from(Textobj *textobj, Point *point);
static void textobj_select(Textobj *textobj, Point *clicked_point,
***************
*** 236,242 ****
init_defaults()
{
if (default_properties.font == NULL)
! default_properties.font = font_getfont("Courier");
}
static GtkWidget *
--- 236,242 ----
init_defaults()
{
if (default_properties.font == NULL)
! default_properties.font = font_getfont("Times-Roman");
}
static GtkWidget *
Index: objects/standard/zigzagline.c
===================================================================
RCS file: /cvs/gnome/dia/objects/standard/zigzagline.c,v
retrieving revision 1.25
diff -c -r1.25 zigzagline.c
*** objects/standard/zigzagline.c 2000/02/17 02:30:40 1.25
--- objects/standard/zigzagline.c 2000/04/19 15:53:50
***************
*** 198,207 ****
OrthConn *orth = &zigzagline->orth;
Point *points;
int n;
!
! points = &orth->points[0];
n = orth->numpoints;
!
renderer->ops->set_linewidth(renderer, zigzagline->line_width);
renderer->ops->set_linestyle(renderer, zigzagline->line_style);
renderer->ops->set_dashlength(renderer, zigzagline->dashlength);
--- 198,213 ----
OrthConn *orth = &zigzagline->orth;
Point *points;
int n;
! int setback_start, setback_end;
!
n = orth->numpoints;
! /* make a copy so we can setback if needed */
! points = alloca(n * sizeof(Point));
! memcpy(points, orth->points, sizeof(Point)*n);
!
! setback_points(&zigzagline->start_arrow,&orth->points[1],&points[0]);
! setback_points(&zigzagline->end_arrow,&orth->points[n-2],&points[n-1]);
!
renderer->ops->set_linewidth(renderer, zigzagline->line_width);
renderer->ops->set_linestyle(renderer, zigzagline->line_style);
renderer->ops->set_dashlength(renderer, zigzagline->dashlength);
***************
*** 212,225 ****
if (zigzagline->start_arrow.type != ARROW_NONE) {
arrow_draw(renderer, zigzagline->start_arrow.type,
! &points[0], &points[1],
zigzagline->start_arrow.length, zigzagline->start_arrow.width,
zigzagline->line_width,
&zigzagline->line_color, &color_white);
}
if (zigzagline->end_arrow.type != ARROW_NONE) {
arrow_draw(renderer, zigzagline->end_arrow.type,
! &points[n-1], &points[n-2],
zigzagline->end_arrow.length, zigzagline->end_arrow.width,
zigzagline->line_width,
&zigzagline->line_color, &color_white);
--- 218,231 ----
if (zigzagline->start_arrow.type != ARROW_NONE) {
arrow_draw(renderer, zigzagline->start_arrow.type,
! &orth->points[0], &orth->points[1],
zigzagline->start_arrow.length, zigzagline->start_arrow.width,
zigzagline->line_width,
&zigzagline->line_color, &color_white);
}
if (zigzagline->end_arrow.type != ARROW_NONE) {
arrow_draw(renderer, zigzagline->end_arrow.type,
! &orth->points[n-1], &orth->points[n-2],
zigzagline->end_arrow.length, zigzagline->end_arrow.width,
zigzagline->line_width,
&zigzagline->line_color, &color_white);
cvs server: Diffing objects/standard/pixmaps
cvs server: Diffing objects/sybase
cvs server: Diffing objects/sybase/pixmaps
cvs server: Diffing plug-ins
cvs server: Diffing plug-ins/cgm
cvs server: Diffing plug-ins/python
cvs server: Diffing po
cvs server: Diffing samples
cvs server: Diffing shapes
cvs server: Diffing shapes/Circuit
cvs server: Diffing shapes/Circuit_eu
cvs server: Diffing shapes/Contact
cvs server: Diffing shapes/flowchart
cvs server: Diffing shapes/network
cvs server: Diffing sheets
cvs server: Diffing sheets/ER
cvs server: Diffing sheets/GRAFCET
cvs server: Diffing sheets/UML