[dia] general: bunch of warning fixes
- From: Zander <zbrown src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dia] general: bunch of warning fixes
- Date: Fri, 27 Mar 2020 19:51:03 +0000 (UTC)
commit e3b64068127d44bd097536187a635396423c995b
Author: Zander Brown <zbrown gnome org>
Date: Fri Mar 27 18:56:59 2020 +0000
general: bunch of warning fixes
app/app_procs.c | 18 +-
app/defaults.c | 31 +-
app/dia-colour-area.c | 85 ++--
app/dia-line-width-area.c | 56 ++-
app/diagram.c | 35 +-
app/diapagelayout.c | 17 +-
app/disp_callbacks.c | 715 ++++++++++++++++--------------
app/interface.c | 39 +-
app/layer-editor/layer_dialog.c | 68 +--
app/load_save.c | 9 +-
app/modify_tool.c | 63 +--
app/object_ops.c | 176 ++++----
app/properties-dialog.c | 8 +-
app/tool.c | 39 +-
lib/arrows.c | 55 ++-
lib/autoroute.c | 38 +-
lib/boundingbox.c | 57 +--
lib/dia_image.c | 2 +-
lib/dia_svg.c | 556 ++++++++++++-----------
lib/dia_xml.c | 34 +-
lib/dialinechooser.c | 62 +--
lib/diapathrenderer.c | 10 +-
lib/font.c | 46 +-
lib/geometry.c | 124 +++---
lib/group.c | 115 +++--
lib/orth_conn.c | 450 +++++++++++--------
lib/path-math.c | 95 ++--
lib/poly_conn.c | 123 +++--
lib/polyshape.c | 56 ++-
lib/prop_sdarray_widget.c | 38 +-
lib/propdialogs.c | 8 +-
lib/renderer/diacairo-interactive.c | 5 +-
lib/renderer/diacairo.c | 18 +-
lib/sheet.c | 6 +-
lib/text.c | 137 +++---
lib/textline.c | 29 +-
objects/AADL/aadlbox.c | 90 ++--
objects/Database/reference.c | 26 +-
objects/FS/flow-ortho.c | 34 +-
objects/FS/flow.c | 24 +-
objects/GRAFCET/action_text_draw.c | 35 +-
objects/Istar/link.c | 2 +
objects/KAOS/metaandorrel.c | 34 +-
objects/KAOS/metabinrel.c | 41 +-
objects/Misc/tree.c | 48 +-
objects/SADT/arrow.c | 43 +-
objects/UML/classicon.c | 2 +
objects/UML/dependency.c | 40 +-
objects/UML/generalization.c | 22 +-
objects/UML/lifeline.c | 13 +-
objects/UML/realizes.c | 34 +-
objects/UML/state.c | 56 ++-
objects/UML/umloperation.c | 42 +-
objects/UML/umlparameter.c | 4 +
objects/custom/shape_info.c | 352 ++++++++-------
objects/flowchart/diamond.c | 164 ++++---
objects/flowchart/parallelogram.c | 158 ++++---
objects/network/bus.c | 50 ++-
objects/standard/box.c | 81 ++--
objects/standard/ellipse.c | 135 +++---
objects/standard/line.c | 27 +-
plug-ins/cgm/cgm.c | 167 +++----
plug-ins/drs/dia-render-script-renderer.c | 279 +++++++-----
plug-ins/dxf/dxf-export.c | 37 +-
plug-ins/hpgl/hpgl.c | 45 +-
plug-ins/metapost/render_metapost.c | 423 +++++++++---------
plug-ins/pgf/render_pgf.c | 489 +++++++++++---------
plug-ins/postscript/diapsrenderer.c | 293 ++++++------
plug-ins/python/pydia-render.c | 14 +-
plug-ins/svg/render_svg.c | 36 +-
plug-ins/svg/svg-import.c | 53 ++-
plug-ins/vdx/vdx-export.c | 102 +++--
72 files changed, 3880 insertions(+), 3038 deletions(-)
---
diff --git a/app/app_procs.c b/app/app_procs.c
index 8842b88c..0e55c8b2 100644
--- a/app/app_procs.c
+++ b/app/app_procs.c
@@ -896,15 +896,15 @@ app_exit (void)
GtkWidget *dialog;
int result;
exit_dialog_item_array_t *items = NULL;
- GList * list;
+ GList * diagrams;
Diagram * diagram;
dialog = exit_dialog_make (GTK_WINDOW (interface_get_toolbox_shell ()),
_("Exiting Dia"));
- list = dia_open_diagrams ();
- while (list) {
- diagram = list->data;
+ diagrams = dia_open_diagrams ();
+ while (diagrams) {
+ diagram = diagrams->data;
if (diagram_is_modified (diagram)) {
const gchar * name = diagram_get_name (diagram);
@@ -912,7 +912,7 @@ app_exit (void)
exit_dialog_add_item (dialog, name, path, diagram);
}
- list = g_list_next (list);
+ diagrams = g_list_next (diagrams);
}
result = exit_dialog_run (dialog, &items);
@@ -943,14 +943,14 @@ app_exit (void)
dia_context_release (ctx);
exit_dialog_free_items (items);
} else if (result == EXIT_DIALOG_EXIT_NO_SAVE) {
- list = dia_open_diagrams ();
- while (list) {
- diagram = list->data;
+ diagrams = dia_open_diagrams ();
+ while (diagrams) {
+ diagram = diagrams->data;
/* slight hack: don't ask again */
diagram_set_modified (diagram, FALSE);
undo_clear (diagram->undo);
- list = g_list_next (list);
+ diagrams = g_list_next (diagrams);
}
}
} else {
diff --git a/app/defaults.c b/app/defaults.c
index c7d6fc94..8a5e1a58 100644
--- a/app/defaults.c
+++ b/app/defaults.c
@@ -36,16 +36,18 @@ static DiaObject *current_object = NULL;
static GtkWidget *no_defaults_dialog = NULL;
-static gint defaults_respond(GtkWidget *widget, gint response_id, gpointer data);
+static gint defaults_respond (GtkWidget *widget, gint response_id, gpointer data);
-static void create_dialog()
+
+static void
+create_dialog (void)
{
- dialog = gtk_dialog_new_with_buttons(_("Object defaults"),
- NULL, 0,
- _("_Close"), GTK_RESPONSE_CLOSE,
- _("_Apply"), GTK_RESPONSE_APPLY,
- _("_OK"), GTK_RESPONSE_OK,
- NULL);
+ dialog = gtk_dialog_new_with_buttons (_("Object defaults"),
+ NULL, 0,
+ _("_Close"), GTK_RESPONSE_CLOSE,
+ _("_Apply"), GTK_RESPONSE_APPLY,
+ _("_OK"), GTK_RESPONSE_OK,
+ NULL);
gtk_dialog_set_default_response (GTK_DIALOG(dialog), GTK_RESPONSE_OK);
@@ -53,17 +55,18 @@ static void create_dialog()
gtk_window_set_role (GTK_WINDOW (dialog), "defaults_window");
- g_signal_connect(G_OBJECT (dialog), "response",
- G_CALLBACK(defaults_respond), NULL);
- g_signal_connect(G_OBJECT(dialog), "delete_event",
- G_CALLBACK(gtk_widget_hide), NULL);
+ g_signal_connect (G_OBJECT (dialog), "response",
+ G_CALLBACK (defaults_respond), NULL);
+ g_signal_connect (G_OBJECT (dialog), "delete_event",
+ G_CALLBACK (gtk_widget_hide), NULL);
- no_defaults_dialog = gtk_label_new(_("This object has no defaults."));
+ no_defaults_dialog = gtk_label_new (_("This object has no defaults."));
gtk_widget_show (no_defaults_dialog);
- g_object_ref_sink(G_OBJECT(no_defaults_dialog));
+ g_object_ref_sink (G_OBJECT (no_defaults_dialog));
}
+
static gint
defaults_dialog_destroyed(GtkWidget *widget, gpointer data)
{
diff --git a/app/dia-colour-area.c b/app/dia-colour-area.c
index 1f6683ff..e7d2b439 100644
--- a/app/dia-colour-area.c
+++ b/app/dia-colour-area.c
@@ -205,62 +205,63 @@ dia_colour_area_edit (DiaColourArea *self)
gtk_widget_show (self->color_select);
}
- selection = gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG
(self->color_select));
+ selection =
+ gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG (self->color_select));
- gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (selection), &gdk_color);
+ gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (selection),
+ &gdk_color);
gtk_color_selection_set_current_alpha (GTK_COLOR_SELECTION (selection),
(guint) (color.alpha * 65535.0));
//gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (self->color_select), &color);
}
-static gint
-dia_colour_area_event (GtkWidget *widget,
- GdkEvent *event)
+
+static gboolean
+dia_colour_area_button_press_event (GtkWidget *widget,
+ GdkEventButton *event)
{
DiaColourArea *self = DIA_COLOUR_AREA (widget);
- GdkEventButton *bevent;
int target;
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- bevent = (GdkEventButton *) event;
-
- if (bevent->button == 1) {
- switch ((target = dia_colour_area_target (self, bevent->x, bevent->y))) {
- case FORE_AREA:
- case BACK_AREA:
- if (target == self->active_color) {
- dia_colour_area_edit (self);
- } else {
- self->active_color = target;
- /* Trigger redraw */
- gtk_widget_queue_draw (GTK_WIDGET (self));
- }
- break;
- case SWAP_AREA:
- attributes_swap_fgbg();
- /* Trigger redraw */
- gtk_widget_queue_draw (GTK_WIDGET (self));
- break;
- case DEF_AREA:
- attributes_default_fgbg();
- /* Trigger redraw */
- gtk_widget_queue_draw (GTK_WIDGET (self));
- break;
- }
- }
- break;
+ if (event->type != GDK_BUTTON_PRESS) {
+ return FALSE;
+ }
- default:
- break;
+ if (event->button == 1) {
+ switch ((target = dia_colour_area_target (self, event->x, event->y))) {
+ case FORE_AREA:
+ case BACK_AREA:
+ if (target == self->active_color) {
+ dia_colour_area_edit (self);
+ } else {
+ self->active_color = target;
+ /* Trigger redraw */
+ gtk_widget_queue_draw (GTK_WIDGET (self));
+ }
+ break;
+ case SWAP_AREA:
+ attributes_swap_fgbg ();
+ /* Trigger redraw */
+ gtk_widget_queue_draw (GTK_WIDGET (self));
+ break;
+ case DEF_AREA:
+ attributes_default_fgbg ();
+ /* Trigger redraw */
+ gtk_widget_queue_draw (GTK_WIDGET (self));
+ break;
+ default:
+ g_return_val_if_reached (FALSE);
+ }
}
return FALSE;
}
+
#include "pixmaps/swap.xpm"
#include "pixmaps/default.xpm"
+
static void
dia_colour_area_class_init (DiaColourAreaClass *class)
{
@@ -268,12 +269,15 @@ dia_colour_area_class_init (DiaColourAreaClass *class)
widget_class = GTK_WIDGET_CLASS (class);
widget_class->expose_event = dia_colour_area_draw;
- widget_class->event = dia_colour_area_event;
+ widget_class->button_press_event = dia_colour_area_button_press_event;
- attributes_set_foreground (persistence_register_color ("fg_color", &color_black));
- attributes_set_background (persistence_register_color ("bg_color", &color_white));
+ attributes_set_foreground (persistence_register_color ("fg_color",
+ &color_black));
+ attributes_set_background (persistence_register_color ("bg_color",
+ &color_white));
}
+
static void
dia_colour_area_init (DiaColourArea *self)
{
@@ -288,6 +292,7 @@ dia_colour_area_init (DiaColourArea *self)
gtk_widget_set_events (GTK_WIDGET (self), GDK_BUTTON_PRESS_MASK);
}
+
GtkWidget *
dia_colour_area_new (int width,
int height)
diff --git a/app/dia-line-width-area.c b/app/dia-line-width-area.c
index 27e1ef87..1f8b154e 100644
--- a/app/dia-line-width-area.c
+++ b/app/dia-line-width-area.c
@@ -184,46 +184,39 @@ dia_line_width_area_draw (GtkWidget *self, /*cairo_t *ctx*/
return FALSE;
}
-static gint
-dia_line_width_area_event (GtkWidget *self,
- GdkEvent *event)
+
+static gboolean
+dia_line_width_area_button_press_event (GtkWidget *self,
+ GdkEventButton *event)
{
- GdkEventButton *bevent;
int target;
DiaLineWidthArea *priv = DIA_LINE_WIDTH_AREA (self);
- switch (event->type)
- {
- case GDK_BUTTON_PRESS:
- bevent = (GdkEventButton *) event;
- if (bevent->button == 1) {
- target = linewidth_area_target (bevent->x, bevent->y);
- if (target != 0) {
- priv->active = target;
- /* Trigger redraw */
- gtk_widget_queue_draw (self);
- attributes_set_default_linewidth(BASE_WIDTH*(target-1));
- }
- }
- break;
-
- case GDK_2BUTTON_PRESS:
- if (priv->dialog == NULL)
+ if (event->type == GDK_2BUTTON_PRESS) {
+ if (priv->dialog == NULL) {
dia_line_width_area_create_dialog (priv, GTK_WINDOW (gtk_widget_get_toplevel (self)));
- else
- gtk_widget_grab_focus (priv->button);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (priv->button), attributes_get_default_linewidth ());
-
- gtk_widget_show (priv->dialog);
- break;
-
- default:
- break;
+ } else {
+ gtk_widget_grab_focus (priv->button);
}
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (priv->button), attributes_get_default_linewidth ());
+
+ gtk_widget_show (priv->dialog);
+ } else if (event->type == GDK_BUTTON_PRESS) {
+ if (event->button == 1) {
+ target = linewidth_area_target (event->x, event->y);
+ if (target != 0) {
+ priv->active = target;
+ /* Trigger redraw */
+ gtk_widget_queue_draw (self);
+ attributes_set_default_linewidth (BASE_WIDTH * (target-1));
+ }
+ }
+ }
return FALSE;
}
+
static void
dia_line_width_area_class_init (DiaLineWidthAreaClass *class)
{
@@ -231,11 +224,12 @@ dia_line_width_area_class_init (DiaLineWidthAreaClass *class)
widget_class = GTK_WIDGET_CLASS (class);
widget_class->expose_event = dia_line_width_area_draw;
- widget_class->event = dia_line_width_area_event;
+ widget_class->button_press_event = dia_line_width_area_button_press_event;
attributes_set_default_linewidth (persistence_register_real ("linewidth", 0.1));
}
+
static void
dia_line_width_area_init (DiaLineWidthArea *self)
{
diff --git a/app/diagram.c b/app/diagram.c
index b870beaa..a8d75af1 100644
--- a/app/diagram.c
+++ b/app/diagram.c
@@ -850,7 +850,7 @@ diagram_select(Diagram *diagram, DiaObject *obj)
}
void
-diagram_select_list(Diagram *dia, GList *list)
+diagram_select_list (Diagram *dia, GList *list)
{
g_return_if_fail (dia && list);
/* otherwise we would signal objects step by step */
@@ -858,25 +858,27 @@ diagram_select_list(Diagram *dia, GList *list)
while (list != NULL) {
DiaObject *obj = (DiaObject *)list->data;
- diagram_select(dia, obj);
+ diagram_select (dia, obj);
- list = g_list_next(list);
+ list = g_list_next (list);
}
- if (get_active_focus((DiagramData*) dia) == NULL) {
- textedit_activate_first(ddisplay_active());
+ if (get_active_focus ((DiagramData*) dia) == NULL) {
+ textedit_activate_first (ddisplay_active ());
}
g_signal_handlers_unblock_by_func (dia, DIA_DIAGRAM_DATA_GET_CLASS (dia)->selection_changed, NULL);
g_signal_emit_by_name (dia, "selection_changed", g_list_length (dia->data->selected));
}
+
int
-diagram_is_selected(Diagram *diagram, DiaObject *obj)
+diagram_is_selected (Diagram *diagram, DiaObject *obj)
{
- return g_list_find(diagram->data->selected, obj) != NULL;
+ return g_list_find (diagram->data->selected, obj) != NULL;
}
+
void
-diagram_redraw_all()
+diagram_redraw_all (void)
{
GList *list;
Diagram *dia;
@@ -886,16 +888,18 @@ diagram_redraw_all()
while (list != NULL) {
dia = (Diagram *) list->data;
- diagram_add_update_all(dia);
- diagram_flush(dia);
+ diagram_add_update_all (dia);
+ diagram_flush (dia);
- list = g_list_next(list);
+ list = g_list_next (list);
}
+
return;
}
+
void
-diagram_add_update_all(Diagram *dia)
+diagram_add_update_all (Diagram *dia)
{
GSList *l;
DDisplay *ddisp;
@@ -904,12 +908,13 @@ diagram_add_update_all(Diagram *dia)
while (l!=NULL) {
ddisp = (DDisplay *) l->data;
- ddisplay_add_update_all(ddisp);
+ ddisplay_add_update_all (ddisp);
- l = g_slist_next(l);
+ l = g_slist_next (l);
}
}
+
void
diagram_add_update (Diagram *dia, const DiaRectangle *update)
{
@@ -1751,6 +1756,7 @@ dia_diagram_pick_guide_h (Diagram *dia,
}
break;
+ case GTK_ORIENTATION_VERTICAL:
default:
continue;
}
@@ -1804,6 +1810,7 @@ dia_diagram_pick_guide_v (Diagram *dia,
}
break;
+ case GTK_ORIENTATION_HORIZONTAL:
default:
continue;
}
diff --git a/app/diapagelayout.c b/app/diapagelayout.c
index 5b35e40d..c0610510 100644
--- a/app/diapagelayout.c
+++ b/app/diapagelayout.c
@@ -433,14 +433,15 @@ dia_page_layout_set_orientation(DiaPageLayout *self,
DiaPageOrientation orient)
{
switch (orient) {
- case DIA_PAGE_ORIENT_PORTRAIT:
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->orient_portrait),
- TRUE);
- break;
- case DIA_PAGE_ORIENT_LANDSCAPE:
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->orient_landscape),
- TRUE);
- break;
+ case DIA_PAGE_ORIENT_PORTRAIT:
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->orient_portrait),
+ TRUE);
+ break;
+ case DIA_PAGE_ORIENT_LANDSCAPE:
+ default:
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->orient_landscape),
+ TRUE);
+ break;
}
}
diff --git a/app/disp_callbacks.c b/app/disp_callbacks.c
index 41206cf3..f1dbb7d4 100644
--- a/app/disp_callbacks.c
+++ b/app/disp_callbacks.c
@@ -605,29 +605,33 @@ ddisplay_im_context_preedit_changed(GtkIMContext *context,
}
}
+
static void
_scroll_page (DDisplay *ddisp, Direction dir)
{
Point delta = {0, 0};
switch (dir) {
- case DIR_LEFT :
- delta.x = ddisp->diagram->data->paper.width * ddisp->diagram->data->paper.scaling;
- break;
- case DIR_RIGHT :
- delta.x = -ddisp->diagram->data->paper.width * ddisp->diagram->data->paper.scaling;
- break;
- case DIR_UP :
- delta.y = -ddisp->diagram->data->paper.height * ddisp->diagram->data->paper.scaling;
- break;
- case DIR_DOWN :
- delta.y = ddisp->diagram->data->paper.height * ddisp->diagram->data->paper.scaling;
- break;
+ case DIR_LEFT:
+ delta.x = ddisp->diagram->data->paper.width * ddisp->diagram->data->paper.scaling;
+ break;
+ case DIR_RIGHT:
+ delta.x = -ddisp->diagram->data->paper.width * ddisp->diagram->data->paper.scaling;
+ break;
+ case DIR_UP:
+ delta.y = -ddisp->diagram->data->paper.height * ddisp->diagram->data->paper.scaling;
+ break;
+ case DIR_DOWN:
+ delta.y = ddisp->diagram->data->paper.height * ddisp->diagram->data->paper.scaling;
+ break;
+ default:
+ g_return_if_reached ();
}
- ddisplay_scroll(ddisp, &delta);
- ddisplay_flush(ddisp);
+ ddisplay_scroll (ddisp, &delta);
+ ddisplay_flush (ddisp);
}
+
static void
_scroll_step (DDisplay *ddisp, guint keyval)
{
@@ -681,12 +685,15 @@ hold_timeout_handler(gpointer data)
}
-/** Main input handler for a diagram canvas.
+/**
+ * ddisplay_canvas_events:
+ *
+ * Main input handler for a diagram canvas.
*/
gint
ddisplay_canvas_events (GtkWidget *canvas,
- GdkEvent *event,
- DDisplay *ddisp)
+ GdkEvent *event,
+ DDisplay *ddisp)
{
GdkEventMotion *mevent;
GdkEventButton *bevent;
@@ -706,356 +713,394 @@ ddisplay_canvas_events (GtkWidget *canvas,
return_val = FALSE;
- if (!gtk_widget_get_window(canvas))
+ if (!gtk_widget_get_window (canvas)) {
return FALSE;
+ }
- switch (event->type)
- {
- case GDK_SCROLL:
- sevent = (GdkEventScroll *) event;
-
- switch (sevent->direction)
- {
- case GDK_SCROLL_UP:
- if (sevent->state & GDK_SHIFT_MASK)
- ddisplay_scroll_left(ddisp);
- else if (sevent->state & GDK_CONTROL_MASK) {
- ddisplay_untransform_coords(ddisp, (int)sevent->x, (int)sevent->y, &middle.x, &middle.y);
- /* zooming with the wheel in small steps 1^(1/8) */
- ddisplay_zoom_centered(ddisp, &middle, 1.090508);
- }
- else
- ddisplay_scroll_up(ddisp);
- break;
- case GDK_SCROLL_DOWN:
- if (sevent->state & GDK_SHIFT_MASK)
- ddisplay_scroll_right(ddisp);
- else if (sevent->state & GDK_CONTROL_MASK) {
- ddisplay_untransform_coords(ddisp, (int)sevent->x, (int)sevent->y, &middle.x, &middle.y);
- /* zooming with the wheel in small steps 1/(1^(1/8)) */
- ddisplay_zoom_centered(ddisp, &middle, 0.917004);
- }
- else
- ddisplay_scroll_down(ddisp);
- break;
- case GDK_SCROLL_LEFT:
- ddisplay_scroll_left(ddisp);
- break;
- case GDK_SCROLL_RIGHT:
- ddisplay_scroll_right(ddisp);
- break;
- default:
- break;
- }
- ddisplay_flush (ddisp);
- break;
+ switch (event->type) {
+ case GDK_SCROLL:
+ sevent = (GdkEventScroll *) event;
+
+ switch (sevent->direction) {
+ case GDK_SCROLL_UP:
+ if (sevent->state & GDK_SHIFT_MASK) {
+ ddisplay_scroll_left(ddisp);
+ } else if (sevent->state & GDK_CONTROL_MASK) {
+ ddisplay_untransform_coords(ddisp, (int)sevent->x, (int)sevent->y, &middle.x, &middle.y);
+ /* zooming with the wheel in small steps 1^(1/8) */
+ ddisplay_zoom_centered(ddisp, &middle, 1.090508);
+ } else {
+ ddisplay_scroll_up (ddisp);
+ }
+ break;
+ case GDK_SCROLL_DOWN:
+ if (sevent->state & GDK_SHIFT_MASK) {
+ ddisplay_scroll_right (ddisp);
+ } else if (sevent->state & GDK_CONTROL_MASK) {
+ ddisplay_untransform_coords (ddisp,
+ (int) sevent->x,
+ (int) sevent->y,
+ &middle.x,
+ &middle.y);
+ /* zooming with the wheel in small steps 1/(1^(1/8)) */
+ ddisplay_zoom_centered (ddisp, &middle, 0.917004);
+ } else {
+ ddisplay_scroll_down (ddisp);
+ }
+ break;
+ case GDK_SCROLL_LEFT:
+ ddisplay_scroll_left (ddisp);
+ break;
+ case GDK_SCROLL_RIGHT:
+ ddisplay_scroll_right (ddisp);
+ break;
+ default:
+ break;
+ }
+ ddisplay_flush (ddisp);
+ break;
- case GDK_FOCUS_CHANGE: {
- GdkEventFocus *focus = (GdkEventFocus*) event;
+ case GDK_FOCUS_CHANGE: {
+ GdkEventFocus *focus_evt = (GdkEventFocus*) event;
hold_remove_handler ();
- if (focus->in) {
+ if (focus_evt->in) {
display_set_active (ddisp);
ddisplay_do_update_menu_sensitivity (ddisp);
}
break;
}
+ case GDK_2BUTTON_PRESS:
+ display_set_active (ddisp);
+ hold_remove_handler ();
+ bevent = (GdkEventButton *) event;
+
+ switch (bevent->button) {
+ case 1:
+ if (transient_tool) {
+ break;
+ }
+ if (active_tool->double_click_func) {
+ (*active_tool->double_click_func) (active_tool, bevent, ddisp);
+ }
+ break;
+ case 2:
+ case 3:
+ default:
+ break;
+ }
+ break;
- case GDK_2BUTTON_PRESS:
- display_set_active(ddisp);
- hold_remove_handler();
- bevent = (GdkEventButton *) event;
+ case GDK_BUTTON_PRESS:
+ display_set_active (ddisp);
+ bevent = (GdkEventButton *) event;
- switch (bevent->button)
- {
- case 1:
- if (transient_tool)
- break;
- if (active_tool->double_click_func)
- (*active_tool->double_click_func) (active_tool, bevent, ddisp);
- break;
+ ddisplay_set_clicked_point (ddisp, bevent->x, bevent->y);
- case 2:
- break;
+ switch (bevent->button) {
+ case 1:
+ if (transient_tool) {
+ break;
+ }
+ /* get the focus again, may be lost by zoom combo */
+ moving = TRUE;
+ gtk_widget_grab_focus (canvas);
+ if (active_tool->button_press_func) {
+ (*active_tool->button_press_func) (active_tool, bevent, ddisp);
+ }
- case 3:
- break;
+ /* Detect user holding down the button.
+ * Set timeout for 1sec. If timeout is called, user must still
+ * be holding. If user releases button, remove timeout. */
+ hold_data.event = gdk_event_copy (event); /* need to free later */
+ hold_data.ddisp = ddisp;
+ hold_data.tag = g_timeout_add (1000, hold_timeout_handler, NULL);
+ break;
+ case 2:
+ if (ddisp->menu_bar == NULL && !is_integrated_ui ()) {
+ popup_object_menu (ddisp, event);
+ } else if (!transient_tool) {
+ tool_reset ();
+ gtk_widget_grab_focus (canvas);
+ transient_tool = create_scroll_tool ();
+ (*transient_tool->button_press_func) (transient_tool, bevent, ddisp);
+ }
+ break;
- default:
+ case 3:
+ if (transient_tool) {
+ break;
+ }
+ if (ddisp->menu_bar == NULL) {
+ if (bevent->state & GDK_CONTROL_MASK || is_integrated_ui ()) {
+ /* for two button mouse users ... */
+ popup_object_menu (ddisp, event);
break;
- }
- break;
-
- case GDK_BUTTON_PRESS:
- display_set_active (ddisp);
- bevent = (GdkEventButton *) event;
+ }
+ ddisplay_popup_menu (ddisp, bevent);
+ break;
+ } else {
+ popup_object_menu (ddisp, event);
+ break;
+ }
+ default:
+ break;
+ }
+ break;
- ddisplay_set_clicked_point (ddisp, bevent->x, bevent->y);
+ case GDK_BUTTON_RELEASE:
+ display_set_active (ddisp);
+ bevent = (GdkEventButton *) event;
- switch (bevent->button) {
- case 1:
- if (transient_tool) {
- break;
- }
- /* get the focus again, may be lost by zoom combo */
- moving = TRUE;
- gtk_widget_grab_focus (canvas);
- if (active_tool->button_press_func) {
- (*active_tool->button_press_func) (active_tool, bevent, ddisp);
- }
-
- /* Detect user holding down the button.
- * Set timeout for 1sec. If timeout is called, user must still
- * be holding. If user releases button, remove timeout. */
- hold_data.event = gdk_event_copy (event); /* need to free later */
- hold_data.ddisp = ddisp;
- hold_data.tag = g_timeout_add (1000, hold_timeout_handler, NULL);
- break;
- case 2:
- if (ddisp->menu_bar == NULL && !is_integrated_ui ()) {
- popup_object_menu (ddisp, event);
- } else if (!transient_tool) {
- tool_reset ();
- gtk_widget_grab_focus (canvas);
- transient_tool = create_scroll_tool ();
- (*transient_tool->button_press_func) (transient_tool, bevent, ddisp);
- }
- break;
-
- case 3:
- if (transient_tool) {
- break;
- }
- if (ddisp->menu_bar == NULL) {
- if (bevent->state & GDK_CONTROL_MASK || is_integrated_ui ()) {
- /* for two button mouse users ... */
- popup_object_menu (ddisp, event);
- break;
- }
- ddisplay_popup_menu (ddisp, bevent);
- break;
- } else {
- popup_object_menu (ddisp, event);
- break;
- }
- default:
- break;
- }
- break;
+ switch (bevent->button) {
+ case 1:
+ if (moving) {
+ moving = FALSE;
+ }
+ if (active_tool->button_release_func) {
+ (*active_tool->button_release_func) (active_tool,
+ bevent, ddisp);
+ }
+ /* Button Press and Hold - remove handler then deallocate memory */
+ hold_remove_handler ();
+ break;
+ case 2:
+ if (transient_tool) {
+ (*transient_tool->button_release_func) (transient_tool,
+ bevent,
+ ddisp);
+
+ tool_free (transient_tool);
+ transient_tool = NULL;
+ }
+ break;
+ case 3:
+ break;
+ default:
+ break;
+ }
+ break;
- case GDK_BUTTON_RELEASE:
- display_set_active(ddisp);
- bevent = (GdkEventButton *) event;
-
- switch (bevent->button) {
- case 1:
- if (moving) {
- moving = FALSE;
- }
- if (active_tool->button_release_func) {
- (*active_tool->button_release_func) (active_tool,
- bevent, ddisp);
- }
- /* Button Press and Hold - remove handler then deallocate memory */
- hold_remove_handler ();
- break;
- case 2:
- if (transient_tool) {
- (*transient_tool->button_release_func) (transient_tool,
- bevent,
- ddisp);
-
- tool_free (transient_tool);
- transient_tool = NULL;
- }
- break;
- case 3:
- break;
- default:
- break;
- }
- break;
+ case GDK_MOTION_NOTIFY:
+ /* get the pointer position */
+ gdk_window_get_pointer (gtk_widget_get_window(canvas), &tx, &ty, &tmask);
+ hold_remove_handler();
- case GDK_MOTION_NOTIFY:
- /* get the pointer position */
- gdk_window_get_pointer (gtk_widget_get_window(canvas), &tx, &ty, &tmask);
- hold_remove_handler();
+ mevent = (GdkEventMotion *) event;
- mevent = (GdkEventMotion *) event;
+ if (mevent->is_hint) {
+ mevent->x = tx;
+ mevent->y = ty;
+ mevent->state = tmask;
+ mevent->is_hint = FALSE;
+ }
+ if (transient_tool && (*transient_tool->motion_func)) {
+ (*transient_tool->motion_func) (transient_tool, mevent, ddisp);
+ } else if (active_tool->motion_func) {
+ (*active_tool->motion_func) (active_tool, mevent, ddisp);
+ }
+ break;
- if (mevent->is_hint) {
- mevent->x = tx;
- mevent->y = ty;
- mevent->state = tmask;
- mevent->is_hint = FALSE;
- }
- if (transient_tool && (*transient_tool->motion_func))
- (*transient_tool->motion_func) (transient_tool, mevent, ddisp);
- else if (active_tool->motion_func)
- (*active_tool->motion_func) (active_tool, mevent, ddisp);
+ case GDK_KEY_PRESS:
+ if (moving) {
+ /*Disable Keyboard accels whilst draggin an object*/
break;
-
- case GDK_KEY_PRESS:
- if (moving) /*Disable Keyboard accels whilst draggin an object*/
- break;
- display_set_active(ddisp);
- kevent = (GdkEventKey *)event;
- state = kevent->state;
- key_handled = FALSE;
- im_context_used = FALSE;
-#if 0
- printf("Key input %d in state %d\n", kevent->keyval, textedit_mode(ddisp));
-#endif
- focus = get_active_focus((DiagramData *) ddisp->diagram);
- if (focus != NULL) {
- /* Keys goes to the active focus. */
- obj = focus_get_object(focus);
- if (diagram_is_selected(ddisp->diagram, obj)) {
-
- if (!gtk_im_context_filter_keypress(
- GTK_IM_CONTEXT(ddisp->im_context), kevent)) {
-
- switch (kevent->keyval) {
- case GDK_Tab:
- focus = textedit_move_focus(ddisp, focus,
- (state & GDK_SHIFT_MASK) == 0);
- obj = focus_get_object(focus);
- break;
- case GDK_Escape:
- textedit_deactivate_focus();
- tool_reset ();
- ddisplay_do_update_menu_sensitivity(ddisp);
- break;
- default:
- /*! key event not swallowed by the input method ? */
- handle_key_event(ddisp, focus, kevent->state, kevent->keyval,
- kevent->string, kevent->length);
-
- diagram_flush(ddisp->diagram);
- }
- }
- return_val = key_handled = im_context_used = TRUE;
- }
- }
-
-#if 0 /* modifier requirment added 2004-07-17, IMO reenabling unmodified keys here
- * shouldn't break im_context handling. How to test? --hb
- */
- if (!key_handled && (state & (GDK_CONTROL_MASK | GDK_MOD1_MASK))) {
-#else
- if (!key_handled) {
-#endif
- /* IM doesn't need receive keys, take care of it ourselves. */
- return_val = TRUE;
-
- switch(kevent->keyval) {
- case GDK_Home :
- case GDK_KP_Home :
- /* match upper left corner of the diagram with it's view */
- ddisplay_set_origo(ddisp, ddisp->diagram->data->extents.left,
ddisp->diagram->data->extents.top);
- ddisplay_update_scrollbars(ddisp);
- ddisplay_add_update_all(ddisp);
- break;
- case GDK_End :
- case GDK_KP_End :
- /* match lower right corner of the diagram with it's view */
- visible = &ddisp->visible;
- ddisplay_set_origo(ddisp,
- ddisp->diagram->data->extents.right - (visible->right - visible->left),
- ddisp->diagram->data->extents.bottom - (visible->bottom - visible->top));
- ddisplay_update_scrollbars(ddisp);
- ddisplay_add_update_all(ddisp);
- break;
- case GDK_Page_Up :
- case GDK_KP_Page_Up :
- _scroll_page (ddisp, !(state & GDK_CONTROL_MASK) ? DIR_UP : DIR_LEFT);
- break;
- case GDK_Page_Down :
- case GDK_KP_Page_Down :
- _scroll_page (ddisp, !(state & GDK_CONTROL_MASK) ? DIR_DOWN : DIR_RIGHT);
- break;
- case GDK_Up:
- case GDK_Down:
- case GDK_Left:
- case GDK_Right:
- if (g_list_length (ddisp->diagram->data->selected) > 0) {
- Diagram *dia = ddisp->diagram;
- GList *objects = dia->data->selected;
- Direction dir = GDK_Up == kevent->keyval ? DIR_UP :
- GDK_Down == kevent->keyval ? DIR_DOWN :
- GDK_Right == kevent->keyval ? DIR_RIGHT : DIR_LEFT;
- object_add_updates_list(objects, dia);
- object_list_nudge(objects, dia, dir,
- /* step one pixel or more with <ctrl> */
- ddisplay_untransform_length (ddisp, (state & GDK_SHIFT_MASK) ? 10 : 1));
- diagram_update_connections_selection(dia);
- object_add_updates_list(objects, dia);
- diagram_modified(dia);
- diagram_flush(dia);
-
- undo_set_transactionpoint(dia->undo);
- } else {
- _scroll_step (ddisp, kevent->keyval);
- }
- break;
- case GDK_KP_Add:
- case GDK_plus:
- case GDK_equal:
- ddisplay_zoom_middle(ddisp, M_SQRT2);
- break;
- case GDK_KP_Subtract:
- case GDK_minus:
- ddisplay_zoom_middle(ddisp, M_SQRT1_2);
- break;
- case GDK_Shift_L:
- case GDK_Shift_R:
- if (active_tool->type == MAGNIFY_TOOL)
- set_zoom_out(active_tool);
+ }
+ display_set_active (ddisp);
+ kevent = (GdkEventKey *) event;
+ state = kevent->state;
+ key_handled = FALSE;
+ im_context_used = FALSE;
+ #if 0
+ printf("Key input %d in state %d\n", kevent->keyval, textedit_mode(ddisp));
+ #endif
+ focus = get_active_focus ((DiagramData *) ddisp->diagram);
+ if (focus != NULL) {
+ /* Keys goes to the active focus. */
+ obj = focus_get_object (focus);
+ if (diagram_is_selected (ddisp->diagram, obj)) {
+
+ if (!gtk_im_context_filter_keypress (
+ GTK_IM_CONTEXT (ddisp->im_context), kevent)) {
+
+ switch (kevent->keyval) {
+ case GDK_Tab:
+ focus = textedit_move_focus (ddisp, focus,
+ (state & GDK_SHIFT_MASK) == 0);
+ obj = focus_get_object (focus);
break;
case GDK_Escape:
- view_unfullscreen();
+ textedit_deactivate_focus ();
+ tool_reset ();
+ ddisplay_do_update_menu_sensitivity (ddisp);
break;
- case GDK_F2:
- case GDK_Return:
- gtk_action_activate (menus_get_action ("ToolsTextedit"));
- break;
- case GDK_Menu:
- popup_object_menu (ddisp, event);
- break;
default:
- if (kevent->string && kevent->keyval == ' ') {
- tool_select_former();
- } else if ((kevent->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) == 0 &&
- kevent->length != 0) {
- /* Find first editable? */
- }
+ /*! key event not swallowed by the input method ? */
+ handle_key_event (ddisp, focus,
+ kevent->state, kevent->keyval,
+ kevent->string, kevent->length);
+
+ diagram_flush(ddisp->diagram);
+ }
}
+ return_val = key_handled = im_context_used = TRUE;
}
+ }
- if (!im_context_used)
- gtk_im_context_reset(GTK_IM_CONTEXT(ddisp->im_context));
+ #if 0
+ /* modifier requirment added 2004-07-17, IMO reenabling unmodified keys here
+ * shouldn't break im_context handling. How to test? --hb
+ */
+ if (!key_handled && (state & (GDK_CONTROL_MASK | GDK_MOD1_MASK))) {
+ #else
+ if (!key_handled) {
+ #endif
+ /* IM doesn't need receive keys, take care of it ourselves. */
+ return_val = TRUE;
+
+ switch (kevent->keyval) {
+ case GDK_Home:
+ case GDK_KP_Home:
+ /* match upper left corner of the diagram with it's view */
+ ddisplay_set_origo (ddisp,
+ ddisp->diagram->data->extents.left,
+ ddisp->diagram->data->extents.top);
+ ddisplay_update_scrollbars (ddisp);
+ ddisplay_add_update_all (ddisp);
+ break;
+ case GDK_End:
+ case GDK_KP_End:
+ /* match lower right corner of the diagram with it's view */
+ visible = &ddisp->visible;
+ ddisplay_set_origo (ddisp,
+ ddisp->diagram->data->extents.right - (visible->right - visible->left),
+ ddisp->diagram->data->extents.bottom - (visible->bottom - visible->top));
+ ddisplay_update_scrollbars (ddisp);
+ ddisplay_add_update_all (ddisp);
+ break;
+ case GDK_Page_Up:
+ case GDK_KP_Page_Up:
+ _scroll_page (ddisp, !(state & GDK_CONTROL_MASK) ? DIR_UP : DIR_LEFT);
+ break;
+ case GDK_Page_Down :
+ case GDK_KP_Page_Down:
+ _scroll_page (ddisp, !(state & GDK_CONTROL_MASK) ? DIR_DOWN : DIR_RIGHT);
+ break;
+ case GDK_Up:
+ case GDK_Down:
+ case GDK_Left:
+ case GDK_Right:
+ if (g_list_length (ddisp->diagram->data->selected) > 0) {
+ Diagram *dia = ddisp->diagram;
+ GList *objects = dia->data->selected;
+ Direction dir = GDK_Up == kevent->keyval ? DIR_UP :
+ GDK_Down == kevent->keyval ? DIR_DOWN :
+ GDK_Right == kevent->keyval ? DIR_RIGHT : DIR_LEFT;
+ object_add_updates_list (objects, dia);
+ object_list_nudge (objects, dia, dir,
+ /* step one pixel or more with <ctrl> */
+ ddisplay_untransform_length (ddisp, (state & GDK_SHIFT_MASK) ? 10 : 1));
+ diagram_update_connections_selection (dia);
+ object_add_updates_list (objects, dia);
+ diagram_modified (dia);
+ diagram_flush (dia);
+
+ undo_set_transactionpoint (dia->undo);
+ } else {
+ _scroll_step (ddisp, kevent->keyval);
+ }
+ break;
+ case GDK_KP_Add:
+ case GDK_plus:
+ case GDK_equal:
+ ddisplay_zoom_middle (ddisp, M_SQRT2);
+ break;
+ case GDK_KP_Subtract:
+ case GDK_minus:
+ ddisplay_zoom_middle (ddisp, M_SQRT1_2);
+ break;
+ case GDK_Shift_L:
+ case GDK_Shift_R:
+ if (active_tool->type == MAGNIFY_TOOL)
+ set_zoom_out (active_tool);
+ break;
+ case GDK_Escape:
+ view_unfullscreen ();
+ break;
+ case GDK_F2:
+ case GDK_Return:
+ gtk_action_activate (menus_get_action ("ToolsTextedit"));
+ break;
+ case GDK_Menu:
+ popup_object_menu (ddisp, event);
+ break;
+ default:
+ if (kevent->string && kevent->keyval == ' ') {
+ tool_select_former();
+ } else if ((kevent->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) == 0 &&
+ kevent->length != 0) {
+ /* Find first editable? */
+ }
+ }
+ }
- break;
+ if (!im_context_used) {
+ gtk_im_context_reset (GTK_IM_CONTEXT (ddisp->im_context));
+ }
- case GDK_KEY_RELEASE:
- kevent = (GdkEventKey *) event;
- if (gtk_im_context_filter_keypress(GTK_IM_CONTEXT(ddisp->im_context),
- kevent)) {
- return_val = TRUE;
- } else {
- switch(kevent->keyval) {
- case GDK_Shift_L:
- case GDK_Shift_R:
- if (active_tool->type == MAGNIFY_TOOL)
- set_zoom_in(active_tool);
- break;
- default:
- break;
- }
+ break;
+
+ case GDK_KEY_RELEASE:
+ kevent = (GdkEventKey *) event;
+ if (gtk_im_context_filter_keypress (GTK_IM_CONTEXT (ddisp->im_context),
+ kevent)) {
+ return_val = TRUE;
+ } else {
+ switch (kevent->keyval) {
+ case GDK_Shift_L:
+ case GDK_Shift_R:
+ if (active_tool->type == MAGNIFY_TOOL) {
+ set_zoom_in (active_tool);
+ }
+ break;
+ default:
+ break;
}
- break;
-
- default:
- break;
+ }
+ break;
+
+ case GDK_NOTHING:
+ case GDK_DELETE:
+ case GDK_DESTROY:
+ case GDK_EXPOSE:
+ case GDK_3BUTTON_PRESS:
+ case GDK_ENTER_NOTIFY:
+ case GDK_LEAVE_NOTIFY:
+ case GDK_CONFIGURE:
+ case GDK_MAP:
+ case GDK_UNMAP:
+ case GDK_PROPERTY_NOTIFY:
+ case GDK_SELECTION_CLEAR:
+ case GDK_SELECTION_REQUEST:
+ case GDK_SELECTION_NOTIFY:
+ case GDK_PROXIMITY_IN:
+ case GDK_PROXIMITY_OUT:
+ case GDK_DRAG_ENTER:
+ case GDK_DRAG_LEAVE:
+ case GDK_DRAG_MOTION:
+ case GDK_DRAG_STATUS:
+ case GDK_DROP_START:
+ case GDK_DROP_FINISHED:
+ case GDK_CLIENT_EVENT:
+ case GDK_VISIBILITY_NOTIFY:
+ case GDK_NO_EXPOSE:
+ case GDK_WINDOW_STATE:
+ case GDK_SETTING:
+ case GDK_OWNER_CHANGE:
+ case GDK_GRAB_BROKEN:
+ case GDK_DAMAGE:
+ case GDK_EVENT_LAST:
+ default:
+ break;
}
return return_val;
diff --git a/app/interface.c b/app/interface.c
index 661c4654..2ba87e85 100644
--- a/app/interface.c
+++ b/app/interface.c
@@ -79,6 +79,7 @@ static gboolean _ddisplay_vruler_motion_notify (GtkWidget *widget,
GdkEventMotion *event,
DDisplay *ddisp);
+
static void
dia_dnd_file_drag_data_received (GtkWidget *widget,
GdkDragContext *context,
@@ -89,60 +90,60 @@ dia_dnd_file_drag_data_received (GtkWidget *widget,
guint time,
DDisplay *ddisp)
{
- switch (gdk_drag_context_get_selected_action(context))
- {
+ switch (gdk_drag_context_get_selected_action (context)) {
case GDK_ACTION_DEFAULT:
case GDK_ACTION_COPY:
case GDK_ACTION_MOVE:
case GDK_ACTION_LINK:
case GDK_ACTION_ASK:
+ case GDK_ACTION_PRIVATE:
default:
{
Diagram *diagram = NULL;
gchar *sPath = NULL, *pFrom, *pTo;
- pFrom = strstr((gchar *) gtk_selection_data_get_data(data), "file:");
+ pFrom = strstr ((gchar *) gtk_selection_data_get_data (data), "file:");
while (pFrom) {
GError *error = NULL;
pTo = pFrom;
while (*pTo != 0 && *pTo != 0xd && *pTo != 0xa) pTo ++;
- sPath = g_strndup(pFrom, pTo - pFrom);
+ sPath = g_strndup (pFrom, pTo - pFrom);
/* format changed with Gtk+2.0, use conversion */
pFrom = g_filename_from_uri (sPath, NULL, &error);
- if (!ddisp)
+ if (!ddisp) {
diagram = diagram_load (pFrom, NULL);
- else {
- diagram = ddisp->diagram;
- if (!diagram_load_into (diagram, pFrom, NULL)) {
- /* the import filter is supposed to show the error message */
+ } else {
+ diagram = ddisp->diagram;
+ if (!diagram_load_into (diagram, pFrom, NULL)) {
+ /* the import filter is supposed to show the error message */
gtk_drag_finish (context, TRUE, FALSE, time);
- break;
- }
- }
+ break;
+ }
+ }
g_free (pFrom);
- g_free(sPath);
+ g_free (sPath);
if (diagram != NULL) {
diagram_update_extents(diagram);
layer_dialog_set_diagram(diagram);
- if (diagram->displays == NULL) {
- new_display(diagram);
- }
+ if (diagram->displays == NULL) {
+ new_display (diagram);
+ }
}
- pFrom = strstr(pTo, "file:");
+ pFrom = strstr (pTo, "file:");
} /* while */
gtk_drag_finish (context, TRUE, FALSE, time);
}
break;
- }
- return;
+ }
}
+
static GtkWidget *toolbox_shell = NULL;
static struct
diff --git a/app/layer-editor/layer_dialog.c b/app/layer-editor/layer_dialog.c
index e98a25e5..152ebe38 100644
--- a/app/layer-editor/layer_dialog.c
+++ b/app/layer-editor/layer_dialog.c
@@ -108,14 +108,14 @@ layer_dialog_create (void)
void
-layer_dialog_show()
+layer_dialog_show (void)
{
- if (is_integrated_ui () == FALSE)
- {
- if (layer_dialog == NULL || layer_dialog->dialog == NULL)
- layer_dialog_create();
- g_assert(layer_dialog != NULL); /* must be valid now */
- gtk_window_present(GTK_WINDOW(layer_dialog->dialog));
+ if (is_integrated_ui () == FALSE) {
+ if (layer_dialog == NULL || layer_dialog->dialog == NULL) {
+ layer_dialog_create();
+ }
+ g_assert (layer_dialog != NULL); /* must be valid now */
+ gtk_window_present (GTK_WINDOW (layer_dialog->dialog));
}
}
@@ -159,18 +159,20 @@ dia_layer_change_apply (DiaChange *self, Diagram *dia)
change->applied = 1;
switch (change->type) {
- case TYPE_DELETE_LAYER:
- data_remove_layer(dia->data, change->layer);
- break;
- case TYPE_ADD_LAYER:
- data_add_layer_at(dia->data, change->layer, change->index);
- break;
- case TYPE_RAISE_LAYER:
- data_raise_layer(dia->data, change->layer);
- break;
- case TYPE_LOWER_LAYER:
- data_lower_layer(dia->data, change->layer);
- break;
+ case TYPE_DELETE_LAYER:
+ data_remove_layer(dia->data, change->layer);
+ break;
+ case TYPE_ADD_LAYER:
+ data_add_layer_at(dia->data, change->layer, change->index);
+ break;
+ case TYPE_RAISE_LAYER:
+ data_raise_layer(dia->data, change->layer);
+ break;
+ case TYPE_LOWER_LAYER:
+ data_lower_layer(dia->data, change->layer);
+ break;
+ default:
+ g_return_if_reached ();
}
diagram_add_update_all(dia);
@@ -183,18 +185,20 @@ dia_layer_change_revert (DiaChange *self, Diagram *dia)
DiaLayerChange *change = DIA_LAYER_CHANGE (self);
switch (change->type) {
- case TYPE_DELETE_LAYER:
- data_add_layer_at(dia->data, change->layer, change->index);
- break;
- case TYPE_ADD_LAYER:
- data_remove_layer(dia->data, change->layer);
- break;
- case TYPE_RAISE_LAYER:
- data_lower_layer(dia->data, change->layer);
- break;
- case TYPE_LOWER_LAYER:
- data_raise_layer(dia->data, change->layer);
- break;
+ case TYPE_DELETE_LAYER:
+ data_add_layer_at(dia->data, change->layer, change->index);
+ break;
+ case TYPE_ADD_LAYER:
+ data_remove_layer(dia->data, change->layer);
+ break;
+ case TYPE_RAISE_LAYER:
+ data_lower_layer(dia->data, change->layer);
+ break;
+ case TYPE_LOWER_LAYER:
+ data_raise_layer(dia->data, change->layer);
+ break;
+ default:
+ g_return_if_reached ();
}
diagram_add_update_all(dia);
@@ -220,8 +224,8 @@ dia_layer_change_free (DiaChange *self)
}
break;
case TYPE_RAISE_LAYER:
- break;
case TYPE_LOWER_LAYER:
+ default:
break;
}
}
diff --git a/app/load_save.c b/app/load_save.c
index e27a7783..973582f5 100644
--- a/app/load_save.c
+++ b/app/load_save.c
@@ -1313,7 +1313,7 @@ diagram_autosave(Diagram *dia)
dia->autosavefilename = save_filename;
#ifdef G_THREADS_ENABLED
- if (g_thread_supported ()) {
+ {
AutoSaveInfo *asi = g_new (AutoSaveInfo, 1);
GError *error = NULL;
@@ -1327,13 +1327,6 @@ diagram_autosave(Diagram *dia)
}
/* FIXME: need better synchronization */
dia->autosaved = TRUE;
- } else {
- /* no extra threads supported, stay in this one */
- DiaContext *ctx = dia_context_new (_("Auto save"));
- dia_context_set_filename (ctx, save_filename);
- diagram_data_raw_save (dia->data, save_filename, ctx);
- dia->autosaved = TRUE;
- dia_context_release (ctx);
}
#else
{
diff --git a/app/modify_tool.c b/app/modify_tool.c
index 2cd0d36d..815ea8d4 100644
--- a/app/modify_tool.c
+++ b/app/modify_tool.c
@@ -227,15 +227,17 @@ click_select_object(DDisplay *ddisp, Point *clickedpoint,
return NULL;
}
+
static glong
-time_micro()
+time_micro (void)
{
GTimeVal tv;
- g_get_current_time(&tv);
+ g_get_current_time (&tv);
return tv.tv_sec*G_USEC_PER_SEC+tv.tv_usec;
}
+
static int do_if_clicked_handle(DDisplay *ddisp, ModifyTool *tool,
Point *clickedpoint, GdkEventButton *event)
{
@@ -819,65 +821,64 @@ modify_button_release(ModifyTool *tool, GdkEventButton *event,
FALSE, 0, 0, 0, 0);
{
- GList *list, *list_to_free;
+ GList *selected, *list_to_free;
- list = list_to_free = find_selected_objects(ddisp, tool);
+ selected = list_to_free = find_selected_objects (ddisp, tool);
if (selection_style == SELECT_REPLACE &&
!(event->state & GDK_SHIFT_MASK)) {
/* Not Multi-select => Remove all selected */
- diagram_remove_all_selected(ddisp->diagram, TRUE);
+ diagram_remove_all_selected (ddisp->diagram, TRUE);
}
if (selection_style == SELECT_INTERSECTION) {
GList *intersection = NULL;
- while (list != NULL) {
- DiaObject *obj = (DiaObject *)list->data;
+ while (selected != NULL) {
+ DiaObject *obj = DIA_OBJECT (selected->data);
- if (diagram_is_selected(ddisp->diagram, obj)) {
- intersection = g_list_append(intersection, obj);
+ if (diagram_is_selected (ddisp->diagram, obj)) {
+ intersection = g_list_append (intersection, obj);
}
- list = g_list_next(list);
+ selected = g_list_next (selected);
}
- list = intersection;
- diagram_remove_all_selected(ddisp->diagram, TRUE);
- while (list != NULL) {
- DiaObject *obj = (DiaObject *)list->data;
+ selected = intersection;
+ diagram_remove_all_selected (ddisp->diagram, TRUE);
+ while (selected != NULL) {
+ DiaObject *obj = DIA_OBJECT (selected->data);
- diagram_select(ddisp->diagram, obj);
+ diagram_select (ddisp->diagram, obj);
- list = g_list_next(list);
+ selected = g_list_next (selected);
}
- g_list_free(intersection);
+ g_list_free (intersection);
} else {
- while (list != NULL) {
- DiaObject *obj = (DiaObject *)list->data;
+ while (selected != NULL) {
+ DiaObject *obj = DIA_OBJECT (selected->data);
if (selection_style == SELECT_REMOVE) {
- if (diagram_is_selected(ddisp->diagram, obj))
- diagram_unselect_object(ddisp->diagram, obj);
+ if (diagram_is_selected (ddisp->diagram, obj))
+ diagram_unselect_object (ddisp->diagram, obj);
} else if (selection_style == SELECT_INVERT) {
- if (diagram_is_selected(ddisp->diagram, obj))
- diagram_unselect_object(ddisp->diagram, obj);
+ if (diagram_is_selected (ddisp->diagram, obj))
+ diagram_unselect_object (ddisp->diagram, obj);
else
- diagram_select(ddisp->diagram, obj);
+ diagram_select (ddisp->diagram, obj);
} else {
- if (!diagram_is_selected(ddisp->diagram, obj))
- diagram_select(ddisp->diagram, obj);
+ if (!diagram_is_selected (ddisp->diagram, obj))
+ diagram_select (ddisp->diagram, obj);
}
- list = g_list_next(list);
+ selected = g_list_next (selected);
}
}
- g_list_free(list_to_free);
-
+ g_list_free (list_to_free);
}
- ddisplay_do_update_menu_sensitivity(ddisp);
- ddisplay_flush(ddisp);
+ ddisplay_do_update_menu_sensitivity (ddisp);
+ ddisplay_flush (ddisp);
tool->state = STATE_NONE;
break;
diff --git a/app/object_ops.c b/app/object_ops.c
index 21812416..db0af861 100644
--- a/app/object_ops.c
+++ b/app/object_ops.c
@@ -275,82 +275,86 @@ object_list_align_v(GList *objects, Diagram *dia, int align)
* to sort them out by position.
*/
if (align == DIA_ALIGN_EQUAL || align == DIA_ALIGN_ADJACENT) {
- DiaObject **object_array = (DiaObject **)g_malloc(sizeof(DiaObject*)*nobjs);
- int i = 0;
-
- list = objects;
- while (list != NULL) {
- obj = (DiaObject *) list->data;
- object_array[i] = obj;
- i++;
- list = g_list_next(list);
- }
- qsort(object_array, nobjs, sizeof(DiaObject*), object_list_sort_vertical);
- list = NULL;
- for (i = 0; i < nobjs; i++) {
- list = g_list_append(list, object_array[i]);
- }
- g_assert (objects == unconnected);
- g_list_free (unconnected);
- objects = unconnected = list;
- g_free(object_array);
- }
-
- switch (align) {
- case DIA_ALIGN_TOP: /* TOP */
- y_pos = top;
- break;
- case DIA_ALIGN_CENTER: /* CENTER */
- y_pos = (top + bottom)/2.0;
- break;
- case DIA_ALIGN_BOTTOM: /* BOTTOM */
- y_pos = bottom;
- break;
- case DIA_ALIGN_POSITION: /* OBJECT POSITION */
- y_pos = (top + bottom)/2.0;
- break;
- case DIA_ALIGN_EQUAL: /* EQUAL DISTANCE */
- freespc = (bottom - top - freespc)/(double)(nobjs - 1);
- y_pos = top;
- break;
- case DIA_ALIGN_ADJACENT: /* ADJACENT */
- y_pos = top;
- break;
- default:
- message_warning("Wrong argument to object_list_align_v()\n");
- }
+ DiaObject **object_array = (DiaObject **) g_malloc (sizeof (DiaObject *) * nobjs);
+ int j = 0;
- dest_pos = g_new(Point, nobjs);
- orig_pos = g_new(Point, nobjs);
+ list = objects;
+ while (list != NULL) {
+ obj = (DiaObject *) list->data;
+ object_array[j] = obj;
+ j++;
+ list = g_list_next (list);
+ }
+ qsort (object_array, nobjs, sizeof (DiaObject*), object_list_sort_vertical);
+ list = NULL;
+ for (int k = 0; k < nobjs; k++) {
+ list = g_list_append (list, object_array[k]);
+ }
- i = 0;
- list = objects;
- while (list != NULL) {
- obj = (DiaObject *) list->data;
+ g_return_if_fail (objects == unconnected);
- pos.x = obj->position.x;
+ g_list_free (unconnected);
+ objects = unconnected = list;
+ g_free (object_array);
+ }
- switch (align) {
+ switch (align) {
case DIA_ALIGN_TOP: /* TOP */
- pos.y = y_pos + obj->position.y - obj->bounding_box.top;
+ y_pos = top;
break;
case DIA_ALIGN_CENTER: /* CENTER */
- pos.y = y_pos + obj->position.y - (obj->bounding_box.top + obj->bounding_box.bottom)/2.0;
+ y_pos = (top + bottom)/2.0;
break;
case DIA_ALIGN_BOTTOM: /* BOTTOM */
- pos.y = y_pos - (obj->bounding_box.bottom - obj->position.y);
+ y_pos = bottom;
break;
case DIA_ALIGN_POSITION: /* OBJECT POSITION */
- pos.y = y_pos;
+ y_pos = (top + bottom)/2.0;
break;
case DIA_ALIGN_EQUAL: /* EQUAL DISTANCE */
- pos.y = y_pos + obj->position.y - obj->bounding_box.top;
- y_pos += obj->bounding_box.bottom - obj->bounding_box.top + freespc;
+ freespc = (bottom - top - freespc)/(double)(nobjs - 1);
+ y_pos = top;
break;
case DIA_ALIGN_ADJACENT: /* ADJACENT */
- pos.y = y_pos + obj->position.y - obj->bounding_box.top;
- y_pos += obj->bounding_box.bottom - obj->bounding_box.top;
+ y_pos = top;
break;
+ default:
+ message_warning("Wrong argument to object_list_align_v()\n");
+ }
+
+ dest_pos = g_new(Point, nobjs);
+ orig_pos = g_new(Point, nobjs);
+
+ i = 0;
+ list = objects;
+ while (list != NULL) {
+ obj = (DiaObject *) list->data;
+
+ pos.x = obj->position.x;
+
+ switch (align) {
+ case DIA_ALIGN_TOP: /* TOP */
+ pos.y = y_pos + obj->position.y - obj->bounding_box.top;
+ break;
+ case DIA_ALIGN_CENTER: /* CENTER */
+ pos.y = y_pos + obj->position.y - (obj->bounding_box.top + obj->bounding_box.bottom)/2.0;
+ break;
+ case DIA_ALIGN_BOTTOM: /* BOTTOM */
+ pos.y = y_pos - (obj->bounding_box.bottom - obj->position.y);
+ break;
+ case DIA_ALIGN_POSITION: /* OBJECT POSITION */
+ pos.y = y_pos;
+ break;
+ case DIA_ALIGN_EQUAL: /* EQUAL DISTANCE */
+ pos.y = y_pos + obj->position.y - obj->bounding_box.top;
+ y_pos += obj->bounding_box.bottom - obj->bounding_box.top + freespc;
+ break;
+ case DIA_ALIGN_ADJACENT: /* ADJACENT */
+ pos.y = y_pos + obj->position.y - obj->bounding_box.top;
+ y_pos += obj->bounding_box.bottom - obj->bounding_box.top;
+ break;
+ default:
+ g_return_if_reached ();
}
pos.x = obj->position.x;
@@ -435,19 +439,19 @@ object_list_align_h(GList *objects, Diagram *dia, int align)
*/
if (align == DIA_ALIGN_EQUAL || align == DIA_ALIGN_ADJACENT) {
DiaObject **object_array = (DiaObject **)g_malloc(sizeof(DiaObject*)*nobjs);
- int i = 0;
+ int j = 0;
list = objects;
while (list != NULL) {
obj = (DiaObject *) list->data;
- object_array[i] = obj;
- i++;
+ object_array[j] = obj;
+ j++;
list = g_list_next(list);
}
qsort(object_array, nobjs, sizeof(DiaObject*), object_list_sort_horizontal);
list = NULL;
- for (i = 0; i < nobjs; i++) {
- list = g_list_append(list, object_array[i]);
+ for (j = 0; j < nobjs; j++) {
+ list = g_list_append(list, object_array[j]);
}
g_assert (objects == unconnected);
g_list_free (unconnected);
@@ -488,26 +492,28 @@ object_list_align_h(GList *objects, Diagram *dia, int align)
obj = (DiaObject *) list->data;
switch (align) {
- case DIA_ALIGN_LEFT:
- pos.x = x_pos + obj->position.x - obj->bounding_box.left;
- break;
- case DIA_ALIGN_CENTER:
- pos.x = x_pos + obj->position.x - (obj->bounding_box.left + obj->bounding_box.right)/2.0;
- break;
- case DIA_ALIGN_RIGHT:
- pos.x = x_pos - (obj->bounding_box.right - obj->position.x);
- break;
- case DIA_ALIGN_POSITION:
- pos.x = x_pos;
- break;
- case DIA_ALIGN_EQUAL:
- pos.x = x_pos + obj->position.x - obj->bounding_box.left;
- x_pos += obj->bounding_box.right - obj->bounding_box.left + freespc;
- break;
- case DIA_ALIGN_ADJACENT:
- pos.x = x_pos + obj->position.x - obj->bounding_box.left;
- x_pos += obj->bounding_box.right - obj->bounding_box.left;
- break;
+ case DIA_ALIGN_LEFT:
+ pos.x = x_pos + obj->position.x - obj->bounding_box.left;
+ break;
+ case DIA_ALIGN_CENTER:
+ pos.x = x_pos + obj->position.x - (obj->bounding_box.left + obj->bounding_box.right)/2.0;
+ break;
+ case DIA_ALIGN_RIGHT:
+ pos.x = x_pos - (obj->bounding_box.right - obj->position.x);
+ break;
+ case DIA_ALIGN_POSITION:
+ pos.x = x_pos;
+ break;
+ case DIA_ALIGN_EQUAL:
+ pos.x = x_pos + obj->position.x - obj->bounding_box.left;
+ x_pos += obj->bounding_box.right - obj->bounding_box.left + freespc;
+ break;
+ case DIA_ALIGN_ADJACENT:
+ pos.x = x_pos + obj->position.x - obj->bounding_box.left;
+ x_pos += obj->bounding_box.right - obj->bounding_box.left;
+ break;
+ default:
+ break;
}
pos.y = obj->position.y;
diff --git a/app/properties-dialog.c b/app/properties-dialog.c
index a1fd87b2..4ad95592 100644
--- a/app/properties-dialog.c
+++ b/app/properties-dialog.c
@@ -188,18 +188,20 @@ properties_give_focus(GtkWidget *widget, gpointer data)
}
}
+
static void
-clear_dialog_globals()
+clear_dialog_globals (void)
{
if (object_part != NULL) {
- gtk_container_remove(GTK_CONTAINER(dialog_vbox), object_part);
+ gtk_container_remove (GTK_CONTAINER (dialog_vbox), object_part);
object_part = NULL;
}
- g_list_free(current_objects);
+ g_list_free (current_objects);
current_objects = NULL;
current_dia = NULL;
}
+
void
object_properties_show(Diagram *dia, DiaObject *obj)
{
diff --git a/app/tool.c b/app/tool.c
index dd432a36..a8c26b33 100644
--- a/app/tool.c
+++ b/app/tool.c
@@ -140,30 +140,31 @@ tool_select(ToolType type, gpointer extra_data,
active_button = button;
}
+
void
-tool_options_dialog_show(ToolType type, gpointer extra_data,
- gpointer user_data, GtkWidget *button,
- int invert_persistence)
+tool_options_dialog_show (ToolType type,
+ gpointer extra_data,
+ gpointer user_data,
+ GtkWidget *button,
+ int invert_persistence)
{
DiaObjectType *objtype;
- if (active_tool->type != type)
- tool_select(type,extra_data,user_data,button,invert_persistence);
+ if (active_tool->type != type) {
+ tool_select (type, extra_data, user_data, button, invert_persistence);
+ }
- switch(type) {
- case MODIFY_TOOL:
+ switch (type) {
+ case CREATE_OBJECT_TOOL:
+ objtype = object_get_type ((char *) extra_data);
+ defaults_show (objtype, user_data);
+ break;
+ case MODIFY_TOOL:
+ case MAGNIFY_TOOL:
+ case SCROLL_TOOL:
+ case TEXTEDIT_TOOL:
+ case GUIDE_TOOL:
+ default:
break;
- case CREATE_OBJECT_TOOL:
- objtype = object_get_type((char *)extra_data);
- defaults_show(objtype, user_data);
- break;
- case MAGNIFY_TOOL:
- break;
- case SCROLL_TOOL:
- break;
- case TEXTEDIT_TOOL :
- break;
- case GUIDE_TOOL :
- break;
}
}
diff --git a/lib/arrows.c b/lib/arrows.c
index 9171c834..53bf3599 100644
--- a/lib/arrows.c
+++ b/lib/arrows.c
@@ -230,6 +230,24 @@ calculate_arrow_point (const Arrow *arrow,
case ARROW_ONE_OR_NONE:
case ARROW_ONE_OR_MANY:
case ARROW_NONE_OR_MANY:
+ case ARROW_NONE:
+ case ARROW_HOLLOW_DIAMOND:
+ case ARROW_FILLED_DIAMOND:
+ case ARROW_SLASHED_CROSS:
+ case ARROW_FILLED_ELLIPSE:
+ case ARROW_DOUBLE_FILLED_TRIANGLE:
+ case ARROW_FILLED_DOT:
+ case ARROW_FILLED_BOX:
+ case ARROW_SLASH_ARROW:
+ case ARROW_INTEGRAL_SYMBOL:
+ case ARROW_CROW_FOOT:
+ case ARROW_CROSS:
+ case ARROW_HALF_DIAMOND:
+ case ARROW_OPEN_ROUNDED:
+ case ARROW_FILLED_DOT_N_TRIANGLE:
+ case ARROW_BACKSLASH:
+ case ARROW_THREE_DOTS:
+ case MAX_ARROW_TYPE:
default:
move_arrow->x = 0.0;
move_arrow->y = 0.0;
@@ -339,6 +357,12 @@ calculate_arrow_point (const Arrow *arrow,
case ARROW_ONE_OR_NONE:
case ARROW_ONE_OR_MANY:
case ARROW_NONE_OR_MANY:
+ case ARROW_NONE:
+ case ARROW_SLASHED_CROSS:
+ case ARROW_CROW_FOOT:
+ case ARROW_CROSS:
+ case ARROW_BACKSLASH:
+ case MAX_ARROW_TYPE:
default:
move_arrow->x = 0.0;
move_arrow->y = 0.0;
@@ -2396,11 +2420,38 @@ arrow_draw (DiaRenderer *renderer,
break;
case MAX_ARROW_TYPE:
break;
- default :
+ case ARROW_LINES:
+ case ARROW_HOLLOW_TRIANGLE:
+ case ARROW_FILLED_TRIANGLE:
+ case ARROW_HOLLOW_DIAMOND:
+ case ARROW_FILLED_DIAMOND:
+ case ARROW_HALF_HEAD:
+ case ARROW_SLASHED_CROSS:
+ case ARROW_FILLED_ELLIPSE:
+ case ARROW_HOLLOW_ELLIPSE:
+ case ARROW_DOUBLE_HOLLOW_TRIANGLE:
+ case ARROW_DOUBLE_FILLED_TRIANGLE:
+ case ARROW_UNFILLED_TRIANGLE:
+ case ARROW_FILLED_DOT:
+ case ARROW_BLANKED_DOT:
+ case ARROW_FILLED_BOX:
+ case ARROW_BLANKED_BOX:
+ case ARROW_SLASH_ARROW:
+ case ARROW_CROW_FOOT:
+ case ARROW_CROSS:
+ case ARROW_FILLED_CONCAVE:
+ case ARROW_BLANKED_CONCAVE:
+ case ARROW_HALF_DIAMOND:
+ case ARROW_BACKSLASH:
+ default:
{
int idx = arrow_index_from_type (type);
g_return_if_fail (arrow_types[idx].draw != NULL);
- arrow_types[idx].draw (renderer,to,from,length,width,linewidth,fg_color,bg_color);
+ arrow_types[idx].draw (renderer,
+ to, from,
+ length, width,
+ linewidth,
+ fg_color, bg_color);
break;
}
}
diff --git a/lib/autoroute.c b/lib/autoroute.c
index c3e08266..c6cbdfcf 100644
--- a/lib/autoroute.c
+++ b/lib/autoroute.c
@@ -296,35 +296,39 @@ autolayout_adjust_for_gap(Point *pos, int dir, ConnectionPoint *cp)
return calculate_object_edge(pos, &dir_other, object);
}
-/*!
- * \brief Adjust the original position to move away from a potential arrow
+
+/**
+ * autolayout_adjust_for_arrow
+ *
+ * Adjust the original position to move away from a potential arrow
*
* We could do some similar by making MIN_DIST depend on the arrow size,
* but this one is much more easy, not touchun the autolayout algorithm at
* all. Needs to be called twice - second time with negative adjust - to
* move the point back to where it was.
- *
- * \ingroup Autorouting
*/
static void
-autolayout_adjust_for_arrow(Point *pos, int dir, real adjust)
+autolayout_adjust_for_arrow (Point *pos, int dir, real adjust)
{
switch (dir) {
- case DIR_NORTH:
- pos->y -= adjust;
- break;
- case DIR_EAST:
- pos->x += adjust;
- break;
- case DIR_SOUTH:
- pos->y += adjust;
- break;
- case DIR_WEST:
- pos->x -= adjust;
- break;
+ case DIR_NORTH:
+ pos->y -= adjust;
+ break;
+ case DIR_EAST:
+ pos->x += adjust;
+ break;
+ case DIR_SOUTH:
+ pos->y += adjust;
+ break;
+ case DIR_WEST:
+ pos->x -= adjust;
+ break;
+ default:
+ g_return_if_reached ();
}
}
+
/*!
* \brief Parallel layout
*
diff --git a/lib/boundingbox.c b/lib/boundingbox.c
index 4a437122..bc8582b4 100644
--- a/lib/boundingbox.c
+++ b/lib/boundingbox.c
@@ -402,38 +402,43 @@ polybezier_bbox(const BezPoint *pts, int numpoints,
continue;
}
- switch(pts[i].type) {
- case BEZ_MOVE_TO:
- g_assert_not_reached();
- break;
- case BEZ_LINE_TO:
- point_copy(&vx,&pts[i].p1);
- switch(pts[prev].type) {
- case BEZ_MOVE_TO:
+ switch (pts[i].type) {
case BEZ_LINE_TO:
- point_copy(&vsc,&pts[prev].p1);
- point_copy(&vp,&pts[prev].p1);
+ point_copy(&vx,&pts[i].p1);
+ switch(pts[prev].type) {
+ case BEZ_MOVE_TO:
+ case BEZ_LINE_TO:
+ point_copy(&vsc,&pts[prev].p1);
+ point_copy(&vp,&pts[prev].p1);
+ break;
+ case BEZ_CURVE_TO:
+ point_copy(&vsc,&pts[prev].p3);
+ point_copy(&vp,&pts[prev].p3);
+ break;
+ default:
+ g_return_if_reached ();
+ }
break;
case BEZ_CURVE_TO:
- point_copy(&vsc,&pts[prev].p3);
- point_copy(&vp,&pts[prev].p3);
+ point_copy (&vx,&pts[i].p3);
+ point_copy (&vp,&pts[i].p2);
+ switch (pts[prev].type) {
+ case BEZ_MOVE_TO:
+ case BEZ_LINE_TO:
+ point_copy (&vsc,&pts[prev].p1);
+ break;
+ case BEZ_CURVE_TO:
+ point_copy (&vsc,&pts[prev].p3);
+ break;
+ default:
+ g_return_if_reached ();
+ } /* vsc is the start of the curve. */
+
break;
- }
- break;
- case BEZ_CURVE_TO:
- point_copy(&vx,&pts[i].p3);
- point_copy(&vp,&pts[i].p2);
- switch(pts[prev].type) {
case BEZ_MOVE_TO:
- case BEZ_LINE_TO:
- point_copy(&vsc,&pts[prev].p1);
- break;
- case BEZ_CURVE_TO:
- point_copy(&vsc,&pts[prev].p3);
+ default:
+ g_return_if_reached ();
break;
- } /* vsc is the start of the curve. */
-
- break;
}
start = (pts[prev].type == BEZ_MOVE_TO);
end = (pts[next].type == BEZ_MOVE_TO);
diff --git a/lib/dia_image.c b/lib/dia_image.c
index 06949c0f..1f769294 100644
--- a/lib/dia_image.c
+++ b/lib/dia_image.c
@@ -457,7 +457,7 @@ dia_image_rgb_data (const DiaImage *image)
} else {
guint8 *pixels = gdk_pixbuf_get_pixels (image->image);
- g_memmove (rgb_pixels, pixels, height*rowstride);
+ memmove (rgb_pixels, pixels, height*rowstride);
return rgb_pixels;
}
diff --git a/lib/dia_svg.c b/lib/dia_svg.c
index 1ccc6200..ea90652a 100644
--- a/lib/dia_svg.c
+++ b/lib/dia_svg.c
@@ -1247,282 +1247,292 @@ dia_svg_parse_path(GArray *points, const gchar *path_str, gchar **unparsed,
/* actually parse the path component */
switch (last_type) {
- case PATH_MOVE:
- if (points->len - points_at_start > 1)
- g_warning ("Only first point should be 'move'");
- bez.type = BEZ_MOVE_TO;
- bez.p1.x = g_ascii_strtod(path, &path);
- path_chomp(path);
- bez.p1.y = g_ascii_strtod(path, &path);
- path_chomp(path);
- if (last_relative) {
- bez.p1.x += last_point.x;
- bez.p1.y += last_point.y;
- }
- last_point = bez.p1;
- last_control = bez.p1;
- last_open = bez.p1;
- if (points->len - points_at_start == 1) /* stupid svg, but we can handle it */
- g_array_index(points,BezPoint,0) = bez;
- else
- g_array_append_val(points, bez);
- /* [SVG11 8.3.2] If a moveto is followed by multiple pairs of coordinates,
- * the subsequent pairs are treated as implicit lineto commands
- */
- last_type = PATH_LINE;
- break;
- case PATH_LINE:
- bez.type = BEZ_LINE_TO;
- bez.p1.x = g_ascii_strtod(path, &path);
- path_chomp(path);
- bez.p1.y = g_ascii_strtod(path, &path);
- path_chomp(path);
- if (last_relative) {
- bez.p1.x += last_point.x;
- bez.p1.y += last_point.y;
- }
- /* Strictly speeaking it should not be necessary to assign the other
- * two points. But it helps hiding a serious limitation with the
- * standard bezier serialization, namely only saving one move-to
- * and the rest as curve-to */
+ case PATH_MOVE:
+ if (points->len - points_at_start > 1) {
+ g_warning ("Only first point should be 'move'");
+ }
+ bez.type = BEZ_MOVE_TO;
+ bez.p1.x = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ bez.p1.y = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ if (last_relative) {
+ bez.p1.x += last_point.x;
+ bez.p1.y += last_point.y;
+ }
+ last_point = bez.p1;
+ last_control = bez.p1;
+ last_open = bez.p1;
+ if (points->len - points_at_start == 1) {
+ /* stupid svg, but we can handle it */
+ g_array_index (points, BezPoint, 0) = bez;
+ } else {
+ g_array_append_val (points, bez);
+ }
+ /* [SVG11 8.3.2] If a moveto is followed by multiple pairs of coordinates,
+ * the subsequent pairs are treated as implicit lineto commands
+ */
+ last_type = PATH_LINE;
+ break;
+ case PATH_LINE:
+ bez.type = BEZ_LINE_TO;
+ bez.p1.x = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ bez.p1.y = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ if (last_relative) {
+ bez.p1.x += last_point.x;
+ bez.p1.y += last_point.y;
+ }
+ /* Strictly speeaking it should not be necessary to assign the other
+ * two points. But it helps hiding a serious limitation with the
+ * standard bezier serialization, namely only saving one move-to
+ * and the rest as curve-to */
#define INIT_LINE_TO_AS_CURVE_TO bez.p3 = bez.p1; bez.p2 = last_point
- INIT_LINE_TO_AS_CURVE_TO;
-
- last_point = bez.p1;
- last_control = bez.p1;
-
- g_array_append_val(points, bez);
- break;
- case PATH_HLINE:
- bez.type = BEZ_LINE_TO;
- bez.p1.x = g_ascii_strtod(path, &path);
- path_chomp(path);
- bez.p1.y = last_point.y;
- if (last_relative)
- bez.p1.x += last_point.x;
-
- INIT_LINE_TO_AS_CURVE_TO;
-
- last_point = bez.p1;
- last_control = bez.p1;
-
- g_array_append_val(points, bez);
- break;
- case PATH_VLINE:
- bez.type = BEZ_LINE_TO;
- bez.p1.x = last_point.x;
- bez.p1.y = g_ascii_strtod(path, &path);
- path_chomp(path);
- if (last_relative)
- bez.p1.y += last_point.y;
-
- INIT_LINE_TO_AS_CURVE_TO;
-
-#undef INIT_LINE_TO_AS_CURVE_TO
-
- last_point = bez.p1;
- last_control = bez.p1;
-
- g_array_append_val(points, bez);
- break;
- case PATH_CURVE:
- bez.type = BEZ_CURVE_TO;
- bez.p1.x = g_ascii_strtod(path, &path);
- path_chomp(path);
- bez.p1.y = g_ascii_strtod(path, &path);
- path_chomp(path);
- bez.p2.x = g_ascii_strtod(path, &path);
- path_chomp(path);
- bez.p2.y = g_ascii_strtod(path, &path);
- path_chomp(path);
- bez.p3.x = g_ascii_strtod(path, &path);
- path_chomp(path);
- bez.p3.y = g_ascii_strtod(path, &path);
- path_chomp(path);
- if (last_relative) {
- bez.p1.x += last_point.x;
- bez.p1.y += last_point.y;
- bez.p2.x += last_point.x;
- bez.p2.y += last_point.y;
- bez.p3.x += last_point.x;
- bez.p3.y += last_point.y;
- }
- last_point = bez.p3;
- last_control = bez.p2;
-
- g_array_append_val(points, bez);
- break;
- case PATH_SMOOTHCURVE:
- bez.type = BEZ_CURVE_TO;
- bez.p1.x = 2 * last_point.x - last_control.x;
- bez.p1.y = 2 * last_point.y - last_control.y;
- bez.p2.x = g_ascii_strtod(path, &path);
- path_chomp(path);
- bez.p2.y = g_ascii_strtod(path, &path);
- path_chomp(path);
- bez.p3.x = g_ascii_strtod(path, &path);
- path_chomp(path);
- bez.p3.y = g_ascii_strtod(path, &path);
- path_chomp(path);
- if (last_relative) {
- bez.p2.x += last_point.x;
- bez.p2.y += last_point.y;
- bez.p3.x += last_point.x;
- bez.p3.y += last_point.y;
- }
- last_point = bez.p3;
- last_control = bez.p2;
-
- g_array_append_val(points, bez);
- break;
- case PATH_QUBICCURVE: {
- /* raise quadratic bezier to cubic (copied from librsvg) */
- real x1, y1;
- x1 = g_ascii_strtod(path, &path);
- path_chomp(path);
- y1 = g_ascii_strtod(path, &path);
- path_chomp(path);
- if (last_relative) {
- x1 += last_point.x;
- y1 += last_point.y;
- }
- bez.type = BEZ_CURVE_TO;
- bez.p1.x = (last_point.x + 2 * x1) * (1.0 / 3.0);
- bez.p1.y = (last_point.y + 2 * y1) * (1.0 / 3.0);
- bez.p3.x = g_ascii_strtod(path, &path);
- path_chomp(path);
- bez.p3.y = g_ascii_strtod(path, &path);
- path_chomp(path);
- if (last_relative) {
- bez.p3.x += last_point.x;
- bez.p3.y += last_point.y;
- }
- bez.p2.x = (bez.p3.x + 2 * x1) * (1.0 / 3.0);
- bez.p2.y = (bez.p3.y + 2 * y1) * (1.0 / 3.0);
- last_point = bez.p3;
- last_control.x = x1;
- last_control.y = y1;
- g_array_append_val(points, bez);
- }
- break;
- case PATH_TTQCURVE:
- {
- /* Truetype quadratic bezier curveto */
- double xc, yc; /* quadratic control point */
-
- xc = 2 * last_point.x - last_control.x;
- yc = 2 * last_point.y - last_control.y;
- /* generate a quadratic bezier with control point = xc, yc */
- bez.type = BEZ_CURVE_TO;
- bez.p1.x = (last_point.x + 2 * xc) * (1.0 / 3.0);
- bez.p1.y = (last_point.y + 2 * yc) * (1.0 / 3.0);
- bez.p3.x = g_ascii_strtod(path, &path);
- path_chomp(path);
- bez.p3.y = g_ascii_strtod(path, &path);
- path_chomp(path);
- if (last_relative) {
- bez.p3.x += last_point.x;
- bez.p3.y += last_point.y;
- }
- bez.p2.x = (bez.p3.x + 2 * xc) * (1.0 / 3.0);
- bez.p2.y = (bez.p3.y + 2 * yc) * (1.0 / 3.0);
- last_point = bez.p3;
- last_control.x = xc;
- last_control.y = yc;
- g_array_append_val(points, bez);
- }
- break;
- case PATH_ARC :
- {
- real rx, ry;
- real xrot;
- int largearc, sweep;
- Point dest, dest_c;
- dest_c.x=0;
- dest_c.y=0;
-
- rx = g_ascii_strtod(path, &path);
- path_chomp(path);
- ry = g_ascii_strtod(path, &path);
- path_chomp(path);
-#if 1 /* ok if it is all properly separated */
- xrot = g_ascii_strtod(path, &path);
- path_chomp(path);
-
- largearc = (int)g_ascii_strtod(path, &path);
- path_chomp(path);
- sweep = (int)g_ascii_strtod(path, &path);
- path_chomp(path);
-#else
- /* Actually three flags, which might not be properly separated,
- * but even with this paths-data-20-f.svg does not work. IMHO the
- * test case is seriously borked and can only pass if parsing
- * the arc is tweaked against the test. In other words that test
- * looks like it is built against one specific implementation.
- * Inkscape and librsvg fail, Firefox pass.
- */
- xrot = path[0] == '0' ? 0.0 : 1.0; ++path;
- path_chomp(path);
-
- largearc = path[0] == '0' ? 0 : 1; ++path;
- path_chomp(path);
- sweep = path[0] == '0' ? 0 : 1; ++path;
- path_chomp(path);
-#endif
-
- dest.x = g_ascii_strtod(path, &path);
- path_chomp(path);
- dest.y = g_ascii_strtod(path, &path);
- path_chomp(path);
-
- if (last_relative) {
- dest.x += last_point.x;
- dest.y += last_point.y;
- }
-
- /* avoid matherr with bogus values - just ignore them
- * does happen e.g. with 'Chem-Widgets - clamp-large'
- */
- if (last_point.x != dest.x || last_point.y != dest.y)
- _path_arc (points, last_point.x, last_point.y,
- rx, ry, xrot, largearc, sweep, dest.x, dest.y,
- &dest_c);
- last_point = dest;
- last_control = dest_c;
- }
- break;
- case PATH_CLOSE:
- /* close the path with a line - second condition to ignore single close */
- if (!*closed && (points->len != points_at_start)) {
- const BezPoint *bpe = &g_array_index(points, BezPoint, points->len-1);
- /* if the last point already meets the first point dont add it again */
- const Point pte = bpe->type == BEZ_CURVE_TO ? bpe->p3 : bpe->p1;
- if (pte.x != last_open.x || pte.y != last_open.y) {
- bez.type = BEZ_LINE_TO;
- bez.p1 = last_open;
- g_array_append_val(points, bez);
- }
- last_point = last_open;
- }
- *closed = TRUE;
- need_next_element = TRUE;
- break;
- case PATH_END:
- while (*path != '\0')
- path++;
- need_next_element = FALSE;
- break;
+ INIT_LINE_TO_AS_CURVE_TO;
+
+ last_point = bez.p1;
+ last_control = bez.p1;
+
+ g_array_append_val (points, bez);
+ break;
+ case PATH_HLINE:
+ bez.type = BEZ_LINE_TO;
+ bez.p1.x = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ bez.p1.y = last_point.y;
+ if (last_relative) {
+ bez.p1.x += last_point.x;
+ }
+
+ INIT_LINE_TO_AS_CURVE_TO;
+
+ last_point = bez.p1;
+ last_control = bez.p1;
+
+ g_array_append_val (points, bez);
+ break;
+ case PATH_VLINE:
+ bez.type = BEZ_LINE_TO;
+ bez.p1.x = last_point.x;
+ bez.p1.y = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ if (last_relative) {
+ bez.p1.y += last_point.y;
+ }
+
+ INIT_LINE_TO_AS_CURVE_TO;
+
+ #undef INIT_LINE_TO_AS_CURVE_TO
+
+ last_point = bez.p1;
+ last_control = bez.p1;
+
+ g_array_append_val (points, bez);
+ break;
+ case PATH_CURVE:
+ bez.type = BEZ_CURVE_TO;
+ bez.p1.x = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ bez.p1.y = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ bez.p2.x = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ bez.p2.y = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ bez.p3.x = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ bez.p3.y = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ if (last_relative) {
+ bez.p1.x += last_point.x;
+ bez.p1.y += last_point.y;
+ bez.p2.x += last_point.x;
+ bez.p2.y += last_point.y;
+ bez.p3.x += last_point.x;
+ bez.p3.y += last_point.y;
+ }
+ last_point = bez.p3;
+ last_control = bez.p2;
+
+ g_array_append_val (points, bez);
+ break;
+ case PATH_SMOOTHCURVE:
+ bez.type = BEZ_CURVE_TO;
+ bez.p1.x = 2 * last_point.x - last_control.x;
+ bez.p1.y = 2 * last_point.y - last_control.y;
+ bez.p2.x = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ bez.p2.y = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ bez.p3.x = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ bez.p3.y = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ if (last_relative) {
+ bez.p2.x += last_point.x;
+ bez.p2.y += last_point.y;
+ bez.p3.x += last_point.x;
+ bez.p3.y += last_point.y;
+ }
+ last_point = bez.p3;
+ last_control = bez.p2;
+
+ g_array_append_val (points, bez);
+ break;
+ case PATH_QUBICCURVE: {
+ /* raise quadratic bezier to cubic (copied from librsvg) */
+ real x1, y1;
+ x1 = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ y1 = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ if (last_relative) {
+ x1 += last_point.x;
+ y1 += last_point.y;
+ }
+ bez.type = BEZ_CURVE_TO;
+ bez.p1.x = (last_point.x + 2 * x1) * (1.0 / 3.0);
+ bez.p1.y = (last_point.y + 2 * y1) * (1.0 / 3.0);
+ bez.p3.x = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ bez.p3.y = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ if (last_relative) {
+ bez.p3.x += last_point.x;
+ bez.p3.y += last_point.y;
+ }
+ bez.p2.x = (bez.p3.x + 2 * x1) * (1.0 / 3.0);
+ bez.p2.y = (bez.p3.y + 2 * y1) * (1.0 / 3.0);
+ last_point = bez.p3;
+ last_control.x = x1;
+ last_control.y = y1;
+ g_array_append_val (points, bez);
+ }
+ break;
+ case PATH_TTQCURVE:
+ {
+ /* Truetype quadratic bezier curveto */
+ double xc, yc; /* quadratic control point */
+
+ xc = 2 * last_point.x - last_control.x;
+ yc = 2 * last_point.y - last_control.y;
+ /* generate a quadratic bezier with control point = xc, yc */
+ bez.type = BEZ_CURVE_TO;
+ bez.p1.x = (last_point.x + 2 * xc) * (1.0 / 3.0);
+ bez.p1.y = (last_point.y + 2 * yc) * (1.0 / 3.0);
+ bez.p3.x = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ bez.p3.y = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ if (last_relative) {
+ bez.p3.x += last_point.x;
+ bez.p3.y += last_point.y;
+ }
+ bez.p2.x = (bez.p3.x + 2 * xc) * (1.0 / 3.0);
+ bez.p2.y = (bez.p3.y + 2 * yc) * (1.0 / 3.0);
+ last_point = bez.p3;
+ last_control.x = xc;
+ last_control.y = yc;
+ g_array_append_val (points, bez);
+ }
+ break;
+ case PATH_ARC:
+ {
+ real rx, ry;
+ real xrot;
+ int largearc, sweep;
+ Point dest, dest_c;
+ dest_c.x=0;
+ dest_c.y=0;
+
+ rx = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ ry = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ #if 1 /* ok if it is all properly separated */
+ xrot = g_ascii_strtod (path, &path);
+ path_chomp (path);
+
+ largearc = (int) g_ascii_strtod (path, &path);
+ path_chomp (path);
+ sweep = (int) g_ascii_strtod (path, &path);
+ path_chomp (path);
+ #else
+ /* Actually three flags, which might not be properly separated,
+ * but even with this paths-data-20-f.svg does not work. IMHO the
+ * test case is seriously borked and can only pass if parsing
+ * the arc is tweaked against the test. In other words that test
+ * looks like it is built against one specific implementation.
+ * Inkscape and librsvg fail, Firefox pass.
+ */
+ xrot = path[0] == '0' ? 0.0 : 1.0; ++path;
+ path_chomp(path);
+
+ largearc = path[0] == '0' ? 0 : 1; ++path;
+ path_chomp(path);
+ sweep = path[0] == '0' ? 0 : 1; ++path;
+ path_chomp(path);
+ #endif
+
+ dest.x = g_ascii_strtod (path, &path);
+ path_chomp (path);
+ dest.y = g_ascii_strtod (path, &path);
+ path_chomp (path);
+
+ if (last_relative) {
+ dest.x += last_point.x;
+ dest.y += last_point.y;
+ }
+
+ /* avoid matherr with bogus values - just ignore them
+ * does happen e.g. with 'Chem-Widgets - clamp-large'
+ */
+ if (last_point.x != dest.x || last_point.y != dest.y) {
+ _path_arc (points, last_point.x, last_point.y,
+ rx, ry, xrot, largearc, sweep, dest.x, dest.y,
+ &dest_c);
+ }
+ last_point = dest;
+ last_control = dest_c;
+ }
+ break;
+ case PATH_CLOSE:
+ /* close the path with a line - second condition to ignore single close */
+ if (!*closed && (points->len != points_at_start)) {
+ const BezPoint *bpe = &g_array_index (points, BezPoint, points->len-1);
+ /* if the last point already meets the first point dont add it again */
+ const Point pte = bpe->type == BEZ_CURVE_TO ? bpe->p3 : bpe->p1;
+ if (pte.x != last_open.x || pte.y != last_open.y) {
+ bez.type = BEZ_LINE_TO;
+ bez.p1 = last_open;
+ g_array_append_val (points, bez);
+ }
+ last_point = last_open;
+ }
+ *closed = TRUE;
+ need_next_element = TRUE;
+ break;
+ case PATH_END:
+ while (*path != '\0') {
+ path++;
+ }
+ need_next_element = FALSE;
+ break;
+ default:
+ g_return_val_if_reached (FALSE);
}
/* get rid of any ignorable characters */
- path_chomp(path);
+ path_chomp (path);
MORETOPARSE:
if (need_next_element) {
/* check if there really is more to be parsed */
- if (path[0] != 0)
- *unparsed = path;
- else
- *unparsed = NULL;
+ if (path[0] != 0) {
+ *unparsed = path;
+ } else {
+ *unparsed = NULL;
+ }
break; /* while */
}
}
@@ -1532,13 +1542,17 @@ MORETOPARSE:
* would crash on it.
*/
if (points->len < 2) {
- g_array_set_size(points, 0);
+ g_array_set_size (points, 0);
}
- if (current_point)
+
+ if (current_point) {
*current_point = last_point;
+ }
+
return (points->len > 1);
}
+
static gboolean
_parse_transform (const gchar *trans, DiaMatrix *m, real scale)
{
diff --git a/lib/dia_xml.c b/lib/dia_xml.c
index bf7cd86b..faaa68a2 100644
--- a/lib/dia_xml.c
+++ b/lib/dia_xml.c
@@ -896,23 +896,23 @@ data_string(DataNode data, DiaContext *ctx)
p = str;
while (*val) {
if (*val == '\\') {
- val++;
- switch (*val) {
- case '0':
- /* Just skip this. \0 means nothing */
- break;
- case 'n':
- *p++ = '\n';
- break;
- case 't':
- *p++ = '\t';
- break;
- case '\\':
- *p++ = '\\';
- break;
- default:
- dia_context_add_message (ctx, _("Error in string tag."));
- }
+ val++;
+ switch (*val) {
+ case '0':
+ /* Just skip this. \0 means nothing */
+ break;
+ case 'n':
+ *p++ = '\n';
+ break;
+ case 't':
+ *p++ = '\t';
+ break;
+ case '\\':
+ *p++ = '\\';
+ break;
+ default:
+ dia_context_add_message (ctx, _("Error in string tag."));
+ }
} else {
*p++ = *val;
}
diff --git a/lib/dialinechooser.c b/lib/dialinechooser.c
index 5e104a03..88b316aa 100644
--- a/lib/dialinechooser.c
+++ b/lib/dialinechooser.c
@@ -142,36 +142,38 @@ dia_line_preview_expose(GtkWidget *widget, GdkEventExpose *event)
cairo_set_line_join (ctx, CAIRO_LINE_JOIN_MITER);
switch (line->lstyle) {
- case LINESTYLE_DEFAULT:
- case LINESTYLE_SOLID:
- cairo_set_dash (ctx, dash_list, 0, 0);
- break;
- case LINESTYLE_DASHED:
- dash_list[0] = 10;
- dash_list[1] = 10;
- cairo_set_dash (ctx, dash_list, 2, 0);
- break;
- case LINESTYLE_DASH_DOT:
- dash_list[0] = 10;
- dash_list[1] = 4;
- dash_list[2] = 2;
- dash_list[3] = 4;
- cairo_set_dash (ctx, dash_list, 4, 0);
- break;
- case LINESTYLE_DASH_DOT_DOT:
- dash_list[0] = 10;
- dash_list[1] = 2;
- dash_list[2] = 2;
- dash_list[3] = 2;
- dash_list[4] = 2;
- dash_list[5] = 2;
- cairo_set_dash (ctx, dash_list, 6, 0);
- break;
- case LINESTYLE_DOTTED:
- dash_list[0] = 2;
- dash_list[1] = 2;
- cairo_set_dash (ctx, dash_list, 2, 0);
- break;
+ case LINESTYLE_DEFAULT:
+ case LINESTYLE_SOLID:
+ cairo_set_dash (ctx, dash_list, 0, 0);
+ break;
+ case LINESTYLE_DASHED:
+ dash_list[0] = 10;
+ dash_list[1] = 10;
+ cairo_set_dash (ctx, dash_list, 2, 0);
+ break;
+ case LINESTYLE_DASH_DOT:
+ dash_list[0] = 10;
+ dash_list[1] = 4;
+ dash_list[2] = 2;
+ dash_list[3] = 4;
+ cairo_set_dash (ctx, dash_list, 4, 0);
+ break;
+ case LINESTYLE_DASH_DOT_DOT:
+ dash_list[0] = 10;
+ dash_list[1] = 2;
+ dash_list[2] = 2;
+ dash_list[3] = 2;
+ dash_list[4] = 2;
+ dash_list[5] = 2;
+ cairo_set_dash (ctx, dash_list, 6, 0);
+ break;
+ case LINESTYLE_DOTTED:
+ dash_list[0] = 2;
+ dash_list[1] = 2;
+ cairo_set_dash (ctx, dash_list, 2, 0);
+ break;
+ default:
+ g_return_val_if_reached (FALSE);
}
cairo_move_to (ctx, x, y + height / 2);
cairo_line_to (ctx, x + width, y + height / 2);
diff --git a/lib/diapathrenderer.c b/lib/diapathrenderer.c
index a476939a..cf8e2038 100644
--- a/lib/diapathrenderer.c
+++ b/lib/diapathrenderer.c
@@ -824,13 +824,13 @@ create_standard_path_from_object (DiaObject *obj)
for (i = 0; i < pr->pathes->len; ++i) {
GArray *points = g_ptr_array_index (pr->pathes, i);
- DiaObject *obj;
+ DiaObject *path_obj;
if (points->len < 2)
- obj = NULL;
+ path_obj = NULL;
else
- obj = create_standard_path (points->len, &g_array_index (points, BezPoint, 0));
- if (obj)
- list = g_list_append (list, obj);
+ path_obj = create_standard_path (points->len, &g_array_index (points, BezPoint, 0));
+ if (path_obj)
+ list = g_list_append (list, path_obj);
}
if (!list) {
path = NULL;
diff --git a/lib/font.c b/lib/font.c
index 3b827749..624f435d 100644
--- a/lib/font.c
+++ b/lib/font.c
@@ -101,7 +101,7 @@ static GList *pango_contexts = NULL;
/*! DEPRECATED: there should be only one "measure context" */
void
-dia_font_push_context(PangoContext *pcontext)
+dia_font_push_context (PangoContext *pcontext)
{
pango_contexts = g_list_prepend(pango_contexts, pango_context);
pango_context = pcontext;
@@ -109,17 +109,20 @@ dia_font_push_context(PangoContext *pcontext)
g_object_ref(pcontext);
}
+
/*! DEPRECATED: there should be only one "measure context" */
void
-dia_font_pop_context() {
- g_object_unref(pango_context);
- pango_context = (PangoContext*)pango_contexts->data;
+dia_font_pop_context (void)
+{
+ g_object_unref (pango_context);
+ pango_context = (PangoContext*) pango_contexts->data;
pango_context_set_language (pango_context, gtk_get_default_language ());
- pango_contexts = g_list_next(pango_contexts);
+ pango_contexts = g_list_next (pango_contexts);
}
+
PangoContext *
-dia_font_get_context()
+dia_font_get_context (void)
{
if (pango_context == NULL) {
/* Maybe this one with pangocairo
@@ -255,26 +258,29 @@ dia_font_new(const char *family, DiaFontStyle style, real height)
return font;
}
+
static void
-dia_pfd_set_family(PangoFontDescription* pfd, DiaFontFamily fam)
+dia_pfd_set_family (PangoFontDescription* pfd, DiaFontFamily fam)
{
switch (fam) {
- case DIA_FONT_SANS :
- pango_font_description_set_family(pfd, "sans");
- break;
- case DIA_FONT_SERIF :
- pango_font_description_set_family(pfd, "serif");
- break;
- case DIA_FONT_MONOSPACE :
- pango_font_description_set_family(pfd, "monospace");
- break;
- default :
- /* Pango does _not_ allow fonts without a name (or at least they are not useful) */
- pango_font_description_set_family(pfd, "sans");
- break;
+ case DIA_FONT_SANS :
+ pango_font_description_set_family (pfd, "sans");
+ break;
+ case DIA_FONT_SERIF :
+ pango_font_description_set_family (pfd, "serif");
+ break;
+ case DIA_FONT_MONOSPACE :
+ pango_font_description_set_family (pfd, "monospace");
+ break;
+ case DIA_FONT_FAMILY_ANY:
+ default :
+ /* Pango does _not_ allow fonts without a name (or at least they are not useful) */
+ pango_font_description_set_family (pfd, "sans");
+ break;
}
}
+
static void
dia_pfd_set_weight(PangoFontDescription* pfd, DiaFontWeight fw)
{
diff --git a/lib/geometry.c b/lib/geometry.c
index 4f636d36..e2246e7c 100644
--- a/lib/geometry.c
+++ b/lib/geometry.c
@@ -297,99 +297,115 @@ distance_bez_seg_point(const Point *b1, const BezPoint *b2,
return distance_line_point(b1, &b2->p1, line_width, point);
}
-real
-distance_bez_line_point(const BezPoint *b, guint npoints,
- real line_width, const Point *point)
+
+double
+distance_bez_line_point (const BezPoint *b,
+ guint npoints,
+ double line_width,
+ const Point *point)
{
Point last;
guint i;
- real line_dist = G_MAXFLOAT;
+ double line_dist = G_MAXFLOAT;
- g_return_val_if_fail(b[0].type == BEZ_MOVE_TO, -1);
+ g_return_val_if_fail (b[0].type == BEZ_MOVE_TO, -1);
last = b[0].p1;
for (i = 1; i < npoints; i++) {
- real dist;
+ double dist;
switch (b[i].type) {
- case BEZ_MOVE_TO:
- last = b[i].p1;
- break;
- case BEZ_LINE_TO:
- dist = distance_line_point(&last, &b[i].p1, line_width, point);
- line_dist = MIN(line_dist, dist);
- last = b[i].p1;
- break;
- case BEZ_CURVE_TO:
- dist = bez_point_distance_and_ray_crosses(&last, &b[i].p1, &b[i].p2,
- &b[i].p3, line_width, point,
- NULL);
- line_dist = MIN(line_dist, dist);
- last = b[i].p3;
- break;
+ case BEZ_MOVE_TO:
+ last = b[i].p1;
+ break;
+ case BEZ_LINE_TO:
+ dist = distance_line_point (&last, &b[i].p1, line_width, point);
+ line_dist = MIN (line_dist, dist);
+ last = b[i].p1;
+ break;
+ case BEZ_CURVE_TO:
+ dist = bez_point_distance_and_ray_crosses (&last,
+ &b[i].p1, &b[i].p2,
+ &b[i].p3, line_width,
+ point,
+ NULL);
+ line_dist = MIN(line_dist, dist);
+ last = b[i].p3;
+ break;
+ default:
+ g_return_val_if_reached (G_MAXDOUBLE);
}
}
return line_dist;
}
-real
-distance_bez_shape_point(const BezPoint *b, guint npoints,
- real line_width, const Point *point)
+
+double
+distance_bez_shape_point (const BezPoint *b,
+ guint npoints,
+ double line_width,
+ const Point *point)
{
Point last;
const Point *close_to; /* path must be closed to calculate distance */
guint i;
- real line_dist = G_MAXFLOAT;
+ double line_dist = G_MAXFLOAT;
guint crossings = 0;
- g_return_val_if_fail(b[0].type == BEZ_MOVE_TO, -1);
+ g_return_val_if_fail (b[0].type == BEZ_MOVE_TO, -1);
last = b[0].p1;
close_to = &b[0].p1;
for (i = 1; i < npoints; i++) {
- real dist;
+ double dist;
switch (b[i].type) {
- case BEZ_MOVE_TO:
- /* no complains, there are renderers capable to handle this */
- last = b[i].p1;
- close_to = &b[i].p1;
- break;
- case BEZ_LINE_TO:
- dist = distance_line_point(&last, &b[i].p1, line_width, point);
- crossings += line_crosses_ray(&last, &b[i].p1, point);
- line_dist = MIN(line_dist, dist);
- last = b[i].p1;
- if (close_to && close_to->x == last.x && close_to->y == last.y)
- close_to = NULL;
- break;
- case BEZ_CURVE_TO:
- dist = bez_point_distance_and_ray_crosses(&last, &b[i].p1, &b[i].p2,
- &b[i].p3, line_width, point,
- &crossings);
- line_dist = MIN(line_dist, dist);
- last = b[i].p3;
- if (close_to && close_to->x == last.x && close_to->y == last.y)
- close_to = NULL;
- break;
+ case BEZ_MOVE_TO:
+ /* no complains, there are renderers capable to handle this */
+ last = b[i].p1;
+ close_to = &b[i].p1;
+ break;
+ case BEZ_LINE_TO:
+ dist = distance_line_point (&last, &b[i].p1, line_width, point);
+ crossings += line_crosses_ray (&last, &b[i].p1, point);
+ line_dist = MIN (line_dist, dist);
+ last = b[i].p1;
+ if (close_to && close_to->x == last.x && close_to->y == last.y) {
+ close_to = NULL;
+ }
+ break;
+ case BEZ_CURVE_TO:
+ dist = bez_point_distance_and_ray_crosses (&last, &b[i].p1, &b[i].p2,
+ &b[i].p3, line_width,
+ point, &crossings);
+ line_dist = MIN(line_dist, dist);
+ last = b[i].p3;
+ if (close_to && close_to->x == last.x && close_to->y == last.y) {
+ close_to = NULL;
+ }
+ break;
+ default:
+ g_return_val_if_reached (0.0);
}
}
if (close_to) {
/* final, implicit line-to */
- real dist = distance_line_point(&last, close_to, line_width, point);
- crossings += line_crosses_ray(&last, close_to, point);
- line_dist = MIN(line_dist, dist);
+ real dist = distance_line_point (&last, close_to, line_width, point);
+ crossings += line_crosses_ray (&last, close_to, point);
+ line_dist = MIN (line_dist, dist);
}
/* If there is an odd number of ray crossings, we are inside the polygon.
* Otherwise, return the minimum distance from a line segment */
- if (crossings % 2 == 1)
+ if (crossings % 2 == 1) {
return 0.0;
- else
+ } else {
return line_dist;
+ }
}
+
real
distance_ellipse_point(const Point *centre, real width, real height,
real line_width, const Point *point)
diff --git a/lib/group.c b/lib/group.c
index 9da27927..90a880dc 100644
--- a/lib/group.c
+++ b/lib/group.c
@@ -212,9 +212,14 @@ group_objects_move_delta (Group *group, const Point *delta)
}
}
+
static ObjectChange*
-group_move_handle(Group *group, Handle *handle, Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+group_move_handle (Group *group,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
DiaObject *obj = &group->object;
DiaRectangle *bb = &obj->bounding_box;
@@ -234,53 +239,65 @@ group_move_handle(Group *group, Handle *handle, Point *to, ConnectionPoint *cp,
* For rotated group we should either translate the handle positions
* or we might rotate the horizontal and vertical scale ...
*/
- switch(handle->id) {
- case HANDLE_RESIZE_NW:
- g_assert(group->handles[7].id == HANDLE_RESIZE_SE);
- fixed = group->handles[7].pos;
- w1 = w0 - (to->x - top_left.x);
- h1 = h0 - (to->y - top_left.y);
- break;
- case HANDLE_RESIZE_N:
- g_assert(group->handles[6].id == HANDLE_RESIZE_S);
- fixed = group->handles[6].pos;
- h1 = h0 - (to->y - top_left.y);
- break;
- case HANDLE_RESIZE_NE:
- g_assert(group->handles[5].id == HANDLE_RESIZE_SW);
- fixed = group->handles[5].pos;
- w1 = to->x - top_left.x;
- h1 = h0 - (to->y - top_left.y);
- break;
- case HANDLE_RESIZE_W:
- g_assert(group->handles[4].id == HANDLE_RESIZE_E);
- fixed = group->handles[4].pos;
- w1 = w0 - (to->x - top_left.x);
- break;
- case HANDLE_RESIZE_E:
- g_assert(group->handles[3].id == HANDLE_RESIZE_W);
- fixed = group->handles[3].pos;
- w1 = to->x - top_left.x;
- break;
- case HANDLE_RESIZE_SW:
- g_assert(group->handles[2].id == HANDLE_RESIZE_NE);
- fixed = group->handles[2].pos;
- w1 = w0 - (to->x - top_left.x);
- h1 = to->y - top_left.y;
- break;
- case HANDLE_RESIZE_S:
- g_assert(group->handles[1].id == HANDLE_RESIZE_N);
- fixed = group->handles[1].pos;
- h1 = to->y - top_left.y;
- break;
- case HANDLE_RESIZE_SE:
- g_assert(group->handles[0].id == HANDLE_RESIZE_NW);
- fixed = group->handles[0].pos;
- w1 = to->x - top_left.x;
- h1 = to->y - top_left.y;
- break;
- default:
- g_warning("group_move_handle() called with wrong handle-id %d", handle->id);
+ switch (handle->id) {
+ case HANDLE_RESIZE_NW:
+ g_return_val_if_fail (group->handles[7].id == HANDLE_RESIZE_SE, NULL);
+ fixed = group->handles[7].pos;
+ w1 = w0 - (to->x - top_left.x);
+ h1 = h0 - (to->y - top_left.y);
+ break;
+ case HANDLE_RESIZE_N:
+ g_return_val_if_fail (group->handles[6].id == HANDLE_RESIZE_S, NULL);
+ fixed = group->handles[6].pos;
+ h1 = h0 - (to->y - top_left.y);
+ break;
+ case HANDLE_RESIZE_NE:
+ g_return_val_if_fail (group->handles[5].id == HANDLE_RESIZE_SW, NULL);
+ fixed = group->handles[5].pos;
+ w1 = to->x - top_left.x;
+ h1 = h0 - (to->y - top_left.y);
+ break;
+ case HANDLE_RESIZE_W:
+ g_return_val_if_fail (group->handles[4].id == HANDLE_RESIZE_E, NULL);
+ fixed = group->handles[4].pos;
+ w1 = w0 - (to->x - top_left.x);
+ break;
+ case HANDLE_RESIZE_E:
+ g_return_val_if_fail (group->handles[3].id == HANDLE_RESIZE_W, NULL);
+ fixed = group->handles[3].pos;
+ w1 = to->x - top_left.x;
+ break;
+ case HANDLE_RESIZE_SW:
+ g_return_val_if_fail (group->handles[2].id == HANDLE_RESIZE_NE, NULL);
+ fixed = group->handles[2].pos;
+ w1 = w0 - (to->x - top_left.x);
+ h1 = to->y - top_left.y;
+ break;
+ case HANDLE_RESIZE_S:
+ g_return_val_if_fail (group->handles[1].id == HANDLE_RESIZE_N, NULL);
+ fixed = group->handles[1].pos;
+ h1 = to->y - top_left.y;
+ break;
+ case HANDLE_RESIZE_SE:
+ g_return_val_if_fail (group->handles[0].id == HANDLE_RESIZE_NW, NULL);
+ fixed = group->handles[0].pos;
+ w1 = to->x - top_left.x;
+ h1 = to->y - top_left.y;
+ break;
+ case HANDLE_MOVE_STARTPOINT:
+ case HANDLE_MOVE_ENDPOINT:
+ case HANDLE_CUSTOM1:
+ case HANDLE_CUSTOM2:
+ case HANDLE_CUSTOM3:
+ case HANDLE_CUSTOM4:
+ case HANDLE_CUSTOM5:
+ case HANDLE_CUSTOM6:
+ case HANDLE_CUSTOM7:
+ case HANDLE_CUSTOM8:
+ case HANDLE_CUSTOM9:
+ default:
+ g_warning ("group_move_handle() called with wrong handle-id %d",
+ handle->id);
}
if (!group->matrix) {
diff --git a/lib/orth_conn.c b/lib/orth_conn.c
index 8040b684..c0fcf0d9 100644
--- a/lib/orth_conn.c
+++ b/lib/orth_conn.c
@@ -168,102 +168,136 @@ static int get_segment_nr(OrthConn *orth, Point *point, real max_dist)
ObjectChange *
-orthconn_move_handle(OrthConn *orth, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+orthconn_move_handle (OrthConn *orth,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
int n;
int handle_nr;
- DiaObject *obj = (DiaObject *)orth;
+ DiaObject *obj = (DiaObject *) orth;
ObjectChange *change = NULL;
- switch(handle->id) {
- case HANDLE_MOVE_STARTPOINT:
- orth->points[0] = *to;
- if (orth->autorouting &&
- autoroute_layout_orthconn(orth, cp,
- obj->handles[1]->connected_to))
- break;
- switch (orth->orientation[0]) {
- case HORIZONTAL:
- orth->points[1].y = to->y;
- break;
- case VERTICAL:
- orth->points[1].x = to->x;
+ switch (handle->id) {
+ case HANDLE_MOVE_STARTPOINT:
+ orth->points[0] = *to;
+ if (orth->autorouting &&
+ autoroute_layout_orthconn (orth, cp,
+ obj->handles[1]->connected_to)) {
+ break;
+ }
+ switch (orth->orientation[0]) {
+ case HORIZONTAL:
+ orth->points[1].y = to->y;
+ break;
+ case VERTICAL:
+ orth->points[1].x = to->x;
+ break;
+ default:
+ g_return_val_if_reached (NULL);
+ }
break;
- }
- break;
- case HANDLE_MOVE_ENDPOINT:
- n = orth->numpoints - 1;
- orth->points[n] = *to;
- if (orth->autorouting &&
- autoroute_layout_orthconn(orth, obj->handles[0]->connected_to,
- cp))
- break;
- switch (orth->orientation[n-1]) {
- case HORIZONTAL:
- orth->points[n-1].y = to->y;
+ case HANDLE_MOVE_ENDPOINT:
+ n = orth->numpoints - 1;
+ orth->points[n] = *to;
+ if (orth->autorouting &&
+ autoroute_layout_orthconn (orth, obj->handles[0]->connected_to,
+ cp)) {
+ break;
+ }
+ switch (orth->orientation[n-1]) {
+ case HORIZONTAL:
+ orth->points[n-1].y = to->y;
+ break;
+ case VERTICAL:
+ orth->points[n-1].x = to->x;
+ break;
+ default:
+ g_return_val_if_reached (NULL);
+ }
break;
- case VERTICAL:
- orth->points[n-1].x = to->x;
+ case HANDLE_MIDPOINT:
+ handle_nr = get_handle_nr (orth, handle);
+ if (orth->autorouting) {
+ change = orthconn_set_autorouting (orth, FALSE);
+ }
+ switch (orth->orientation[handle_nr]) {
+ case HORIZONTAL:
+ orth->points[handle_nr].y = to->y;
+ orth->points[handle_nr+1].y = to->y;
+ break;
+ case VERTICAL:
+ orth->points[handle_nr].x = to->x;
+ orth->points[handle_nr+1].x = to->x;
+ break;
+ default:
+ g_return_val_if_reached (NULL);
+ }
break;
- }
- break;
- case HANDLE_MIDPOINT:
- handle_nr = get_handle_nr(orth, handle);
- if (orth->autorouting)
- change = orthconn_set_autorouting(orth, FALSE);
- switch (orth->orientation[handle_nr]) {
- case HORIZONTAL:
- orth->points[handle_nr].y = to->y;
- orth->points[handle_nr+1].y = to->y;
+ case HANDLE_RESIZE_NW:
+ case HANDLE_RESIZE_N:
+ case HANDLE_RESIZE_NE:
+ case HANDLE_RESIZE_W:
+ case HANDLE_RESIZE_E:
+ case HANDLE_RESIZE_SW:
+ case HANDLE_RESIZE_S:
+ case HANDLE_RESIZE_SE:
+ case HANDLE_CUSTOM2:
+ case HANDLE_CUSTOM3:
+ case HANDLE_CUSTOM4:
+ case HANDLE_CUSTOM5:
+ case HANDLE_CUSTOM6:
+ case HANDLE_CUSTOM7:
+ case HANDLE_CUSTOM8:
+ case HANDLE_CUSTOM9:
+ default:
+ g_warning ("Internal error in orthconn_move_handle.\n");
break;
- case VERTICAL:
- orth->points[handle_nr].x = to->x;
- orth->points[handle_nr+1].x = to->x;
- break;
- }
- break;
- default:
- g_warning("Internal error in orthconn_move_handle.\n");
- break;
}
return change;
}
+
ObjectChange *
-orthconn_move(OrthConn *orth, Point *to)
+orthconn_move (OrthConn *orth, Point *to)
{
Point p;
int i;
p = *to;
- point_sub(&p, &orth->points[0]);
+ point_sub (&p, &orth->points[0]);
orth->points[0] = *to;
- for (i=1;i<orth->numpoints;i++) {
- point_add(&orth->points[i], &p);
+ for (i = 1; i < orth->numpoints; i++) {
+ point_add (&orth->points[i], &p);
}
+
return NULL;
}
+
real
-orthconn_distance_from(OrthConn *orth, Point *point, real line_width)
+orthconn_distance_from (OrthConn *orth, Point *point, real line_width)
{
int i;
real dist;
- dist = distance_line_point( &orth->points[0], &orth->points[1],
- line_width, point);
- for (i=1;i<orth->numpoints-1;i++) {
- dist = MIN(dist,
- distance_line_point( &orth->points[i], &orth->points[i+1],
- line_width, point));
+ dist = distance_line_point (&orth->points[0], &orth->points[1],
+ line_width, point);
+
+ for (i = 1; i < orth->numpoints - 1; i++) {
+ dist = MIN (dist,
+ distance_line_point (&orth->points[i], &orth->points[i+1],
+ line_width, point));
}
+
return dist;
}
+
static void
neworthconn_update_midpoints(OrthConn *orth)
{
@@ -913,116 +947,133 @@ insert_handle(OrthConn *orth, int segment,
orth->numhandles = orth->numpoints-1;
}
+
static void
-endsegment_change_free(struct EndSegmentChange *change)
+endsegment_change_free (struct EndSegmentChange *change)
{
if ( (change->type==TYPE_ADD_SEGMENT && !change->applied) ||
(change->type==TYPE_REMOVE_SEGMENT && change->applied) ){
- if (change->handle)
- g_free(change->handle);
+ if (change->handle) {
+ g_free (change->handle);
+ }
change->handle = NULL;
}
if (change->cplchange) {
- if (change->cplchange->free) change->cplchange->free(change->cplchange);
- g_free(change->cplchange);
+ if (change->cplchange->free) {
+ change->cplchange->free (change->cplchange);
+ }
+ g_free (change->cplchange);
change->cplchange = NULL;
}
}
+
static void
-endsegment_change_apply(struct EndSegmentChange *change, DiaObject *obj)
+endsegment_change_apply (struct EndSegmentChange *change, DiaObject *obj)
{
OrthConn *orth = (OrthConn *)obj;
change->applied = 1;
switch (change->type) {
- case TYPE_ADD_SEGMENT:
- object_unconnect(obj, change->old_end_handle);
- if (change->segment==0) { /* first */
- add_point(orth, 0, &change->point);
- insert_handle(orth, change->segment,
- change->handle, FLIP_ORIENT(orth->orientation[0]) );
- setup_midpoint_handle(orth->handles[1]);
- obj->position = orth->points[0];
- change->cplchange = connpointline_add_point(orth->midpoints,
- &change->point);
- } else { /* last */
- add_point(orth, orth->numpoints, &change->point);
- insert_handle(orth, change->segment, change->handle,
- FLIP_ORIENT(orth->orientation[orth->numpoints-3]) );
- setup_midpoint_handle(orth->handles[orth->numpoints-3]);
- change->cplchange = connpointline_add_point(orth->midpoints,
- &orth->midpoints->end);
- }
- if (change->cp)
- object_connect(obj, change->handle, change->cp);
- break;
- case TYPE_REMOVE_SEGMENT:
- object_unconnect(obj, change->old_end_handle);
- change->cplchange =
- connpointline_remove_point(orth->midpoints,
- &orth->points[change->segment]);
- if (change->segment==0) { /* first */
- delete_point(orth, 0);
- remove_handle(orth, 0);
- setup_endpoint_handle(orth->handles[0], HANDLE_MOVE_STARTPOINT);
- obj->position = orth->points[0];
- } else { /* last */
- delete_point(orth, orth->numpoints-1);
- remove_handle(orth, change->segment);
- setup_endpoint_handle(orth->handles[orth->numpoints-2],
- HANDLE_MOVE_ENDPOINT);
- }
- break;
+ case TYPE_ADD_SEGMENT:
+ object_unconnect (obj, change->old_end_handle);
+ if (change->segment==0) { /* first */
+ add_point (orth, 0, &change->point);
+ insert_handle (orth, change->segment,
+ change->handle, FLIP_ORIENT(orth->orientation[0]) );
+ setup_midpoint_handle (orth->handles[1]);
+ obj->position = orth->points[0];
+ change->cplchange = connpointline_add_point (orth->midpoints,
+ &change->point);
+ } else { /* last */
+ add_point (orth, orth->numpoints, &change->point);
+ insert_handle (orth, change->segment, change->handle,
+ FLIP_ORIENT(orth->orientation[orth->numpoints-3]) );
+ setup_midpoint_handle (orth->handles[orth->numpoints-3]);
+ change->cplchange = connpointline_add_point (orth->midpoints,
+ &orth->midpoints->end);
+ }
+ if (change->cp) {
+ object_connect (obj, change->handle, change->cp);
+ }
+ break;
+ case TYPE_REMOVE_SEGMENT:
+ object_unconnect (obj, change->old_end_handle);
+ change->cplchange =
+ connpointline_remove_point (orth->midpoints,
+ &orth->points[change->segment]);
+ if (change->segment==0) { /* first */
+ delete_point (orth, 0);
+ remove_handle (orth, 0);
+ setup_endpoint_handle (orth->handles[0], HANDLE_MOVE_STARTPOINT);
+ obj->position = orth->points[0];
+ } else { /* last */
+ delete_point (orth, orth->numpoints-1);
+ remove_handle (orth, change->segment);
+ setup_endpoint_handle (orth->handles[orth->numpoints-2],
+ HANDLE_MOVE_ENDPOINT);
+ }
+ break;
+ default:
+ g_return_if_reached ();
}
- neworthconn_update_midpoints(orth); /* useless ? */
+ neworthconn_update_midpoints (orth); /* useless ? */
}
+
static void
-endsegment_change_revert(struct EndSegmentChange *change, DiaObject *obj)
+endsegment_change_revert (struct EndSegmentChange *change, DiaObject *obj)
{
- OrthConn *orth = (OrthConn *)obj;
+ OrthConn *orth = (OrthConn *) obj;
+
+ change->cplchange->revert (change->cplchange, obj);
- change->cplchange->revert(change->cplchange,obj);
switch (change->type) {
- case TYPE_ADD_SEGMENT:
- object_unconnect(obj, change->handle);
- if (change->segment==0) { /* first */
- delete_point(orth, 0);
- remove_handle(orth, 0);
- setup_endpoint_handle(orth->handles[0], HANDLE_MOVE_STARTPOINT);
- obj->position = orth->points[0];
- } else { /* last */
- delete_point(orth, orth->numpoints-1);
- remove_handle(orth, change->segment);
- setup_endpoint_handle(orth->handles[orth->numpoints-2],
- HANDLE_MOVE_ENDPOINT);
- }
- if (change->cp)
- object_connect(obj, change->old_end_handle, change->cp);
- break;
- case TYPE_REMOVE_SEGMENT:
- if (change->segment==0) { /* first */
- add_point(orth, 0, &change->point);
- insert_handle(orth, change->segment,
- change->handle, FLIP_ORIENT(orth->orientation[0]) );
- setup_midpoint_handle(orth->handles[1]);
- obj->position = orth->points[0];
- } else { /* last */
- add_point(orth, orth->numpoints, &change->point);
- insert_handle(orth, change->segment, change->handle,
- FLIP_ORIENT(orth->orientation[orth->numpoints-3]) );
- setup_midpoint_handle(orth->handles[orth->numpoints-3]);
- }
- if (change->cp)
- object_connect(obj, change->old_end_handle, change->cp);
- break;
+ case TYPE_ADD_SEGMENT:
+ object_unconnect(obj, change->handle);
+ if (change->segment==0) { /* first */
+ delete_point (orth, 0);
+ remove_handle (orth, 0);
+ setup_endpoint_handle (orth->handles[0], HANDLE_MOVE_STARTPOINT);
+ obj->position = orth->points[0];
+ } else { /* last */
+ delete_point (orth, orth->numpoints-1);
+ remove_handle (orth, change->segment);
+ setup_endpoint_handle (orth->handles[orth->numpoints-2],
+ HANDLE_MOVE_ENDPOINT);
+ }
+ if (change->cp) {
+ object_connect (obj, change->old_end_handle, change->cp);
+ }
+ break;
+ case TYPE_REMOVE_SEGMENT:
+ if (change->segment==0) { /* first */
+ add_point (orth, 0, &change->point);
+ insert_handle (orth, change->segment,
+ change->handle, FLIP_ORIENT (orth->orientation[0]) );
+ setup_midpoint_handle (orth->handles[1]);
+ obj->position = orth->points[0];
+ } else { /* last */
+ add_point (orth, orth->numpoints, &change->point);
+ insert_handle (orth, change->segment, change->handle,
+ FLIP_ORIENT (orth->orientation[orth->numpoints-3]) );
+ setup_midpoint_handle (orth->handles[orth->numpoints-3]);
+ }
+ if (change->cp) {
+ object_connect (obj, change->old_end_handle, change->cp);
+ }
+ break;
+ default:
+ g_return_if_reached ();
}
+
change->applied = 0;
- neworthconn_update_midpoints(orth); /* useless ? */
+
+ neworthconn_update_midpoints (orth); /* useless ? */
}
+
static ObjectChange *
endsegment_create_change(OrthConn *orth, enum change_type type,
int segment, Point *point,
@@ -1078,8 +1129,9 @@ midsegment_change_free(struct MidSegmentChange *change)
}
}
+
static void
-midsegment_change_apply(struct MidSegmentChange *change, DiaObject *obj)
+midsegment_change_apply (struct MidSegmentChange *change, DiaObject *obj)
{
OrthConn *orth = (OrthConn *)obj;
int seg;
@@ -1087,72 +1139,78 @@ midsegment_change_apply(struct MidSegmentChange *change, DiaObject *obj)
change->applied = 1;
switch (change->type) {
- case TYPE_ADD_SEGMENT:
- add_point(orth, change->segment+1, &change->points[1]);
- add_point(orth, change->segment+1, &change->points[0]);
- insert_handle(orth, change->segment+1, change->handles[1],
- orth->orientation[change->segment] );
- insert_handle(orth, change->segment+1, change->handles[0],
- FLIP_ORIENT(orth->orientation[change->segment]) );
- change->cplchange[0] =
- connpointline_add_point(orth->midpoints,&change->points[0]);
- change->cplchange[1] =
- connpointline_add_point(orth->midpoints,&change->points[1]);
- break;
- case TYPE_REMOVE_SEGMENT:
- seg = change->segment?change->segment:1;
- change->cplchange[0] =
- connpointline_remove_point(orth->midpoints,
- &orth->points[seg-1]);
- change->cplchange[1] =
- connpointline_remove_point(orth->midpoints,
- &orth->points[seg]);
- delete_point(orth, change->segment);
- remove_handle(orth, change->segment);
- delete_point(orth, change->segment);
- remove_handle(orth, change->segment);
- if (orth->orientation[change->segment]==HORIZONTAL) {
- orth->points[change->segment].x = change->points[0].x;
- } else {
- orth->points[change->segment].y = change->points[0].y;
- }
- break;
+ case TYPE_ADD_SEGMENT:
+ add_point (orth, change->segment+1, &change->points[1]);
+ add_point (orth, change->segment+1, &change->points[0]);
+ insert_handle (orth, change->segment+1, change->handles[1],
+ orth->orientation[change->segment] );
+ insert_handle (orth, change->segment+1, change->handles[0],
+ FLIP_ORIENT (orth->orientation[change->segment]) );
+ change->cplchange[0] =
+ connpointline_add_point (orth->midpoints, &change->points[0]);
+ change->cplchange[1] =
+ connpointline_add_point (orth->midpoints, &change->points[1]);
+ break;
+ case TYPE_REMOVE_SEGMENT:
+ seg = change->segment?change->segment:1;
+ change->cplchange[0] =
+ connpointline_remove_point (orth->midpoints,
+ &orth->points[seg-1]);
+ change->cplchange[1] =
+ connpointline_remove_point (orth->midpoints,
+ &orth->points[seg]);
+ delete_point (orth, change->segment);
+ remove_handle (orth, change->segment);
+ delete_point (orth, change->segment);
+ remove_handle (orth, change->segment);
+ if (orth->orientation[change->segment]==HORIZONTAL) {
+ orth->points[change->segment].x = change->points[0].x;
+ } else {
+ orth->points[change->segment].y = change->points[0].y;
+ }
+ break;
+ default:
+ g_return_if_reached ();
}
- neworthconn_update_midpoints(orth); /* useless ? */
+ neworthconn_update_midpoints (orth); /* useless ? */
}
+
static void
-midsegment_change_revert(struct MidSegmentChange *change, DiaObject *obj)
+midsegment_change_revert (struct MidSegmentChange *change, DiaObject *obj)
{
OrthConn *orth = (OrthConn *)obj;
- change->cplchange[0]->revert(change->cplchange[0],obj);
- change->cplchange[1]->revert(change->cplchange[1],obj);
+ change->cplchange[0]->revert (change->cplchange[0], obj);
+ change->cplchange[1]->revert (change->cplchange[1], obj);
switch (change->type) {
- case TYPE_ADD_SEGMENT:
- delete_point(orth, change->segment+1);
- remove_handle(orth, change->segment+1);
- delete_point(orth, change->segment+1);
- remove_handle(orth, change->segment+1);
- break;
- case TYPE_REMOVE_SEGMENT:
- if (orth->orientation[change->segment]==HORIZONTAL) {
- orth->points[change->segment].x = change->points[1].x;
- } else {
- orth->points[change->segment].y = change->points[1].y;
- }
- add_point(orth, change->segment, &change->points[1]);
- add_point(orth, change->segment, &change->points[0]);
- insert_handle(orth, change->segment, change->handles[1],
- orth->orientation[change->segment-1] );
- insert_handle(orth, change->segment, change->handles[0],
- FLIP_ORIENT(orth->orientation[change->segment-1]) );
- break;
+ case TYPE_ADD_SEGMENT:
+ delete_point (orth, change->segment+1);
+ remove_handle (orth, change->segment+1);
+ delete_point (orth, change->segment+1);
+ remove_handle (orth, change->segment+1);
+ break;
+ case TYPE_REMOVE_SEGMENT:
+ if (orth->orientation[change->segment]==HORIZONTAL) {
+ orth->points[change->segment].x = change->points[1].x;
+ } else {
+ orth->points[change->segment].y = change->points[1].y;
+ }
+ add_point (orth, change->segment, &change->points[1]);
+ add_point (orth, change->segment, &change->points[0]);
+ insert_handle (orth, change->segment, change->handles[1],
+ orth->orientation[change->segment-1] );
+ insert_handle (orth, change->segment, change->handles[0],
+ FLIP_ORIENT (orth->orientation[change->segment-1]) );
+ break;
+ default:
+ g_return_if_reached ();
}
change->applied = 0;
}
+
static ObjectChange *
midsegment_create_change(OrthConn *orth, enum change_type type,
int segment,
diff --git a/lib/path-math.c b/lib/path-math.c
index 9473cbfd..356fd84b 100644
--- a/lib/path-math.c
+++ b/lib/path-math.c
@@ -247,28 +247,35 @@ bezier_bezier_intersection (GArray *crossing,
}
}
+
static gboolean
_segment_from_path (BezierSegment *a, const GArray *p1, int i)
{
const BezPoint *abp0 = &g_array_index (p1, BezPoint, i-1);
const BezPoint *abp1 = &g_array_index (p1, BezPoint, i);
+
a->p0 = abp0->type == BEZ_CURVE_TO ? abp0->p3 : abp0->p1;
+
switch (abp1->type) {
- case BEZ_CURVE_TO :
- a->p1 = abp1->p1; a->p2 = abp1->p2; a->p3 = abp1->p3;
- break;
- case BEZ_LINE_TO :
- if (distance_point_point (&a->p0, &abp1->p1) < EPSILON)
- return FALSE; /* avoid a zero length line-to for confusion with move-to */
- a->p1 = a->p2 = a->p3 = abp1->p1;
- break;
- case BEZ_MOVE_TO :
- a->p0 = a->p1 = a->p2 = a->p3 = abp1->p1;
- break;
+ case BEZ_CURVE_TO :
+ a->p1 = abp1->p1; a->p2 = abp1->p2; a->p3 = abp1->p3;
+ break;
+ case BEZ_LINE_TO :
+ if (distance_point_point (&a->p0, &abp1->p1) < EPSILON)
+ return FALSE; /* avoid a zero length line-to for confusion with move-to */
+ a->p1 = a->p2 = a->p3 = abp1->p1;
+ break;
+ case BEZ_MOVE_TO :
+ a->p0 = a->p1 = a->p2 = a->p3 = abp1->p1;
+ break;
+ default:
+ g_return_val_if_reached (FALSE);
}
+
return TRUE;
}
+
static void
_curve_from_segment (BezPoint *bp, const BezierSegment *a, gboolean flip)
{
@@ -806,38 +813,40 @@ path_combine (const GArray *p1,
0 /* line width */, &g_array_index (p1, BezPoint, 0).p1) == 0;
switch (mode) {
- case PATH_UNION: /* Union and Exclusion just join the pathes */
- if (two_in_one)
- result = _path_copy (p1);
- else if (one_in_two) /* the bigger one */
- result = _path_copy (p2);
- else
- result = _make_path0 (one, NULL, two, NULL);
- break;
- case PATH_DIFFERENCE: /* Difference does it too, if p2 is inside p1 */
- if (two_in_one)
- result = _make_path0 (one, NULL, two, NULL);
- else if (one_in_two)
- result = NULL;
- else
- result = _path_copy (p1);
- break;
- case PATH_INTERSECTION:
- if (two_in_one)
- result = _path_copy (p2);
- else if (one_in_two)
- result = _path_copy (p1);
- else
- result = NULL; /* Intersection is just emtpy w/o crossing */
- break;
- case PATH_EXCLUSION:
- if (two_in_one)/* with two_in_one this is like difference */
- result = _make_path0 (one, NULL, two, NULL);
- else if (one_in_two)
- result = _make_path0 (two, NULL, one, NULL);
- else /* join */
- result = _make_path0 (one, NULL, two, NULL);
- break;
+ case PATH_UNION: /* Union and Exclusion just join the pathes */
+ if (two_in_one)
+ result = _path_copy (p1);
+ else if (one_in_two) /* the bigger one */
+ result = _path_copy (p2);
+ else
+ result = _make_path0 (one, NULL, two, NULL);
+ break;
+ case PATH_DIFFERENCE: /* Difference does it too, if p2 is inside p1 */
+ if (two_in_one)
+ result = _make_path0 (one, NULL, two, NULL);
+ else if (one_in_two)
+ result = NULL;
+ else
+ result = _path_copy (p1);
+ break;
+ case PATH_INTERSECTION:
+ if (two_in_one)
+ result = _path_copy (p2);
+ else if (one_in_two)
+ result = _path_copy (p1);
+ else
+ result = NULL; /* Intersection is just emtpy w/o crossing */
+ break;
+ case PATH_EXCLUSION:
+ if (two_in_one)/* with two_in_one this is like difference */
+ result = _make_path0 (one, NULL, two, NULL);
+ else if (one_in_two)
+ result = _make_path0 (two, NULL, one, NULL);
+ else /* join */
+ result = _make_path0 (one, NULL, two, NULL);
+ break;
+ default:
+ g_return_val_if_reached (NULL);
}
}
g_array_free (one, TRUE);
diff --git a/lib/poly_conn.c b/lib/poly_conn.c
index b640c949..9d002555 100644
--- a/lib/poly_conn.c
+++ b/lib/poly_conn.c
@@ -27,11 +27,13 @@
#include "poly_conn.h"
#include "diarenderer.h"
+
enum change_type {
TYPE_ADD_POINT,
TYPE_REMOVE_POINT
};
+
struct PointChange {
ObjectChange obj_change;
@@ -42,10 +44,11 @@ struct PointChange {
int pos;
Handle *handle; /* owning ref when not applied for ADD_POINT
- owning ref when applied for REMOVE_POINT */
+ owning ref when applied for REMOVE_POINT */
ConnectionPoint *connected_to; /* NULL if not connected */
};
+
static ObjectChange *
polyconn_create_change(PolyConn *poly, enum change_type type,
Point *point, int segment, Handle *handle,
@@ -80,32 +83,53 @@ static int get_handle_nr(PolyConn *poly, Handle *handle)
return -1;
}
+
ObjectChange *
-polyconn_move_handle(PolyConn *poly, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+polyconn_move_handle (PolyConn *poly,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
int handle_nr;
- handle_nr = get_handle_nr(poly, handle);
- switch(handle->id) {
- case HANDLE_MOVE_STARTPOINT:
- poly->points[0] = *to;
- break;
- case HANDLE_MOVE_ENDPOINT:
- poly->points[poly->numpoints-1] = *to;
- break;
- case HANDLE_CORNER:
- poly->points[handle_nr] = *to;
- break;
- default:
- g_warning("Internal error in polyconn_move_handle.\n");
- break;
+ handle_nr = get_handle_nr (poly, handle);
+ switch (handle->id) {
+ case HANDLE_MOVE_STARTPOINT:
+ poly->points[0] = *to;
+ break;
+ case HANDLE_MOVE_ENDPOINT:
+ poly->points[poly->numpoints-1] = *to;
+ break;
+ case HANDLE_CORNER:
+ poly->points[handle_nr] = *to;
+ break;
+ case HANDLE_RESIZE_N:
+ case HANDLE_RESIZE_NE:
+ case HANDLE_RESIZE_W:
+ case HANDLE_RESIZE_NW:
+ case HANDLE_RESIZE_E:
+ case HANDLE_RESIZE_SW:
+ case HANDLE_RESIZE_S:
+ case HANDLE_RESIZE_SE:
+ case HANDLE_CUSTOM2:
+ case HANDLE_CUSTOM3:
+ case HANDLE_CUSTOM4:
+ case HANDLE_CUSTOM5:
+ case HANDLE_CUSTOM6:
+ case HANDLE_CUSTOM7:
+ case HANDLE_CUSTOM8:
+ case HANDLE_CUSTOM9:
+ default:
+ g_warning ("Internal error in polyconn_move_handle.\n");
+ break;
}
return NULL;
}
+
ObjectChange*
polyconn_move(PolyConn *poly, Point *to)
{
@@ -493,49 +517,60 @@ polyconn_change_free(struct PointChange *change)
}
}
+
static void
-polyconn_change_apply(struct PointChange *change, DiaObject *obj)
+polyconn_change_apply (struct PointChange *change, DiaObject *obj)
{
change->applied = 1;
switch (change->type) {
- case TYPE_ADD_POINT:
- add_handle((PolyConn *)obj, change->pos, &change->point,
- change->handle);
- break;
- case TYPE_REMOVE_POINT:
- object_unconnect(obj, change->handle);
- remove_handle((PolyConn *)obj, change->pos);
- break;
+ case TYPE_ADD_POINT:
+ add_handle ((PolyConn *) obj, change->pos, &change->point,
+ change->handle);
+ break;
+ case TYPE_REMOVE_POINT:
+ object_unconnect (obj, change->handle);
+ remove_handle ((PolyConn *) obj, change->pos);
+ break;
+ default:
+ g_return_if_reached ();
}
}
+
static void
-polyconn_change_revert(struct PointChange *change, DiaObject *obj)
+polyconn_change_revert (struct PointChange *change, DiaObject *obj)
{
switch (change->type) {
- case TYPE_ADD_POINT:
- remove_handle((PolyConn *)obj, change->pos);
- break;
- case TYPE_REMOVE_POINT:
- add_handle((PolyConn *)obj, change->pos, &change->point,
- change->handle);
- if (change->connected_to) {
- object_connect(obj, change->handle, change->connected_to);
- }
-
- break;
+ case TYPE_ADD_POINT:
+ remove_handle ((PolyConn *) obj, change->pos);
+ break;
+ case TYPE_REMOVE_POINT:
+ add_handle ((PolyConn *) obj, change->pos, &change->point,
+ change->handle);
+
+ if (change->connected_to) {
+ object_connect (obj, change->handle, change->connected_to);
+ }
+
+ break;
+ default:
+ g_return_if_reached ();
}
change->applied = 0;
}
+
static ObjectChange *
-polyconn_create_change(PolyConn *poly, enum change_type type,
- Point *point, int pos, Handle *handle,
- ConnectionPoint *connected_to)
+polyconn_create_change (PolyConn *poly,
+ enum change_type type,
+ Point *point,
+ int pos,
+ Handle *handle,
+ ConnectionPoint *connected_to)
{
struct PointChange *change;
- change = g_new(struct PointChange, 1);
+ change = g_new0 (struct PointChange, 1);
change->obj_change.apply = (ObjectChangeApplyFunc) polyconn_change_apply;
change->obj_change.revert = (ObjectChangeRevertFunc) polyconn_change_revert;
@@ -548,5 +583,5 @@ polyconn_create_change(PolyConn *poly, enum change_type type,
change->handle = handle;
change->connected_to = connected_to;
- return (ObjectChange *)change;
+ return (ObjectChange *) change;
}
diff --git a/lib/polyshape.c b/lib/polyshape.c
index acaea5ca..158dc83d 100644
--- a/lib/polyshape.c
+++ b/lib/polyshape.c
@@ -564,46 +564,56 @@ polyshape_change_free(struct PointChange *change)
}
}
+
static void
-polyshape_change_apply(struct PointChange *change, DiaObject *obj)
+polyshape_change_apply (struct PointChange *change, DiaObject *obj)
{
change->applied = 1;
switch (change->type) {
- case TYPE_ADD_POINT:
- add_handle((PolyShape *)obj, change->pos, &change->point,
- change->handle, change->cp1, change->cp2);
- break;
- case TYPE_REMOVE_POINT:
- object_unconnect(obj, change->handle);
- remove_handle((PolyShape *)obj, change->pos);
- break;
+ case TYPE_ADD_POINT:
+ add_handle ((PolyShape *) obj, change->pos, &change->point,
+ change->handle, change->cp1, change->cp2);
+ break;
+ case TYPE_REMOVE_POINT:
+ object_unconnect (obj, change->handle);
+ remove_handle ((PolyShape *) obj, change->pos);
+ break;
+ default:
+ g_return_if_reached ();
}
}
+
static void
-polyshape_change_revert(struct PointChange *change, DiaObject *obj)
+polyshape_change_revert (struct PointChange *change, DiaObject *obj)
{
switch (change->type) {
- case TYPE_ADD_POINT:
- remove_handle((PolyShape *)obj, change->pos);
- break;
- case TYPE_REMOVE_POINT:
- add_handle((PolyShape *)obj, change->pos, &change->point,
- change->handle, change->cp1, change->cp2);
-
- break;
+ case TYPE_ADD_POINT:
+ remove_handle ((PolyShape *)obj, change->pos);
+ break;
+ case TYPE_REMOVE_POINT:
+ add_handle ((PolyShape *) obj, change->pos, &change->point,
+ change->handle, change->cp1, change->cp2);
+ break;
+ default:
+ g_return_if_reached ();
}
change->applied = 0;
}
+
static ObjectChange *
-polyshape_create_change(PolyShape *poly, enum change_type type,
- Point *point, int pos, Handle *handle,
- ConnectionPoint *cp1, ConnectionPoint *cp2)
+polyshape_create_change (PolyShape *poly,
+ enum change_type type,
+ Point *point,
+ int pos,
+ Handle *handle,
+ ConnectionPoint *cp1,
+ ConnectionPoint *cp2)
{
struct PointChange *change;
- change = g_new(struct PointChange, 1);
+ change = g_new0 (struct PointChange, 1);
change->obj_change.apply = (ObjectChangeApplyFunc) polyshape_change_apply;
change->obj_change.revert = (ObjectChangeRevertFunc) polyshape_change_revert;
@@ -617,5 +627,5 @@ polyshape_create_change(PolyShape *poly, enum change_type type,
change->cp1 = cp1;
change->cp2 = cp2;
- return (ObjectChange *)change;
+ return (ObjectChange *) change;
}
diff --git a/lib/prop_sdarray_widget.c b/lib/prop_sdarray_widget.c
index b6d34240..d66532da 100644
--- a/lib/prop_sdarray_widget.c
+++ b/lib/prop_sdarray_widget.c
@@ -645,38 +645,46 @@ _arrayprop_reset_widget(ArrayProperty *prop, WIDGET *widget)
}
}
+
static gboolean
_array_prop_adjust_len (ArrayProperty *prop, guint len)
{
- guint i, j;
+ guint i;
guint num_props = prop->ex_props->len;
- if (prop->records->len == len)
+ if (prop->records->len == len) {
return FALSE;
+ }
+
/* see also: pydia-property.c */
for (i = len; i < prop->records->len; ++i) {
- GPtrArray *record = g_ptr_array_index(prop->records, i);
- guint j;
- for (j = 0; j < num_props; j++) {
- Property *inner =g_ptr_array_index(record, j);
- inner->ops->free(inner);
+ GPtrArray *record = g_ptr_array_index (prop->records, i);
+
+ for (guint j = 0; j < num_props; j++) {
+ Property *inner = g_ptr_array_index (record, j);
+
+ inner->ops->free (inner);
}
- g_ptr_array_free(record, TRUE);
+ g_ptr_array_free (record, TRUE);
}
for (i = prop->records->len; i < len; ++i) {
- GPtrArray *record = g_ptr_array_new();
+ GPtrArray *record = g_ptr_array_new ();
- for (j = 0; j < num_props; j++) {
- Property *ex = g_ptr_array_index(prop->ex_props, j);
- Property *inner = ex->ops->copy(ex);
+ for (guint j = 0; j < num_props; j++) {
+ Property *ex = g_ptr_array_index (prop->ex_props, j);
+ Property *inner = ex->ops->copy (ex);
- g_ptr_array_add(record, inner);
+ g_ptr_array_add (record, inner);
}
- g_ptr_array_add(prop->records, record);
+
+ g_ptr_array_add (prop->records, record);
}
- g_ptr_array_set_size(prop->records, len);
+ g_ptr_array_set_size (prop->records, len);
+
return TRUE;
}
+
+
/*!
* \brief Transfer from the view model to the property
*/
diff --git a/lib/propdialogs.c b/lib/propdialogs.c
index bcc3f528..566b7dc2 100644
--- a/lib/propdialogs.c
+++ b/lib/propdialogs.c
@@ -189,10 +189,10 @@ property_signal_handler(GObject *obj,
prop_get_data_from_widgets(dialog);
for (tmp = list; tmp != NULL; tmp = tmp->next) {
- DiaObject *obj = (DiaObject*) tmp->data;
- dia_object_set_properties (obj, dialog->props);
- prop->event_handler (obj, prop);
- dia_object_get_properties (obj, dialog->props);
+ DiaObject *item = (DiaObject*) tmp->data;
+ dia_object_set_properties (item, dialog->props);
+ prop->event_handler (item, prop);
+ dia_object_get_properties (item, dialog->props);
}
for (j = 0; j < dialog->prop_widgets->len; j++) {
diff --git a/lib/renderer/diacairo-interactive.c b/lib/renderer/diacairo-interactive.c
index 0efd294f..22726432 100644
--- a/lib/renderer/diacairo-interactive.c
+++ b/lib/renderer/diacairo-interactive.c
@@ -550,6 +550,8 @@ dia_cairo_interactive_renderer_draw_object_highlighted (DiaInteractiveRenderer *
case DIA_HIGHLIGHT_NONE:
interactive->highlight_color = NULL;
break;
+ default:
+ g_return_if_reached ();
}
/* usually this method would need to draw the object twice,
@@ -593,8 +595,9 @@ dia_cairo_interactive_renderer_iface_init (DiaInteractiveRendererInterface* ifac
iface->set_selection = dia_cairo_interactive_renderer_set_selection;
}
+
DiaRenderer *
-dia_cairo_interactive_renderer_new ()
+dia_cairo_interactive_renderer_new (void)
{
return g_object_new (DIA_CAIRO_TYPE_INTERACTIVE_RENDERER, NULL);
}
diff --git a/lib/renderer/diacairo.c b/lib/renderer/diacairo.c
index c3093c83..25a4c531 100644
--- a/lib/renderer/diacairo.c
+++ b/lib/renderer/diacairo.c
@@ -64,21 +64,24 @@
#pragma message ("DiaCairo can EMF;)")
#endif
+
/* dia export funtion */
gboolean
-cairo_export_data(DiagramData *data, DiaContext *ctx,
- const gchar *filename, const gchar *diafilename,
- void* user_data)
+cairo_export_data (DiagramData *data,
+ DiaContext *ctx,
+ const gchar *filename,
+ const gchar *diafilename,
+ void *user_data)
{
DiaCairoRenderer *renderer;
FILE *file;
real width, height;
- OutputKind kind = (OutputKind)user_data;
+ OutputKind kind = (OutputKind) user_data;
/* the passed in filename is in GLib's filename encoding. On Linux everything
* should be fine in passing it to the C-runtime (or cairo). On win32 GLib's
* filename encdong is always utf-8, so another conversion is needed.
*/
- gchar *filename_crt = (gchar *)filename;
+ gchar *filename_crt = (gchar *) filename;
#if DIA_CAIRO_CAN_EMF
HDC hFileDC = NULL;
#endif
@@ -228,6 +231,11 @@ cairo_export_data(DiagramData *data, DiaContext *ctx,
renderer->scale *= 0.72; /* Works w/o for XP, but not on Vista/Win7 */
}
break;
+#else
+ case OUTPUT_EMF:
+ case OUTPUT_WMF:
+ case OUTPUT_CLIPBOARD:
+ g_return_val_if_reached (FALSE);
#endif
default :
/* quite arbitrary, but consistent with ../pixbuf ;-) */
diff --git a/lib/sheet.c b/lib/sheet.c
index 8859033d..494a91b4 100644
--- a/lib/sheet.c
+++ b/lib/sheet.c
@@ -350,7 +350,7 @@ load_register_sheet (const gchar *dirname,
g_assert (!stat_ret);
if (this_file.st_mtime > first_file.st_mtime) {
- gchar *tmp = g_strdup_printf ("%s [Copy of system]", name);
+ gchar *tmp2 = g_strdup_printf ("%s [Copy of system]", name);
message_notice (_("The system sheet '%s' appears to be more recent"
" than your custom\n"
"version and has been loaded as '%s' for this session."
@@ -358,9 +358,9 @@ load_register_sheet (const gchar *dirname,
"Move new objects (if any) from '%s' into your custom"
" sheet\n"
"or remove '%s', using the 'Sheets and Objects' dialog."),
- name, tmp, tmp, tmp);
+ name, tmp2, tmp2, tmp2);
xmlFree (name);
- name = tmp;
+ name = tmp2;
name_is_gmalloced = TRUE;
shadowing = sheetp->data; /* This copy-of-system sheet shadows
a user sheet */
diff --git a/lib/text.c b/lib/text.c
index fd2f493f..a60f74c7 100644
--- a/lib/text.c
+++ b/lib/text.c
@@ -433,30 +433,38 @@ text_set_color(Text *text, Color *col)
text->color = *col;
}
+
void
-text_set_alignment(Text *text, Alignment align)
+text_set_alignment (Text *text, Alignment align)
{
text->alignment = align;
}
+
void
-text_calc_boundingbox(Text *text, DiaRectangle *box)
+text_calc_boundingbox (Text *text, DiaRectangle *box)
{
- calc_width(text);
- calc_ascent_descent(text);
+ calc_width (text);
+ calc_ascent_descent (text);
+
+ if (box == NULL) {
+ return; /* For those who just want the text info
+ updated */
+ }
- if (box == NULL) return; /* For those who just want the text info
- updated */
box->left = text->position.x;
+
switch (text->alignment) {
- case ALIGN_LEFT:
- break;
- case ALIGN_CENTER:
- box->left -= text->max_width / 2.0;
- break;
- case ALIGN_RIGHT:
- box->left -= text->max_width;
- break;
+ case ALIGN_LEFT:
+ break;
+ case ALIGN_CENTER:
+ box->left -= text->max_width / 2.0;
+ break;
+ case ALIGN_RIGHT:
+ box->left -= text->max_width;
+ break;
+ default:
+ g_return_if_reached ();
}
box->right = box->left + text->max_width;
@@ -469,7 +477,7 @@ text_calc_boundingbox(Text *text, DiaRectangle *box)
box->bottom = box->top + (text->ascent+text->descent+text->height*(text->numlines-1));
#endif
if (text->focus.has_focus) {
- real height = text->ascent + text->descent;
+ double height = text->ascent + text->descent;
if (text->cursor_pos == 0) {
/* Half the cursor width */
box->left -= height/(CURSOR_HEIGHT_RATIO*2);
@@ -486,6 +494,7 @@ text_calc_boundingbox(Text *text, DiaRectangle *box)
}
}
+
char *
text_get_string_copy(const Text *text)
{
@@ -535,16 +544,18 @@ text_distance_from(Text *text, Point *point)
left = text->position.x;
switch (text->alignment) {
- case ALIGN_LEFT:
- break;
- case ALIGN_CENTER:
- left -= text_get_line_width(text, line) / 2.0;
- break;
- case ALIGN_RIGHT:
- left -= text_get_line_width(text, line);
- break;
+ case ALIGN_LEFT:
+ break;
+ case ALIGN_CENTER:
+ left -= text_get_line_width (text, line) / 2.0;
+ break;
+ case ALIGN_RIGHT:
+ left -= text_get_line_width (text, line);
+ break;
+ default:
+ g_return_val_if_reached (0.0);
}
- right = left + text_get_line_width(text, line);
+ right = left + text_get_line_width (text, line);
if (point->x <= left) {
dx = left - point->x;
@@ -589,6 +600,8 @@ text_draw (Text *text, DiaRenderer *renderer)
case ALIGN_RIGHT:
curs_x -= str_width_whole;
break;
+ default:
+ g_return_if_reached ();
}
p1.x = curs_x;
@@ -712,6 +725,8 @@ text_set_cursor (Text *text,
case ALIGN_RIGHT:
start_x -= str_width_whole;
break;
+ default:
+ g_return_if_reached ();
}
/* Do an ugly linear search for the cursor index:
@@ -1176,6 +1191,7 @@ text_set_attributes(Text *text, TextAttributes *attr)
text->alignment = attr->alignment;
}
+
static void
text_change_apply (struct TextObjectChange *change, DiaObject *obj)
{
@@ -1212,56 +1228,63 @@ text_change_apply (struct TextObjectChange *change, DiaObject *obj)
text->cursor_pos = 0;
text->cursor_row = 0;
break;
+ default:
+ g_return_if_reached ();
}
}
+
static void
text_change_revert(struct TextObjectChange *change, DiaObject *obj)
{
Text *text = change->text;
switch (change->type) {
- case TYPE_INSERT_CHAR:
- text->cursor_pos = change->pos;
- text->cursor_row = change->row;
- text_delete_forward(text);
- break;
- case TYPE_DELETE_BACKWARD:
- text->cursor_pos = change->pos;
- text->cursor_row = change->row;
- text_insert_char(text, change->ch);
- break;
- case TYPE_DELETE_FORWARD:
- text->cursor_pos = change->pos;
- text->cursor_row = change->row;
- text_insert_char(text, change->ch);
- text->cursor_pos = change->pos;
- text->cursor_row = change->row;
- break;
- case TYPE_SPLIT_ROW:
- text_join_lines(text, change->row);
- break;
- case TYPE_JOIN_ROW:
- text->cursor_pos = change->pos;
- text->cursor_row = change->row;
- text_split_line(text);
- break;
- case TYPE_DELETE_ALL:
- set_string(text, change->str);
- text->cursor_pos = change->pos;
- text->cursor_row = change->row;
- break;
+ case TYPE_INSERT_CHAR:
+ text->cursor_pos = change->pos;
+ text->cursor_row = change->row;
+ text_delete_forward(text);
+ break;
+ case TYPE_DELETE_BACKWARD:
+ text->cursor_pos = change->pos;
+ text->cursor_row = change->row;
+ text_insert_char(text, change->ch);
+ break;
+ case TYPE_DELETE_FORWARD:
+ text->cursor_pos = change->pos;
+ text->cursor_row = change->row;
+ text_insert_char(text, change->ch);
+ text->cursor_pos = change->pos;
+ text->cursor_row = change->row;
+ break;
+ case TYPE_SPLIT_ROW:
+ text_join_lines(text, change->row);
+ break;
+ case TYPE_JOIN_ROW:
+ text->cursor_pos = change->pos;
+ text->cursor_row = change->row;
+ text_split_line(text);
+ break;
+ case TYPE_DELETE_ALL:
+ set_string(text, change->str);
+ text->cursor_pos = change->pos;
+ text->cursor_row = change->row;
+ break;
+ default:
+ g_return_if_reached ();
}
/* restore previous position/size */
dia_object_set_properties (change->obj, change->props);
}
+
static void
-text_change_free(struct TextObjectChange *change)
+text_change_free (struct TextObjectChange *change)
{
- g_free(change->str);
- prop_list_free(change->props);
+ g_free (change->str);
+ prop_list_free (change->props);
}
+
/* If some object does not properly resize when undoing
* text changes consider adding some additional properties.
*
diff --git a/lib/textline.c b/lib/textline.c
index 5273daea..f94febdd 100644
--- a/lib/textline.c
+++ b/lib/textline.c
@@ -191,28 +191,33 @@ text_line_get_descent(const TextLine *text_line)
return text_line->descent;
}
-/*!
- * \brief Calculate TextLine adjustment for Alignment
+
+/**
+ * text_line_get_alignment_adjustment:
+ * @text_line: a line of text
+ * @alignment: how to align it.
+ *
+ * Calculate #TextLine adjustment for #Alignment
*
* Return the amount this text line would need to be shifted in order to
* implement the given alignment.
- * @param text_line a line of text
- * @param alignment how to align it.
- * @return The amount (in diagram lengths) to shift the x positiion of
+ *
+ * Returns: The amount (in diagram lengths) to shift the x positiion of
* rendering this such that it looks aligned when printed with x at the left.
* Always a positive number.
*/
real
-text_line_get_alignment_adjustment(TextLine *text_line, Alignment alignment)
+text_line_get_alignment_adjustment (TextLine *text_line, Alignment alignment)
{
text_line_cache_values(text_line);
switch (alignment) {
- case ALIGN_CENTER:
- return text_line->width / 2;
- case ALIGN_RIGHT:
- return text_line->width;
- default:
- return 0.0;
+ case ALIGN_CENTER:
+ return text_line->width / 2;
+ case ALIGN_RIGHT:
+ return text_line->width;
+ case ALIGN_LEFT:
+ default:
+ return 0.0;
}
}
diff --git a/objects/AADL/aadlbox.c b/objects/AADL/aadlbox.c
index d6492e68..c507a230 100644
--- a/objects/AADL/aadlbox.c
+++ b/objects/AADL/aadlbox.c
@@ -254,60 +254,68 @@ aadlbox_change_free(struct PointChange *change)
static void
-aadlbox_change_apply(struct PointChange *change, DiaObject *obj)
+aadlbox_change_apply (struct PointChange *change, DiaObject *obj)
{
change->applied = 1;
switch (change->type) {
- case TYPE_ADD_POINT:
- aadlbox_add_port((Aadlbox *)obj, &change->point, change->port);
- break;
- case TYPE_REMOVE_POINT:
- aadlbox_remove_port((Aadlbox *)obj, change->port);
- break;
- case TYPE_ADD_CONNECTION:
- aadlbox_add_connection((Aadlbox *)obj, &change->point, change->connection);
- break;
- case TYPE_REMOVE_CONNECTION:
- aadlbox_remove_connection((Aadlbox *)obj, change->connection);
- break;
+ case TYPE_ADD_POINT:
+ aadlbox_add_port ((Aadlbox *) obj, &change->point, change->port);
+ break;
+ case TYPE_REMOVE_POINT:
+ aadlbox_remove_port ((Aadlbox *) obj, change->port);
+ break;
+ case TYPE_ADD_CONNECTION:
+ aadlbox_add_connection ((Aadlbox *) obj,
+ &change->point, change->connection);
+ break;
+ case TYPE_REMOVE_CONNECTION:
+ aadlbox_remove_connection ((Aadlbox *) obj, change->connection);
+ break;
+ default:
+ g_return_if_reached ();
}
- aadlbox_update_data((Aadlbox *)obj);
+ aadlbox_update_data ((Aadlbox *) obj);
}
+
static void
-aadlbox_change_revert(struct PointChange *change, DiaObject *obj)
+aadlbox_change_revert (struct PointChange *change, DiaObject *obj)
{
-
switch (change->type) {
- case TYPE_ADD_POINT:
- aadlbox_remove_port((Aadlbox *)obj, change->port);
- break;
+ case TYPE_ADD_POINT:
+ aadlbox_remove_port((Aadlbox *)obj, change->port);
+ break;
- case TYPE_REMOVE_POINT:
- aadlbox_add_port((Aadlbox *)obj, &change->point, change->port);
- break;
+ case TYPE_REMOVE_POINT:
+ aadlbox_add_port((Aadlbox *)obj, &change->point, change->port);
+ break;
+
+ case TYPE_ADD_CONNECTION:
+ aadlbox_remove_connection((Aadlbox *)obj, change->connection);
+ break;
- case TYPE_ADD_CONNECTION:
- aadlbox_remove_connection((Aadlbox *)obj, change->connection);
- break;
+ case TYPE_REMOVE_CONNECTION: ;
+ aadlbox_add_connection((Aadlbox *)obj, &change->point, change->connection);
+ break;
- case TYPE_REMOVE_CONNECTION: ;
- aadlbox_add_connection((Aadlbox *)obj, &change->point, change->connection);
- break;
+ default:
+ g_return_if_reached ();
}
- aadlbox_update_data((Aadlbox *)obj);
+ aadlbox_update_data ((Aadlbox *) obj);
change->applied = 0;
}
static ObjectChange *
-aadlbox_create_change(Aadlbox *aadlbox, enum change_type type,
- Point *point, void *data)
+aadlbox_create_change (Aadlbox *aadlbox,
+ enum change_type type,
+ Point *point,
+ void *data)
{
struct PointChange *change;
- change = g_new0(struct PointChange, 1);
+ change = g_new0 (struct PointChange, 1);
change->obj_change.apply = (ObjectChangeApplyFunc) aadlbox_change_apply;
change->obj_change.revert = (ObjectChangeRevertFunc) aadlbox_change_revert;
@@ -318,17 +326,21 @@ aadlbox_create_change(Aadlbox *aadlbox, enum change_type type,
change->point = *point;
switch (type) {
+ case TYPE_ADD_POINT:
+ case TYPE_REMOVE_POINT:
+ change->port = (Aadlport *) data;
+ break;
- case TYPE_ADD_POINT: case TYPE_REMOVE_POINT:
- change->port = (Aadlport *) data;
- break;
+ case TYPE_ADD_CONNECTION:
+ case TYPE_REMOVE_CONNECTION:
+ change->connection = (ConnectionPoint *) data;
+ break;
- case TYPE_ADD_CONNECTION: case TYPE_REMOVE_CONNECTION:
- change->connection = (ConnectionPoint *) data;
- break;
+ default:
+ g_return_val_if_reached (NULL);
}
- return (ObjectChange *)change;
+ return (ObjectChange *) change;
}
diff --git a/objects/Database/reference.c b/objects/Database/reference.c
index 5ba1b926..7fc02966 100644
--- a/objects/Database/reference.c
+++ b/objects/Database/reference.c
@@ -437,21 +437,18 @@ update_desc_data (Point * desc_pos, Alignment * desc_align,
real dist = font_height/4.0 + line_width/2.0;
*desc_pos = *end_point;
- switch (orientation)
- {
+
+ switch (orientation) {
case HORIZONTAL:
/* for horizontal lines the label is above the line */
desc_pos->y -= dist;
- if (end_point->x <= nearest_point->x)
- {
- desc_pos->x += dist;
- *desc_align = ALIGN_LEFT;
- }
- else
- {
- desc_pos->x -= dist;
- *desc_align = ALIGN_RIGHT;
- }
+ if (end_point->x <= nearest_point->x) {
+ desc_pos->x += dist;
+ *desc_align = ALIGN_LEFT;
+ } else {
+ desc_pos->x -= dist;
+ *desc_align = ALIGN_RIGHT;
+ }
break;
case VERTICAL:
@@ -463,7 +460,10 @@ update_desc_data (Point * desc_pos, Alignment * desc_align,
else
desc_pos->y -= dist;
break;
- }
+
+ default:
+ g_return_if_reached ();
+ }
}
static void
diff --git a/objects/FS/flow-ortho.c b/objects/FS/flow-ortho.c
index 1dad63b3..d9fc7a8b 100644
--- a/objects/FS/flow-ortho.c
+++ b/objects/FS/flow-ortho.c
@@ -497,7 +497,7 @@ orthflow_copy(Orthflow *orthflow)
static void
-orthflow_update_data(Orthflow *orthflow)
+orthflow_update_data (Orthflow *orthflow)
{
OrthConn *orth = &orthflow->orth ;
DiaObject *obj = &orth->object;
@@ -505,30 +505,32 @@ orthflow_update_data(Orthflow *orthflow)
Color* color = &orthflow_color_signal;
switch (orthflow->type) {
- case ORTHFLOW_ENERGY:
- color = &orthflow_color_energy ;
- break ;
- case ORTHFLOW_MATERIAL:
- color = &orthflow_color_material ;
- break ;
- case ORTHFLOW_SIGNAL:
- color = &orthflow_color_signal ;
- break ;
+ case ORTHFLOW_ENERGY:
+ color = &orthflow_color_energy ;
+ break;
+ case ORTHFLOW_MATERIAL:
+ color = &orthflow_color_material ;
+ break;
+ case ORTHFLOW_SIGNAL:
+ color = &orthflow_color_signal ;
+ break;
+ default:
+ g_return_if_reached ();
}
- text_set_color( orthflow->text, color ) ;
+ text_set_color (orthflow->text, color) ;
- text_set_position( orthflow->text, &orthflow->textpos ) ;
+ text_set_position (orthflow->text, &orthflow->textpos) ;
orthflow->text_handle.pos = orthflow->textpos;
- orthconn_update_data(orth);
+ orthconn_update_data (orth);
obj->position = orth->points[0];
/* Boundingbox: */
- orthconn_update_boundingbox(orth);
+ orthconn_update_boundingbox (orth);
/* Add boundingbox for text: */
- text_calc_boundingbox(orthflow->text, &rect) ;
- rectangle_union(&obj->bounding_box, &rect);
+ text_calc_boundingbox (orthflow->text, &rect) ;
+ rectangle_union (&obj->bounding_box, &rect);
}
diff --git a/objects/FS/flow.c b/objects/FS/flow.c
index dae6c3fe..8deefbc2 100644
--- a/objects/FS/flow.c
+++ b/objects/FS/flow.c
@@ -337,6 +337,8 @@ flow_draw (Flow *flow, DiaRenderer *renderer)
case FLOW_ENERGY:
render_color = &flow_color_energy;
dia_renderer_set_linestyle (renderer, LINESTYLE_SOLID, 0.0);
+ default:
+ g_return_if_reached ();
}
p1 = endpoints[n1];
@@ -472,17 +474,19 @@ flow_update_data(Flow *flow)
obj->position = conn->endpoints[0];
switch (flow->type) {
- case FLOW_ENERGY:
- color = &flow_color_energy ;
- break ;
- case FLOW_MATERIAL:
- color = &flow_color_material ;
- break ;
- case FLOW_SIGNAL:
- color = &flow_color_signal ;
- break ;
+ case FLOW_ENERGY:
+ color = &flow_color_energy ;
+ break;
+ case FLOW_MATERIAL:
+ color = &flow_color_material ;
+ break;
+ case FLOW_SIGNAL:
+ color = &flow_color_signal ;
+ break;
+ default:
+ g_return_if_reached ();
}
- text_set_color( flow->text, color ) ;
+ text_set_color (flow->text, color);
flow->text->position = flow->textpos;
flow->text_handle.pos = flow->textpos;
diff --git a/objects/GRAFCET/action_text_draw.c b/objects/GRAFCET/action_text_draw.c
index a295f5cd..71e4afb4 100644
--- a/objects/GRAFCET/action_text_draw.c
+++ b/objects/GRAFCET/action_text_draw.c
@@ -89,6 +89,8 @@ action_text_draw (Text *text, DiaRenderer *renderer)
case ALIGN_RIGHT:
curs_x -= str_width_whole; /* undefined behaviour ! */
break;
+ default:
+ g_return_if_reached ();
}
p1.x = curs_x;
@@ -102,29 +104,33 @@ action_text_draw (Text *text, DiaRenderer *renderer)
}
}
+
void
-action_text_calc_boundingbox(Text *text, DiaRectangle *box)
+action_text_calc_boundingbox (Text *text, DiaRectangle *box)
{
real width;
int i;
box->left = text->position.x;
switch (text->alignment) {
- case ALIGN_LEFT:
- break;
- case ALIGN_CENTER:
- box->left -= text->max_width / 2.0;
- break;
- case ALIGN_RIGHT:
- box->left -= text->max_width;
- break;
+ case ALIGN_LEFT:
+ break;
+ case ALIGN_CENTER:
+ box->left -= text->max_width / 2.0;
+ break;
+ case ALIGN_RIGHT:
+ box->left -= text->max_width;
+ break;
+ default:
+ g_return_if_reached ();
}
width = 0;
- for (i=0; i<text->numlines; i++)
- width += text_get_line_width(text, i);
+ for (i = 0; i < text->numlines; i++) {
+ width += text_get_line_width (text, i);
+ }
- width += text->numlines * 2.0 * action_text_spacewidth(text);
+ width += text->numlines * 2.0 * action_text_spacewidth (text);
box->right = box->left + width;
@@ -133,10 +139,9 @@ action_text_calc_boundingbox(Text *text, DiaRectangle *box)
box->bottom = box->top + text->height;
}
+
real
-action_text_spacewidth(Text *text)
+action_text_spacewidth (Text *text)
{
return .2 * text->height;
}
-
-
diff --git a/objects/Istar/link.c b/objects/Istar/link.c
index edffbaef..4f1b5936 100644
--- a/objects/Istar/link.c
+++ b/objects/Istar/link.c
@@ -499,6 +499,8 @@ link_draw (Link *link, DiaRenderer *renderer)
case UNSPECIFIED: /* use above defaults */
annot = g_strdup("");
break;
+ default:
+ g_return_if_reached ();
}
/** drawing line **/
diff --git a/objects/KAOS/metaandorrel.c b/objects/KAOS/metaandorrel.c
index 113ba6a8..905fc6ad 100644
--- a/objects/KAOS/metaandorrel.c
+++ b/objects/KAOS/metaandorrel.c
@@ -417,6 +417,7 @@ draw_agent_icon (Maor *maor,
dia_renderer_draw_line (renderer,&p1,&p2,&MAOR_FG_COLOR);
}
+
/* drawing here -- TBD inverse flow ?? */
static void
maor_draw (Maor *maor, DiaRenderer *renderer)
@@ -476,23 +477,34 @@ maor_draw (Maor *maor, DiaRenderer *renderer)
dia_renderer_draw_polygon (renderer,pl,7,&MAOR_BG_COLOR,&MAOR_FG_COLOR);
draw_agent_icon (maor,MAOR_REF_WIDTH,MAOR_REF_HEIGHT,renderer);
break;
+
+ default:
+ g_return_if_reached ();
}
/** writing text on arrow (maybe not a good idea) **/
- dia_renderer_set_font (renderer,maor_font,MAOR_FONTHEIGHT);
-
- if (mname && strlen (mname) != 0)
- dia_renderer_draw_string (renderer,mname,&maor->text_pos, ALIGN_CENTER,&color_black);
+ dia_renderer_set_font (renderer, maor_font, MAOR_FONTHEIGHT);
+
+ if (mname && strlen (mname) != 0) {
+ dia_renderer_draw_string (renderer,
+ mname,
+ &maor->text_pos,
+ ALIGN_CENTER,
+ &color_black);
+ }
- if (mname) g_free(mname);
+ if (mname) {
+ g_free (mname);
+ }
}
+
/* creation here */
static DiaObject *
-maor_create(Point *startpoint,
- void *user_data,
- Handle **handle1,
- Handle **handle2)
+maor_create (Point *startpoint,
+ void *user_data,
+ Handle **handle1,
+ Handle **handle2)
{
Maor *maor;
Connection *conn;
@@ -501,10 +513,10 @@ maor_create(Point *startpoint,
if (maor_font == NULL) {
maor_font =
- dia_font_new_from_style(DIA_FONT_SANS, MAOR_FONTHEIGHT);
+ dia_font_new_from_style (DIA_FONT_SANS, MAOR_FONTHEIGHT);
}
- maor = g_malloc0(sizeof(Maor));
+ maor = g_malloc0 (sizeof (Maor));
conn = &maor->connection;
conn->endpoints[0] = *startpoint;
diff --git a/objects/KAOS/metabinrel.c b/objects/KAOS/metabinrel.c
index 13d46d77..f396f291 100644
--- a/objects/KAOS/metabinrel.c
+++ b/objects/KAOS/metabinrel.c
@@ -331,17 +331,40 @@ compute_line(Point* p1, Point* p2, Point *pm, BezPoint* line) {
line[2].p2.y=p2->y-dy2*OFF;
}
-static gchar* compute_text(Mbr *mbr) {
+
+static gchar *
+compute_text (Mbr *mbr)
+{
gchar* annot;
switch (mbr->type) {
- case MBR_RESP: annot = g_strdup("Resp"); break;
- case MBR_MONITORS: annot = g_strdup("Mon"); break;
- case MBR_CONTROLS: annot = g_strdup("Ctrl"); break;
- case MBR_CAPABLEOF: annot = g_strdup("CapOf"); break;
- case MBR_PERFORMS: annot = g_strdup("Perf"); break;
- case MBR_INPUT: annot = g_strdup("In"); break;
- case MBR_OUTPUT: annot = g_strdup("Out"); break;
- default: annot = g_strdup("");
+ case MBR_RESP:
+ annot = g_strdup ("Resp");
+ break;
+ case MBR_MONITORS:
+ annot = g_strdup ("Mon");
+ break;
+ case MBR_CONTROLS:
+ annot = g_strdup ("Ctrl");
+ break;
+ case MBR_CAPABLEOF:
+ annot = g_strdup ("CapOf");
+ break;
+ case MBR_PERFORMS:
+ annot = g_strdup ("Perf");
+ break;
+ case MBR_INPUT:
+ annot = g_strdup ("In");
+ break;
+ case MBR_OUTPUT:
+ annot = g_strdup ("Out");
+ break;
+ // TODO: Are we sure these are ""
+ case MBR_CONTRIBUTES:
+ case MBR_OBSTRUCTS:
+ case MBR_CONFLICTS:
+ default:
+ annot = g_strdup ("");
+ break;
}
return annot;
}
diff --git a/objects/Misc/tree.c b/objects/Misc/tree.c
index bb9a91bc..1c144de3 100644
--- a/objects/Misc/tree.c
+++ b/objects/Misc/tree.c
@@ -701,40 +701,48 @@ tree_change_free(struct PointChange *change)
}
}
+
static void
-tree_change_apply(struct PointChange *change, DiaObject *obj)
+tree_change_apply (struct PointChange *change, DiaObject *obj)
{
change->applied = 1;
+
switch (change->type) {
- case TYPE_ADD_POINT:
- tree_add_handle((Tree *)obj, &change->point, change->handle);
- break;
- case TYPE_REMOVE_POINT:
- object_unconnect(obj, change->handle);
- tree_remove_handle((Tree *)obj, change->handle);
- break;
+ case TYPE_ADD_POINT:
+ tree_add_handle ((Tree *) obj, &change->point, change->handle);
+ break;
+ case TYPE_REMOVE_POINT:
+ object_unconnect (obj, change->handle);
+ tree_remove_handle ((Tree *) obj, change->handle);
+ break;
+ default:
+ g_return_if_reached ();
}
- tree_update_data((Tree *)obj);
+ tree_update_data ((Tree *) obj);
}
+
static void
-tree_change_revert(struct PointChange *change, DiaObject *obj)
+tree_change_revert (struct PointChange *change, DiaObject *obj)
{
switch (change->type) {
- case TYPE_ADD_POINT:
- tree_remove_handle((Tree *)obj, change->handle);
- break;
- case TYPE_REMOVE_POINT:
- tree_add_handle((Tree *)obj, &change->point, change->handle);
- if (change->connected_to) {
- object_connect(obj, change->handle, change->connected_to);
- }
- break;
+ case TYPE_ADD_POINT:
+ tree_remove_handle ((Tree *) obj, change->handle);
+ break;
+ case TYPE_REMOVE_POINT:
+ tree_add_handle ((Tree *) obj, &change->point, change->handle);
+ if (change->connected_to) {
+ object_connect (obj, change->handle, change->connected_to);
+ }
+ break;
+ default:
+ g_return_if_reached ();
}
- tree_update_data((Tree *)obj);
+ tree_update_data ((Tree *) obj);
change->applied = 0;
}
+
static ObjectChange *
tree_create_change(Tree *tree, enum change_type type,
Point *point, Handle *handle,
diff --git a/objects/SADT/arrow.c b/objects/SADT/arrow.c
index 30b9ed1c..57d4ccd9 100644
--- a/objects/SADT/arrow.c
+++ b/objects/SADT/arrow.c
@@ -234,6 +234,7 @@ static void draw_tunnel(DiaRenderer *renderer,
#define GBASE .45
#define GMULT .55
+
static void
sadtarrow_draw (Sadtarrow *sadtarrow, DiaRenderer *renderer)
{
@@ -286,10 +287,12 @@ sadtarrow_draw (Sadtarrow *sadtarrow, DiaRenderer *renderer)
break;
case SADT_ARROW_NORMAL:
case SADT_ARROW_DISABLED:
+ default:
break;
}
}
+
static void
draw_dot (DiaRenderer *renderer,
Point *end,
@@ -425,26 +428,28 @@ sadtarrow_update_data(Sadtarrow *sadtarrow)
extra->end_trans = MAX(ARROW_LINE_WIDTH/2.0,ARROW_HEAD_WIDTH/2.0);
switch(sadtarrow->style) {
- case SADT_ARROW_IMPORTED:
- extra->start_trans = MAX(ARROW_LINE_WIDTH/2.0,
- ARROW_PARENS_WOFFSET + ARROW_PARENS_LENGTH/3);
- break;
- case SADT_ARROW_IMPLIED:
- extra->end_trans = MAX(ARROW_LINE_WIDTH/2.0,
- MAX(ARROW_PARENS_WOFFSET + ARROW_PARENS_LENGTH/3,
- ARROW_HEAD_WIDTH/2.0));
- break;
- case SADT_ARROW_DOTTED:
- extra->start_long = extra->end_long;
- extra->end_trans =
- extra->start_trans = MAX(MAX(MAX(ARROW_HEAD_WIDTH,ARROW_HEAD_LENGTH),
- ARROW_LINE_WIDTH/2.0),
- ARROW_DOT_WOFFSET+ARROW_DOT_RADIUS);
- break;
- default:
- break;
+ case SADT_ARROW_IMPORTED:
+ extra->start_trans = MAX(ARROW_LINE_WIDTH/2.0,
+ ARROW_PARENS_WOFFSET + ARROW_PARENS_LENGTH/3);
+ break;
+ case SADT_ARROW_IMPLIED:
+ extra->end_trans = MAX(ARROW_LINE_WIDTH/2.0,
+ MAX(ARROW_PARENS_WOFFSET + ARROW_PARENS_LENGTH/3,
+ ARROW_HEAD_WIDTH/2.0));
+ break;
+ case SADT_ARROW_DOTTED:
+ extra->start_long = extra->end_long;
+ extra->end_trans =
+ extra->start_trans = MAX(MAX(MAX(ARROW_HEAD_WIDTH,ARROW_HEAD_LENGTH),
+ ARROW_LINE_WIDTH/2.0),
+ ARROW_DOT_WOFFSET+ARROW_DOT_RADIUS);
+ break;
+ case SADT_ARROW_NORMAL:
+ case SADT_ARROW_DISABLED:
+ default:
+ break;
}
- orthconn_update_boundingbox(orth);
+ orthconn_update_boundingbox (orth);
}
static ObjectChange *
diff --git a/objects/UML/classicon.c b/objects/UML/classicon.c
index 5ae0e812..6d837598 100644
--- a/objects/UML/classicon.c
+++ b/objects/UML/classicon.c
@@ -310,6 +310,8 @@ classicon_draw (Classicon *icon, DiaRenderer *renderer)
&p1, &p2,
&icon->line_color);
break;
+ default:
+ g_return_if_reached ();
}
text_draw (icon->text, renderer);
diff --git a/objects/UML/dependency.c b/objects/UML/dependency.c
index 0745f6f3..6534c505 100644
--- a/objects/UML/dependency.c
+++ b/objects/UML/dependency.c
@@ -318,25 +318,27 @@ dependency_update_data(Dependency *dep)
}
switch (dep->orth.orientation[i]) {
- case HORIZONTAL:
- dep->text_align = ALIGN_CENTER;
- dep->text_pos.x = 0.5*(points[i].x+points[i+1].x);
- dep->text_pos.y = points[i].y;
- if (dep->name)
- dep->text_pos.y -= dia_font_descent(dep->name,
- dep->font,
- dep->font_height);
- break;
- case VERTICAL:
- dep->text_align = ALIGN_LEFT;
- dep->text_pos.x = points[i].x + 0.1;
- dep->text_pos.y =
- 0.5*(points[i].y+points[i+1].y);
- if (dep->name)
- dep->text_pos.y -= dia_font_descent(dep->name,
- dep->font,
- dep->font_height);
- break;
+ case HORIZONTAL:
+ dep->text_align = ALIGN_CENTER;
+ dep->text_pos.x = 0.5*(points[i].x+points[i+1].x);
+ dep->text_pos.y = points[i].y;
+ if (dep->name)
+ dep->text_pos.y -= dia_font_descent (dep->name,
+ dep->font,
+ dep->font_height);
+ break;
+ case VERTICAL:
+ dep->text_align = ALIGN_LEFT;
+ dep->text_pos.x = points[i].x + 0.1;
+ dep->text_pos.y =
+ 0.5*(points[i].y+points[i+1].y);
+ if (dep->name)
+ dep->text_pos.y -= dia_font_descent (dep->name,
+ dep->font,
+ dep->font_height);
+ break;
+ default:
+ g_return_if_reached ();
}
/* Add the text recangle to the bounding box: */
diff --git a/objects/UML/generalization.c b/objects/UML/generalization.c
index 51f6ccec..31193ec0 100644
--- a/objects/UML/generalization.c
+++ b/objects/UML/generalization.c
@@ -330,16 +330,18 @@ generalization_update_data(Generalization *genlz)
}
switch (genlz->orth.orientation[i]) {
- case HORIZONTAL:
- genlz->text_align = ALIGN_CENTER;
- genlz->text_pos.x = 0.5*(points[i].x+points[i+1].x);
- genlz->text_pos.y = points[i].y - descent;
- break;
- case VERTICAL:
- genlz->text_align = ALIGN_LEFT;
- genlz->text_pos.x = points[i].x + 0.1;
- genlz->text_pos.y = 0.5*(points[i].y+points[i+1].y) - descent;
- break;
+ case HORIZONTAL:
+ genlz->text_align = ALIGN_CENTER;
+ genlz->text_pos.x = 0.5*(points[i].x+points[i+1].x);
+ genlz->text_pos.y = points[i].y - descent;
+ break;
+ case VERTICAL:
+ genlz->text_align = ALIGN_LEFT;
+ genlz->text_pos.x = points[i].x + 0.1;
+ genlz->text_pos.y = 0.5*(points[i].y+points[i+1].y) - descent;
+ break;
+ default:
+ g_return_if_reached ();
}
/* Add the text recangle to the bounding box: */
diff --git a/objects/UML/lifeline.c b/objects/UML/lifeline.c
index be2d9078..9f73e0d6 100644
--- a/objects/UML/lifeline.c
+++ b/objects/UML/lifeline.c
@@ -470,8 +470,9 @@ lifeline_change_free(LifelineChange *change)
}
}
+
static ObjectChange *
-lifeline_create_change(Lifeline *lifeline, LifelineChangeType changetype, Point *clicked)
+lifeline_create_change (Lifeline *lifeline, LifelineChangeType changetype, Point *clicked)
{
LifelineChange *vc;
@@ -481,8 +482,7 @@ lifeline_create_change(Lifeline *lifeline, LifelineChangeType changetype, Point
vc->obj_change.free = (ObjectChangeFreeFunc)lifeline_change_free;
vc->type = changetype;
- switch( vc->type )
- {
+ switch (vc->type) {
case LIFELINE_CHANGE_ADD:
if (lifeline_point_above_mid (lifeline, clicked)) {
vc->east = connpointline_add_point(lifeline->northeast,clicked);
@@ -513,11 +513,14 @@ lifeline_create_change(Lifeline *lifeline, LifelineChangeType changetype, Point
vc->cp_distance_change = LIFELINE_CP_DEFAULT_DISTANCE*2 - lifeline->cp_distance;
lifeline->cp_distance += vc->cp_distance_change;
break;
+ default:
+ g_return_val_if_reached (NULL);
}
- lifeline_update_data(lifeline);
- return (ObjectChange *)vc;
+ lifeline_update_data (lifeline);
+ return (ObjectChange *) vc;
}
+
static ObjectChange *
lifeline_cp_callback(DiaObject *obj, Point *clicked, gpointer data)
{
diff --git a/objects/UML/realizes.c b/objects/UML/realizes.c
index e584ee9c..3703605e 100644
--- a/objects/UML/realizes.c
+++ b/objects/UML/realizes.c
@@ -313,22 +313,24 @@ realizes_update_data(Realizes *realize)
}
switch (realize->orth.orientation[i]) {
- case HORIZONTAL:
- realize->text_align = ALIGN_CENTER;
- realize->text_pos.x = 0.5*(points[i].x+points[i+1].x);
- realize->text_pos.y = points[i].y;
- if (realize->name)
- realize->text_pos.y -=
- dia_font_descent(realize->name,realize->font, realize->font_height);
- break;
- case VERTICAL:
- realize->text_align = ALIGN_LEFT;
- realize->text_pos.x = points[i].x + 0.1;
- realize->text_pos.y = 0.5*(points[i].y+points[i+1].y);
- if (realize->name)
- realize->text_pos.y -=
- dia_font_descent(realize->name, realize->font, realize->font_height);
- break;
+ case HORIZONTAL:
+ realize->text_align = ALIGN_CENTER;
+ realize->text_pos.x = 0.5*(points[i].x+points[i+1].x);
+ realize->text_pos.y = points[i].y;
+ if (realize->name)
+ realize->text_pos.y -=
+ dia_font_descent (realize->name,realize->font, realize->font_height);
+ break;
+ case VERTICAL:
+ realize->text_align = ALIGN_LEFT;
+ realize->text_pos.x = points[i].x + 0.1;
+ realize->text_pos.y = 0.5*(points[i].y+points[i+1].y);
+ if (realize->name)
+ realize->text_pos.y -=
+ dia_font_descent (realize->name, realize->font, realize->font_height);
+ break;
+ default:
+ g_return_if_reached ();
}
/* Add the text recangle to the bounding box: */
diff --git a/objects/UML/state.c b/objects/UML/state.c
index 7ca103fc..c886003f 100644
--- a/objects/UML/state.c
+++ b/objects/UML/state.c
@@ -464,44 +464,54 @@ state_create(Point *startpoint,
return &state->element.object;
}
+
static void
-state_destroy(State *state)
+state_destroy (State *state)
{
g_free (state->entry_action);
g_free (state->do_action);
g_free (state->exit_action);
- text_destroy(state->text);
+ text_destroy (state->text);
- element_destroy(&state->element);
+ element_destroy (&state->element);
}
+
static DiaObject *
-state_load(ObjectNode obj_node, int version,DiaContext *ctx)
+state_load (ObjectNode obj_node, int version, DiaContext *ctx)
{
- State *obj = (State*)object_load_using_properties(&state_type,
- obj_node,version,ctx);
+ State *obj = (State*) object_load_using_properties (&state_type,
+ obj_node,
+ version,
+ ctx);
if (obj->state_type != STATE_NORMAL) {
/* Would like to create a state_term instead, but making the connections
* is a pain */
- message_warning(_("This diagram uses the State object for initial/final states.\nThis option will go
away in future versions.\nPlease use the Initial/Final State object instead.\n"));
+ message_warning (_("This diagram uses the State object for initial/final "
+ "states.\nThis option will go away in future versions."
+ "\nPlease use the Initial/Final State object "
+ "instead.\n"));
}
- return (DiaObject *)obj;
+
+ return (DiaObject *) obj;
}
+
static void
-state_calc_action_text_pos(State* state, StateAction action, Point* pos)
+state_calc_action_text_pos (State* state, StateAction action, Point* pos)
{
- int entry_action_valid = state->entry_action && strlen(state->entry_action) != 0;
- int do_action_valid = state->do_action && strlen(state->do_action) != 0;
+ int entry_action_valid = state->entry_action &&
+ strlen (state->entry_action) != 0;
+ int do_action_valid = state->do_action &&
+ strlen (state->do_action) != 0;
real first_action_y = state->text->numlines*state->text->height +
state->text->position.y;
pos->x = state->element.corner.x + STATE_MARGIN_X;
- switch (action)
- {
+ switch (action) {
case ENTRY_ACTION:
pos->y = first_action_y;
break;
@@ -516,28 +526,32 @@ state_calc_action_text_pos(State* state, StateAction action, Point* pos)
if (entry_action_valid) pos->y += state->text->height;
if (do_action_valid) pos->y += state->text->height;
break;
+
+ default:
+ g_return_if_reached ();
}
}
static gchar*
-state_get_action_text(State* state, StateAction action)
+state_get_action_text (State* state, StateAction action)
{
- switch (action)
- {
+ switch (action) {
case ENTRY_ACTION:
- return g_strdup_printf("entry/ %s", state->entry_action);
+ return g_strdup_printf ("entry/ %s", state->entry_action);
break;
case DO_ACTION:
- return g_strdup_printf("do/ %s", state->do_action);
+ return g_strdup_printf ("do/ %s", state->do_action);
break;
case EXIT_ACTION:
- return g_strdup_printf("exit/ %s", state->exit_action);
+ return g_strdup_printf ("exit/ %s", state->exit_action);
break;
+
+ default:
+ g_return_val_if_reached (NULL);
}
+
return NULL;
}
-
-
diff --git a/objects/UML/umloperation.c b/objects/UML/umloperation.c
index b643199c..39782435 100644
--- a/objects/UML/umloperation.c
+++ b/objects/UML/umloperation.c
@@ -322,19 +322,19 @@ uml_get_operation_string (UMLOperation *operation)
param = (UMLParameter *) list->data;
list = g_list_next (list);
- switch(param->kind)
- {
- case UML_UNDEF_KIND:
- break;
+ switch (param->kind) {
case UML_IN:
- len += 3;
- break;
+ len += 3;
+ break;
case UML_OUT:
- len += 4;
- break;
+ len += 4;
+ break;
case UML_INOUT:
- len += 6;
- break;
+ len += 6;
+ break;
+ case UML_UNDEF_KIND:
+ default:
+ break;
}
len += (param->name ? strlen (param->name) : 0);
if (param->type != NULL) {
@@ -381,20 +381,20 @@ uml_get_operation_string (UMLOperation *operation)
param = (UMLParameter *) list->data;
list = g_list_next (list);
- switch(param->kind)
- {
- case UML_UNDEF_KIND:
- break;
+ switch (param->kind) {
case UML_IN:
- strcat (str, "in ");
- break;
+ strcat (str, "in ");
+ break;
case UML_OUT:
- strcat (str, "out ");
- break;
+ strcat (str, "out ");
+ break;
case UML_INOUT:
- strcat (str, "inout ");
- break;
- }
+ strcat (str, "inout ");
+ break;
+ case UML_UNDEF_KIND:
+ default:
+ break;
+ }
strcat (str, param->name ? param->name : "");
if (param->type != NULL) {
diff --git a/objects/UML/umlparameter.c b/objects/UML/umlparameter.c
index a65bdfa1..f9e7a2f2 100644
--- a/objects/UML/umlparameter.c
+++ b/objects/UML/umlparameter.c
@@ -165,6 +165,8 @@ uml_parameter_get_string (UMLParameter *param)
case UML_INOUT:
len += 6;
break;
+ default:
+ g_return_val_if_reached (NULL);
}
/* Generate string: */
@@ -184,6 +186,8 @@ uml_parameter_get_string (UMLParameter *param)
case UML_INOUT:
strcat (str, "inout ");
break;
+ default:
+ g_return_val_if_reached (NULL);
}
strcat (str, param->name);
diff --git a/objects/custom/shape_info.c b/objects/custom/shape_info.c
index ca7e3eb3..da46eca1 100644
--- a/objects/custom/shape_info.c
+++ b/objects/custom/shape_info.c
@@ -596,8 +596,9 @@ check_point(ShapeInfo *info, Point *pt)
info->shape_bounds.bottom = pt->y;
}
+
static void
-update_bounds(ShapeInfo *info)
+update_bounds (ShapeInfo *info)
{
GList *tmp;
Point pt;
@@ -606,67 +607,72 @@ update_bounds(ShapeInfo *info)
int i;
switch (el->type) {
- case GE_SUBSHAPE:
- /* subshapes are not supposed to have an influence on bounds */
- break;
- case GE_LINE:
- check_point(info, &(el->line.p1));
- check_point(info, &(el->line.p2));
- break;
- case GE_POLYLINE:
- for (i = 0; i < el->polyline.npoints; i++)
- check_point(info, &(el->polyline.points[i]));
- break;
- case GE_POLYGON:
- for (i = 0; i < el->polygon.npoints; i++)
- check_point(info, &(el->polygon.points[i]));
- break;
- case GE_RECT:
- check_point(info, &(el->rect.corner1));
- check_point(info, &(el->rect.corner2));
- /* el->rect.corner_radius has no infulence on the bounding rectangle */
- break;
- case GE_TEXT:
- check_point(info, &(el->text.anchor));
- break;
- case GE_ELLIPSE:
- pt = el->ellipse.center;
- pt.x -= el->ellipse.width / 2.0;
- pt.y -= el->ellipse.height / 2.0;
- check_point(info, &pt);
- pt.x += el->ellipse.width;
- pt.y += el->ellipse.height;
- check_point(info, &pt);
- break;
- case GE_PATH:
- case GE_SHAPE:
+ case GE_SUBSHAPE:
+ /* subshapes are not supposed to have an influence on bounds */
+ break;
+ case GE_LINE:
+ check_point (info, &(el->line.p1));
+ check_point (info, &(el->line.p2));
+ break;
+ case GE_POLYLINE:
+ for (i = 0; i < el->polyline.npoints; i++) {
+ check_point (info, &(el->polyline.points[i]));
+ }
+ break;
+ case GE_POLYGON:
+ for (i = 0; i < el->polygon.npoints; i++) {
+ check_point (info, &(el->polygon.points[i]));
+ }
+ break;
+ case GE_RECT:
+ check_point (info, &(el->rect.corner1));
+ check_point (info, &(el->rect.corner2));
+ /* el->rect.corner_radius has no infulence on the bounding rectangle */
+ break;
+ case GE_TEXT:
+ check_point (info, &(el->text.anchor));
+ break;
+ case GE_ELLIPSE:
+ pt = el->ellipse.center;
+ pt.x -= el->ellipse.width / 2.0;
+ pt.y -= el->ellipse.height / 2.0;
+ check_point (info, &pt);
+ pt.x += el->ellipse.width;
+ pt.y += el->ellipse.height;
+ check_point (info, &pt);
+ break;
+ case GE_PATH:
+ case GE_SHAPE:
#if 1
- {
- DiaRectangle bbox;
- PolyBBExtras extra = { 0, };
+ {
+ DiaRectangle bbox;
+ PolyBBExtras extra = { 0, };
- polybezier_bbox (&el->path.points[0],el->path.npoints,
- &extra,el->type == GE_SHAPE,&bbox);
- rectangle_union (&info->shape_bounds, &bbox);
- }
+ polybezier_bbox (&el->path.points[0],el->path.npoints,
+ &extra,el->type == GE_SHAPE,&bbox);
+ rectangle_union (&info->shape_bounds, &bbox);
+ }
#else
- for (i = 0; i < el->path.npoints; i++)
- switch (el->path.points[i].type) {
- case BEZ_CURVE_TO:
- check_point(info, &el->path.points[i].p3);
- check_point(info, &el->path.points[i].p2);
- case BEZ_MOVE_TO:
- case BEZ_LINE_TO:
- check_point(info, &el->path.points[i].p1);
- }
+ for (i = 0; i < el->path.npoints; i++) {
+ switch (el->path.points[i].type) {
+ case BEZ_CURVE_TO:
+ check_point(info, &el->path.points[i].p3);
+ check_point(info, &el->path.points[i].p2);
+ case BEZ_MOVE_TO:
+ case BEZ_LINE_TO:
+ check_point(info, &el->path.points[i].p1);
+ }
+ }
#endif
- break;
- case GE_IMAGE:
- check_point(info, &(el->image.topleft));
- pt.x = el->image.topleft.x + el->image.width;
- pt.y = el->image.topleft.y + el->image.height;
- check_point(info, &pt);
- break;
+ break;
+ case GE_IMAGE:
+ check_point (info, &(el->image.topleft));
+ pt.x = el->image.topleft.x + el->image.width;
+ pt.y = el->image.topleft.y + el->image.height;
+ check_point (info, &pt);
+ break;
+ default:
+ g_return_if_reached ();
}
}
@@ -682,16 +688,17 @@ update_bounds(ShapeInfo *info)
}
}
-/*!
- * \brief Contructor for ShapeInfo from file
+
+/**
+ * load_shape_info:
+ *
+ * Contructor for ShapeInfo from file
*
* Load the full shape info from file potentially reusing the preloaded
* ShapeInfo loaded by shape_typeinfo_load()
- *
- * \extends _ShapeInfo
*/
static ShapeInfo *
-load_shape_info(const gchar *filename, ShapeInfo *preload)
+load_shape_info (const gchar *filename, ShapeInfo *preload)
{
xmlErrorPtr error_xml = NULL;
xmlDocPtr doc = xmlDoParseFile(filename, &error_xml);
@@ -932,117 +939,138 @@ load_shape_info(const gchar *filename, ShapeInfo *preload)
return info;
}
+
void
-shape_info_print(ShapeInfo *info)
+shape_info_print (ShapeInfo *info)
{
GList *tmp;
int i;
- g_print("Name : %s\n", info->name);
- g_print("Connections :\n");
- for (i = 0; i < info->nconnections; i++)
+ g_print ("Name : %s\n", info->name);
+ g_print ("Connections :\n");
+ for (i = 0; i < info->nconnections; i++) {
g_print(" (%g, %g)\n", info->connections[i].x, info->connections[i].y);
- g_print("Shape bounds: (%g, %g) - (%g, %g)\n",
- info->shape_bounds.left, info->shape_bounds.top,
- info->shape_bounds.right, info->shape_bounds.bottom);
- if (info->has_text)
- g_print("Text bounds : (%g, %g) - (%g, %g)\n",
- info->text_bounds.left, info->text_bounds.top,
- info->text_bounds.right, info->text_bounds.bottom);
- g_print("Aspect ratio: ");
+ }
+ g_print ("Shape bounds: (%g, %g) - (%g, %g)\n",
+ info->shape_bounds.left, info->shape_bounds.top,
+ info->shape_bounds.right, info->shape_bounds.bottom);
+ if (info->has_text) {
+ g_print ("Text bounds : (%g, %g) - (%g, %g)\n",
+ info->text_bounds.left, info->text_bounds.top,
+ info->text_bounds.right, info->text_bounds.bottom);
+ }
+ g_print ("Aspect ratio: ");
switch (info->aspect_type) {
- case SHAPE_ASPECT_FREE: g_print("free\n"); break;
- case SHAPE_ASPECT_FIXED: g_print("fixed\n"); break;
- case SHAPE_ASPECT_RANGE:
- g_print("range %g - %g\n", info->aspect_min, info->aspect_max); break;
+ case SHAPE_ASPECT_FREE:
+ g_print ("free\n");
+ break;
+ case SHAPE_ASPECT_FIXED:
+ g_print ("fixed\n");
+ break;
+ case SHAPE_ASPECT_RANGE:
+ g_print ("range %g - %g\n", info->aspect_min, info->aspect_max);
+ break;
+ default:
+ g_return_if_reached ();
}
- g_print("Display list:\n");
+ g_print ("Display list:\n");
for (tmp = info->display_list; tmp; tmp = tmp->next) {
GraphicElement *el = tmp->data;
- int i;
+ int j;
switch (el->type) {
- case GE_LINE:
- g_print(" line: (%g, %g) (%g, %g)\n", el->line.p1.x, el->line.p1.y,
- el->line.p2.x, el->line.p2.y);
- break;
- case GE_POLYLINE:
- g_print(" polyline:");
- for (i = 0; i < el->polyline.npoints; i++)
- g_print(" (%g, %g)", el->polyline.points[i].x,
- el->polyline.points[i].y);
- g_print("\n");
- break;
- case GE_POLYGON:
- g_print(" polygon:");
- for (i = 0; i < el->polygon.npoints; i++)
- g_print(" (%g, %g)", el->polygon.points[i].x,
- el->polygon.points[i].y);
- g_print("\n");
- break;
- case GE_RECT:
- g_print(" rect: (%g, %g) (%g, %g)\n",
- el->rect.corner1.x, el->rect.corner1.y,
- el->rect.corner2.x, el->rect.corner2.y);
- break;
- case GE_TEXT:
- g_print(" text: (%g, %g)\n",
- el->text.anchor.x, el->text.anchor.y);
- break;
- case GE_ELLIPSE:
- g_print(" ellipse: center=(%g, %g) width=%g height=%g\n",
- el->ellipse.center.x, el->ellipse.center.y,
- el->ellipse.width, el->ellipse.height);
- break;
- case GE_PATH:
- g_print(" path:");
- for (i = 0; i < el->path.npoints; i++)
- switch (el->path.points[i].type) {
- case BEZ_MOVE_TO:
- g_print(" M (%g, %g)", el->path.points[i].p1.x,
- el->path.points[i].p1.y);
- break;
- case BEZ_LINE_TO:
- g_print(" L (%g, %g)", el->path.points[i].p1.x,
- el->path.points[i].p1.y);
- break;
- case BEZ_CURVE_TO:
- g_print(" C (%g, %g) (%g, %g) (%g, %g)", el->path.points[i].p1.x,
- el->path.points[i].p1.y, el->path.points[i].p2.x,
- el->path.points[i].p2.y, el->path.points[i].p3.x,
- el->path.points[i].p3.y);
- break;
- }
- break;
- case GE_SHAPE:
- g_print(" shape:");
- for (i = 0; i < el->path.npoints; i++)
- switch (el->path.points[i].type) {
- case BEZ_MOVE_TO:
- g_print(" M (%g, %g)", el->path.points[i].p1.x,
- el->path.points[i].p1.y);
- break;
- case BEZ_LINE_TO:
- g_print(" L (%g, %g)", el->path.points[i].p1.x,
- el->path.points[i].p1.y);
- break;
- case BEZ_CURVE_TO:
- g_print(" C (%g, %g) (%g, %g) (%g, %g)", el->path.points[i].p1.x,
- el->path.points[i].p1.y, el->path.points[i].p2.x,
- el->path.points[i].p2.y, el->path.points[i].p3.x,
- el->path.points[i].p3.y);
- break;
- }
- break;
- case GE_IMAGE :
- g_print(" image topleft=(%g, %g) width=%g height=%g file=%s\n",
- el->image.topleft.x, el->image.topleft.y,
- el->image.width, el->image.height,
- el->image.image ? dia_image_filename(el->image.image) : "(nil)");
- break;
- default:
- break;
+ case GE_LINE:
+ g_print (" line: (%g, %g) (%g, %g)\n", el->line.p1.x, el->line.p1.y,
+ el->line.p2.x, el->line.p2.y);
+ break;
+ case GE_POLYLINE:
+ g_print (" polyline:");
+ for (j = 0; j < el->polyline.npoints; j++) {
+ g_print (" (%g, %g)", el->polyline.points[j].x,
+ el->polyline.points[j].y);
+ }
+ g_print ("\n");
+ break;
+ case GE_POLYGON:
+ g_print (" polygon:");
+ for (j = 0; j < el->polygon.npoints; j++) {
+ g_print (" (%g, %g)", el->polygon.points[j].x,
+ el->polygon.points[j].y);
+ }
+ g_print ("\n");
+ break;
+ case GE_RECT:
+ g_print (" rect: (%g, %g) (%g, %g)\n",
+ el->rect.corner1.x, el->rect.corner1.y,
+ el->rect.corner2.x, el->rect.corner2.y);
+ break;
+ case GE_TEXT:
+ g_print (" text: (%g, %g)\n",
+ el->text.anchor.x, el->text.anchor.y);
+ break;
+ case GE_ELLIPSE:
+ g_print (" ellipse: center=(%g, %g) width=%g height=%g\n",
+ el->ellipse.center.x, el->ellipse.center.y,
+ el->ellipse.width, el->ellipse.height);
+ break;
+ case GE_PATH:
+ g_print (" path:");
+ for (j = 0; j < el->path.npoints; j++) {
+ switch (el->path.points[j].type) {
+ case BEZ_MOVE_TO:
+ g_print (" M (%g, %g)", el->path.points[j].p1.x,
+ el->path.points[j].p1.y);
+ break;
+ case BEZ_LINE_TO:
+ g_print (" L (%g, %g)", el->path.points[j].p1.x,
+ el->path.points[j].p1.y);
+ break;
+ case BEZ_CURVE_TO:
+ g_print (" C (%g, %g) (%g, %g) (%g, %g)", el->path.points[j].p1.x,
+ el->path.points[j].p1.y, el->path.points[j].p2.x,
+ el->path.points[j].p2.y, el->path.points[j].p3.x,
+ el->path.points[j].p3.y);
+ break;
+ default:
+ g_return_if_reached ();
+ }
+ }
+ break;
+ case GE_SHAPE:
+ g_print(" shape:");
+ for (j = 0; j < el->path.npoints; j++) {
+ switch (el->path.points[j].type) {
+ case BEZ_MOVE_TO:
+ g_print (" M (%g, %g)", el->path.points[j].p1.x,
+ el->path.points[j].p1.y);
+ break;
+ case BEZ_LINE_TO:
+ g_print (" L (%g, %g)", el->path.points[j].p1.x,
+ el->path.points[j].p1.y);
+ break;
+ case BEZ_CURVE_TO:
+ g_print (" C (%g, %g) (%g, %g) (%g, %g)", el->path.points[j].p1.x,
+ el->path.points[j].p1.y, el->path.points[j].p2.x,
+ el->path.points[j].p2.y, el->path.points[j].p3.x,
+ el->path.points[j].p3.y);
+ break;
+ default:
+ g_return_if_reached ();
+ }
+ }
+ break;
+ case GE_IMAGE:
+ g_print (" image topleft=(%g, %g) width=%g height=%g file=%s\n",
+ el->image.topleft.x, el->image.topleft.y,
+ el->image.width, el->image.height,
+ el->image.image ? dia_image_filename(el->image.image) : "(nil)");
+ break;
+ case GE_SUBSHAPE:
+ g_print (" subshape\n");
+ break;
+ default:
+ break;
}
}
- g_print("\n");
+ g_print ("\n");
}
diff --git a/objects/flowchart/diamond.c b/objects/flowchart/diamond.c
index 493a8858..fdc17bbf 100644
--- a/objects/flowchart/diamond.c
+++ b/objects/flowchart/diamond.c
@@ -197,8 +197,10 @@ diamond_set_props(Diamond *diamond, GPtrArray *props)
diamond_update_data(diamond,ANCHOR_MIDDLE,ANCHOR_MIDDLE);
}
+
static void
-init_default_values() {
+init_default_values (void)
+{
static int defaults_initialized = 0;
if (!defaults_initialized) {
@@ -208,8 +210,9 @@ init_default_values() {
}
}
+
static real
-diamond_distance_from(Diamond *diamond, Point *point)
+diamond_distance_from (Diamond *diamond, Point *point)
{
Element *elem = &diamond->element;
DiaRectangle rect;
@@ -219,49 +222,56 @@ diamond_distance_from(Diamond *diamond, Point *point)
rect.top = elem->corner.y - diamond->border_width/2;
rect.bottom = elem->corner.y + elem->height + diamond->border_width/2;
- if (rect.top > point->y)
+ if (rect.top > point->y) {
return rect.top - point->y +
fabs(point->x - elem->corner.x + elem->width / 2.0);
- else if (point->y > rect.bottom)
+ } else if (point->y > rect.bottom) {
return point->y - rect.bottom +
fabs(point->x - elem->corner.x + elem->width / 2.0);
- else if (rect.left > point->x)
+ } else if (rect.left > point->x) {
return rect.left - point->x +
fabs(point->y - elem->corner.y + elem->height / 2.0);
- else if (point->x > rect.right)
+ } else if (point->x > rect.right) {
return point->x - rect.right +
fabs(point->y - elem->corner.y + elem->height / 2.0);
- else {
+ } else {
/* inside the bounding box of diamond ... this is where it gets harder */
real x = point->x, y = point->y;
real dx, dy;
/* reflect point into upper left quadrant of diamond */
- if (x > elem->corner.x + elem->width / 2.0)
+ if (x > elem->corner.x + elem->width / 2.0) {
x = 2 * (elem->corner.x + elem->width / 2.0) - x;
- if (y > elem->corner.y + elem->height / 2.0)
+ }
+ if (y > elem->corner.y + elem->height / 2.0) {
y = 2 * (elem->corner.y + elem->height / 2.0) - y;
+ }
dx = -x + elem->corner.x + elem->width / 2.0 -
elem->width/elem->height * (y-elem->corner.y) - diamond->border_width/2;
dy = -y + elem->corner.y + elem->height / 2.0 -
elem->height/elem->width * (x-elem->corner.x) - diamond->border_width/2;
+
if (dx <= 0 || dy <= 0)
return 0;
- return MIN(dx, dy);
+
+ return MIN (dx, dy);
}
}
+
static void
-diamond_select(Diamond *diamond, Point *clicked_point,
- DiaRenderer *interactive_renderer)
+diamond_select (Diamond *diamond,
+ Point *clicked_point,
+ DiaRenderer *interactive_renderer)
{
- text_set_cursor(diamond->text, clicked_point, interactive_renderer);
- text_grab_focus(diamond->text, &diamond->element.object);
+ text_set_cursor (diamond->text, clicked_point, interactive_renderer);
+ text_grab_focus (diamond->text, &diamond->element.object);
- element_update_handles(&diamond->element);
+ element_update_handles (&diamond->element);
}
+
static ObjectChange*
diamond_move_handle(Diamond *diamond, Handle *handle,
Point *to, ConnectionPoint *cp,
@@ -271,42 +281,66 @@ diamond_move_handle(Diamond *diamond, Handle *handle,
Point corner;
real width, height;
- assert(diamond!=NULL);
- assert(handle!=NULL);
- assert(to!=NULL);
+ g_return_val_if_fail (diamond != NULL, NULL);
+ g_return_val_if_fail (handle != NULL, NULL);
+ g_return_val_if_fail (to != NULL, NULL);
/* remember ... */
corner = diamond->element.corner;
width = diamond->element.width;
height = diamond->element.height;
- element_move_handle(&diamond->element, handle->id, to, cp,
- reason, modifiers);
+ element_move_handle (&diamond->element, handle->id, to, cp,
+ reason, modifiers);
switch (handle->id) {
- case HANDLE_RESIZE_NW:
- horiz = ANCHOR_END; vert = ANCHOR_END; break;
- case HANDLE_RESIZE_N:
- vert = ANCHOR_END; break;
- case HANDLE_RESIZE_NE:
- horiz = ANCHOR_START; vert = ANCHOR_END; break;
- case HANDLE_RESIZE_E:
- horiz = ANCHOR_START; break;
- case HANDLE_RESIZE_SE:
- horiz = ANCHOR_START; vert = ANCHOR_START; break;
- case HANDLE_RESIZE_S:
- vert = ANCHOR_START; break;
- case HANDLE_RESIZE_SW:
- horiz = ANCHOR_END; vert = ANCHOR_START; break;
- case HANDLE_RESIZE_W:
- horiz = ANCHOR_END; break;
- default:
- break;
+ case HANDLE_RESIZE_NW:
+ horiz = ANCHOR_END;
+ vert = ANCHOR_END;
+ break;
+ case HANDLE_RESIZE_N:
+ vert = ANCHOR_END;
+ break;
+ case HANDLE_RESIZE_NE:
+ horiz = ANCHOR_START;
+ vert = ANCHOR_END;
+ break;
+ case HANDLE_RESIZE_E:
+ horiz = ANCHOR_START;
+ break;
+ case HANDLE_RESIZE_SE:
+ horiz = ANCHOR_START;
+ vert = ANCHOR_START;
+ break;
+ case HANDLE_RESIZE_S:
+ vert = ANCHOR_START;
+ break;
+ case HANDLE_RESIZE_SW:
+ horiz = ANCHOR_END;
+ vert = ANCHOR_START;
+ break;
+ case HANDLE_RESIZE_W:
+ horiz = ANCHOR_END;
+ break;
+ case HANDLE_MOVE_STARTPOINT:
+ case HANDLE_MOVE_ENDPOINT:
+ case HANDLE_CUSTOM1:
+ case HANDLE_CUSTOM2:
+ case HANDLE_CUSTOM3:
+ case HANDLE_CUSTOM4:
+ case HANDLE_CUSTOM5:
+ case HANDLE_CUSTOM6:
+ case HANDLE_CUSTOM7:
+ case HANDLE_CUSTOM8:
+ case HANDLE_CUSTOM9:
+ default:
+ break;
}
- diamond_update_data(diamond, horiz, vert);
+ diamond_update_data (diamond, horiz, vert);
- if (width != diamond->element.width && height != diamond->element.height)
+ if (width != diamond->element.width && height != diamond->element.height) {
return element_change_new (&corner, width, height, &diamond->element);
+ }
return NULL;
}
@@ -399,20 +433,27 @@ diamond_update_data(Diamond *diamond, AnchorShape horiz, AnchorShape vert)
/* move shape if necessary ... */
switch (horiz) {
- case ANCHOR_MIDDLE:
- elem->corner.x = center.x - elem->width/2; break;
- case ANCHOR_END:
- elem->corner.x = bottom_right.x - elem->width; break;
- default:
- break;
+ case ANCHOR_MIDDLE:
+ elem->corner.x = center.x - elem->width/2;
+ break;
+ case ANCHOR_END:
+ elem->corner.x = bottom_right.x - elem->width;
+ break;
+ case ANCHOR_START:
+ default:
+ break;
}
+
switch (vert) {
- case ANCHOR_MIDDLE:
- elem->corner.y = center.y - elem->height/2; break;
- case ANCHOR_END:
- elem->corner.y = bottom_right.y - elem->height; break;
- default:
- break;
+ case ANCHOR_MIDDLE:
+ elem->corner.y = center.y - elem->height/2;
+ break;
+ case ANCHOR_END:
+ elem->corner.y = bottom_right.y - elem->height;
+ break;
+ case ANCHOR_START:
+ default:
+ break;
}
p = elem->corner;
@@ -420,16 +461,17 @@ diamond_update_data(Diamond *diamond, AnchorShape horiz, AnchorShape vert)
p.y += elem->height / 2.0 - diamond->text->height*diamond->text->numlines/2 +
diamond->text->ascent;
switch (diamond->text->alignment) {
- case ALIGN_LEFT:
- p.x -= width/2;
- break;
- case ALIGN_RIGHT:
- p.x += width/2;
- break;
- case ALIGN_CENTER:
- break;
+ case ALIGN_LEFT:
+ p.x -= width/2;
+ break;
+ case ALIGN_RIGHT:
+ p.x += width/2;
+ break;
+ case ALIGN_CENTER:
+ default:
+ break;
}
- text_set_position(diamond->text, &p);
+ text_set_position (diamond->text, &p);
dw = elem->width / 8.0;
dh = elem->height / 8.0;
diff --git a/objects/flowchart/parallelogram.c b/objects/flowchart/parallelogram.c
index 3fd77929..68c764d9 100644
--- a/objects/flowchart/parallelogram.c
+++ b/objects/flowchart/parallelogram.c
@@ -187,23 +187,27 @@ static PropOffset pgram_offsets[] = {
{ NULL, 0, 0 },
};
+
static void
-pgram_get_props(Pgram *pgram, GPtrArray *props)
+pgram_get_props (Pgram *pgram, GPtrArray *props)
{
- object_get_props_from_offsets(&pgram->element.object,
- pgram_offsets,props);
+ object_get_props_from_offsets (DIA_OBJECT (pgram),
+ pgram_offsets,props);
}
+
static void
-pgram_set_props(Pgram *pgram, GPtrArray *props)
+pgram_set_props (Pgram *pgram, GPtrArray *props)
{
- object_set_props_from_offsets(&pgram->element.object,
- pgram_offsets,props);
- pgram_update_data(pgram, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
+ object_set_props_from_offsets (DIA_OBJECT (pgram),
+ pgram_offsets, props);
+ pgram_update_data (pgram, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
}
+
static void
-init_default_values() {
+init_default_values (void)
+{
static int defaults_initialized = 0;
if (!defaults_initialized) {
@@ -215,7 +219,7 @@ init_default_values() {
}
static real
-pgram_distance_from(Pgram *pgram, Point *point)
+pgram_distance_from (Pgram *pgram, Point *point)
{
Element *elem = &pgram->element;
DiaRectangle rect;
@@ -252,7 +256,7 @@ pgram_distance_from(Pgram *pgram, Point *point)
}
}
- return distance_rectangle_point(&rect, point);
+ return distance_rectangle_point (&rect, point);
}
static void
@@ -265,50 +269,78 @@ pgram_select(Pgram *pgram, Point *clicked_point,
element_update_handles(&pgram->element);
}
+
static ObjectChange*
-pgram_move_handle(Pgram *pgram, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+pgram_move_handle (Pgram *pgram,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
AnchorShape horiz = ANCHOR_MIDDLE, vert = ANCHOR_MIDDLE;
Point corner;
real width, height;
- assert(pgram!=NULL);
- assert(handle!=NULL);
- assert(to!=NULL);
+ g_return_val_if_fail (pgram != NULL, NULL);
+ g_return_val_if_fail (handle!=NULL, NULL);
+ g_return_val_if_fail (to!=NULL, NULL);
/* remember ... */
corner = pgram->element.corner;
width = pgram->element.width;
height = pgram->element.height;
- element_move_handle(&pgram->element, handle->id, to, cp, reason, modifiers);
+ element_move_handle (&pgram->element, handle->id, to, cp, reason, modifiers);
switch (handle->id) {
- case HANDLE_RESIZE_NW:
- horiz = ANCHOR_END; vert = ANCHOR_END; break;
- case HANDLE_RESIZE_N:
- vert = ANCHOR_END; break;
- case HANDLE_RESIZE_NE:
- horiz = ANCHOR_START; vert = ANCHOR_END; break;
- case HANDLE_RESIZE_E:
- horiz = ANCHOR_START; break;
- case HANDLE_RESIZE_SE:
- horiz = ANCHOR_START; vert = ANCHOR_START; break;
- case HANDLE_RESIZE_S:
- vert = ANCHOR_START; break;
- case HANDLE_RESIZE_SW:
- horiz = ANCHOR_END; vert = ANCHOR_START; break;
- case HANDLE_RESIZE_W:
- horiz = ANCHOR_END; break;
- default:
- break;
+ case HANDLE_RESIZE_NW:
+ horiz = ANCHOR_END;
+ vert = ANCHOR_END;
+ break;
+ case HANDLE_RESIZE_N:
+ vert = ANCHOR_END;
+ break;
+ case HANDLE_RESIZE_NE:
+ horiz = ANCHOR_START;
+ vert = ANCHOR_END;
+ break;
+ case HANDLE_RESIZE_E:
+ horiz = ANCHOR_START;
+ break;
+ case HANDLE_RESIZE_SE:
+ horiz = ANCHOR_START;
+ vert = ANCHOR_START;
+ break;
+ case HANDLE_RESIZE_S:
+ vert = ANCHOR_START;
+ break;
+ case HANDLE_RESIZE_SW:
+ horiz = ANCHOR_END;
+ vert = ANCHOR_START;
+ break;
+ case HANDLE_RESIZE_W:
+ horiz = ANCHOR_END;
+ break;
+ case HANDLE_MOVE_STARTPOINT:
+ case HANDLE_MOVE_ENDPOINT:
+ case HANDLE_CUSTOM1:
+ case HANDLE_CUSTOM2:
+ case HANDLE_CUSTOM3:
+ case HANDLE_CUSTOM4:
+ case HANDLE_CUSTOM5:
+ case HANDLE_CUSTOM6:
+ case HANDLE_CUSTOM7:
+ case HANDLE_CUSTOM8:
+ case HANDLE_CUSTOM9:
+ default:
+ break;
}
- pgram_update_data(pgram, horiz, vert);
+ pgram_update_data (pgram, horiz, vert);
- if (width != pgram->element.width && height != pgram->element.height)
+ if (width != pgram->element.width && height != pgram->element.height) {
return element_change_new (&corner, width, height, &pgram->element);
+ }
return NULL;
}
@@ -417,20 +449,27 @@ pgram_update_data(Pgram *pgram, AnchorShape horiz, AnchorShape vert)
/* move shape if necessary ... */
switch (horiz) {
- case ANCHOR_MIDDLE:
- elem->corner.x = center.x - elem->width/2; break;
- case ANCHOR_END:
- elem->corner.x = bottom_right.x - elem->width; break;
- default:
- break;
+ case ANCHOR_MIDDLE:
+ elem->corner.x = center.x - elem->width/2;
+ break;
+ case ANCHOR_END:
+ elem->corner.x = bottom_right.x - elem->width;
+ break;
+ case ANCHOR_START:
+ default:
+ break;
}
+
switch (vert) {
- case ANCHOR_MIDDLE:
- elem->corner.y = center.y - elem->height/2; break;
- case ANCHOR_END:
- elem->corner.y = bottom_right.y - elem->height; break;
- default:
- break;
+ case ANCHOR_MIDDLE:
+ elem->corner.y = center.y - elem->height/2;
+ break;
+ case ANCHOR_END:
+ elem->corner.y = bottom_right.y - elem->height;
+ break;
+ case ANCHOR_START:
+ default:
+ break;
}
p = elem->corner;
@@ -438,16 +477,19 @@ pgram_update_data(Pgram *pgram, AnchorShape horiz, AnchorShape vert)
p.y += elem->height / 2.0 - pgram->text->height * pgram->text->numlines / 2 +
pgram->text->ascent;
switch (pgram->text->alignment) {
- case ALIGN_LEFT:
- p.x -= avail_width/2;
- break;
- case ALIGN_RIGHT:
- p.x += avail_width/2;
- break;
- case ALIGN_CENTER:
- break;
+ case ALIGN_LEFT:
+ p.x -= avail_width/2;
+ break;
+ case ALIGN_RIGHT:
+ p.x += avail_width/2;
+ break;
+ case ALIGN_CENTER:
+ break;
+ default:
+ g_return_if_reached ();
}
- text_set_position(pgram->text, &p);
+
+ text_set_position (pgram->text, &p);
/* 1/4 of how much more to the left the bottom line is */
offs = -(elem->height / 4.0 * pgram->shear_grad);
diff --git a/objects/network/bus.c b/objects/network/bus.c
index 19258d46..39de9a93 100644
--- a/objects/network/bus.c
+++ b/objects/network/bus.c
@@ -701,40 +701,50 @@ bus_change_free(struct PointChange *change)
}
}
+
static void
-bus_change_apply(struct PointChange *change, DiaObject *obj)
+bus_change_apply (struct PointChange *change, DiaObject *obj)
{
change->applied = 1;
+
switch (change->type) {
- case TYPE_ADD_POINT:
- bus_add_handle((Bus *)obj, &change->point, change->handle);
- break;
- case TYPE_REMOVE_POINT:
- object_unconnect(obj, change->handle);
- bus_remove_handle((Bus *)obj, change->handle);
- break;
+ case TYPE_ADD_POINT:
+ bus_add_handle ((Bus *) obj, &change->point, change->handle);
+ break;
+ case TYPE_REMOVE_POINT:
+ object_unconnect (obj, change->handle);
+ bus_remove_handle ((Bus *) obj, change->handle);
+ break;
+ default:
+ g_return_if_reached ();
}
- bus_update_data((Bus *)obj);
+
+ bus_update_data ((Bus *) obj);
}
+
static void
-bus_change_revert(struct PointChange *change, DiaObject *obj)
+bus_change_revert (struct PointChange *change, DiaObject *obj)
{
switch (change->type) {
- case TYPE_ADD_POINT:
- bus_remove_handle((Bus *)obj, change->handle);
- break;
- case TYPE_REMOVE_POINT:
- bus_add_handle((Bus *)obj, &change->point, change->handle);
- if (change->connected_to) {
- object_connect(obj, change->handle, change->connected_to);
- }
- break;
+ case TYPE_ADD_POINT:
+ bus_remove_handle ((Bus *)obj, change->handle);
+ break;
+ case TYPE_REMOVE_POINT:
+ bus_add_handle ((Bus *)obj, &change->point, change->handle);
+ if (change->connected_to) {
+ object_connect (obj, change->handle, change->connected_to);
+ }
+ break;
+ default:
+ g_return_if_reached ();
}
- bus_update_data((Bus *)obj);
+
+ bus_update_data ((Bus *) obj);
change->applied = 0;
}
+
static ObjectChange *
bus_create_change(Bus *bus, enum change_type type,
Point *point, Handle *handle,
diff --git a/objects/standard/box.c b/objects/standard/box.c
index e8c043ad..abe3e57a 100644
--- a/objects/standard/box.c
+++ b/objects/standard/box.c
@@ -264,16 +264,20 @@ box_select(Box *box, Point *clicked_point,
}
}
+
static ObjectChange*
-box_move_handle(Box *box, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+box_move_handle (Box *box,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- assert(box!=NULL);
- assert(handle!=NULL);
- assert(to!=NULL);
+ g_return_val_if_fail (box != NULL, NULL);
+ g_return_val_if_fail (handle != NULL, NULL);
+ g_return_val_if_fail (to != NULL, NULL);
- if (box->aspect != FREE_ASPECT){
+ if (box->aspect != FREE_ASPECT) {
double width, height;
double new_width, new_height;
double to_width, aspect_width;
@@ -283,40 +287,51 @@ box_move_handle(Box *box, Handle *handle,
width = box->element.width;
height = box->element.height;
switch (handle->id) {
- case HANDLE_RESIZE_N:
- case HANDLE_RESIZE_S:
- new_height = fabs(to->y - corner.y);
- new_width = new_height / height * width;
- break;
- case HANDLE_RESIZE_W:
- case HANDLE_RESIZE_E:
- new_width = fabs(to->x - corner.x);
- new_height = new_width / width * height;
- break;
- case HANDLE_RESIZE_NW:
- case HANDLE_RESIZE_NE:
- case HANDLE_RESIZE_SW:
- case HANDLE_RESIZE_SE:
- to_width = fabs(to->x - corner.x);
- aspect_width = fabs(to->y - corner.y) / height * width;
- new_width = to_width > aspect_width ? to_width : aspect_width;
- new_height = new_width / width * height;
- break;
- default:
- new_width = width;
- new_height = height;
- break;
+ case HANDLE_RESIZE_N:
+ case HANDLE_RESIZE_S:
+ new_height = fabs(to->y - corner.y);
+ new_width = new_height / height * width;
+ break;
+ case HANDLE_RESIZE_W:
+ case HANDLE_RESIZE_E:
+ new_width = fabs(to->x - corner.x);
+ new_height = new_width / width * height;
+ break;
+ case HANDLE_RESIZE_NW:
+ case HANDLE_RESIZE_NE:
+ case HANDLE_RESIZE_SW:
+ case HANDLE_RESIZE_SE:
+ to_width = fabs(to->x - corner.x);
+ aspect_width = fabs(to->y - corner.y) / height * width;
+ new_width = to_width > aspect_width ? to_width : aspect_width;
+ new_height = new_width / width * height;
+ break;
+ case HANDLE_MOVE_STARTPOINT:
+ case HANDLE_MOVE_ENDPOINT:
+ case HANDLE_CUSTOM1:
+ case HANDLE_CUSTOM2:
+ case HANDLE_CUSTOM3:
+ case HANDLE_CUSTOM4:
+ case HANDLE_CUSTOM5:
+ case HANDLE_CUSTOM6:
+ case HANDLE_CUSTOM7:
+ case HANDLE_CUSTOM8:
+ case HANDLE_CUSTOM9:
+ default:
+ new_width = width;
+ new_height = height;
+ break;
}
se_to.x = corner.x + new_width;
se_to.y = corner.y + new_height;
- element_move_handle(&box->element, HANDLE_RESIZE_SE, &se_to, cp, reason, modifiers);
+ element_move_handle (&box->element, HANDLE_RESIZE_SE, &se_to, cp, reason, modifiers);
} else {
- element_move_handle(&box->element, handle->id, to, cp, reason, modifiers);
+ element_move_handle (&box->element, handle->id, to, cp, reason, modifiers);
}
- box_update_data(box);
+ box_update_data (box);
return NULL;
}
diff --git a/objects/standard/ellipse.c b/objects/standard/ellipse.c
index 1b970610..a29942ca 100644
--- a/objects/standard/ellipse.c
+++ b/objects/standard/ellipse.c
@@ -223,98 +223,117 @@ ellipse_distance_from(Ellipse *ellipse, Point *point)
ellipse->border_width, point);
}
+
static void
-ellipse_select(Ellipse *ellipse, Point *clicked_point,
- DiaRenderer *interactive_renderer)
+ellipse_select (Ellipse *ellipse,
+ Point *clicked_point,
+ DiaRenderer *interactive_renderer)
{
- element_update_handles(&ellipse->element);
+ element_update_handles (&ellipse->element);
}
+
static ObjectChange*
-ellipse_move_handle(Ellipse *ellipse, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+ellipse_move_handle (Ellipse *ellipse,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
Element *elem = &ellipse->element;
Point nw_to, se_to;
- assert(ellipse!=NULL);
- assert(handle!=NULL);
- assert(to!=NULL);
+ g_return_val_if_fail (ellipse != NULL, NULL);
+ g_return_val_if_fail (handle != NULL, NULL);
+ g_return_val_if_fail (to != NULL, NULL);
+
+ g_return_val_if_fail (handle->id < 8 || handle->id == HANDLE_CUSTOM1, NULL);
- assert(handle->id < 8 || handle->id == HANDLE_CUSTOM1);
if (handle->id == HANDLE_CUSTOM1) {
Point delta, corner_to;
delta.x = to->x - (elem->corner.x + elem->width/2);
delta.y = to->y - (elem->corner.y + elem->height/2);
corner_to.x = elem->corner.x + delta.x;
corner_to.y = elem->corner.y + delta.y;
- return ellipse_move(ellipse, &corner_to);
+ return ellipse_move (ellipse, &corner_to);
} else {
if (ellipse->aspect != FREE_ASPECT){
- float width, height;
- float new_width, new_height;
- float to_width, aspect_width;
- Point center;
-
- width = ellipse->element.width;
- height = ellipse->element.height;
- center.x = elem->corner.x + width/2;
- center.y = elem->corner.y + height/2;
- switch (handle->id) {
+ float width, height;
+ float new_width, new_height;
+ float to_width, aspect_width;
+ Point center;
+
+ width = ellipse->element.width;
+ height = ellipse->element.height;
+ center.x = elem->corner.x + width/2;
+ center.y = elem->corner.y + height/2;
+ switch (handle->id) {
case HANDLE_RESIZE_E:
case HANDLE_RESIZE_W:
- new_width = 2 * fabs(to->x - center.x);
- new_height = new_width / width * height;
- break;
+ new_width = 2 * fabs(to->x - center.x);
+ new_height = new_width / width * height;
+ break;
case HANDLE_RESIZE_N:
case HANDLE_RESIZE_S:
- new_height = 2 * fabs(to->y - center.y);
- new_width = new_height / height * width;
- break;
+ new_height = 2 * fabs(to->y - center.y);
+ new_width = new_height / height * width;
+ break;
case HANDLE_RESIZE_NW:
case HANDLE_RESIZE_NE:
case HANDLE_RESIZE_SW:
case HANDLE_RESIZE_SE:
- to_width = 2 * fabs(to->x - center.x);
- aspect_width = 2 * fabs(to->y - center.y) / height * width;
- new_width = to_width < aspect_width ? to_width : aspect_width;
- new_height = new_width / width * height;
- break;
- default:
- new_width = width;
- new_height = height;
- break;
- }
-
- nw_to.x = center.x - new_width/2;
- nw_to.y = center.y - new_height/2;
- se_to.x = center.x + new_width/2;
- se_to.y = center.y + new_height/2;
-
- element_move_handle(&ellipse->element, HANDLE_RESIZE_NW, &nw_to, cp, reason, modifiers);
- element_move_handle(&ellipse->element, HANDLE_RESIZE_SE, &se_to, cp, reason, modifiers);
+ to_width = 2 * fabs(to->x - center.x);
+ aspect_width = 2 * fabs(to->y - center.y) / height * width;
+ new_width = to_width < aspect_width ? to_width : aspect_width;
+ new_height = new_width / width * height;
+ break;
+ case HANDLE_MOVE_STARTPOINT:
+ case HANDLE_MOVE_ENDPOINT:
+ case HANDLE_CUSTOM1:
+ case HANDLE_CUSTOM2:
+ case HANDLE_CUSTOM3:
+ case HANDLE_CUSTOM4:
+ case HANDLE_CUSTOM5:
+ case HANDLE_CUSTOM6:
+ case HANDLE_CUSTOM7:
+ case HANDLE_CUSTOM8:
+ case HANDLE_CUSTOM9:
+ default:
+ new_width = width;
+ new_height = height;
+ break;
+ }
+
+ nw_to.x = center.x - new_width/2;
+ nw_to.y = center.y - new_height/2;
+ se_to.x = center.x + new_width/2;
+ se_to.y = center.y + new_height/2;
+
+ element_move_handle (&ellipse->element, HANDLE_RESIZE_NW, &nw_to, cp, reason, modifiers);
+ element_move_handle (&ellipse->element, HANDLE_RESIZE_SE, &se_to, cp, reason, modifiers);
} else {
- Point center;
- Point opposite_to;
- center.x = elem->corner.x + elem->width/2;
- center.y = elem->corner.y + elem->height/2;
- opposite_to.x = center.x - (to->x-center.x);
- opposite_to.y = center.y - (to->y-center.y);
-
- element_move_handle(&ellipse->element, handle->id, to, cp, reason, modifiers);
- /* this second move screws the intended object size, e.g. from dot2dia.py
- * but without it the 'centered' behaviour during edit is screwed
- */
- element_move_handle(&ellipse->element, 7-handle->id, &opposite_to, cp, reason, modifiers);
+ Point center;
+ Point opposite_to;
+ center.x = elem->corner.x + elem->width/2;
+ center.y = elem->corner.y + elem->height/2;
+ opposite_to.x = center.x - (to->x-center.x);
+ opposite_to.y = center.y - (to->y-center.y);
+
+ element_move_handle (&ellipse->element, handle->id, to, cp, reason, modifiers);
+ /* this second move screws the intended object size, e.g. from dot2dia.py
+ * but without it the 'centered' behaviour during edit is screwed
+ */
+ element_move_handle (&ellipse->element, 7-handle->id, &opposite_to, cp, reason, modifiers);
}
- ellipse_update_data(ellipse);
+ ellipse_update_data (ellipse);
return NULL;
}
}
+
static ObjectChange*
ellipse_move(Ellipse *ellipse, Point *to)
{
diff --git a/objects/standard/line.c b/objects/standard/line.c
index d7aa7005..90dcd39f 100644
--- a/objects/standard/line.c
+++ b/objects/standard/line.c
@@ -181,16 +181,19 @@ static ObjectOps line_ops = {
(TransformFunc) line_transform,
};
+
static void
-line_set_props(Line *line, GPtrArray *props)
+line_set_props (Line *line, GPtrArray *props)
{
- object_set_props_from_offsets(&line->connection.object,
- line_offsets, props);
- line_update_data(line);
+ object_set_props_from_offsets (DIA_OBJECT (line),
+ line_offsets, props);
+ line_update_data (line);
}
+
static void
-line_init_defaults() {
+line_init_defaults (void)
+{
static int defaults_initialized = 0;
if (!defaults_initialized) {
@@ -200,20 +203,22 @@ line_init_defaults() {
}
}
-/*!
- * \brief Add a connection point to the line
+
+/**
+ * line_add_connpoint_callback:
*
- * \memberof Line
+ * Add a connection point to the line
*/
static ObjectChange *
-line_add_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data)
+line_add_connpoint_callback (DiaObject *obj, Point *clicked, gpointer data)
{
ObjectChange *oc;
- oc = connpointline_add_point(((Line *)obj)->cpl,clicked);
- line_update_data((Line *)obj);
+ oc = connpointline_add_point (((Line *) obj)->cpl,clicked);
+ line_update_data ((Line *) obj);
return oc;
}
+
/*!
* \brief Remove a connection point from the line
*
diff --git a/plug-ins/cgm/cgm.c b/plug-ins/cgm/cgm.c
index db2e482a..d897c2ea 100644
--- a/plug-ins/cgm/cgm.c
+++ b/plug-ins/cgm/cgm.c
@@ -861,43 +861,43 @@ write_bezier(CgmRenderer *renderer,
int i;
Point current;
- if (points[0].type != BEZ_MOVE_TO)
- g_warning("first BezPoint must be a BEZ_MOVE_TO");
+ if (points[0].type != BEZ_MOVE_TO) {
+ g_warning("first BezPoint must be a BEZ_MOVE_TO");
+ }
current.x = points[0].p1.x;
current.y = swap_y(renderer, points[0].p1.y);
- for (i = 1; i < numpoints; i++)
- {
- switch (points[i].type)
- {
- case BEZ_MOVE_TO:
- g_warning("only first BezPoint can be a BEZ_MOVE_TO");
- break;
- case BEZ_LINE_TO:
- write_elhead(renderer->file, CGM_ELEMENT, CGM_POLYLINE, 4 * REALSIZE);
- write_real(renderer->file, current.x);
- write_real(renderer->file, current.y);
- write_real(renderer->file, points[i].p1.x);
- write_real(renderer->file, swap_y(renderer, points[i].p1.y));
- current.x = points[i].p1.x;
- current.y = swap_y(renderer, points[i].p1.y);
- break;
- case BEZ_CURVE_TO:
- write_elhead(renderer->file, CGM_ELEMENT, CGM_POLYBEZIER, 8 * REALSIZE + 2);
- write_int16(renderer->file, 1);
- write_real(renderer->file, current.x);
- write_real(renderer->file, current.y);
- write_real(renderer->file, points[i].p1.x);
- write_real(renderer->file, swap_y(renderer, points[i].p1.y));
- write_real(renderer->file, points[i].p2.x);
- write_real(renderer->file, swap_y(renderer, points[i].p2.y));
- write_real(renderer->file, points[i].p3.x);
- write_real(renderer->file, swap_y(renderer, points[i].p3.y));
- current.x = points[i].p3.x;
- current.y = swap_y(renderer, points[i].p3.y);
- break;
- }
+ for (i = 1; i < numpoints; i++) {
+ switch (points[i].type) {
+ case BEZ_LINE_TO:
+ write_elhead(renderer->file, CGM_ELEMENT, CGM_POLYLINE, 4 * REALSIZE);
+ write_real(renderer->file, current.x);
+ write_real(renderer->file, current.y);
+ write_real(renderer->file, points[i].p1.x);
+ write_real(renderer->file, swap_y(renderer, points[i].p1.y));
+ current.x = points[i].p1.x;
+ current.y = swap_y(renderer, points[i].p1.y);
+ break;
+ case BEZ_CURVE_TO:
+ write_elhead(renderer->file, CGM_ELEMENT, CGM_POLYBEZIER, 8 * REALSIZE + 2);
+ write_int16(renderer->file, 1);
+ write_real(renderer->file, current.x);
+ write_real(renderer->file, current.y);
+ write_real(renderer->file, points[i].p1.x);
+ write_real(renderer->file, swap_y(renderer, points[i].p1.y));
+ write_real(renderer->file, points[i].p2.x);
+ write_real(renderer->file, swap_y(renderer, points[i].p2.y));
+ write_real(renderer->file, points[i].p3.x);
+ write_real(renderer->file, swap_y(renderer, points[i].p3.y));
+ current.x = points[i].p3.x;
+ current.y = swap_y(renderer, points[i].p3.y);
+ break;
+ case BEZ_MOVE_TO:
+ default:
+ g_warning ("only first BezPoint can be a BEZ_MOVE_TO");
+ break;
+ }
}
}
@@ -941,64 +941,69 @@ draw_beziergon (DiaRenderer *self,
}
-
static void
-draw_string(DiaRenderer *self,
- const char *text,
- Point *pos, Alignment alignment,
- Color *colour)
+draw_string (DiaRenderer *self,
+ const char *text,
+ Point *pos,
+ Alignment alignment,
+ Color *colour)
{
- CgmRenderer *renderer = CGM_RENDERER(self);
- double x = pos->x, y = swap_y(renderer, pos->y);
- gint len, chunk;
- const gint maxfirstchunk = 255 - 2 * REALSIZE - 2 - 1;
- const gint maxappendchunk = 255 - 2 - 1;
-
- /* check for empty strings */
- len = strlen(text);
- if ( len == 0 )
- return;
+ CgmRenderer *renderer = CGM_RENDERER (self);
+ double x = pos->x, y = swap_y (renderer, pos->y);
+ gint len, chunk;
+ const gint maxfirstchunk = 255 - 2 * REALSIZE - 2 - 1;
+ const gint maxappendchunk = 255 - 2 - 1;
+
+ /* check for empty strings */
+ len = strlen (text);
+ if (len == 0) {
+ return;
+ }
- write_text_attributes(renderer, colour);
+ write_text_attributes (renderer, colour);
- switch (alignment) {
+ switch (alignment) {
case ALIGN_LEFT:
- break;
+ break;
case ALIGN_CENTER:
- x -= dia_font_string_width(text, renderer->font,
- renderer->tcurrent.font_height)/2;
- break;
+ x -= dia_font_string_width (text, renderer->font,
+ renderer->tcurrent.font_height) / 2;
+ break;
case ALIGN_RIGHT:
- x -= dia_font_string_width(text, renderer->font,
- renderer->tcurrent.font_height);
- break;
- }
- /* work out size of first chunk of text */
- chunk = MIN(maxfirstchunk, len);
- write_elhead(renderer->file, CGM_ELEMENT, CGM_TEXT, 2 * REALSIZE + 2 + 1 + chunk);
- write_real(renderer->file, x);
- write_real(renderer->file, y);
- write_int16(renderer->file, (len == chunk)); /* last chunk? */
- putc(chunk, renderer->file);
- fwrite(text, sizeof(char), chunk, renderer->file);
- if (!IS_ODD(chunk))
- putc(0, renderer->file);
+ x -= dia_font_string_width (text, renderer->font,
+ renderer->tcurrent.font_height);
+ break;
+ default:
+ g_return_if_reached ();
+ }
+
+ /* work out size of first chunk of text */
+ chunk = MIN (maxfirstchunk, len);
+ write_elhead (renderer->file, CGM_ELEMENT, CGM_TEXT, 2 * REALSIZE + 2 + 1 + chunk);
+ write_real (renderer->file, x);
+ write_real (renderer->file, y);
+ write_int16 (renderer->file, (len == chunk)); /* last chunk? */
+ putc (chunk, renderer->file);
+ fwrite (text, sizeof(char), chunk, renderer->file);
+ if (!IS_ODD (chunk)) {
+ putc (0, renderer->file);
+ }
+
+ len -= chunk;
+ text += chunk;
+ while (len > 0) {
+ /* append text */
+ chunk = MIN (maxappendchunk, len);
+ write_elhead (renderer->file, CGM_ELEMENT, CGM_APPEND_TEXT, 2 + 1 + chunk);
+ write_int16 (renderer->file, (len == chunk));
+ putc (chunk, renderer->file);
+ fwrite (text, sizeof(char), chunk, renderer->file);
+ if (!IS_ODD (chunk))
+ putc (0, renderer->file);
len -= chunk;
text += chunk;
- while (len > 0) {
- /* append text */
- chunk = MIN(maxappendchunk, len);
- write_elhead(renderer->file, CGM_ELEMENT, CGM_APPEND_TEXT, 2 + 1 + chunk);
- write_int16(renderer->file, (len == chunk));
- putc(chunk, renderer->file);
- fwrite(text, sizeof(char), chunk, renderer->file);
- if (!IS_ODD(chunk))
- putc(0, renderer->file);
-
- len -= chunk;
- text += chunk;
- }
+ }
}
diff --git a/plug-ins/drs/dia-render-script-renderer.c b/plug-ins/drs/dia-render-script-renderer.c
index 0d7c008f..684814b5 100644
--- a/plug-ins/drs/dia-render-script-renderer.c
+++ b/plug-ins/drs/dia-render-script-renderer.c
@@ -145,44 +145,55 @@ drs_renderer_finalize (GObject *object)
G_OBJECT_CLASS (drs_renderer_parent_class)->finalize (object);
}
+
/*
* renderer methods
*/
static void
-draw_object(DiaRenderer *self,
- DiaObject *object,
- DiaMatrix *matrix)
+draw_object (DiaRenderer *self,
+ DiaObject *object,
+ DiaMatrix *matrix)
{
DrsRenderer *renderer = DRS_RENDERER (self);
DiaMatrix *m = g_queue_peek_tail (renderer->matrices);
xmlNodePtr node;
g_queue_push_tail (renderer->parents, renderer->root);
- renderer->root = node = xmlNewChild(renderer->root, NULL, (const xmlChar *)"object", NULL);
- xmlSetProp(node, (const xmlChar *)"type", (xmlChar *)object->type->name);
+ renderer->root = node = xmlNewChild (renderer->root,
+ NULL,
+ (const xmlChar *) "object",
+ NULL);
+ xmlSetProp (node, (const xmlChar *) "type",
+ (xmlChar *) object->type->name);
/* if it looks like intdata store it as well */
if (GPOINTER_TO_INT (object->type->default_user_data) > 0 &&
GPOINTER_TO_INT (object->type->default_user_data) < 0xFF) {
gchar buffer[30];
- g_snprintf(buffer, sizeof(buffer), "%d", GPOINTER_TO_INT (object->type->default_user_data));
- xmlSetProp(node, (const xmlChar *)"intdata", (xmlChar *)buffer);
+ g_snprintf (buffer, sizeof (buffer), "%d",
+ GPOINTER_TO_INT (object->type->default_user_data));
+ xmlSetProp (node, (const xmlChar *) "intdata", (xmlChar *) buffer);
}
+
if (renderer->save_props) {
xmlNodePtr props_node;
- props_node = xmlNewChild(node, NULL, (const xmlChar *)"properties", NULL);
+ props_node = xmlNewChild (node, NULL,
+ (const xmlChar *) "properties", NULL);
object_save_props (object, props_node, renderer->ctx);
}
+
if (matrix) {
DiaMatrix *m2 = g_new0 (DiaMatrix, 1);
- if (m)
+ if (m) {
dia_matrix_multiply (m2, matrix, m);
- else
+ } else {
*m2 = *matrix;
+ }
g_queue_push_tail (renderer->matrices, m2);
/* lazy creation of our transformer */
- if (!renderer->transformer)
+ if (!renderer->transformer) {
renderer->transformer = dia_transform_renderer_new (self);
+ }
}
/* special handling for group objects:
* - for the render branch use DiaTransformRenderer, but not it's draw_object,
@@ -194,9 +205,10 @@ draw_object(DiaRenderer *self,
*/
{
g_queue_push_tail (renderer->parents, renderer->root);
- renderer->root = node = xmlNewChild(renderer->root, NULL, (const xmlChar *)"render", NULL);
+ renderer->root = node = xmlNewChild (renderer->root, NULL,
+ (const xmlChar *) "render", NULL);
if (renderer->transformer) {
- DiaMatrix *m = g_queue_peek_tail (renderer->matrices);
+ DiaMatrix *cm = g_queue_peek_tail (renderer->matrices);
if (IS_GROUP (object)) {
/* reimplementation of group_draw to use this draw_object method */
@@ -207,12 +219,12 @@ draw_object(DiaRenderer *self,
while (list != NULL) {
obj = (DiaObject *) list->data;
- dia_renderer_draw_object (self, obj, m);
+ dia_renderer_draw_object (self, obj, cm);
list = g_list_next (list);
}
} else {
/* just the leaf */
- dia_renderer_draw_object (renderer->transformer, object, m);
+ dia_renderer_draw_object (renderer->transformer, object, cm);
}
} else {
dia_object_draw (object, DIA_RENDERER (renderer));
@@ -293,6 +305,8 @@ _node_set_point (xmlNodePtr node, const char *name, Point *point)
g_string_free(str, TRUE);
}
+
+
static void
_node_set_points (xmlNodePtr node, Point *points, int num_points)
{
@@ -301,12 +315,15 @@ _node_set_points (xmlNodePtr node, Point *points, int num_points)
str = g_string_new (NULL);
- for (i = 0; i < num_points; ++i)
+ for (i = 0; i < num_points; ++i) {
_string_append_point (str, &points[i], i == 0);
- xmlSetProp(node, (const xmlChar *)"points", (xmlChar *) str->str);
+ }
+ xmlSetProp (node, (const xmlChar *) "points", (xmlChar *) str->str);
- g_string_free(str, TRUE);
+ g_string_free (str, TRUE);
}
+
+
static void
_node_set_bezpoints (xmlNodePtr node, BezPoint *points, int num_points)
{
@@ -317,20 +334,27 @@ _node_set_bezpoints (xmlNodePtr node, BezPoint *points, int num_points)
for (i = 0; i < num_points; ++i) {
BezPoint *bpt = &points[i];
- if (i != 0)
+
+ if (i != 0) {
g_string_append (str, " ");
+ }
+
switch (bpt->type) {
- case BEZ_MOVE_TO:
- g_string_append (str, "M");
- break;
- case BEZ_LINE_TO:
- g_string_append (str, "L");
- break;
- case BEZ_CURVE_TO:
- g_string_append (str, "C");
- break;
+ case BEZ_MOVE_TO:
+ g_string_append (str, "M");
+ break;
+ case BEZ_LINE_TO:
+ g_string_append (str, "L");
+ break;
+ case BEZ_CURVE_TO:
+ g_string_append (str, "C");
+ break;
+ default:
+ g_return_if_reached ();
}
+
_string_append_point (str, &points[i].p1, TRUE);
+
if (bpt->type == BEZ_CURVE_TO) {
/* no space between bez-points, simplifies parsing */
g_string_append (str, ";");
@@ -339,73 +363,83 @@ _node_set_bezpoints (xmlNodePtr node, BezPoint *points, int num_points)
_string_append_point (str, &points[i].p3, TRUE);
}
}
- xmlSetProp(node, (const xmlChar *)"bezpoints", (xmlChar *) str->str);
+ xmlSetProp (node, (const xmlChar *) "bezpoints", (xmlChar *) str->str);
- g_string_free(str, TRUE);
+ g_string_free (str, TRUE);
}
+
static void
-set_linewidth(DiaRenderer *self, real width)
+set_linewidth (DiaRenderer *self, real width)
{
DrsRenderer *renderer = DRS_RENDERER (self);
xmlNodePtr node;
- node = xmlNewChild(renderer->root, NULL, (const xmlChar *)"set-linewidth", NULL);
+ node = xmlNewChild (renderer->root, NULL,
+ (const xmlChar *) "set-linewidth", NULL);
_node_set_real (node, "width", width);
}
+
static void
-set_linecaps(DiaRenderer *self, LineCaps mode)
+set_linecaps (DiaRenderer *self, LineCaps mode)
{
DrsRenderer *renderer = DRS_RENDERER (self);
xmlNodePtr node;
gchar *value = NULL;
switch(mode) {
- case LINECAPS_DEFAULT:
- case LINECAPS_BUTT:
- value = "butt";
- break;
- case LINECAPS_ROUND:
- value = "round";
- break;
- case LINECAPS_PROJECTING:
- value = "projecting";
- break;
- /* intentionally no default to let 'good' compilers warn about new constants*/
+ case LINECAPS_DEFAULT:
+ case LINECAPS_BUTT:
+ value = "butt";
+ break;
+ case LINECAPS_ROUND:
+ value = "round";
+ break;
+ case LINECAPS_PROJECTING:
+ value = "projecting";
+ break;
+ default:
+ g_return_if_reached ();
}
- node = xmlNewChild(renderer->root, NULL, (const xmlChar *)"set-linecaps", NULL);
- xmlSetProp(node, (const xmlChar *)"mode",
- value ? (xmlChar *)value : (xmlChar *)"?");
+
+ node = xmlNewChild (renderer->root, NULL,
+ (const xmlChar *) "set-linecaps", NULL);
+ xmlSetProp (node, (const xmlChar *) "mode",
+ value ? (xmlChar *) value : (xmlChar *) "?");
}
+
static void
-set_linejoin(DiaRenderer *self, LineJoin mode)
+set_linejoin (DiaRenderer *self, LineJoin mode)
{
DrsRenderer *renderer = DRS_RENDERER (self);
xmlNodePtr node;
gchar *value = NULL;
- switch(mode) {
- case LINEJOIN_DEFAULT:
- case LINEJOIN_MITER:
- value = "miter";
- break;
- case LINEJOIN_ROUND:
- value = "round";
- break;
- case LINEJOIN_BEVEL:
- value = "bevel";
- break;
- /* intentionally no default to let 'good' compilers warn about new constants*/
+ switch (mode) {
+ case LINEJOIN_DEFAULT:
+ case LINEJOIN_MITER:
+ value = "miter";
+ break;
+ case LINEJOIN_ROUND:
+ value = "round";
+ break;
+ case LINEJOIN_BEVEL:
+ value = "bevel";
+ break;
+ default:
+ g_return_if_reached ();
}
- node = xmlNewChild(renderer->root, NULL, (const xmlChar *)"set-linejoin", NULL);
- xmlSetProp(node, (const xmlChar *)"mode",
- value ? (xmlChar *)value : (xmlChar *)"?");
+ node = xmlNewChild (renderer->root, NULL,
+ (const xmlChar *) "set-linejoin", NULL);
+ xmlSetProp (node, (const xmlChar *) "mode",
+ value ? (xmlChar *) value : (xmlChar *) "?");
}
+
static void
-set_linestyle(DiaRenderer *self, LineStyle mode, real dash_length)
+set_linestyle (DiaRenderer *self, LineStyle mode, real dash_length)
{
DrsRenderer *renderer = DRS_RENDERER (self);
xmlNodePtr node;
@@ -413,58 +447,67 @@ set_linestyle(DiaRenderer *self, LineStyle mode, real dash_length)
/* line type */
switch (mode) {
- case LINESTYLE_DEFAULT:
- case LINESTYLE_SOLID:
- value = "solid";
- break;
- case LINESTYLE_DASHED:
- value = "dashed";
- break;
- case LINESTYLE_DASH_DOT:
- value = "dash-dot";
- break;
- case LINESTYLE_DASH_DOT_DOT:
- value = "dash-dot-dot";
- break;
- case LINESTYLE_DOTTED:
- value = "dotted";
- break;
- /* intentionally no default to let 'good' compilers warn about new constants*/
+ case LINESTYLE_DEFAULT:
+ case LINESTYLE_SOLID:
+ value = "solid";
+ break;
+ case LINESTYLE_DASHED:
+ value = "dashed";
+ break;
+ case LINESTYLE_DASH_DOT:
+ value = "dash-dot";
+ break;
+ case LINESTYLE_DASH_DOT_DOT:
+ value = "dash-dot-dot";
+ break;
+ case LINESTYLE_DOTTED:
+ value = "dotted";
+ break;
+ default:
+ g_return_if_reached ();
}
- node = xmlNewChild(renderer->root, NULL, (const xmlChar *)"set-linestyle", NULL);
- xmlSetProp(node, (const xmlChar *)"mode",
- value ? (xmlChar *)value : (xmlChar *)"?");
- if (mode != LINESTYLE_SOLID)
+ node = xmlNewChild (renderer->root, NULL,
+ (const xmlChar *) "set-linestyle", NULL);
+ xmlSetProp (node, (const xmlChar *) "mode",
+ value ? (xmlChar *) value : (xmlChar *) "?");
+ if (mode != LINESTYLE_SOLID) {
_node_set_real (node, "dash-length", dash_length);
+ }
}
+
static void
-set_fillstyle(DiaRenderer *self, FillStyle mode)
+set_fillstyle (DiaRenderer *self, FillStyle mode)
{
DrsRenderer *renderer = DRS_RENDERER (self);
xmlNodePtr node;
const gchar *value = NULL;
switch(mode) {
- case FILLSTYLE_SOLID:
- value = "solid";
- break;
- /* intentionally no default to let 'good' compilers warn about new constants*/
+ case FILLSTYLE_SOLID:
+ value = "solid";
+ break;
+ default:
+ g_return_if_reached ();
}
- node = xmlNewChild(renderer->root, NULL, (const xmlChar *)"set-fillstyle", NULL);
- xmlSetProp(node, (const xmlChar *)"mode",
- value ? (xmlChar *)value : (xmlChar *)"?");
+
+ node = xmlNewChild (renderer->root, NULL,
+ (const xmlChar *) "set-fillstyle", NULL);
+ xmlSetProp (node, (const xmlChar *) "mode",
+ value ? (xmlChar *) value : (xmlChar *) "?");
}
+
static void
-draw_line(DiaRenderer *self,
- Point *start, Point *end,
- Color *color)
+draw_line (DiaRenderer *self,
+ Point *start,
+ Point *end,
+ Color *color)
{
DrsRenderer *renderer = DRS_RENDERER (self);
xmlNodePtr node;
- node = xmlNewChild(renderer->root, NULL, (const xmlChar *)"line", NULL);
+ node = xmlNewChild (renderer->root, NULL, (const xmlChar *) "line", NULL);
_node_set_point (node, "start", start);
_node_set_point (node, "end", end);
_node_set_color (node, "stroke", color);
@@ -658,37 +701,43 @@ draw_rounded_polyline (DiaRenderer *self,
_node_set_real (node, "r", radius);
}
+
static void
-draw_string(DiaRenderer *self,
- const char *text,
- Point *pos, Alignment alignment,
- Color *color)
+draw_string (DiaRenderer *self,
+ const char *text,
+ Point *pos,
+ Alignment alignment,
+ Color *color)
{
DrsRenderer *renderer = DRS_RENDERER (self);
xmlNodePtr node;
gchar *align = NULL;
- node = xmlNewChild(renderer->root, NULL, (const xmlChar *)"string", NULL);
+ node = xmlNewChild (renderer->root, NULL, (const xmlChar *) "string", NULL);
_node_set_point (node, "pos", pos);
_node_set_color (node, "fill", color);
switch (alignment) {
- case ALIGN_LEFT :
- align = "left";
- break;
- case ALIGN_RIGHT :
- align = "right";
- break;
- case ALIGN_CENTER :
- align = "center";
- break;
- /* intentionally no default */
+ case ALIGN_LEFT :
+ align = "left";
+ break;
+ case ALIGN_RIGHT :
+ align = "right";
+ break;
+ case ALIGN_CENTER :
+ align = "center";
+ break;
+ default:
+ g_return_if_reached ();
}
- if (align)
- xmlSetProp(node, (const xmlChar *)"alignment", (xmlChar *) align);
- xmlNodeSetContent (node, (const xmlChar *)text);
+ if (align) {
+ xmlSetProp (node, (const xmlChar *) "alignment", (xmlChar *) align);
+ }
+
+ xmlNodeSetContent (node, (const xmlChar *) text);
}
+
static void
draw_image(DiaRenderer *self,
Point *point,
diff --git a/plug-ins/dxf/dxf-export.c b/plug-ins/dxf/dxf-export.c
index 523789c3..f1c851ac 100644
--- a/plug-ins/dxf/dxf-export.c
+++ b/plug-ins/dxf/dxf-export.c
@@ -263,39 +263,42 @@ set_linejoin(DiaRenderer *self, LineJoin mode)
{
}
+
static void
-set_linestyle(DiaRenderer *self, LineStyle mode, real dash_length)
+set_linestyle (DiaRenderer *self, LineStyle mode, real dash_length)
{
- DxfRenderer *renderer = DXF_RENDERER(self);
- char *style;
+ DxfRenderer *renderer = DXF_RENDERER(self);
+ char *style;
- switch(mode)
- {
+ switch (mode) {
case LINESTYLE_DASHED:
- style = "DASH";
- break;
+ style = "DASH";
+ break;
case LINESTYLE_DASH_DOT:
- style = "DASHDOT";
- break;
+ style = "DASHDOT";
+ break;
case LINESTYLE_DASH_DOT_DOT:
- style = "DASHDOT";
- break;
+ style = "DASHDOT";
+ break;
case LINESTYLE_DOTTED:
- style = "DOT";
- break;
+ style = "DOT";
+ break;
case LINESTYLE_SOLID:
+ case LINESTYLE_DEFAULT:
default:
- style = "CONTINUOUS";
- break;
- }
- renderer->lcurrent.style = renderer->fcurrent.style = style;
+ style = "CONTINUOUS";
+ break;
+ }
+ renderer->lcurrent.style = renderer->fcurrent.style = style;
}
+
static void
set_fillstyle(DiaRenderer *self, FillStyle mode)
{
}
+
static int
dxf_color (const Color *color)
{
diff --git a/plug-ins/hpgl/hpgl.c b/plug-ins/hpgl/hpgl.c
index 36f227f1..194088ee 100644
--- a/plug-ins/hpgl/hpgl.c
+++ b/plug-ins/hpgl/hpgl.c
@@ -519,34 +519,39 @@ draw_ellipse(DiaRenderer *object,
}
}
+
static void
-draw_string(DiaRenderer *object,
- const char *text,
- Point *pos, Alignment alignment,
- Color *colour)
+draw_string (DiaRenderer *object,
+ const char *text,
+ Point *pos,
+ Alignment alignment,
+ Color *colour)
{
- HpglRenderer *renderer = HPGL_RENDERER (object);
- real width, height;
+ HpglRenderer *renderer = HPGL_RENDERER (object);
+ real width, height;
- DIAG_NOTE(g_message("draw_string %f,%f %s",
- pos->x, pos->y, text));
+ DIAG_NOTE (g_message ("draw_string %f,%f %s",
+ pos->x, pos->y, text));
- /* set position */
- fprintf(renderer->file, "PU%d,%d;",
- hpgl_scale(renderer, pos->x), hpgl_scale(renderer, -pos->y));
+ /* set position */
+ fprintf (renderer->file, "PU%d,%d;",
+ hpgl_scale (renderer, pos->x), hpgl_scale (renderer, -pos->y));
- switch (alignment) {
+ switch (alignment) {
case ALIGN_LEFT:
- fprintf (renderer->file, "LO1;\n");
- break;
+ fprintf (renderer->file, "LO1;\n");
+ break;
case ALIGN_CENTER:
- fprintf (renderer->file, "LO4;\n");
- break;
+ fprintf (renderer->file, "LO4;\n");
+ break;
case ALIGN_RIGHT:
- fprintf (renderer->file, "LO7;\n");
- break;
- }
- hpgl_select_pen(renderer,colour,0.0);
+ fprintf (renderer->file, "LO7;\n");
+ break;
+ default:
+ g_return_if_reached ();
+ }
+
+ hpgl_select_pen (renderer, colour, 0.0);
#if 0
/*
diff --git a/plug-ins/metapost/render_metapost.c b/plug-ins/metapost/render_metapost.c
index ef1f70d9..b9088f62 100644
--- a/plug-ins/metapost/render_metapost.c
+++ b/plug-ins/metapost/render_metapost.c
@@ -313,71 +313,77 @@ set_linestyle(DiaRenderer *self, LineStyle mode, real dash_length)
renderer->dot_length = dash_length * 0.1;
}
+
static void
-draw_with_linestyle(MetapostRenderer *renderer)
+draw_with_linestyle (MetapostRenderer *renderer)
{
- real hole_width;
- gchar dash_length_buf[DTOSTR_BUF_SIZE];
- gchar dot_lenght_buf[DTOSTR_BUF_SIZE];
- gchar hole_width_buf[DTOSTR_BUF_SIZE];
+ real hole_width;
+ gchar dash_length_buf[DTOSTR_BUF_SIZE];
+ gchar dot_lenght_buf[DTOSTR_BUF_SIZE];
+ gchar hole_width_buf[DTOSTR_BUF_SIZE];
- switch(renderer->saved_line_style) {
- case LINESTYLE_DEFAULT:
- case LINESTYLE_SOLID:
- break;
+ switch (renderer->saved_line_style) {
case LINESTYLE_DASHED:
- mp_dtostr(dash_length_buf, renderer->dash_length);
- fprintf(renderer->file, "\n dashed dashpattern (on %sx off %sx)",
- dash_length_buf, dash_length_buf);
- break;
+ mp_dtostr (dash_length_buf, renderer->dash_length);
+ fprintf (renderer->file, "\n dashed dashpattern (on %sx off %sx)",
+ dash_length_buf, dash_length_buf);
+ break;
case LINESTYLE_DASH_DOT:
- hole_width = (renderer->dash_length - renderer->dot_length) / 2.0;
+ hole_width = (renderer->dash_length - renderer->dot_length) / 2.0;
- mp_dtostr(dash_length_buf, renderer->dash_length);
- mp_dtostr(dot_lenght_buf, renderer->dot_length);
- mp_dtostr(hole_width_buf, hole_width);
+ mp_dtostr (dash_length_buf, renderer->dash_length);
+ mp_dtostr (dot_lenght_buf, renderer->dot_length);
+ mp_dtostr (hole_width_buf, hole_width);
- fprintf(renderer->file, "\n dashed dashpattern (on %sx off %sx on %sx off %sx)",
- dash_length_buf, hole_width_buf,
- dot_lenght_buf, hole_width_buf);
- break;
+ fprintf (renderer->file,
+ "\n dashed dashpattern (on %sx off %sx on %sx off %sx)",
+ dash_length_buf, hole_width_buf,
+ dot_lenght_buf, hole_width_buf);
+ break;
case LINESTYLE_DASH_DOT_DOT:
- hole_width = (renderer->dash_length - 2.0*renderer->dot_length) / 3.0;
+ hole_width = (renderer->dash_length - 2.0*renderer->dot_length) / 3.0;
- mp_dtostr(dash_length_buf, renderer->dash_length);
- mp_dtostr(dot_lenght_buf, renderer->dot_length);
- mp_dtostr(hole_width_buf, hole_width);
+ mp_dtostr (dash_length_buf, renderer->dash_length);
+ mp_dtostr (dot_lenght_buf, renderer->dot_length);
+ mp_dtostr (hole_width_buf, hole_width);
- fprintf(renderer->file, "\n dashed dashpattern (on %sx off %sx on %sx off %sx on %sx off %sx)",
- dash_length_buf, hole_width_buf,
- dot_lenght_buf, hole_width_buf,
- dot_lenght_buf, hole_width_buf );
- break;
+ fprintf (renderer->file,
+ "\n dashed dashpattern (on %sx off %sx on %sx off %sx on %sx off %sx)",
+ dash_length_buf, hole_width_buf,
+ dot_lenght_buf, hole_width_buf,
+ dot_lenght_buf, hole_width_buf );
+ break;
case LINESTYLE_DOTTED:
- hole_width = renderer->dot_length * 5.0;
- mp_dtostr(dot_lenght_buf, renderer->dot_length);
- mp_dtostr(hole_width_buf, hole_width);
+ hole_width = renderer->dot_length * 5.0;
+ mp_dtostr (dot_lenght_buf, renderer->dot_length);
+ mp_dtostr (hole_width_buf, hole_width);
- fprintf(renderer->file, "\n dashed dashpattern (on %sx off %sx)",
- dot_lenght_buf, hole_width_buf);
- break;
- }
+ fprintf (renderer->file, "\n dashed dashpattern (on %sx off %sx)",
+ dot_lenght_buf, hole_width_buf);
+ break;
+ case LINESTYLE_DEFAULT:
+ case LINESTYLE_SOLID:
+ default:
+ break;
+ }
}
+
static void
-set_fillstyle(DiaRenderer *self, FillStyle mode)
+set_fillstyle (DiaRenderer *self, FillStyle mode)
{
- /*MetapostRenderer *renderer = METAPOST_RENDERER (self);*/
+ /*MetapostRenderer *renderer = METAPOST_RENDERER (self);*/
- switch(mode) {
+ switch(mode) {
case FILLSTYLE_SOLID:
- break;
+ break;
default:
- g_warning ("%s: Unsupported fill mode specified!",
- G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (self)));
+ g_warning ("%s: Unsupported fill mode specified!",
+ G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (self)));
}
}
+
static void
set_font(DiaRenderer *self, DiaFont *font, real height)
{
@@ -640,199 +646,218 @@ draw_ellipse(DiaRenderer *self,
}
}
+
static void
-draw_bezier(DiaRenderer *self,
- BezPoint *points,
- int numpoints, /* numpoints = 4+3*n, n=>0 */
- Color *color)
+draw_bezier (DiaRenderer *self,
+ BezPoint *points,
+ int numpoints, /* numpoints = 4+3*n, n=>0 */
+ Color *color)
{
- MetapostRenderer *renderer = METAPOST_RENDERER (self);
- gint i;
- gchar p1x_buf[DTOSTR_BUF_SIZE];
- gchar p1y_buf[DTOSTR_BUF_SIZE];
- gchar p2x_buf[DTOSTR_BUF_SIZE];
- gchar p2y_buf[DTOSTR_BUF_SIZE];
- gchar p3x_buf[DTOSTR_BUF_SIZE];
- gchar p3y_buf[DTOSTR_BUF_SIZE];
+ MetapostRenderer *renderer = METAPOST_RENDERER (self);
+ gint i;
+ gchar p1x_buf[DTOSTR_BUF_SIZE];
+ gchar p1y_buf[DTOSTR_BUF_SIZE];
+ gchar p2x_buf[DTOSTR_BUF_SIZE];
+ gchar p2y_buf[DTOSTR_BUF_SIZE];
+ gchar p3x_buf[DTOSTR_BUF_SIZE];
+ gchar p3y_buf[DTOSTR_BUF_SIZE];
+
+ set_line_color (renderer, color);
+
+ if (points[0].type != BEZ_MOVE_TO) {
+ g_warning ("first BezPoint must be a BEZ_MOVE_TO");
+ }
- set_line_color(renderer,color);
+ fprintf (renderer->file, " draw (%sx,%sy)",
+ mp_dtostr (p1x_buf, (gdouble) points[0].p1.x),
+ mp_dtostr (p1y_buf, (gdouble) points[0].p1.y) );
+
+ for (i = 1; i < numpoints; i++) {
+ switch (points[i].type) {
+ case BEZ_MOVE_TO:
+ g_warning ("only first BezPoint can be a BEZ_MOVE_TO");
+ break;
+ case BEZ_LINE_TO:
+ fprintf (renderer->file, "--(%sx,%sy)",
+ mp_dtostr (p1x_buf, (gdouble) points[i].p1.x),
+ mp_dtostr (p1y_buf, (gdouble) points[i].p1.y) );
+ break;
+ case BEZ_CURVE_TO:
+ fprintf (renderer->file, "..controls (%sx,%sy) and (%sx,%sy)\n ..(%sx,%sy)",
+ mp_dtostr (p1x_buf, (gdouble) points[i].p1.x),
+ mp_dtostr (p1y_buf, (gdouble) points[i].p1.y),
+ mp_dtostr (p2x_buf, (gdouble) points[i].p2.x),
+ mp_dtostr (p2y_buf, (gdouble) points[i].p2.y),
+ mp_dtostr (p3x_buf, (gdouble) points[i].p3.x),
+ mp_dtostr (p3y_buf, (gdouble) points[i].p3.y) );
+ break;
+ default:
+ g_return_if_reached ();
+ }
+ }
- if (points[0].type != BEZ_MOVE_TO)
- g_warning("first BezPoint must be a BEZ_MOVE_TO");
-
- fprintf(renderer->file, " draw (%sx,%sy)",
- mp_dtostr(p1x_buf, (gdouble) points[0].p1.x),
- mp_dtostr(p1y_buf, (gdouble) points[0].p1.y) );
-
- for (i = 1; i < numpoints; i++)
- switch (points[i].type) {
- case BEZ_MOVE_TO:
- g_warning("only first BezPoint can be a BEZ_MOVE_TO");
- break;
- case BEZ_LINE_TO:
- fprintf(renderer->file, "--(%sx,%sy)",
- mp_dtostr(p1x_buf, (gdouble) points[i].p1.x),
- mp_dtostr(p1y_buf, (gdouble) points[i].p1.y) );
- break;
- case BEZ_CURVE_TO:
- fprintf(renderer->file, "..controls (%sx,%sy) and (%sx,%sy)\n ..(%sx,%sy)",
- mp_dtostr(p1x_buf, (gdouble) points[i].p1.x),
- mp_dtostr(p1y_buf, (gdouble) points[i].p1.y),
- mp_dtostr(p2x_buf, (gdouble) points[i].p2.x),
- mp_dtostr(p2y_buf, (gdouble) points[i].p2.y),
- mp_dtostr(p3x_buf, (gdouble) points[i].p3.x),
- mp_dtostr(p3y_buf, (gdouble) points[i].p3.y) );
- break;
- }
- end_draw_op(renderer);
+ end_draw_op (renderer);
}
+
static void
draw_beziergon (DiaRenderer *self,
- BezPoint *points,
- int numpoints,
- Color *fill,
- Color *stroke)
+ BezPoint *points,
+ int numpoints,
+ Color *fill,
+ Color *stroke)
{
- MetapostRenderer *renderer = METAPOST_RENDERER (self);
- gint i;
- gchar p1x_buf[DTOSTR_BUF_SIZE];
- gchar p1y_buf[DTOSTR_BUF_SIZE];
- gchar p2x_buf[DTOSTR_BUF_SIZE];
- gchar p2y_buf[DTOSTR_BUF_SIZE];
- gchar p3x_buf[DTOSTR_BUF_SIZE];
- gchar p3y_buf[DTOSTR_BUF_SIZE];
- gchar red_buf[DTOSTR_BUF_SIZE];
- gchar green_buf[DTOSTR_BUF_SIZE];
- gchar blue_buf[DTOSTR_BUF_SIZE];
-
- if (points[0].type != BEZ_MOVE_TO)
- g_warning("first BezPoint must be a BEZ_MOVE_TO");
-
- if (stroke)
- set_line_color(renderer,stroke);
-
- fprintf(renderer->file, " path p;\n");
- fprintf(renderer->file, " p = (%sx,%sy)",
- mp_dtostr(p1x_buf, (gdouble) points[0].p1.x),
- mp_dtostr(p1y_buf, (gdouble) points[0].p1.y) );
-
- for (i = 1; i < numpoints; i++)
- switch (points[i].type) {
- case BEZ_MOVE_TO:
- /* close previous, new move-to - XXX: not working, not used, gives:
- * Paths don't touch; `&' will be changed to `..'.
- */
- fprintf(renderer->file, " ..cycle\n & (%sx,%sy)",
- mp_dtostr(p1x_buf, (gdouble) points[i].p1.x),
- mp_dtostr(p1y_buf, (gdouble) points[i].p1.y) );
- break;
- case BEZ_LINE_TO:
- fprintf(renderer->file, "--(%sx,%sy)",
- mp_dtostr(p1x_buf, (gdouble) points[i].p1.x),
- mp_dtostr(p1y_buf, (gdouble) points[i].p1.y) );
- break;
- case BEZ_CURVE_TO:
- fprintf(renderer->file, "..controls (%sx,%sy) and (%sx,%sy)\n ..(%sx,%sy)",
- mp_dtostr(p1x_buf, (gdouble) points[i].p1.x),
- mp_dtostr(p1y_buf, (gdouble) points[i].p1.y),
- mp_dtostr(p2x_buf, (gdouble) points[i].p2.x),
- mp_dtostr(p2y_buf, (gdouble) points[i].p2.y),
- mp_dtostr(p3x_buf, (gdouble) points[i].p3.x),
- mp_dtostr(p3y_buf, (gdouble) points[i].p3.y) );
- break;
- }
- fprintf(renderer->file, "\n ..cycle;\n");
+ MetapostRenderer *renderer = METAPOST_RENDERER (self);
+ gint i;
+ gchar p1x_buf[DTOSTR_BUF_SIZE];
+ gchar p1y_buf[DTOSTR_BUF_SIZE];
+ gchar p2x_buf[DTOSTR_BUF_SIZE];
+ gchar p2y_buf[DTOSTR_BUF_SIZE];
+ gchar p3x_buf[DTOSTR_BUF_SIZE];
+ gchar p3y_buf[DTOSTR_BUF_SIZE];
+ gchar red_buf[DTOSTR_BUF_SIZE];
+ gchar green_buf[DTOSTR_BUF_SIZE];
+ gchar blue_buf[DTOSTR_BUF_SIZE];
+
+ if (points[0].type != BEZ_MOVE_TO) {
+ g_warning ("first BezPoint must be a BEZ_MOVE_TO");
+ }
- if (fill)
- fprintf(renderer->file,
- " fill p withcolor (%s,%s,%s);\n",
- mp_dtostr(red_buf, (gdouble) fill->red),
- mp_dtostr(green_buf, (gdouble) fill->green),
- mp_dtostr(blue_buf, (gdouble) fill->blue) );
+ if (stroke) {
+ set_line_color (renderer,stroke);
+ }
- if (stroke) {
- fprintf(renderer->file, " draw p");
- end_draw_op(renderer);
+ fprintf (renderer->file, " path p;\n");
+ fprintf (renderer->file, " p = (%sx,%sy)",
+ mp_dtostr (p1x_buf, (gdouble) points[0].p1.x),
+ mp_dtostr (p1y_buf, (gdouble) points[0].p1.y) );
+
+ for (i = 1; i < numpoints; i++) {
+ switch (points[i].type) {
+ case BEZ_MOVE_TO:
+ /* close previous, new move-to - XXX: not working, not used, gives:
+ * Paths don't touch; `&' will be changed to `..'.
+ */
+ fprintf (renderer->file, " ..cycle\n & (%sx,%sy)",
+ mp_dtostr (p1x_buf, (gdouble) points[i].p1.x),
+ mp_dtostr (p1y_buf, (gdouble) points[i].p1.y) );
+ break;
+ case BEZ_LINE_TO:
+ fprintf (renderer->file, "--(%sx,%sy)",
+ mp_dtostr (p1x_buf, (gdouble) points[i].p1.x),
+ mp_dtostr (p1y_buf, (gdouble) points[i].p1.y) );
+ break;
+ case BEZ_CURVE_TO:
+ fprintf (renderer->file, "..controls (%sx,%sy) and (%sx,%sy)\n ..(%sx,%sy)",
+ mp_dtostr(p1x_buf, (gdouble) points[i].p1.x),
+ mp_dtostr(p1y_buf, (gdouble) points[i].p1.y),
+ mp_dtostr(p2x_buf, (gdouble) points[i].p2.x),
+ mp_dtostr(p2y_buf, (gdouble) points[i].p2.y),
+ mp_dtostr(p3x_buf, (gdouble) points[i].p3.x),
+ mp_dtostr(p3y_buf, (gdouble) points[i].p3.y) );
+ break;
+ default:
+ g_return_if_reached ();
}
+ }
+ fprintf (renderer->file, "\n ..cycle;\n");
+
+ if (fill) {
+ fprintf (renderer->file,
+ " fill p withcolor (%s,%s,%s);\n",
+ mp_dtostr (red_buf, (gdouble) fill->red),
+ mp_dtostr (green_buf, (gdouble) fill->green),
+ mp_dtostr (blue_buf, (gdouble) fill->blue) );
+ }
+
+ if (stroke) {
+ fprintf (renderer->file, " draw p");
+ end_draw_op (renderer);
+ }
}
+
static void
-draw_string(DiaRenderer *self,
- const char *text,
- Point *pos, Alignment alignment,
- Color *color)
+draw_string (DiaRenderer *self,
+ const char *text,
+ Point *pos,
+ Alignment alignment,
+ Color *color)
{
- MetapostRenderer *renderer = METAPOST_RENDERER (self);
- gchar height_buf[DTOSTR_BUF_SIZE];
- gchar px_buf[DTOSTR_BUF_SIZE];
- gchar py_buf[DTOSTR_BUF_SIZE];
- gchar red_buf[DTOSTR_BUF_SIZE];
- gchar green_buf[DTOSTR_BUF_SIZE];
- gchar blue_buf[DTOSTR_BUF_SIZE];
-
- set_line_color(renderer,color);
-
- /* text position is correct for baseline. Uses macros defined
- * at top of MetaPost file (see export_metapost) to correctly
- * align text. See bug # 332554 */
- switch (alignment) {
+ MetapostRenderer *renderer = METAPOST_RENDERER (self);
+ gchar height_buf[DTOSTR_BUF_SIZE];
+ gchar px_buf[DTOSTR_BUF_SIZE];
+ gchar py_buf[DTOSTR_BUF_SIZE];
+ gchar red_buf[DTOSTR_BUF_SIZE];
+ gchar green_buf[DTOSTR_BUF_SIZE];
+ gchar blue_buf[DTOSTR_BUF_SIZE];
+
+ set_line_color (renderer, color);
+
+ /* text position is correct for baseline. Uses macros defined
+ * at top of MetaPost file (see export_metapost) to correctly
+ * align text. See bug # 332554 */
+ switch (alignment) {
case ALIGN_LEFT:
- fprintf(renderer->file," draw");
- break;
+ fprintf (renderer->file," draw");
+ break;
case ALIGN_CENTER:
- fprintf(renderer->file," draw hcentered");
- break;
+ fprintf (renderer->file," draw hcentered");
+ break;
case ALIGN_RIGHT:
- fprintf(renderer->file," draw rjust");
- break;
- }
-
- /* Ideally, we would be able to use the "infont" macro to print this label
- * in the proper font. Unfortunately, though, metapost is in the habit of
- * converting spaces into visible spaces, which looks rather yucky. So we
- * embed some TeX with \usefont commands instead. */
- /* Scale text by multiplying text by variable t in metapost */
- fprintf(renderer->file,
- " btex {\\usefont{OT1}{%s}{%s}{%s} %s} etex scaled %st shifted (%sx,%sy)",
- renderer->mp_font, renderer->mp_weight, renderer->mp_slant,
- text,
- g_ascii_formatd(height_buf, sizeof(height_buf), "%g", renderer->mp_font_height),
- mp_dtostr(px_buf, pos->x),
- mp_dtostr(py_buf, pos->y) );
+ fprintf (renderer->file," draw rjust");
+ break;
+ default:
+ g_return_if_reached ();
+ }
- if (!color_equals(&renderer->color, &color_black))
- fprintf(renderer->file, "\n withcolor (%s, %s, %s)",
- g_ascii_formatd(red_buf, sizeof(red_buf), "%5.4f", (gdouble) renderer->color.red),
- g_ascii_formatd(green_buf, sizeof(green_buf), "%5.4f", (gdouble) renderer->color.green),
- g_ascii_formatd(blue_buf, sizeof(blue_buf), "%5.4f", (gdouble) renderer->color.blue) );
+ /* Ideally, we would be able to use the "infont" macro to print this label
+ * in the proper font. Unfortunately, though, metapost is in the habit of
+ * converting spaces into visible spaces, which looks rather yucky. So we
+ * embed some TeX with \usefont commands instead. */
+ /* Scale text by multiplying text by variable t in metapost */
+ fprintf (renderer->file,
+ " btex {\\usefont{OT1}{%s}{%s}{%s} %s} etex scaled %st shifted (%sx,%sy)",
+ renderer->mp_font, renderer->mp_weight, renderer->mp_slant,
+ text,
+ g_ascii_formatd (height_buf, sizeof (height_buf), "%g", renderer->mp_font_height),
+ mp_dtostr (px_buf, pos->x),
+ mp_dtostr (py_buf, pos->y) );
+
+ if (!color_equals(&renderer->color, &color_black)) {
+ fprintf (renderer->file, "\n withcolor (%s, %s, %s)",
+ g_ascii_formatd (red_buf, sizeof (red_buf), "%5.4f", (gdouble) renderer->color.red),
+ g_ascii_formatd (green_buf, sizeof (green_buf), "%5.4f", (gdouble) renderer->color.green),
+ g_ascii_formatd (blue_buf, sizeof (blue_buf), "%5.4f", (gdouble) renderer->color.blue) );
+ }
- fprintf(renderer->file,";\n");
+ fprintf (renderer->file,";\n");
}
+
static void
draw_text (DiaRenderer *self,
- Text *text)
+ Text *text)
{
Point pos;
int i;
pos = text->position;
+ set_font (self, text->font, text->height);
- set_font(self, text->font, text->height);
-
- for (i=0;i<text->numlines;i++) {
+ for (i = 0; i < text->numlines; i++) {
TextLine *text_line = text->lines[i];
- draw_string(self,
- text_line_get_string(text_line),
- &pos,
- text->alignment,
- &text->color);
+ draw_string (self,
+ text_line_get_string (text_line),
+ &pos,
+ text->alignment,
+ &text->color);
pos.y += text->height;
}
}
+
static void
draw_image(DiaRenderer *self,
Point *point,
diff --git a/plug-ins/pgf/render_pgf.c b/plug-ins/pgf/render_pgf.c
index 0fdbee37..a416c435 100644
--- a/plug-ins/pgf/render_pgf.c
+++ b/plug-ins/pgf/render_pgf.c
@@ -390,124 +390,132 @@ begin_render(DiaRenderer *self, const DiaRectangle *update)
{
}
+
static void
-end_render(DiaRenderer *self)
+end_render (DiaRenderer *self)
{
- PgfRenderer *renderer = PGF_RENDERER(self);
+ PgfRenderer *renderer = PGF_RENDERER (self);
- fprintf(renderer->file,"\\end{tikzpicture}\n");
- fclose(renderer->file);
+ fprintf (renderer->file, "\\end{tikzpicture}\n");
+ fclose (renderer->file);
}
+
static void
-set_linewidth(DiaRenderer *self, real linewidth)
-{ /* 0 == hairline (thinnest possible line on device) **/
- PgfRenderer *renderer = PGF_RENDERER(self);
- gchar d_buf[DTOSTR_BUF_SIZE];
+set_linewidth (DiaRenderer *self, real linewidth)
+{
+ /* 0 == hairline (thinnest possible line on device) **/
+ PgfRenderer *renderer = PGF_RENDERER (self);
+ gchar d_buf[DTOSTR_BUF_SIZE];
- fprintf(renderer->file, "\\pgfsetlinewidth{%s\\du}\n",
- pgf_dtostr(d_buf, (gdouble) linewidth) );
+ fprintf (renderer->file, "\\pgfsetlinewidth{%s\\du}\n",
+ pgf_dtostr(d_buf, (gdouble) linewidth) );
}
+
static void
-set_linecaps(DiaRenderer *self, LineCaps mode)
+set_linecaps (DiaRenderer *self, LineCaps mode)
{
- PgfRenderer *renderer = PGF_RENDERER(self);
+ PgfRenderer *renderer = PGF_RENDERER(self);
- switch(mode) {
+ switch (mode) {
case LINECAPS_BUTT:
- fprintf(renderer->file, "\\pgfsetbuttcap\n");
- break;
+ fprintf (renderer->file, "\\pgfsetbuttcap\n");
+ break;
case LINECAPS_ROUND:
- fprintf(renderer->file, "\\pgfsetroundcap\n");
- break;
+ fprintf (renderer->file, "\\pgfsetroundcap\n");
+ break;
case LINECAPS_PROJECTING:
- fprintf(renderer->file, "\\pgfsetrectcap\n");
- break;
+ fprintf (renderer->file, "\\pgfsetrectcap\n");
+ break;
+ case LINECAPS_DEFAULT:
default:
- fprintf(renderer->file, "\\pgfsetbuttcap\n");
- }
-
+ fprintf (renderer->file, "\\pgfsetbuttcap\n");
+ }
}
+
static void
-set_linejoin(DiaRenderer *self, LineJoin mode)
+set_linejoin (DiaRenderer *self, LineJoin mode)
{
- PgfRenderer *renderer = PGF_RENDERER(self);
- /* int ps_mode; */
+ PgfRenderer *renderer = PGF_RENDERER(self);
+ /* int ps_mode; */
- switch(mode) {
+ switch(mode) {
case LINEJOIN_DEFAULT:
case LINEJOIN_MITER:
- fprintf(renderer->file, "\\pgfsetmiterjoin\n");
- break;
+ fprintf(renderer->file, "\\pgfsetmiterjoin\n");
+ break;
case LINEJOIN_ROUND:
- fprintf(renderer->file, "\\pgfsetroundjoin\n");
- break;
+ fprintf(renderer->file, "\\pgfsetroundjoin\n");
+ break;
case LINEJOIN_BEVEL:
- fprintf(renderer->file, "\\pgfsetbeveljoin\n");
- break;
+ fprintf(renderer->file, "\\pgfsetbeveljoin\n");
+ break;
default:
- fprintf(renderer->file, "\\pgfsetmiterjoin\n");
- }
-
+ fprintf(renderer->file, "\\pgfsetmiterjoin\n");
+ }
}
+
static void
-set_linestyle(DiaRenderer *self, LineStyle mode, real dash_length)
+set_linestyle (DiaRenderer *self, LineStyle mode, real dash_length)
{
- PgfRenderer *renderer = PGF_RENDERER(self);
- real hole_width;
- gchar dash_length_buf[DTOSTR_BUF_SIZE];
- gchar dot_length_buf[DTOSTR_BUF_SIZE];
- gchar hole_width_buf[DTOSTR_BUF_SIZE];
- real dot_length;
+ PgfRenderer *renderer = PGF_RENDERER(self);
+ real hole_width;
+ gchar dash_length_buf[DTOSTR_BUF_SIZE];
+ gchar dot_length_buf[DTOSTR_BUF_SIZE];
+ gchar hole_width_buf[DTOSTR_BUF_SIZE];
+ real dot_length;
+
+ if (dash_length < 0.001) {
+ dash_length = 0.001;
+ }
- if (dash_length<0.001)
- dash_length = 0.001;
- /* dot = 20% of len - elsewhere 10% */
- dot_length = dash_length * 0.2;
+ /* dot = 20% of len - elsewhere 10% */
+ dot_length = dash_length * 0.2;
- switch(mode) {
+ switch(mode) {
case LINESTYLE_DEFAULT:
case LINESTYLE_SOLID:
- fprintf(renderer->file, "\\pgfsetdash{}{0pt}\n");
- break;
+ default:
+ fprintf (renderer->file, "\\pgfsetdash{}{0pt}\n");
+ break;
case LINESTYLE_DASHED:
- pgf_dtostr(dash_length_buf, dash_length);
- fprintf(renderer->file, "\\pgfsetdash{{%s\\du}{%s\\du}}{0\\du}\n",
- dash_length_buf,
- dash_length_buf);
- break;
+ pgf_dtostr (dash_length_buf, dash_length);
+ fprintf (renderer->file, "\\pgfsetdash{{%s\\du}{%s\\du}}{0\\du}\n",
+ dash_length_buf,
+ dash_length_buf);
+ break;
case LINESTYLE_DASH_DOT:
- hole_width = ( dash_length - dot_length) / 2.0;
- pgf_dtostr(hole_width_buf,hole_width);
- pgf_dtostr(dot_length_buf, dot_length);
- pgf_dtostr(dash_length_buf, dash_length);
- fprintf(renderer->file, "\\pgfsetdash{{%s\\du}{%s\\du}{%s\\du}{%s\\du}}{0cm}\n",
- dash_length_buf,
- hole_width_buf,
- dot_length_buf,
- hole_width_buf );
- break;
+ hole_width = ( dash_length - dot_length) / 2.0;
+ pgf_dtostr (hole_width_buf, hole_width);
+ pgf_dtostr (dot_length_buf, dot_length);
+ pgf_dtostr (dash_length_buf, dash_length);
+ fprintf (renderer->file, "\\pgfsetdash{{%s\\du}{%s\\du}{%s\\du}{%s\\du}}{0cm}\n",
+ dash_length_buf,
+ hole_width_buf,
+ dot_length_buf,
+ hole_width_buf );
+ break;
case LINESTYLE_DASH_DOT_DOT:
- hole_width = ( dash_length - 2.0* dot_length) / 3.0;
- pgf_dtostr(hole_width_buf,hole_width);
- pgf_dtostr(dot_length_buf, dot_length);
- pgf_dtostr(dash_length_buf, dash_length);
- fprintf(renderer->file, "\\pgfsetdash{{%s\\du}{%s\\du}{%s\\du}{%s\\du}{%s\\du}{%s\\du}}{0cm}\n",
- dash_length_buf,
- hole_width_buf,
- dot_length_buf,
- hole_width_buf,
- dot_length_buf,
- hole_width_buf );
- break;
+ hole_width = ( dash_length - 2.0* dot_length) / 3.0;
+ pgf_dtostr (hole_width_buf, hole_width);
+ pgf_dtostr (dot_length_buf, dot_length);
+ pgf_dtostr (dash_length_buf, dash_length);
+ fprintf (renderer->file, "\\pgfsetdash{{%s\\du}{%s\\du}{%s\\du}{%s\\du}{%s\\du}{%s\\du}}{0cm}\n",
+ dash_length_buf,
+ hole_width_buf,
+ dot_length_buf,
+ hole_width_buf,
+ dot_length_buf,
+ hole_width_buf );
+ break;
case LINESTYLE_DOTTED:
- pgf_dtostr(dot_length_buf, dot_length);
- fprintf(renderer->file, "\\pgfsetdash{{\\pgflinewidth}{%s\\du}}{0cm}\n", dot_length_buf);
- break;
+ pgf_dtostr(dot_length_buf, dot_length);
+ fprintf(renderer->file, "\\pgfsetdash{{\\pgflinewidth}{%s\\du}}{0cm}\n", dot_length_buf);
+ break;
}
}
@@ -823,132 +831,213 @@ draw_ellipse(DiaRenderer *self,
pgf_ellipse(renderer,center,width,height,stroke,FALSE);
}
+
static void
pgf_bezier (PgfRenderer *renderer,
- BezPoint *points,
- gint numpoints,
- Color *fill, Color *stroke,
- gboolean closed)
+ BezPoint *points,
+ gint numpoints,
+ Color *fill,
+ Color *stroke,
+ gboolean closed)
{
- gint i;
- gchar p1x_buf[DTOSTR_BUF_SIZE];
- gchar p1y_buf[DTOSTR_BUF_SIZE];
- gchar p2x_buf[DTOSTR_BUF_SIZE];
- gchar p2y_buf[DTOSTR_BUF_SIZE];
- gchar p3x_buf[DTOSTR_BUF_SIZE];
- gchar p3y_buf[DTOSTR_BUF_SIZE];
+ gint i;
+ gchar p1x_buf[DTOSTR_BUF_SIZE];
+ gchar p1y_buf[DTOSTR_BUF_SIZE];
+ gchar p2x_buf[DTOSTR_BUF_SIZE];
+ gchar p2y_buf[DTOSTR_BUF_SIZE];
+ gchar p3x_buf[DTOSTR_BUF_SIZE];
+ gchar p3y_buf[DTOSTR_BUF_SIZE];
+
+ if (fill) {
+ set_fill_color (renderer, fill);
+ }
+ if (stroke) {
+ set_line_color (renderer, stroke);
+ }
- if (fill)
- set_fill_color(renderer,fill);
- if (stroke)
- set_line_color(renderer,stroke);
-
- if (points[0].type != BEZ_MOVE_TO)
- g_warning("first BezPoint must be a BEZ_MOVE_TO");
-
- for (i = 0; i < numpoints; i++)
- switch (points[i].type) {
- case BEZ_MOVE_TO:
- fprintf(renderer->file, "\\pgfpathmoveto{\\pgfpoint{%s\\du}{%s\\du}}\n",
- pgf_dtostr(p1x_buf,points[i].p1.x),
- pgf_dtostr(p1y_buf,points[i].p1.y) );
- break;
- case BEZ_LINE_TO:
- fprintf(renderer->file, "\\pgfpathlineto{\\pgfpoint{%s\\du}{%s\\du}}\n",
- pgf_dtostr(p1x_buf,points[i].p1.x),
- pgf_dtostr(p1y_buf,points[i].p1.y) );
- break;
- case BEZ_CURVE_TO:
- fprintf(renderer->file, "\\pgfpathcurveto{\\pgfpoint{%s\\du}{%s\\du}}"
- "{\\pgfpoint{%s\\du}{%s\\du}}"
- "{\\pgfpoint{%s\\du}{%s\\du}}\n",
- pgf_dtostr(p1x_buf,points[i].p1.x),
- pgf_dtostr(p1y_buf,points[i].p1.y),
- pgf_dtostr(p2x_buf,points[i].p2.x),
- pgf_dtostr(p2y_buf,points[i].p2.y),
- pgf_dtostr(p3x_buf,points[i].p3.x),
- pgf_dtostr(p3y_buf,points[i].p3.y) );
- break;
- }
+ if (points[0].type != BEZ_MOVE_TO) {
+ g_warning("first BezPoint must be a BEZ_MOVE_TO");
+ }
- if (closed)
- fprintf(renderer->file, "\\pgfpathclose\n");
- if (fill && stroke)
- fprintf(renderer->file, "\\pgfusepath{fill,stroke}\n");
- else if (fill)
- fprintf(renderer->file, "\\pgfusepath{fill}\n");
-/* fill[fillstyle=solid,fillcolor=diafillcolor,linecolor=diafillcolor]}\n"); */
- else if (stroke)
- fprintf(renderer->file, "\\pgfusepath{stroke}\n");
+ for (i = 0; i < numpoints; i++) {
+ switch (points[i].type) {
+ case BEZ_MOVE_TO:
+ fprintf (renderer->file,
+ "\\pgfpathmoveto{\\pgfpoint{%s\\du}{%s\\du}}\n",
+ pgf_dtostr (p1x_buf, points[i].p1.x),
+ pgf_dtostr (p1y_buf, points[i].p1.y) );
+ break;
+ case BEZ_LINE_TO:
+ fprintf (renderer->file,
+ "\\pgfpathlineto{\\pgfpoint{%s\\du}{%s\\du}}\n",
+ pgf_dtostr (p1x_buf,points[i].p1.x),
+ pgf_dtostr (p1y_buf,points[i].p1.y) );
+ break;
+ case BEZ_CURVE_TO:
+ fprintf (renderer->file,
+ "\\pgfpathcurveto{\\pgfpoint{%s\\du}{%s\\du}}"
+ "{\\pgfpoint{%s\\du}{%s\\du}}"
+ "{\\pgfpoint{%s\\du}{%s\\du}}\n",
+ pgf_dtostr (p1x_buf, points[i].p1.x),
+ pgf_dtostr (p1y_buf, points[i].p1.y),
+ pgf_dtostr (p2x_buf, points[i].p2.x),
+ pgf_dtostr (p2y_buf, points[i].p2.y),
+ pgf_dtostr (p3x_buf, points[i].p3.x),
+ pgf_dtostr (p3y_buf, points[i].p3.y) );
+ break;
+ default:
+ g_return_if_reached ();
+ }
+ }
+
+ if (closed) {
+ fprintf(renderer->file, "\\pgfpathclose\n");
+ }
+
+ if (fill && stroke) {
+ fprintf(renderer->file, "\\pgfusepath{fill,stroke}\n");
+ } else if (fill) {
+ fprintf (renderer->file, "\\pgfusepath{fill}\n");
+ /* fill[fillstyle=solid,fillcolor=diafillcolor,linecolor=diafillcolor]}\n"); */
+ } else if (stroke) {
+ fprintf (renderer->file, "\\pgfusepath{stroke}\n");
+ }
}
+
static void
-draw_bezier(DiaRenderer *self,
- BezPoint *points,
- int numpoints, /* numpoints = 4+3*n, n=>0 */
- Color *color)
+draw_bezier (DiaRenderer *self,
+ BezPoint *points,
+ int numpoints, /* numpoints = 4+3*n, n=>0 */
+ Color *color)
{
- PgfRenderer *renderer = PGF_RENDERER(self);
+ PgfRenderer *renderer = PGF_RENDERER(self);
- pgf_bezier(renderer,points,numpoints,NULL,color,FALSE);
+ pgf_bezier (renderer, points, numpoints, NULL, color, FALSE);
}
-
static void
draw_beziergon (DiaRenderer *self,
- BezPoint *points,
- int numpoints,
- Color *fill,
- Color *stroke)
+ BezPoint *points,
+ int numpoints,
+ Color *fill,
+ Color *stroke)
{
- PgfRenderer *renderer = PGF_RENDERER(self);
+ PgfRenderer *renderer = PGF_RENDERER (self);
- pgf_bezier(renderer,points,numpoints,fill,stroke,TRUE);
+ pgf_bezier (renderer, points, numpoints, fill, stroke, TRUE);
}
+
static int
-set_arrows(PgfRenderer *renderer, Arrow *start_arrow, Arrow *end_arrow)
+set_arrows (PgfRenderer *renderer, Arrow *start_arrow, Arrow *end_arrow)
{
- int modified = 2|1; /*=3*/
- fprintf(renderer->file, "%% was here!!!\n");
- switch (start_arrow->type)
- {
+ int modified = 2|1; /*=3*/
+ fprintf (renderer->file, "%% was here!!!\n");
+ switch (start_arrow->type) {
case ARROW_NONE:
- break;
+ break;
case ARROW_LINES:
- fprintf(renderer->file, "\\pgfsetarrowsstart{to}\n");
- break;
+ fprintf (renderer->file, "\\pgfsetarrowsstart{to}\n");
+ break;
case ARROW_FILLED_TRIANGLE:
- fprintf(renderer->file, "\\pgfsetarrowsstart{latex}\n");
- break;
+ fprintf (renderer->file, "\\pgfsetarrowsstart{latex}\n");
+ break;
case ARROW_FILLED_CONCAVE:
- fprintf(renderer->file, "\\pgfsetarrowsstart{stealth}\n");
- break;
+ fprintf (renderer->file, "\\pgfsetarrowsstart{stealth}\n");
+ break;
+ case ARROW_HOLLOW_TRIANGLE:
+ case ARROW_HOLLOW_DIAMOND:
+ case ARROW_FILLED_DIAMOND:
+ case ARROW_HALF_HEAD:
+ case ARROW_SLASHED_CROSS:
+ case ARROW_FILLED_ELLIPSE:
+ case ARROW_HOLLOW_ELLIPSE:
+ case ARROW_DOUBLE_HOLLOW_TRIANGLE:
+ case ARROW_DOUBLE_FILLED_TRIANGLE:
+ case ARROW_UNFILLED_TRIANGLE:
+ case ARROW_FILLED_DOT:
+ case ARROW_DIMENSION_ORIGIN:
+ case ARROW_BLANKED_DOT:
+ case ARROW_FILLED_BOX:
+ case ARROW_BLANKED_BOX:
+ case ARROW_SLASH_ARROW:
+ case ARROW_INTEGRAL_SYMBOL:
+ case ARROW_CROW_FOOT:
+ case ARROW_CROSS:
+ case ARROW_BLANKED_CONCAVE:
+ case ARROW_ROUNDED:
+ case ARROW_HALF_DIAMOND:
+ case ARROW_OPEN_ROUNDED:
+ case ARROW_FILLED_DOT_N_TRIANGLE:
+ case ARROW_ONE_OR_MANY:
+ case ARROW_NONE_OR_MANY:
+ case ARROW_ONE_OR_NONE:
+ case ARROW_ONE_EXACTLY:
+ case ARROW_BACKSLASH:
+ case ARROW_THREE_DOTS:
+ case MAX_ARROW_TYPE:
default:
- modified ^= 2;
- }
- if (modified & 2) start_arrow->type = ARROW_NONE;
+ modified ^= 2;
+ }
- switch (end_arrow->type)
- {
+ if (modified & 2) {
+ start_arrow->type = ARROW_NONE;
+ }
+
+ switch (end_arrow->type) {
case ARROW_NONE:
- break;
+ break;
case ARROW_LINES:
- fprintf(renderer->file, "\\pgfsetarrowsend{to}\n");
- break;
+ fprintf (renderer->file, "\\pgfsetarrowsend{to}\n");
+ break;
case ARROW_FILLED_TRIANGLE:
- fprintf(renderer->file, "\\pgfsetarrowsend{latex}\n");
- break;
+ fprintf (renderer->file, "\\pgfsetarrowsend{latex}\n");
+ break;
case ARROW_FILLED_CONCAVE:
- fprintf(renderer->file, "\\pgfsetarrowsend{stealth}\n");
- break;
+ fprintf( renderer->file, "\\pgfsetarrowsend{stealth}\n");
+ break;
+ case ARROW_HOLLOW_TRIANGLE:
+ case ARROW_HOLLOW_DIAMOND:
+ case ARROW_FILLED_DIAMOND:
+ case ARROW_HALF_HEAD:
+ case ARROW_SLASHED_CROSS:
+ case ARROW_FILLED_ELLIPSE:
+ case ARROW_HOLLOW_ELLIPSE:
+ case ARROW_DOUBLE_HOLLOW_TRIANGLE:
+ case ARROW_DOUBLE_FILLED_TRIANGLE:
+ case ARROW_UNFILLED_TRIANGLE:
+ case ARROW_FILLED_DOT:
+ case ARROW_DIMENSION_ORIGIN:
+ case ARROW_BLANKED_DOT:
+ case ARROW_FILLED_BOX:
+ case ARROW_BLANKED_BOX:
+ case ARROW_SLASH_ARROW:
+ case ARROW_INTEGRAL_SYMBOL:
+ case ARROW_CROW_FOOT:
+ case ARROW_CROSS:
+ case ARROW_BLANKED_CONCAVE:
+ case ARROW_ROUNDED:
+ case ARROW_HALF_DIAMOND:
+ case ARROW_OPEN_ROUNDED:
+ case ARROW_FILLED_DOT_N_TRIANGLE:
+ case ARROW_ONE_OR_MANY:
+ case ARROW_NONE_OR_MANY:
+ case ARROW_ONE_OR_NONE:
+ case ARROW_ONE_EXACTLY:
+ case ARROW_BACKSLASH:
+ case ARROW_THREE_DOTS:
+ case MAX_ARROW_TYPE:
default:
modified ^= 1;
- }
- if (modified & 1) end_arrow->type = ARROW_NONE;
+ }
+
+ if (modified & 1) {
+ end_arrow->type = ARROW_NONE;
+ }
- return modified; /* =0 if no native arrow is used */
+ return modified; /* =0 if no native arrow is used */
}
static void
@@ -1196,40 +1285,44 @@ tex_escape_string(const gchar *src, DiaContext *ctx)
return p;
}
+
static void
-draw_string(DiaRenderer *self,
- const char *text,
- Point *pos, Alignment alignment,
- Color *color)
+draw_string (DiaRenderer *self,
+ const char *text,
+ Point *pos,
+ Alignment alignment,
+ Color *color)
{
- PgfRenderer *renderer = PGF_RENDERER(self);
- gchar *escaped = tex_escape_string(text, renderer->ctx);
- gchar px_buf[DTOSTR_BUF_SIZE];
- gchar py_buf[DTOSTR_BUF_SIZE];
+ PgfRenderer *renderer = PGF_RENDERER(self);
+ gchar *escaped = tex_escape_string (text, renderer->ctx);
+ gchar px_buf[DTOSTR_BUF_SIZE];
+ gchar py_buf[DTOSTR_BUF_SIZE];
- set_line_color(renderer,color);
- set_fill_color(renderer,color);
+ set_line_color (renderer,color);
+ set_fill_color (renderer,color);
- fprintf(renderer->file,"\\node");
- switch (alignment) {
+ fprintf (renderer->file,"\\node");
+ switch (alignment) {
case ALIGN_LEFT:
- fprintf(renderer->file,
- "[anchor=base west,inner sep=0pt,outer sep=0pt,color=dialinecolor]");
- break;
+ fprintf (renderer->file,
+ "[anchor=base west,inner sep=0pt,outer sep=0pt,color=dialinecolor]");
+ break;
case ALIGN_CENTER:
- fprintf(renderer->file,
- "[anchor=base,inner sep=0pt, outer sep=0pt,color=dialinecolor]");
- break;
+ fprintf (renderer->file,
+ "[anchor=base,inner sep=0pt, outer sep=0pt,color=dialinecolor]");
+ break;
case ALIGN_RIGHT:
- fprintf(renderer->file,
- "[anchor=base east,inner sep=0pt, outer sep=0pt,color=dialinecolor]");
- break;
- }
- fprintf(renderer->file," at (%s\\du,%s\\du){%s};\n",
- pgf_dtostr(px_buf,pos->x),
- pgf_dtostr(py_buf,pos->y),
- escaped);
- g_free(escaped);
+ fprintf (renderer->file,
+ "[anchor=base east,inner sep=0pt, outer sep=0pt,color=dialinecolor]");
+ break;
+ default:
+ g_return_if_reached ();
+ }
+ fprintf (renderer->file, " at (%s\\du,%s\\du){%s};\n",
+ pgf_dtostr (px_buf,pos->x),
+ pgf_dtostr (py_buf,pos->y),
+ escaped);
+ g_free (escaped);
}
static void
diff --git a/plug-ins/postscript/diapsrenderer.c b/plug-ins/postscript/diapsrenderer.c
index 1f629ec8..846c8d8f 100644
--- a/plug-ins/postscript/diapsrenderer.c
+++ b/plug-ins/postscript/diapsrenderer.c
@@ -207,8 +207,9 @@ set_linejoin(DiaRenderer *self, LineJoin mode)
fprintf(renderer->file, "%d slj\n", ps_mode);
}
+
static void
-set_linestyle(DiaRenderer *self, LineStyle mode, real dash_length)
+set_linestyle (DiaRenderer *self, LineStyle mode, real dash_length)
{
DiaPsRenderer *renderer = DIA_PS_RENDERER(self);
real hole_width;
@@ -217,63 +218,68 @@ set_linestyle(DiaRenderer *self, LineStyle mode, real dash_length)
gchar holew_buf[DTOSTR_BUF_SIZE];
real dot_length;
- if (dash_length<0.001)
- dash_length = 0.001;
+ if (dash_length < 0.001) {
+ dash_length = 0.001;
+ }
dot_length = dash_length*0.2; /* dot = 20% of len */
- switch(mode) {
- case LINESTYLE_DEFAULT:
- case LINESTYLE_SOLID:
- fprintf(renderer->file, "[] 0 sd\n");
- break;
- case LINESTYLE_DASHED:
- fprintf(renderer->file, "[%s] 0 sd\n",
- psrenderer_dtostr(dashl_buf, dash_length) );
- break;
- case LINESTYLE_DASH_DOT:
- hole_width = (dash_length - dot_length) / 2.0;
- psrenderer_dtostr(holew_buf, hole_width);
- psrenderer_dtostr(dashl_buf, dash_length);
- psrenderer_dtostr(dotl_buf, dot_length);
- fprintf(renderer->file, "[%s %s %s %s] 0 sd\n",
- dashl_buf,
- holew_buf,
- dotl_buf,
- holew_buf );
- break;
- case LINESTYLE_DASH_DOT_DOT:
- hole_width = (dash_length - 2.0*dot_length) / 3.0;
- psrenderer_dtostr(holew_buf, hole_width);
- psrenderer_dtostr(dashl_buf, dash_length);
- psrenderer_dtostr(dotl_buf, dot_length);
- fprintf(renderer->file, "[%s %s %s %s %s %s] 0 sd\n",
- dashl_buf,
- holew_buf,
- dotl_buf,
- holew_buf,
- dotl_buf,
- holew_buf );
- break;
- case LINESTYLE_DOTTED:
- fprintf(renderer->file, "[%s] 0 sd\n",
- psrenderer_dtostr(dotl_buf, dot_length) );
- break;
+ switch (mode) {
+ case LINESTYLE_DEFAULT:
+ case LINESTYLE_SOLID:
+ fprintf (renderer->file, "[] 0 sd\n");
+ break;
+ case LINESTYLE_DASHED:
+ fprintf (renderer->file, "[%s] 0 sd\n",
+ psrenderer_dtostr (dashl_buf, dash_length) );
+ break;
+ case LINESTYLE_DASH_DOT:
+ hole_width = (dash_length - dot_length) / 2.0;
+ psrenderer_dtostr (holew_buf, hole_width);
+ psrenderer_dtostr (dashl_buf, dash_length);
+ psrenderer_dtostr (dotl_buf, dot_length);
+ fprintf (renderer->file, "[%s %s %s %s] 0 sd\n",
+ dashl_buf,
+ holew_buf,
+ dotl_buf,
+ holew_buf );
+ break;
+ case LINESTYLE_DASH_DOT_DOT:
+ hole_width = (dash_length - 2.0*dot_length) / 3.0;
+ psrenderer_dtostr (holew_buf, hole_width);
+ psrenderer_dtostr (dashl_buf, dash_length);
+ psrenderer_dtostr (dotl_buf, dot_length);
+ fprintf (renderer->file, "[%s %s %s %s %s %s] 0 sd\n",
+ dashl_buf,
+ holew_buf,
+ dotl_buf,
+ holew_buf,
+ dotl_buf,
+ holew_buf );
+ break;
+ case LINESTYLE_DOTTED:
+ fprintf (renderer->file, "[%s] 0 sd\n",
+ psrenderer_dtostr (dotl_buf, dot_length) );
+ break;
+ default:
+ g_return_if_reached ();
}
}
+
static void
-set_fillstyle(DiaRenderer *self, FillStyle mode)
+set_fillstyle (DiaRenderer *self, FillStyle mode)
{
- switch(mode) {
- case FILLSTYLE_SOLID:
- break;
- default:
- g_warning ("%s: Unsupported fill mode specified!",
- G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (self)));
+ switch (mode) {
+ case FILLSTYLE_SOLID:
+ break;
+ default:
+ g_warning ("%s: Unsupported fill mode specified!",
+ G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (self)));
}
}
+
static void
set_font (DiaRenderer *self, DiaFont *font, real height)
{
@@ -467,25 +473,33 @@ psrenderer_ellipse(DiaPsRenderer *renderer,
filled ? "f" : "cp s" );
}
+
static void
-draw_ellipse(DiaRenderer *self,
- Point *center,
- real width, real height,
- Color *fill, Color *stroke)
+draw_ellipse (DiaRenderer *self,
+ Point *center,
+ real width,
+ real height,
+ Color *fill,
+ Color *stroke)
{
- DiaPsRenderer *renderer = DIA_PS_RENDERER(self);
- if (fill)
- psrenderer_ellipse(renderer, center, width, height, fill, TRUE);
- if (stroke)
- psrenderer_ellipse(renderer, center, width, height, stroke, FALSE);
+ DiaPsRenderer *renderer = DIA_PS_RENDERER (self);
+
+ if (fill) {
+ psrenderer_ellipse (renderer, center, width, height, fill, TRUE);
+ }
+
+ if (stroke) {
+ psrenderer_ellipse (renderer, center, width, height, stroke, FALSE);
+ }
}
+
static void
-psrenderer_bezier(DiaPsRenderer *renderer,
- BezPoint *points,
- gint numpoints,
- Color *color,
- gboolean filled)
+psrenderer_bezier (DiaPsRenderer *renderer,
+ BezPoint *points,
+ gint numpoints,
+ Color *color,
+ gboolean filled)
{
gint i;
gchar p1x_buf[DTOSTR_BUF_SIZE];
@@ -495,69 +509,81 @@ psrenderer_bezier(DiaPsRenderer *renderer,
gchar p3x_buf[DTOSTR_BUF_SIZE];
gchar p3y_buf[DTOSTR_BUF_SIZE];
- lazy_setcolor(renderer,color);
+ lazy_setcolor (renderer,color);
- if (points[0].type != BEZ_MOVE_TO)
- g_warning("first BezPoint must be a BEZ_MOVE_TO");
+ if (points[0].type != BEZ_MOVE_TO) {
+ g_warning ("first BezPoint must be a BEZ_MOVE_TO");
+ }
- fprintf(renderer->file, "n %s %s m",
- psrenderer_dtostr(p1x_buf, (gdouble) points[0].p1.x),
- psrenderer_dtostr(p1y_buf, (gdouble) points[0].p1.y) );
+ fprintf (renderer->file, "n %s %s m",
+ psrenderer_dtostr (p1x_buf, (gdouble) points[0].p1.x),
+ psrenderer_dtostr (p1y_buf, (gdouble) points[0].p1.y) );
- for (i = 1; i < numpoints; i++)
+ for (i = 1; i < numpoints; i++) {
switch (points[i].type) {
- case BEZ_MOVE_TO:
- g_warning("only first BezPoint can be a BEZ_MOVE_TO");
- break;
- case BEZ_LINE_TO:
- fprintf(renderer->file, " %s %s l",
- psrenderer_dtostr(p1x_buf, (gdouble) points[i].p1.x),
- psrenderer_dtostr(p1y_buf, (gdouble) points[i].p1.y) );
- break;
- case BEZ_CURVE_TO:
- fprintf(renderer->file, " %s %s %s %s %s %s c",
- psrenderer_dtostr(p1x_buf, (gdouble) points[i].p1.x),
- psrenderer_dtostr(p1y_buf, (gdouble) points[i].p1.y),
- psrenderer_dtostr(p2x_buf, (gdouble) points[i].p2.x),
- psrenderer_dtostr(p2y_buf, (gdouble) points[i].p2.y),
- psrenderer_dtostr(p3x_buf, (gdouble) points[i].p3.x),
- psrenderer_dtostr(p3y_buf, (gdouble) points[i].p3.y) );
- break;
+ case BEZ_MOVE_TO:
+ g_warning ("only first BezPoint can be a BEZ_MOVE_TO");
+ break;
+ case BEZ_LINE_TO:
+ fprintf (renderer->file, " %s %s l",
+ psrenderer_dtostr (p1x_buf, (gdouble) points[i].p1.x),
+ psrenderer_dtostr (p1y_buf, (gdouble) points[i].p1.y) );
+ break;
+ case BEZ_CURVE_TO:
+ fprintf (renderer->file, " %s %s %s %s %s %s c",
+ psrenderer_dtostr (p1x_buf, (gdouble) points[i].p1.x),
+ psrenderer_dtostr (p1y_buf, (gdouble) points[i].p1.y),
+ psrenderer_dtostr (p2x_buf, (gdouble) points[i].p2.x),
+ psrenderer_dtostr (p2y_buf, (gdouble) points[i].p2.y),
+ psrenderer_dtostr (p3x_buf, (gdouble) points[i].p3.x),
+ psrenderer_dtostr (p3y_buf, (gdouble) points[i].p3.y) );
+ break;
+ default:
+ g_return_if_reached ();
}
+ }
- if (filled)
- fprintf(renderer->file, " ef\n");
- else
- fprintf(renderer->file, " s\n");
+ if (filled) {
+ fprintf (renderer->file, " ef\n");
+ } else {
+ fprintf (renderer->file, " s\n");
+ }
}
+
static void
-draw_bezier(DiaRenderer *self,
- BezPoint *points,
- int numpoints, /* numpoints = 4+3*n, n=>0 */
- Color *color)
+draw_bezier (DiaRenderer *self,
+ BezPoint *points,
+ int numpoints, /* numpoints = 4+3*n, n=>0 */
+ Color *color)
{
- DiaPsRenderer *renderer = DIA_PS_RENDERER(self);
- psrenderer_bezier(renderer, points, numpoints, color, FALSE);
+ DiaPsRenderer *renderer = DIA_PS_RENDERER (self);
+
+ psrenderer_bezier (renderer, points, numpoints, color, FALSE);
}
+
static void
draw_beziergon (DiaRenderer *self,
- BezPoint *points, /* Last point must be same as first point */
- int numpoints,
- Color *fill,
- Color *stroke)
+ /* Last point must be same as first point */
+ BezPoint *points,
+ int numpoints,
+ Color *fill,
+ Color *stroke)
{
- DiaPsRenderer *renderer = DIA_PS_RENDERER(self);
- if (fill)
- psrenderer_bezier(renderer, points, numpoints, fill, TRUE);
+ DiaPsRenderer *renderer = DIA_PS_RENDERER (self);
+ if (fill) {
+ psrenderer_bezier (renderer, points, numpoints, fill, TRUE);
+ }
/* XXX: still not closing the path */
- if (stroke)
- psrenderer_bezier(renderer, points, numpoints, stroke, FALSE);
+ if (stroke) {
+ psrenderer_bezier (renderer, points, numpoints, stroke, FALSE);
+ }
}
+
static char*
-ps_convert_string(const char *text, DiaContext *ctx)
+ps_convert_string (const char *text, DiaContext *ctx)
{
char *buffer;
gchar *localestr;
@@ -565,58 +591,63 @@ ps_convert_string(const char *text, DiaContext *ctx)
gint len;
GError * error = NULL;
- localestr = g_convert(text, -1, "LATIN1", "UTF-8", NULL, NULL, &error);
+ localestr = g_convert (text, -1, "LATIN1", "UTF-8", NULL, NULL, &error);
if (localestr == NULL) {
- dia_context_add_message(ctx, "Can't convert string %s: %s\n", text, error->message);
- localestr = g_strdup(text);
+ dia_context_add_message (ctx, "Can't convert string %s: %s\n",
+ text, error->message);
+ localestr = g_strdup (text);
}
/* Escape all '(' and ')': */
- buffer = g_malloc(2*strlen(localestr)+1);
+ buffer = g_malloc (2 * strlen (localestr) + 1);
*buffer = 0;
str = localestr;
while (*str != 0) {
- len = strcspn(str,"()\\");
- strncat(buffer, str, len);
+ len = strcspn (str,"()\\");
+ strncat (buffer, str, len);
str += len;
if (*str != 0) {
- strcat(buffer,"\\");
- strncat(buffer, str, 1);
+ strcat (buffer,"\\");
+ strncat (buffer, str, 1);
str++;
}
}
- g_free(localestr);
+ g_free (localestr);
return buffer;
}
+
static void
put_text_alignment (DiaPsRenderer *renderer,
- Alignment alignment,
- Point *pos)
+ Alignment alignment,
+ Point *pos)
{
gchar px_buf[DTOSTR_BUF_SIZE];
gchar py_buf[DTOSTR_BUF_SIZE];
switch (alignment) {
- case ALIGN_LEFT:
- fprintf(renderer->file, "%s %s m\n",
- psrenderer_dtostr(px_buf, pos->x),
- psrenderer_dtostr(py_buf, pos->y) );
- break;
- case ALIGN_CENTER:
- fprintf(renderer->file, "dup sw 2 div %s ex sub %s m\n",
- psrenderer_dtostr(px_buf, pos->x),
- psrenderer_dtostr(py_buf, pos->y) );
- break;
- case ALIGN_RIGHT:
- fprintf(renderer->file, "dup sw %s ex sub %s m\n",
- psrenderer_dtostr(px_buf, pos->x),
- psrenderer_dtostr(py_buf, pos->y) );
- break;
+ case ALIGN_LEFT:
+ fprintf (renderer->file, "%s %s m\n",
+ psrenderer_dtostr (px_buf, pos->x),
+ psrenderer_dtostr (py_buf, pos->y) );
+ break;
+ case ALIGN_CENTER:
+ fprintf (renderer->file, "dup sw 2 div %s ex sub %s m\n",
+ psrenderer_dtostr (px_buf, pos->x),
+ psrenderer_dtostr (py_buf, pos->y) );
+ break;
+ case ALIGN_RIGHT:
+ fprintf (renderer->file, "dup sw %s ex sub %s m\n",
+ psrenderer_dtostr (px_buf, pos->x),
+ psrenderer_dtostr (py_buf, pos->y) );
+ break;
+ default:
+ g_return_if_reached ();
}
}
+
static void
draw_string(DiaRenderer *self,
const char *text,
diff --git a/plug-ins/python/pydia-render.c b/plug-ins/python/pydia-render.c
index f4efb7e1..7dfa647f 100644
--- a/plug-ins/python/pydia-render.c
+++ b/plug-ins/python/pydia-render.c
@@ -980,12 +980,14 @@ draw_string(DiaRenderer *renderer,
PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
switch (alignment) {
- case ALIGN_LEFT:
- break;
- case ALIGN_CENTER:
- break;
- case ALIGN_RIGHT:
- break;
+ case ALIGN_LEFT:
+ break;
+ case ALIGN_CENTER:
+ break;
+ case ALIGN_RIGHT:
+ break;
+ default:
+ break;
}
func = PyObject_GetAttrString (self, "draw_string");
diff --git a/plug-ins/svg/render_svg.c b/plug-ins/svg/render_svg.c
index fa18f685..2a4e0594 100644
--- a/plug-ins/svg/render_svg.c
+++ b/plug-ins/svg/render_svg.c
@@ -423,15 +423,17 @@ node_set_text_style (xmlNodePtr node,
* 'right' for those.
*/
switch (alignment) {
- case ALIGN_LEFT:
- g_string_append (style, ";text-anchor:start");
- break;
- case ALIGN_CENTER:
- g_string_append (style, ";text-anchor:middle");
- break;
- case ALIGN_RIGHT:
- g_string_append (style, ";text-anchor:end");
- break;
+ case ALIGN_LEFT:
+ g_string_append (style, ";text-anchor:start");
+ break;
+ case ALIGN_CENTER:
+ g_string_append (style, ";text-anchor:middle");
+ break;
+ case ALIGN_RIGHT:
+ g_string_append (style, ";text-anchor:end");
+ break;
+ default:
+ g_return_if_reached ();
}
#if 0 /* would need a unit according to https://bugzilla.mozilla.org/show_bug.cgi?id=707071#c4 */
tmp = g_strdup_printf("%s;font-size:%s", style,
@@ -440,20 +442,22 @@ node_set_text_style (xmlNodePtr node,
style = tmp;
#else
/* font-size as attribute can work like the other length w/o unit */
- dia_svg_dtostr(d_buf, font_size);
- xmlSetProp(node, (const xmlChar *)"font-size", (xmlChar *) d_buf);
+ dia_svg_dtostr (d_buf, font_size);
+ xmlSetProp (node, (const xmlChar *) "font-size", (xmlChar *) d_buf);
#endif
if (font) {
- g_string_append_printf (style, ";font-family:%s;font-style:%s;font-weight:%s",
- strcmp(family, "sans") == 0 ? "sans-serif" : family,
- dia_font_get_slant_string(font),
- dia_font_get_weight_string(font));
+ g_string_append_printf (style,
+ ";font-family:%s;font-style:%s;font-weight:%s",
+ strcmp (family, "sans") == 0 ? "sans-serif" : family,
+ dia_font_get_slant_string (font),
+ dia_font_get_weight_string (font));
}
- xmlSetProp(node, (xmlChar *)"style", (xmlChar *)style->str);
+ xmlSetProp (node, (xmlChar *) "style", (xmlChar *) style->str);
g_string_free (style, TRUE);
}
+
/*!
* To minimize impact of this deprecated attribute we set it as locally as
* possible and only if it is needed at all.
diff --git a/plug-ins/svg/svg-import.c b/plug-ins/svg/svg-import.c
index 56ba4eae..5fc94502 100644
--- a/plug-ins/svg/svg-import.c
+++ b/plug-ins/svg/svg-import.c
@@ -284,6 +284,7 @@ use_position (DiaObject *obj, xmlNodePtr node, DiaContext *ctx)
}
}
+
/*!
* \brief Lookup and apply CSS style
*
@@ -300,23 +301,26 @@ use_position (DiaObject *obj, xmlNodePtr node, DiaContext *ctx)
* \ingroup SvgImport
*/
static void
-_css_parse_style (DiaSvgStyle *s, real user_scale,
- gchar *tag, gchar *klass, gchar *id,
- GHashTable *style_ht)
+_css_parse_style (DiaSvgStyle *s,
+ real user_scale_arg,
+ gchar *tag,
+ gchar *klass,
+ gchar *id,
+ GHashTable *style_ht)
{
gchar *style = NULL;
/* always try and apply '*' */
style = g_hash_table_lookup (style_ht, "*");
if (style) {
- dia_svg_parse_style_string (s, user_scale, style);
+ dia_svg_parse_style_string (s, user_scale_arg, style);
style = NULL;
}
/* also type only style */
style = g_hash_table_lookup (style_ht, tag);
if (style) {
- dia_svg_parse_style_string (s, user_scale, style);
+ dia_svg_parse_style_string (s, user_scale_arg, style);
style = NULL;
}
@@ -341,7 +345,7 @@ _css_parse_style (DiaSvgStyle *s, real user_scale,
}
/* apply most specific style from class lookup */
if (style) {
- dia_svg_parse_style_string (s, user_scale, style);
+ dia_svg_parse_style_string (s, user_scale_arg, style);
style = NULL;
}
@@ -350,51 +354,60 @@ _css_parse_style (DiaSvgStyle *s, real user_scale,
gchar *key = g_strdup_printf ("#%s", id);
style = g_hash_table_lookup (style_ht, key);
if (style) {
- dia_svg_parse_style_string (s, user_scale, style);
+ dia_svg_parse_style_string (s, user_scale_arg, style);
}
g_free (key);
key = g_strdup_printf ("%s#%s", tag, id);
style = g_hash_table_lookup (style_ht, key);
if (style) {
- dia_svg_parse_style_string (s, user_scale, style);
+ dia_svg_parse_style_string (s, user_scale_arg, style);
}
g_free (key);
}
}
+
/*!
* \brief from the given node derive the CSS style if any
* \ingroup SvgImport
*/
static void
-_node_css_parse_style (xmlNodePtr node,
- DiaSvgStyle *gs,
- real user_scale,
- GHashTable *style_ht)
+_node_css_parse_style (xmlNodePtr node,
+ DiaSvgStyle *gs,
+ real user_scale_arg,
+ GHashTable *style_ht)
{
if (g_hash_table_size (style_ht) > 0) {
/* only do all these expensive variants if we have some style at all */
- xmlChar *id = xmlGetProp (node, (xmlChar *)"id");
- xmlChar *klass = xmlGetProp (node, (xmlChar *)"class");
+ xmlChar *id = xmlGetProp (node, (xmlChar *) "id");
+ xmlChar *klass = xmlGetProp (node, (xmlChar *) "class");
if (klass) {
- gchar **klasses = g_regex_split_simple ("[\\s,;]+", (gchar *)klass, 0, 0);
+ gchar **klasses = g_regex_split_simple ("[\\s,;]+",
+ (gchar *) klass, 0, 0);
int i = 0;
while (klasses[i]) {
- _css_parse_style (gs, user_scale, (gchar *)node->name, klasses[i], (gchar *)id, style_ht);
- ++i;
+ _css_parse_style (gs, user_scale_arg, (gchar *) node->name,
+ klasses[i], (gchar *) id, style_ht);
+ ++i;
}
g_strfreev (klasses);
} else {
- _css_parse_style (gs, user_scale, (gchar *)node->name, (gchar *)klass, (gchar *)id, style_ht);
+ _css_parse_style (gs, user_scale_arg, (gchar *) node->name,
+ (gchar *) klass, (gchar *) id, style_ht);
}
- if (id)
+
+ if (id) {
xmlFree (id);
- if (klass)
+ }
+
+ if (klass) {
xmlFree (klass);
+ }
}
}
+
static void
_set_pattern_from_key (DiaObject *obj, BoolProperty *bprop,
GHashTable *pattern_ht, const gchar *key)
diff --git a/plug-ins/vdx/vdx-export.c b/plug-ins/vdx/vdx-export.c
index 05c6bf5d..37fa04fe 100644
--- a/plug-ins/vdx/vdx-export.c
+++ b/plug-ins/vdx/vdx-export.c
@@ -411,50 +411,61 @@ vdxCheckFont(VDXRenderer *renderer)
return renderer->Fonts->len - 1;
}
-/** Create a Visio line style object
- * @param self a VDXRenderer
- * @param color a colour
- * @param Line a Line object
- * @param start_arrow optional start arrow
- * @param end_arrow optional end arrow
+
+/**
+ * create_Line:
+ * @self: a VDXRenderer
+ * @color: a colour
+ * @Line: a Line object
+ * @start_arrow: optional start arrow
+ * @end_arrow: optional end arrow
+ *
+ * Create a Visio line style object
+ *
* @todo join, caps, dashlength
*/
static void
-create_Line(VDXRenderer *renderer, Color *color, struct vdx_Line *Line,
- Arrow *start_arrow, Arrow *end_arrow)
+create_Line (VDXRenderer *renderer,
+ Color *color,
+ struct vdx_Line *Line,
+ Arrow *start_arrow,
+ Arrow *end_arrow)
{
- /* A Line (colour etc) */
- memset(Line, 0, sizeof(*Line));
- Line->any.type = vdx_types_Line;
- switch (renderer->stylemode)
- {
+ /* A Line (colour etc) */
+ memset (Line, 0, sizeof (*Line));
+
+ Line->any.type = vdx_types_Line;
+
+ switch (renderer->stylemode) {
case LINESTYLE_DASHED:
- Line->LinePattern = 2;
- break;
+ Line->LinePattern = 2;
+ break;
case LINESTYLE_DOTTED:
- Line->LinePattern = 3;
- break;
+ Line->LinePattern = 3;
+ break;
case LINESTYLE_DASH_DOT:
- Line->LinePattern = 4;
- break;
+ Line->LinePattern = 4;
+ break;
case LINESTYLE_DASH_DOT_DOT:
- Line->LinePattern = 5;
- break;
- default:
+ Line->LinePattern = 5;
+ break;
+ case LINESTYLE_DEFAULT:
case LINESTYLE_SOLID:
- Line->LinePattern = 1;
- break;
- }
- Line->LineColor = *color;
- Line->LineColorTrans = 1.0 - color->alpha;
- Line->LineWeight = renderer->linewidth / vdx_Line_Scale;
- /* VDX only has Rounded (0) or Square (1) ends */
- if (renderer->capsmode != LINECAPS_ROUND)
- Line->LineCap = 1; /* Square */
- if (start_arrow || end_arrow)
- {
- g_debug("create_Line (ARROWS)");
- }
+ default:
+ Line->LinePattern = 1;
+ break;
+ }
+ Line->LineColor = *color;
+ Line->LineColorTrans = 1.0 - color->alpha;
+ Line->LineWeight = renderer->linewidth / vdx_Line_Scale;
+ /* VDX only has Rounded (0) or Square (1) ends */
+ if (renderer->capsmode != LINECAPS_ROUND) {
+ Line->LineCap = 1; /* Square */
+ }
+
+ if (start_arrow || end_arrow) {
+ g_debug("create_Line (ARROWS)");
+ }
}
@@ -1293,15 +1304,17 @@ static void draw_string(DiaRenderer *self,
text_width *= 1.2;
a.y += dia_font_descent(text, renderer->font, renderer->fontheight);
switch (alignment) {
- case ALIGN_LEFT:
- /* nothing to do this appears to be default */
- break;
- case ALIGN_CENTER:
- a.x -= text_width / 2.0;
- break;
- case ALIGN_RIGHT:
- a.x -= text_width;
- break;
+ case ALIGN_LEFT:
+ /* nothing to do this appears to be default */
+ break;
+ case ALIGN_CENTER:
+ a.x -= text_width / 2.0;
+ break;
+ case ALIGN_RIGHT:
+ a.x -= text_width;
+ break;
+ default:
+ g_return_if_reached ();
}
a = visio_point(a);
XForm.PinX = a.x;
@@ -1544,7 +1557,6 @@ write_header(DiagramData *data, VDXRenderer *renderer)
struct vdx_Char Char;
struct vdx_Para Para;
struct vdx_Tabs Tabs;
- static Color color_black = { 0.0, 0.0, 0.0, 1.0 };
g_debug("write_header");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]