[dia/zbrown/object-change: 3/16] change: replace ObjectChange with DiaObjectChange
- From: Zander Brown <zbrown src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dia/zbrown/object-change: 3/16] change: replace ObjectChange with DiaObjectChange
- Date: Sat, 10 Oct 2020 22:05:56 +0000 (UTC)
commit 64a2d82b45cdab0cddd08f563e19b78b75ca947c
Author: Zander Brown <zbrown gnome org>
Date: Sun Oct 4 14:16:17 2020 +0100
change: replace ObjectChange with DiaObjectChange
For now use a simple wrapper around the existing ObjectChanges
app/commands.c | 16 +--
app/disp_callbacks.c | 58 ++++++---
app/display.c | 10 +-
app/find-and-replace.c | 3 +-
app/menus.c | 36 ++---
app/modify_tool.c | 39 ++++--
app/properties-dialog.c | 13 +-
app/undo.c | 104 ++++++++-------
app/undo.h | 9 +-
bindings/dia-object.cpp | 39 ++++--
bindings/dia-object.h | 6 +-
docs/dia/dia-docs.xml | 13 +-
lib/bezier-common.c | 14 +-
lib/bezier-common.h | 26 ++--
lib/bezier_conn.c | 59 ++++-----
lib/bezier_conn.h | 69 ++++++----
lib/beziershape.c | 62 ++++-----
lib/beziershape.h | 69 ++++++----
lib/connection.c | 5 +-
lib/connection.h | 43 +++---
lib/connpoint_line.c | 44 ++++---
lib/connpoint_line.h | 12 +-
lib/dia-object-change-legacy.c | 75 +++++++++++
lib/dia-object-change-legacy.h | 39 ++++++
lib/dia-object-change-list.c | 87 +++++++++++++
lib/dia-object-change-list.h | 36 +++++
lib/dia-object-change.c | 2 -
lib/diamenu.h | 5 +-
lib/diatypes.h | 1 -
lib/element.c | 14 +-
lib/element.h | 23 ++--
lib/filter.h | 13 +-
lib/focus.h | 9 +-
lib/group.c | 101 ++++++++------
lib/meson.build | 4 +
lib/objchange.c | 97 ++------------
lib/objchange.h | 26 ++--
lib/object.c | 91 +++++++------
lib/object.h | 97 ++++++++------
lib/orth_conn.c | 246 +++++++++++++++++++----------------
lib/orth_conn.h | 94 +++++++------
lib/parent.c | 30 +++--
lib/poly_conn.c | 30 +++--
lib/poly_conn.h | 22 ++--
lib/polyshape.c | 48 ++++---
lib/polyshape.h | 20 ++-
lib/properties.h | 21 ++-
lib/propobject.c | 151 ++++++++++++---------
lib/renderer/diacairo-print.c | 2 +-
lib/renderer/diacairo-print.h | 21 +--
lib/standard-path.c | 125 +++++++++++-------
lib/text.c | 62 +++++----
lib/text.h | 59 +++++----
objects/AADL/aadl.h | 13 +-
objects/AADL/aadlbox.c | 115 ++++++++--------
objects/AADL/edit_port_declaration.c | 12 +-
objects/AADL/edit_port_declaration.h | 5 +-
objects/Database/compound.c | 117 ++++++++++-------
objects/Database/database.h | 2 +
objects/Database/reference.c | 161 ++++++++++++++---------
objects/Database/table.c | 122 +++++++++++------
objects/ER/attribute.c | 9 +-
objects/ER/entity.c | 8 +-
objects/ER/participation.c | 68 ++++++----
objects/ER/relationship.c | 8 +-
objects/FS/flow-ortho.c | 117 ++++++++++-------
objects/FS/flow.c | 47 ++++---
objects/FS/function.c | 138 ++++++++++++--------
objects/GRAFCET/action.c | 8 +-
objects/GRAFCET/condition.c | 10 +-
objects/GRAFCET/step.c | 10 +-
objects/GRAFCET/transition.c | 8 +-
objects/GRAFCET/vector.c | 70 ++++++----
objects/GRAFCET/vergent.c | 38 +++---
objects/Istar/actor.c | 8 +-
objects/Istar/goal.c | 8 +-
objects/Istar/link.c | 8 +-
objects/Istar/other.c | 64 +++++----
objects/Jackson/domain.c | 32 +++--
objects/Jackson/phenomenon.c | 8 +-
objects/Jackson/requirement.c | 8 +-
objects/KAOS/goal.c | 49 ++++---
objects/KAOS/metaandorrel.c | 8 +-
objects/KAOS/metabinrel.c | 8 +-
objects/KAOS/other.c | 67 ++++++----
objects/Misc/analog_clock.c | 8 +-
objects/Misc/diagram_as_object.c | 4 +-
objects/Misc/grid_object.c | 8 +-
objects/Misc/measure.c | 8 +-
objects/Misc/n_gon.c | 28 ++--
objects/Misc/tree.c | 69 ++++++----
objects/SADT/annotation.c | 8 +-
objects/SADT/arrow.c | 66 ++++++----
objects/SADT/box.c | 69 ++++++----
objects/UML/activity.c | 8 +-
objects/UML/actor.c | 31 +++--
objects/UML/association.c | 57 ++++----
objects/UML/branch.c | 8 +-
objects/UML/class.c | 97 +++++++++-----
objects/UML/class.h | 2 +-
objects/UML/class_dialog.c | 26 ++--
objects/UML/classicon.c | 8 +-
objects/UML/component.c | 8 +-
objects/UML/component_feature.c | 64 +++++----
objects/UML/constraint.c | 8 +-
objects/UML/dependency.c | 72 ++++++----
objects/UML/fork.c | 8 +-
objects/UML/generalization.c | 61 +++++----
objects/UML/implements.c | 8 +-
objects/UML/large_package.c | 8 +-
objects/UML/lifeline.c | 102 ++++++++-------
objects/UML/message.c | 8 +-
objects/UML/node.c | 8 +-
objects/UML/note.c | 8 +-
objects/UML/object.c | 8 +-
objects/UML/realizes.c | 65 +++++----
objects/UML/small_package.c | 8 +-
objects/UML/state.c | 8 +-
objects/UML/state_term.c | 8 +-
objects/UML/transition.c | 43 +++---
objects/UML/usecase.c | 8 +-
objects/chronogram/chronoline.c | 47 ++++---
objects/chronogram/chronoref.c | 43 +++---
objects/custom/custom_object.c | 98 ++++++++------
objects/flowchart/box.c | 19 +--
objects/flowchart/diamond.c | 34 +++--
objects/flowchart/ellipse.c | 23 ++--
objects/flowchart/parallelogram.c | 23 ++--
objects/network/basestation.c | 33 +++--
objects/network/bus.c | 68 ++++++----
objects/network/radiocell.c | 8 +-
objects/network/wanlink.c | 8 +-
objects/standard/arc.c | 8 +-
objects/standard/bezier.c | 83 +++++++-----
objects/standard/beziergon.c | 53 +++++---
objects/standard/box.c | 90 ++++++++-----
objects/standard/ellipse.c | 48 ++++---
objects/standard/image.c | 8 +-
objects/standard/line.c | 72 +++++-----
objects/standard/outline.c | 8 +-
objects/standard/polygon.c | 49 ++++---
objects/standard/polyline.c | 57 ++++----
objects/standard/textobj.c | 44 +++++--
objects/standard/zigzagline.c | 71 ++++++----
plug-ins/cairo/diacairo.c | 22 ++--
plug-ins/layout/layout.cpp | 151 ++++++++++++---------
plug-ins/pdf/pdf-import.cpp | 23 ++--
plug-ins/postscript/postscript.c | 28 ++--
plug-ins/python/diamodule.c | 2 +-
plug-ins/python/pydia-menuitem.c | 21 +--
plug-ins/python/pydia-object.c | 88 ++++++++-----
plug-ins/stress/stress.c | 12 +-
plug-ins/svg/svg-import.c | 19 ++-
plug-ins/wmf/wmf.cpp | 9 +-
154 files changed, 3694 insertions(+), 2446 deletions(-)
---
diff --git a/app/commands.c b/app/commands.c
index 9136bc131..a13fb4e57 100644
--- a/app/commands.c
+++ b/app/commands.c
@@ -194,7 +194,7 @@ file_preferences_callback (GtkAction *action)
static void
insert_text (DDisplay *ddisp, Focus *focus, const gchar *text)
{
- ObjectChange *change = NULL;
+ DiaObjectChange *change = NULL;
int modified = FALSE, any_modified = FALSE;
DiaObject *obj = focus_get_object (focus);
@@ -273,7 +273,7 @@ received_clipboard_image_handler (GtkClipboard *clipboard,
DDisplay *ddisp = (DDisplay *) data;
Diagram *dia = ddisp->diagram;
GList *list = dia->data->selected;
- ObjectChange *change = NULL;
+ DiaObjectChange *change = NULL;
if (!pixbuf) {
message_error (_("No image from Clipboard to paste."));
@@ -315,10 +315,10 @@ received_clipboard_image_handler (GtkClipboard *clipboard,
&handle2)) != NULL)) {
/* as above, transfer the data */
change = dia_object_set_pixbuf (obj, pixbuf);
- if (change) { /* ... but drop undo info */
- change->free (change);
- g_clear_pointer (&change, g_free);
- }
+
+ /* ... but drop undo info */
+ g_clear_pointer (&change, dia_object_change_unref);
+
/* allow undo of the whole thing */
dia_insert_objects_change_new (dia, g_list_prepend (NULL, obj), 1);
@@ -876,7 +876,7 @@ edit_cut_text_callback (GtkAction *action)
DiaObject *obj;
GPtrArray *textprops;
TextProperty *prop;
- ObjectChange *change;
+ DiaObjectChange *change;
ddisp = ddisplay_active ();
if (!ddisp) {
@@ -956,7 +956,7 @@ edit_delete_callback (GtkAction *action)
return;
}
if (textedit_mode (ddisp)) {
- ObjectChange *change = NULL;
+ DiaObjectChange *change = NULL;
Focus *focus = get_active_focus ((DiagramData *) ddisp->diagram);
if (!text_delete_key_handler (focus, &change)) {
return;
diff --git a/app/disp_callbacks.c b/app/disp_callbacks.c
index 945179c19..dd8013d1c 100644
--- a/app/disp_callbacks.c
+++ b/app/disp_callbacks.c
@@ -45,6 +45,7 @@
#include "object.h"
#include "disp_callbacks.h"
#include "create.h"
+#include "dia-object-change-list.h"
typedef struct {
GdkEvent *event; /* Button down event which may be holding */
@@ -57,10 +58,10 @@ static HoldTimeoutData hold_data = {NULL, NULL, 0};
static void
-object_menu_item_proxy(GtkWidget *widget, gpointer data)
+object_menu_item_proxy (GtkWidget *widget, gpointer data)
{
DiaMenuItem *dia_menu_item;
- ObjectChange *obj_change;
+ DiaObjectChange *obj_change;
DiaObject *obj;
DDisplay *ddisp = ddisplay_active();
Point last_clicked_pos;
@@ -176,35 +177,41 @@ add_follow_link_menu_item (GtkMenu *menu)
gtk_widget_show(menu_item);
}
+
static void
_convert_to_path_callback (GtkAction *action, gpointer data)
{
- DDisplay *ddisp = ddisplay_active();
+ DDisplay *ddisp = ddisplay_active ();
GList *selected, *list;
- ObjectChange *change_list = NULL;
+ DiaObjectChange *change_list = NULL;
if (!ddisp) return;
/* copy the list before modifying it */
list = selected = diagram_get_sorted_selected (ddisp->diagram);
while (list) {
- DiaObject *obj = (DiaObject *)list->data;
+ DiaObject *obj = DIA_OBJECT (list->data);
if (obj) { /* paranoid */
DiaObject *path = create_standard_path_from_object (obj);
if (path) { /* not so paranoid */
- ObjectChange *change = object_substitute (obj, path);
+ DiaObjectChange *change = object_substitute (obj, path);
- if (!change_list)
- change_list = change_list_create ();
- if (change)
- change_list_add (change_list, change);
+ if (!change_list) {
+ change_list = dia_object_change_list_new ();
+ }
+
+ if (change) {
+ dia_object_change_list_add (DIA_OBJECT_CHANGE_LIST (change_list),
+ change);
+ }
}
}
list = g_list_next(list);
}
g_list_free (selected);
+
if (change_list) {
dia_object_change_change_new (ddisp->diagram, NULL, change_list);
@@ -538,20 +545,29 @@ ddisplay_popup_menu(DDisplay *ddisp, GdkEventButton *event)
gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
event->button, event->time);
}
+
+
static void
-handle_key_event(DDisplay *ddisp, Focus *focus,
- guint keystate, guint keysym,
- const gchar *str, int strlen)
+handle_key_event (DDisplay *ddisp,
+ Focus *focus,
+ guint keystate,
+ guint keysym,
+ const char *str,
+ int strlen)
{
- DiaObject *obj = focus_get_object(focus);
+ DiaObject *obj = focus_get_object (focus);
Point p = obj->position;
- ObjectChange *obj_change = NULL;
+ DiaObjectChange *obj_change = NULL;
gboolean modified;
- object_add_updates(obj, ddisp->diagram);
+ object_add_updates (obj, ddisp->diagram);
- modified = (focus->key_event)(focus, keystate, keysym, str, strlen,
- &obj_change);
+ modified = (focus->key_event) (focus,
+ keystate,
+ keysym,
+ str,
+ strlen,
+ &obj_change);
/* Make sure object updates its data and its connected: */
p = obj->position;
@@ -1174,7 +1190,7 @@ ddisplay_drop_object(DDisplay *ddisp, gint x, gint y, DiaObjectType *otype,
Handle *handle1, *handle2;
DiaObject *obj, *p_obj;
GList *list;
- real click_distance;
+ double click_distance;
gboolean avoid_reset;
ddisplay_untransform_coords(ddisp, x, y, &droppoint.x, &droppoint.y);
@@ -1204,8 +1220,8 @@ ddisplay_drop_object(DDisplay *ddisp, gint x, gint y, DiaObjectType *otype,
/* the tool was dropped inside an object that takes children*/
{
DiaRectangle p_ext, c_ext;
- real parent_height, child_height, parent_width, child_width;
- real vadjust = 0.0, hadjust = 0.0;
+ double parent_height, child_height, parent_width, child_width;
+ double vadjust = 0.0, hadjust = 0.0;
Point new_pos;
obj->parent = p_obj;
diff --git a/app/display.c b/app/display.c
index d9d4358f1..e86ff18c1 100644
--- a/app/display.c
+++ b/app/display.c
@@ -1597,16 +1597,16 @@ display_set_active(DDisplay *ddisp)
}
}
+
void
-ddisplay_im_context_preedit_reset(DDisplay *ddisp, Focus *focus)
+ddisplay_im_context_preedit_reset (DDisplay *ddisp, Focus *focus)
{
if (ddisp->preedit_string != NULL) {
if (focus != NULL) {
- int i;
- ObjectChange *change;
+ DiaObjectChange *change;
- for (i = 0; i < g_utf8_strlen(ddisp->preedit_string, -1); i++) {
- (focus->key_event)(focus, 0, GDK_BackSpace, NULL, 0, &change);
+ for (int i = 0; i < g_utf8_strlen (ddisp->preedit_string, -1); i++) {
+ (focus->key_event) (focus, 0, GDK_BackSpace, NULL, 0, &change);
}
}
diff --git a/app/find-and-replace.c b/app/find-and-replace.c
index 9250fa884..3f7bab52a 100644
--- a/app/find-and-replace.c
+++ b/app/find-and-replace.c
@@ -352,11 +352,12 @@ find_func (gpointer data, gpointer user_data)
}
}
+
/* Match and replace property values. */
static gboolean
_replace (DiaObject *obj, const SearchData *sd, const char *replacement)
{
- ObjectChange *obj_change;
+ DiaObjectChange *obj_change;
GPtrArray *plist = NULL;
plist = _match_props (obj, sd, replacement);
diff --git a/app/menus.c b/app/menus.c
index dcc1ef1da..938b69e63 100644
--- a/app/menus.c
+++ b/app/menus.c
@@ -39,7 +39,6 @@
#include "widgets.h"
#include "preferences.h"
#include "filter.h"
-#include "objchange.h"
#include "toolbox.h"
#include "diagram_tree.h"
#include "dia-builder.h"
@@ -1357,29 +1356,34 @@ plugin_callback (GtkWidget *widget, gpointer data)
if (cbf->callback) {
DDisplay *ddisp = NULL;
DiagramData* diadata = NULL;
- ObjectChange *change;
+ DiaObjectChange *change;
+
/* stuff from the toolbox menu should never get a diagram to modify */
if (strncmp (cbf->menupath, TOOLBOX_MENU, strlen (TOOLBOX_MENU)) != 0) {
ddisp = ddisplay_active();
diadata = ddisp ? ddisp->diagram->data : NULL;
}
- change = cbf->callback (diadata, ddisp ? ddisp->diagram->filename : NULL, 0, cbf->user_data);
+
+ change = cbf->callback (diadata,
+ ddisp ? ddisp->diagram->filename : NULL,
+ 0,
+ cbf->user_data);
+
if (change != NULL) {
if (ddisp) {
dia_object_change_change_new (ddisp->diagram, NULL, change);
- /*
- * - can not call object_add_update() w/o object
- * - could call object_add_updates_list() with the selected objects,
- * but that would just be an educated guess (layout working on selection)
- */
- diagram_add_update_all(ddisp->diagram);
- diagram_modified(ddisp->diagram);
- diagram_update_extents(ddisp->diagram);
- undo_set_transactionpoint(ddisp->diagram->undo);
- } else { /* no diagram to keep the change, throw it away */
- if (change->free)
- change->free(change);
- g_clear_pointer (&change, g_free);
+ /*
+ * - can not call object_add_update() w/o object
+ * - could call object_add_updates_list() with the selected objects,
+ * but that would just be an educated guess (layout working on selection)
+ */
+ diagram_add_update_all (ddisp->diagram);
+ diagram_modified (ddisp->diagram);
+ diagram_update_extents (ddisp->diagram);
+ undo_set_transactionpoint (ddisp->diagram->undo);
+ } else {
+ /* no diagram to keep the change, throw it away */
+ g_clear_pointer (&change, dia_object_change_unref);
}
}
}
diff --git a/app/modify_tool.c b/app/modify_tool.c
index 6a32c1a5d..d0ba15b7a 100644
--- a/app/modify_tool.c
+++ b/app/modify_tool.c
@@ -468,7 +468,7 @@ modify_motion (ModifyTool *tool,
Point now, delta, full_delta;
gboolean auto_scroll, vertical = FALSE;
ConnectionPoint *connectionpoint = NULL;
- ObjectChange *objchange = NULL;
+ DiaObjectChange *objchange = NULL;
ddisplay_untransform_coords(ddisp, event->x, event->y, &to.x, &to.y);
@@ -652,10 +652,15 @@ modify_motion (ModifyTool *tool,
object_add_updates (tool->object, ddisp->diagram);
/* Handle undo */
- if (tool->object)
- objchange = tool->object->ops->move_handle(tool->object, tool->handle,
- &to, connectionpoint,
- HANDLE_MOVE_USER,
gdk_event_to_dia_ModifierKeys(event->state));
+ if (tool->object) {
+ objchange = dia_object_move_handle (tool->object,
+ tool->handle,
+ &to,
+ connectionpoint,
+ HANDLE_MOVE_USER,
+ gdk_event_to_dia_ModifierKeys (event->state));
+ }
+
if (objchange != NULL) {
dia_object_change_change_new (ddisp->diagram, tool->object, objchange);
}
@@ -716,14 +721,16 @@ find_selected_objects(DDisplay *ddisp, ModifyTool *tool)
}
}
+
static void
-modify_button_release(ModifyTool *tool, GdkEventButton *event,
- DDisplay *ddisp)
+modify_button_release (ModifyTool *tool,
+ GdkEventButton *event,
+ DDisplay *ddisp)
{
Point *dest_pos, to;
GList *list;
int i;
- ObjectChange *objchange;
+ DiaObjectChange *objchange;
tool->break_connections = FALSE;
ddisplay_set_all_cursor(default_cursor);
@@ -778,16 +785,22 @@ modify_button_release(ModifyTool *tool, GdkEventButton *event,
tool->state = STATE_NONE;
if (tool->orig_pos != NULL) {
- dia_move_handle_change_new (ddisp->diagram, tool->handle, tool->object,
- *tool->orig_pos, tool->last_to,
+ dia_move_handle_change_new (ddisp->diagram,
+ tool->handle,
+ tool->object,
+ *tool->orig_pos,
+ tool->last_to,
gdk_event_to_dia_ModifierKeys (event->state));
}
/* Final move: */
object_add_updates(tool->object, ddisp->diagram);
- objchange = tool->object->ops->move_handle(tool->object, tool->handle,
- &tool->last_to, NULL,
-
HANDLE_MOVE_USER_FINAL,gdk_event_to_dia_ModifierKeys(event->state));
+ objchange = dia_object_move_handle (tool->object,
+ tool->handle,
+ &tool->last_to,
+ NULL,
+ HANDLE_MOVE_USER_FINAL,
+ gdk_event_to_dia_ModifierKeys (event->state));
if (objchange != NULL) {
dia_object_change_change_new (ddisp->diagram, tool->object, objchange);
}
diff --git a/app/properties-dialog.c b/app/properties-dialog.c
index 73f0653ce..3b9bd8e92 100644
--- a/app/properties-dialog.c
+++ b/app/properties-dialog.c
@@ -115,12 +115,13 @@ properties_key_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
return FALSE;
}
-static gint
-properties_respond(GtkWidget *widget,
- gint response_id,
- gpointer data)
+
+static int
+properties_respond (GtkWidget *widget,
+ int response_id,
+ gpointer data)
{
- ObjectChange *obj_change = NULL;
+ DiaObjectChange *obj_change = NULL;
gboolean set_tp = TRUE;
GList *tmp;
@@ -131,7 +132,7 @@ properties_respond(GtkWidget *widget,
for (tmp = current_objects; tmp != NULL; tmp = tmp->next) {
DiaObject *current_obj = (DiaObject*)tmp->data;
- obj_change = current_obj->ops->apply_properties_from_dialog(current_obj, object_part);
+ obj_change = dia_object_apply_editor (current_obj, object_part);
object_add_updates(current_obj, current_dia);
diagram_update_connections_object(current_dia, current_obj, TRUE);
diff --git a/app/undo.c b/app/undo.c
index d70273b8e..f32155b1b 100644
--- a/app/undo.c
+++ b/app/undo.c
@@ -31,7 +31,8 @@
#include "parent.h"
#include "dia-layer.h"
-void undo_update_menus(UndoStack *stack);
+
+void undo_update_menus (UndoStack *stack);
/**
* DiaTransactionPointChange:
@@ -979,7 +980,7 @@ struct _DiaObjectChangeChange {
DiaChange change;
DiaObject *obj;
- ObjectChange *obj_change;
+ DiaObjectChange *obj_change;
};
DIA_DEFINE_CHANGE (DiaObjectChangeChange, dia_object_change_change)
@@ -1005,7 +1006,7 @@ dia_object_change_change_apply (DiaChange *self,
object_add_updates (change->obj, DIA_DIAGRAM (dia));
}
- change->obj_change->apply (change->obj_change, change->obj);
+ dia_object_change_apply (change->obj_change, change->obj);
if (change->obj) {
/* Make sure object updates its data: */
@@ -1035,7 +1036,7 @@ dia_object_change_change_revert (DiaChange *self,
object_add_updates (change->obj, DIA_DIAGRAM (dia));
}
- change->obj_change->revert (change->obj_change, change->obj);
+ dia_object_change_revert (change->obj_change, change->obj);
if (change->obj) {
/* Make sure object updates its data: */
@@ -1060,27 +1061,30 @@ dia_object_change_change_free (DiaChange *self)
DiaObjectChangeChange *change = DIA_OBJECT_CHANGE_CHANGE (self);
g_debug ("state_change_free()");
- if (change->obj_change->free) {
- (*change->obj_change->free) (change->obj_change);
- }
- g_clear_pointer (&change->obj_change, g_free);
+ g_clear_pointer (&change->obj_change, dia_object_change_unref);
}
+/**
+ * dia_object_change_change_new:
+ * @dia: the #Diagram the change is from
+ * @obj: the #DiaObject in the @dia
+ * @change: (transfer full): the #DiaObjectChange to wrap
+ */
DiaChange *
-dia_object_change_change_new (Diagram *dia,
- DiaObject *obj,
- ObjectChange *obj_change)
+dia_object_change_change_new (Diagram *dia,
+ DiaObject *obj,
+ DiaObjectChange *change)
{
- DiaObjectChangeChange *change = dia_change_new (DIA_TYPE_OBJECT_CHANGE_CHANGE);
+ DiaObjectChangeChange *self = dia_change_new (DIA_TYPE_OBJECT_CHANGE_CHANGE);
- change->obj = obj;
- change->obj_change = obj_change;
+ self->obj = obj;
+ self->obj_change = change;
- undo_push_change (dia->undo, DIA_CHANGE (change));
+ undo_push_change (dia->undo, DIA_CHANGE (self));
- return DIA_CHANGE (change);
+ return DIA_CHANGE (self);
}
/******** Group object list: */
@@ -1735,8 +1739,8 @@ dia_mem_swap_change_new (Diagram *dia, gpointer dest, gsize size)
struct _DiaMoveGuideChange {
DiaChange parent;
- real orig_pos;
- real dest_pos;
+ double orig_pos;
+ double dest_pos;
DiaGuide *guide;
};
@@ -1744,30 +1748,30 @@ DIA_DEFINE_CHANGE (DiaMoveGuideChange, dia_move_guide_change)
static void
-dia_move_guide_change_apply (DiaChange *self, Diagram *dia)
+dia_move_guide_change_apply (DiaChange *self, DiagramData *dia)
{
DiaMoveGuideChange *change = DIA_MOVE_GUIDE_CHANGE (self);
change->guide->position = change->dest_pos;
/* Force redraw. */
- diagram_add_update_all (dia);
- diagram_modified (dia);
- diagram_flush (dia);
+ diagram_add_update_all (DIA_DIAGRAM (dia));
+ diagram_modified (DIA_DIAGRAM (dia));
+ diagram_flush (DIA_DIAGRAM (dia));
}
static void
-dia_move_guide_change_revert (DiaChange *self, Diagram *dia)
+dia_move_guide_change_revert (DiaChange *self, DiagramData *dia)
{
DiaMoveGuideChange *change = DIA_MOVE_GUIDE_CHANGE (self);
change->guide->position = change->orig_pos;
/* Force redraw. */
- diagram_add_update_all (dia);
- diagram_modified (dia);
- diagram_flush (dia);
+ diagram_add_update_all (DIA_DIAGRAM (dia));
+ diagram_modified (DIA_DIAGRAM (dia));
+ diagram_flush (DIA_DIAGRAM (dia));
}
@@ -1779,7 +1783,10 @@ dia_move_guide_change_free (DiaChange *change)
DiaChange *
-dia_move_guide_change_new (Diagram *dia, DiaGuide *guide, real orig_pos, real dest_pos)
+dia_move_guide_change_new (Diagram *dia,
+ DiaGuide *guide,
+ double orig_pos,
+ double dest_pos)
{
DiaMoveGuideChange *change = dia_change_new (DIA_TYPE_MOVE_GUIDE_CHANGE);
@@ -1805,21 +1812,24 @@ DIA_DEFINE_CHANGE (DiaAddGuideChange, dia_add_guide_change)
static void
-dia_add_guide_change_apply (DiaChange *self, Diagram *dia)
+dia_add_guide_change_apply (DiaChange *self, DiagramData *dia)
{
DiaAddGuideChange *change = DIA_ADD_GUIDE_CHANGE (self);
DiaGuide *new_guide;
g_debug ("add_guide_apply()");
- new_guide = dia_diagram_add_guide (dia, change->guide->position, change->guide->orientation, FALSE);
+ new_guide = dia_diagram_add_guide (DIA_DIAGRAM (dia),
+ change->guide->position,
+ change->guide->orientation,
+ FALSE);
g_clear_pointer (&change->guide, g_free);
change->guide = new_guide;
/* Force redraw. */
- diagram_add_update_all (dia);
- diagram_modified (dia);
- diagram_flush (dia);
+ diagram_add_update_all (DIA_DIAGRAM (dia));
+ diagram_modified (DIA_DIAGRAM (dia));
+ diagram_flush (DIA_DIAGRAM (dia));
/* Set flag. */
change->applied = 1;
@@ -1827,18 +1837,18 @@ dia_add_guide_change_apply (DiaChange *self, Diagram *dia)
static void
-dia_add_guide_change_revert (DiaChange *self, Diagram *dia)
+dia_add_guide_change_revert (DiaChange *self, DiagramData *dia)
{
DiaAddGuideChange *change = DIA_ADD_GUIDE_CHANGE (self);
g_debug ("add_guide_revert()");
- dia_diagram_remove_guide (dia, change->guide, FALSE);
+ dia_diagram_remove_guide (DIA_DIAGRAM (dia), change->guide, FALSE);
/* Force redraw. */
- diagram_add_update_all (dia);
- diagram_modified (dia);
- diagram_flush (dia);
+ diagram_add_update_all (DIA_DIAGRAM (dia));
+ diagram_modified (DIA_DIAGRAM (dia));
+ diagram_flush (DIA_DIAGRAM (dia));
/* Set flag. */
change->applied = 0;
@@ -1884,18 +1894,18 @@ DIA_DEFINE_CHANGE (DiaDeleteGuideChange, dia_delete_guide_change)
static void
-dia_delete_guide_change_apply (DiaChange *self, Diagram *dia)
+dia_delete_guide_change_apply (DiaChange *self, DiagramData *dia)
{
DiaDeleteGuideChange *change = DIA_DELETE_GUIDE_CHANGE (self);
g_debug ("delete_guide_apply()");
- dia_diagram_remove_guide (dia, change->guide, FALSE);
+ dia_diagram_remove_guide (DIA_DIAGRAM (dia), change->guide, FALSE);
/* Force redraw. */
- diagram_add_update_all (dia);
- diagram_modified (dia);
- diagram_flush (dia);
+ diagram_add_update_all (DIA_DIAGRAM (dia));
+ diagram_modified (DIA_DIAGRAM (dia));
+ diagram_flush (DIA_DIAGRAM (dia));
/* Set flag. */
change->applied = 1;
@@ -1903,7 +1913,7 @@ dia_delete_guide_change_apply (DiaChange *self, Diagram *dia)
static void
-dia_delete_guide_change_revert (DiaChange *self, Diagram *dia)
+dia_delete_guide_change_revert (DiaChange *self, DiagramData *dia)
{
DiaDeleteGuideChange *change = DIA_DELETE_GUIDE_CHANGE (self);
@@ -1914,7 +1924,7 @@ dia_delete_guide_change_revert (DiaChange *self, Diagram *dia)
g_debug ("delete_guide_revert()");
/* Add it again. */
- new_guide = dia_diagram_add_guide (dia,
+ new_guide = dia_diagram_add_guide (DIA_DIAGRAM (dia),
change->guide->position,
change->guide->orientation,
FALSE);
@@ -1924,9 +1934,9 @@ dia_delete_guide_change_revert (DiaChange *self, Diagram *dia)
change->guide = new_guide;
/* Force redraw. */
- diagram_add_update_all (dia);
- diagram_modified (dia);
- diagram_flush (dia);
+ diagram_add_update_all (DIA_DIAGRAM (dia));
+ diagram_modified (DIA_DIAGRAM (dia));
+ diagram_flush (DIA_DIAGRAM (dia));
/* Set flag. */
change->applied = 0;
diff --git a/app/undo.h b/app/undo.h
index 59e5a2d81..5976a2cd7 100644
--- a/app/undo.h
+++ b/app/undo.h
@@ -23,8 +23,9 @@ typedef struct _UndoStack UndoStack;
#include "diagram.h"
#include "dia-guide.h"
-
#include "dia-change.h"
+#include "dia-object-change.h"
+
struct _UndoStack {
Diagram *dia;
@@ -116,9 +117,9 @@ DiaChange *dia_reorder_objects_change_new (Diagram *dia,
#define DIA_TYPE_OBJECT_CHANGE_CHANGE dia_object_change_change_get_type ()
G_DECLARE_FINAL_TYPE (DiaObjectChangeChange, dia_object_change_change, DIA, OBJECT_CHANGE_CHANGE, DiaChange)
-DiaChange *dia_object_change_change_new (Diagram *dia,
- DiaObject *obj,
- ObjectChange *obj_change);
+DiaChange *dia_object_change_change_new (Diagram *dia,
+ DiaObject *obj,
+ DiaObjectChange *change);
#define DIA_TYPE_GROUP_OBJECTS_CHANGE dia_group_objects_change_get_type ()
diff --git a/bindings/dia-object.cpp b/bindings/dia-object.cpp
index 03fdc1d29..0ea975a24 100644
--- a/bindings/dia-object.cpp
+++ b/bindings/dia-object.cpp
@@ -139,22 +139,28 @@ dia::Object* dia::Object::copy () const
assert (self);
return new dia::Object (self->ops->copy (self));
}
+
+
//! change position of the whole object
-ObjectChange*
+DiaObjectChange *
dia::Object::move (double x, double y)
{
- assert (self);
- Point p = {x, y};
- return self->ops->move (self, &p);
+ assert (self);
+ Point p = {x, y};
+ return dia_object_move (self, &p);
}
+
+
//! change position of an object handle - this is usually a resize (Attention: does *not* match the C
prototype)
-ObjectChange*
+DiaObjectChange *
dia::Object::move_handle (dia::Handle* h, double x, double y, HandleMoveReason reason, ModifierKeys
modifiers)
{
- assert (self);
- Point p = {x, y};
- return self->ops->move_handle (self, h->Self(), &p, NULL, reason, modifiers);
+ assert (self);
+ Point p = {x, y};
+ return dia_object_move_handle (self, h->Self(), &p, NULL, reason, modifiers);
}
+
+
//! OPTIONAL: provide a property dialog to change the object proeprties
GtkWidget*
dia::Object::get_properties (bool is_default) const
@@ -164,15 +170,22 @@ dia::Object::get_properties (bool is_default) const
return 0;
return self->ops->get_properties (self, is_default);
}
+
+
//! OPTIONAL: apply the properties changed in the dialog
-ObjectChange*
+DiaObjectChange *
dia::Object::apply_properties (GtkWidget* w)
{
- assert (self);
- if (!self->ops->apply_properties_from_dialog)
- return NULL;
- return self->ops->apply_properties_from_dialog (self, w);
+ assert (self);
+
+ if (!self->ops->apply_properties_from_dialog) {
+ return NULL;
+ }
+
+ return self->ops->apply_properties_from_dialog (self, w);
}
+
+
//! OPTIONAL: provide a context menu to change the object states
DiaMenu*
dia::Object::get_object_menu (Point* pos) const
diff --git a/bindings/dia-object.h b/bindings/dia-object.h
index 627c964e3..e808a9e2a 100644
--- a/bindings/dia-object.h
+++ b/bindings/dia-object.h
@@ -85,14 +85,14 @@ public :
//! create a deep copy
Object* copy () const;
//! change position of the whole object
- ObjectChange* move (double x, double y);
+ DiaObjectChange* move (double x, double y);
//! change position of an object handle - this is usually a resize (Attention: does *not* match the C
prototype)
- ObjectChange* move_handle (Handle* h, double x, double y, HandleMoveReason reason, ModifierKeys
modifiers);
+ DiaObjectChange* move_handle (Handle* h, double x, double y, HandleMoveReason reason, ModifierKeys
modifiers);
//! OPTIONAL: provide a property dialog to change the object proeprties
GtkWidget* get_properties (bool is_default) const;
//! OPTIONAL: apply the properties changed in the dialog
- ObjectChange* apply_properties (GtkWidget*);
+ DiaObjectChange* apply_properties (GtkWidget*);
//! OPTIONAL: provide a context menu to change the object states
DiaMenu* get_object_menu (Point* pos) const;
diff --git a/docs/dia/dia-docs.xml b/docs/dia/dia-docs.xml
index fafb731ee..ec3e4c5e1 100644
--- a/docs/dia/dia-docs.xml
+++ b/docs/dia/dia-docs.xml
@@ -19,7 +19,7 @@
</releaseinfo>
<copyright>
- <year>2019</year>
+ <year>2019-2020</year>
<holder>Zander Brown</holder>
</copyright>
</bookinfo>
@@ -72,6 +72,7 @@
<xi:include href="xml/objchange.xml"/>
<xi:include href="xml/dia-change.xml" />
<xi:include href="xml/dia-object-change.xml" />
+ <xi:include href="xml/dia-object-change-legacy.xml" />
<xi:include href="xml/object-alias.xml"/>
<xi:include href="xml/create.xml"/>
<xi:include href="xml/diatransform.xml"/>
@@ -132,24 +133,24 @@
<xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
</index>
- <index id="api-index-0.98">
+ <index id="api-index-0.98" role="0.98">
<title>API added in 0.98</title>
<xi:include href="xml/api-index-0.98.xml"><xi:fallback /></xi:include>
</index>
- <index id="api-index-dawn-of-time">
+ <index id="api-index-dawn-of-time" role="dawn-of-time">
<title>API added before 0.98</title>
<xi:include href="xml/api-index-dawn-of-time.xml"><xi:fallback /></xi:include>
</index>
- <index id="deprecated-api-index" role="deprecated">
+ <index id="api-index-deprecated" role="deprecated">
<title>Index of deprecated API</title>
<xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
</index>
<index id="annotations-glossary">
- <title>Annotations glossary</title>
- <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
+ <title>Annotations glossary</title>
+ <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
</index>
</book>
diff --git a/lib/bezier-common.c b/lib/bezier-common.c
index 995d96792..0104d0924 100644
--- a/lib/bezier-common.c
+++ b/lib/bezier-common.c
@@ -40,7 +40,7 @@ bezier_calc_corner_types (BezierCommon *bezier)
{
int i;
int num = bezier->num_points;
- const real tolerance = 0.00001; /* EPSILON */
+ const double tolerance = 0.00001; /* EPSILON */
g_return_if_fail (bezier->num_points > 1);
@@ -93,8 +93,8 @@ beziercommon_set_points (BezierCommon *bezier,
/* to make editing in Dia more convenient we turn line-to to curve-to with cusp controls */
if (points[i].type == BEZ_LINE_TO) {
Point start = (points[i-1].type == BEZ_CURVE_TO) ? points[i-1].p3 : points[i-1].p1;
- real dx = points[i].p1.x - start.x;
- real dy = points[i].p1.y - start.y;
+ double dx = points[i].p1.x - start.x;
+ double dy = points[i].p1.y - start.y;
bezier->points[i].p3 = points[i].p1;
bezier->points[i].p1.x = start.x + dx / 3;
bezier->points[i].p1.y = start.y + dy / 3;
@@ -135,19 +135,19 @@ beziercommon_copy (BezierCommon *from, BezierCommon *to)
*/
int
beziercommon_closest_segment (BezierCommon *bezier,
- const Point *point,
- real line_width)
+ const Point *point,
+ double line_width)
{
Point last;
int i;
- real dist = G_MAXDOUBLE;
+ double dist = G_MAXDOUBLE;
int closest;
closest = 0;
last = bezier->points[0].p1;
/* the first point is just move-to so there is no need to consider p2,p3 of it */
for (i = 1; i < bezier->num_points; i++) {
- real new_dist = distance_bez_seg_point(&last, &bezier->points[i], line_width, point);
+ double new_dist = distance_bez_seg_point(&last, &bezier->points[i], line_width, point);
if (new_dist < dist) {
dist = new_dist;
closest = i - 1;
diff --git a/lib/bezier-common.h b/lib/bezier-common.h
index 7f6058703..c8c9a0e57 100644
--- a/lib/bezier-common.h
+++ b/lib/bezier-common.h
@@ -25,7 +25,6 @@
#define BEZIER_COMMON_H
#include "diatypes.h"
-#include "geometry.h" /* for real */
#include "diarenderer.h"
typedef enum {
@@ -35,21 +34,30 @@ typedef enum {
} BezCornerType;
+/**
+ * BezierCommon:
+ * @num_points: The number of point in points
+ * @points: Array of #BezPoint to operate on
+ * @corner_types: The corner types for manual adjustment
+ */
typedef struct _BezierCommon BezierCommon;
-
struct _BezierCommon {
- /*! The number of point in points */
int num_points;
- /*! Array of _BezPoint to operate on */
BezPoint *points;
- /*! The corner types for manual adjustment */
BezCornerType *corner_types;
};
-void beziercommon_set_points (BezierCommon *bezier, int num, const BezPoint *pts);
-void beziercommon_copy (BezierCommon *from, BezierCommon *to);
-int beziercommon_closest_segment (BezierCommon *bezier, const Point *point, real line_width);
-void bezier_draw_control_lines (int num_points, BezPoint *pts, DiaRenderer *renderer);
+void beziercommon_set_points (BezierCommon *bezier,
+ int num_points,
+ const BezPoint *points);
+void beziercommon_copy (BezierCommon *from,
+ BezierCommon *to);
+int beziercommon_closest_segment (BezierCommon *bezier,
+ const Point *point,
+ double line_width);
+void bezier_draw_control_lines (int num_points,
+ BezPoint *pts,
+ DiaRenderer *renderer);
#endif
diff --git a/lib/bezier_conn.c b/lib/bezier_conn.c
index 9584e6357..cc5285bd3 100644
--- a/lib/bezier_conn.c
+++ b/lib/bezier_conn.c
@@ -29,6 +29,7 @@
#include "bezier_conn.h"
#include "diarenderer.h"
+#include "dia-object-change-legacy.h"
#define HANDLE_BEZMAJOR (HANDLE_CUSTOM1)
#define HANDLE_LEFTCTRL (HANDLE_CUSTOM2)
@@ -68,23 +69,23 @@ struct CornerChange {
};
-static ObjectChange *bezierconn_create_point_change (BezierConn *bezier,
- enum change_type type,
- BezPoint *point,
- BezCornerType corner_type,
- int segment,
- Handle *handle1,
- ConnectionPoint *connected_to1,
- Handle *handle2,
- ConnectionPoint *connected_to2,
- Handle *handle3,
- ConnectionPoint *connected_to3);
-static ObjectChange *bezierconn_create_corner_change (BezierConn *bezier,
- Handle *handle,
- Point *point_left,
- Point *point_right,
- BezCornerType old_corner_type,
- BezCornerType new_corner_type);
+static DiaObjectChange *bezierconn_create_point_change (BezierConn *bezier,
+ enum change_type type,
+ BezPoint *point,
+ BezCornerType corner_type,
+ int segment,
+ Handle *handle1,
+ ConnectionPoint *connected_to1,
+ Handle *handle2,
+ ConnectionPoint *connected_to2,
+ Handle *handle3,
+ ConnectionPoint *connected_to3);
+static DiaObjectChange *bezierconn_create_corner_change (BezierConn *bezier,
+ Handle *handle,
+ Point *point_left,
+ Point *point_right,
+ BezCornerType old_corner_type,
+ BezCornerType new_corner_type);
/**
@@ -141,7 +142,7 @@ void new_handles (BezierConn *bezier, int num_points);
* @to: The position it has been moved to (corrected for
* vertical/horizontal only movement).
* @cp: If non-%NULL, the connectionpoint found at this position.
- * If @a cp is %NULL, there may or may not be a connectionpoint.
+ * If @cp is %NULL, there may or may not be a connectionpoint.
* @reason: ignored
* @modifiers: ignored
*
@@ -149,7 +150,7 @@ void new_handles (BezierConn *bezier, int num_points);
*
* Returns: %NULL
*/
-ObjectChange*
+DiaObjectChange *
bezierconn_move_handle (BezierConn *bezier,
Handle *handle,
Point *to,
@@ -288,7 +289,7 @@ bezierconn_move_handle (BezierConn *bezier,
*
* Returns: %NULL
*/
-ObjectChange*
+DiaObjectChange *
bezierconn_move (BezierConn *bezier, Point *to)
{
Point p;
@@ -518,11 +519,11 @@ remove_handles (BezierConn *bezier, int pos)
* 'point' or, if NULL, in the middle. This function will attempt to come
* up with reasonable placements for the control points.
*
- * Returns: An #ObjectChange object with undo information for the split.
+ * Returns: An #DiaObjectChange object with undo information for the split.
*
* Since: dawn-of-time
*/
-ObjectChange *
+DiaObjectChange *
bezierconn_add_segment (BezierConn *bezier,
int segment,
Point *point)
@@ -597,7 +598,7 @@ bezierconn_add_segment (BezierConn *bezier,
*
* Since: dawn-of-time
*/
-ObjectChange *
+DiaObjectChange *
bezierconn_remove_segment (BezierConn *bezier, int pos)
{
Handle *old_handle1, *old_handle2, *old_handle3;
@@ -731,7 +732,7 @@ bezierconn_straighten_corner (BezierConn *bezier, int comp_nr)
*
* Returns: Undo information about the corner change.
*/
-ObjectChange *
+DiaObjectChange *
bezierconn_set_corner_type (BezierConn *bezier,
Handle *handle,
BezCornerType corner_type)
@@ -1277,7 +1278,7 @@ bezierconn_point_change_revert (struct PointChange *change, DiaObject *obj)
*
* Since: dawn-of-time
*/
-static ObjectChange *
+static DiaObjectChange *
bezierconn_create_point_change (BezierConn *bezier,
enum change_type type,
BezPoint *point,
@@ -1310,7 +1311,7 @@ bezierconn_create_point_change (BezierConn *bezier,
change->handle3 = handle3;
change->connected_to3 = connected_to3;
- return (ObjectChange *)change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
@@ -1376,14 +1377,14 @@ bezierconn_corner_change_revert (struct CornerChange *change,
* @new_corner_type: The corner type being changed to.
*
* Create new undo information about a changing the type of a corner.
- * Note that the created #ObjectChange object has nothing in it that needs
+ * Note that the created #DiaObjectChange object has nothing in it that needs
* freeing.
*
* Returns: Newly allocated undo information.
*
* Since: dawn-of-time
*/
-static ObjectChange *
+static DiaObjectChange *
bezierconn_create_corner_change (BezierConn *bezier,
Handle *handle,
Point *point_left,
@@ -1410,5 +1411,5 @@ bezierconn_create_corner_change (BezierConn *bezier,
change->point_left = *point_left;
change->point_right = *point_right;
- return (ObjectChange *) change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
diff --git a/lib/bezier_conn.h b/lib/bezier_conn.h
index 628e9d991..f40c194ee 100644
--- a/lib/bezier_conn.h
+++ b/lib/bezier_conn.h
@@ -17,15 +17,16 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-
-#ifndef BEZIER_CONN_H
-#define BEZIER_CONN_H
+
+#pragma once
#include "diatypes.h"
#include "object.h"
#include "boundingbox.h"
#include "bezier-common.h"
+G_BEGIN_DECLS
+
/*!
* \brief Helper class to implement bezier connections
*
@@ -43,27 +44,45 @@ struct _BezierConn {
PolyBBExtras extra_spacing;
};
-void bezierconn_update_data(BezierConn *bez);
-void bezierconn_update_boundingbox(BezierConn *bez);
-void bezierconn_init(BezierConn *bez, int num_points);
-void bezierconn_destroy(BezierConn *bez);
-void bezierconn_copy(BezierConn *from, BezierConn *to);
-void bezierconn_save(BezierConn *bez, ObjectNode obj_node, DiaContext *ctx);
-void bezierconn_load(BezierConn *bez, ObjectNode obj_node, DiaContext *ctx); /* NOTE: Does object_init() */
-ObjectChange *bezierconn_add_segment(BezierConn *bez, int segment, Point *point);
-ObjectChange *bezierconn_remove_segment(BezierConn *bez, int point);
-ObjectChange *bezierconn_set_corner_type(BezierConn *bez,
- Handle *handle,
- BezCornerType style);
-ObjectChange *bezierconn_move_handle(BezierConn *bez, Handle *id,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-ObjectChange *bezierconn_move(BezierConn *bez, Point *to);
-real bezierconn_distance_from(BezierConn *bez, Point *point,
- real line_width);
-Handle *bezierconn_closest_handle(BezierConn *bez, Point *point);
-Handle *bezierconn_closest_major_handle(BezierConn *bez, Point *point);
+
+void bezierconn_update_data (BezierConn *bezier);
+void bezierconn_update_boundingbox (BezierConn *bezier);
+void bezierconn_init (BezierConn *bezier,
+ int num_points);
+void bezierconn_destroy (BezierConn *bezier);
+void bezierconn_copy (BezierConn *from,
+ BezierConn *to);
+void bezierconn_save (BezierConn *bezier,
+ ObjectNode obj_node,
+ DiaContext *ctx);
+/* NOTE: Does object_init() */
+void bezierconn_load (BezierConn *bezier,
+ ObjectNode obj_node,
+ DiaContext *ctx);
+DiaObjectChange *bezierconn_add_segment (BezierConn *bezier,
+ int segment,
+ Point *point);
+DiaObjectChange *bezierconn_remove_segment (BezierConn *bezier,
+ int point);
+DiaObjectChange *bezierconn_set_corner_type (BezierConn *bezier,
+ Handle *handle,
+ BezCornerType style);
+DiaObjectChange *bezierconn_move_handle (BezierConn *bezier,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+DiaObjectChange *bezierconn_move (BezierConn *bezier,
+ Point *to);
+double bezierconn_distance_from (BezierConn *bezier,
+ Point *point,
+ double line_width);
+Handle *bezierconn_closest_handle (BezierConn *bezier,
+ Point *point);
+Handle *bezierconn_closest_major_handle (BezierConn *bezier,
+ Point *point);
+
#define BEZCONN_COMMON_PROPERTIES \
OBJECT_COMMON_PROPERTIES, \
@@ -74,4 +93,4 @@ Handle *bezierconn_closest_major_handle(BezierConn *bez, Point *point);
{ "bez_points", PROP_TYPE_BEZPOINTARRAY, \
offsetof(BezierConn,bezier.points), offsetof(BezierConn,bezier.num_points)} \
-#endif /* BEZIER_CONN_H */
+G_END_DECLS
diff --git a/lib/beziershape.c b/lib/beziershape.c
index 5ca9872bc..bda7dadf6 100644
--- a/lib/beziershape.c
+++ b/lib/beziershape.c
@@ -28,6 +28,8 @@
#include "beziershape.h"
#include "diarenderer.h"
+#include "dia-object-change-legacy.h"
+
#define HANDLE_BEZMAJOR (HANDLE_CUSTOM1)
#define HANDLE_LEFTCTRL (HANDLE_CUSTOM2)
@@ -71,24 +73,24 @@ struct CornerChange {
};
-static ObjectChange *beziershape_create_point_change (BezierShape *bezier,
- enum change_type type,
- BezPoint *point,
- BezCornerType corner_type,
- int segment,
- Handle *handle1,
- Handle *handle2,
- Handle *handle3,
- ConnectionPoint *cp1,
- ConnectionPoint *cp2);
-static ObjectChange *beziershape_create_corner_change (BezierShape *bezier,
- Handle *handle,
- Point *point_left,
- Point *point_right,
- BezCornerType old_corner_type,
- BezCornerType new_corner_type);
-static void new_handles_and_connections (BezierShape *bezier,
- int num_points);
+static DiaObjectChange *beziershape_create_point_change (BezierShape *bezier,
+ enum change_type type,
+ BezPoint *point,
+ BezCornerType corner_type,
+ int segment,
+ Handle *handle1,
+ Handle *handle2,
+ Handle *handle3,
+ ConnectionPoint *cp1,
+ ConnectionPoint *cp2);
+static DiaObjectChange *beziershape_create_corner_change (BezierShape *bezier,
+ Handle *handle,
+ Point *point_left,
+ Point *point_right,
+ BezCornerType old_corner_type,
+ BezCornerType new_corner_type);
+static void new_handles_and_connections (BezierShape *bezier,
+ int num_points);
/**
@@ -153,7 +155,7 @@ get_handle_nr (BezierShape *bezier, Handle *handle)
*
* Returns: %NULL
*/
-ObjectChange *
+DiaObjectChange *
beziershape_move_handle (BezierShape *bezier,
Handle *handle,
Point *to,
@@ -292,7 +294,7 @@ beziershape_move_handle (BezierShape *bezier,
* @return NULL
* \memberof _BezierConn
*/
-ObjectChange*
+DiaObjectChange *
beziershape_move (BezierShape *bezier, Point *to)
{
Point p;
@@ -483,9 +485,10 @@ remove_handles (BezierShape *bezier, int pos)
/* Add a point by splitting segment into two, putting the new point at
'point' or, if NULL, in the middle */
-ObjectChange *
+DiaObjectChange *
beziershape_add_segment (BezierShape *bezier,
- int segment, Point *point)
+ int segment,
+ Point *point)
{
BezPoint realpoint;
BezCornerType corner_type = BEZ_CORNER_SYMMETRIC;
@@ -537,6 +540,7 @@ beziershape_add_segment (BezierShape *bezier,
new_cp1, new_cp2);
}
+
/*!
* \brief Remove a segment from a bezier.
* @param bezier The bezier to remove a segment from.
@@ -544,7 +548,7 @@ beziershape_add_segment (BezierShape *bezier,
* @returns Undo information for the segment removal.
* \memberof _BezierShape
*/
-ObjectChange *
+DiaObjectChange *
beziershape_remove_segment (BezierShape *bezier, int pos)
{
Handle *old_handle1, *old_handle2, *old_handle3;
@@ -668,7 +672,7 @@ beziershape_straighten_corner (BezierShape *bezier, int comp_nr)
}
-ObjectChange *
+DiaObjectChange *
beziershape_set_corner_type (BezierShape *bezier,
Handle *handle,
BezCornerType corner_type)
@@ -1233,7 +1237,7 @@ beziershape_point_change_revert (struct BezPointChange *change,
}
-static ObjectChange *
+static DiaObjectChange *
beziershape_create_point_change (BezierShape *bezier,
enum change_type type,
BezPoint *point,
@@ -1267,7 +1271,7 @@ beziershape_create_point_change (BezierShape *bezier,
change->cp1 = cp1;
change->cp2 = cp2;
- return (ObjectChange *) change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
@@ -1349,14 +1353,14 @@ beziershape_corner_change_revert (struct CornerChange *change,
* @new_corner_type: The corner type being changed to.
*
* Create new undo information about a changing the type of a corner.
- * Note that the created #ObjectChange object has nothing in it that needs
+ * Note that the created #DiaObjectChange object has nothing in it that needs
* freeing.
*
* Returns: Newly allocated undo information.
*
* Since: dawn-of-time
*/
-static ObjectChange *
+static DiaObjectChange *
beziershape_create_corner_change (BezierShape *bezier,
Handle *handle,
Point *point_left,
@@ -1383,5 +1387,5 @@ beziershape_create_corner_change (BezierShape *bezier,
change->point_left = *point_left;
change->point_right = *point_right;
- return (ObjectChange *) change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
diff --git a/lib/beziershape.h b/lib/beziershape.h
index e651d37f4..11a4bf24c 100644
--- a/lib/beziershape.h
+++ b/lib/beziershape.h
@@ -18,17 +18,19 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-
+
/** \file beziershape.h Allows to construct closed objects consisting of bezier lines */
-#ifndef BEZIERSHAPE_H
-#define BEZIERSHAPE_H
+#pragma once
#include "diatypes.h"
#include "object.h"
#include "boundingbox.h"
#include "bezier-common.h"
+
+G_BEGIN_DECLS
+
#define HANDLE_CORNER (HANDLE_CUSTOM1)
/*!
@@ -48,28 +50,45 @@ struct _BezierShape {
ElementBBExtras extra_spacing;
};
-void beziershape_update_data(BezierShape *bezier);
-void beziershape_update_boundingbox(BezierShape *bezier);
-void beziershape_init(BezierShape *bezier, int num_points);
-void beziershape_destroy(BezierShape *bezier);
-void beziershape_copy(BezierShape *from, BezierShape *to);
-void beziershape_save(BezierShape *bezier, ObjectNode obj_node, DiaContext *ctx);
+
+void beziershape_update_data (BezierShape *bezier);
+void beziershape_update_boundingbox (BezierShape *bezier);
+void beziershape_init (BezierShape *bezier,
+ int num_points);
+void beziershape_destroy (BezierShape *bezier);
+void beziershape_copy (BezierShape *from,
+ BezierShape *to);
+void beziershape_save (BezierShape *bezier,
+ ObjectNode obj_node,
+ DiaContext *ctx);
/* NOTE: Does object_init() */
-void beziershape_load(BezierShape *bezier, ObjectNode obj_node, DiaContext *ctx);
-ObjectChange *beziershape_add_segment(BezierShape *bezier, int segment,
- Point *point);
-ObjectChange *beziershape_remove_segment(BezierShape *bezier, int point);
-ObjectChange *beziershape_set_corner_type(BezierShape *bez, Handle *handle,
- BezCornerType corner_type);
-ObjectChange *beziershape_move_handle(BezierShape *bezier, Handle *id,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-ObjectChange *beziershape_move(BezierShape *bezier, Point *to);
-real beziershape_distance_from(BezierShape *bezier, Point *point,
- real line_width);
-Handle *beziershape_closest_handle(BezierShape *bezier, Point *point);
-Handle *beziershape_closest_major_handle(BezierShape *bezier, Point *point);
+void beziershape_load (BezierShape *bezier,
+ ObjectNode obj_node,
+ DiaContext *ctx);
+DiaObjectChange *beziershape_add_segment (BezierShape *bezier,
+ int segment,
+ Point *point);
+DiaObjectChange *beziershape_remove_segment (BezierShape *bezier,
+ int point);
+DiaObjectChange *beziershape_set_corner_type (BezierShape *bez,
+ Handle *handle,
+ BezCornerType corner_type);
+DiaObjectChange *beziershape_move_handle (BezierShape *bezier,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+DiaObjectChange *beziershape_move (BezierShape *bezier,
+ Point *to);
+double beziershape_distance_from (BezierShape *bezier,
+ Point *point,
+ double line_width);
+Handle *beziershape_closest_handle (BezierShape *bezier,
+ Point *point);
+Handle *beziershape_closest_major_handle (BezierShape *bezier,
+ Point *point);
+
#define BEZSHAPE_COMMON_PROPERTIES \
OBJECT_COMMON_PROPERTIES, \
@@ -80,4 +99,4 @@ Handle *beziershape_closest_major_handle(BezierShape *bezier, Point *point);
{ "bez_points", PROP_TYPE_BEZPOINTARRAY, \
offsetof(BezierShape,bezier.points), offsetof(BezierShape,bezier.num_points)} \
-#endif /* BEZIER_SHAPE_H */
+G_END_DECLS
diff --git a/lib/connection.c b/lib/connection.c
index 3556e3f12..c8e71542d 100644
--- a/lib/connection.c
+++ b/lib/connection.c
@@ -87,11 +87,11 @@ connection_adjust_for_autogap (Connection *connection)
*
* Function called to move one of the handles associated with the object.
*
- * Returns: An #ObjectChange with additional undo information, or
+ * Returns: An #DiaObjectChange with additional undo information, or
* (in most cases) %NULL. Undo for moving the handle itself is
* handled elsewhere.
*/
-ObjectChange*
+DiaObjectChange *
connection_move_handle (Connection *conn,
HandleId id,
Point *to,
@@ -247,6 +247,7 @@ connection_destroy (Connection *conn)
* connection_save:
* @conn: The connection to save.
* @obj_node: The XML node to save it to.
+ * @ctx: the current #DiaContext
*
* Save a connections data to XML.
*/
diff --git a/lib/connection.h b/lib/connection.h
index 87680ca80..7f8231e63 100644
--- a/lib/connection.h
+++ b/lib/connection.h
@@ -39,27 +39,28 @@ struct _Connection {
LineBBExtras extra_spacing; /*!< calcualted bounding box */
};
-void connection_update_handles (Connection *conn);
-void connection_update_boundingbox (Connection *conn);
-void connection_init (Connection *conn,
- int num_handles,
- int num_connections);
-void connection_destroy (Connection *conn);
-void connection_copy (Connection *from,
- Connection *to);
-void connection_save (Connection *conn,
- ObjectNode obj_node,
- DiaContext *ctx);
-void connection_load (Connection *conn,
- ObjectNode obj_node,
- DiaContext *ctx);
-ObjectChange* connection_move_handle (Connection *conn,
- HandleId id,
- Point *to,
- ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-void connection_adjust_for_autogap (Connection *conn);
+
+void connection_update_handles (Connection *conn);
+void connection_update_boundingbox (Connection *conn);
+void connection_init (Connection *conn,
+ int num_handles,
+ int num_connections);
+void connection_destroy (Connection *conn);
+void connection_copy (Connection *from,
+ Connection *to);
+void connection_save (Connection *conn,
+ ObjectNode obj_node,
+ DiaContext *ctx);
+void connection_load (Connection *conn,
+ ObjectNode obj_node,
+ DiaContext *ctx);
+DiaObjectChange* connection_move_handle (Connection *conn,
+ HandleId id,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+void connection_adjust_for_autogap (Connection *conn);
/* base property stuff... */
#define CONNECTION_COMMON_PROPERTIES \
diff --git a/lib/connpoint_line.c b/lib/connpoint_line.c
index 0b77c8567..4bcb44f9c 100644
--- a/lib/connpoint_line.c
+++ b/lib/connpoint_line.c
@@ -23,6 +23,8 @@
#include "connpoint_line.h"
#include "connectionpoint.h"
#include "dia_xml.h"
+#include "dia-object-change-legacy.h"
+
#define DEBUG_PARENT 0
#define DEBUG_ORDER 0
@@ -485,7 +487,7 @@ cpl_change_free (CPLChange *change)
}
-static ObjectChange *
+static DiaObjectChange *
cpl_create_change(ConnPointLine *cpl, int pos, int add)
{
CPLChange *change;
@@ -506,35 +508,40 @@ cpl_create_change(ConnPointLine *cpl, int pos, int add)
change->cp[add] = new_connpoint(cpl->parent);
}
- return (ObjectChange *)change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
-ObjectChange *
-connpointline_add_points(ConnPointLine *cpl,
- Point *clickedpoint, int count)
+
+DiaObjectChange *
+connpointline_add_points (ConnPointLine *cpl,
+ Point *clickedpoint,
+ int count)
{
int pos;
- ObjectChange *change;
+ DiaObjectChange *change;
- pos = cpl_get_pointbefore(cpl,clickedpoint);
- change = cpl_create_change(cpl,pos,count);
+ pos = cpl_get_pointbefore (cpl, clickedpoint);
+ change = cpl_create_change (cpl, pos, count);
+
+ dia_object_change_apply (change, DIA_OBJECT (cpl));
- change->apply(change, (DiaObject *)cpl);
return change;
}
-ObjectChange *
-connpointline_remove_points(ConnPointLine *cpl,
- Point *clickedpoint, int count)
+DiaObjectChange *
+connpointline_remove_points (ConnPointLine *cpl,
+ Point *clickedpoint,
+ int count)
{
int pos;
- ObjectChange *change;
+ DiaObjectChange *change;
+
+ pos = cpl_get_pointbefore (cpl, clickedpoint);
+ change = cpl_create_change (cpl, pos, -count);
- pos = cpl_get_pointbefore(cpl,clickedpoint);
- change = cpl_create_change(cpl,pos,-count);
+ dia_object_change_apply (change, DIA_OBJECT (cpl));
- change->apply(change, (DiaObject *)cpl);
return change;
}
@@ -552,7 +559,7 @@ connpointline_adjust_count (ConnPointLine *cpl,
delta = newcount - oldcount;
if (delta != 0) {
- ObjectChange *change;
+ DiaObjectChange *change;
/*g_message("going to adjust %d (to be %d)",delta,shouldbe);*/
if (delta > 0) {
@@ -561,8 +568,7 @@ connpointline_adjust_count (ConnPointLine *cpl,
change = connpointline_remove_points (cpl, where, -delta);
}
- if (change->free) change->free (change);
- g_clear_pointer (&change, g_free);
+ g_clear_pointer (&change, dia_object_change_unref);
/* we don't really need this change object. */
}
diff --git a/lib/connpoint_line.h b/lib/connpoint_line.h
index 030ea6bc6..4ad853290 100644
--- a/lib/connpoint_line.h
+++ b/lib/connpoint_line.h
@@ -53,12 +53,12 @@ int connpointline_can_add_point(ConnPointLine *cpl,
int connpointline_can_remove_point(ConnPointLine *cpl,
Point *clicked);
-ObjectChange *connpointline_add_points(ConnPointLine *cpl,
- Point *clickedpoint,
- int count);
-ObjectChange *connpointline_remove_points(ConnPointLine *cpl,
- Point *clickedpoint,
- int count);
+DiaObjectChange *connpointline_add_points (ConnPointLine *cpl,
+ Point *clickedpoint,
+ int count);
+DiaObjectChange *connpointline_remove_points (ConnPointLine *cpl,
+ Point *clickedpoint,
+ int count);
ConnPointLine *connpointline_load(DiaObject *obj,ObjectNode obj_node,
const gchar *name, int default_nc,
int *realconncount,
diff --git a/lib/dia-object-change-legacy.c b/lib/dia-object-change-legacy.c
new file mode 100644
index 000000000..dd90f65d5
--- /dev/null
+++ b/lib/dia-object-change-legacy.c
@@ -0,0 +1,75 @@
+/* Dia -- an diagram creation/manipulation program
+ * Copyright (C) 1999 Alexander Larsson
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * Copyright © 2020 Zander Brown <zbrown gnome org>
+ */
+
+#include "dia-object-change-legacy.h"
+
+
+struct _DiaObjectChangeLegacy {
+ DiaObjectChange parent_instance;
+
+ ObjectChange *legacy;
+};
+
+
+DIA_DEFINE_OBJECT_CHANGE (DiaObjectChangeLegacy, dia_object_change_legacy)
+
+
+static void
+dia_object_change_legacy_apply (DiaObjectChange *self, DiaObject *object)
+{
+ DiaObjectChangeLegacy *change = DIA_OBJECT_CHANGE_LEGACY (self);
+
+ change->legacy->apply (change->legacy, object);
+}
+
+
+static void
+dia_object_change_legacy_revert (DiaObjectChange *self, DiaObject *object)
+{
+ DiaObjectChangeLegacy *change = DIA_OBJECT_CHANGE_LEGACY (self);
+
+ change->legacy->revert (change->legacy, object);
+}
+
+
+static void
+dia_object_change_legacy_free (DiaObjectChange *self)
+{
+ DiaObjectChangeLegacy *change = DIA_OBJECT_CHANGE_LEGACY (self);
+
+ if (change->legacy->free) {
+ change->legacy->free (change->legacy);
+ }
+
+ g_clear_pointer (&change->legacy, g_free);
+}
+
+
+DiaObjectChange *
+dia_object_change_legacy_new (ObjectChange *legacy)
+{
+ DiaObjectChangeLegacy *change = dia_object_change_new (DIA_TYPE_OBJECT_CHANGE_LEGACY);
+
+ change->legacy = legacy;
+
+ return DIA_OBJECT_CHANGE (change);
+}
diff --git a/lib/dia-object-change-legacy.h b/lib/dia-object-change-legacy.h
new file mode 100644
index 000000000..e4af98588
--- /dev/null
+++ b/lib/dia-object-change-legacy.h
@@ -0,0 +1,39 @@
+/* Dia -- an diagram creation/manipulation program
+ * Copyright (C) 1999 Alexander Larsson
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * Copyright © 2020 Zander Brown <zbrown gnome org>
+ */
+
+#pragma once
+
+#ifndef __GTK_DOC_IGNORE__
+typedef struct _ObjectChange ObjectChange;
+#endif
+
+#include "dia-object-change.h"
+#include "objchange.h"
+
+G_BEGIN_DECLS
+
+#define DIA_TYPE_OBJECT_CHANGE_LEGACY dia_object_change_legacy_get_type ()
+G_DECLARE_FINAL_TYPE (DiaObjectChangeLegacy, dia_object_change_legacy, DIA, OBJECT_CHANGE_LEGACY,
DiaObjectChange)
+
+DiaObjectChange *dia_object_change_legacy_new (ObjectChange *legacy);
+
+G_END_DECLS
diff --git a/lib/dia-object-change-list.c b/lib/dia-object-change-list.c
new file mode 100644
index 000000000..1b37251f5
--- /dev/null
+++ b/lib/dia-object-change-list.c
@@ -0,0 +1,87 @@
+/* Dia -- an diagram creation/manipulation program
+ * Copyright (C) 1999 Alexander Larsson
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * Copyright © 2020 Zander Brown <zbrown gnome org>
+ */
+
+#include "dia-object-change-list.h"
+
+
+struct _DiaObjectChangeList {
+ DiaObjectChange parent_instance;
+
+ GPtrArray *changes;
+};
+
+
+DIA_DEFINE_OBJECT_CHANGE (DiaObjectChangeList, dia_object_change_list)
+
+
+static void
+dia_object_change_list_apply (DiaObjectChange *self, DiaObject *object)
+{
+ DiaObjectChangeList *change = DIA_OBJECT_CHANGE_LIST (self);
+
+ for (int i = 0; i < change->changes->len; i++) {
+ dia_object_change_apply (g_ptr_array_index (change->changes, i), object);
+ }
+}
+
+
+static void
+dia_object_change_list_revert (DiaObjectChange *self, DiaObject *object)
+{
+ DiaObjectChangeList *change = DIA_OBJECT_CHANGE_LIST (self);
+
+ for (int i = 0; i < change->changes->len; i++) {
+ dia_object_change_revert (g_ptr_array_index (change->changes, i), object);
+ }
+}
+
+
+static void
+dia_object_change_list_free (DiaObjectChange *self)
+{
+ DiaObjectChangeList *change = DIA_OBJECT_CHANGE_LIST (self);
+
+ g_clear_pointer (&change->changes, g_ptr_array_unref);
+}
+
+
+DiaObjectChange *
+dia_object_change_list_new (void)
+{
+ DiaObjectChangeList *self = dia_object_change_new (DIA_TYPE_OBJECT_CHANGE_LIST);
+
+ self->changes = g_ptr_array_new_with_free_func (dia_object_change_unref);
+
+ return DIA_OBJECT_CHANGE (self);
+}
+
+
+void
+dia_object_change_list_add (DiaObjectChangeList *self,
+ DiaObjectChange *change)
+{
+ g_return_if_fail (DIA_IS_OBJECT_CHANGE_LIST (self));
+
+ if (change) {
+ g_ptr_array_add (self->changes, dia_object_change_ref (change));
+ }
+}
diff --git a/lib/dia-object-change-list.h b/lib/dia-object-change-list.h
new file mode 100644
index 000000000..f27528dd3
--- /dev/null
+++ b/lib/dia-object-change-list.h
@@ -0,0 +1,36 @@
+/* Dia -- an diagram creation/manipulation program
+ * Copyright (C) 1999 Alexander Larsson
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * Copyright © 2020 Zander Brown <zbrown gnome org>
+ */
+
+#pragma once
+
+#include "dia-object-change.h"
+
+G_BEGIN_DECLS
+
+#define DIA_TYPE_OBJECT_CHANGE_LIST dia_object_change_list_get_type ()
+G_DECLARE_FINAL_TYPE (DiaObjectChangeList, dia_object_change_list, DIA, OBJECT_CHANGE_LIST, DiaObjectChange)
+
+DiaObjectChange *dia_object_change_list_new (void);
+void dia_object_change_list_add (DiaObjectChangeList *self,
+ DiaObjectChange *change);
+
+G_END_DECLS
diff --git a/lib/dia-object-change.c b/lib/dia-object-change.c
index f14ce6714..398bc1759 100644
--- a/lib/dia-object-change.c
+++ b/lib/dia-object-change.c
@@ -316,7 +316,6 @@ dia_object_change_apply (DiaObjectChange *self,
DiaObject *object)
{
g_return_if_fail (self && DIA_IS_OBJECT_CHANGE (self));
- g_return_if_fail (object && DIA_IS_DIAGRAM_DATA (object));
DIA_OBJECT_CHANGE_GET_CLASS (self)->apply (self, object);
}
@@ -338,7 +337,6 @@ dia_object_change_revert (DiaObjectChange *self,
DiaObject *object)
{
g_return_if_fail (self && DIA_IS_OBJECT_CHANGE (self));
- g_return_if_fail (object && DIA_IS_DIAGRAM_DATA (object));
DIA_OBJECT_CHANGE_GET_CLASS (self)->revert (self, object);
}
diff --git a/lib/diamenu.h b/lib/diamenu.h
index 926882af9..5a7bf47d8 100644
--- a/lib/diamenu.h
+++ b/lib/diamenu.h
@@ -19,6 +19,7 @@
#define DIAMENU_H
#include "diatypes.h"
+#include "dia-object-change.h"
/* Flags for DiaMenuItem->active */
#define DIAMENU_ACTIVE (1<<0)
@@ -26,7 +27,9 @@
#define DIAMENU_TOGGLE_ON (1<<2)
/* Note: The returned change is already applied. */
-typedef ObjectChange *(*DiaMenuCallback)(DiaObject *obj, Point *pos, gpointer data);
+typedef DiaObjectChange *(*DiaMenuCallback) (DiaObject *obj,
+ Point *pos,
+ gpointer data);
struct _DiaMenuItem {
char *text;
diff --git a/lib/diatypes.h b/lib/diatypes.h
index abba78b2d..7fa332d06 100644
--- a/lib/diatypes.h
+++ b/lib/diatypes.h
@@ -120,7 +120,6 @@ typedef struct _NewOrthConn NewOrthConn;
/* In objchange.h: */
typedef struct _ObjectState ObjectState;
-typedef struct _ObjectChange ObjectChange;
/* In object.h: */
typedef struct _DiaObject DiaObject;
diff --git a/lib/element.c b/lib/element.c
index 2843e6ac5..cf62628f7 100644
--- a/lib/element.c
+++ b/lib/element.c
@@ -17,7 +17,7 @@
*/
/**
- * SECTION:element:
+ * SECTION:element
* @title: Element
*
* The Element object type is a rectangular box that has
@@ -35,6 +35,8 @@
#include "element.h"
#include "properties.h"
+#include "dia-object-change-legacy.h"
+
#ifdef G_OS_WIN32
/* defined in header */
@@ -214,7 +216,7 @@ element_update_handles (Element *elem)
*
* Returns: Undo information for this change.
*/
-ObjectChange *
+DiaObjectChange *
element_move_handle (Element *elem,
HandleId id,
Point *to,
@@ -594,10 +596,10 @@ _element_change_swap (ObjectChange *self,
}
-ObjectChange *
+DiaObjectChange *
element_change_new (const Point *corner,
- real width,
- real height,
+ double width,
+ double height,
Element *elem)
{
ElementChange *ec = g_new0 (ElementChange, 1);
@@ -611,7 +613,7 @@ element_change_new (const Point *corner,
ec->width = elem->width;
ec->height = elem->height;
- return &ec->object_change;
+ return dia_object_change_legacy_new ((ObjectChange *) ec);
}
diff --git a/lib/element.h b/lib/element.h
index 0a5079991..801a95c6f 100644
--- a/lib/element.h
+++ b/lib/element.h
@@ -31,13 +31,13 @@
* \brief Beside OrthCon one of the most use object classes
*
* This is a subclass of DiaObject used to help implementing objects
- * of a type with 8 handles.
+ * of a type with 8 handles.
*
* \extends _DiaObject
*/
struct _Element {
DiaObject object; /* inheritance */
-
+
Handle resize_handles[8]; /*!< not only for resizing but may also be used for connections */
Point corner; /*!< upper-left corner of the Element */
@@ -57,19 +57,22 @@ void element_update_boundingbox(Element *elem);
void element_init(Element *elem, int num_handles, int num_connections);
void element_destroy(Element *elem);
void element_copy(Element *from, Element *to);
-ObjectChange* element_move_handle(Element *elem, HandleId id,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
+DiaObjectChange *element_move_handle (Element *elem,
+ HandleId id,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
void element_move_handle_aspect(Element *elem, HandleId id,
Point *to, real aspect_ratio);
void element_save(Element *elem, ObjectNode obj_node, DiaContext *ctx);
void element_load(Element *elem, ObjectNode obj_node, DiaContext *ctx);
-ObjectChange *element_change_new (const Point *corner,
- real width, real height,
- Element *elem);
+DiaObjectChange *element_change_new (const Point *corner,
+ double width,
+ double height,
+ Element *elem);
void element_get_poly (const Element *elem, real angle, Point corners[4]);
@@ -79,7 +82,7 @@ void element_get_poly (const Element *elem, real angle, Point corners[4]);
/* see lib/properties.h for the reason */
static PropNumData width_range = { -G_MAXFLOAT, G_MAXFLOAT, 0.1};
#else
-/* use extern on Linux/gcc to avoid
+/* use extern on Linux/gcc to avoid
* warning: 'width_range' defined but not used */
extern PropNumData width_range;
#endif
diff --git a/lib/filter.h b/lib/filter.h
index 1c80c7fc0..b4fc02821 100644
--- a/lib/filter.h
+++ b/lib/filter.h
@@ -25,6 +25,7 @@
#include <glib.h>
#include "diagramdata.h"
#include "diacontext.h"
+#include "dia-object-change.h"
G_BEGIN_DECLS
@@ -56,7 +57,7 @@ struct _DiaExportFilter {
};
/* returns FALSE on error loading diagram */
-typedef gboolean (* DiaImportFunc) (const gchar* filename, DiagramData *dia,
+typedef gboolean (* DiaImportFunc) (const gchar* filename, DiagramData *dia,
DiaContext *ctx, void* user_data);
/* load from given memory block instead of from file */
typedef gboolean (* DiaImportMemFunc) (const guchar *p, guint size, DiagramData *dia,
@@ -82,10 +83,12 @@ struct _DiaImportFilter {
};
/* gets called as menu callback */
-typedef ObjectChange * (* DiaCallbackFunc) (DiagramData *dia,
- const gchar *filename, /* the original filename */
- guint flags, /* further additions */
- void* user_data);
+typedef DiaObjectChange * (* DiaCallbackFunc) (DiagramData *dia,
+ /* the original filename */
+ const char *filename,
+ /* further additions */
+ guint flags,
+ void *user_data);
struct _DiaCallbackFilter {
const gchar *action;
diff --git a/lib/focus.h b/lib/focus.h
index 7154bdaed..3bd28ab4d 100644
--- a/lib/focus.h
+++ b/lib/focus.h
@@ -19,6 +19,7 @@
#pragma once
#include "diatypes.h"
+#include "dia-object-change.h"
struct _Focus {
DiaObject *obj;
@@ -27,8 +28,12 @@ struct _Focus {
/* return TRUE if modified object.
Set change if object is changed. */
- int (*key_event)(Focus *focus, guint keystate, guint keysym, const gchar *str, int strlen,
- ObjectChange **change);
+ int (*key_event) (Focus *focus,
+ guint keystate,
+ guint keysym,
+ const char *str,
+ int strlen,
+ DiaObjectChange **change);
};
void request_focus(Focus *focus);
diff --git a/lib/group.c b/lib/group.c
index d3d8aa04e..4badab1b9 100644
--- a/lib/group.c
+++ b/lib/group.c
@@ -25,6 +25,8 @@
#include "group.h"
#include "properties.h"
#include "diarenderer.h"
+#include "dia-object-change-legacy.h"
+
/*!
* \brief Allow grouping other objects and hiding them from the diagram
@@ -49,26 +51,40 @@ struct _GroupPropChange {
GList *changes_per_object;
};
-static GroupPropChange* group_apply_properties_list(Group *group, GPtrArray *props);
-static void group_prop_change_apply(GroupPropChange *change, DiaObject *obj);
-static void group_prop_change_revert(GroupPropChange *change, DiaObject *obj);
-static void group_prop_change_free(GroupPropChange *change);
-
-static real group_distance_from(Group *group, Point *point);
-static void group_select(Group *group);
-static ObjectChange* group_move_handle(Group *group, Handle *handle, Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* group_move(Group *group, Point *to);
-static void group_draw(Group *group, DiaRenderer *renderer);
-static void group_update_data(Group *group);
-static void group_update_handles(Group *group);
-static void group_update_connectionpoints(Group *group);
-static void group_destroy(Group *group);
-static DiaObject *group_copy(Group *group);
-static const PropDescription *group_describe_props(Group *group);
-static void group_get_props(Group *group, GPtrArray *props);
-static void group_set_props(Group *group, GPtrArray *props);
-static void group_transform (Group *group, const DiaMatrix *m);
+
+static DiaObjectChange *group_apply_properties_list (Group *group,
+ GPtrArray *props);
+static void group_prop_change_apply (GroupPropChange *change,
+ DiaObject *obj);
+static void group_prop_change_revert (GroupPropChange *change,
+ DiaObject *obj);
+static void group_prop_change_free (GroupPropChange *change);
+static double group_distance_from (Group *group,
+ Point *point);
+static void group_select (Group *group);
+static DiaObjectChange *group_move_handle (Group *group,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *group_move (Group *group,
+ Point *to);
+static void group_draw (Group *group,
+ DiaRenderer *renderer);
+static void group_update_data (Group *group);
+static void group_update_handles (Group *group);
+static void group_update_connectionpoints (Group *group);
+static void group_destroy (Group *group);
+static DiaObject *group_copy (Group *group);
+static const PropDescription *group_describe_props (Group *group);
+static void group_get_props (Group *group,
+ GPtrArray *props);
+static void group_set_props (Group *group,
+ GPtrArray *props);
+static void group_transform (Group *group,
+ const DiaMatrix *m);
+
static ObjectOps group_ops = {
(DestroyFunc) group_destroy,
@@ -213,7 +229,7 @@ group_objects_move_delta (Group *group, const Point *delta)
}
-static ObjectChange*
+static DiaObjectChange *
group_move_handle (Group *group,
Handle *handle,
Point *to,
@@ -327,8 +343,9 @@ group_move_handle (Group *group,
return NULL;
}
-static ObjectChange*
-group_move(Group *group, Point *to)
+
+static DiaObjectChange *
+group_move (Group *group, Point *to)
{
Point delta,pos;
@@ -785,12 +802,13 @@ group_set_props(Group *group, GPtrArray *props)
group_update_data (group);
}
-GroupPropChange *
-group_apply_properties_list(Group *group, GPtrArray *props)
+
+DiaObjectChange *
+group_apply_properties_list (Group *group, GPtrArray *props)
{
GList *tmp = NULL;
GList *clist = NULL;
- ObjectChange *objchange;
+ DiaObjectChange *objchange;
GroupPropChange *change = NULL;
GPtrArray *props_list, *props_self;
guint i;
@@ -841,17 +859,18 @@ group_apply_properties_list(Group *group, GPtrArray *props)
change->changes_per_object = clist;
- return change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
+
static void
-group_prop_change_apply(GroupPropChange *change, DiaObject *obj)
+group_prop_change_apply (GroupPropChange *change, DiaObject *obj)
{
GList *tmp;
for (tmp = change->changes_per_object; tmp != NULL;
- tmp = g_list_next(tmp)) {
- ObjectChange *obj_change = (ObjectChange*)tmp->data;
+ tmp = g_list_next (tmp)) {
+ DiaObjectChange *obj_change = DIA_OBJECT_CHANGE (tmp->data);
/*
This call to apply() depends on the fact that it is actually a
@@ -861,18 +880,19 @@ group_prop_change_apply(GroupPropChange *change, DiaObject *obj)
in ObjectChange. Read comments near the ObjectChange struct in
objchange.h
*/
- obj_change->apply(obj_change, NULL);
+ dia_object_change_apply (obj_change, NULL);
}
}
+
static void
-group_prop_change_revert(GroupPropChange *change, DiaObject *obj)
+group_prop_change_revert (GroupPropChange *change, DiaObject *obj)
{
GList *tmp;
for (tmp = change->changes_per_object; tmp != NULL;
tmp = g_list_next(tmp)) {
- ObjectChange *obj_change = (ObjectChange*)tmp->data;
+ DiaObjectChange *obj_change = DIA_OBJECT_CHANGE (tmp->data);
/*
This call to revert() depends on the fact that it is actually a
@@ -882,23 +902,18 @@ group_prop_change_revert(GroupPropChange *change, DiaObject *obj)
in ObjectChange. Read comments near the ObjectChange struct in
objchange.h
*/
- obj_change->revert(obj_change, NULL);
+ dia_object_change_revert (obj_change, NULL);
}
}
+
static void
-group_prop_change_free(GroupPropChange *change)
+group_prop_change_free (GroupPropChange *change)
{
- GList *tmp;
- for (tmp = change->changes_per_object; tmp != NULL;
- tmp = g_list_next(tmp)) {
- ObjectChange *obj_change = (ObjectChange*)tmp->data;
- obj_change->free(obj_change);
- g_clear_pointer (&obj_change, g_free);
- }
- g_list_free(change->changes_per_object);
+ g_list_free_full (change->changes_per_object, dia_object_change_unref);
}
+
static void
group_transform (Group *group, const DiaMatrix *m)
{
diff --git a/lib/meson.build b/lib/meson.build
index 9938fea1a..162c89f59 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -93,6 +93,10 @@ libdia_sources = stdprop_sources + [
'dia-change.h',
'dia-object-change.c',
'dia-object-change.h',
+ 'dia-object-change-legacy.c',
+ 'dia-object-change-legacy.h',
+ 'dia-object-change-list.c',
+ 'dia-object-change-list.h',
'dialogs.c',
'dialogs.h',
'widgets.c',
diff --git a/lib/objchange.c b/lib/objchange.c
index 738ea1c81..88217a06e 100644
--- a/lib/objchange.c
+++ b/lib/objchange.c
@@ -19,11 +19,11 @@
#include <config.h>
#include "object.h"
+#include "dia-object-change-legacy.h"
/******** ObjectChange for object that just need to get/set state: *****/
typedef struct _ObjectStateChange ObjectStateChange;
-
struct _ObjectStateChange {
ObjectChange obj_change;
@@ -34,14 +34,15 @@ struct _ObjectStateChange {
DiaObject *obj;
};
+
static void
-object_state_change_apply_revert(ObjectStateChange *change, DiaObject *obj)
+object_state_change_apply_revert (ObjectStateChange *change, DiaObject *obj)
{
ObjectState *old_state;
- old_state = change->get_state(change->obj);
+ old_state = change->get_state (change->obj);
- change->set_state(change->obj, change->saved_state);
+ change->set_state (change->obj, change->saved_state);
change->saved_state = old_state;
}
@@ -58,10 +59,11 @@ object_state_change_free (ObjectStateChange *change)
}
-ObjectChange *new_object_state_change(DiaObject *obj,
- ObjectState *old_state,
- GetStateFunc get_state,
- SetStateFunc set_state )
+DiaObjectChange *
+new_object_state_change (DiaObject *obj,
+ ObjectState *old_state,
+ GetStateFunc get_state,
+ SetStateFunc set_state)
{
ObjectStateChange *change;
@@ -82,82 +84,5 @@ ObjectChange *new_object_state_change(DiaObject *obj,
change->obj = obj;
change->saved_state = old_state;
- return (ObjectChange *)change;
-}
-
-typedef struct _ObjectChangeList ObjectChangeList;
-struct _ObjectChangeList {
- ObjectChange object_change;
-
- GPtrArray *changes;
-};
-
-static void
-_change_list_apply (ObjectChange *change_list, DiaObject *obj)
-{
- ObjectChangeList *list = (ObjectChangeList *)change_list;
- guint i;
-
- for (i = 0; i < list->changes->len; ++i) {
- ObjectChange * change = (ObjectChange *)g_ptr_array_index(list->changes, i);
-
- change->apply (change, obj /*?*/);
- }
-}
-static void
-_change_list_revert (ObjectChange *change_list, DiaObject *obj)
-{
- ObjectChangeList *list = (ObjectChangeList *)change_list;
- guint i;
-
- if (list->changes->len < 1)
- return; /* avoid overflow below */
-
- for (i = list->changes->len - 1;/* i >= 0 */; --i) {
- ObjectChange * change = (ObjectChange *)g_ptr_array_index(list->changes, i);
-
- change->revert (change, obj /*?*/);
- if (i == 0)
- break; /* break here, i>=0 does not work as loop condition (it's always TRUE) */
- }
-}
-static void
-_change_list_free (ObjectChange *change_list)
-{
- ObjectChangeList *list = (ObjectChangeList *)change_list;
- guint i;
-
- for (i = 0; i < list->changes->len; ++i) {
- ObjectChange * change = (ObjectChange *)g_ptr_array_index(list->changes, i);
-
- if (change->free)
- change->free (change);
- }
- g_ptr_array_free (list->changes, FALSE);
- /* must not delete the object itself, so no:
- g_clear_pointer (&change_list, g_free);
- */
-}
-/* An empty list of changes to accumulate many to one change */
-ObjectChange *
-change_list_create (void)
-{
- ObjectChangeList *list = g_new (ObjectChangeList, 1);
-
- list->object_change.apply = _change_list_apply;
- list->object_change.revert = _change_list_revert;
- list->object_change.free = _change_list_free;
-
- list->changes = g_ptr_array_new ();
-
- return (ObjectChange *)list;
-}
-
-void
-change_list_add (ObjectChange *change_list, ObjectChange *change)
-{
- ObjectChangeList *list = (ObjectChangeList *)change_list;
-
- if (change)
- g_ptr_array_add (list->changes, change);
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
diff --git a/lib/objchange.h b/lib/objchange.h
index 93326267e..df6831d05 100644
--- a/lib/objchange.h
+++ b/lib/objchange.h
@@ -16,8 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-/*!
- * \file objchange.h -- Forming the basic of undo support to be implemented in objects
+/*!
+ * \file objchange.h -- Forming the basic of undo support to be implemented in objects
*/
/*!
* \defgroup ObjChange Support for undo/redo
@@ -28,6 +28,7 @@
#define OBJCHANGE_H
#include "diatypes.h"
+#include "dia-object-change.h"
G_BEGIN_DECLS
@@ -67,7 +68,7 @@ struct _ObjectState {
Need not save state that only depens on
the object and it's handles positions.
-
+
The calling function owns the returned reference.
\ingroup ObjChange
@@ -86,22 +87,13 @@ typedef ObjectState * (*GetStateFunc) (DiaObject* obj);
*/
typedef void (*SetStateFunc) (DiaObject* obj, ObjectState *state);
-/*! Create a single change from the ObjectState
- * \ingroup ObjChange
- */
-ObjectChange *new_object_state_change(DiaObject *obj,
- ObjectState *old_state,
- GetStateFunc get_state,
- SetStateFunc set_state );
-
-/*! Create a list of ObjectChange for single step undo/redo
- * \ingroup ObjChange
- */
-ObjectChange *change_list_create (void);
-/*! Add another ObjectChange to the list of changes
+/*! Create a single change from the ObjectState
* \ingroup ObjChange
*/
-void change_list_add (ObjectChange *change_list, ObjectChange *change);
+DiaObjectChange *new_object_state_change (DiaObject *obj,
+ ObjectState *old_state,
+ GetStateFunc get_state,
+ SetStateFunc set_state);
G_END_DECLS
diff --git a/lib/object.c b/lib/object.c
index f8a037949..c8793e6ca 100644
--- a/lib/object.c
+++ b/lib/object.c
@@ -27,6 +27,7 @@
#include "message.h"
#include "parent.h"
#include "dia-layer.h"
+#include "dia-object-change-legacy.h"
#include "dummy_dep.h"
@@ -270,45 +271,48 @@ object_copy_list (GList *list_orig)
*
* bug The return Change object only contains info for a single object.
*/
-ObjectChange*
+DiaObjectChange *
object_list_move_delta_r (GList *objects, Point *delta, gboolean affected)
{
GList *list;
DiaObject *obj;
Point pos;
- ObjectChange *objchange = NULL;
+ DiaObjectChange *objchange = NULL;
if (delta->x == 0 && delta->y == 0)
return NULL;
list = objects;
while (list != NULL) {
- obj = (DiaObject *) list->data;
+ obj = DIA_OBJECT (list->data);
pos = obj->position;
- point_add(&pos, delta);
+ point_add (&pos, delta);
if (obj->parent && affected) {
DiaRectangle p_ext;
DiaRectangle c_ext;
Point new_delta;
- parent_handle_extents(obj->parent, &p_ext);
- parent_handle_extents(obj, &c_ext);
- new_delta = parent_move_child_delta(&p_ext, &c_ext, delta);
- point_add(&pos, &new_delta);
- point_add(delta, &new_delta);
+ parent_handle_extents (obj->parent, &p_ext);
+ parent_handle_extents (obj, &c_ext);
+ new_delta = parent_move_child_delta (&p_ext, &c_ext, delta);
+ point_add (&pos, &new_delta);
+ point_add (delta, &new_delta);
}
- objchange = obj->ops->move(obj, &pos);
+ objchange = dia_object_move (obj, &pos);
- if (object_flags_set(obj, DIA_OBJECT_CAN_PARENT) && obj->children)
- objchange = object_list_move_delta_r(obj->children, delta, FALSE);
+ if (object_flags_set (obj, DIA_OBJECT_CAN_PARENT) && obj->children) {
+ objchange = object_list_move_delta_r (obj->children, delta, FALSE);
+ }
- list = g_list_next(list);
+ list = g_list_next (list);
}
+
return objchange;
}
+
/**
* object_list_move_delta:
* @objects: The list ob objects to move.
@@ -316,34 +320,34 @@ object_list_move_delta_r (GList *objects, Point *delta, gboolean affected)
*
* Move a set of objects a given amount.
*/
-ObjectChange*
+DiaObjectChange *
object_list_move_delta (GList *objects, Point *delta)
{
GList *list;
DiaObject *obj;
GList *process;
- ObjectChange *objchange = NULL;
+ DiaObjectChange *objchange = NULL;
- objects = parent_list_affected_hierarchy(objects);
+ objects = parent_list_affected_hierarchy (objects);
list = objects;
/* The recursive function object_list_move_delta cannot process the toplevel
(in selection) objects so we have to have this extra loop */
- while (list != NULL)
- {
- obj = (DiaObject *) list->data;
+ while (list != NULL) {
+ obj = DIA_OBJECT (list->data);
process = NULL;
- process = g_list_append(process, obj);
- objchange = object_list_move_delta_r(process, delta, (obj->parent != NULL) );
- g_list_free(process);
+ process = g_list_append (process, obj);
+ objchange = object_list_move_delta_r (process, delta, (obj->parent != NULL));
+ g_list_free (process);
- list = g_list_next(list);
+ list = g_list_next (list);
}
+
return objchange;
}
-typedef struct _ObjectChangeExchange
-{
+
+typedef struct _ObjectChangeExchange {
ObjectChange change;
DiaObject *orig;
DiaObject *subst;
@@ -532,12 +536,12 @@ _object_exchange_free (ObjectChange *change)
* all the existing object relations, e.g. connections, parent_layer
* and parenting information.
*
- * Returns: #ObjectChange containing undo/redo information
+ * Returns: #DiaObjectChange containing undo/redo information
*/
-ObjectChange *
+DiaObjectChange *
object_substitute (DiaObject *obj, DiaObject *subst)
{
- ObjectChangeExchange *change = g_new0(ObjectChangeExchange, 1);
+ ObjectChangeExchange *change = g_new0 (ObjectChangeExchange, 1);
change->change.apply = _object_exchange_apply;
change->change.revert = _object_exchange_revert;
@@ -545,9 +549,9 @@ object_substitute (DiaObject *obj, DiaObject *subst)
change->orig = obj;
change->subst = subst;
- _object_exchange_apply ((ObjectChange*)change, obj);
+ _object_exchange_apply ((ObjectChange *) change, obj);
- return (ObjectChange*)change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
@@ -1467,6 +1471,7 @@ dia_object_clone (DiaObject *self)
return self->ops->copy (self);
}
+
/**
* dia_object_move:
* @self: The object being moved.
@@ -1477,15 +1482,15 @@ dia_object_clone (DiaObject *self)
*
* Function called to move the entire object.
*
- * Returns: An #ObjectChange with additional undo information, or
- * (in most cases) %NULL. Undo for moving the object itself is
+ * Returns: A #DiaObjectChange with additional undo information, or
+ * (in most cases) %NULL. Undo for moving the object itself is
* handled elsewhere.
*
* Stability: Stable
*
* Since: 0.98
*/
-ObjectChange *
+DiaObjectChange *
dia_object_move (DiaObject *self,
Point *to)
{
@@ -1495,6 +1500,7 @@ dia_object_move (DiaObject *self,
return self->ops->move (self, to);
}
+
/**
* dia_object_move_handle:
* @self: The object whose handle is being moved.
@@ -1519,15 +1525,15 @@ dia_object_move (DiaObject *self,
*
* Function called to move one of the handles associated with the object.
*
- * Returns: An #ObjectChange with additional undo information, or
- * (in most cases) %NULL. Undo for moving the handle itself is handled
+ * Returns: A #DiaObjectChange with additional undo information, or
+ * (in most cases) %NULL. Undo for moving the handle itself is handled
* elsewhere.
*
* Stability: Stable
*
* Since: 0.98
*/
-ObjectChange *
+DiaObjectChange *
dia_object_move_handle (DiaObject *self,
Handle *handle,
Point *to,
@@ -1541,6 +1547,7 @@ dia_object_move_handle (DiaObject *self,
return self->ops->move_handle (self, handle, to, cp, reason, modifiers);
}
+
/**
* dia_object_get_editor:
* @self: An obj that this dialog is being made for.
@@ -1577,6 +1584,7 @@ dia_object_get_editor (DiaObject *self,
return self->ops->get_properties (self, is_default);
}
+
/**
* dia_object_apply_editor:
* @self: The object whose dialog has had its Apply button clicked.
@@ -1587,14 +1595,14 @@ dia_object_get_editor (DiaObject *self,
* The widget parameter is the one created by
* the get_properties function.
*
- * Returns: a #ObjectChange that can be used for undo/redo, The returned change is
- * already applied.
+ * Returns: a #DiaObjectChange that can be used for undo/redo, The returned
+ * change is already applied.
*
* Stability: Stable
*
* Since: 0.98
*/
-ObjectChange *
+DiaObjectChange *
dia_object_apply_editor (DiaObject *self,
GtkWidget *editor)
{
@@ -1604,6 +1612,7 @@ dia_object_apply_editor (DiaObject *self,
return self->ops->apply_properties_from_dialog (self, editor);
}
+
/**
* dia_object_get_menu:
* @self: The object that is selected when the object menu is asked for.
@@ -1719,13 +1728,13 @@ dia_object_set_properties (DiaObject *self,
* is different from SetPropsFunc since this is used to implement
* undo/redo.
*
- * Returns: a #ObjectChange for undo/redo
+ * Returns: a #DiaObjectChange for undo/redo
*
* Stability: Stable
*
* Since: 0.98
*/
-ObjectChange *
+DiaObjectChange *
dia_object_apply_properties (DiaObject *self,
GPtrArray *list)
{
diff --git a/lib/object.h b/lib/object.h
index 0ffff0eff..f5332e751 100644
--- a/lib/object.h
+++ b/lib/object.h
@@ -16,7 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-/** @file object.h -- definitions for Dia objects, in particular the 'virtual'
+/*
+ * Definitions for Dia objects, in particular the 'virtual'
* functions and the object and type structures.
*/
#ifndef DIA_OBJECT_H
@@ -29,24 +30,32 @@
#include "connectionpoint.h"
#include "handle.h"
#include "diamenu.h"
-#include "objchange.h"
#include "dia_xml.h"
#include "text.h"
#include "diacontext.h"
#include "diarenderer.h"
+#include "dia-object-change.h"
G_BEGIN_DECLS
-/** Flags for DiaObject */
+/**
+ * DiaObjectFlags:
+ *
+ * Flags for DiaObject
+ */
typedef enum {
- /** Set this if the DiaObject can 'contain' other objects that move with
- * it, a.k.a. be a parent. A parent moves its children along and
- * constricts its children to live inside its borders.
+ /* Set this if the DiaObject can 'contain' other objects that move with
+ * it, a.k.a. be a parent. A parent moves its children along and
+ * constricts its children to live inside its borders.
*/
DIA_OBJECT_CAN_PARENT = 1
} DiaObjectFlags;
-/** This enumeration gives a bitset of modifier keys currently held down.
+
+/**
+ * ModifierKeys:
+ *
+ * This enumeration gives a bitset of modifier keys currently held down.
*/
typedef enum {
MODIFIER_NONE,
@@ -176,22 +185,26 @@ typedef void (*DestroyFunc) (DiaObject* obj);
#define DIA_OBJECT(object) ((DiaObject *) object)
typedef void (*DrawFunc) (DiaObject* obj, DiaRenderer* ddisp);
-typedef real (*DistanceFunc) (DiaObject* obj, Point* point);
+typedef double (*DistanceFunc) (DiaObject* obj, Point* point);
typedef void (*SelectFunc) (DiaObject* obj,
Point* clicked_point,
DiaRenderer* interactive_renderer);
typedef DiaObject* (*CopyFunc) (DiaObject* obj);
-typedef ObjectChange* (*MoveFunc) (DiaObject* obj, Point * pos);
-typedef ObjectChange* (*MoveHandleFunc) (DiaObject* obj,
- Handle* handle,
- Point* pos,
- ConnectionPoint* cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-typedef GtkWidget *(*GetPropertiesFunc) (DiaObject* obj, gboolean is_default);
-typedef ObjectChange *(*ApplyPropertiesDialogFunc) (DiaObject* obj, GtkWidget *widget);
-typedef ObjectChange *(*ApplyPropertiesListFunc) (DiaObject* obj, GPtrArray* props);
-typedef const PropDescription *(* DescribePropsFunc) (DiaObject *obj);
+typedef DiaObjectChange *(*MoveFunc) (DiaObject *obj,
+ Point *pos);
+typedef DiaObjectChange *(*MoveHandleFunc) (DiaObject *obj,
+ Handle *handle,
+ Point *pos,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+typedef GtkWidget *(*GetPropertiesFunc) (DiaObject *obj,
+ gboolean is_default);
+typedef DiaObjectChange *(*ApplyPropertiesDialogFunc) (DiaObject *obj,
+ GtkWidget *widget);
+typedef DiaObjectChange *(*ApplyPropertiesListFunc) (DiaObject *obj,
+ GPtrArray *props);
+typedef const PropDescription *(*DescribePropsFunc) (DiaObject *obj);
typedef void (* GetPropsFunc) (DiaObject *obj, GPtrArray *props);
typedef void (* SetPropsFunc) (DiaObject *obj, GPtrArray *props);
typedef DiaMenu *(*ObjectMenuFunc) (DiaObject* obj, Point *position);
@@ -214,9 +227,13 @@ void object_save(DiaObject *obj, ObjectNode obj_node, DiaContext *ctx);
void object_load(DiaObject *obj, ObjectNode obj_node, DiaContext *ctx);
GList *object_copy_list (GList *list_orig );
-ObjectChange* object_list_move_delta_r(GList *objects, Point *delta, gboolean affected);
-ObjectChange* object_list_move_delta(GList *objects, Point *delta);
-ObjectChange *object_substitute (DiaObject *obj, DiaObject *subst);
+DiaObjectChange *object_list_move_delta_r (GList *objects,
+ Point *delta,
+ gboolean affected);
+DiaObjectChange *object_list_move_delta (GList *objects,
+ Point *delta);
+DiaObjectChange *object_substitute (DiaObject *obj,
+ DiaObject *subst);
void destroy_object_list (GList *list_to_be_destroyed);
void object_add_handle(DiaObject *obj, Handle *handle);
@@ -263,15 +280,15 @@ struct _ObjectOps {
void (*draw) (DiaObject *obj,
DiaRenderer *ddisp);
- real (*distance_from) (DiaObject *obj,
+ double (*distance_from) (DiaObject *obj,
Point *point);
void (*selectf) (DiaObject *obj,
Point *clicked_point,
DiaRenderer *interactive_renderer);
DiaObject *(*copy) (DiaObject *obj);
- ObjectChange *(*move) (DiaObject *obj,
+ DiaObjectChange *(*move) (DiaObject *obj,
Point *pos);
- ObjectChange *(*move_handle) (DiaObject *obj,
+ DiaObjectChange *(*move_handle) (DiaObject *obj,
Handle *handle,
Point *pos,
ConnectionPoint *cp,
@@ -279,7 +296,7 @@ struct _ObjectOps {
ModifierKeys modifiers);
GtkWidget *(*get_properties) (DiaObject *obj,
gboolean is_default);
- ObjectChange *(*apply_properties_from_dialog) (DiaObject *obj,
+ DiaObjectChange *(*apply_properties_from_dialog) (DiaObject *obj,
GtkWidget *widget);
DiaMenu *(*get_object_menu) (DiaObject *obj,
Point *position);
@@ -292,7 +309,7 @@ struct _ObjectOps {
Text *text,
TextEditState state,
gchar *textchange);
- ObjectChange *(*apply_properties_list) (DiaObject *obj,
+ DiaObjectChange *(*apply_properties_list) (DiaObject *obj,
GPtrArray *props);
gboolean (*transform) (DiaObject *obj,
const DiaMatrix *m);
@@ -358,15 +375,15 @@ struct _DiaObject {
DiaObject *parent; /*!< Back-pointer to DiaObject which is parenting this object. Can be NULL */
GList *children; /*!< In case this object is a parent of other object the children are listed here */
- /** The area that contains all parts rendered interactively, so includes
- * handles, bezier controllers etc. Despite historical difference, this
- * should not be accessed directly, but through dia_object_get_bounding_box().
- * Note that handles and connection points are not included by this, but
- * added by that which needs it.
- * Internal: If this is set to a NULL, returns bounding_box. That is for
- * those objects that don't actually calculate it, but can just use the BB.
- * Since handles and CPs are not in the BB, that will be the case for most
- * objects.
+ /* The area that contains all parts rendered interactively, so includes
+ * handles, bezier controllers etc. Despite historical difference, this
+ * should not be accessed directly, but through dia_object_get_bounding_box().
+ * Note that handles and connection points are not included by this, but
+ * added by that which needs it.
+ * Internal: If this is set to a NULL, returns bounding_box. That is for
+ * those objects that don't actually calculate it, but can just use the BB.
+ * Since handles and CPs are not in the BB, that will be the case for most
+ * objects.
*/
DiaRectangle *enclosing_box;
/*! Metainfo of the object, should not be manipulated directly. Use dia_object_set_meta() */
@@ -470,9 +487,9 @@ void dia_object_select (DiaObject *s
DiaRenderer *renderer);
// Note: wraps copy
DiaObject *dia_object_clone (DiaObject *self);
-ObjectChange *dia_object_move (DiaObject *self,
+DiaObjectChange *dia_object_move (DiaObject *self,
Point *to);
-ObjectChange *dia_object_move_handle (DiaObject *self,
+DiaObjectChange *dia_object_move_handle (DiaObject *self,
Handle *handle,
Point *to,
ConnectionPoint *cp,
@@ -481,7 +498,7 @@ ObjectChange *dia_object_move_handle (DiaObject *s
// Note: Wraps get_properties
GtkWidget *dia_object_get_editor (DiaObject *self,
gboolean is_default);
-ObjectChange *dia_object_apply_editor (DiaObject *self,
+DiaObjectChange *dia_object_apply_editor (DiaObject *self,
GtkWidget *editor);
DiaMenu *dia_object_get_menu (DiaObject *self,
Point *at);
@@ -490,7 +507,7 @@ void dia_object_get_properties (DiaObject *s
GPtrArray *list);
void dia_object_set_properties (DiaObject *self,
GPtrArray *list);
-ObjectChange *dia_object_apply_properties (DiaObject *self,
+DiaObjectChange *dia_object_apply_properties (DiaObject *self,
GPtrArray *list);
gboolean dia_object_edit_text (DiaObject *self,
Text *text,
diff --git a/lib/orth_conn.c b/lib/orth_conn.c
index fbb437274..10be62ebb 100644
--- a/lib/orth_conn.c
+++ b/lib/orth_conn.c
@@ -30,21 +30,26 @@
#include "handle.h"
#include "diarenderer.h"
#include "autoroute.h"
+#include "dia-object-change-legacy.h"
+
static void place_handle_by_swapping(OrthConn *orth,
int index, Handle *handle);
-static ObjectChange *orthconn_set_autorouting(OrthConn *orth, gboolean on);
+static DiaObjectChange *orthconn_set_autorouting (OrthConn *orth, gboolean on);
enum change_type {
TYPE_ADD_SEGMENT,
TYPE_REMOVE_SEGMENT
};
-static ObjectChange *
-midsegment_create_change(OrthConn *orth, enum change_type type,
- int segment,
- Point *point1, Point *point2,
- Handle *handle1, Handle *handle2);
+static DiaObjectChange *
+midsegment_create_change (OrthConn *orth,
+ enum change_type type,
+ int segment,
+ Point *point1,
+ Point *point2,
+ Handle *handle1,
+ Handle *handle2);
struct MidSegmentChange {
ObjectChange obj_change;
@@ -64,13 +69,17 @@ struct MidSegmentChange {
Handle *handles[2]; /* These handles cannot be connected */
/* NewOrthConn additions */
ConnectionPoint *conn; /* ? */
- ObjectChange *cplchange[2];
+ DiaObjectChange *cplchange[2];
};
-static ObjectChange *
-endsegment_create_change(OrthConn *orth, enum change_type type,
- int segment, Point *point,
- Handle *handle);
+
+static DiaObjectChange *
+endsegment_create_change (OrthConn *orth,
+ enum change_type type,
+ int segment,
+ Point *point,
+ Handle *handle);
+
static void
place_handle_by_swapping(OrthConn *orth, int index, Handle *handle);
@@ -97,11 +106,10 @@ struct EndSegmentChange {
ConnectionPoint *cp; /* NULL in add segment and if not connected in
remove segment */
/* NewOrthConn additions */
- ObjectChange *cplchange;
+ DiaObjectChange *cplchange;
};
-static ObjectChange*
-autoroute_create_change(OrthConn *orth, gboolean on);
+static DiaObjectChange *autoroute_create_change (OrthConn *orth, gboolean on);
struct AutorouteChange {
ObjectChange obj_change;
@@ -167,7 +175,7 @@ static int get_segment_nr(OrthConn *orth, Point *point, real max_dist)
}
-ObjectChange *
+DiaObjectChange *
orthconn_move_handle (OrthConn *orth,
Handle *handle,
Point *to,
@@ -178,7 +186,7 @@ orthconn_move_handle (OrthConn *orth,
int n;
int handle_nr;
DiaObject *obj = (DiaObject *) orth;
- ObjectChange *change = NULL;
+ DiaObjectChange *change = NULL;
switch (handle->id) {
case HANDLE_MOVE_STARTPOINT:
@@ -261,7 +269,7 @@ orthconn_move_handle (OrthConn *orth,
}
-ObjectChange *
+DiaObjectChange *
orthconn_move (OrthConn *orth, Point *to)
{
Point p;
@@ -279,11 +287,11 @@ orthconn_move (OrthConn *orth, Point *to)
}
-real
-orthconn_distance_from (OrthConn *orth, Point *point, real line_width)
+double
+orthconn_distance_from (OrthConn *orth, Point *point, double line_width)
{
int i;
- real dist;
+ double dist;
dist = distance_line_point (&orth->points[0], &orth->points[1],
line_width, point);
@@ -760,92 +768,110 @@ orthconn_get_middle_handle( OrthConn *orth )
return orth->handles[ n/2 ] ;
}
-ObjectChange *
+
+DiaObjectChange *
orthconn_delete_segment(OrthConn *orth, Point *clickedpoint)
{
int segment;
- ObjectChange *change = NULL;
+ DiaObjectChange *change = NULL;
- if (!orthconn_can_delete_segment(orth, clickedpoint))
+ if (!orthconn_can_delete_segment (orth, clickedpoint)) {
return NULL;
+ }
segment = get_segment_nr(orth, clickedpoint, 1.0);
if (segment < 0)
return NULL;
if (segment==0) {
- change = endsegment_create_change(orth, TYPE_REMOVE_SEGMENT, segment,
- &orth->points[segment],
- orth->handles[segment]);
+ change = endsegment_create_change (orth,
+ TYPE_REMOVE_SEGMENT,
+ segment,
+ &orth->points[segment],
+ orth->handles[segment]);
} else if (segment == orth->numpoints-2) {
- change = endsegment_create_change(orth, TYPE_REMOVE_SEGMENT, segment,
- &orth->points[segment+1],
- orth->handles[segment]);
+ change = endsegment_create_change (orth,
+ TYPE_REMOVE_SEGMENT,
+ segment,
+ &orth->points[segment + 1],
+ orth->handles[segment]);
} else if (segment > 0) {
/* Don't delete the last midpoint segment.
* That would delete also the endpoint segment after it.
*/
- if (segment == orth->numpoints-3)
+ if (segment == orth->numpoints-3) {
segment--;
+ }
- change = midsegment_create_change(orth, TYPE_REMOVE_SEGMENT, segment,
- &orth->points[segment],
- &orth->points[segment+1],
- orth->handles[segment],
- orth->handles[segment+1]);
+ change = midsegment_create_change (orth,
+ TYPE_REMOVE_SEGMENT,
+ segment,
+ &orth->points[segment],
+ &orth->points[segment + 1],
+ orth->handles[segment],
+ orth->handles[segment + 1]);
}
- change->apply(change, (DiaObject *)orth);
+ dia_object_change_apply (change, DIA_OBJECT (orth));
return change;
}
-ObjectChange *
-orthconn_add_segment(OrthConn *orth, Point *clickedpoint)
+
+DiaObjectChange *
+orthconn_add_segment (OrthConn *orth, Point *clickedpoint)
{
Handle *handle1, *handle2;
- ObjectChange *change = NULL;
+ DiaObjectChange *change = NULL;
int segment;
Point newpoint;
- if (!orthconn_can_add_segment(orth, clickedpoint))
+ if (!orthconn_can_add_segment (orth, clickedpoint)) {
return NULL;
+ }
- segment = get_segment_nr(orth, clickedpoint, 1.0);
- if (segment < 0)
+ segment = get_segment_nr (orth, clickedpoint, 1.0);
+ if (segment < 0) {
return NULL;
+ }
if (segment==0) { /* First segment */
- handle1 = g_new(Handle, 1);
- setup_endpoint_handle(handle1, HANDLE_MOVE_STARTPOINT);
- change = endsegment_create_change(orth, TYPE_ADD_SEGMENT,
- 0, &orth->points[0],
- handle1);
+ handle1 = g_new0 (Handle, 1);
+ setup_endpoint_handle (handle1, HANDLE_MOVE_STARTPOINT);
+ change = endsegment_create_change (orth,
+ TYPE_ADD_SEGMENT,
+ 0,
+ &orth->points[0],
+ handle1);
} else if (segment == orth->numpoints-2) { /* Last segment */
- handle1 = g_new(Handle, 1);
- setup_endpoint_handle(handle1, HANDLE_MOVE_ENDPOINT);
- change = endsegment_create_change(orth, TYPE_ADD_SEGMENT,
- segment+1, &orth->points[segment+1],
- handle1);
+ handle1 = g_new0 (Handle, 1);
+ setup_endpoint_handle (handle1, HANDLE_MOVE_ENDPOINT);
+ change = endsegment_create_change (orth,
+ TYPE_ADD_SEGMENT,
+ segment + 1,
+ &orth->points[segment + 1],
+ handle1);
} else if (segment > 0) {
- handle1 = g_new(Handle, 1);
- setup_midpoint_handle(handle1);
- handle2 = g_new(Handle, 1);
- setup_midpoint_handle(handle2);
+ handle1 = g_new (Handle, 1);
+ setup_midpoint_handle (handle1);
+ handle2 = g_new (Handle, 1);
+ setup_midpoint_handle (handle2);
newpoint = *clickedpoint;
if (orth->orientation[segment]==HORIZONTAL)
newpoint.y = orth->points[segment].y;
else
newpoint.x = orth->points[segment].x;
- change = midsegment_create_change(orth, TYPE_ADD_SEGMENT, segment,
- &newpoint,
- &newpoint,
- handle1,
- handle2);
+ change = midsegment_create_change (orth,
+ TYPE_ADD_SEGMENT,
+ segment,
+ &newpoint,
+ &newpoint,
+ handle1,
+ handle2);
}
- change->apply(change, (DiaObject *)orth);
+ dia_object_change_apply (change, DIA_OBJECT (orth));
return change;
}
@@ -854,17 +880,19 @@ orthconn_add_segment(OrthConn *orth, Point *clickedpoint)
/* Set autorouting on or off. If setting on, try to autoroute and
* return the changes from that.
*/
-static ObjectChange *
-orthconn_set_autorouting(OrthConn *conn, gboolean on)
+static DiaObjectChange *
+orthconn_set_autorouting (OrthConn *conn, gboolean on)
{
- DiaObject *obj = (DiaObject *)conn;
- ObjectChange *change;
+ DiaObject *obj = DIA_OBJECT (conn);
+ DiaObjectChange *change;
+
+ change = autoroute_create_change (conn, on);
+ dia_object_change_apply (change, obj);
- change = autoroute_create_change(conn, on);
- change->apply(change, obj);
return change;
}
+
static void
delete_point(OrthConn *orth, int pos)
{
@@ -953,12 +981,8 @@ endsegment_change_free (struct EndSegmentChange *change)
(change->type==TYPE_REMOVE_SEGMENT && change->applied) ){
g_clear_pointer (&change->handle, g_free);
}
- if (change->cplchange) {
- if (change->cplchange->free) {
- change->cplchange->free (change->cplchange);
- }
- g_clear_pointer (&change->cplchange, g_free);
- }
+
+ g_clear_pointer (&change->cplchange, dia_object_change_unref);
}
@@ -1021,7 +1045,7 @@ endsegment_change_revert (struct EndSegmentChange *change, DiaObject *obj)
{
OrthConn *orth = (OrthConn *) obj;
- change->cplchange->revert (change->cplchange, obj);
+ dia_object_change_revert (change->cplchange, obj);
switch (change->type) {
case TYPE_ADD_SEGMENT:
@@ -1068,14 +1092,16 @@ endsegment_change_revert (struct EndSegmentChange *change, DiaObject *obj)
}
-static ObjectChange *
-endsegment_create_change(OrthConn *orth, enum change_type type,
- int segment, Point *point,
- Handle *handle)
+static DiaObjectChange *
+endsegment_create_change (OrthConn *orth,
+ enum change_type type,
+ int segment,
+ Point *point,
+ Handle *handle)
{
struct EndSegmentChange *change;
- change = g_new(struct EndSegmentChange, 1);
+ change = g_new0 (struct EndSegmentChange, 1);
change->obj_change.apply = (ObjectChangeApplyFunc) endsegment_change_apply;
change->obj_change.revert = (ObjectChangeRevertFunc) endsegment_change_revert;
@@ -1092,7 +1118,7 @@ endsegment_create_change(OrthConn *orth, enum change_type type,
change->old_end_handle = orth->handles[orth->numpoints-2];
change->cp = change->old_end_handle->connected_to;
- return (ObjectChange *)change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
@@ -1105,17 +1131,8 @@ midsegment_change_free(struct MidSegmentChange *change)
g_clear_pointer (&change->handles[1], g_free);
}
- if (change->cplchange[0]) {
- if (change->cplchange[0]->free)
- change->cplchange[0]->free(change->cplchange[0]);
- g_clear_pointer (&change->cplchange[0], g_free);
- }
-
- if (change->cplchange[1]) {
- if (change->cplchange[1]->free)
- change->cplchange[1]->free(change->cplchange[1]);
- g_clear_pointer (&change->cplchange[1], g_free);
- }
+ g_clear_pointer (&change->cplchange[0], dia_object_change_unref);
+ g_clear_pointer (&change->cplchange[1], dia_object_change_unref);
}
@@ -1170,8 +1187,8 @@ 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);
+ dia_object_change_revert (change->cplchange[0], obj);
+ dia_object_change_revert (change->cplchange[1], obj);
switch (change->type) {
case TYPE_ADD_SEGMENT:
@@ -1200,15 +1217,18 @@ midsegment_change_revert (struct MidSegmentChange *change, DiaObject *obj)
}
-static ObjectChange *
-midsegment_create_change(OrthConn *orth, enum change_type type,
- int segment,
- Point *point1, Point *point2,
- Handle *handle1, Handle *handle2)
+static DiaObjectChange *
+midsegment_create_change (OrthConn *orth,
+ enum change_type type,
+ int segment,
+ Point *point1,
+ Point *point2,
+ Handle *handle1,
+ Handle *handle2)
{
struct MidSegmentChange *change;
- change = g_new(struct MidSegmentChange, 1);
+ change = g_new0 (struct MidSegmentChange, 1);
change->obj_change.apply = (ObjectChangeApplyFunc) midsegment_change_apply;
change->obj_change.revert = (ObjectChangeRevertFunc) midsegment_change_revert;
@@ -1222,7 +1242,7 @@ midsegment_create_change(OrthConn *orth, enum change_type type,
change->handles[0] = handle1;
change->handles[1] = handle2;
- return (ObjectChange *)change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
static void
@@ -1262,8 +1282,9 @@ autoroute_change_revert(struct AutorouteChange *change, DiaObject *obj)
}
}
-static ObjectChange *
-autoroute_create_change(OrthConn *orth, gboolean on)
+
+static DiaObjectChange *
+autoroute_create_change (OrthConn *orth, gboolean on)
{
struct AutorouteChange *change;
int i;
@@ -1280,22 +1301,27 @@ autoroute_create_change(OrthConn *orth, gboolean on)
for (i = 0; i < orth->numpoints; i++)
change->points[i] = orth->points[i];
- return (ObjectChange *)change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
-ObjectChange *
-orthconn_toggle_autorouting_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+DiaObjectChange *
+orthconn_toggle_autorouting_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
/* This is kinda hackish. Since we can't see the menu item, we have to
* assume that we're right about toggling and just send !orth->autorouting.
*/
- change = orthconn_set_autorouting((OrthConn*)obj,
- !((OrthConn*)obj)->autorouting);
- orthconn_update_data((OrthConn *)obj);
+ change = orthconn_set_autorouting ((OrthConn*) obj,
+ !((OrthConn*) obj)->autorouting);
+ orthconn_update_data ((OrthConn *) obj);
+
return change;
}
+
void
orthconn_update_object_menu(OrthConn *orth, Point *clicked,
DiaMenuItem *object_menu_items)
diff --git a/lib/orth_conn.h b/lib/orth_conn.h
index b901197f2..39ebf1b45 100644
--- a/lib/orth_conn.h
+++ b/lib/orth_conn.h
@@ -1,4 +1,4 @@
-/* Dia -- an diagram creation/manipulation program -*- c -*-
+/* Dia -- an diagram creation/manipulation program -*- c -*-
* Copyright (C) 1998 Alexander Larsson
*
* This program is free software; you can redistribute it and/or modify
@@ -15,14 +15,16 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-#ifndef ORTH_CONN_H
-#define ORTH_CONN_H
+
+#pragma once
#include "diatypes.h"
#include "object.h"
#include "connpoint_line.h"
#include "boundingbox.h"
+G_BEGIN_DECLS
+
typedef enum {
HORIZONTAL,
VERTICAL
@@ -32,17 +34,16 @@ typedef enum {
#define HANDLE_MIDPOINT (HANDLE_CUSTOM1)
-/*!
- * \brief Helper for orthogonal connection implementations
+/**
+ * OrthConn:
+ *
+ * Helper for orthogonal connection implementations
*
* This is a subclass of DiaObject used to help implementing objects
* that connect points with orthogonal line-segments.
- *
- * \extends _DiaObject
*/
struct _OrthConn {
- /* DiaObject must be first because this is a 'subclass' of it. */
- DiaObject object; /*!< inheritance */
+ DiaObject object;
int numpoints; /* >= 3 */
Point *points; /* [numpoints] */
@@ -63,32 +64,51 @@ struct _OrthConn {
gboolean autorouting; /* True if this line is autorouted. */
};
-void orthconn_update_data(OrthConn *orth);
-void orthconn_update_boundingbox(OrthConn *orth);
-void orthconn_init(OrthConn *orth, Point *startpoint);
-void orthconn_destroy(OrthConn *orth);
-void orthconn_set_points(OrthConn *orth, int num_points, Point *points);
-void orthconn_copy(OrthConn *from, OrthConn *to);
-void orthconn_save(OrthConn *orth, ObjectNode obj_node, DiaContext *ctx);
-void orthconn_load(OrthConn *orth, ObjectNode obj_node, DiaContext *ctx); /* NOTE: Does object_init() */
-ObjectChange* orthconn_move_handle(OrthConn *orth, Handle *id,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-ObjectChange* orthconn_move(OrthConn *orth, Point *to);
-real orthconn_distance_from(OrthConn *orth, Point *point,
- real line_width);
-Handle* orthconn_get_middle_handle(OrthConn *orth);
-
-int orthconn_can_delete_segment(OrthConn *orth, Point *clickedpoint);
-int orthconn_can_add_segment(OrthConn *orth, Point *clickedpoint);
-ObjectChange *orthconn_delete_segment(OrthConn *orth, Point *clickedpoint);
-ObjectChange *orthconn_add_segment(OrthConn *orth, Point *clickedpoint);
-ObjectChange *orthconn_toggle_autorouting_callback(DiaObject *orth,
- Point *clicked,
- gpointer data);
-void orthconn_update_object_menu(OrthConn *orth, Point *clicked,
- DiaMenuItem *object_menu_items);
+
+void orthconn_update_data (OrthConn *orth);
+void orthconn_update_boundingbox (OrthConn *orth);
+void orthconn_init (OrthConn *orth,
+ Point *startpoint);
+void orthconn_destroy (OrthConn *orth);
+void orthconn_set_points (OrthConn *orth,
+ int num_points,
+ Point *points);
+void orthconn_copy (OrthConn *from,
+ OrthConn *to);
+void orthconn_save (OrthConn *orth,
+ ObjectNode obj_node,
+ DiaContext *ctx);
+/* NOTE: Does object_init() */
+void orthconn_load (OrthConn *orth,
+ ObjectNode obj_node,
+ DiaContext *ctx);
+DiaObjectChange *orthconn_move_handle (OrthConn *orth,
+ Handle *id,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+DiaObjectChange *orthconn_move (OrthConn *orth,
+ Point *to);
+double orthconn_distance_from (OrthConn *orth,
+ Point *point,
+ double line_width);
+Handle *orthconn_get_middle_handle (OrthConn *orth);
+int orthconn_can_delete_segment (OrthConn *orth,
+ Point *clickedpoint);
+int orthconn_can_add_segment (OrthConn *orth,
+ Point *clickedpoint);
+DiaObjectChange *orthconn_delete_segment (OrthConn *orth,
+ Point *clickedpoint);
+DiaObjectChange *orthconn_add_segment (OrthConn *orth,
+ Point *clickedpoint);
+DiaObjectChange *orthconn_toggle_autorouting_callback (DiaObject *orth,
+ Point *clicked,
+ gpointer data);
+void orthconn_update_object_menu (OrthConn *orth,
+ Point *clicked,
+ DiaMenuItem *object_menu_items);
+
/* base property stuff... */
#define ORTHCONN_COMMON_PROPERTIES \
OBJECT_COMMON_PROPERTIES, \
@@ -108,6 +128,4 @@ void orthconn_update_object_menu(OrthConn *orth, Point *clicked,
{ N_("Autorouting"), orthconn_toggle_autorouting_callback, NULL, \
DIAMENU_ACTIVE|DIAMENU_TOGGLE}
-#endif /* ORTH_CONN_H */
-
-
+G_END_DECLS
diff --git a/lib/parent.c b/lib/parent.c
index 517364f86..a4c5f62d0 100644
--- a/lib/parent.c
+++ b/lib/parent.c
@@ -49,17 +49,21 @@ gboolean parent_list_expand(GList *obj_list)
return nothing_affected;
}
+
/**
+ * parent_list_affected_hierarchy:
+ * obj_list: the #DiaObject list
+ *
* Returns the original list minus any items that appear as children
- * (at any depth) of the objects in the original list. This is very
+ * (at any depth) of the objects in the original list. This is very
* different from the parent_list_affected function, which returns a
* list of ALL objects affected.
-
+ *
* The caller must call g_list_free() on the returned list
* when the list is no longer needed.
*/
-
-GList *parent_list_affected_hierarchy(GList *obj_list)
+GList *
+parent_list_affected_hierarchy (GList *obj_list)
{
GHashTable *object_hash = g_hash_table_new(g_direct_hash, g_direct_equal);
GList *all_list = g_list_copy(obj_list);
@@ -283,18 +287,22 @@ parent_handle_extents (DiaObject *obj, DiaRectangle *extents)
}
}
-/** Apply a function to all children of the given object (recursively,
+
+/**
+ * parent_apply_to_children:
+ * @obj: A parent object.
+ * @function: A function that takes a single DiaObject as an argument.
+ *
+ * Apply a function to all children of the given object (recursively,
* depth-first).
- * @param obj A parent object.
- * @param function A function that takes a single DiaObject as an argument.
*/
void
-parent_apply_to_children(DiaObject *obj, DiaObjectFunc function)
+parent_apply_to_children (DiaObject *obj, DiaObjectFunc function)
{
GList *children;
- for (children = obj->children; children != NULL; children = g_list_next(children)) {
+ for (children = obj->children; children != NULL; children = g_list_next (children)) {
DiaObject *child = children->data;
- (*function)(child);
- parent_apply_to_children(child, function);
+ (*function) (child);
+ parent_apply_to_children (child, function);
}
}
diff --git a/lib/poly_conn.c b/lib/poly_conn.c
index e681351b3..c1573dae2 100644
--- a/lib/poly_conn.c
+++ b/lib/poly_conn.c
@@ -26,6 +26,7 @@
#include "poly_conn.h"
#include "diarenderer.h"
+#include "dia-object-change-legacy.h"
enum change_type {
@@ -49,10 +50,12 @@ struct PointChange {
};
-static ObjectChange *
-polyconn_create_change(PolyConn *poly, enum change_type type,
- Point *point, int segment, Handle *handle,
- ConnectionPoint *connected_to);
+static DiaObjectChange *polyconn_create_change (PolyConn *poly,
+ enum change_type type,
+ Point *point,
+ int segment,
+ Handle *handle,
+ ConnectionPoint *connected_to);
typedef enum
{
@@ -84,7 +87,7 @@ static int get_handle_nr(PolyConn *poly, Handle *handle)
}
-ObjectChange *
+DiaObjectChange *
polyconn_move_handle (PolyConn *poly,
Handle *handle,
Point *to,
@@ -130,8 +133,8 @@ polyconn_move_handle (PolyConn *poly,
}
-ObjectChange*
-polyconn_move(PolyConn *poly, Point *to)
+DiaObjectChange *
+polyconn_move (PolyConn *poly, Point *to)
{
Point p;
int i;
@@ -263,8 +266,8 @@ remove_handle(PolyConn *poly, int pos)
/* Add a point by splitting segment into two, putting the new point at
'point' or, if NULL, in the middle */
-ObjectChange *
-polyconn_add_point(PolyConn *poly, int segment, Point *point)
+DiaObjectChange *
+polyconn_add_point (PolyConn *poly, int segment, Point *point)
{
Point realpoint;
Handle *new_handle;
@@ -284,8 +287,9 @@ polyconn_add_point(PolyConn *poly, int segment, Point *point)
NULL);
}
-ObjectChange *
-polyconn_remove_point(PolyConn *poly, int pos)
+
+DiaObjectChange *
+polyconn_remove_point (PolyConn *poly, int pos)
{
Handle *old_handle;
ConnectionPoint *connectionpoint;
@@ -557,7 +561,7 @@ polyconn_change_revert (struct PointChange *change, DiaObject *obj)
}
-static ObjectChange *
+static DiaObjectChange *
polyconn_create_change (PolyConn *poly,
enum change_type type,
Point *point,
@@ -580,5 +584,5 @@ polyconn_create_change (PolyConn *poly,
change->handle = handle;
change->connected_to = connected_to;
- return (ObjectChange *) change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
diff --git a/lib/poly_conn.h b/lib/poly_conn.h
index 86c7981d9..40f3bc587 100644
--- a/lib/poly_conn.h
+++ b/lib/poly_conn.h
@@ -26,7 +26,7 @@
/*!
* \brief helper for implementing polyline connections
- *
+ *
* This is a subclass of DiaObject used to help implementing objects
* that connect points with polygonal line-segments.
*
@@ -51,13 +51,19 @@ void polyconn_destroy(PolyConn *poly);
void polyconn_copy(PolyConn *from, PolyConn *to);
void polyconn_save(PolyConn *poly, ObjectNode obj_node, DiaContext *ctx);
void polyconn_load(PolyConn *poly, ObjectNode obj_node, DiaContext *ctx); /* NOTE: Does object_init() */
-ObjectChange *polyconn_add_point(PolyConn *poly, int segment, Point *point);
-ObjectChange *polyconn_remove_point(PolyConn *poly, int point);
-ObjectChange *polyconn_move_handle(PolyConn *poly, Handle *id,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-ObjectChange *polyconn_move(PolyConn *poly, Point *to);
+DiaObjectChange *polyconn_add_point (PolyConn *poly,
+ int segment,
+ Point *point);
+DiaObjectChange *polyconn_remove_point (PolyConn *poly,
+ int point);
+DiaObjectChange *polyconn_move_handle (PolyConn *poly,
+ Handle *id,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+DiaObjectChange *polyconn_move (PolyConn *poly,
+ Point *to);
real polyconn_distance_from(PolyConn *poly, Point *point,
real line_width);
Handle *polyconn_closest_handle(PolyConn *poly, Point *point);
diff --git a/lib/polyshape.c b/lib/polyshape.c
index 2a2278a48..6b3460d68 100644
--- a/lib/polyshape.c
+++ b/lib/polyshape.c
@@ -27,6 +27,8 @@
#include "polyshape.h"
#include "message.h"
#include "diarenderer.h"
+#include "dia-object-change-legacy.h"
+
#define NUM_CONNECTIONS(poly) ((poly)->numpoints * 2 + 1)
@@ -49,12 +51,18 @@ struct PointChange {
ConnectionPoint *cp1, *cp2;
};
-static ObjectChange *
-polyshape_create_change(PolyShape *poly, enum change_type type,
- Point *point, int segment, Handle *handle,
- ConnectionPoint *cp1, ConnectionPoint *cp2);
-static void setup_handle(Handle *handle)
+static DiaObjectChange *polyshape_create_change (PolyShape *poly,
+ enum change_type type,
+ Point *point,
+ int segment,
+ Handle *handle,
+ ConnectionPoint *cp1,
+ ConnectionPoint *cp2);
+
+
+static void
+setup_handle (Handle *handle)
{
handle->id = HANDLE_CORNER;
handle->type = HANDLE_MAJOR_CONTROL;
@@ -73,10 +81,14 @@ static int get_handle_nr(PolyShape *poly, Handle *handle)
return -1;
}
-ObjectChange*
-polyshape_move_handle(PolyShape *poly, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+DiaObjectChange *
+polyshape_move_handle (PolyShape *poly,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
int handle_nr;
@@ -86,8 +98,9 @@ polyshape_move_handle(PolyShape *poly, Handle *handle,
return NULL;
}
-ObjectChange*
-polyshape_move(PolyShape *poly, Point *to)
+
+DiaObjectChange *
+polyshape_move (PolyShape *poly, Point *to)
{
Point p;
int i;
@@ -199,8 +212,8 @@ remove_handle(PolyShape *poly, int pos)
/* Add a point by splitting segment into two, putting the new point at
'point' or, if NULL, in the middle */
-ObjectChange *
-polyshape_add_point(PolyShape *poly, int segment, Point *point)
+DiaObjectChange *
+polyshape_add_point (PolyShape *poly, int segment, Point *point)
{
Point realpoint;
Handle *new_handle;
@@ -225,8 +238,9 @@ polyshape_add_point(PolyShape *poly, int segment, Point *point)
new_cp1, new_cp2);
}
-ObjectChange *
-polyshape_remove_point(PolyShape *poly, int pos)
+
+DiaObjectChange *
+polyshape_remove_point (PolyShape *poly, int pos)
{
Handle *old_handle;
ConnectionPoint *old_cp1, *old_cp2;
@@ -599,7 +613,7 @@ polyshape_change_revert (struct PointChange *change, DiaObject *obj)
}
-static ObjectChange *
+static DiaObjectChange *
polyshape_create_change (PolyShape *poly,
enum change_type type,
Point *point,
@@ -624,5 +638,5 @@ polyshape_create_change (PolyShape *poly,
change->cp1 = cp1;
change->cp2 = cp2;
- return (ObjectChange *) change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
diff --git a/lib/polyshape.h b/lib/polyshape.h
index 395800c4b..7d3e91a4e 100644
--- a/lib/polyshape.h
+++ b/lib/polyshape.h
@@ -50,13 +50,19 @@ void polyshape_destroy(PolyShape *poly);
void polyshape_copy(PolyShape *from, PolyShape *to);
void polyshape_save(PolyShape *poly, ObjectNode obj_node, DiaContext *ctx);
void polyshape_load(PolyShape *poly, ObjectNode obj_node, DiaContext *ctx); /* NOTE: Does object_init() */
-ObjectChange *polyshape_add_point(PolyShape *poly, int segment, Point *point);
-ObjectChange *polyshape_remove_point(PolyShape *poly, int point);
-ObjectChange *polyshape_move_handle(PolyShape *poly, Handle *id,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-ObjectChange *polyshape_move(PolyShape *poly, Point *to);
+DiaObjectChange *polyshape_add_point (PolyShape *poly,
+ int segment,
+ Point *point);
+DiaObjectChange *polyshape_remove_point (PolyShape *poly,
+ int point);
+DiaObjectChange *polyshape_move_handle (PolyShape *poly,
+ Handle *id,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+DiaObjectChange *polyshape_move (PolyShape *poly,
+ Point *to);
real polyshape_distance_from(PolyShape *poly, Point *point,
real line_width);
Handle *polyshape_closest_handle(PolyShape *poly, Point *point);
diff --git a/lib/properties.h b/lib/properties.h
index d311bfc3a..f2dac2cdc 100644
--- a/lib/properties.h
+++ b/lib/properties.h
@@ -49,6 +49,8 @@
#include "intl.h"
#include "textattr.h"
#include "diacontext.h"
+#include "dia-object-change.h"
+
G_BEGIN_DECLS
@@ -523,8 +525,11 @@ gboolean object_set_props_from_offsets(DiaObject *obj, PropOffset *offsets,
GPtrArray *props);
/* apply some properties and return a corresponding object change */
-ObjectChange *object_apply_props(DiaObject *obj, GPtrArray *props);
-ObjectChange *object_toggle_prop (DiaObject *obj, const char *pname, gboolean val);
+DiaObjectChange *object_apply_props (DiaObject *obj,
+ GPtrArray *props);
+DiaObjectChange *object_toggle_prop (DiaObject *obj,
+ const char *pname,
+ gboolean val);
/*!
* \brief Creation of object specific property dialog
@@ -535,7 +540,7 @@ ObjectChange *object_toggle_prop (DiaObject *obj, const char *pname, gboolean va
*/
WIDGET *object_create_props_dialog (DiaObject *obj, gboolean is_default);
WIDGET *object_list_create_props_dialog(GList *obj, gboolean is_default);
-ObjectChange *object_apply_props_from_dialog (DiaObject *obj, WIDGET *dialog);
+DiaObjectChange *object_apply_props_from_dialog (DiaObject *obj, WIDGET *dialog);
/*!
* \brief Descibe objects properties
* \memberof DiaObject
@@ -559,11 +564,15 @@ void object_get_props(DiaObject *obj, GPtrArray *props);
Property *object_prop_by_name(DiaObject *obj, const char *name);
Property *object_prop_by_name_type(DiaObject *obj, const char *name, const char *type);
/* Set the pixbuf property if there is one */
-ObjectChange *dia_object_set_pixbuf (DiaObject *object, GdkPixbuf *pixbuf);
+DiaObjectChange *dia_object_set_pixbuf (DiaObject *object,
+ GdkPixbuf *pixbuf);
/* Set the pattern property if there is one */
-ObjectChange *dia_object_set_pattern (DiaObject *object, DiaPattern *pat);
+DiaObjectChange *dia_object_set_pattern (DiaObject *object,
+ DiaPattern *pat);
/* Set the string property if there is one */
-ObjectChange *dia_object_set_string (DiaObject *object, const char *name, const char *value);
+DiaObjectChange *dia_object_set_string (DiaObject *object,
+ const char *name,
+ const char *value);
/* ************************************************************* */
diff --git a/lib/propobject.c b/lib/propobject.c
index a38f1073a..9882cc5c6 100644
--- a/lib/propobject.c
+++ b/lib/propobject.c
@@ -35,12 +35,16 @@
#include "properties.h"
#include "propinternals.h"
#include "object.h"
+#include "dia-object-change-legacy.h"
+#include "dia-object-change-list.h"
+
const PropDescription *
-object_get_prop_descriptions (const DiaObject *obj) {
+object_get_prop_descriptions (const DiaObject *obj)
+{
const PropDescription *pdesc;
- pdesc = dia_object_describe_properties ((DiaObject *) obj); /* Yes... */
+ pdesc = dia_object_describe_properties (DIA_OBJECT (obj)); /* Yes... */
if (!pdesc) return NULL;
if (pdesc[0].quark != 0) return pdesc;
@@ -133,7 +137,8 @@ object_prop_change_free(ObjectPropChange *change)
prop_list_free(change->saved_props);
}
-ObjectChange *
+
+DiaObjectChange *
object_apply_props (DiaObject *obj, GPtrArray *props)
{
ObjectPropChange *change;
@@ -160,19 +165,26 @@ object_apply_props (DiaObject *obj, GPtrArray *props)
change->saved_props = old_props;
- return (ObjectChange *) change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
-/*!
+
+/**
+ * object_toggle_prop:
+ * @obj: the #DiaObject
+ * @pname: the property name
+ * @val: the new value
+ *
* Toggle a boolean property including change management
*/
-ObjectChange *
+DiaObjectChange *
object_toggle_prop (DiaObject *obj, const char *pname, gboolean val)
{
Property *prop = make_new_prop (pname, PROP_TYPE_BOOL, 0);
GPtrArray *plist = prop_list_from_single (prop);
((BoolProperty *)prop)->bool_data = val;
+
return object_apply_props (obj, plist);
}
@@ -214,28 +226,31 @@ object_list_create_props_dialog(GList *objects, gboolean is_default)
}
-ObjectChange *
-object_apply_props_from_dialog(DiaObject *obj, WIDGET *dialog_widget)
+DiaObjectChange *
+object_apply_props_from_dialog (DiaObject *obj, WIDGET *dialog_widget)
{
- ObjectChange *change;
- PropDialog *dialog = prop_dialog_from_widget(dialog_widget);
+ DiaObjectChange *change;
+ PropDialog *dialog = prop_dialog_from_widget (dialog_widget);
GPtrArray *props = g_ptr_array_new ();
guint i;
- prop_get_data_from_widgets(dialog);
+ prop_get_data_from_widgets (dialog);
/* only stuff which is actually changed */
for (i = 0; i < dialog->props->len; ++i) {
Property *p = g_ptr_array_index (dialog->props, i);
- if (p->descr->flags & PROP_FLAG_WIDGET_ONLY)
+ if (p->descr->flags & PROP_FLAG_WIDGET_ONLY) {
continue;
- if ((p->experience & PXP_NOTSET) == 0)
- g_ptr_array_add(props, p);
+ }
+ if ((p->experience & PXP_NOTSET) == 0) {
+ g_ptr_array_add (props, p);
+ }
}
change = dia_object_apply_properties (obj, props);
g_ptr_array_free (props, TRUE);
return change;
}
+
gboolean
objects_comply_with_stdprop(GList *objects)
{
@@ -365,106 +380,120 @@ object_prop_by_name_type(DiaObject *obj, const char *name, const char *type)
return NULL;
}
+
Property *
-object_prop_by_name(DiaObject *obj, const char *name)
+object_prop_by_name (DiaObject *obj, const char *name)
{
- return object_prop_by_name_type(obj,name,NULL);
+ return object_prop_by_name_type (obj, name,NULL);
}
-/*!
- * \brief Modification of the objects 'pixbuf' property
+
+/**
+ * dia_object_set_pixbuf:
+ * @object: object to modify
+ * @pixbuf: the pixbuf to set
*
- * @param object object to modify
- * @param pixbuf the pixbuf to set
- * @return an object change or NULL
+ * Modification of the objects 'pixbuf' property
*
* If the object does not have a pixbuf property nothing
* happens. If there is a pixbuf property and the passed
* in pixbuf is identical an empty change is returned.
*
- * \memberof _DiaObject
- * \ingroup StdProps
+ * Returns: #DiaObjectChange or %NULL
*/
-ObjectChange *
+DiaObjectChange *
dia_object_set_pixbuf (DiaObject *object,
- GdkPixbuf *pixbuf)
+ GdkPixbuf *pixbuf)
{
- ObjectChange *change;
+ DiaObjectChange *change;
GPtrArray *props;
PixbufProperty *pp;
Property *prop = object_prop_by_name_type (object, "pixbuf", PROP_TYPE_PIXBUF);
- if (!prop)
+ if (!prop) {
return NULL;
- pp = (PixbufProperty *)prop;
- if (pp->pixbuf == pixbuf)
- return change_list_create ();
+ }
+
+ pp = (PixbufProperty *) prop;
+ if (pp->pixbuf == pixbuf) {
+ return dia_object_change_list_new ();
+ }
+
g_set_object (&pp->pixbuf, pixbuf);
+
props = prop_list_from_single (prop);
change = object_apply_props (object, props);
prop_list_free (props);
return change;
}
-/*!
- * \brief Modification of the objects 'pattern' property
+
+/**
+ * dia_object_set_pattern:
+ * @object: object to modify
+ * @pattern: the pattern to set
*
- * @param object object to modify
- * @param pattern the pattern to set
- * @return an object change or NULL
+ * Modification of the objects 'pattern' property
*
* If the object does not have a pattern property nothing
* happens. If there is a pattern property and the passed
* in pattern is identical an empty change is returned.
*
- * \memberof _DiaObject
- * \ingroup StdProps
+ * Returns: #DiaObjectChange or %NULL
*/
-ObjectChange *
+DiaObjectChange *
dia_object_set_pattern (DiaObject *object,
- DiaPattern *pattern)
+ DiaPattern *pattern)
{
- ObjectChange *change;
+ DiaObjectChange *change;
GPtrArray *props;
PatternProperty *pp;
Property *prop = object_prop_by_name_type (object, "pattern", PROP_TYPE_PATTERN);
- if (!prop)
+ if (!prop) {
return NULL;
- pp = (PatternProperty *)prop;
- if (pp->pattern == pattern)
- return change_list_create ();
+ }
+
+ pp = (PatternProperty *) prop;
+ if (pp->pattern == pattern) {
+ return dia_object_change_list_new ();
+ }
+
g_set_object (&pp->pattern, pattern);
+
props = prop_list_from_single (prop);
change = object_apply_props (object, props);
prop_list_free (props);
return change;
}
-/*!
- * \brief Modify the objects string property
- * @param object the object to modify
- * @param name the name of the string property (NULL for any)
- * @param value the value to set, NULL to delete
- * @return object change on sucess, NULL if not found
+
+/**
+ * dia_object_set_string:
+ * @object: the object to modify
+ * @name: the name of the string property (%NULL for any)
+ * @value: the value to set, %NULL to delete
*
- * Usually you should not pass NULL for the name, the facility
+ * Modify the objects string property
+ *
+ * Usually you should not pass %NULL for the name, the facility
* was added for convenience of the unit test.
*
- * \memberof _DiaObject
- * \ingroup StdProps
+ * Returns: #DiaObjectChange on success, %NULL if @name not found
*/
-ObjectChange *
-dia_object_set_string (DiaObject *object,
- const char *name,
- const char *value)
+DiaObjectChange *
+dia_object_set_string (DiaObject *object,
+ const char *name,
+ const char *value)
{
- ObjectChange *change;
+ DiaObjectChange *change;
GPtrArray *props = NULL;
Property *prop = object_prop_by_name_type (object, name, PROP_TYPE_STRING);
- if (!prop)
+ if (!prop) {
prop = object_prop_by_name_type (object, name, PROP_TYPE_FILE);
+ }
+
if (prop) {
StringProperty *pp = (StringProperty *)prop;
g_clear_pointer (&pp->string_data, g_free);
@@ -476,8 +505,10 @@ dia_object_set_string (DiaObject *object,
pp->text_data = g_strdup (value);
props = prop_list_from_single (prop);
}
- if (!props)
+
+ if (!props) {
return NULL;
+ }
change = object_apply_props (object, props);
prop_list_free (props);
diff --git a/lib/renderer/diacairo-print.c b/lib/renderer/diacairo-print.c
index dbcccc51f..3ebfef052 100644
--- a/lib/renderer/diacairo-print.c
+++ b/lib/renderer/diacairo-print.c
@@ -236,7 +236,7 @@ create_print_operation (DiagramData *data, const char *name)
}
-ObjectChange *
+DiaObjectChange *
cairo_print_callback (DiagramData *data,
const char *filename,
guint flags, /* further additions */
diff --git a/lib/renderer/diacairo-print.h b/lib/renderer/diacairo-print.h
index 9725e51d8..a9fe4ade6 100644
--- a/lib/renderer/diacairo-print.h
+++ b/lib/renderer/diacairo-print.h
@@ -1,13 +1,18 @@
+#pragma once
#include <gtk/gtk.h>
#include "diagramdata.h"
+#include "dia-object-change.h"
-GtkPrintOperation *
-create_print_operation (DiagramData *data,
- const char *name);
-ObjectChange *
-cairo_print_callback (DiagramData *dia,
- const gchar *filename,
- guint flags, /* further additions */
- void *user_data);
+G_BEGIN_DECLS
+
+GtkPrintOperation *create_print_operation (DiagramData *data,
+ const char *name);
+DiaObjectChange *cairo_print_callback (DiagramData *dia,
+ const char *filename,
+ /* further additions */
+ guint flags,
+ void *user_data);
+
+G_END_DECLS
diff --git a/lib/standard-path.c b/lib/standard-path.c
index 61679d24f..33b32a7b7 100644
--- a/lib/standard-path.c
+++ b/lib/standard-path.c
@@ -43,6 +43,9 @@
#include "create.h"
#include "bezier-common.h"
#include "pattern.h"
+#include "dia-object-change-legacy.h"
+#include "dia-object-change-list.h"
+
#define NUM_HANDLES 8
@@ -167,12 +170,16 @@ DiaObjectType stdpath_type =
stdpath_offsets
};
+
/* Class definition */
-static ObjectChange* stdpath_move_handle (StdPath *stdpath,
- Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* stdpath_move (StdPath *stdpath, Point *to);
+static DiaObjectChange *stdpath_move_handle (StdPath *stdpath,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *stdpath_move (StdPath *stdpath,
+ Point *to);
static void stdpath_select(StdPath *stdpath, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void stdpath_draw(StdPath *stdpath, DiaRenderer *renderer);
@@ -437,17 +444,20 @@ stdpath_draw (StdPath *stdpath, DiaRenderer *renderer)
}
dia_renderer_bezier_fill (renderer, stdpath->points, stdpath->num_points, &fill);
}
+
if (stdpath->stroke_or_fill & PDO_STROKE) {
dia_renderer_bezier_stroke (renderer, stdpath->points, stdpath->num_points, &stdpath->line_color);
}
}
+
if (stdpath->show_control_lines) {
bezier_draw_control_lines (stdpath->num_points, stdpath->points, renderer);
}
}
-static ObjectChange *_path_object_invert_change_create (DiaObject *obj);
-static ObjectChange *_path_object_transform_change_create (DiaObject *obj, DiaMatrix *mat);
+static DiaObjectChange *_path_object_invert_change_create (DiaObject *obj);
+static DiaObjectChange *_path_object_transform_change_create (DiaObject *obj,
+ DiaMatrix *mat);
/*!
* \brief Change the direction of the path
@@ -475,29 +485,36 @@ _stdpath_invert (StdPath *stdpath)
memcpy (stdpath->points, inverted, sizeof(BezPoint)*n);
stdpath_update_handles (stdpath);
}
-static ObjectChange *
+
+
+static DiaObjectChange *
_invert_path_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- StdPath *stdpath = (StdPath *)obj;
+ StdPath *stdpath = (StdPath *) obj;
_stdpath_invert (stdpath);
return _path_object_invert_change_create (obj);
}
+
+
/* a very simple undo function, complete reversible function */
static void
_apply_invert (ObjectChange *change, DiaObject *obj)
{
- _stdpath_invert ((StdPath *)obj);
+ _stdpath_invert ((StdPath *) obj);
}
-static ObjectChange *
+
+
+static DiaObjectChange *
_path_object_invert_change_create (DiaObject *obj)
{
- ObjectChange *change = g_new(ObjectChange, 1);
+ ObjectChange *change = g_new0 (ObjectChange, 1);
change->apply = _apply_invert;
change->revert = _apply_invert;
change->free = NULL;
- return change;
+ return dia_object_change_legacy_new (change);
}
+
static void
_path_transform (StdPath *sp, const DiaMatrix *m)
{
@@ -511,42 +528,50 @@ _path_transform (StdPath *sp, const DiaMatrix *m)
stdpath_update_data (sp);
}
+
typedef struct _PathTransformChange {
ObjectChange change;
DiaMatrix matrix;
} PathTransformChange;
+
static void
_ptc_apply (ObjectChange *change, DiaObject *obj)
{
PathTransformChange *ptc = (PathTransformChange *)change;
- StdPath *sp = (StdPath *)obj;
+ StdPath *sp = (StdPath *) obj;
_path_transform (sp, &ptc->matrix);
}
+
+
static void
_ptc_revert (ObjectChange *change, DiaObject *obj)
{
- StdPath *sp = (StdPath *)obj;
- PathTransformChange *ptc = (PathTransformChange *)change;
+ StdPath *sp = (StdPath *) obj;
+ PathTransformChange *ptc = (PathTransformChange *) change;
DiaMatrix mi = ptc->matrix;
- if (cairo_matrix_invert ((cairo_matrix_t *)&mi) != CAIRO_STATUS_SUCCESS)
+ if (cairo_matrix_invert ((cairo_matrix_t *) &mi) != CAIRO_STATUS_SUCCESS) {
g_warning ("_ptc_revert matrix invert");
+ }
_path_transform (sp, &mi);
}
-static ObjectChange *
+
+
+static DiaObjectChange *
_path_object_transform_change_create (DiaObject *obj, DiaMatrix *matrix)
{
- PathTransformChange *ptc = g_new(PathTransformChange, 1);
+ PathTransformChange *ptc = g_new0 (PathTransformChange, 1);
ptc->change.apply = _ptc_apply;
ptc->change.revert = _ptc_revert;
ptc->change.free = NULL;
ptc->matrix = *matrix;
- return &ptc->change;
+ return dia_object_change_legacy_new (&ptc->change);
}
+
/*!
* \brief Flip the path over the vertical or horizontal axis
*
@@ -557,7 +582,7 @@ _path_object_transform_change_create (DiaObject *obj, DiaMatrix *matrix)
*
* \relates _StdPath
*/
-static ObjectChange *
+static DiaObjectChange *
_path_flip_callback (DiaObject *obj, Point *clicked, gpointer data)
{
gboolean horz = data == NULL;
@@ -589,7 +614,7 @@ _path_flip_callback (DiaObject *obj, Point *clicked, gpointer data)
*
* \relates _StdPath
*/
-static ObjectChange *
+static DiaObjectChange *
_path_rotate_callback (DiaObject *obj, Point *clicked, gpointer data)
{
StdPath *sp = (StdPath *)obj;
@@ -651,7 +676,7 @@ _path_closest_corner_handle (StdPath *sp, const Point *pt)
*
* \relates _StdPath
*/
-static ObjectChange *
+static DiaObjectChange *
_path_shear_callback (DiaObject *obj, Point *clicked, gpointer data)
{
StdPath *sp = (StdPath *)obj;
@@ -695,33 +720,37 @@ _path_shear_callback (DiaObject *obj, Point *clicked, gpointer data)
*
* \relates _StdPath
*/
-static ObjectChange *
+static DiaObjectChange *
_convert_to_beziers_callback (DiaObject *obj, Point *clicked, gpointer data)
{
StdPath *stdpath = (StdPath *)obj;
BezPoint *bezier = stdpath->points;
GList *list = NULL;
int i, n = 0;
- ObjectChange *change;
+ DiaObjectChange *change;
for (i = 1; i < stdpath->num_points; ++i) {
- if (bezier[i].type == BEZ_MOVE_TO || i+1 == stdpath->num_points) {
+ if (bezier[i].type == BEZ_MOVE_TO || i + 1 == stdpath->num_points) {
DiaObject *rep;
int num = bezier[i].type == BEZ_MOVE_TO ? i - n : i - n + 1;
- if (stdpath->stroke_or_fill & PDO_FILL)
- rep = create_standard_beziergon (num, &bezier[n]);
- else
- rep = create_standard_bezierline (num, &bezier[n], NULL, NULL);
- if (!rep) /* no Standard objects? */
- break;
+ if (stdpath->stroke_or_fill & PDO_FILL) {
+ rep = create_standard_beziergon (num, &bezier[n]);
+ } else {
+ rep = create_standard_bezierline (num, &bezier[n], NULL, NULL);
+ }
+ if (!rep) {
+ /* no Standard objects? */
+ break;
+ }
list = g_list_append (list, rep);
n = i;
}
}
+
if (!list) {
- change = change_list_create ();
+ change = dia_object_change_list_new ();
} else if (g_list_length (list) == 1) {
- change = object_substitute (obj, (DiaObject *)list->data);
+ change = object_substitute (obj, DIA_OBJECT (list->data));
g_list_free (list);
} else {
change = object_substitute (obj, create_standard_group (list));
@@ -729,14 +758,19 @@ _convert_to_beziers_callback (DiaObject *obj, Point *clicked, gpointer data)
return change;
}
-static ObjectChange *
+
+
+static DiaObjectChange *
_show_control_lines (DiaObject *obj, Point *clicked, gpointer data)
{
- StdPath *stdpath = (StdPath *)obj;
+ StdPath *stdpath = (StdPath *) obj;
- return object_toggle_prop(obj, "show_control_lines", !stdpath->show_control_lines);
+ return object_toggle_prop (obj,
+ "show_control_lines",
+ !stdpath->show_control_lines);
}
+
static DiaMenuItem _stdpath_menu_items[] = {
{ N_("Convert to Bezier"), _convert_to_beziers_callback, NULL, DIAMENU_ACTIVE },
{ N_("Invert Path"), _invert_path_callback, NULL, DIAMENU_ACTIVE },
@@ -851,17 +885,20 @@ _stdpath_scale (StdPath *stdpath, real sx, real sy, const Point *around)
}
}
+
/*!
* \brief Move one of the objects handles
* \memberof _StdPath
*/
-static ObjectChange*
-stdpath_move_handle (StdPath *stdpath,
- Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+static DiaObjectChange *
+stdpath_move_handle (StdPath *stdpath,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- const real EPSILON = 0.01;
+ const double EPSILON = 0.01;
/* move_handle is supposed to be just moving that and related handles (e.g.
* when N is moved NE and NW will move too). But 'opposite' handles are not
@@ -992,7 +1029,7 @@ stdpath_move_handle (StdPath *stdpath,
*
* \memberof _StdPath
*/
-static ObjectChange*
+static DiaObjectChange *
stdpath_move (StdPath *stdpath, Point *to)
{
DiaObject *obj = &stdpath->object;
diff --git a/lib/text.c b/lib/text.c
index 4cfb7c7cd..61b33e883 100644
--- a/lib/text.c
+++ b/lib/text.c
@@ -30,15 +30,20 @@
#include "diarenderer.h"
#include "diainteractiverenderer.h"
#include "diagramdata.h"
-#include "objchange.h"
#include "textline.h"
#include "attributes.h"
#include "object.h"
+#include "dia-object-change-legacy.h"
+#include "dia-object-change-list.h"
+
+
+static int text_key_event (Focus *focus,
+ guint keystate,
+ guint keysym,
+ const char *str,
+ int strlen,
+ DiaObjectChange **change);
-static int text_key_event(Focus *focus,
- guint keystate, guint keysym,
- const gchar *str, int strlen,
- ObjectChange **change);
typedef enum {
TYPE_DELETE_BACKWARD,
@@ -69,8 +74,11 @@ struct TextObjectChange {
#define CURSOR_HEIGHT_RATIO 20
+
/**
* text_get_line:
+ * @text: the #Text
+ * @line: the line number in @text to fetch
*
* Encapsulation functions for transferring to text_line
*
@@ -217,7 +225,7 @@ text_get_ascent (Text *text)
/**
* text_get_descent:
- * @a: #Text object
+ * @text: a #Text object
*
* Get the *average* descent of this Text object.
*
@@ -232,12 +240,12 @@ text_get_descent (Text *text)
}
-static ObjectChange *text_create_change (Text *text,
- TextChangeType type,
- gunichar ch,
- int pos,
- int row,
- DiaObject *obj);
+static DiaObjectChange *text_create_change (Text *text,
+ TextChangeType type,
+ gunichar ch,
+ int pos,
+ int row,
+ DiaObject *obj);
static void
@@ -391,6 +399,9 @@ new_text (const char *string,
/**
* new_text_default:
+ * @pos: the #Point the text is located
+ * @color: the #Color of the text
+ * @align: the #Alignment of the text
*
* Fallback function returning a default initialized text object.
*/
@@ -998,7 +1009,7 @@ text_insert_char (Text *text, gunichar c)
gboolean
-text_delete_key_handler (Focus *focus, ObjectChange ** change)
+text_delete_key_handler (Focus *focus, DiaObjectChange **change)
{
Text *text;
int row, i;
@@ -1029,12 +1040,12 @@ text_delete_key_handler (Focus *focus, ObjectChange ** change)
static int
-text_key_event (Focus *focus,
- guint keystate,
- guint keyval,
- const char *str,
- int strlen,
- ObjectChange **change)
+text_key_event (Focus *focus,
+ guint keystate,
+ guint keyval,
+ const char *str,
+ int strlen,
+ DiaObjectChange **change)
{
Text *text;
int return_val = FALSE;
@@ -1154,16 +1165,17 @@ text_key_event (Focus *focus,
break; /* avoid putting junk into our string */
}
return_val = TRUE;
- *change = change_list_create();
+ *change = dia_object_change_list_new ();
for (utf = str; utf && *utf && strlen > 0 ;
utf = g_utf8_next_char (utf), strlen--) {
- ObjectChange *step;
+ DiaObjectChange *step;
c = g_utf8_get_char (utf);
step = text_create_change (text, TYPE_INSERT_CHAR, c,
text->cursor_pos, text->cursor_row,
focus->obj);
- change_list_add (*change, step);
+ dia_object_change_list_add (DIA_OBJECT_CHANGE_LIST (*change),
+ step);
text_insert_char (text, c);
}
}
@@ -1188,7 +1200,7 @@ text_is_empty (const Text *text)
int
-text_delete_all (Text *text, ObjectChange **change, DiaObject *obj)
+text_delete_all (Text *text, DiaObjectChange **change, DiaObject *obj)
{
if (!text_is_empty (text)) {
*change = text_create_change (text, TYPE_DELETE_ALL,
@@ -1427,7 +1439,7 @@ make_posision_and_size_prop_list (void)
}
-static ObjectChange *
+static DiaObjectChange *
text_create_change (Text *text,
TextChangeType type,
gunichar ch,
@@ -1460,7 +1472,7 @@ text_create_change (Text *text,
change->str = NULL;
}
- return (ObjectChange *) change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
diff --git a/lib/text.h b/lib/text.h
index 6f9f3df88..6796cfcfb 100644
--- a/lib/text.h
+++ b/lib/text.h
@@ -30,6 +30,7 @@ typedef enum {
#include "focus.h"
#include "dia_xml.h" /* for AttributeNode */
#include "diarenderer.h"
+#include "dia-object-change.h"
/*!
* \brief Multiline text representation
@@ -50,7 +51,7 @@ struct _Text {
/* Attributes: */
DiaFont *font;
- real height;
+ double height;
Point position;
Color color;
Alignment alignment;
@@ -61,29 +62,39 @@ struct _Text {
Focus focus;
/* Computed values: */
- real ascent; /* **average** ascent */
- real descent; /* **average** descent */
- real max_width;
+ double ascent; /* **average** ascent */
+ double descent; /* **average** descent */
+ double max_width;
};
/* makes an internal copy of the string */
/*! \brief Text object creation \memberof _Text */
-Text *new_text(const char *string, DiaFont *font, real height,
+Text *new_text(const char *string, DiaFont *font, double height,
Point *pos, Color *color, Alignment align);
-Text *new_text_default(Point *pos, Color *color, Alignment align);
-void text_destroy(Text *text);
-Text *text_copy(Text *text);
-gchar *text_get_line(const Text *text, int line);
-char *text_get_string_copy(const Text *text);
-void text_set_string(Text *text, const char *string);
-void text_set_height(Text *text, real height);
-real text_get_height(const Text *text);
-void text_set_font(Text *text, DiaFont *font);
-void text_set_position(Text *text, Point *pos);
-void text_set_color(Text *text, Color *col);
-void text_set_alignment(Text *text, Alignment align);
-real text_distance_from(Text *text, Point *point);
+Text *new_text_default (Point *pos,
+ Color *color,
+ Alignment align);
+void text_destroy (Text *text);
+Text *text_copy (Text *text);
+char *text_get_line (const Text *text,
+ int line);
+char *text_get_string_copy (const Text *text);
+void text_set_string (Text *text,
+ const char *string);
+void text_set_height (Text *text,
+ double height);
+double text_get_height (const Text *text);
+void text_set_font (Text *text,
+ DiaFont *font);
+void text_set_position (Text *text,
+ Point *pos);
+void text_set_color (Text *text,
+ Color *col);
+void text_set_alignment (Text *text,
+ Alignment align);
+double text_distance_from (Text *text,
+ Point *point);
void text_calc_boundingbox(Text *text, DiaRectangle *box);
void text_draw(Text *text, DiaRenderer *renderer);
void text_set_cursor(Text *text, Point *clicked_point,
@@ -91,19 +102,19 @@ void text_set_cursor(Text *text, Point *clicked_point,
void text_set_cursor_at_end( Text* text );
void text_grab_focus(Text *text, DiaObject *object);
int text_is_empty(const Text *text);
-int text_delete_all(Text *text, ObjectChange **change, DiaObject *obj);
+int text_delete_all (Text *text, DiaObjectChange **change, DiaObject *obj);
void text_get_attributes(Text *text, TextAttributes *attr);
void text_set_attributes(Text *text, TextAttributes *attr);
-real text_get_line_width(const Text *text, int line_no);
+double text_get_line_width(const Text *text, int line_no);
int text_get_line_strlen(const Text *text, int line_no);
-real text_get_max_width(Text *text);
-real text_get_ascent(Text *text);
-real text_get_descent(Text *text);
+double text_get_max_width(Text *text);
+double text_get_ascent(Text *text);
+double text_get_descent(Text *text);
/** Exposing this is a hack, but currently GTK still captures the key
* events of insensitive clods^H^H^H^H^Hmenu items. LC 21/10 2007*/
-gboolean text_delete_key_handler(Focus *focus, ObjectChange **change);
+gboolean text_delete_key_handler(Focus *focus, DiaObjectChange **change);
void data_add_text(AttributeNode attr, Text *text, DiaContext *ctx);
Text *data_text(AttributeNode attr, DiaContext *ctx);
diff --git a/objects/AADL/aadl.h b/objects/AADL/aadl.h
index f9d58fe20..526e7190d 100644
--- a/objects/AADL/aadl.h
+++ b/objects/AADL/aadl.h
@@ -175,11 +175,14 @@ void aadlbox_update_ports(Aadlbox *aadlbox);
real aadlbox_distance_from(Aadlbox *aadlbox, Point *point);
void aadlbox_select(Aadlbox *aadlbox, Point *clicked_point,
DiaRenderer *interactive_renderer);
-ObjectChange* aadlbox_move_handle(Aadlbox *aadlbox, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-ObjectChange* aadlbox_move(Aadlbox *aadlbox, Point *to);
+DiaObjectChange *aadlbox_move_handle (Aadlbox *aadlbox,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+DiaObjectChange *aadlbox_move (Aadlbox *aadlbox,
+ Point *to);
void aadlbox_draw(Aadlbox *aadlbox, DiaRenderer *renderer);
DiaObject *aadlbox_create(Point *startpoint, void *user_data,
Handle **handle1, Handle **handle2);
diff --git a/objects/AADL/aadlbox.c b/objects/AADL/aadlbox.c
index 67ecf5af2..2cb4e9fd5 100644
--- a/objects/AADL/aadlbox.c
+++ b/objects/AADL/aadlbox.c
@@ -35,6 +35,8 @@
#include "aadl.h"
#include "edit_port_declaration.h"
+#include "dia-object-change-legacy.h"
+
#define PORT_HANDLE_AADLBOX (HANDLE_CUSTOM9)
@@ -84,20 +86,24 @@ struct PointChange {
static void aadlbox_update_data(Aadlbox *aadlbox);
static void aadlbox_add_port(Aadlbox *aadlbox, const Point *p, Aadlport *port);
static void aadlbox_remove_port(Aadlbox *aadlbox, Aadlport *port);
-static ObjectChange *aadlbox_add_port_callback (DiaObject *obj,
- Point *clicked, gpointer data);
-static ObjectChange *aadlbox_delete_port_callback (DiaObject *obj,
- Point *clicked, gpointer data);
+static DiaObjectChange *aadlbox_add_port_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data);
+static DiaObjectChange *aadlbox_delete_port_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data);
int aadlbox_point_near_port(Aadlbox *aadlbox, Point *p);
static void aadlbox_add_connection(Aadlbox *aadlbox, const Point *p,
ConnectionPoint *connection);
static void aadlbox_remove_connection(Aadlbox *aadlbox,
ConnectionPoint *connection);
-static ObjectChange *aadlbox_add_connection_callback (DiaObject *obj,
- Point *clicked, gpointer data);
-static ObjectChange *aadlbox_delete_connection_callback (DiaObject *obj,
- Point *clicked, gpointer data);
+static DiaObjectChange *aadlbox_add_connection_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data);
+static DiaObjectChange *aadlbox_delete_connection_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data);
static int aadlbox_point_near_connection(Aadlbox *aadlbox, Point *p);
/* == TEMPLATES ==
@@ -304,7 +310,7 @@ aadlbox_change_revert (struct PointChange *change, DiaObject *obj)
}
-static ObjectChange *
+static DiaObjectChange *
aadlbox_create_change (Aadlbox *aadlbox,
enum change_type type,
Point *point,
@@ -337,7 +343,7 @@ aadlbox_create_change (Aadlbox *aadlbox,
g_return_val_if_reached (NULL);
}
- return (ObjectChange *) change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
@@ -537,21 +543,22 @@ aadlbox_remove_port(Aadlbox *aadlbox, Aadlport *port)
}
-ObjectChange *
+DiaObjectChange *
aadlbox_add_port_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Aadlbox *aadlbox = (Aadlbox *) obj;
Aadl_type type = *((Aadl_type *) data);
Aadlport *port;
- port = new_port(type, "");
- aadlbox_add_port(aadlbox, clicked, port);
- aadlbox_update_data(aadlbox);
+ port = new_port (type, "");
+ aadlbox_add_port (aadlbox, clicked, port);
+ aadlbox_update_data (aadlbox);
- return aadlbox_create_change(aadlbox, TYPE_ADD_POINT, clicked, port);
+ return aadlbox_create_change (aadlbox, TYPE_ADD_POINT, clicked, port);
}
-ObjectChange *
+
+DiaObjectChange *
aadlbox_delete_port_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Aadlbox *aadlbox = (Aadlbox *) obj;
@@ -559,15 +566,15 @@ aadlbox_delete_port_callback (DiaObject *obj, Point *clicked, gpointer data)
int port_num;
Point p;
- port_num = aadlbox_point_near_port(aadlbox, clicked);
+ port_num = aadlbox_point_near_port (aadlbox, clicked);
port = aadlbox->ports[port_num];
p = port->handle->pos;
- aadlbox_remove_port(aadlbox, port );
- aadlbox_update_data(aadlbox);
+ aadlbox_remove_port (aadlbox, port);
+ aadlbox_update_data (aadlbox);
- return aadlbox_create_change(aadlbox, TYPE_REMOVE_POINT, &p, port);
+ return aadlbox_create_change (aadlbox, TYPE_REMOVE_POINT, &p, port);
}
@@ -649,7 +656,7 @@ aadlbox_remove_connection(Aadlbox *aadlbox, ConnectionPoint *connection)
}
-ObjectChange *
+DiaObjectChange *
aadlbox_add_connection_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Aadlbox *aadlbox = (Aadlbox *) obj;
@@ -657,31 +664,35 @@ aadlbox_add_connection_callback (DiaObject *obj, Point *clicked, gpointer data)
connection = g_new0(ConnectionPoint,1);
- aadlbox_add_connection(aadlbox, clicked, connection);
- aadlbox_update_data(aadlbox);
+ aadlbox_add_connection (aadlbox, clicked, connection);
+ aadlbox_update_data (aadlbox);
- return aadlbox_create_change(aadlbox, TYPE_ADD_CONNECTION, clicked,connection);
+ return aadlbox_create_change (aadlbox, TYPE_ADD_CONNECTION, clicked, connection);
}
-ObjectChange *
-aadlbox_delete_connection_callback (DiaObject *obj, Point *clicked,
- gpointer data)
+DiaObjectChange *
+aadlbox_delete_connection_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data)
{
Aadlbox *aadlbox = (Aadlbox *) obj;
ConnectionPoint *connection;
int connection_num;
Point p;
- connection_num = aadlbox_point_near_connection(aadlbox, clicked);
+ connection_num = aadlbox_point_near_connection (aadlbox, clicked);
connection = aadlbox->connections[connection_num];
p = connection->pos;
- aadlbox_remove_connection(aadlbox, connection );
- aadlbox_update_data(aadlbox);
+ aadlbox_remove_connection (aadlbox, connection);
+ aadlbox_update_data (aadlbox);
- return aadlbox_create_change(aadlbox, TYPE_REMOVE_CONNECTION, &p, connection);
+ return aadlbox_create_change (aadlbox,
+ TYPE_REMOVE_CONNECTION,
+ &p,
+ connection);
}
/***********************************************
@@ -705,17 +716,20 @@ aadlbox_select(Aadlbox *aadlbox, Point *clicked_point,
}
-ObjectChange*
-aadlbox_move_handle(Aadlbox *aadlbox, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+DiaObjectChange *
+aadlbox_move_handle (Aadlbox *aadlbox,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
assert(aadlbox!=NULL);
assert(handle!=NULL);
assert(to!=NULL);
- if (handle->id < 8) { /* box resizing */
-
+ if (handle->id < 8) {
+ /* box resizing */
Element *element = &aadlbox->element;
Point oldcorner, newcorner;
real oldw, neww, oldh, newh;
@@ -758,39 +772,37 @@ aadlbox_move_handle(Aadlbox *aadlbox, Handle *handle,
c->pos.x = newcorner.x + w_factor * neww;
c->pos.y = newcorner.y + h_factor * newh;
}
-
- }
-
- else { /* port handles */
-
+ } else {
+ /* port handles */
handle->pos.x = to->x;
handle->pos.y = to->y;
}
- aadlbox_update_data(aadlbox);
+ aadlbox_update_data (aadlbox);
/* FIXME !! Should I free the given structures (to, ...) ? */
return NULL;
}
-ObjectChange*
-aadlbox_move(Aadlbox *aadlbox, Point *to)
+
+DiaObjectChange *
+aadlbox_move (Aadlbox *aadlbox, Point *to)
{
Point p, delta;
DiaObject *obj = &aadlbox->element.object;
int i;
delta = *to;
- point_sub(&delta, &obj->position);
+ point_sub (&delta, &obj->position);
/* update ports position */
- for (i=0;i<aadlbox->num_ports;i++) {
- point_add(&aadlbox->ports[i]->handle->pos, &delta);
+ for (i = 0; i < aadlbox->num_ports; i++) {
+ point_add (&aadlbox->ports[i]->handle->pos, &delta);
}
/* update connection points position */
- for (i=0;i<aadlbox->num_connections;i++) {
- point_add(&aadlbox->connections[i]->pos, &delta);
+ for (i = 0; i < aadlbox->num_connections; i++) {
+ point_add (&aadlbox->connections[i]->pos, &delta);
}
@@ -800,11 +812,12 @@ aadlbox_move(Aadlbox *aadlbox, Point *to)
p.x += AADLBOX_TEXT_MARGIN;
p.y += aadlbox->name->ascent + AADLBOX_TEXT_MARGIN;
- aadlbox_update_data(aadlbox);
+ aadlbox_update_data (aadlbox);
return NULL;
}
+
void aadlbox_draw(Aadlbox *aadlbox, DiaRenderer *renderer)
{
int i;
diff --git a/objects/AADL/edit_port_declaration.c b/objects/AADL/edit_port_declaration.c
index 596c4a54a..e786fe983 100644
--- a/objects/AADL/edit_port_declaration.c
+++ b/objects/AADL/edit_port_declaration.c
@@ -24,6 +24,8 @@
#include <string.h>
#include "aadl.h"
#include "edit_port_declaration.h"
+#include "dia-object-change-legacy.h"
+
int aadlbox_point_near_port(Aadlbox *aadlbox, Point *p);
@@ -120,8 +122,10 @@ static gboolean focus_out_event( GtkWidget *widget,
/* I have to write this little GTK code, because there's no way to know
which point was clicked if I use the properties functions (get_props, ...)*/
-ObjectChange *edit_port_declaration_callback (DiaObject *obj,
- Point *clicked, gpointer data)
+DiaObjectChange *
+edit_port_declaration_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data)
{
GtkWidget *window;
GtkWidget *vbox;
@@ -206,7 +210,5 @@ ObjectChange *edit_port_declaration_callback (DiaObject *obj,
change->obj_change.apply((ObjectChange *)change, obj);
- return (ObjectChange *) change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
-
-
diff --git a/objects/AADL/edit_port_declaration.h b/objects/AADL/edit_port_declaration.h
index 921674a27..60ea967b9 100644
--- a/objects/AADL/edit_port_declaration.h
+++ b/objects/AADL/edit_port_declaration.h
@@ -19,5 +19,6 @@
*/
-ObjectChange *edit_port_declaration_callback (DiaObject *obj,
- Point *clicked, gpointer data);
+DiaObjectChange *edit_port_declaration_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data);
diff --git a/objects/Database/compound.c b/objects/Database/compound.c
index 9eda60f36..8dd41455c 100644
--- a/objects/Database/compound.c
+++ b/objects/Database/compound.c
@@ -32,6 +32,7 @@
#include "attributes.h"
#include "geometry.h"
#include "propinternals.h"
+#include "dia-object-change-legacy.h"
#include "debug.h"
@@ -99,16 +100,15 @@ struct _MountPointMoveChange {
static CompoundState * compound_state_new (Compound *);
static void compound_state_free (CompoundState *);
static void compound_state_set (CompoundState *, Compound *);
-static CompoundChange * compound_change_new (Compound *, CompoundState *);
+static DiaObjectChange *compound_change_new (Compound *, CompoundState *);
static void compound_change_apply (CompoundChange *, DiaObject *);
static void compound_change_free (CompoundChange *);
-static MountPointMoveChange *
-mount_point_move_change_new (Compound *, Point *);
-static void
-mount_point_move_change_apply (MountPointMoveChange *, DiaObject *);
-static void
-mount_point_move_change_free (MountPointMoveChange *);
+static DiaObjectChange *mount_point_move_change_new (Compound *,
+ Point *);
+static void mount_point_move_change_apply (MountPointMoveChange *,
+ DiaObject *);
+static void mount_point_move_change_free (MountPointMoveChange *);
static DiaObject * compound_create (Point *, void *, Handle **, Handle **);
static DiaObject * compound_load (ObjectNode obj_node, int version,DiaContext *ctx);
@@ -118,19 +118,28 @@ static void compound_draw (Compound *, DiaRenderer *);
static real compound_distance_from (Compound *, Point *);
static void compound_select (Compound *, Point *, DiaRenderer *);
static DiaObject * compound_copy (Compound *);
-static ObjectChange * compound_move (Compound *, Point *);
-static ObjectChange * compound_move_handle (Compound *, Handle *, Point *,
- ConnectionPoint *,
- HandleMoveReason, ModifierKeys);
-static ObjectChange * compound_apply_properties_dialog (Compound *,
- GtkWidget *);
-static PropDescription * compound_describe_props (Compound *);
-static void compound_get_props (Compound *, GPtrArray *);
-static void compound_set_props (Compound *, GPtrArray *);
-static void compound_update_object (Compound *);
-static ObjectChange * compound_flip_arms_cb (DiaObject *, Point *, gpointer);
-static ObjectChange * compound_repos_mount_point_cb (DiaObject *, Point *,
- gpointer);
+static DiaObjectChange *compound_move (Compound *,
+ Point *);
+static DiaObjectChange *compound_move_handle (Compound *,
+ Handle *,
+ Point *,
+ ConnectionPoint *,
+ HandleMoveReason,
+ ModifierKeys);
+static DiaObjectChange *compound_apply_properties_dialog (Compound *,
+ GtkWidget *);
+static PropDescription *compound_describe_props (Compound *);
+static void compound_get_props (Compound *,
+ GPtrArray *);
+static void compound_set_props (Compound *,
+ GPtrArray *);
+static void compound_update_object (Compound *);
+static DiaObjectChange *compound_flip_arms_cb (DiaObject *,
+ Point *,
+ gpointer);
+static DiaObjectChange *compound_repos_mount_point_cb (DiaObject *,
+ Point *,
+ gpointer);
static DiaMenu * compound_object_menu(DiaObject *, Point *);
static gint adjust_handle_count_to (Compound *, gint);
static void setup_mount_point (ConnectionPoint *, DiaObject *, Point *);
@@ -300,10 +309,10 @@ compound_state_free (CompoundState * state)
}
-static CompoundChange *
-compound_change_new (Compound * comp, CompoundState * state)
+static DiaObjectChange *
+compound_change_new (Compound *comp, CompoundState *state)
{
- CompoundChange * change;
+ CompoundChange *change;
change = g_new (CompoundChange, 1);
@@ -314,7 +323,7 @@ compound_change_new (Compound * comp, CompoundState * state)
change->obj = comp;
change->saved_state = state;
- return change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
static void
@@ -336,7 +345,8 @@ compound_change_free (CompoundChange * change)
compound_state_free (change->saved_state);
}
-static MountPointMoveChange *
+
+static DiaObjectChange *
mount_point_move_change_new (Compound * comp, Point * pos)
{
MountPointMoveChange * change;
@@ -352,9 +362,10 @@ mount_point_move_change_new (Compound * comp, Point * pos)
change->obj = comp;
change->saved_pos = *pos;
- return change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
+
static void
mount_point_move_change_apply (MountPointMoveChange * change, DiaObject * obj)
{
@@ -657,32 +668,36 @@ compound_copy (Compound * comp)
return ©->object;
}
-static ObjectChange *
-compound_move (Compound * comp, Point * to)
+
+static DiaObjectChange *
+compound_move (Compound *comp, Point *to)
{
Point diff;
Handle * h;
- gint i, num_handles;
+ int i, num_handles;
diff.x = to->x - comp->object.position.x;
diff.y = to->y - comp->object.position.y;
num_handles = comp->object.num_handles;
- for (i = 0; i < num_handles; i++)
- {
- h = &comp->handles[i];
- point_add (&h->pos, &diff);
- }
+ for (i = 0; i < num_handles; i++) {
+ h = &comp->handles[i];
+ point_add (&h->pos, &diff);
+ }
point_add (&comp->mount_point.pos, &diff);
compound_update_data (comp);
return NULL;
}
-static ObjectChange *
-compound_move_handle (Compound * comp, Handle * handle,
- Point * to, ConnectionPoint * cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+compound_move_handle (Compound *comp,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
if (handle->id == HANDLE_MOUNT_POINT)
{
@@ -719,7 +734,8 @@ compound_move_handle (Compound * comp, Handle * handle,
return NULL;
}
-static ObjectChange *
+
+static DiaObjectChange *
compound_apply_properties_dialog (Compound * comp, GtkWidget * dialog_widget)
{
CompoundState * state;
@@ -729,9 +745,11 @@ compound_apply_properties_dialog (Compound * comp, GtkWidget * dialog_widget)
prop_get_data_from_widgets(dialog);
compound_apply_props (comp, dialog->props, FALSE);
- return (ObjectChange *) compound_change_new (comp, state);
+
+ return compound_change_new (comp, state);
}
+
static PropDescription *
compound_describe_props (Compound * comp)
{
@@ -1071,16 +1089,17 @@ compound_object_menu(DiaObject *obj, Point *p)
return &compound_menu;
}
-static ObjectChange *
+
+static DiaObjectChange *
compound_flip_arms_cb (DiaObject *obj, Point *pos, gpointer data)
{
Compound * comp = (Compound *) obj;
- gint direction = GPOINTER_TO_INT (data);
+ int direction = GPOINTER_TO_INT (data);
Point * mppos = &comp->mount_point.pos;
CompoundState * state;
Handle * h;
Point * p;
- gint num_handles, i;
+ int num_handles, i;
state = compound_state_new (comp);
@@ -1106,18 +1125,20 @@ compound_flip_arms_cb (DiaObject *obj, Point *pos, gpointer data)
compound_update_data (comp);
compound_sanity_check (comp, "After flipping sides");
- return (ObjectChange *) compound_change_new (comp, state);
+
+ return compound_change_new (comp, state);
}
-static ObjectChange *
+
+static DiaObjectChange *
compound_repos_mount_point_cb (DiaObject * obj, Point *clicked, gpointer data)
{
Compound * comp = (Compound *) obj;
Handle * h;
Point old_pos;
Point pos;
- gint what_todo;
- gint i, num_handles;
+ int what_todo;
+ int i, num_handles;
old_pos = comp->mount_point.pos;
what_todo = GPOINTER_TO_INT (data);
@@ -1152,7 +1173,7 @@ compound_repos_mount_point_cb (DiaObject * obj, Point *clicked, gpointer data)
comp->mount_point.pos = pos;
compound_update_data (comp);
- return (ObjectChange *)mount_point_move_change_new (comp, &old_pos);
+ return mount_point_move_change_new (comp, &old_pos);
}
/**
diff --git a/objects/Database/database.h b/objects/Database/database.h
index cb4efa021..66a16dbf0 100644
--- a/objects/Database/database.h
+++ b/objects/Database/database.h
@@ -22,6 +22,8 @@
#include "element.h"
#include "connectionpoint.h"
#include "orth_conn.h"
+#include "dia-object-change-legacy.h"
+
#define IS_NOT_EMPTY(str) (((str) != NULL) && ((str)[0] != '\0'))
diff --git a/objects/Database/reference.c b/objects/Database/reference.c
index 225d2ef5a..7a15e80d7 100644
--- a/objects/Database/reference.c
+++ b/objects/Database/reference.c
@@ -37,11 +37,14 @@ static void reference_destroy (TableReference *);
static void reference_draw (TableReference *, DiaRenderer *);
static real reference_distance_from (TableReference *, Point *);
static void reference_select (TableReference *, Point *, DiaRenderer *);
-static ObjectChange * reference_move (TableReference *, Point *);
-static ObjectChange * reference_move_handle (TableReference *, Handle *,
- Point *, ConnectionPoint *,
- HandleMoveReason,
- ModifierKeys);
+static DiaObjectChange *reference_move (TableReference *,
+ Point *);
+static DiaObjectChange *reference_move_handle (TableReference *,
+ Handle *,
+ Point *,
+ ConnectionPoint *,
+ HandleMoveReason,
+ ModifierKeys);
static PropDescription * reference_describe_props (TableReference *);
static void reference_get_props (TableReference *, GPtrArray *);
static void reference_set_props (TableReference *, GPtrArray *);
@@ -51,8 +54,12 @@ static void update_desc_data (Point *, Alignment *,
Point *, Point *, Orientation, real, real);
static void get_desc_bbox (DiaRectangle *, gchar *, real, Point *, Alignment,
DiaFont *, real);
-static ObjectChange * reference_add_segment_cb(DiaObject *, Point *, gpointer);
-static ObjectChange * reference_del_segment_cb(DiaObject *, Point *, gpointer);
+static DiaObjectChange *reference_add_segment_cb (DiaObject *,
+ Point *,
+ gpointer);
+static DiaObjectChange *reference_del_segment_cb (DiaObject *,
+ Point *,
+ gpointer);
static DiaMenu * reference_object_menu(TableReference *, Point *);
/* ------------------------------------------------------------------------ */
@@ -206,19 +213,23 @@ reference_destroy (TableReference * ref)
static DiaObject *
-reference_load (ObjectNode obj_node, int version,DiaContext *ctx)
+reference_load (ObjectNode obj_node, int version, DiaContext *ctx)
{
- DiaObject * obj = object_load_using_properties (&reference_type,
- obj_node, version,ctx);
+ DiaObject *obj = object_load_using_properties (&reference_type,
+ obj_node,
+ version,
+ ctx);
+
return obj;
}
+
static void
reference_draw (TableReference *ref, DiaRenderer *renderer)
{
OrthConn * orth = &ref->orth;
Point * points;
- gint num_points;
+ int num_points;
points = &orth->points[0];
num_points = orth->numpoints;
@@ -246,6 +257,7 @@ reference_draw (TableReference *ref, DiaRenderer *renderer)
ref->sp_desc_text_align,
&ref->text_color);
}
+
if (IS_NOT_EMPTY (ref->end_point_desc)) {
dia_renderer_draw_string (renderer,
ref->end_point_desc,
@@ -255,66 +267,91 @@ reference_draw (TableReference *ref, DiaRenderer *renderer)
}
}
-static real
-reference_distance_from (TableReference * ref, Point *point)
+
+static double
+reference_distance_from (TableReference *ref, Point *point)
{
DiaRectangle rect;
- OrthConn * orth;
- real dist;
+ OrthConn *orth;
+ double dist;
orth = &ref->orth;
dist = orthconn_distance_from (orth, point, ref->line_width);
- if (IS_NOT_EMPTY(ref->start_point_desc))
- {
- get_desc_bbox (&rect, ref->start_point_desc, ref->sp_desc_width,
- &ref->sp_desc_pos, ref->sp_desc_text_align,
- ref->normal_font, ref->normal_font_height);
- dist = MIN(distance_rectangle_point(&rect, point), dist);
- if (dist < 0.000001)
- return 0.0;
- }
- if (IS_NOT_EMPTY(ref->start_point_desc))
- {
- get_desc_bbox (&rect, ref->end_point_desc, ref->ep_desc_width,
- &ref->ep_desc_pos, ref->ep_desc_text_align,
- ref->normal_font, ref->normal_font_height);
- dist = MIN(distance_rectangle_point (&rect, point), dist);
+ if (IS_NOT_EMPTY (ref->start_point_desc)) {
+ get_desc_bbox (&rect,
+ ref->start_point_desc,
+ ref->sp_desc_width,
+ &ref->sp_desc_pos,
+ ref->sp_desc_text_align,
+ ref->normal_font,
+ ref->normal_font_height);
+
+ dist = MIN (distance_rectangle_point (&rect, point), dist);
+
+ if (dist < 0.000001) {
+ return 0.0;
}
+ }
+
+ if (IS_NOT_EMPTY (ref->start_point_desc)) {
+ get_desc_bbox (&rect,
+ ref->end_point_desc,
+ ref->ep_desc_width,
+ &ref->ep_desc_pos,
+ ref->ep_desc_text_align,
+ ref->normal_font,
+ ref->normal_font_height);
+ dist = MIN (distance_rectangle_point (&rect, point), dist);
+ }
return dist;
}
+
static void
-reference_select (TableReference * ref,
- Point * clicked_point,
- DiaRenderer * interactive_renderer)
+reference_select (TableReference *ref,
+ Point *clicked_point,
+ DiaRenderer *interactive_renderer)
{
- orthconn_update_data(&ref->orth);
+ orthconn_update_data (&ref->orth);
}
-static ObjectChange *
+
+static DiaObjectChange *
reference_move (TableReference *ref, Point *to)
{
- ObjectChange *change;
+ DiaObjectChange *change;
- change = orthconn_move(&ref->orth, to);
+ change = orthconn_move (&ref->orth, to);
reference_update_data (ref);
+
return change;
}
-static ObjectChange *
-reference_move_handle (TableReference *ref, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
-{
- ObjectChange *change;
- change = orthconn_move_handle(&ref->orth, handle, to, cp, reason, modifiers);
+static DiaObjectChange *
+reference_move_handle (TableReference *ref,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
+{
+ DiaObjectChange *change;
+
+ change = orthconn_move_handle (&ref->orth,
+ handle,
+ to,
+ cp,
+ reason,
+ modifiers);
reference_update_data (ref);
+
return change;
}
+
static PropDescription *
reference_describe_props (TableReference *ref)
{
@@ -498,33 +535,41 @@ get_desc_bbox (DiaRectangle * r, gchar * string, real string_width,
r->bottom = r->top + font_height;
}
+
static DiaMenu *
-reference_object_menu(TableReference *tbl, Point *clicked)
+reference_object_menu (TableReference *tbl, Point *clicked)
{
OrthConn *orth;
orth = &tbl->orth;
/* Set entries sensitive/selected etc here */
- reference_menu_items[0].active = orthconn_can_add_segment(orth, clicked);
- reference_menu_items[1].active = orthconn_can_delete_segment(orth, clicked);
- orthconn_update_object_menu(orth, clicked, &reference_menu_items[2]);
+ reference_menu_items[0].active = orthconn_can_add_segment (orth, clicked);
+ reference_menu_items[1].active = orthconn_can_delete_segment (orth, clicked);
+ orthconn_update_object_menu (orth, clicked, &reference_menu_items[2]);
+
return &reference_menu;
}
-static ObjectChange *
-reference_add_segment_cb(DiaObject * obj, Point * clicked, gpointer data)
+
+static DiaObjectChange *
+reference_add_segment_cb (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
- change = orthconn_add_segment((OrthConn *)obj, clicked);
- reference_update_data((TableReference *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_add_segment ((OrthConn *)obj, clicked);
+ reference_update_data ((TableReference *) obj);
+
return change;
}
-static ObjectChange *
-reference_del_segment_cb(DiaObject * obj, Point * clicked, gpointer data)
+
+static DiaObjectChange *
+reference_del_segment_cb (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
- change = orthconn_delete_segment((OrthConn *)obj, clicked);
- reference_update_data((TableReference *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_delete_segment ((OrthConn *) obj, clicked);
+ reference_update_data ((TableReference *) obj);
+
return change;
}
diff --git a/objects/Database/table.c b/objects/Database/table.c
index 9682ca711..514d9bc72 100644
--- a/objects/Database/table.c
+++ b/objects/Database/table.c
@@ -50,33 +50,62 @@
/* ----------------------------------------------------------------------- */
-static real table_calculate_namebox_data (Table *);
-static real table_init_attributesbox_height (Table *);
-static DiaObject * table_create (Point *, void *, Handle **, Handle **);
-static DiaObject * table_load (ObjectNode obj_node, int version, DiaContext *ctx);
-static void table_save (Table *, ObjectNode, DiaContext *ctx);
-static void table_destroy (Table *);
-static real table_distance_from (Table *, Point *);
-static void table_select (Table *, Point *, DiaRenderer *);
-static DiaObject * table_copy (Table *table);
-static ObjectChange* table_move (Table *, Point *);
-static ObjectChange * table_move_handle (Table *, Handle *,
- Point *, ConnectionPoint *,
- HandleMoveReason, ModifierKeys);
-static PropDescription * table_describe_props (Table *);
-static void table_get_props (Table *, GPtrArray *);
-static void table_set_props (Table *, GPtrArray *);
-
-static void table_draw (Table *, DiaRenderer *);
-static real table_draw_namebox (Table *, DiaRenderer *, Element *);
-static real table_draw_attributesbox (Table *, DiaRenderer *,
- Element *, real);
-static DiaMenu * table_object_menu(DiaObject *, Point *);
-static ObjectChange * table_show_comments_cb(DiaObject *, Point *, gpointer);
-static void underline_table_attribute (DiaRenderer *, Point,
- TableAttribute *, Table *);
-static void fill_diamond (DiaRenderer *, real, real, Point *, Color *);
-static void table_init_fonts (Table *);
+static double table_calculate_namebox_data (Table *);
+static double table_init_attributesbox_height (Table *);
+static DiaObject *table_create (Point *,
+ void *,
+ Handle **,
+ Handle **);
+static DiaObject *table_load (ObjectNode obj_node,
+ int version,
+ DiaContext *ctx);
+static void table_save (Table *,
+ ObjectNode,
+ DiaContext *ctx);
+static void table_destroy (Table *);
+static double table_distance_from (Table *,
+ Point *);
+static void table_select (Table *,
+ Point *,
+ DiaRenderer *);
+static DiaObject *table_copy (Table *table);
+static DiaObjectChange *table_move (Table *,
+ Point *);
+static DiaObjectChange *table_move_handle (Table *,
+ Handle *,
+ Point *,
+ ConnectionPoint *,
+ HandleMoveReason,
+ ModifierKeys);
+static PropDescription *table_describe_props (Table *);
+static void table_get_props (Table *,
+ GPtrArray *);
+static void table_set_props (Table *,
+ GPtrArray *);
+static void table_draw (Table *,
+ DiaRenderer *);
+static double table_draw_namebox (Table *,
+ DiaRenderer *,
+ Element *);
+static double table_draw_attributesbox (Table *,
+ DiaRenderer *,
+ Element *,
+ double);
+static DiaMenu *table_object_menu (DiaObject *,
+ Point *);
+static DiaObjectChange *table_show_comments_cb (DiaObject *,
+ Point *,
+ gpointer);
+static void underline_table_attribute (DiaRenderer *,
+ Point,
+ TableAttribute *,
+ Table *);
+static void fill_diamond (DiaRenderer *,
+ double,
+ double,
+ Point *,
+ Color *);
+static void table_init_fonts (Table *);
static TableAttribute *table_attribute_new (void);
static void table_attribute_free (TableAttribute *);
@@ -85,8 +114,11 @@ static void table_update_connectionpoints (Table *);
static void table_update_positions (Table *);
static void table_compute_width_height (Table *);
static TableState *table_state_new (Table *);
-static TableChange *table_change_new (Table *, TableState *,
- GList *, GList *, GList *);
+static DiaObjectChange *table_change_new (Table *,
+ TableState *,
+ GList *,
+ GList *,
+ GList *);
static void table_update_primary_key_font (Table *);
static char *create_documentation_tag (char *comment,
@@ -859,7 +891,8 @@ table_copy(Table * orig)
return ©->element.object;
}
-static ObjectChange *
+
+static DiaObjectChange *
table_move (Table *table, Point *to)
{
table->element.corner = *to;
@@ -867,10 +900,14 @@ table_move (Table *table, Point *to)
return NULL;
}
-static ObjectChange *
-table_move_handle (Table *table, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+table_move_handle (Table *table,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
/* ignore this event */
return NULL;
@@ -1326,8 +1363,9 @@ table_update_connectionpoints (Table * table)
}
}
+
static DiaMenu *
-table_object_menu(DiaObject *obj, Point *p)
+table_object_menu (DiaObject *obj, Point *p)
{
table_menu_items[0].active = DIAMENU_ACTIVE|DIAMENU_TOGGLE|
(((Table *)obj)->visible_comment ? DIAMENU_TOGGLE_ON : 0);
@@ -1335,8 +1373,9 @@ table_object_menu(DiaObject *obj, Point *p)
return &table_menu;
}
-static ObjectChange *
-table_show_comments_cb(DiaObject *obj, Point *pos, gpointer data)
+
+static DiaObjectChange *
+table_show_comments_cb (DiaObject *obj, Point *pos, gpointer data)
{
TableState * state;
Table * table = (Table *) obj;
@@ -1345,9 +1384,11 @@ table_show_comments_cb(DiaObject *obj, Point *pos, gpointer data)
table->visible_comment = !table->visible_comment;
table_compute_width_height (table);
table_update_positions (table);
- return (ObjectChange *) table_change_new (table, state, NULL, NULL, NULL);
+
+ return table_change_new (table, state, NULL, NULL, NULL);
}
+
/**
* This routine updates the font for primary keys. It depends on
* `normal_font' and `bold_primary_key' properties of the passed table.
@@ -1547,7 +1588,8 @@ table_change_apply (TableChange * change, DiaObject * obj)
change->applied = TRUE;
}
-static TableChange *
+
+static DiaObjectChange *
table_change_new (Table * table, TableState * saved_state,
GList * added, GList * deleted,
GList * disconnects)
@@ -1567,5 +1609,5 @@ table_change_new (Table * table, TableState * saved_state,
change->applied = TRUE;
change->saved_state = saved_state;
- return change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
diff --git a/objects/ER/attribute.c b/objects/ER/attribute.c
index 4be561b33..917d789cf 100644
--- a/objects/ER/attribute.c
+++ b/objects/ER/attribute.c
@@ -31,6 +31,7 @@
#include "diarenderer.h"
#include "attributes.h"
#include "properties.h"
+#include "dia-object-change-legacy.h"
#include "pixmaps/attribute.xpm"
@@ -85,11 +86,11 @@ struct _Attribute {
static real attribute_distance_from(Attribute *attribute, Point *point);
static void attribute_select(Attribute *attribute, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* attribute_move_handle(Attribute *attribute, Handle *handle,
+static DiaObjectChange* attribute_move_handle(Attribute *attribute, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason,
ModifierKeys modifiers);
-static ObjectChange* attribute_move(Attribute *attribute, Point *to);
+static DiaObjectChange* attribute_move(Attribute *attribute, Point *to);
static void attribute_draw(Attribute *attribute, DiaRenderer *renderer);
static void attribute_update_data(Attribute *attribute);
static DiaObject *attribute_create(Point *startpoint,
@@ -223,7 +224,7 @@ attribute_select(Attribute *attribute, Point *clicked_point,
element_update_handles(&attribute->element);
}
-static ObjectChange*
+static DiaObjectChange*
attribute_move_handle(Attribute *attribute, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -240,7 +241,7 @@ attribute_move_handle(Attribute *attribute, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
attribute_move(Attribute *attribute, Point *to)
{
attribute->element.corner = *to;
diff --git a/objects/ER/entity.c b/objects/ER/entity.c
index 7d3b9c594..3c0390576 100644
--- a/objects/ER/entity.c
+++ b/objects/ER/entity.c
@@ -69,11 +69,11 @@ struct _Entity {
static real entity_distance_from(Entity *entity, Point *point);
static void entity_select(Entity *entity, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* entity_move_handle(Entity *entity, Handle *handle,
+static DiaObjectChange* entity_move_handle(Entity *entity, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason,
ModifierKeys modifiers);
-static ObjectChange* entity_move(Entity *entity, Point *to);
+static DiaObjectChange* entity_move(Entity *entity, Point *to);
static void entity_draw(Entity *entity, DiaRenderer *renderer);
static void entity_update_data(Entity *entity);
static DiaObject *entity_create(Point *startpoint,
@@ -199,7 +199,7 @@ entity_select(Entity *entity, Point *clicked_point,
element_update_handles(&entity->element);
}
-static ObjectChange*
+static DiaObjectChange*
entity_move_handle(Entity *entity, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -215,7 +215,7 @@ entity_move_handle(Entity *entity, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
entity_move(Entity *entity, Point *to)
{
entity->element.corner = *to;
diff --git a/objects/ER/participation.c b/objects/ER/participation.c
index 57aea80bb..27fe2558e 100644
--- a/objects/ER/participation.c
+++ b/objects/ER/participation.c
@@ -51,10 +51,14 @@ struct _Participation {
static real participation_distance_from(Participation *dep, Point *point);
static void participation_select(Participation *dep, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* participation_move_handle(Participation *dep, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* participation_move(Participation *dep, Point *to);
+static DiaObjectChange *participation_move_handle (Participation *dep,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *participation_move (Participation *dep,
+ Point *to);
static void participation_draw(Participation *dep, DiaRenderer *renderer);
static DiaObject *participation_create(Point *startpoint,
void *user_data,
@@ -160,12 +164,17 @@ participation_select(Participation *participation, Point *clicked_point,
orthconn_update_data(&participation->orth);
}
-static ObjectChange*
-participation_move_handle(Participation *participation, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+participation_move_handle (Participation *participation,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- ObjectChange *change;
+ DiaObjectChange *change;
+
assert(participation!=NULL);
assert(handle!=NULL);
assert(to!=NULL);
@@ -177,17 +186,19 @@ participation_move_handle(Participation *participation, Handle *handle,
return change;
}
-static ObjectChange*
+
+static DiaObjectChange *
participation_move(Participation *participation, Point *to)
{
- ObjectChange *change;
+ DiaObjectChange *change;
- change = orthconn_move(&participation->orth, to);
- participation_update_data(participation);
+ change = orthconn_move (&participation->orth, to);
+ participation_update_data (participation);
return change;
}
+
static void
participation_draw (Participation *participation, DiaRenderer *renderer)
{
@@ -379,24 +390,35 @@ participation_load(ObjectNode obj_node, int version,DiaContext *ctx)
return &participation->orth.object;
}
-static ObjectChange *
-participation_add_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+participation_add_segment_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data)
{
- ObjectChange *change;
- change = orthconn_add_segment((OrthConn *)obj, clicked);
- participation_update_data((Participation *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_add_segment ((OrthConn *) obj, clicked);
+ participation_update_data ((Participation *) obj);
+
return change;
}
-static ObjectChange *
-participation_delete_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+participation_delete_segment_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data)
{
- ObjectChange *change;
- change = orthconn_delete_segment((OrthConn *)obj, clicked);
- participation_update_data((Participation *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_delete_segment ((OrthConn *) obj, clicked);
+ participation_update_data ((Participation *) obj);
+
return change;
}
+
static DiaMenuItem object_menu_items[] = {
{ N_("Add segment"), participation_add_segment_callback, NULL, 1 },
{ N_("Delete segment"), participation_delete_segment_callback, NULL, 1 },
diff --git a/objects/ER/relationship.c b/objects/ER/relationship.c
index 172c6b699..2066324eb 100644
--- a/objects/ER/relationship.c
+++ b/objects/ER/relationship.c
@@ -72,10 +72,10 @@ struct _Relationship {
static double relationship_distance_from(Relationship *relationship, Point *point);
static void relationship_select(Relationship *relationship, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* relationship_move_handle(Relationship *relationship, Handle *handle,
+static DiaObjectChange* relationship_move_handle(Relationship *relationship, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* relationship_move(Relationship *relationship, Point *to);
+static DiaObjectChange* relationship_move(Relationship *relationship, Point *to);
static void relationship_draw(Relationship *relationship, DiaRenderer *renderer);
static void relationship_update_data(Relationship *relationship);
static DiaObject *relationship_create(Point *startpoint,
@@ -218,7 +218,7 @@ relationship_select (Relationship *relationship,
}
-static ObjectChange *
+static DiaObjectChange *
relationship_move_handle (Relationship *relationship,
Handle *handle,
Point *to,
@@ -237,7 +237,7 @@ relationship_move_handle (Relationship *relationship,
}
-static ObjectChange *
+static DiaObjectChange *
relationship_move (Relationship *relationship, Point *to)
{
relationship->element.corner = *to;
diff --git a/objects/FS/flow-ortho.c b/objects/FS/flow-ortho.c
index 97595dfac..e8bf149df 100644
--- a/objects/FS/flow-ortho.c
+++ b/objects/FS/flow-ortho.c
@@ -29,7 +29,6 @@
#include "intl.h"
#include "object.h"
-#include "objchange.h"
#include "connection.h"
#include "diarenderer.h"
#include "handle.h"
@@ -39,6 +38,7 @@
#include "orth_conn.h"
#include "element.h"
#include "properties.h"
+#include "dia-object-change-legacy.h"
#include "pixmaps/orthflow.xpm"
@@ -88,11 +88,14 @@ Color orthflow_color_signal = { 0.0f, 0.0f, 1.0f, 1.0f };
#define ORTHFLOW_ARROWWIDTH 0.5
#define HANDLE_MOVE_TEXT (HANDLE_CUSTOM2)
-static ObjectChange* orthflow_move_handle(Orthflow *orthflow, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange* orthflow_move(Orthflow *orthflow, Point *to);
+static DiaObjectChange *orthflow_move_handle (Orthflow *orthflow,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *orthflow_move (Orthflow *orthflow,
+ Point *to);
static void orthflow_select(Orthflow *orthflow, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void orthflow_draw(Orthflow *orthflow, DiaRenderer *renderer);
@@ -210,7 +213,7 @@ orthflow_set_props(Orthflow *orthflow, GPtrArray *props)
static void
-orthflow_change_apply_revert(ObjectChange* objchg, DiaObject* obj)
+orthflow_change_apply_revert (ObjectChange* objchg, DiaObject* obj)
{
struct _OrthflowChange* change = (struct _OrthflowChange*) objchg ;
Orthflow* oflow = (Orthflow*) obj ;
@@ -240,40 +243,44 @@ orthflow_change_free(ObjectChange* objchg)
}
}
-static ObjectChange*
-orthflow_create_change( enum OrthflowChangeType change_type,
- OrthflowType type, Text* text )
+
+static DiaObjectChange*
+orthflow_create_change (enum OrthflowChangeType change_type,
+ OrthflowType type,
+ Text *text )
{
- struct _OrthflowChange* change ;
- change = g_new0( struct _OrthflowChange, 1 ) ;
- change->obj_change.apply = (ObjectChangeApplyFunc) orthflow_change_apply_revert ;
- change->obj_change.revert = (ObjectChangeRevertFunc) orthflow_change_apply_revert ;
- change->obj_change.free = (ObjectChangeFreeFunc) orthflow_change_free ;
- change->change_type = change_type ;
-
- change->type = type ;
- if ( text ) {
- change->text = text_get_string_copy( text ) ;
+ struct _OrthflowChange *change;
+ change = g_new0 (struct _OrthflowChange, 1);
+ change->obj_change.apply = (ObjectChangeApplyFunc) orthflow_change_apply_revert;
+ change->obj_change.revert = (ObjectChangeRevertFunc) orthflow_change_apply_revert;
+ change->obj_change.free = (ObjectChangeFreeFunc) orthflow_change_free;
+ change->change_type = change_type;
+
+ change->type = type;
+ if (text) {
+ change->text = text_get_string_copy (text);
}
- return (ObjectChange*) change ;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
-static real
+
+static double
orthflow_distance_from(Orthflow *orthflow, Point *point)
{
- real linedist;
- real textdist;
+ double linedist;
+ double textdist;
- linedist = orthconn_distance_from( &orthflow->orth, point,
- orthflow->type == ORTHFLOW_MATERIAL ?
- ORTHFLOW_MATERIAL_WIDTH :
- ORTHFLOW_WIDTH ) ;
- textdist = text_distance_from( orthflow->text, point ) ;
+ linedist = orthconn_distance_from (&orthflow->orth, point,
+ orthflow->type == ORTHFLOW_MATERIAL ?
+ ORTHFLOW_MATERIAL_WIDTH :
+ ORTHFLOW_WIDTH);
+ textdist = text_distance_from (orthflow->text, point);
- return linedist > textdist ? textdist : linedist ;
+ return linedist > textdist ? textdist : linedist;
}
+
static void
orthflow_select(Orthflow *orthflow, Point *clicked_point,
DiaRenderer *interactive_renderer)
@@ -284,12 +291,17 @@ orthflow_select(Orthflow *orthflow, Point *clicked_point,
orthconn_update_data(&orthflow->orth);
}
-static ObjectChange*
-orthflow_move_handle(Orthflow *orthflow, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+orthflow_move_handle (Orthflow *orthflow,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- ObjectChange *change = NULL;
+ DiaObjectChange *change = NULL;
+
assert(orthflow!=NULL);
assert(handle!=NULL);
assert(to!=NULL);
@@ -315,25 +327,27 @@ orthflow_move_handle(Orthflow *orthflow, Handle *handle,
return change;
}
-static ObjectChange*
-orthflow_move(Orthflow *orthflow, Point *to)
+
+static DiaObjectChange *
+orthflow_move (Orthflow *orthflow, Point *to)
{
- ObjectChange *change;
+ DiaObjectChange *change;
Point *points = &orthflow->orth.points[0];
Point delta;
delta = *to;
- point_sub(&delta, &points[0]);
- point_add(&orthflow->textpos, &delta);
+ point_sub (&delta, &points[0]);
+ point_add (&orthflow->textpos, &delta);
- change = orthconn_move( &orthflow->orth, to ) ;
+ change = orthconn_move (&orthflow->orth, to);
- orthflow_update_data(orthflow);
+ orthflow_update_data (orthflow);
return change;
}
+
static void
orthflow_draw (Orthflow *orthflow, DiaRenderer *renderer)
{
@@ -600,11 +614,13 @@ orthflow_load(ObjectNode obj_node, int version, DiaContext *ctx)
return &orthflow->orth.object;
}
-static ObjectChange *
+
+static DiaObjectChange *
orthflow_set_type_callback (DiaObject* obj, Point* clicked, gpointer data)
{
- ObjectChange* change ;
- change = orthflow_create_change( FLOW_TYPE, ((Orthflow*)obj)->type, 0 ) ;
+ DiaObjectChange *change;
+
+ change = orthflow_create_change (FLOW_TYPE, ((Orthflow*)obj)->type, 0);
((Orthflow*)obj)->type = GPOINTER_TO_INT (data);
orthflow_update_data((Orthflow*)obj);
@@ -612,15 +628,18 @@ orthflow_set_type_callback (DiaObject* obj, Point* clicked, gpointer data)
return change;
}
-static ObjectChange *
+
+static DiaObjectChange *
orthflow_segment_callback (DiaObject* obj, Point* clicked, gpointer data)
{
- if ( GPOINTER_TO_INT (data) )
- return orthconn_add_segment( (OrthConn*)obj, clicked ) ;
+ if (GPOINTER_TO_INT (data)) {
+ return orthconn_add_segment ((OrthConn*) obj, clicked);
+ }
- return orthconn_delete_segment( (OrthConn*)obj, clicked ) ;
+ return orthconn_delete_segment ((OrthConn*) obj, clicked);
}
+
static DiaMenuItem orthflow_menu_items[] = {
{ N_("Energy"), orthflow_set_type_callback, (void*)ORTHFLOW_ENERGY, 1 },
{ N_("Material"), orthflow_set_type_callback, (void*)ORTHFLOW_MATERIAL, 1 },
diff --git a/objects/FS/flow.c b/objects/FS/flow.c
index 8deefbc29..9c23b4494 100644
--- a/objects/FS/flow.c
+++ b/objects/FS/flow.c
@@ -35,6 +35,7 @@
#include "text.h"
#include "connection.h"
#include "properties.h"
+#include "dia-object-change-legacy.h"
#include "pixmaps/flow.xpm"
@@ -67,11 +68,14 @@ struct _Flow {
#define FLOW_ARROWWIDTH 0.5
#define HANDLE_MOVE_TEXT (HANDLE_CUSTOM1)
-static ObjectChange* flow_move_handle(Flow *flow, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange* flow_move(Flow *flow, Point *to);
+static DiaObjectChange *flow_move_handle (Flow *flow,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *flow_move (Flow *flow,
+ Point *to);
static void flow_select(Flow *flow, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void flow_draw(Flow *flow, DiaRenderer *renderer);
@@ -212,10 +216,14 @@ flow_select(Flow *flow, Point *clicked_point,
connection_update_handles(&flow->connection);
}
-static ObjectChange*
-flow_move_handle(Flow *flow, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+flow_move_handle (Flow *flow,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
Point p1, p2;
Point *endpoints;
@@ -280,8 +288,9 @@ flow_move_handle(Flow *flow, Handle *handle,
return NULL;
}
-static ObjectChange*
-flow_move(Flow *flow, Point *to)
+
+static DiaObjectChange *
+flow_move (Flow *flow, Point *to)
{
Point start_to_end;
Point *endpoints = &flow->connection.endpoints[0];
@@ -596,8 +605,9 @@ type_change_revert(struct TypeChange *change, DiaObject *obj)
flow_update_data(flow);
}
-static ObjectChange *
-type_create_change(Flow *flow, int type)
+
+static DiaObjectChange *
+type_create_change (Flow *flow, int type)
{
struct TypeChange *change;
@@ -610,21 +620,22 @@ type_create_change(Flow *flow, int type)
change->old_type = flow->type;
change->new_type = type;
- return (ObjectChange *)change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
-static ObjectChange *
+static DiaObjectChange *
flow_set_type_callback (DiaObject* obj, Point* clicked, gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
- change = type_create_change((Flow *)obj, GPOINTER_TO_INT(data));
- change->apply(change, obj);
+ change = type_create_change ((Flow *) obj, GPOINTER_TO_INT (data));
+ dia_object_change_apply (change, obj);
return change;
}
+
static DiaMenuItem flow_menu_items[] = {
{ N_("Energy"), flow_set_type_callback, (void*)FLOW_ENERGY, 1 },
{ N_("Material"), flow_set_type_callback, (void*)FLOW_MATERIAL, 1 },
diff --git a/objects/FS/function.c b/objects/FS/function.c
index cc021b6a2..501479136 100644
--- a/objects/FS/function.c
+++ b/objects/FS/function.c
@@ -33,6 +33,7 @@
#include "attributes.h"
#include "text.h"
#include "properties.h"
+#include "dia-object-change-legacy.h"
#include "pixmaps/function.xpm"
@@ -74,14 +75,19 @@ struct _FunctionChange {
#define FUNCTION_MARGIN_Y 2.4
#define FUNCTION_DASHLENGTH_SCALE 2.0
-static real function_distance_from(Function *pkg, Point *point);
-static void function_select(Function *pkg, Point *clicked_point,
- DiaRenderer *interactive_renderer);
-static ObjectChange* function_move_handle(Function *pkg, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange* function_move(Function *pkg, Point *to);
+static double function_distance_from (Function *pkg,
+ Point *point);
+static void function_select (Function *pkg,
+ Point *clicked_point,
+ DiaRenderer *interactive_renderer);
+static DiaObjectChange* function_move_handle (Function *pkg,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange* function_move (Function *pkg,
+ Point *to);
static void function_draw(Function *pkg, DiaRenderer *renderer);
static DiaObject *function_create(Point *startpoint,
void *user_data,
@@ -217,8 +223,9 @@ function_change_free( ObjectChange* objchg )
}
}
-static ObjectChange*
-function_create_change( Function* fcn, enum FuncChangeType change_type )
+
+static DiaObjectChange *
+function_create_change (Function *fcn, enum FuncChangeType change_type)
{
FunctionChange* change = g_new0(FunctionChange,1) ;
change->obj_change.apply = (ObjectChangeApplyFunc) function_change_apply_revert ;
@@ -226,24 +233,31 @@ function_create_change( Function* fcn, enum FuncChangeType change_type )
change->obj_change.free = (ObjectChangeFreeFunc) function_change_free ;
change->change_type = change_type ;
- if ( change_type == WISH_FUNC || change_type == ALL )
- change->is_wish = fcn->is_wish ;
+ if (change_type == WISH_FUNC || change_type == ALL) {
+ change->is_wish = fcn->is_wish;
+ }
- if ( change_type == USER_FUNC || change_type == ALL )
- change->is_user = fcn->is_user ;
+ if (change_type == USER_FUNC || change_type == ALL) {
+ change->is_user = fcn->is_user;
+ }
+
+ if (change_type == TEXT_EDIT || change_type == ALL) {
+ change->text = text_get_string_copy (fcn->text);
+ }
- if ( change_type == TEXT_EDIT || change_type == ALL )
- change->text = text_get_string_copy( fcn->text ) ;
- return (ObjectChange*) change ;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
-static real
+
+static double
function_distance_from(Function *pkg, Point *point)
{
DiaObject *obj = &pkg->element.object;
- return distance_rectangle_point(&obj->bounding_box, point);
+
+ return distance_rectangle_point (&obj->bounding_box, point);
}
+
static void
function_select(Function *pkg, Point *clicked_point,
DiaRenderer *interactive_renderer)
@@ -253,10 +267,14 @@ function_select(Function *pkg, Point *clicked_point,
element_update_handles(&pkg->element);
}
-static ObjectChange*
-function_move_handle(Function *pkg, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+function_move_handle (Function *pkg,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
assert(pkg!=NULL);
assert(handle!=NULL);
@@ -267,15 +285,17 @@ function_move_handle(Function *pkg, Handle *handle,
return NULL;
}
-static ObjectChange*
-function_move(Function *pkg, Point *to)
+
+static DiaObjectChange*
+function_move (Function *pkg, Point *to)
{
pkg->element.corner = *to;
- function_update_data(pkg);
+ function_update_data (pkg);
return NULL;
}
+
static void
function_draw (Function *pkg, DiaRenderer *renderer)
{
@@ -587,57 +607,63 @@ function_load(ObjectNode obj_node, int version, DiaContext *ctx)
return &pkg->element.object;
}
-static ObjectChange *
-function_insert_word( Function* func, const char* word, gboolean newline )
+
+static DiaObjectChange *
+function_insert_word (Function *func, const char *word, gboolean newline)
{
- ObjectChange* change = function_create_change( func, TEXT_EDIT ) ;
- char* old_chars = text_get_string_copy( func->text ) ;
- char* new_chars = g_malloc( strlen( old_chars) + strlen( word )
- + ( newline ? 2 : 1) ) ;
- sprintf( new_chars, newline ? "%s\n%s" : "%s%s", old_chars, word ) ;
- text_set_string( func->text, new_chars ) ;
- g_clear_pointer (&new_chars, g_free) ;
- g_clear_pointer (&old_chars, g_free) ;
- function_update_data( func ) ;
- text_set_cursor_at_end( func->text ) ;
+ DiaObjectChange* change = function_create_change (func, TEXT_EDIT);
+ char *old_chars = text_get_string_copy (func->text);
+ char *new_chars = g_malloc (strlen (old_chars) + strlen (word)
+ + (newline ? 2 : 1));
+ sprintf (new_chars, newline ? "%s\n%s" : "%s%s", old_chars, word);
+ text_set_string (func->text, new_chars);
+ g_clear_pointer (&new_chars, g_free);
+ g_clear_pointer (&old_chars, g_free);
+ function_update_data (func);
+ text_set_cursor_at_end (func->text);
return change;
}
-static ObjectChange *
-function_insert_verb( DiaObject* obj, Point* clicked, gpointer data)
+
+static DiaObjectChange *
+function_insert_verb (DiaObject *obj, Point *clicked, gpointer data)
{
- return function_insert_word( (Function*)obj, (const char*) data, FALSE ) ;
+ return function_insert_word ((Function*) obj, (const char*) data, FALSE);
}
-static ObjectChange *
-function_insert_noun( DiaObject* obj, Point* clicked, gpointer data)
+
+static DiaObjectChange *
+function_insert_noun (DiaObject *obj, Point *clicked, gpointer data)
{
- return function_insert_word( (Function*)obj, (const char*) data, TRUE ) ;
+ return function_insert_word ((Function*)obj, (const char*) data, TRUE);
}
-static ObjectChange *
-function_toggle_user_function( DiaObject* obj, Point* clicked, gpointer data)
+
+static DiaObjectChange *
+function_toggle_user_function (DiaObject *obj, Point *clicked, gpointer data)
{
- Function* func = (Function*)obj ;
- ObjectChange* change = function_create_change( func, USER_FUNC ) ;
- func->is_user = !func->is_user ;
- function_update_data( func ) ;
+ Function *func = (Function *) obj;
+ DiaObjectChange *change = function_create_change (func, USER_FUNC);
+ func->is_user = !func->is_user;
+ function_update_data (func);
return change;
}
-static ObjectChange *
-function_toggle_wish_function( DiaObject* obj, Point* clicked, gpointer data)
+
+static DiaObjectChange *
+function_toggle_wish_function (DiaObject *obj, Point *clicked, gpointer data)
{
- Function* func = (Function*)obj ;
- ObjectChange* change = function_create_change( func, WISH_FUNC ) ;
- func->is_wish = !func->is_wish ;
- function_update_data( func ) ;
+ Function* func = (Function*) obj;
+ DiaObjectChange* change = function_create_change (func, WISH_FUNC);
+ func->is_wish = !func->is_wish;
+ function_update_data (func);
return change;
}
+
struct _IndentedMenus {
char* name ;
int depth ;
diff --git a/objects/GRAFCET/action.c b/objects/GRAFCET/action.c
index a33e362f5..6f074ad64 100644
--- a/objects/GRAFCET/action.c
+++ b/objects/GRAFCET/action.c
@@ -62,10 +62,10 @@ typedef struct _Action {
ConnPointLine *cps; /* aaahrg ! again one ! */
} Action;
-static ObjectChange* action_move_handle(Action *action, Handle *handle,
+static DiaObjectChange* action_move_handle(Action *action, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* action_move(Action *action, Point *to);
+static DiaObjectChange* action_move(Action *action, Point *to);
static void action_select(Action *action, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void action_draw(Action *action, DiaRenderer *renderer);
@@ -191,7 +191,7 @@ action_select(Action *action, Point *clicked_point,
text_grab_focus(action->text, &action->connection.object);
}
-static ObjectChange*
+static DiaObjectChange*
action_move_handle(Action *action, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -219,7 +219,7 @@ action_move_handle(Action *action, Handle *handle,
}
-static ObjectChange*
+static DiaObjectChange*
action_move(Action *action, Point *to)
{
Point start_to_end;
diff --git a/objects/GRAFCET/condition.c b/objects/GRAFCET/condition.c
index 424e0ed10..d001041ec 100644
--- a/objects/GRAFCET/condition.c
+++ b/objects/GRAFCET/condition.c
@@ -64,13 +64,13 @@ typedef struct _Condition {
} Condition;
-static ObjectChange *condition_move_handle (Condition *condition,
+static DiaObjectChange *condition_move_handle (Condition *condition,
Handle *handle,
Point *to,
ConnectionPoint *cp,
HandleMoveReason reason,
ModifierKeys modifiers);
-static ObjectChange *condition_move (Condition *condition,
+static DiaObjectChange *condition_move (Condition *condition,
Point *to);
static void condition_select (Condition *condition,
Point *clicked_point,
@@ -213,7 +213,7 @@ condition_select (Condition *condition,
}
-static ObjectChange*
+static DiaObjectChange *
condition_move_handle (Condition *condition,
Handle *handle,
Point *to,
@@ -302,8 +302,8 @@ condition_move_handle (Condition *condition,
}
-static ObjectChange*
-condition_move(Condition *condition, Point *to)
+static DiaObjectChange *
+condition_move (Condition *condition, Point *to)
{
Point start_to_end;
Point *endpoints = &condition->connection.endpoints[0];
diff --git a/objects/GRAFCET/step.c b/objects/GRAFCET/step.c
index d3ada10ef..756c99295 100644
--- a/objects/GRAFCET/step.c
+++ b/objects/GRAFCET/step.c
@@ -82,18 +82,18 @@ typedef struct _Step {
} Step;
-static real step_distance_from (Step *step,
+static double step_distance_from (Step *step,
Point *point);
static void step_select (Step *step,
Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange *step_move_handle (Step *step,
+static DiaObjectChange *step_move_handle (Step *step,
Handle *handle,
Point *to,
ConnectionPoint *cp,
HandleMoveReason reason,
ModifierKeys modifiers);
-static ObjectChange *step_move (Step *step,
+static DiaObjectChange *step_move (Step *step,
Point *to);
static void step_draw (Step *step,
DiaRenderer *renderer);
@@ -314,7 +314,7 @@ step_select (Step *step,
}
-static ObjectChange*
+static DiaObjectChange *
step_move_handle (Step *step,
Handle *handle,
Point *to,
@@ -371,7 +371,7 @@ step_move_handle (Step *step,
}
-static ObjectChange*
+static DiaObjectChange *
step_move (Step *step, Point *to)
{
Point delta = *to;
diff --git a/objects/GRAFCET/transition.c b/objects/GRAFCET/transition.c
index de0f28935..3303636c9 100644
--- a/objects/GRAFCET/transition.c
+++ b/objects/GRAFCET/transition.c
@@ -74,13 +74,13 @@ typedef struct _Transition {
} Transition;
-static ObjectChange *transition_move_handle (Transition *transition,
+static DiaObjectChange *transition_move_handle (Transition *transition,
Handle *handle,
Point *to,
ConnectionPoint *cp,
HandleMoveReason reason,
ModifierKeys modifiers);
-static ObjectChange *transition_move (Transition *transition,
+static DiaObjectChange *transition_move (Transition *transition,
Point *to);
static void transition_select (Transition *transition,
Point *clicked_point,
@@ -314,7 +314,7 @@ transition_select (Transition *transition,
}
-static ObjectChange*
+static DiaObjectChange *
transition_move_handle (Transition *transition,
Handle *handle,
Point *to,
@@ -366,7 +366,7 @@ transition_move_handle (Transition *transition,
}
-static ObjectChange*
+static DiaObjectChange *
transition_move (Transition *transition, Point *to)
{
Point delta = *to;
diff --git a/objects/GRAFCET/vector.c b/objects/GRAFCET/vector.c
index 2e83b71f0..c3c57fb02 100644
--- a/objects/GRAFCET/vector.c
+++ b/objects/GRAFCET/vector.c
@@ -50,10 +50,15 @@ typedef struct _Arc {
gboolean uparrow;
} Arc;
-static ObjectChange* arc_move_handle(Arc *arc, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* arc_move(Arc *arc, Point *to);
+
+static DiaObjectChange *arc_move_handle (Arc *arc,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *arc_move (Arc *arc,
+ Point *to);
static void arc_select(Arc *arc, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void arc_draw(Arc *arc, DiaRenderer *renderer);
@@ -169,30 +174,36 @@ arc_select(Arc *arc, Point *clicked_point,
orthconn_update_data(&arc->orth);
}
-static ObjectChange*
-arc_move_handle(Arc *arc, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+arc_move_handle (Arc *arc,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- ObjectChange *change;
- change = orthconn_move_handle(&arc->orth, handle, to, cp, reason, modifiers);
- arc_update_data(arc);
+ DiaObjectChange *change;
+
+ change = orthconn_move_handle (&arc->orth, handle, to, cp, reason, modifiers);
+ arc_update_data (arc);
return change;
}
-static ObjectChange*
-arc_move(Arc *arc, Point *to)
+static DiaObjectChange *
+arc_move (Arc *arc, Point *to)
{
- ObjectChange *change;
+ DiaObjectChange *change;
- change = orthconn_move(&arc->orth, to);
- arc_update_data(arc);
+ change = orthconn_move (&arc->orth, to);
+ arc_update_data (arc);
return change;
}
+
static void
arc_draw (Arc *arc, DiaRenderer *renderer)
{
@@ -288,30 +299,37 @@ arc_update_data(Arc *arc)
}
-static ObjectChange *
-arc_add_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+static DiaObjectChange *
+arc_add_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
- change = orthconn_add_segment((OrthConn *)obj, clicked);
- arc_update_data((Arc *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_add_segment ((OrthConn *) obj, clicked);
+ arc_update_data ((Arc *) obj);
+
return change;
}
-static ObjectChange *
-arc_delete_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+arc_delete_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
- change = orthconn_delete_segment((OrthConn *)obj, clicked);
- arc_update_data((Arc *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_delete_segment ((OrthConn *) obj, clicked);
+ arc_update_data ((Arc *) obj);
+
return change;
}
+
static DiaMenuItem object_menu_items[] = {
{ N_("Add segment"), arc_add_segment_callback, NULL, 1 },
{ N_("Delete segment"), arc_delete_segment_callback, NULL, 1 },
ORTHCONN_COMMON_MENUS,
};
+
static DiaMenu object_menu = {
"Arc",
sizeof(object_menu_items)/sizeof(DiaMenuItem),
diff --git a/objects/GRAFCET/vergent.c b/objects/GRAFCET/vergent.c
index e85c62eb3..2b17eab58 100644
--- a/objects/GRAFCET/vergent.c
+++ b/objects/GRAFCET/vergent.c
@@ -34,6 +34,7 @@
#include "properties.h"
#include "geometry.h"
#include "connpoint_line.h"
+#include "dia-object-change-legacy.h"
#include "grafcet.h"
@@ -54,13 +55,13 @@ typedef struct _Vergent {
} Vergent;
-static ObjectChange *vergent_move_handle (Vergent *vergent,
+static DiaObjectChange *vergent_move_handle (Vergent *vergent,
Handle *handle,
Point *to,
ConnectionPoint *cp,
HandleMoveReason reason,
ModifierKeys modifiers);
-static ObjectChange *vergent_move (Vergent *vergent,
+static DiaObjectChange *vergent_move (Vergent *vergent,
Point *to);
static void vergent_select (Vergent *vergent,
Point *clicked_point,
@@ -215,7 +216,7 @@ vergent_select (Vergent *vergent,
}
-static ObjectChange*
+static DiaObjectChange *
vergent_move_handle (Vergent *vergent,
Handle *handle,
Point *to,
@@ -251,7 +252,7 @@ vergent_move_handle (Vergent *vergent,
}
-static ObjectChange*
+static DiaObjectChange *
vergent_move (Vergent *vergent, Point *to)
{
Point start_to_end;
@@ -381,42 +382,35 @@ vergent_update_data (Vergent *vergent)
typedef struct {
ObjectChange obj_change;
- ObjectChange *north,*south;
+ DiaObjectChange *north, *south;
} VergentChange;
static void
vergent_change_apply (VergentChange *change, DiaObject *obj)
{
- change->north->apply (change->north, obj);
- change->south->apply (change->south, obj);
+ dia_object_change_apply (change->north, obj);
+ dia_object_change_apply (change->south, obj);
}
static void
vergent_change_revert (VergentChange *change, DiaObject *obj)
{
- change->north->revert (change->north,obj);
- change->south->revert (change->south,obj);
+ dia_object_change_revert (change->north,obj);
+ dia_object_change_revert (change->south,obj);
}
static void
vergent_change_free (VergentChange *change)
{
- if (change->north->free) {
- change->north->free (change->north);
- }
- g_clear_pointer (&change->north, g_free);
-
- if (change->south->free) {
- change->south->free (change->south);
- }
- g_clear_pointer (&change->south, g_free);
+ g_clear_pointer (&change->north, dia_object_change_unref);
+ g_clear_pointer (&change->south, dia_object_change_unref);
}
-static ObjectChange *
+static DiaObjectChange *
vergent_create_change (Vergent *vergent, int add, Point *clicked)
{
VergentChange *vc;
@@ -436,18 +430,18 @@ vergent_create_change (Vergent *vergent, int add, Point *clicked)
vergent_update_data (vergent);
- return (ObjectChange *) vc;
+ return dia_object_change_legacy_new ((ObjectChange *) vc);
}
-static ObjectChange *
+static DiaObjectChange *
vergent_add_cp_callback (DiaObject *obj, Point *clicked, gpointer data)
{
return vergent_create_change ((Vergent *) obj, 1, clicked);
}
-static ObjectChange *
+static DiaObjectChange *
vergent_delete_cp_callback (DiaObject *obj, Point *clicked, gpointer data)
{
return vergent_create_change ((Vergent *) obj, 0, clicked);
diff --git a/objects/Istar/actor.c b/objects/Istar/actor.c
index b3ca944c8..47d9f5724 100644
--- a/objects/Istar/actor.c
+++ b/objects/Istar/actor.c
@@ -81,10 +81,10 @@ struct _Actor {
static real actor_distance_from(Actor *actor, Point *point);
static void actor_select(Actor *actor, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* actor_move_handle(Actor *actor, Handle *handle,
+static DiaObjectChange* actor_move_handle(Actor *actor, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* actor_move(Actor *actor, Point *to);
+static DiaObjectChange* actor_move(Actor *actor, Point *to);
static void actor_draw(Actor *actor, DiaRenderer *renderer);
static void actor_update_data(Actor *actor, AnchorShape h,AnchorShape v);
static DiaObject *actor_create(Point *startpoint,
@@ -206,7 +206,7 @@ actor_select (Actor *actor,
}
-static ObjectChange*
+static DiaObjectChange*
actor_move_handle (Actor *actor,
Handle *handle,
Point *to,
@@ -273,7 +273,7 @@ actor_move_handle (Actor *actor,
}
-static ObjectChange*
+static DiaObjectChange*
actor_move (Actor *actor, Point *to)
{
actor->element.corner = *to;
diff --git a/objects/Istar/goal.c b/objects/Istar/goal.c
index 21530c032..1cce48b12 100644
--- a/objects/Istar/goal.c
+++ b/objects/Istar/goal.c
@@ -88,10 +88,10 @@ typedef struct _Goal {
static real goal_distance_from(Goal *goal, Point *point);
static void goal_select(Goal *goal, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* goal_move_handle(Goal *goal, Handle *handle,
+static DiaObjectChange* goal_move_handle(Goal *goal, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* goal_move(Goal *goal, Point *to);
+static DiaObjectChange* goal_move(Goal *goal, Point *to);
static void goal_draw(Goal *goal, DiaRenderer *renderer);
static void goal_update_data(Goal *goal, AnchorShape horix, AnchorShape vert);
static DiaObject *goal_create(Point *startpoint,
@@ -212,7 +212,7 @@ goal_select(Goal *goal, Point *clicked_point,
}
-static ObjectChange*
+static DiaObjectChange*
goal_move_handle (Goal *goal,
Handle *handle,
Point *to,
@@ -278,7 +278,7 @@ goal_move_handle (Goal *goal,
}
-static ObjectChange*
+static DiaObjectChange*
goal_move (Goal *goal, Point *to)
{
goal->element.corner = *to;
diff --git a/objects/Istar/link.c b/objects/Istar/link.c
index 96868d648..36fbc0ea8 100644
--- a/objects/Istar/link.c
+++ b/objects/Istar/link.c
@@ -81,10 +81,10 @@ struct _Link {
static DiaFont *link_font = NULL;
-static ObjectChange* link_move_handle(Link *link, Handle *handle,
+static DiaObjectChange* link_move_handle(Link *link, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* link_move(Link *link, Point *to);
+static DiaObjectChange* link_move(Link *link, Point *to);
static void link_select(Link *link, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void link_draw(Link *link, DiaRenderer *renderer);
@@ -208,7 +208,7 @@ link_select(Link *link, Point *clicked_point,
connection_update_handles(&link->connection);
}
-static ObjectChange*
+static DiaObjectChange*
link_move_handle(Link *link, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -237,7 +237,7 @@ link_move_handle(Link *link, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
link_move(Link *link, Point *to)
{
Point start_to_end;
diff --git a/objects/Istar/other.c b/objects/Istar/other.c
index 29ce602aa..0fac9f982 100644
--- a/objects/Istar/other.c
+++ b/objects/Istar/other.c
@@ -85,10 +85,14 @@ typedef struct _Other {
static real other_distance_from(Other *other, Point *point);
static void other_select(Other *other, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* other_move_handle(Other *other, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* other_move(Other *other, Point *to);
+static DiaObjectChange *other_move_handle (Other *other,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *other_move (Other *other,
+ Point *to);
static void other_draw(Other *other, DiaRenderer *renderer);
static void other_update_data(Other *other, AnchorShape horix, AnchorShape vert);
static DiaObject *other_create(Point *startpoint,
@@ -216,7 +220,7 @@ other_select (Other *other,
}
-static ObjectChange*
+static DiaObjectChange *
other_move_handle (Other *other,
Handle *handle,
Point *to,
@@ -283,7 +287,7 @@ other_move_handle (Other *other,
}
-static ObjectChange*
+static DiaObjectChange *
other_move (Other *other, Point *to)
{
other->element.corner = *to;
@@ -485,43 +489,52 @@ other_get_clicked_border (Other *other, Point *clicked)
return cpl;
}
-inline static ObjectChange *
-other_create_change(Other *other, ObjectChange *inner, ConnPointLine *cpl) {
- return (ObjectChange *)inner;
+
+inline static DiaObjectChange *
+other_create_change (Other *other, DiaObjectChange *inner, ConnPointLine *cpl)
+{
+ return (DiaObjectChange *) inner;
}
-static ObjectChange *
-other_add_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+other_add_connpoint_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
ConnPointLine *cpl;
Other *other = (Other *)obj;
- cpl = other_get_clicked_border(other,clicked);
- change = connpointline_add_point(cpl, clicked);
- other_update_data((Other *)obj,ANCHOR_MIDDLE, ANCHOR_MIDDLE);
- return other_create_change(other,change,cpl);
+ cpl = other_get_clicked_border (other,clicked);
+ change = connpointline_add_point (cpl, clicked);
+ other_update_data ((Other *) obj, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
+
+ return other_create_change (other, change, cpl);
}
-static ObjectChange *
-other_remove_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+other_remove_connpoint_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
ConnPointLine *cpl;
- Other *other = (Other *)obj;
+ Other *other = (Other *) obj;
- cpl = other_get_clicked_border(other,clicked);
- change = connpointline_remove_point(cpl, clicked);
- other_update_data((Other *)obj,ANCHOR_MIDDLE, ANCHOR_MIDDLE);
- return other_create_change(other,change,cpl);
+ cpl = other_get_clicked_border (other, clicked);
+ change = connpointline_remove_point (cpl, clicked);
+ other_update_data ((Other *) obj, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
+ return other_create_change (other, change, cpl);
}
+
static DiaMenuItem object_menu_items[] = {
{ N_("Add connection point"), other_add_connpoint_callback, NULL, 1 },
{ N_("Delete connection point"), other_remove_connpoint_callback,
NULL, 1 },
};
+
static DiaMenu object_menu = {
N_("i* other"),
sizeof(object_menu_items)/sizeof(DiaMenuItem),
@@ -529,8 +542,9 @@ static DiaMenu object_menu = {
NULL
};
+
static DiaMenu *
-other_get_object_menu(Other *other, Point *clickedpoint)
+other_get_object_menu (Other *other, Point *clickedpoint)
{
ConnPointLine *cpl;
diff --git a/objects/Jackson/domain.c b/objects/Jackson/domain.c
index b1e1fdac9..b2022032f 100644
--- a/objects/Jackson/domain.c
+++ b/objects/Jackson/domain.c
@@ -112,10 +112,14 @@ typedef struct _Box {
static real jackson_box_distance_from(Box *box, Point *point);
static void jackson_box_select(Box *box, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* jackson_box_move_handle(Box *box, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* jackson_box_move(Box *box, Point *to);
+static DiaObjectChange *jackson_box_move_handle (Box *box,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *jackson_box_move (Box *box,
+ Point *to);
static void jackson_box_draw(Box *box, DiaRenderer *renderer);
static void jackson_box_update_data(Box *box, AnchorShape horix, AnchorShape vert);
static DiaObject *jackson_box_create(Point *startpoint,
@@ -276,7 +280,7 @@ jackson_box_select (Box *box,
}
-static ObjectChange*
+static DiaObjectChange *
jackson_box_move_handle (Box *box,
Handle *handle,
Point *to,
@@ -342,7 +346,7 @@ jackson_box_move_handle (Box *box,
}
-static ObjectChange*
+static DiaObjectChange *
jackson_box_move (Box *box, Point *to)
{
box->element.corner = *to;
@@ -567,19 +571,21 @@ jackson_box_get_clicked_border (Box *box, Point *clicked)
}
-inline static ObjectChange *
-jackson_box_create_change (Box *box, ObjectChange *inner, ConnPointLine *cpl)
+inline static DiaObjectChange *
+jackson_box_create_change (Box *box,
+ DiaObjectChange *inner,
+ ConnPointLine *cpl)
{
- return (ObjectChange *) inner;
+ return (DiaObjectChange *) inner;
}
-static ObjectChange *
+static DiaObjectChange *
jackson_box_add_connpoint_callback (DiaObject *obj,
Point *clicked,
gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
ConnPointLine *cpl;
Box *box = (Box *)obj;
@@ -591,12 +597,12 @@ jackson_box_add_connpoint_callback (DiaObject *obj,
}
-static ObjectChange *
+static DiaObjectChange *
jackson_box_remove_connpoint_callback (DiaObject *obj,
Point *clicked,
gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
ConnPointLine *cpl;
Box *box = (Box *)obj;
diff --git a/objects/Jackson/phenomenon.c b/objects/Jackson/phenomenon.c
index 942fbdf11..0bf609d0a 100644
--- a/objects/Jackson/phenomenon.c
+++ b/objects/Jackson/phenomenon.c
@@ -74,10 +74,10 @@ struct _Message {
static DiaFont *message_font = NULL;
-static ObjectChange* message_move_handle(Message *message, Handle *handle,
+static DiaObjectChange* message_move_handle(Message *message, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* message_move(Message *message, Point *to);
+static DiaObjectChange* message_move(Message *message, Point *to);
static void message_select(Message *message, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void message_draw(Message *message, DiaRenderer *renderer);
@@ -200,7 +200,7 @@ message_select(Message *message, Point *clicked_point,
connection_update_handles(&message->connection);
}
-static ObjectChange*
+static DiaObjectChange*
message_move_handle(Message *message, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -230,7 +230,7 @@ message_move_handle(Message *message, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
message_move(Message *message, Point *to)
{
Point start_to_end;
diff --git a/objects/Jackson/requirement.c b/objects/Jackson/requirement.c
index 3d31321c0..0d975b6d7 100644
--- a/objects/Jackson/requirement.c
+++ b/objects/Jackson/requirement.c
@@ -69,10 +69,10 @@ struct _Requirement {
static real req_distance_from(Requirement *req, Point *point);
static void req_select(Requirement *req, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* req_move_handle(Requirement *req, Handle *handle,
+static DiaObjectChange* req_move_handle(Requirement *req, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* req_move(Requirement *req, Point *to);
+static DiaObjectChange* req_move(Requirement *req, Point *to);
static void req_draw(Requirement *req, DiaRenderer *renderer);
static DiaObject *req_create(Point *startpoint,
void *user_data,
@@ -184,7 +184,7 @@ req_select(Requirement *req, Point *clicked_point,
element_update_handles(&req->element);
}
-static ObjectChange*
+static DiaObjectChange*
req_move_handle(Requirement *req, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -197,7 +197,7 @@ req_move_handle(Requirement *req, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
req_move(Requirement *req, Point *to)
{
real h;
diff --git a/objects/KAOS/goal.c b/objects/KAOS/goal.c
index acedfb2e1..f86ebcef7 100644
--- a/objects/KAOS/goal.c
+++ b/objects/KAOS/goal.c
@@ -96,13 +96,19 @@ typedef struct _Goal {
} Goal;
-static real goal_distance_from(Goal *goal, Point *point);
-static void goal_select(Goal *goal, Point *clicked_point,
- DiaRenderer *interactive_renderer);
-static ObjectChange* goal_move_handle(Goal *goal, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* goal_move(Goal *goal, Point *to);
+static double goal_distance_from (Goal *goal,
+ Point *point);
+static void goal_select (Goal *goal,
+ Point *clicked_point,
+ DiaRenderer *interactive_renderer);
+static DiaObjectChange *goal_move_handle (Goal *goal,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *goal_move (Goal *goal,
+ Point *to);
static void goal_draw(Goal *goal, DiaRenderer *renderer);
static void goal_update_data(Goal *goal, AnchorShape horix, AnchorShape vert);
static DiaObject *goal_create(Point *startpoint,
@@ -244,7 +250,7 @@ goal_select (Goal *goal,
}
-static ObjectChange*
+static DiaObjectChange *
goal_move_handle (Goal *goal,
Handle *handle,
Point *to,
@@ -259,7 +265,11 @@ goal_move_handle (Goal *goal,
g_return_val_if_fail (to != NULL, NULL);
element_move_handle (&goal->element,
- handle->id, to, cp, reason, modifiers);
+ handle->id,
+ to,
+ cp,
+ reason,
+ modifiers);
switch (handle->id) {
case HANDLE_RESIZE_NW:
@@ -311,7 +321,7 @@ goal_move_handle (Goal *goal,
}
-static ObjectChange*
+static DiaObjectChange*
goal_move (Goal *goal, Point *to)
{
goal->element.corner = *to;
@@ -616,17 +626,17 @@ goal_get_clicked_border (Goal *goal, Point *clicked)
}
-inline static ObjectChange *
-goal_create_change (Goal *goal, ObjectChange *inner, ConnPointLine *cpl)
+inline static DiaObjectChange *
+goal_create_change (Goal *goal, DiaObjectChange *inner, ConnPointLine *cpl)
{
- return (ObjectChange *) inner;
+ return (DiaObjectChange *) inner;
}
-static ObjectChange *
-goal_add_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data)
+static DiaObjectChange *
+goal_add_connpoint_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
ConnPointLine *cpl;
Goal *goal = (Goal *)obj;
@@ -636,10 +646,11 @@ goal_add_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data)
return goal_create_change(goal,change,cpl);
}
-static ObjectChange *
-goal_remove_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+goal_remove_connpoint_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
ConnPointLine *cpl;
Goal *goal = (Goal *)obj;
diff --git a/objects/KAOS/metaandorrel.c b/objects/KAOS/metaandorrel.c
index 78475a899..af518d44c 100644
--- a/objects/KAOS/metaandorrel.c
+++ b/objects/KAOS/metaandorrel.c
@@ -85,10 +85,10 @@ struct _Maor {
static DiaFont *maor_font = NULL;
-static ObjectChange* maor_move_handle(Maor *maor, Handle *handle,
+static DiaObjectChange* maor_move_handle(Maor *maor, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* maor_move(Maor *maor, Point *to);
+static DiaObjectChange* maor_move(Maor *maor, Point *to);
static void maor_select(Maor *maor, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void maor_draw(Maor *maor, DiaRenderer *renderer);
@@ -220,7 +220,7 @@ maor_select(Maor *maor, Point *clicked_point,
connection_update_handles(&maor->connection);
}
-static ObjectChange*
+static DiaObjectChange*
maor_move_handle(Maor *maor, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -250,7 +250,7 @@ maor_move_handle(Maor *maor, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
maor_move(Maor *maor, Point *to)
{
Point start_to_end;
diff --git a/objects/KAOS/metabinrel.c b/objects/KAOS/metabinrel.c
index 0a1f5579e..d491555dd 100644
--- a/objects/KAOS/metabinrel.c
+++ b/objects/KAOS/metabinrel.c
@@ -93,10 +93,10 @@ static Color color_red = { 1.0f, 0.0f, 0.0f, 1.0f };
static DiaFont *mbr_font = NULL;
-static ObjectChange* mbr_move_handle(Mbr *mbr, Handle *handle,
+static DiaObjectChange* mbr_move_handle(Mbr *mbr, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* mbr_move(Mbr *mbr, Point *to);
+static DiaObjectChange* mbr_move(Mbr *mbr, Point *to);
static void mbr_select(Mbr *mbr, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void mbr_draw(Mbr *mbr, DiaRenderer *renderer);
@@ -219,7 +219,7 @@ mbr_select(Mbr *mbr, Point *clicked_point,
connection_update_handles(&mbr->connection);
}
-static ObjectChange*
+static DiaObjectChange*
mbr_move_handle(Mbr *mbr, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -248,7 +248,7 @@ mbr_move_handle(Mbr *mbr, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
mbr_move(Mbr *mbr, Point *to)
{
Point start_to_end;
diff --git a/objects/KAOS/other.c b/objects/KAOS/other.c
index 9ac428060..5f0983dbe 100644
--- a/objects/KAOS/other.c
+++ b/objects/KAOS/other.c
@@ -77,7 +77,7 @@ typedef struct _Other {
ConnPointLine *north,*south,*east,*west;
Text *text;
- real padding;
+ double padding;
OtherType type;
int init;
@@ -85,13 +85,19 @@ typedef struct _Other {
ConnectionPoint center_cp;
} Other;
-static real other_distance_from(Other *other, Point *point);
-static void other_select(Other *other, Point *clicked_point,
- DiaRenderer *interactive_renderer);
-static ObjectChange* other_move_handle(Other *other, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* other_move(Other *other, Point *to);
+
+static double other_distance_from (Other *other,
+ Point *point);
+static void other_select (Other *other,
+ Point *clicked_point,
+ DiaRenderer *interactive_renderer);
+static DiaObjectChange* other_move_handle (Other *other,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange* other_move(Other *other, Point *to);
static void other_draw(Other *other, DiaRenderer *renderer);
static void other_update_data(Other *other, AnchorShape horix, AnchorShape vert);
static DiaObject *other_create(Point *startpoint,
@@ -221,7 +227,7 @@ other_select (Other *other,
}
-static ObjectChange*
+static DiaObjectChange *
other_move_handle (Other *other,
Handle *handle,
Point *to,
@@ -288,7 +294,7 @@ other_move_handle (Other *other,
}
-static ObjectChange*
+static DiaObjectChange *
other_move (Other *other, Point *to)
{
other->element.corner = *to;
@@ -555,39 +561,44 @@ other_get_clicked_border (Other *other, Point *clicked)
}
-inline static ObjectChange *
-other_create_change (Other *other, ObjectChange *inner, ConnPointLine *cpl)
+inline static DiaObjectChange *
+other_create_change (Other *other,
+ DiaObjectChange *inner,
+ ConnPointLine *cpl)
{
- return (ObjectChange *) inner;
+ return (DiaObjectChange *) inner;
}
-static ObjectChange *
+static DiaObjectChange *
other_add_connpoint_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
ConnPointLine *cpl;
- Other *other = (Other *)obj;
+ Other *other = (Other *) obj;
+
+ cpl = other_get_clicked_border (other,clicked);
+ change = connpointline_add_point (cpl, clicked);
+ other_update_data ((Other *) obj, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
- cpl = other_get_clicked_border(other,clicked);
- change = connpointline_add_point(cpl, clicked);
- other_update_data((Other *)obj,ANCHOR_MIDDLE, ANCHOR_MIDDLE);
- return other_create_change(other,change,cpl);
+ return other_create_change (other, change, cpl);
}
-static ObjectChange *
-other_remove_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+other_remove_connpoint_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
ConnPointLine *cpl;
- Other *other = (Other *)obj;
+ Other *other = (Other *) obj;
- cpl = other_get_clicked_border(other,clicked);
- change = connpointline_remove_point(cpl, clicked);
- other_update_data((Other *)obj,ANCHOR_MIDDLE, ANCHOR_MIDDLE);
- return other_create_change(other,change,cpl);
+ cpl = other_get_clicked_border (other, clicked);
+ change = connpointline_remove_point (cpl, clicked);
+ other_update_data((Other *) obj, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
+ return other_create_change (other, change, cpl);
}
+
static DiaMenuItem object_menu_items[] = {
{ N_("Add connection point"), other_add_connpoint_callback, NULL, 1 },
{ N_("Delete connection point"), other_remove_connpoint_callback,
diff --git a/objects/Misc/analog_clock.c b/objects/Misc/analog_clock.c
index 07055d0fe..f5f218a07 100644
--- a/objects/Misc/analog_clock.c
+++ b/objects/Misc/analog_clock.c
@@ -67,11 +67,11 @@ static real analog_clock_distance_from(Analog_Clock *analog_clock,
static void analog_clock_select(Analog_Clock *analog_clock,
Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* analog_clock_move_handle(Analog_Clock *analog_clock,
+static DiaObjectChange* analog_clock_move_handle(Analog_Clock *analog_clock,
Handle *handle, Point *to,
ConnectionPoint *cp, HandleMoveReason reason,
ModifierKeys modifiers);
-static ObjectChange* analog_clock_move(Analog_Clock *analog_clock, Point *to);
+static DiaObjectChange* analog_clock_move(Analog_Clock *analog_clock, Point *to);
static void analog_clock_draw(Analog_Clock *analog_clock, DiaRenderer *renderer);
static void analog_clock_update_data(Analog_Clock *analog_clock);
static DiaObject *analog_clock_create(Point *startpoint,
@@ -201,7 +201,7 @@ analog_clock_select(Analog_Clock *analog_clock, Point *clicked_point,
element_update_handles(&analog_clock->element);
}
-static ObjectChange*
+static DiaObjectChange*
analog_clock_move_handle(Analog_Clock *analog_clock, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -217,7 +217,7 @@ analog_clock_move_handle(Analog_Clock *analog_clock, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
analog_clock_move(Analog_Clock *analog_clock, Point *to)
{
analog_clock->element.corner = *to;
diff --git a/objects/Misc/diagram_as_object.c b/objects/Misc/diagram_as_object.c
index 2654a3a90..92580a09f 100644
--- a/objects/Misc/diagram_as_object.c
+++ b/objects/Misc/diagram_as_object.c
@@ -150,7 +150,7 @@ _dae_select(DiagramAsElement *dae, Point *clicked_point, DiaRenderer *interactiv
{
element_update_handles(&dae->element);
}
-static ObjectChange*
+static DiaObjectChange*
_dae_move_handle(DiagramAsElement *dae, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -166,7 +166,7 @@ _dae_move_handle(DiagramAsElement *dae, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
_dae_move(DiagramAsElement *dae, Point *to)
{
dae->element.corner = *to;
diff --git a/objects/Misc/grid_object.c b/objects/Misc/grid_object.c
index ac2bc99cb..2ee926058 100644
--- a/objects/Misc/grid_object.c
+++ b/objects/Misc/grid_object.c
@@ -65,11 +65,11 @@ static real grid_object_distance_from(Grid_Object *grid_object,
static void grid_object_select(Grid_Object *grid_object,
Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* grid_object_move_handle(Grid_Object *grid_object,
+static DiaObjectChange* grid_object_move_handle(Grid_Object *grid_object,
Handle *handle, Point *to,
ConnectionPoint *cp, HandleMoveReason reason,
ModifierKeys modifiers);
-static ObjectChange* grid_object_move(Grid_Object *grid_object, Point *to);
+static DiaObjectChange* grid_object_move(Grid_Object *grid_object, Point *to);
static void grid_object_draw(Grid_Object *grid_object, DiaRenderer *renderer);
static void grid_object_update_data(Grid_Object *grid_object);
static DiaObject *grid_object_create(Point *startpoint,
@@ -200,7 +200,7 @@ grid_object_select(Grid_Object *grid_object, Point *clicked_point,
element_update_handles(&grid_object->element);
}
-static ObjectChange*
+static DiaObjectChange*
grid_object_move_handle(Grid_Object *grid_object, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -216,7 +216,7 @@ grid_object_move_handle(Grid_Object *grid_object, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
grid_object_move(Grid_Object *grid_object, Point *to)
{
grid_object->element.corner = *to;
diff --git a/objects/Misc/measure.c b/objects/Misc/measure.c
index 1305bf15d..1357cc324 100644
--- a/objects/Misc/measure.c
+++ b/objects/Misc/measure.c
@@ -80,11 +80,11 @@ DiaObjectType measure_type =
DiaObjectType *_measure_type = (DiaObjectType *) &measure_type;
/* Class definition */
-static ObjectChange* measure_move_handle (Measure *measure,
+static DiaObjectChange* measure_move_handle (Measure *measure,
Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* measure_move (Measure *measure, Point *to);
+static DiaObjectChange* measure_move (Measure *measure, Point *to);
static void measure_select(Measure *measure, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void measure_draw(Measure *measure, DiaRenderer *renderer);
@@ -319,7 +319,7 @@ measure_select(Measure *measure, Point *clicked_point,
{
connection_update_handles(&measure->connection);
}
-static ObjectChange*
+static DiaObjectChange*
measure_move_handle (Measure *measure,
Handle *handle,
Point *to, ConnectionPoint *cp,
@@ -336,7 +336,7 @@ measure_get_object_menu(Measure *measure,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
measure_move (Measure *measure, Point *to)
{
Point start_to_end;
diff --git a/objects/Misc/n_gon.c b/objects/Misc/n_gon.c
index 777aecb88..93d579f37 100644
--- a/objects/Misc/n_gon.c
+++ b/objects/Misc/n_gon.c
@@ -183,13 +183,18 @@ _ngon_select(Ngon *ng, Point *clicked_point, DiaRenderer *interactive_renderer)
{
element_update_handles(&ng->element);
}
-static ObjectChange*
-_ngon_move_handle (Ngon *ng, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+
+static DiaObjectChange *
+_ngon_move_handle (Ngon *ng,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
Element *elem = &ng->element;
- ObjectChange *change = NULL; /* stays NULL for fully reversible move handle */
+ DiaObjectChange *change = NULL; /* stays NULL for fully reversible move handle */
g_return_val_if_fail (handle!=NULL, NULL);
g_return_val_if_fail (to!=NULL, NULL);
@@ -203,25 +208,28 @@ _ngon_move_handle (Ngon *ng, Handle *handle,
real d1 = distance_point_point (to, &ng->center);
ng->ray_len *= (d1 / d0);
/* not sure if this is useful at all, but we must not do it with our center_handle */
- change = element_move_handle(elem, handle->id, to, cp, reason, modifiers);
+ change = element_move_handle (elem, handle->id, to, cp, reason, modifiers);
}
- _ngon_update_data(ng);
+ _ngon_update_data (ng);
return change;
}
+
+
/*!
* \brief Move the object, to is relative to former object position
*/
-static ObjectChange*
-_ngon_move(Ngon *ng, Point *to)
+static DiaObjectChange *
+_ngon_move (Ngon *ng, Point *to)
{
ng->center = *to;
- _ngon_update_data(ng);
+ _ngon_update_data (ng);
return NULL;
}
+
static void
_ngon_draw (Ngon *ng, DiaRenderer *renderer)
{
diff --git a/objects/Misc/tree.c b/objects/Misc/tree.c
index dd9612748..0269108e6 100644
--- a/objects/Misc/tree.c
+++ b/objects/Misc/tree.c
@@ -29,6 +29,7 @@
#include "attributes.h"
#include "properties.h"
#include "diamenu.h"
+#include "dia-object-change-legacy.h"
#include "pixmaps/tree.xpm"
@@ -65,10 +66,14 @@ struct PointChange {
ConnectionPoint *connected_to; /* NULL if not connected */
};
-static ObjectChange* tree_move_handle(Tree *tree, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* tree_move(Tree *tree, Point *to);
+static DiaObjectChange *tree_move_handle (Tree *tree,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *tree_move (Tree *tree,
+ Point *to);
static void tree_select(Tree *tree, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void tree_draw(Tree *tree, DiaRenderer *renderer);
@@ -88,14 +93,14 @@ static void tree_save(Tree *tree, ObjectNode obj_node, DiaContext *ctx);
static DiaObject *tree_load(ObjectNode obj_node, int version,DiaContext *ctx);
static DiaMenu *tree_get_object_menu(Tree *tree, Point *clickedpoint);
-static ObjectChange *
-tree_create_change(Tree *tree, enum change_type type,
- Point *point, Handle *handle,
- ConnectionPoint *connected_to);
+static DiaObjectChange *tree_create_change (Tree *tree,
+ enum change_type type,
+ Point *point,
+ Handle *handle,
+ ConnectionPoint *connected_to);
-static ObjectTypeOps tree_type_ops =
-{
+static ObjectTypeOps tree_type_ops = {
(CreateFunc) tree_create,
(LoadFunc) tree_load,
(SaveFunc) tree_save,
@@ -190,10 +195,14 @@ tree_select(Tree *tree, Point *clicked_point,
connection_update_handles(&tree->connection);
}
-static ObjectChange*
-tree_move_handle(Tree *tree, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+tree_move_handle (Tree *tree,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
Connection *conn = &tree->connection;
Point *endpoints;
@@ -263,8 +272,9 @@ tree_move_handle(Tree *tree, Handle *handle,
return NULL;
}
-static ObjectChange*
-tree_move(Tree *tree, Point *to)
+
+static DiaObjectChange *
+tree_move (Tree *tree, Point *to)
{
Point delta;
Point *endpoints = &tree->connection.endpoints[0];
@@ -535,19 +545,21 @@ tree_remove_handle(Tree *tree, Handle *handle)
}
}
-static ObjectChange *
+
+static DiaObjectChange *
tree_add_handle_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Tree *tree = (Tree *) obj;
Handle *handle;
- handle = g_new0(Handle,1);
- tree_add_handle(tree, clicked, handle);
- tree_update_data(tree);
+ handle = g_new0 (Handle, 1);
+ tree_add_handle (tree, clicked, handle);
+ tree_update_data (tree);
- return tree_create_change(tree, TYPE_ADD_POINT, clicked, handle, NULL);
+ return tree_create_change (tree, TYPE_ADD_POINT, clicked, handle, NULL);
}
+
static int
tree_point_near_handle(Tree *tree, Point *p)
{
@@ -572,7 +584,8 @@ tree_point_near_handle(Tree *tree, Point *p)
return -1;
}
-static ObjectChange *
+
+static DiaObjectChange *
tree_delete_handle_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Tree *tree = (Tree *) obj;
@@ -743,10 +756,12 @@ tree_change_revert (struct PointChange *change, DiaObject *obj)
}
-static ObjectChange *
-tree_create_change(Tree *tree, enum change_type type,
- Point *point, Handle *handle,
- ConnectionPoint *connected_to)
+static DiaObjectChange *
+tree_create_change (Tree *tree,
+ enum change_type type,
+ Point *point,
+ Handle *handle,
+ ConnectionPoint *connected_to)
{
struct PointChange *change;
@@ -762,5 +777,5 @@ tree_create_change(Tree *tree, enum change_type type,
change->handle = handle;
change->connected_to = connected_to;
- return (ObjectChange *)change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
diff --git a/objects/SADT/annotation.c b/objects/SADT/annotation.c
index 7ed1ffdd7..b8d676917 100644
--- a/objects/SADT/annotation.c
+++ b/objects/SADT/annotation.c
@@ -57,10 +57,10 @@ typedef struct _Annotation {
#define HANDLE_MOVE_TEXT (HANDLE_CUSTOM1)
-static ObjectChange* annotation_move_handle(Annotation *annotation, Handle *handle,
+static DiaObjectChange* annotation_move_handle(Annotation *annotation, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* annotation_move(Annotation *annotation, Point *to);
+static DiaObjectChange* annotation_move(Annotation *annotation, Point *to);
static void annotation_select(Annotation *annotation, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void annotation_draw(Annotation *annotation, DiaRenderer *renderer);
@@ -209,7 +209,7 @@ annotation_select(Annotation *annotation, Point *clicked_point,
connection_update_handles(&annotation->connection);
}
-static ObjectChange*
+static DiaObjectChange*
annotation_move_handle(Annotation *annotation, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -249,7 +249,7 @@ annotation_move_handle(Annotation *annotation, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
annotation_move(Annotation *annotation, Point *to)
{
Point start_to_end;
diff --git a/objects/SADT/arrow.c b/objects/SADT/arrow.c
index 57d4ccd93..eaa0d2243 100644
--- a/objects/SADT/arrow.c
+++ b/objects/SADT/arrow.c
@@ -66,10 +66,15 @@ typedef struct _Sadtarrow {
Color line_color;
} Sadtarrow;
-static ObjectChange* sadtarrow_move_handle(Sadtarrow *sadtarrow, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* sadtarrow_move(Sadtarrow *sadtarrow, Point *to);
+
+static DiaObjectChange *sadtarrow_move_handle (Sadtarrow *sadtarrow,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *sadtarrow_move (Sadtarrow *sadtarrow,
+ Point *to);
static void sadtarrow_select(Sadtarrow *sadtarrow, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void sadtarrow_draw(Sadtarrow *sadtarrow, DiaRenderer *renderer);
@@ -197,12 +202,17 @@ sadtarrow_select(Sadtarrow *sadtarrow, Point *clicked_point,
orthconn_update_data(&sadtarrow->orth);
}
-static ObjectChange*
-sadtarrow_move_handle(Sadtarrow *sadtarrow, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+sadtarrow_move_handle (Sadtarrow *sadtarrow,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- ObjectChange *change;
+ DiaObjectChange *change;
+
assert(sadtarrow!=NULL);
assert(handle!=NULL);
assert(to!=NULL);
@@ -215,17 +225,18 @@ sadtarrow_move_handle(Sadtarrow *sadtarrow, Handle *handle,
}
-static ObjectChange*
-sadtarrow_move(Sadtarrow *sadtarrow, Point *to)
+static DiaObjectChange *
+sadtarrow_move (Sadtarrow *sadtarrow, Point *to)
{
- ObjectChange *change;
+ DiaObjectChange *change;
- change = orthconn_move(&sadtarrow->orth, to);
- sadtarrow_update_data(sadtarrow);
+ change = orthconn_move (&sadtarrow->orth, to);
+ sadtarrow_update_data (sadtarrow);
return change;
}
+
static void draw_dot(DiaRenderer *renderer,
Point *end, Point *vect, Color *col);
static void draw_tunnel(DiaRenderer *renderer,
@@ -452,24 +463,31 @@ sadtarrow_update_data(Sadtarrow *sadtarrow)
orthconn_update_boundingbox (orth);
}
-static ObjectChange *
-sadtarrow_add_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+sadtarrow_add_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
- change = orthconn_add_segment((OrthConn *)obj, clicked);
- sadtarrow_update_data((Sadtarrow *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_add_segment ((OrthConn *) obj, clicked);
+ sadtarrow_update_data ((Sadtarrow *) obj);
+
return change;
}
-static ObjectChange *
-sadtarrow_delete_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+sadtarrow_delete_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
- change = orthconn_delete_segment((OrthConn *)obj, clicked);
- sadtarrow_update_data((Sadtarrow *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_delete_segment ((OrthConn *) obj, clicked);
+ sadtarrow_update_data ((Sadtarrow *) obj);
+
return change;
}
+
static DiaMenuItem object_menu_items[] = {
{ N_("Add segment"), sadtarrow_add_segment_callback, NULL, 1 },
{ N_("Delete segment"), sadtarrow_delete_segment_callback, NULL, 1 },
diff --git a/objects/SADT/box.c b/objects/SADT/box.c
index bf5c7a673..1a34cd3e1 100644
--- a/objects/SADT/box.c
+++ b/objects/SADT/box.c
@@ -60,8 +60,8 @@ typedef struct _Box {
ConnPointLine *north,*south,*east,*west;
Text *text;
- gchar *id;
- real padding;
+ char *id;
+ double padding;
Color line_color;
Color fill_color;
@@ -70,11 +70,14 @@ typedef struct _Box {
static real sadtbox_distance_from(Box *box, Point *point);
static void sadtbox_select(Box *box, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* sadtbox_move_handle(Box *box, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange* sadtbox_move(Box *box, Point *to);
+static DiaObjectChange *sadtbox_move_handle (Box *box,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *sadtbox_move (Box *box,
+ Point *to);
static void sadtbox_draw(Box *box, DiaRenderer *renderer);
static void sadtbox_update_data(Box *box, AnchorShape horix, AnchorShape vert);
static DiaObject *sadtbox_create(Point *startpoint,
@@ -215,7 +218,7 @@ sadtbox_select (Box *box,
}
-static ObjectChange*
+static DiaObjectChange *
sadtbox_move_handle (Box *box,
Handle *handle,
Point *to,
@@ -276,16 +279,17 @@ sadtbox_move_handle (Box *box,
}
-static ObjectChange*
-sadtbox_move(Box *box, Point *to)
+static DiaObjectChange*
+sadtbox_move (Box *box, Point *to)
{
box->element.corner = *to;
- sadtbox_update_data(box, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
+ sadtbox_update_data (box, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
return NULL;
}
+
static void
sadtbox_draw (Box *box, DiaRenderer *renderer)
{
@@ -450,37 +454,46 @@ sadtbox_get_clicked_border (Box *box, Point *clicked)
return cpl;
}
-inline static ObjectChange *
-sadtbox_create_change(Box *box, ObjectChange *inner, ConnPointLine *cpl) {
- return (ObjectChange *)inner;
+
+inline static DiaObjectChange *
+sadtbox_create_change (Box *box, DiaObjectChange *inner, ConnPointLine *cpl)
+{
+ return (DiaObjectChange *)inner;
}
-static ObjectChange *
-sadtbox_add_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+sadtbox_add_connpoint_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
ConnPointLine *cpl;
Box *box = (Box *)obj;
- cpl = sadtbox_get_clicked_border(box,clicked);
- change = connpointline_add_point(cpl, clicked);
- sadtbox_update_data((Box *)obj,ANCHOR_MIDDLE, ANCHOR_MIDDLE);
- return sadtbox_create_change(box,change,cpl);
+ cpl = sadtbox_get_clicked_border (box, clicked);
+ change = connpointline_add_point (cpl, clicked);
+ sadtbox_update_data ((Box *) obj, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
+
+ return sadtbox_create_change (box, change, cpl);
}
-static ObjectChange *
-sadtbox_remove_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+sadtbox_remove_connpoint_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
ConnPointLine *cpl;
Box *box = (Box *)obj;
- cpl = sadtbox_get_clicked_border(box,clicked);
- change = connpointline_remove_point(cpl, clicked);
- sadtbox_update_data((Box *)obj,ANCHOR_MIDDLE, ANCHOR_MIDDLE);
- return sadtbox_create_change(box,change,cpl);
+ cpl = sadtbox_get_clicked_border (box, clicked);
+ change = connpointline_remove_point (cpl, clicked);
+ sadtbox_update_data ((Box *) obj, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
+
+ return sadtbox_create_change (box, change, cpl);
}
+
static DiaMenuItem object_menu_items[] = {
{ N_("Add connection point"), sadtbox_add_connpoint_callback, NULL, 1 },
{ N_("Delete connection point"), sadtbox_remove_connpoint_callback,
diff --git a/objects/UML/activity.c b/objects/UML/activity.c
index 061919845..b131316df 100644
--- a/objects/UML/activity.c
+++ b/objects/UML/activity.c
@@ -61,10 +61,10 @@ struct _State {
static real state_distance_from(State *state, Point *point);
static void state_select(State *state, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* state_move_handle(State *state, Handle *handle,
+static DiaObjectChange* state_move_handle(State *state, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* state_move(State *state, Point *to);
+static DiaObjectChange* state_move(State *state, Point *to);
static void state_draw(State *state, DiaRenderer *renderer);
static DiaObject *state_create_activity(Point *startpoint,
void *user_data,
@@ -180,7 +180,7 @@ state_select(State *state, Point *clicked_point,
element_update_handles(&state->element);
}
-static ObjectChange*
+static DiaObjectChange*
state_move_handle(State *state, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -194,7 +194,7 @@ state_move_handle(State *state, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
state_move(State *state, Point *to)
{
state->element.corner = *to;
diff --git a/objects/UML/actor.c b/objects/UML/actor.c
index b34cc4c30..630a2fe17 100644
--- a/objects/UML/actor.c
+++ b/objects/UML/actor.c
@@ -57,10 +57,14 @@ struct _Actor {
static real actor_distance_from(Actor *actor, Point *point);
static void actor_select(Actor *actor, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* actor_move_handle(Actor *actor, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* actor_move(Actor *actor, Point *to);
+static DiaObjectChange *actor_move_handle (Actor *actor,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *actor_move (Actor *actor,
+ Point *to);
static void actor_draw(Actor *actor, DiaRenderer *renderer);
static DiaObject *actor_create(Point *startpoint,
void *user_data,
@@ -174,12 +178,16 @@ actor_select(Actor *actor, Point *clicked_point,
element_update_handles(&actor->element);
}
-static ObjectChange*
-actor_move_handle(Actor *actor, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+actor_move_handle (Actor *actor,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- ObjectChange* oc;
+ DiaObjectChange *oc;
assert(actor!=NULL);
assert(handle!=NULL);
@@ -192,8 +200,9 @@ actor_move_handle(Actor *actor, Handle *handle,
return oc;
}
-static ObjectChange*
-actor_move(Actor *actor, Point *to)
+
+static DiaObjectChange *
+actor_move (Actor *actor, Point *to)
{
Element *elem = &actor->element;
diff --git a/objects/UML/association.c b/objects/UML/association.c
index 91862c4b4..c15c84277 100644
--- a/objects/UML/association.c
+++ b/objects/UML/association.c
@@ -61,7 +61,7 @@
#include "attributes.h"
#include "arrows.h"
#include "uml.h"
-
+#include "dia-object-change-legacy.h"
#include "properties.h"
#include "pixmaps/association.xpm"
@@ -149,12 +149,17 @@ struct _Association {
#define ASSOCIATION_END_SPACE (assoc->font_height/4)
static real association_distance_from(Association *assoc, Point *point);
-static void association_select(Association *assoc, Point *clicked_point,
- DiaRenderer *interactive_renderer);
-static ObjectChange* association_move_handle(Association *assoc, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* association_move(Association *assoc, Point *to);
+static void association_select (Association *assoc,
+ Point *clicked_point,
+ DiaRenderer *interactive_renderer);
+static DiaObjectChange *association_move_handle (Association *assoc,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange* association_move (Association *assoc,
+ Point *to);
static void association_draw(Association *assoc, DiaRenderer *renderer);
static DiaObject *association_create(Point *startpoint,
void *user_data,
@@ -346,29 +351,35 @@ association_select(Association *assoc, Point *clicked_point,
orthconn_update_data(&assoc->orth);
}
-static ObjectChange*
-association_move_handle(Association *assoc, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange*
+association_move_handle (Association *assoc,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- ObjectChange *change;
+ DiaObjectChange *change;
+
assert(assoc!=NULL);
assert(handle!=NULL);
assert(to!=NULL);
- change = orthconn_move_handle(&assoc->orth, handle, to, cp, reason, modifiers);
- association_update_data(assoc);
+ change = orthconn_move_handle (&assoc->orth, handle, to, cp, reason, modifiers);
+ association_update_data (assoc);
return change;
}
-static ObjectChange*
-association_move(Association *assoc, Point *to)
+
+static DiaObjectChange *
+association_move (Association *assoc, Point *to)
{
- ObjectChange *change;
+ DiaObjectChange *change;
- change = orthconn_move(&assoc->orth, to);
- association_update_data(assoc);
+ change = orthconn_move (&assoc->orth, to);
+ association_update_data (assoc);
return change;
}
@@ -865,12 +876,12 @@ association_create (Point *startpoint,
}
-static ObjectChange *
+static DiaObjectChange *
association_add_segment_callback (DiaObject *obj,
Point *clicked,
gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
change = orthconn_add_segment ((OrthConn *) obj, clicked);
association_update_data ((Association *) obj);
@@ -879,12 +890,12 @@ association_add_segment_callback (DiaObject *obj,
}
-static ObjectChange *
+static DiaObjectChange *
association_delete_segment_callback (DiaObject *obj,
Point *clicked,
gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
change = orthconn_delete_segment ((OrthConn *) obj, clicked);
association_update_data ((Association *) obj);
diff --git a/objects/UML/branch.c b/objects/UML/branch.c
index 09936470e..4cf140781 100644
--- a/objects/UML/branch.c
+++ b/objects/UML/branch.c
@@ -56,10 +56,10 @@ static const double BRANCH_HEIGHT = 2.0;
static real branch_distance_from(Branch *branch, Point *point);
static void branch_select(Branch *branch, Point *clicked_point, DiaRenderer *interactive_renderer);
-static ObjectChange* branch_move_handle(Branch *branch, Handle *handle,
+static DiaObjectChange* branch_move_handle(Branch *branch, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* branch_move(Branch *branch, Point *to);
+static DiaObjectChange* branch_move(Branch *branch, Point *to);
static void branch_draw(Branch *branch, DiaRenderer *renderer);
static DiaObject *branch_create(Point *startpoint,
void *user_data,
@@ -162,7 +162,7 @@ branch_select(Branch *branch, Point *clicked_point, DiaRenderer *interactive_ren
element_update_handles(&branch->element);
}
-static ObjectChange*
+static DiaObjectChange*
branch_move_handle(Branch *branch, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -185,7 +185,7 @@ branch_move_handle(Branch *branch, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
branch_move(Branch *branch, Point *to)
{
branch->element.corner = *to;
diff --git a/objects/UML/class.c b/objects/UML/class.c
index dcd86be76..b945770b1 100644
--- a/objects/UML/class.c
+++ b/objects/UML/class.c
@@ -34,7 +34,7 @@
#include "attributes.h"
#include "properties.h"
#include "diamenu.h"
-
+#include "dia-object-change-legacy.h"
#include "class.h"
#include "pixmaps/umlclass.xpm"
@@ -49,9 +49,14 @@
static real umlclass_distance_from(UMLClass *umlclass, Point *point);
static void umlclass_select(UMLClass *umlclass, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* umlclass_move_handle(UMLClass *umlclass, Handle *handle,
- Point *to, ConnectionPoint *cp, HandleMoveReason reason, ModifierKeys
modifiers);
-static ObjectChange* umlclass_move(UMLClass *umlclass, Point *to);
+static DiaObjectChange *umlclass_move_handle (UMLClass *umlclass,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *umlclass_move (UMLClass *umlclass,
+ Point *to);
static void umlclass_draw(UMLClass *umlclass, DiaRenderer *renderer);
static DiaObject *umlclass_create(Point *startpoint,
void *user_data,
@@ -65,8 +70,12 @@ static void umlclass_save(UMLClass *umlclass, ObjectNode obj_node,
static DiaObject *umlclass_load(ObjectNode obj_node, int version, DiaContext *ctx);
static DiaMenu * umlclass_object_menu(DiaObject *obj, Point *p);
-static ObjectChange *umlclass_show_comments_callback(DiaObject *obj, Point *pos, gpointer data);
-static ObjectChange *umlclass_allow_resizing_callback(DiaObject *obj, Point *pos, gpointer data);
+static DiaObjectChange *umlclass_show_comments_callback (DiaObject *obj,
+ Point *pos,
+ gpointer data);
+static DiaObjectChange *umlclass_allow_resizing_callback (DiaObject *obj,
+ Point *pos,
+ gpointer data);
static PropDescription *umlclass_describe_props(UMLClass *umlclass);
static void umlclass_get_props(UMLClass *umlclass, GPtrArray *props);
@@ -75,7 +84,8 @@ static void umlclass_set_props(UMLClass *umlclass, GPtrArray *props);
static void fill_in_fontdata(UMLClass *umlclass);
static int umlclass_num_dynamic_connectionpoints(UMLClass *class);
-static ObjectChange *_umlclass_apply_props_from_dialog(UMLClass *umlclass, GtkWidget *widget);
+static DiaObjectChange *_umlclass_apply_props_from_dialog (UMLClass *umlclass,
+ GtkWidget *widget);
static ObjectTypeOps umlclass_type_ops =
{
@@ -240,7 +250,8 @@ static PropDescription umlclass_props[] = {
PROP_DESC_END
};
-ObjectChange *
+
+DiaObjectChange *
_umlclass_apply_props_from_dialog(UMLClass *umlclass, GtkWidget *widget)
{
DiaObject *obj = ¨class->element.object;
@@ -251,6 +262,7 @@ _umlclass_apply_props_from_dialog(UMLClass *umlclass, GtkWidget *widget)
return umlclass_apply_props_from_dialog (umlclass, widget);
}
+
static PropDescription *
umlclass_describe_props(UMLClass *umlclass)
{
@@ -390,26 +402,33 @@ _comment_set_state (DiaObject *obj, ObjectState *state)
}
-static ObjectChange *
-umlclass_show_comments_callback(DiaObject *obj, Point *pos, gpointer data)
+static DiaObjectChange *
+umlclass_show_comments_callback (DiaObject *obj, Point *pos, gpointer data)
{
ObjectState *old_state = _comment_get_state(obj);
- ObjectChange *change = new_object_state_change(obj, old_state, _comment_get_state, _comment_set_state );
-
- ((UMLClass *)obj)->visible_comments = !((UMLClass *)obj)->visible_comments;
- umlclass_calculate_data((UMLClass *)obj);
- umlclass_update_data((UMLClass *)obj);
+ DiaObjectChange *change = new_object_state_change (obj,
+ old_state,
+ _comment_get_state,
+ _comment_set_state );
+
+ ((UMLClass *) obj)->visible_comments = !((UMLClass *) obj)->visible_comments;
+ umlclass_calculate_data ((UMLClass *) obj);
+ umlclass_update_data ((UMLClass *) obj);
return change;
}
-static ObjectChange *
-umlclass_allow_resizing_callback(DiaObject *obj,
- Point *pos G_GNUC_UNUSED,
- gpointer data G_GNUC_UNUSED)
+
+static DiaObjectChange *
+umlclass_allow_resizing_callback (DiaObject *obj,
+ Point *pos G_GNUC_UNUSED,
+ gpointer data G_GNUC_UNUSED)
{
- return object_toggle_prop(obj, "allow_resizing", !((UMLClass *)obj)->allow_resizing);
+ return object_toggle_prop (obj,
+ "allow_resizing",
+ !((UMLClass *) obj)->allow_resizing);
}
+
static void
umlclass_reflect_resizing(UMLClass *umlclass)
{
@@ -513,10 +532,14 @@ umlclass_select(UMLClass *umlclass, Point *clicked_point,
element_update_handles(¨class->element);
}
-static ObjectChange*
-umlclass_move_handle(UMLClass *umlclass, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+umlclass_move_handle (UMLClass *umlclass,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
Element *elem = ¨class->element;
@@ -527,13 +550,18 @@ umlclass_move_handle(UMLClass *umlclass, Handle *handle,
if (handle->type != HANDLE_NON_MOVABLE) {
if (handle->id == HANDLE_RESIZE_E || handle->id == HANDLE_RESIZE_W) {
- real dist = (handle->id == HANDLE_RESIZE_E) ?
- to->x - elem->resize_handles[3].pos.x :
- elem->resize_handles[4].pos.x - to->x;
+ double dist = (handle->id == HANDLE_RESIZE_E) ?
+ to->x - elem->resize_handles[3].pos.x :
+ elem->resize_handles[4].pos.x - to->x;
if (umlclass->min_width <= dist) {
- ObjectChange *oc = element_move_handle (elem, handle->id, to, cp, reason, modifiers);
- umlclass_update_data(umlclass);
- return oc;
+ DiaObjectChange *oc = element_move_handle (elem,
+ handle->id,
+ to,
+ cp,
+ reason,
+ modifiers);
+ umlclass_update_data (umlclass);
+ return oc;
}
}
}
@@ -541,14 +569,17 @@ umlclass_move_handle(UMLClass *umlclass, Handle *handle,
return NULL;
}
-static ObjectChange*
-umlclass_move(UMLClass *umlclass, Point *to)
+
+static DiaObjectChange *
+umlclass_move (UMLClass *umlclass, Point *to)
{
umlclass->element.corner = *to;
- umlclass_update_data(umlclass);
+ umlclass_update_data (umlclass);
return NULL;
}
+
+
/**
* underlines the text at the start point using the text to determine
* the length of the underline. Draw a line under the text represented by
diff --git a/objects/UML/class.h b/objects/UML/class.h
index 1f92247fe..0b6ffddf1 100644
--- a/objects/UML/class.h
+++ b/objects/UML/class.h
@@ -145,7 +145,7 @@ struct _UMLClass {
void umlclass_dialog_free (UMLClassDialog *dialog);
GtkWidget *umlclass_get_properties(UMLClass *umlclass, gboolean is_default);
-ObjectChange *umlclass_apply_props_from_dialog(UMLClass *umlclass, GtkWidget *widget);
+DiaObjectChange *umlclass_apply_props_from_dialog(UMLClass *umlclass, GtkWidget *widget);
void umlclass_calculate_data(UMLClass *umlclass);
void umlclass_update_data(UMLClass *umlclass);
diff --git a/objects/UML/class_dialog.c b/objects/UML/class_dialog.c
index df8a47a7b..e31703f4f 100644
--- a/objects/UML/class_dialog.c
+++ b/objects/UML/class_dialog.c
@@ -37,11 +37,11 @@
#include <string.h>
#include "object.h"
-#include "objchange.h"
#include "intl.h"
#include "class.h"
#include "diaoptionmenu.h"
#include "diafontselector.h"
+#include "dia-object-change-legacy.h"
#include "class_dialog.h"
@@ -126,10 +126,12 @@ struct _UMLClassChange {
UMLClassState *saved_state;
};
-static UMLClassState *umlclass_get_state(UMLClass *umlclass);
-static ObjectChange *new_umlclass_change(UMLClass *obj, UMLClassState *saved_state,
- GList *added, GList *deleted,
- GList *disconnected);
+static UMLClassState *umlclass_get_state (UMLClass *umlclass);
+static DiaObjectChange *new_umlclass_change (UMLClass *obj,
+ UMLClassState *saved_state,
+ GList *added,
+ GList *deleted,
+ GList *disconnected);
/**** Utility functions ******/
void
@@ -587,7 +589,7 @@ fill_in_dialog (UMLClass *umlclass)
}
-ObjectChange *
+DiaObjectChange *
umlclass_apply_props_from_dialog (UMLClass *umlclass, GtkWidget *widget)
{
UMLClassDialog *prop_dialog;
@@ -1043,9 +1045,13 @@ umlclass_change_free(UMLClassChange *change)
}
-static ObjectChange *
-new_umlclass_change(UMLClass *obj, UMLClassState *saved_state,
- GList *added, GList *deleted, GList *disconnected)
+
+static DiaObjectChange *
+new_umlclass_change (UMLClass *obj,
+ UMLClassState *saved_state,
+ GList *added,
+ GList *deleted,
+ GList *disconnected)
{
UMLClassChange *change;
@@ -1066,7 +1072,7 @@ new_umlclass_change(UMLClass *obj, UMLClassState *saved_state,
change->deleted_cp = deleted;
change->disconnected = disconnected;
- return (ObjectChange *)change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
diff --git a/objects/UML/classicon.c b/objects/UML/classicon.c
index 6d837598f..b2a8b4b4e 100644
--- a/objects/UML/classicon.c
+++ b/objects/UML/classicon.c
@@ -69,10 +69,10 @@ enum CLassIconStereotype {
static real classicon_distance_from(Classicon *cicon, Point *point);
static void classicon_select(Classicon *cicon, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* classicon_move_handle(Classicon *cicon, Handle *handle,
+static DiaObjectChange* classicon_move_handle(Classicon *cicon, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* classicon_move(Classicon *cicon, Point *to);
+static DiaObjectChange* classicon_move(Classicon *cicon, Point *to);
static void classicon_draw(Classicon *cicon, DiaRenderer *renderer);
static DiaObject *classicon_create(Point *startpoint,
void *user_data,
@@ -205,7 +205,7 @@ classicon_select(Classicon *cicon, Point *clicked_point,
element_update_handles(&cicon->element);
}
-static ObjectChange*
+static DiaObjectChange*
classicon_move_handle(Classicon *cicon, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -219,7 +219,7 @@ classicon_move_handle(Classicon *cicon, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
classicon_move(Classicon *cicon, Point *to)
{
Element *elem = &cicon->element;
diff --git a/objects/UML/component.c b/objects/UML/component.c
index c1728f441..dde444d0c 100644
--- a/objects/UML/component.c
+++ b/objects/UML/component.c
@@ -60,10 +60,10 @@ struct _Component {
static real component_distance_from(Component *cmp, Point *point);
static void component_select(Component *cmp, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* component_move_handle(Component *cmp, Handle *handle,
+static DiaObjectChange* component_move_handle(Component *cmp, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* component_move(Component *cmp, Point *to);
+static DiaObjectChange* component_move(Component *cmp, Point *to);
static void component_draw(Component *cmp, DiaRenderer *renderer);
static DiaObject *component_create(Point *startpoint,
void *user_data,
@@ -196,7 +196,7 @@ component_select(Component *cmp, Point *clicked_point,
element_update_handles(&cmp->element);
}
-static ObjectChange*
+static DiaObjectChange*
component_move_handle(Component *cmp, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -210,7 +210,7 @@ component_move_handle(Component *cmp, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
component_move(Component *cmp, Point *to)
{
cmp->element.corner = *to;
diff --git a/objects/UML/component_feature.c b/objects/UML/component_feature.c
index a4f31de62..40778fb85 100644
--- a/objects/UML/component_feature.c
+++ b/objects/UML/component_feature.c
@@ -79,13 +79,14 @@ struct _Compfeat {
#define COMPPROP_TEXTOFFSET 1.0
#define HANDLE_MOVE_TEXT (HANDLE_CUSTOM2)
-static ObjectChange* compfeat_move_handle(Compfeat *compfeat,
- Handle *handle,
- Point *to,
- ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange* compfeat_move(Compfeat *compfeat, Point *to);
+static DiaObjectChange *compfeat_move_handle (Compfeat *compfeat,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *compfeat_move (Compfeat *compfeat,
+ Point *to);
static void compfeat_select(Compfeat *compfeat, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void compfeat_draw(Compfeat *compfeat, DiaRenderer *renderer);
@@ -164,25 +165,33 @@ static PropDescription compfeat_props[] = {
PROP_DESC_END
};
-static ObjectChange *
+
+static DiaObjectChange *
compfeat_add_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
- change = orthconn_add_segment((OrthConn *)obj, clicked);
- compfeat_update_data((Compfeat *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_add_segment ((OrthConn *) obj, clicked);
+ compfeat_update_data ((Compfeat *) obj);
+
return change;
}
-static ObjectChange *
-compfeat_delete_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+compfeat_delete_segment_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
+
+ change = orthconn_delete_segment ((OrthConn *) obj, clicked);
+ compfeat_update_data ((Compfeat *) obj);
- change = orthconn_delete_segment((OrthConn *)obj, clicked);
- compfeat_update_data((Compfeat *)obj);
return change;
}
+
static DiaMenuItem object_menu_items[] = {
{ N_("Add segment"), compfeat_add_segment_callback, NULL, 1 },
{ N_("Delete segment"), compfeat_delete_segment_callback, NULL, 1 },
@@ -269,13 +278,16 @@ compfeat_select(Compfeat *compfeat, Point *clicked_point,
orthconn_update_data(&compfeat->orth);
}
-static ObjectChange *
-compfeat_move_handle(Compfeat *compfeat, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers)
+
+static DiaObjectChange *
+compfeat_move_handle (Compfeat *compfeat,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- ObjectChange *change;
+ DiaObjectChange *change;
assert(compfeat!=NULL);
assert(handle!=NULL);
@@ -293,10 +305,11 @@ compfeat_move_handle(Compfeat *compfeat, Handle *handle,
return change;
}
-static ObjectChange *
-compfeat_move(Compfeat *compfeat, Point *to)
+
+static DiaObjectChange *
+compfeat_move (Compfeat *compfeat, Point *to)
{
- ObjectChange *change;
+ DiaObjectChange *change;
Point delta = *to;
delta = *to;
@@ -312,6 +325,7 @@ compfeat_move(Compfeat *compfeat, Point *to)
return change;
}
+
static void
compfeat_draw (Compfeat *compfeat, DiaRenderer *renderer)
{
diff --git a/objects/UML/constraint.c b/objects/UML/constraint.c
index fc5127981..b39b2cd82 100644
--- a/objects/UML/constraint.c
+++ b/objects/UML/constraint.c
@@ -62,10 +62,10 @@ struct _Constraint {
#define HANDLE_MOVE_TEXT (HANDLE_CUSTOM1)
-static ObjectChange* constraint_move_handle(Constraint *constraint, Handle *handle,
+static DiaObjectChange* constraint_move_handle(Constraint *constraint, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* constraint_move(Constraint *constraint, Point *to);
+static DiaObjectChange* constraint_move(Constraint *constraint, Point *to);
static void constraint_select(Constraint *constraint, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void constraint_draw(Constraint *constraint, DiaRenderer *renderer);
@@ -189,7 +189,7 @@ constraint_select(Constraint *constraint, Point *clicked_point,
connection_update_handles(&constraint->connection);
}
-static ObjectChange*
+static DiaObjectChange*
constraint_move_handle(Constraint *constraint, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -221,7 +221,7 @@ constraint_move_handle(Constraint *constraint, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
constraint_move(Constraint *constraint, Point *to)
{
Point start_to_end;
diff --git a/objects/UML/dependency.c b/objects/UML/dependency.c
index 7cecb79f5..a1869f792 100644
--- a/objects/UML/dependency.c
+++ b/objects/UML/dependency.c
@@ -66,10 +66,14 @@ struct _Dependency {
static real dependency_distance_from(Dependency *dep, Point *point);
static void dependency_select(Dependency *dep, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* dependency_move_handle(Dependency *dep, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* dependency_move(Dependency *dep, Point *to);
+static DiaObjectChange *dependency_move_handle (Dependency *dep,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *dependency_move (Dependency *dep,
+ Point *to);
static void dependency_draw(Dependency *dep, DiaRenderer *renderer);
static DiaObject *dependency_create(Point *startpoint,
void *user_data,
@@ -196,33 +200,40 @@ dependency_select(Dependency *dep, Point *clicked_point,
orthconn_update_data(&dep->orth);
}
-static ObjectChange*
-dependency_move_handle(Dependency *dep, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange*
+dependency_move_handle (Dependency *dep,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- ObjectChange *change;
+ DiaObjectChange *change;
+
assert(dep!=NULL);
assert(handle!=NULL);
assert(to!=NULL);
- change = orthconn_move_handle(&dep->orth, handle, to, cp, reason, modifiers);
- dependency_update_data(dep);
+ change = orthconn_move_handle (&dep->orth, handle, to, cp, reason, modifiers);
+ dependency_update_data (dep);
return change;
}
-static ObjectChange*
-dependency_move(Dependency *dep, Point *to)
+
+static DiaObjectChange *
+dependency_move (Dependency *dep, Point *to)
{
- ObjectChange *change;
+ DiaObjectChange *change;
- change = orthconn_move(&dep->orth, to);
- dependency_update_data(dep);
+ change = orthconn_move (&dep->orth, to);
+ dependency_update_data (dep);
return change;
}
+
static void
dependency_draw (Dependency *dep, DiaRenderer *renderer)
{
@@ -358,21 +369,29 @@ dependency_update_data(Dependency *dep)
rectangle_union(&obj->bounding_box, &rect);
}
-static ObjectChange *
-dependency_add_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+dependency_add_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
- change = orthconn_add_segment((OrthConn *)obj, clicked);
- dependency_update_data((Dependency *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_add_segment ((OrthConn *) obj, clicked);
+ dependency_update_data ((Dependency *) obj);
+
return change;
}
-static ObjectChange *
-dependency_delete_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+dependency_delete_segment_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data)
{
- ObjectChange *change;
- change = orthconn_delete_segment((OrthConn *)obj, clicked);
- dependency_update_data((Dependency *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_delete_segment ((OrthConn *) obj, clicked);
+ dependency_update_data ((Dependency *) obj);
+
return change;
}
@@ -383,6 +402,7 @@ static DiaMenuItem object_menu_items[] = {
ORTHCONN_COMMON_MENUS,
};
+
static DiaMenu object_menu = {
"Dependency",
sizeof(object_menu_items)/sizeof(DiaMenuItem),
diff --git a/objects/UML/fork.c b/objects/UML/fork.c
index bfe48ba64..901edf3a6 100644
--- a/objects/UML/fork.c
+++ b/objects/UML/fork.c
@@ -56,10 +56,10 @@ static const double FORK_MARGIN = 0.125;
static real fork_distance_from(Fork *branch, Point *point);
static void fork_select(Fork *branch, Point *clicked_point, DiaRenderer *interactive_renderer);
-static ObjectChange* fork_move_handle(Fork *branch, Handle *handle,
+static DiaObjectChange* fork_move_handle(Fork *branch, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* fork_move(Fork *branch, Point *to);
+static DiaObjectChange* fork_move(Fork *branch, Point *to);
static void fork_draw(Fork *branch, DiaRenderer *renderer);
static DiaObject *fork_create(Point *startpoint,
void *user_data,
@@ -160,7 +160,7 @@ fork_select(Fork *branch, Point *clicked_point, DiaRenderer *interactive_rendere
}
-static ObjectChange*
+static DiaObjectChange*
fork_move_handle (Fork *branch,
Handle *handle,
Point *to,
@@ -192,7 +192,7 @@ fork_move_handle (Fork *branch,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
fork_move(Fork *branch, Point *to)
{
branch->element.corner = *to;
diff --git a/objects/UML/generalization.c b/objects/UML/generalization.c
index faed53dfe..f96deb22f 100644
--- a/objects/UML/generalization.c
+++ b/objects/UML/generalization.c
@@ -62,10 +62,14 @@ struct _Generalization {
static real generalization_distance_from(Generalization *genlz, Point *point);
static void generalization_select(Generalization *genlz, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* generalization_move_handle(Generalization *genlz, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* generalization_move(Generalization *genlz, Point *to);
+static DiaObjectChange* generalization_move_handle (Generalization *genlz,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange* generalization_move (Generalization *genlz,
+ Point *to);
static void generalization_draw(Generalization *genlz, DiaRenderer *renderer);
static DiaObject *generalization_create(Point *startpoint,
void *user_data,
@@ -191,12 +195,17 @@ generalization_select(Generalization *genlz, Point *clicked_point,
orthconn_update_data(&genlz->orth);
}
-static ObjectChange*
-generalization_move_handle(Generalization *genlz, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+generalization_move_handle (Generalization *genlz,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- ObjectChange *change;
+ DiaObjectChange *change;
+
assert(genlz!=NULL);
assert(handle!=NULL);
assert(to!=NULL);
@@ -207,10 +216,11 @@ generalization_move_handle(Generalization *genlz, Handle *handle,
return change;
}
-static ObjectChange*
-generalization_move(Generalization *genlz, Point *to)
+
+static DiaObjectChange *
+generalization_move (Generalization *genlz, Point *to)
{
- ObjectChange *change;
+ DiaObjectChange *change;
change = orthconn_move(&genlz->orth, to);
generalization_update_data(genlz);
@@ -218,6 +228,7 @@ generalization_move(Generalization *genlz, Point *to)
return change;
}
+
static void
generalization_draw (Generalization *genlz, DiaRenderer *renderer)
{
@@ -358,21 +369,27 @@ generalization_update_data(Generalization *genlz)
rectangle_union(&obj->bounding_box, &rect);
}
-static ObjectChange *
-generalization_add_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+generalization_add_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
- change = orthconn_add_segment((OrthConn *)obj, clicked);
- generalization_update_data((Generalization *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_add_segment ((OrthConn *) obj, clicked);
+ generalization_update_data ((Generalization *) obj);
+
return change;
}
-static ObjectChange *
-generalization_delete_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+generalization_delete_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
- change = orthconn_delete_segment((OrthConn *)obj, clicked);
- generalization_update_data((Generalization *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_delete_segment ((OrthConn *) obj, clicked);
+ generalization_update_data ((Generalization *) obj);
+
return change;
}
diff --git a/objects/UML/implements.c b/objects/UML/implements.c
index f2c8ad819..980d69ca8 100644
--- a/objects/UML/implements.c
+++ b/objects/UML/implements.c
@@ -62,10 +62,10 @@ struct _Implements {
#define HANDLE_CIRCLE_SIZE (HANDLE_CUSTOM1)
#define HANDLE_MOVE_TEXT (HANDLE_CUSTOM2)
-static ObjectChange* implements_move_handle(Implements *implements, Handle *handle,
+static DiaObjectChange* implements_move_handle(Implements *implements, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* implements_move(Implements *implements, Point *to);
+static DiaObjectChange* implements_move(Implements *implements, Point *to);
static void implements_select(Implements *implements, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void implements_draw(Implements *implements, DiaRenderer *renderer);
@@ -197,7 +197,7 @@ implements_select(Implements *implements, Point *clicked_point,
connection_update_handles(&implements->connection);
}
-static ObjectChange*
+static DiaObjectChange*
implements_move_handle(Implements *implements, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -233,7 +233,7 @@ implements_move_handle(Implements *implements, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
implements_move(Implements *implements, Point *to)
{
Point start_to_end;
diff --git a/objects/UML/large_package.c b/objects/UML/large_package.c
index 6bc2115a3..77430af9f 100644
--- a/objects/UML/large_package.c
+++ b/objects/UML/large_package.c
@@ -70,10 +70,10 @@ struct _LargePackage {
static real largepackage_distance_from(LargePackage *pkg, Point *point);
static void largepackage_select(LargePackage *pkg, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* largepackage_move_handle(LargePackage *pkg, Handle *handle,
+static DiaObjectChange* largepackage_move_handle(LargePackage *pkg, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* largepackage_move(LargePackage *pkg, Point *to);
+static DiaObjectChange* largepackage_move(LargePackage *pkg, Point *to);
static void largepackage_draw(LargePackage *pkg, DiaRenderer *renderer);
static DiaObject *largepackage_create(Point *startpoint,
void *user_data,
@@ -211,7 +211,7 @@ largepackage_select(LargePackage *pkg, Point *clicked_point,
element_update_handles(&pkg->element);
}
-static ObjectChange*
+static DiaObjectChange*
largepackage_move_handle(LargePackage *pkg, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -228,7 +228,7 @@ largepackage_move_handle(LargePackage *pkg, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
largepackage_move(LargePackage *pkg, Point *to)
{
pkg->element.corner = *to;
diff --git a/objects/UML/lifeline.c b/objects/UML/lifeline.c
index 50870b588..37db57e6c 100644
--- a/objects/UML/lifeline.c
+++ b/objects/UML/lifeline.c
@@ -31,6 +31,7 @@
#include "properties.h"
#include "connpoint_line.h"
#include "attributes.h"
+#include "dia-object-change-legacy.h"
#include "pixmaps/lifeline.xpm"
@@ -85,11 +86,14 @@ struct _Lifeline {
#define HANDLE_BOXBOT (HANDLE_CUSTOM2)
#define HANDLE_BOXMID (HANDLE_CUSTOM3)
-static ObjectChange* lifeline_move_handle(Lifeline *lifeline, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange* lifeline_move(Lifeline *lifeline, Point *to);
+static DiaObjectChange *lifeline_move_handle (Lifeline *lifeline,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *lifeline_move (Lifeline *lifeline,
+ Point *to);
static void lifeline_select(Lifeline *lifeline, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void lifeline_draw(Lifeline *lifeline, DiaRenderer *renderer);
@@ -117,7 +121,9 @@ typedef enum {
LIFELINE_CHANGE_DEF = 0x05
} LifelineChangeType;
-static ObjectChange *lifeline_create_change(Lifeline *lifeline, LifelineChangeType changetype, Point
*clicked);
+static DiaObjectChange *lifeline_create_change (Lifeline *lifeline,
+ LifelineChangeType changetype,
+ Point *clicked);
static ObjectTypeOps lifeline_type_ops =
{
@@ -252,6 +258,8 @@ lifeline_point_above_mid (Lifeline *lifeline,
{
return (pt->y < lifeline->boxmid_handle.pos.y);
}
+
+
/*!
* Moving handles of a lifeline
*
@@ -263,12 +271,15 @@ lifeline_point_above_mid (Lifeline *lifeline,
* by connected points)
* - the bottom handle just move itself, not beyond the lower box handle
*/
-static ObjectChange*
-lifeline_move_handle(Lifeline *lifeline, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+static DiaObjectChange*
+lifeline_move_handle (Lifeline *lifeline,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- real s, dy;
+ double s, dy;
Connection *conn;
assert(lifeline!=NULL);
@@ -336,27 +347,29 @@ lifeline_move_handle(Lifeline *lifeline, Handle *handle,
return NULL;
}
-static ObjectChange*
-lifeline_move(Lifeline *lifeline, Point *to)
+
+static DiaObjectChange *
+lifeline_move (Lifeline *lifeline, Point *to)
{
Point start_to_end;
Point delta;
Point *endpoints = &lifeline->connection.endpoints[0];
delta = *to;
- point_sub(&delta, &endpoints[0]);
+ point_sub (&delta, &endpoints[0]);
start_to_end = endpoints[1];
- point_sub(&start_to_end, &endpoints[0]);
+ point_sub (&start_to_end, &endpoints[0]);
endpoints[1] = endpoints[0] = *to;
- point_add(&endpoints[1], &start_to_end);
+ point_add (&endpoints[1], &start_to_end);
- lifeline_update_data(lifeline);
+ lifeline_update_data (lifeline);
return NULL;
}
+
static void
lifeline_draw (Lifeline *lifeline, DiaRenderer *renderer)
{
@@ -428,29 +441,30 @@ lifeline_draw (Lifeline *lifeline, DiaRenderer *renderer)
typedef struct {
ObjectChange obj_change;
- ObjectChange *east, *west;
- real cp_distance_change;
+ DiaObjectChange *east, *west;
+ double cp_distance_change;
LifelineChangeType type;
} LifelineChange;
+
static void
-lifeline_change_apply(LifelineChange *change, DiaObject *obj)
+lifeline_change_apply (LifelineChange *change, DiaObject *obj)
{
- if( change->type == LIFELINE_CHANGE_ADD || change->type == LIFELINE_CHANGE_DEL ) {
- change->west->apply(change->west,obj);
- change->east->apply(change->east,obj);
+ if (change->type == LIFELINE_CHANGE_ADD || change->type == LIFELINE_CHANGE_DEL) {
+ dia_object_change_apply (change->west,obj);
+ dia_object_change_apply (change->east,obj);
} else {
- ((Lifeline*)obj)->cp_distance += change->cp_distance_change;
+ ((Lifeline*) obj)->cp_distance += change->cp_distance_change;
}
-
}
+
static void
-lifeline_change_revert(LifelineChange *change, DiaObject *obj)
+lifeline_change_revert (LifelineChange *change, DiaObject *obj)
{
- if( change->type == LIFELINE_CHANGE_ADD || change->type == LIFELINE_CHANGE_DEL ) {
- change->west->revert(change->west,obj);
- change->east->revert(change->east,obj);
+ if (change->type == LIFELINE_CHANGE_ADD || change->type == LIFELINE_CHANGE_DEL) {
+ dia_object_change_revert (change->west,obj);
+ dia_object_change_revert (change->east,obj);
} else {
((Lifeline*)obj)->cp_distance -= change->cp_distance_change;
}
@@ -462,23 +476,20 @@ lifeline_change_free (LifelineChange *change)
{
if (change->type == LIFELINE_CHANGE_ADD ||
change->type == LIFELINE_CHANGE_DEL) {
- if (change->east->free)
- change->east->free (change->east);
- g_clear_pointer (&change->east, g_free);
-
- if (change->west->free)
- change->west->free (change->west);
- g_clear_pointer (&change->west, g_free);
+ g_clear_pointer (&change->east, dia_object_change_unref);
+ g_clear_pointer (&change->west, dia_object_change_unref);
}
}
-static ObjectChange *
-lifeline_create_change (Lifeline *lifeline, LifelineChangeType changetype, Point *clicked)
+static DiaObjectChange *
+lifeline_create_change (Lifeline *lifeline,
+ LifelineChangeType changetype,
+ Point *clicked)
{
LifelineChange *vc;
- vc = g_new0(LifelineChange,1);
+ vc = g_new0 (LifelineChange, 1);
vc->obj_change.apply = (ObjectChangeApplyFunc)lifeline_change_apply;
vc->obj_change.revert = (ObjectChangeRevertFunc)lifeline_change_revert;
vc->obj_change.free = (ObjectChangeFreeFunc)lifeline_change_free;
@@ -518,18 +529,21 @@ lifeline_create_change (Lifeline *lifeline, LifelineChangeType changetype, Point
default:
g_return_val_if_reached (NULL);
}
+
lifeline_update_data (lifeline);
- return (ObjectChange *) vc;
+
+ return dia_object_change_legacy_new ((ObjectChange *) vc);
}
-static ObjectChange *
-lifeline_cp_callback(DiaObject *obj, Point *clicked, gpointer data)
+static DiaObjectChange *
+lifeline_cp_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- LifelineChangeType type = GPOINTER_TO_INT(data);
- return lifeline_create_change((Lifeline *)obj, type, clicked);
+ LifelineChangeType type = GPOINTER_TO_INT (data);
+ return lifeline_create_change ((Lifeline *) obj, type, clicked);
}
+
static DiaMenuItem object_menu_items[] = {
{ N_("Add connection points"), lifeline_cp_callback, GINT_TO_POINTER(LIFELINE_CHANGE_ADD), 1 },
{ N_("Remove connection points"), lifeline_cp_callback, GINT_TO_POINTER(LIFELINE_CHANGE_DEL), 1 },
diff --git a/objects/UML/message.c b/objects/UML/message.c
index 5f0672e6d..ff306cfd8 100644
--- a/objects/UML/message.c
+++ b/objects/UML/message.c
@@ -75,10 +75,10 @@ struct _Message {
#define HANDLE_MOVE_TEXT (HANDLE_CUSTOM1)
-static ObjectChange* message_move_handle(Message *message, Handle *handle,
+static DiaObjectChange* message_move_handle(Message *message, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* message_move(Message *message, Point *to);
+static DiaObjectChange* message_move(Message *message, Point *to);
static void message_select(Message *message, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void message_draw(Message *message, DiaRenderer *renderer);
@@ -221,7 +221,7 @@ message_select(Message *message, Point *clicked_point,
connection_update_handles(&message->connection);
}
-static ObjectChange*
+static DiaObjectChange*
message_move_handle(Message *message, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -252,7 +252,7 @@ message_move_handle(Message *message, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
message_move(Message *message, Point *to)
{
Point start_to_end;
diff --git a/objects/UML/node.c b/objects/UML/node.c
index a5475ab6d..8e9643c7b 100644
--- a/objects/UML/node.c
+++ b/objects/UML/node.c
@@ -62,10 +62,10 @@ static const double NODE_TEXT_MARGIN = 0.5;
static real node_distance_from(Node *node, Point *point);
static void node_select(Node *node, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* node_move_handle(Node *node, Handle *handle,
+static DiaObjectChange* node_move_handle(Node *node, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* node_move(Node *node, Point *to);
+static DiaObjectChange* node_move(Node *node, Point *to);
static void node_draw(Node *node, DiaRenderer *renderer);
static DiaObject *node_create(Point *startpoint,
void *user_data,
@@ -189,7 +189,7 @@ node_select(Node *node, Point *clicked_point,
element_update_handles(&node->element);
}
-static ObjectChange*
+static DiaObjectChange*
node_move_handle(Node *node, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -206,7 +206,7 @@ node_move_handle(Node *node, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
node_move(Node *node, Point *to)
{
Point p;
diff --git a/objects/UML/note.c b/objects/UML/note.c
index 92e530906..69a121747 100644
--- a/objects/UML/note.c
+++ b/objects/UML/note.c
@@ -55,10 +55,10 @@ struct _Note {
static real note_distance_from(Note *note, Point *point);
static void note_select(Note *note, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* note_move_handle(Note *note, Handle *handle,
+static DiaObjectChange* note_move_handle(Note *note, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* note_move(Note *note, Point *to);
+static DiaObjectChange* note_move(Note *note, Point *to);
static void note_draw(Note *note, DiaRenderer *renderer);
static DiaObject *note_create(Point *startpoint,
void *user_data,
@@ -184,7 +184,7 @@ note_select(Note *note, Point *clicked_point,
element_update_handles(¬e->element);
}
-static ObjectChange*
+static DiaObjectChange*
note_move_handle(Note *note, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -198,7 +198,7 @@ note_move_handle(Note *note, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
note_move(Note *note, Point *to)
{
note->element.corner = *to;
diff --git a/objects/UML/object.c b/objects/UML/object.c
index 9389f61a6..82037388e 100644
--- a/objects/UML/object.c
+++ b/objects/UML/object.c
@@ -75,10 +75,10 @@ struct _Objet {
static real objet_distance_from(Objet *ob, Point *point);
static void objet_select(Objet *ob, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* objet_move_handle(Objet *ob, Handle *handle,
+static DiaObjectChange* objet_move_handle(Objet *ob, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* objet_move(Objet *ob, Point *to);
+static DiaObjectChange* objet_move(Objet *ob, Point *to);
static void objet_draw(Objet *ob, DiaRenderer *renderer);
static DiaObject *objet_create(Point *startpoint,
void *user_data,
@@ -248,7 +248,7 @@ objet_select(Objet *ob, Point *clicked_point,
element_update_handles(&ob->element);
}
-static ObjectChange*
+static DiaObjectChange*
objet_move_handle(Objet *ob, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -262,7 +262,7 @@ objet_move_handle(Objet *ob, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
objet_move(Objet *ob, Point *to)
{
ob->element.corner = *to;
diff --git a/objects/UML/realizes.c b/objects/UML/realizes.c
index 5a5da6977..585075d9e 100644
--- a/objects/UML/realizes.c
+++ b/objects/UML/realizes.c
@@ -62,10 +62,14 @@ struct _Realizes {
static real realizes_distance_from(Realizes *realize, Point *point);
static void realizes_select(Realizes *realize, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* realizes_move_handle(Realizes *realize, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* realizes_move(Realizes *realize, Point *to);
+static DiaObjectChange *realizes_move_handle (Realizes *realize,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *realizes_move (Realizes *realize,
+ Point *to);
static void realizes_draw(Realizes *realize, DiaRenderer *renderer);
static DiaObject *realizes_create(Point *startpoint,
void *user_data,
@@ -192,12 +196,17 @@ realizes_select(Realizes *realize, Point *clicked_point,
orthconn_update_data(&realize->orth);
}
-static ObjectChange*
-realizes_move_handle(Realizes *realize, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+realizes_move_handle (Realizes *realize,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- ObjectChange *change;
+ DiaObjectChange *change;
+
assert(realize!=NULL);
assert(handle!=NULL);
assert(to!=NULL);
@@ -208,15 +217,17 @@ realizes_move_handle(Realizes *realize, Handle *handle,
return change;
}
-static ObjectChange*
-realizes_move(Realizes *realize, Point *to)
+
+static DiaObjectChange *
+realizes_move (Realizes *realize, Point *to)
{
- orthconn_move(&realize->orth, to);
- realizes_update_data(realize);
+ orthconn_move (&realize->orth, to);
+ realizes_update_data (realize);
return NULL;
}
+
static void
realizes_draw (Realizes *realize, DiaRenderer *renderer)
{
@@ -349,21 +360,29 @@ realizes_update_data(Realizes *realize)
rectangle_union(&obj->bounding_box, &rect);
}
-static ObjectChange *
-realizes_add_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+realizes_add_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
- change = orthconn_add_segment((OrthConn *)obj, clicked);
- realizes_update_data((Realizes *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_add_segment ((OrthConn *) obj, clicked);
+ realizes_update_data ((Realizes *) obj);
+
return change;
}
-static ObjectChange *
-realizes_delete_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+realizes_delete_segment_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data)
{
- ObjectChange *change;
- change = orthconn_delete_segment((OrthConn *)obj, clicked);
- realizes_update_data((Realizes *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_delete_segment ((OrthConn *) obj, clicked);
+ realizes_update_data ((Realizes *) obj);
+
return change;
}
diff --git a/objects/UML/small_package.c b/objects/UML/small_package.c
index 9da0d8fbe..5d8df3856 100644
--- a/objects/UML/small_package.c
+++ b/objects/UML/small_package.c
@@ -64,10 +64,10 @@ struct _SmallPackage {
static real smallpackage_distance_from(SmallPackage *pkg, Point *point);
static void smallpackage_select(SmallPackage *pkg, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* smallpackage_move_handle(SmallPackage *pkg, Handle *handle,
+static DiaObjectChange* smallpackage_move_handle(SmallPackage *pkg, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* smallpackage_move(SmallPackage *pkg, Point *to);
+static DiaObjectChange* smallpackage_move(SmallPackage *pkg, Point *to);
static void smallpackage_draw(SmallPackage *pkg, DiaRenderer *renderer);
static DiaObject *smallpackage_create(Point *startpoint,
void *user_data,
@@ -201,7 +201,7 @@ smallpackage_select(SmallPackage *pkg, Point *clicked_point,
element_update_handles(&pkg->element);
}
-static ObjectChange*
+static DiaObjectChange*
smallpackage_move_handle(SmallPackage *pkg, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -215,7 +215,7 @@ smallpackage_move_handle(SmallPackage *pkg, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
smallpackage_move(SmallPackage *pkg, Point *to)
{
Point p;
diff --git a/objects/UML/state.c b/objects/UML/state.c
index 963bdd535..cc7b45d4a 100644
--- a/objects/UML/state.c
+++ b/objects/UML/state.c
@@ -81,10 +81,10 @@ struct _State {
static real state_distance_from(State *state, Point *point);
static void state_select(State *state, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* state_move_handle(State *state, Handle *handle,
+static DiaObjectChange* state_move_handle(State *state, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* state_move(State *state, Point *to);
+static DiaObjectChange* state_move(State *state, Point *to);
static void state_draw(State *state, DiaRenderer *renderer);
static DiaObject *state_create(Point *startpoint,
void *user_data,
@@ -221,7 +221,7 @@ state_select(State *state, Point *clicked_point,
element_update_handles(&state->element);
}
-static ObjectChange*
+static DiaObjectChange*
state_move_handle(State *state, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -235,7 +235,7 @@ state_move_handle(State *state, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
state_move(State *state, Point *to)
{
state->element.corner = *to;
diff --git a/objects/UML/state_term.c b/objects/UML/state_term.c
index d525770b3..12b20b399 100644
--- a/objects/UML/state_term.c
+++ b/objects/UML/state_term.c
@@ -61,10 +61,10 @@ struct _State {
static real state_distance_from(State *state, Point *point);
static void state_select(State *state, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* state_move_handle(State *state, Handle *handle,
+static DiaObjectChange* state_move_handle(State *state, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* state_move(State *state, Point *to);
+static DiaObjectChange* state_move(State *state, Point *to);
static void state_draw(State *state, DiaRenderer *renderer);
static DiaObject *state_create(Point *startpoint,
void *user_data,
@@ -168,7 +168,7 @@ state_select(State *state, Point *clicked_point,
element_update_handles(&state->element);
}
-static ObjectChange*
+static DiaObjectChange*
state_move_handle(State *state, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -182,7 +182,7 @@ state_move_handle(State *state, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
state_move(State *state, Point *to)
{
state->element.corner = *to;
diff --git a/objects/UML/transition.c b/objects/UML/transition.c
index 54040b980..0c2133d1b 100644
--- a/objects/UML/transition.c
+++ b/objects/UML/transition.c
@@ -74,23 +74,24 @@ static DiaMenu* transition_get_object_menu(Transition* transition,
static void transition_select(Transition* obj,
Point* clicked_point,
DiaRenderer* interactive_renderer);
-static ObjectChange* transition_move(Transition* transition, Point* pos);
-static ObjectChange* transition_move_handle(Transition* transition,
- Handle* handle,
- Point* pos,
- ConnectionPoint* cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
+static DiaObjectChange *transition_move (Transition *transition,
+ Point *pos);
+static DiaObjectChange *transition_move_handle (Transition *transition,
+ Handle *handle,
+ Point *pos,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
static void transition_set_props(Transition *transition, GPtrArray *props);
static void transition_get_props(Transition *transition, GPtrArray *props);
static PropDescription *transition_describe_props(Transition *transition);
static void uml_transition_update_data(Transition *transition);
-static ObjectChange* transition_add_segment_cb(DiaObject *obj,
- Point *clicked_point,
- gpointer data);
-static ObjectChange* transition_del_segment_cb(DiaObject *obj,
- Point *clicked_point,
- gpointer data);
+static DiaObjectChange* transition_add_segment_cb (DiaObject *obj,
+ Point *clicked_point,
+ gpointer data);
+static DiaObjectChange* transition_del_segment_cb (DiaObject *obj,
+ Point *clicked_point,
+ gpointer data);
static ObjectTypeOps uml_transition_type_ops = {
(CreateFunc)transition_create,
@@ -430,11 +431,11 @@ transition_select (Transition *transition,
}
-static ObjectChange*
+static DiaObjectChange *
transition_move (Transition* transition, Point* newpos)
{
Point delta;
- ObjectChange *change;
+ DiaObjectChange *change;
/* Find a delta in order to move the text handles along with the transition */
delta = *newpos;
@@ -452,7 +453,7 @@ transition_move (Transition* transition, Point* newpos)
}
-static ObjectChange*
+static DiaObjectChange *
transition_move_handle (Transition *transition,
Handle *handle,
Point *newpos,
@@ -460,7 +461,7 @@ transition_move_handle (Transition *transition,
HandleMoveReason reason,
ModifierKeys modifiers)
{
- ObjectChange *change = NULL;
+ DiaObjectChange *change = NULL;
g_return_val_if_fail (transition != NULL, NULL);
g_return_val_if_fail (handle != NULL, NULL);
@@ -528,12 +529,12 @@ transition_move_handle (Transition *transition,
}
-static ObjectChange *
+static DiaObjectChange *
transition_add_segment_cb (DiaObject *obj,
Point *clickedpoint,
gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
change = orthconn_add_segment ((OrthConn *) obj, clickedpoint);
uml_transition_update_data ((Transition *) obj);
@@ -542,12 +543,12 @@ transition_add_segment_cb (DiaObject *obj,
}
-static ObjectChange *
+static DiaObjectChange *
transition_del_segment_cb (DiaObject *obj,
Point *clickedpoint,
gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
change = orthconn_delete_segment ((OrthConn *) obj, clickedpoint);
uml_transition_update_data ((Transition *) obj);
diff --git a/objects/UML/usecase.c b/objects/UML/usecase.c
index c71b54556..1146ccbd4 100644
--- a/objects/UML/usecase.c
+++ b/objects/UML/usecase.c
@@ -71,10 +71,10 @@ struct _UsecasePropertiesDialog {
static real usecase_distance_from(Usecase *usecase, Point *point);
static void usecase_select(Usecase *usecase, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* usecase_move_handle(Usecase *usecase, Handle *handle,
+static DiaObjectChange* usecase_move_handle(Usecase *usecase, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* usecase_move(Usecase *usecase, Point *to);
+static DiaObjectChange* usecase_move(Usecase *usecase, Point *to);
static void usecase_draw(Usecase *usecase, DiaRenderer *renderer);
static DiaObject *usecase_create(Point *startpoint,
void *user_data,
@@ -193,7 +193,7 @@ usecase_select(Usecase *usecase, Point *clicked_point,
element_update_handles(&usecase->element);
}
-static ObjectChange*
+static DiaObjectChange*
usecase_move_handle(Usecase *usecase, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -207,7 +207,7 @@ usecase_move_handle(Usecase *usecase, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
usecase_move(Usecase *usecase, Point *to)
{
real h;
diff --git a/objects/chronogram/chronoline.c b/objects/chronogram/chronoline.c
index 90cab1521..c33fb9d0e 100644
--- a/objects/chronogram/chronoline.c
+++ b/objects/chronogram/chronoline.c
@@ -72,8 +72,8 @@ typedef struct _Chronoline {
CLEventList *evtlist;
int checksum;
- real labelwidth;
- real y_down,y_up;
+ double labelwidth;
+ double y_down,y_up;
Color gray, datagray;
} Chronoline;
@@ -81,11 +81,14 @@ typedef struct _Chronoline {
static real chronoline_distance_from(Chronoline *chronoline, Point *point);
static void chronoline_select(Chronoline *chronoline, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* chronoline_move_handle(Chronoline *chronoline, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange* chronoline_move(Chronoline *chronoline, Point *to);
+static DiaObjectChange *chronoline_move_handle (Chronoline *chronoline,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *chronoline_move (Chronoline *chronoline,
+ Point *to);
static void chronoline_draw(Chronoline *chronoline, DiaRenderer *renderer);
static void chronoline_update_data(Chronoline *chronoline);
static DiaObject *chronoline_create(Point *startpoint,
@@ -254,31 +257,41 @@ chronoline_select(Chronoline *chronoline, Point *clicked_point,
element_update_handles(&chronoline->element);
}
-static ObjectChange*
-chronoline_move_handle(Chronoline *chronoline, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+chronoline_move_handle (Chronoline *chronoline,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
g_assert(chronoline!=NULL);
g_assert(handle!=NULL);
g_assert(to!=NULL);
- element_move_handle(&chronoline->element, handle->id, to, cp,
- reason, modifiers);
- chronoline_update_data(chronoline);
+ element_move_handle (&chronoline->element,
+ handle->id,
+ to,
+ cp,
+ reason,
+ modifiers);
+ chronoline_update_data (chronoline);
return NULL;
}
-static ObjectChange*
-chronoline_move(Chronoline *chronoline, Point *to)
+
+static DiaObjectChange*
+chronoline_move (Chronoline *chronoline, Point *to)
{
chronoline->element.corner = *to;
- chronoline_update_data(chronoline);
+ chronoline_update_data (chronoline);
return NULL;
}
+
static void
cld_onebit (Chronoline *chronoline,
DiaRenderer *renderer,
diff --git a/objects/chronogram/chronoref.c b/objects/chronogram/chronoref.c
index 6d8be4fe3..e8d2bb6d8 100644
--- a/objects/chronogram/chronoref.c
+++ b/objects/chronogram/chronoref.c
@@ -72,11 +72,14 @@ typedef struct _Chronoref {
static real chronoref_distance_from(Chronoref *chronoref, Point *point);
static void chronoref_select(Chronoref *chronoref, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* chronoref_move_handle(Chronoref *chronoref, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange* chronoref_move(Chronoref *chronoref, Point *to);
+static DiaObjectChange *chronoref_move_handle (Chronoref *chronoref,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *chronoref_move (Chronoref *chronoref,
+ Point *to);
static void chronoref_draw(Chronoref *chronoref, DiaRenderer *renderer);
static void chronoref_update_data(Chronoref *chronoref);
static DiaObject *chronoref_create(Point *startpoint,
@@ -233,31 +236,41 @@ chronoref_select(Chronoref *chronoref, Point *clicked_point,
element_update_handles(&chronoref->element);
}
-static ObjectChange*
-chronoref_move_handle(Chronoref *chronoref, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+chronoref_move_handle (Chronoref *chronoref,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
g_assert(chronoref!=NULL);
g_assert(handle!=NULL);
g_assert(to!=NULL);
- element_move_handle(&chronoref->element, handle->id, to, cp,
- reason, modifiers);
- chronoref_update_data(chronoref);
+ element_move_handle (&chronoref->element,
+ handle->id,
+ to,
+ cp,
+ reason,
+ modifiers);
+ chronoref_update_data (chronoref);
return NULL;
}
-static ObjectChange*
-chronoref_move(Chronoref *chronoref, Point *to)
+
+static DiaObjectChange *
+chronoref_move (Chronoref *chronoref, Point *to)
{
chronoref->element.corner = *to;
- chronoref_update_data(chronoref);
+ chronoref_update_data (chronoref);
return NULL;
}
+
static void
chronoref_draw(Chronoref *chronoref, DiaRenderer *renderer)
{
diff --git a/objects/custom/custom_object.c b/objects/custom/custom_object.c
index 82a8bed63..33b844681 100644
--- a/objects/custom/custom_object.c
+++ b/objects/custom/custom_object.c
@@ -46,6 +46,7 @@
#include "dia_image.h"
#include "custom_object.h"
#include "prefs.h"
+#include "dia-object-change-legacy.h"
#include "pixmaps/custom.xpm"
@@ -74,8 +75,8 @@ struct _Custom {
/*! ShapeInfo giving the object it's drawing info */
ShapeInfo *info;
/*! transformation coords */
- real xscale, yscale;
- real xoffs, yoffs;
+ double xscale, yscale;
+ double xoffs, yoffs;
/*!
* The sub-scale variables
@@ -83,8 +84,8 @@ struct _Custom {
* (shift-pressed) scaling
* @{
*/
- real subscale;
- real old_subscale;
+ double subscale;
+ double old_subscale;
/*! @} */
/*!
* \brief Pointer changing during the drawing of the display list
@@ -96,29 +97,35 @@ struct _Custom {
/*! Connection points need to be dynamically allocated */
ConnectionPoint *connections;
/*! width calculate from line_width */
- real border_width;
+ double border_width;
Color border_color;
Color inner_color;
gboolean show_background;
LineStyle line_style;
- real dashlength;
+ double dashlength;
gboolean flip_h, flip_v;
Text *text;
- real padding;
+ double padding;
TextFitting text_fitting;
};
-static real custom_distance_from(Custom *custom, Point *point);
-static void custom_select(Custom *custom, Point *clicked_point,
- DiaRenderer *interactive_renderer);
-static ObjectChange* custom_move_handle(Custom *custom, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange* custom_move(Custom *custom, Point *to);
+
+static double custom_distance_from (Custom *custom,
+ Point *point);
+static void custom_select (Custom *custom,
+ Point *clicked_point,
+ DiaRenderer *interactive_renderer);
+static DiaObjectChange *custom_move_handle (Custom *custom,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *custom_move (Custom *custom,
+ Point *to);
static void custom_draw(Custom *custom, DiaRenderer *renderer);
static void custom_draw_displaylist(GList *display_list, Custom *custom,
DiaRenderer *renderer, GArray *arr, GArray *barr, real* cur_line,
@@ -788,7 +795,7 @@ custom_adjust_scale (Custom *custom,
}
-static ObjectChange*
+static DiaObjectChange *
custom_move_handle (Custom *custom,
Handle *handle,
Point *to,
@@ -862,40 +869,43 @@ custom_move_handle (Custom *custom,
return NULL;
}
-static ObjectChange*
-custom_move(Custom *custom, Point *to)
+
+static DiaObjectChange *
+custom_move (Custom *custom, Point *to)
{
custom->element.corner = *to;
- custom_update_data(custom, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
+ custom_update_data (custom, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
return NULL;
}
+
static void
-get_colour(Custom *custom, Color *colour, gint32 c, real opacity)
+get_colour (Custom *custom, Color *colour, gint32 c, double opacity)
{
switch (c) {
- case DIA_SVG_COLOUR_NONE:
- break;
- case DIA_SVG_COLOUR_FOREGROUND:
- *colour = custom->border_color;
- break;
- case DIA_SVG_COLOUR_BACKGROUND:
- *colour = custom->inner_color;
- break;
- case DIA_SVG_COLOUR_TEXT:
- *colour = custom->text->color;
- break;
- default:
- colour->alpha = opacity;
- colour->red = ((c & 0x00ff0000) >> 16) / 255.0;
- colour->green = ((c & 0x0000ff00) >> 8) / 255.0;
- colour->blue = (c & 0x000000ff) / 255.0;
- break;
+ case DIA_SVG_COLOUR_NONE:
+ break;
+ case DIA_SVG_COLOUR_FOREGROUND:
+ *colour = custom->border_color;
+ break;
+ case DIA_SVG_COLOUR_BACKGROUND:
+ *colour = custom->inner_color;
+ break;
+ case DIA_SVG_COLOUR_TEXT:
+ *colour = custom->text->color;
+ break;
+ default:
+ colour->alpha = opacity;
+ colour->red = ((c & 0x00ff0000) >> 16) / 255.0;
+ colour->green = ((c & 0x0000ff00) >> 8) / 255.0;
+ colour->blue = (c & 0x000000ff) / 255.0;
+ break;
}
}
+
static void
custom_draw (Custom *custom, DiaRenderer *renderer)
{
@@ -1870,11 +1880,11 @@ custom_change_revert (struct CustomObjectChange *change,
}
-static ObjectChange *
+static DiaObjectChange *
custom_flip_h_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Custom *custom = (Custom *)obj;
- struct CustomObjectChange *change = g_new0(struct CustomObjectChange, 1);
+ struct CustomObjectChange *change = g_new0 (struct CustomObjectChange, 1);
change->objchange.apply = (ObjectChangeApplyFunc)custom_change_apply;
change->objchange.revert = (ObjectChangeRevertFunc)custom_change_revert;
@@ -1885,14 +1895,15 @@ custom_flip_h_callback (DiaObject *obj, Point *clicked, gpointer data)
custom->flip_h = !custom->flip_h;
custom_update_data(custom, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
- return &change->objchange;
+ return dia_object_change_legacy_new (&change->objchange);
}
-static ObjectChange *
+
+static DiaObjectChange *
custom_flip_v_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Custom *custom = (Custom *)obj;
- struct CustomObjectChange *change = g_new0(struct CustomObjectChange, 1);
+ struct CustomObjectChange *change = g_new0 (struct CustomObjectChange, 1);
change->objchange.apply = (ObjectChangeApplyFunc)custom_change_apply;
change->objchange.revert = (ObjectChangeRevertFunc)custom_change_revert;
@@ -1903,9 +1914,10 @@ custom_flip_v_callback (DiaObject *obj, Point *clicked, gpointer data)
custom->flip_v = !custom->flip_v;
custom_update_data(custom, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
- return &change->objchange;
+ return dia_object_change_legacy_new (&change->objchange);
}
+
static DiaMenuItem custom_menu_items[] = {
{ N_("Flip Horizontal"), custom_flip_h_callback, NULL, 1 },
{ N_("Flip Vertical"), custom_flip_v_callback, NULL, 1 },
diff --git a/objects/flowchart/box.c b/objects/flowchart/box.c
index 9fa87c9db..8c6e4514f 100644
--- a/objects/flowchart/box.c
+++ b/objects/flowchart/box.c
@@ -80,11 +80,14 @@ static BoxProperties default_properties;
static real box_distance_from(Box *box, Point *point);
static void box_select(Box *box, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* box_move_handle(Box *box, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange* box_move(Box *box, Point *to);
+static DiaObjectChange *box_move_handle (Box *box,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *box_move (Box *box,
+ Point *to);
static void box_draw(Box *box, DiaRenderer *renderer);
static void box_update_data(Box *box, AnchorShape horix, AnchorShape vert);
static DiaObject *box_create(Point *startpoint,
@@ -262,7 +265,7 @@ box_select (Box *box,
}
-static ObjectChange *
+static DiaObjectChange *
box_move_handle (Box *box,
Handle *handle,
Point *to,
@@ -272,7 +275,7 @@ box_move_handle (Box *box,
{
AnchorShape horiz = ANCHOR_MIDDLE, vert = ANCHOR_MIDDLE;
Point corner;
- real width, height;
+ double width, height;
g_return_val_if_fail (box != NULL, NULL);
g_return_val_if_fail (handle != NULL, NULL);
@@ -338,7 +341,7 @@ box_move_handle (Box *box,
}
-static ObjectChange*
+static DiaObjectChange *
box_move (Box *box, Point *to)
{
box->element.corner = *to;
diff --git a/objects/flowchart/diamond.c b/objects/flowchart/diamond.c
index fdc17bbfd..23b5ddf05 100644
--- a/objects/flowchart/diamond.c
+++ b/objects/flowchart/diamond.c
@@ -80,11 +80,14 @@ static DiamondProperties default_properties;
static real diamond_distance_from(Diamond *diamond, Point *point);
static void diamond_select(Diamond *diamond, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* diamond_move_handle(Diamond *diamond, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange* diamond_move(Diamond *diamond, Point *to);
+static DiaObjectChange* diamond_move_handle (Diamond *diamond,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange* diamond_move (Diamond *diamond,
+ Point *to);
static void diamond_draw(Diamond *diamond, DiaRenderer *renderer);
static void diamond_update_data(Diamond *diamond, AnchorShape h,AnchorShape v);
static DiaObject *diamond_create(Point *startpoint,
@@ -272,14 +275,17 @@ diamond_select (Diamond *diamond,
}
-static ObjectChange*
-diamond_move_handle(Diamond *diamond, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+static DiaObjectChange *
+diamond_move_handle (Diamond *diamond,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
AnchorShape horiz = ANCHOR_MIDDLE, vert = ANCHOR_MIDDLE;
Point corner;
- real width, height;
+ double width, height;
g_return_val_if_fail (diamond != NULL, NULL);
g_return_val_if_fail (handle != NULL, NULL);
@@ -345,16 +351,18 @@ diamond_move_handle(Diamond *diamond, Handle *handle,
return NULL;
}
-static ObjectChange*
-diamond_move(Diamond *diamond, Point *to)
+
+static DiaObjectChange*
+diamond_move (Diamond *diamond, Point *to)
{
diamond->element.corner = *to;
- diamond_update_data(diamond, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
+ diamond_update_data (diamond, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
return NULL;
}
+
static void
diamond_draw(Diamond *diamond, DiaRenderer *renderer)
{
diff --git a/objects/flowchart/ellipse.c b/objects/flowchart/ellipse.c
index 642d98587..6c6134a2a 100644
--- a/objects/flowchart/ellipse.c
+++ b/objects/flowchart/ellipse.c
@@ -79,11 +79,14 @@ static EllipseProperties default_properties;
static real ellipse_distance_from(Ellipse *ellipse, Point *point);
static void ellipse_select(Ellipse *ellipse, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* ellipse_move_handle(Ellipse *ellipse, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange* ellipse_move(Ellipse *ellipse, Point *to);
+static DiaObjectChange* ellipse_move_handle (Ellipse *ellipse,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange* ellipse_move (Ellipse *ellipse,
+ Point *to);
static void ellipse_draw(Ellipse *ellipse, DiaRenderer *renderer);
static void ellipse_update_data(Ellipse *ellipse, AnchorShape h,AnchorShape v);
static DiaObject *ellipse_create(Point *startpoint,
@@ -271,7 +274,7 @@ ellipse_select (Ellipse *ellipse,
}
-static ObjectChange*
+static DiaObjectChange *
ellipse_move_handle (Ellipse *ellipse,
Handle *handle,
Point *to,
@@ -347,16 +350,18 @@ ellipse_move_handle (Ellipse *ellipse,
return NULL;
}
-static ObjectChange*
-ellipse_move(Ellipse *ellipse, Point *to)
+
+static DiaObjectChange *
+ellipse_move (Ellipse *ellipse, Point *to)
{
ellipse->element.corner = *to;
- ellipse_update_data(ellipse, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
+ ellipse_update_data (ellipse, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
return NULL;
}
+
static void
ellipse_draw (Ellipse *ellipse, DiaRenderer *renderer)
{
diff --git a/objects/flowchart/parallelogram.c b/objects/flowchart/parallelogram.c
index 68c764d9f..213ccf7c9 100644
--- a/objects/flowchart/parallelogram.c
+++ b/objects/flowchart/parallelogram.c
@@ -81,11 +81,14 @@ static PgramProperties default_properties;
static real pgram_distance_from(Pgram *pgram, Point *point);
static void pgram_select(Pgram *pgram, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* pgram_move_handle(Pgram *pgram, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange* pgram_move(Pgram *pgram, Point *to);
+static DiaObjectChange *pgram_move_handle (Pgram *pgram,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *pgram_move (Pgram *pgram,
+ Point *to);
static void pgram_draw(Pgram *pgram, DiaRenderer *renderer);
static void pgram_update_data(Pgram *pgram, AnchorShape h, AnchorShape v);
static DiaObject *pgram_create(Point *startpoint,
@@ -270,7 +273,7 @@ pgram_select(Pgram *pgram, Point *clicked_point,
}
-static ObjectChange*
+static DiaObjectChange *
pgram_move_handle (Pgram *pgram,
Handle *handle,
Point *to,
@@ -345,16 +348,18 @@ pgram_move_handle (Pgram *pgram,
return NULL;
}
-static ObjectChange*
-pgram_move(Pgram *pgram, Point *to)
+
+static DiaObjectChange *
+pgram_move (Pgram *pgram, Point *to)
{
pgram->element.corner = *to;
- pgram_update_data(pgram, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
+ pgram_update_data (pgram, ANCHOR_MIDDLE, ANCHOR_MIDDLE);
return NULL;
}
+
static void
pgram_draw (Pgram *pgram, DiaRenderer *renderer)
{
diff --git a/objects/network/basestation.c b/objects/network/basestation.c
index e705a2c2f..d6ec77aa5 100644
--- a/objects/network/basestation.c
+++ b/objects/network/basestation.c
@@ -61,12 +61,14 @@ static real basestation_distance_from(Basestation *basestation,
static void basestation_select(Basestation *basestation,
Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange
- *basestation_move_handle(Basestation *basestation, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange *basestation_move(Basestation *basestation, Point *to);
+static DiaObjectChange *basestation_move_handle (Basestation *basestation,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *basestation_move (Basestation *basestation,
+ Point *to);
static void basestation_draw(Basestation *basestation,
DiaRenderer *renderer);
static DiaObject *basestation_create(Point *startpoint,
@@ -187,12 +189,16 @@ basestation_select(Basestation *basestation, Point *clicked_point,
element_update_handles(&basestation->element);
}
-static ObjectChange*
-basestation_move_handle(Basestation *basestation, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+basestation_move_handle (Basestation *basestation,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- ObjectChange* oc;
+ DiaObjectChange *oc;
assert(basestation!=NULL);
assert(handle!=NULL);
@@ -207,8 +213,9 @@ basestation_move_handle(Basestation *basestation, Handle *handle,
return oc;
}
-static ObjectChange*
-basestation_move(Basestation *basestation, Point *to)
+
+static DiaObjectChange*
+basestation_move (Basestation *basestation, Point *to)
{
Element *elem = &basestation->element;
diff --git a/objects/network/bus.c b/objects/network/bus.c
index b183764b7..75e745705 100644
--- a/objects/network/bus.c
+++ b/objects/network/bus.c
@@ -29,6 +29,7 @@
#include "attributes.h"
#include "diamenu.h"
#include "properties.h"
+#include "dia-object-change-legacy.h"
#include "pixmaps/bus.xpm"
@@ -65,10 +66,15 @@ struct PointChange {
ConnectionPoint *connected_to; /* NULL if not connected */
};
-static ObjectChange* bus_move_handle(Bus *bus, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* bus_move(Bus *bus, Point *to);
+
+static DiaObjectChange* bus_move_handle (Bus *bus,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange* bus_move (Bus *bus,
+ Point *to);
static void bus_select(Bus *bus, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void bus_draw(Bus *bus, DiaRenderer *renderer);
@@ -88,10 +94,11 @@ static void bus_save(Bus *bus, ObjectNode obj_node, DiaContext *ctx);
static DiaObject *bus_load(ObjectNode obj_node, int version, DiaContext *ctx);
static DiaMenu *bus_get_object_menu(Bus *bus, Point *clickedpoint);
-static ObjectChange *
-bus_create_change(Bus *bus, enum change_type type,
- Point *point, Handle *handle,
- ConnectionPoint *connected_to);
+static DiaObjectChange *bus_create_change (Bus *bus,
+ enum change_type type,
+ Point *point,
+ Handle *handle,
+ ConnectionPoint *connected_to);
static ObjectTypeOps bus_type_ops =
@@ -190,19 +197,23 @@ bus_select(Bus *bus, Point *clicked_point,
connection_update_handles(&bus->connection);
}
-static ObjectChange*
-bus_move_handle(Bus *bus, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+bus_move_handle (Bus *bus,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
Connection *conn = &bus->connection;
Point *endpoints;
- real *parallel=NULL;
- real *perp=NULL;
+ double *parallel=NULL;
+ double *perp=NULL;
Point vhat, vhatperp;
Point u;
- real vlen, vlen2;
- real len_scale;
+ double vlen, vlen2;
+ double len_scale;
int i;
const int num_handles = bus->num_handles; /* const to help scan-build */
@@ -263,8 +274,9 @@ bus_move_handle(Bus *bus, Handle *handle,
return NULL;
}
-static ObjectChange*
-bus_move(Bus *bus, Point *to)
+
+static DiaObjectChange *
+bus_move (Bus *bus, Point *to)
{
Point delta;
Point *endpoints = &bus->connection.endpoints[0];
@@ -534,7 +546,8 @@ bus_remove_handle(Bus *bus, Handle *handle)
}
}
-static ObjectChange *
+
+static DiaObjectChange *
bus_add_handle_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Bus *bus = (Bus *) obj;
@@ -571,7 +584,8 @@ bus_point_near_handle(Bus *bus, Point *p)
return -1;
}
-static ObjectChange *
+
+static DiaObjectChange *
bus_delete_handle_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Bus *bus = (Bus *) obj;
@@ -744,10 +758,12 @@ bus_change_revert (struct PointChange *change, DiaObject *obj)
}
-static ObjectChange *
-bus_create_change(Bus *bus, enum change_type type,
- Point *point, Handle *handle,
- ConnectionPoint *connected_to)
+static DiaObjectChange *
+bus_create_change (Bus *bus,
+ enum change_type type,
+ Point *point,
+ Handle *handle,
+ ConnectionPoint *connected_to)
{
struct PointChange *change;
@@ -763,7 +779,5 @@ bus_create_change(Bus *bus, enum change_type type,
change->handle = handle;
change->connected_to = connected_to;
- return (ObjectChange *)change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
-
-
diff --git a/objects/network/radiocell.c b/objects/network/radiocell.c
index 2ceb3db7e..8519da12d 100644
--- a/objects/network/radiocell.c
+++ b/objects/network/radiocell.c
@@ -58,12 +58,12 @@ struct _RadioCell {
static real radiocell_distance_from(RadioCell *radiocell, Point *point);
static void radiocell_select(RadioCell *radiocell, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* radiocell_move_handle(RadioCell *radiocell,
+static DiaObjectChange* radiocell_move_handle(RadioCell *radiocell,
Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason,
ModifierKeys modifiers);
-static ObjectChange* radiocell_move(RadioCell *radiocell, Point *to);
+static DiaObjectChange* radiocell_move(RadioCell *radiocell, Point *to);
static void radiocell_draw(RadioCell *radiocell, DiaRenderer *renderer);
static DiaObject *radiocell_create(Point *startpoint,
void *user_data,
@@ -193,7 +193,7 @@ radiocell_select(RadioCell *radiocell, Point *clicked_point,
radiocell_update_data(radiocell);
}
-static ObjectChange*
+static DiaObjectChange*
radiocell_move_handle(RadioCell *radiocell, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -230,7 +230,7 @@ radiocell_move_handle(RadioCell *radiocell, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
radiocell_move(RadioCell *radiocell, Point *to)
{
polyshape_move(&radiocell->poly, to);
diff --git a/objects/network/wanlink.c b/objects/network/wanlink.c
index 54ff6e35d..db788708a 100644
--- a/objects/network/wanlink.c
+++ b/objects/network/wanlink.c
@@ -61,8 +61,8 @@ static real wanlink_distance_from(WanLink *wanlink, Point *point);
static void wanlink_select(WanLink *wanlink, Point *clicked_point,
DiaRenderer *interactive_renderer);
static DiaObject *wanlink_copy(WanLink *wanlink);
-static ObjectChange* wanlink_move(WanLink *wanlink, Point *to);
-static ObjectChange* wanlink_move_handle(WanLink *wanlink, Handle *handle,
+static DiaObjectChange* wanlink_move(WanLink *wanlink, Point *to);
+static DiaObjectChange* wanlink_move_handle(WanLink *wanlink, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason,
ModifierKeys modifiers);
@@ -265,7 +265,7 @@ wanlink_copy(WanLink *wanlink)
return (DiaObject *)newwanlink;
}
-static ObjectChange*
+static DiaObjectChange*
wanlink_move(WanLink *wanlink, Point *to)
{
Point delta;
@@ -285,7 +285,7 @@ wanlink_move(WanLink *wanlink, Point *to)
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
wanlink_move_handle(WanLink *wanlink, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
diff --git a/objects/standard/arc.c b/objects/standard/arc.c
index 5d477bb4e..425fc8358 100644
--- a/objects/standard/arc.c
+++ b/objects/standard/arc.c
@@ -71,10 +71,10 @@ struct _Arc {
};
/* updates both endpoints and arc->curve_distance */
-static ObjectChange* arc_move_handle(Arc *arc, Handle *handle,
+static DiaObjectChange* arc_move_handle(Arc *arc, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* arc_move(Arc *arc, Point *to);
+static DiaObjectChange* arc_move(Arc *arc, Point *to);
static void arc_select(Arc *arc, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void arc_draw(Arc *arc, DiaRenderer *renderer);
@@ -334,7 +334,7 @@ point_projection_is_between (const Point *c,
return (c->x == a->x && c->y == a->y);
}
-static ObjectChange*
+static DiaObjectChange*
arc_move_handle(Arc *arc, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -428,7 +428,7 @@ arc_move_handle(Arc *arc, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
arc_move(Arc *arc, Point *to)
{
Point start_to_end;
diff --git a/objects/standard/bezier.c b/objects/standard/bezier.c
index 66a2d1254..94913ab03 100644
--- a/objects/standard/bezier.c
+++ b/objects/standard/bezier.c
@@ -51,17 +51,21 @@ struct _Bezierline {
LineStyle line_style;
LineJoin line_join;
LineCaps line_caps;
- real dashlength;
- real line_width;
+ double dashlength;
+ double line_width;
Arrow start_arrow, end_arrow;
- real absolute_start_gap, absolute_end_gap;
+ double absolute_start_gap, absolute_end_gap;
};
-static ObjectChange* bezierline_move_handle(Bezierline *bezierline, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* bezierline_move(Bezierline *bezierline, Point *to);
+static DiaObjectChange* bezierline_move_handle (Bezierline *bezierline,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange* bezierline_move (Bezierline *bezierline,
+ Point *to);
static void bezierline_select(Bezierline *bezierline, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void bezierline_draw(Bezierline *bezierline, DiaRenderer *renderer);
@@ -222,10 +226,14 @@ bezierline_select(Bezierline *bezierline, Point *clicked_point,
bezierconn_update_data(&bezierline->bez);
}
-static ObjectChange*
-bezierline_move_handle(Bezierline *bezierline, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+bezierline_move_handle (Bezierline *bezierline,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
assert(bezierline!=NULL);
assert(handle!=NULL);
@@ -256,15 +264,16 @@ bezierline_move_handle(Bezierline *bezierline, Handle *handle,
}
-static ObjectChange*
-bezierline_move(Bezierline *bezierline, Point *to)
+static DiaObjectChange *
+bezierline_move (Bezierline *bezierline, Point *to)
{
- bezierconn_move(&bezierline->bez, to);
- bezierline_update_data(bezierline);
+ bezierconn_move (&bezierline->bez, to);
+ bezierline_update_data (bezierline);
return NULL;
}
+
static void
exchange_bez_gap_points(BezierConn * bez, Point* gap_points)
{
@@ -719,48 +728,58 @@ bezierline_load(ObjectNode obj_node, int version, DiaContext *ctx)
return &bezierline->bez.object;
}
-static ObjectChange *
+
+static DiaObjectChange *
bezierline_add_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Bezierline *bezierline = (Bezierline*) obj;
int segment;
- ObjectChange *change;
+ DiaObjectChange *change;
+
+ segment = bezierline_closest_segment (bezierline, clicked);
+ change = bezierconn_add_segment (&bezierline->bez, segment, clicked);
+ bezierline_update_data (bezierline);
- segment = bezierline_closest_segment(bezierline, clicked);
- change = bezierconn_add_segment(&bezierline->bez, segment, clicked);
- bezierline_update_data(bezierline);
return change;
}
-static ObjectChange *
+
+static DiaObjectChange *
bezierline_delete_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
{
int seg_nr;
Bezierline *bezierline = (Bezierline*) obj;
- ObjectChange *change;
+ DiaObjectChange *change;
- seg_nr = beziercommon_closest_segment(&bezierline->bez.bezier, clicked, bezierline->line_width);
+ seg_nr = beziercommon_closest_segment (&bezierline->bez.bezier, clicked, bezierline->line_width);
+
+ change = bezierconn_remove_segment (&bezierline->bez, seg_nr+1);
+ bezierline_update_data (bezierline);
- change = bezierconn_remove_segment(&bezierline->bez, seg_nr+1);
- bezierline_update_data(bezierline);
return change;
}
-static ObjectChange *
-bezierline_set_corner_type_callback (DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+bezierline_set_corner_type_callback (DiaObject *obj,
+ Point *clicked,
+ gpointer data)
{
Handle *closest;
Bezierline *bezierline = (Bezierline*) obj;
- ObjectChange *change;
+ DiaObjectChange *change;
- closest = bezierconn_closest_major_handle(&bezierline->bez, clicked);
- change = bezierconn_set_corner_type(&bezierline->bez, closest,
- GPOINTER_TO_INT(data));
+ closest = bezierconn_closest_major_handle (&bezierline->bez, clicked);
+ change = bezierconn_set_corner_type (&bezierline->bez,
+ closest,
+ GPOINTER_TO_INT (data));
+
+ bezierline_update_data (bezierline);
- bezierline_update_data(bezierline);
return change;
}
+
static DiaMenuItem bezierline_menu_items[] = {
{ N_("Add Segment"), bezierline_add_segment_callback, NULL, 1 },
{ N_("Delete Segment"), bezierline_delete_segment_callback, NULL, 1 },
diff --git a/objects/standard/beziergon.c b/objects/standard/beziergon.c
index c944310df..9715f3705 100644
--- a/objects/standard/beziergon.c
+++ b/objects/standard/beziergon.c
@@ -62,10 +62,15 @@ static struct _BeziergonProperties {
gboolean show_background;
} default_properties = { TRUE };
-static ObjectChange* beziergon_move_handle(Beziergon *beziergon, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* beziergon_move(Beziergon *beziergon, Point *to);
+
+static DiaObjectChange* beziergon_move_handle (Beziergon *beziergon,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange* beziergon_move (Beziergon *beziergon,
+ Point *to);
static void beziergon_select(Beziergon *beziergon, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void beziergon_draw(Beziergon *beziergon, DiaRenderer *renderer);
@@ -184,31 +189,36 @@ beziergon_select(Beziergon *beziergon, Point *clicked_point,
beziershape_update_data(&beziergon->bezier);
}
-static ObjectChange*
-beziergon_move_handle(Beziergon *beziergon, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange*
+beziergon_move_handle (Beziergon *beziergon,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
assert(beziergon!=NULL);
assert(handle!=NULL);
assert(to!=NULL);
- beziershape_move_handle(&beziergon->bezier, handle, to, cp, reason, modifiers);
- beziergon_update_data(beziergon);
+ beziershape_move_handle (&beziergon->bezier, handle, to, cp, reason, modifiers);
+ beziergon_update_data (beziergon);
return NULL;
}
-static ObjectChange*
-beziergon_move(Beziergon *beziergon, Point *to)
+static DiaObjectChange *
+beziergon_move (Beziergon *beziergon, Point *to)
{
- beziershape_move(&beziergon->bezier, to);
- beziergon_update_data(beziergon);
+ beziershape_move (&beziergon->bezier, to);
+ beziergon_update_data (beziergon);
return NULL;
}
+
static void
beziergon_draw (Beziergon *beziergon, DiaRenderer *renderer)
{
@@ -473,12 +483,13 @@ beziergon_load(ObjectNode obj_node, int version, DiaContext *ctx)
return &beziergon->bezier.object;
}
-static ObjectChange *
+
+static DiaObjectChange *
beziergon_add_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Beziergon *bezier = (Beziergon*) obj;
int segment;
- ObjectChange *change;
+ DiaObjectChange *change;
segment = beziergon_closest_segment(bezier, clicked);
change = beziershape_add_segment(&bezier->bezier, segment, clicked);
@@ -487,12 +498,13 @@ beziergon_add_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
return change;
}
-static ObjectChange *
+
+static DiaObjectChange *
beziergon_delete_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
{
int seg_nr;
Beziergon *bezier = (Beziergon*) obj;
- ObjectChange *change;
+ DiaObjectChange *change;
seg_nr = beziergon_closest_segment(bezier, clicked);
change = beziershape_remove_segment(&bezier->bezier, seg_nr+1);
@@ -501,12 +513,13 @@ beziergon_delete_segment_callback (DiaObject *obj, Point *clicked, gpointer data
return change;
}
-static ObjectChange *
+
+static DiaObjectChange *
beziergon_set_corner_type_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Handle *closest;
Beziergon *beziergon = (Beziergon *) obj;
- ObjectChange *change;
+ DiaObjectChange *change;
closest = beziershape_closest_major_handle(&beziergon->bezier, clicked);
change = beziershape_set_corner_type(&beziergon->bezier, closest,
diff --git a/objects/standard/box.c b/objects/standard/box.c
index 47c17e812..9371d508a 100644
--- a/objects/standard/box.c
+++ b/objects/standard/box.c
@@ -31,6 +31,8 @@
#include "create.h"
#include "message.h"
#include "pattern.h"
+#include "dia-object-change-legacy.h"
+
#define DEFAULT_WIDTH 2.0
#define DEFAULT_HEIGHT 1.0
@@ -75,32 +77,44 @@ static struct _BoxProperties {
AspectType aspect;
} default_properties = { TRUE, 0.0 };
-static real box_distance_from(Box *box, Point *point);
-static void box_select(Box *box, Point *clicked_point,
- DiaRenderer *interactive_renderer);
-static ObjectChange* box_move_handle(Box *box, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason,
- ModifierKeys modifiers);
-static ObjectChange* box_move(Box *box, Point *to);
-static void box_draw(Box *box, DiaRenderer *renderer);
-static void box_update_data(Box *box);
-static DiaObject *box_create(Point *startpoint,
- void *user_data,
- Handle **handle1,
- Handle **handle2);
-static void box_destroy(Box *box);
-static DiaObject *box_copy(Box *box);
-
-static void box_set_props(Box *box, GPtrArray *props);
-
-static void box_save(Box *box, ObjectNode obj_node, DiaContext *ctx);
-static DiaObject *box_load(ObjectNode obj_node, int version, DiaContext *ctx);
-static DiaMenu *box_get_object_menu(Box *box, Point *clickedpoint);
-static gboolean box_transform(Box *box, const DiaMatrix *m);
-
-static ObjectTypeOps box_type_ops =
-{
+
+static double box_distance_from (Box *box,
+ Point *point);
+static void box_select (Box *box,
+ Point *clicked_point,
+ DiaRenderer *interactive_renderer);
+static DiaObjectChange *box_move_handle (Box *box,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *box_move (Box *box,
+ Point *to);
+static void box_draw (Box *box,
+ DiaRenderer *renderer);
+static void box_update_data (Box *box);
+static DiaObject *box_create (Point *startpoint,
+ void *user_data,
+ Handle **handle1,
+ Handle **handle2);
+static void box_destroy (Box *box);
+static DiaObject *box_copy (Box *box);
+static void box_set_props (Box *box,
+ GPtrArray *props);
+static void box_save (Box *box,
+ ObjectNode obj_node,
+ DiaContext *ctx);
+static DiaObject *box_load (ObjectNode obj_node,
+ int version,
+ DiaContext *ctx);
+static DiaMenu *box_get_object_menu (Box *box,
+ Point *clickedpoint);
+static gboolean box_transform (Box *box,
+ const DiaMatrix *m);
+
+
+static ObjectTypeOps box_type_ops = {
(CreateFunc) box_create,
(LoadFunc) box_load,
(SaveFunc) box_save,
@@ -265,7 +279,7 @@ box_select(Box *box, Point *clicked_point,
}
-static ObjectChange*
+static DiaObjectChange *
box_move_handle (Box *box,
Handle *handle,
Point *to,
@@ -336,16 +350,18 @@ box_move_handle (Box *box,
return NULL;
}
-static ObjectChange*
-box_move(Box *box, Point *to)
+
+static DiaObjectChange *
+box_move (Box *box, Point *to)
{
box->element.corner = *to;
- box_update_data(box);
+ box_update_data (box);
return NULL;
}
+
static void
box_draw (Box *box, DiaRenderer *renderer)
{
@@ -740,7 +756,8 @@ aspect_change_revert(struct AspectChange *change, DiaObject *obj)
box_update_data(box);
}
-static ObjectChange *
+
+static DiaObjectChange *
aspect_create_change(Box *box, AspectType aspect)
{
struct AspectChange *change;
@@ -757,21 +774,22 @@ aspect_create_change(Box *box, AspectType aspect)
change->width = box->element.width;
change->height = box->element.height;
- return (ObjectChange *)change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
-static ObjectChange *
+static DiaObjectChange *
box_set_aspect_callback (DiaObject* obj, Point* clicked, gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
- change = aspect_create_change((Box*)obj, (AspectType)data);
- change->apply(change, obj);
+ change = aspect_create_change ((Box*) obj, (AspectType) data);
+ dia_object_change_apply (change, obj);
return change;
}
+
static DiaMenuItem box_menu_items[] = {
{ N_("Free aspect"), box_set_aspect_callback, (void*)FREE_ASPECT,
DIAMENU_ACTIVE|DIAMENU_TOGGLE },
diff --git a/objects/standard/ellipse.c b/objects/standard/ellipse.c
index 3d681ef8e..83244431b 100644
--- a/objects/standard/ellipse.c
+++ b/objects/standard/ellipse.c
@@ -31,6 +31,8 @@
#include "pattern.h"
#include "diapathrenderer.h"
#include "message.h"
+#include "dia-object-change-legacy.h"
+
#define DEFAULT_WIDTH 2.0
#define DEFAULT_HEIGHT 1.0
@@ -71,13 +73,20 @@ static struct _EllipseProperties {
gboolean show_background;
} default_properties = { FREE_ASPECT, TRUE };
-static real ellipse_distance_from(Ellipse *ellipse, Point *point);
-static void ellipse_select(Ellipse *ellipse, Point *clicked_point,
- DiaRenderer *interactive_renderer);
-static ObjectChange* ellipse_move_handle(Ellipse *ellipse, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* ellipse_move(Ellipse *ellipse, Point *to);
+
+static double ellipse_distance_from (Ellipse *ellipse,
+ Point *point);
+static void ellipse_select (Ellipse *ellipse,
+ Point *clicked_point,
+ DiaRenderer *interactive_renderer);
+static DiaObjectChange *ellipse_move_handle (Ellipse *ellipse,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *ellipse_move (Ellipse *ellipse,
+ Point *to);
static void ellipse_draw(Ellipse *ellipse, DiaRenderer *renderer);
static void ellipse_update_data(Ellipse *ellipse);
static DiaObject *ellipse_create(Point *startpoint,
@@ -233,7 +242,7 @@ ellipse_select (Ellipse *ellipse,
}
-static ObjectChange*
+static DiaObjectChange*
ellipse_move_handle (Ellipse *ellipse,
Handle *handle,
Point *to,
@@ -334,15 +343,16 @@ ellipse_move_handle (Ellipse *ellipse,
}
-static ObjectChange*
-ellipse_move(Ellipse *ellipse, Point *to)
+static DiaObjectChange *
+ellipse_move (Ellipse *ellipse, Point *to)
{
ellipse->element.corner = *to;
- ellipse_update_data(ellipse);
+ ellipse_update_data (ellipse);
return NULL;
}
+
static void
ellipse_draw (Ellipse *ellipse, DiaRenderer *renderer)
{
@@ -747,7 +757,8 @@ aspect_change_revert(struct AspectChange *change, DiaObject *obj)
ellipse_update_data(ellipse);
}
-static ObjectChange *
+
+static DiaObjectChange *
aspect_create_change(Ellipse *ellipse, AspectType aspect)
{
struct AspectChange *change;
@@ -764,21 +775,22 @@ aspect_create_change(Ellipse *ellipse, AspectType aspect)
change->width = ellipse->element.width;
change->height = ellipse->element.height;
- return (ObjectChange *)change;
+ return dia_object_change_legacy_new ((ObjectChange *) change);
}
-static ObjectChange *
-ellipse_set_aspect_callback (DiaObject* obj, Point* clicked, gpointer data)
+static DiaObjectChange *
+ellipse_set_aspect_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
+ DiaObjectChange *change;
- change = aspect_create_change((Ellipse*)obj, (AspectType)data);
- change->apply(change, obj);
+ change = aspect_create_change ((Ellipse *) obj, (AspectType) data);
+ dia_object_change_apply (change, obj);
return change;
}
+
static DiaMenuItem ellipse_menu_items[] = {
{ N_("Free aspect"), ellipse_set_aspect_callback, (void*)FREE_ASPECT,
DIAMENU_ACTIVE|DIAMENU_TOGGLE },
diff --git a/objects/standard/image.c b/objects/standard/image.c
index fe16b4bdf..c8727fb32 100644
--- a/objects/standard/image.c
+++ b/objects/standard/image.c
@@ -80,10 +80,10 @@ static struct _ImageProperties {
static real image_distance_from(Image *image, Point *point);
static void image_select(Image *image, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* image_move_handle(Image *image, Handle *handle,
+static DiaObjectChange* image_move_handle(Image *image, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* image_move(Image *image, Point *to);
+static DiaObjectChange* image_move(Image *image, Point *to);
static void image_draw(Image *image, DiaRenderer *renderer);
static gboolean image_transform(Image *image, const DiaMatrix *m);
static void image_update_data(Image *image);
@@ -321,7 +321,7 @@ image_select (Image *image,
}
-static ObjectChange*
+static DiaObjectChange*
image_move_handle (Image *image,
Handle *handle,
Point *to,
@@ -434,7 +434,7 @@ image_move_handle (Image *image,
}
-static ObjectChange*
+static DiaObjectChange*
image_move (Image *image, Point *to)
{
image->element.corner = *to;
diff --git a/objects/standard/line.c b/objects/standard/line.c
index 90dcd39fa..9ed28996c 100644
--- a/objects/standard/line.c
+++ b/objects/standard/line.c
@@ -68,11 +68,11 @@ struct _LineProperties {
static LineProperties default_properties;
-static ObjectChange* line_move_handle(Line *line, Handle *handle,
+static DiaObjectChange* line_move_handle(Line *line, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason,
ModifierKeys modifiers);
-static ObjectChange* line_move(Line *line, Point *to);
+static DiaObjectChange* line_move(Line *line, Point *to);
static void line_select(Line *line, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void line_draw(Line *line, DiaRenderer *renderer);
@@ -209,12 +209,14 @@ line_init_defaults (void)
*
* Add a connection point to the line
*/
-static ObjectChange *
+static DiaObjectChange *
line_add_connpoint_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *oc;
- oc = connpointline_add_point (((Line *) obj)->cpl,clicked);
+ DiaObjectChange *oc;
+
+ oc = connpointline_add_point (((Line *) obj)->cpl, clicked);
line_update_data ((Line *) obj);
+
return oc;
}
@@ -224,29 +226,33 @@ line_add_connpoint_callback (DiaObject *obj, Point *clicked, gpointer data)
*
* \memberof Line
*/
-static ObjectChange *
+static DiaObjectChange *
line_remove_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *oc;
- oc = connpointline_remove_point(((Line *)obj)->cpl,clicked);
- line_update_data((Line *)obj);
+ DiaObjectChange *oc;
+
+ oc = connpointline_remove_point (((Line *)obj)->cpl, clicked);
+ line_update_data ((Line *) obj);
+
return oc;
}
-/*!
- * \brief Upgrade the Line to a Polyline
+
+/**
+ * _convert_to_polyline_callback:
+ * @obj: self pointer
+ * @clicked: last clicked point on canvas or %NULL
+ * @data: here unuesed user_data pointer
*
- * Convert the _Line to a _Polyline with the position clicked as third point.
- * Further object properties are preserved by the use of object_substitute()
*
- * @param obj self pointer
- * @param clicked last clicked point on canvas or NULL
- * @param data here unuesed user_data pointer
- * @return an _ObjectChange to support undo/redo
+ * Upgrade the #Line to a #Polyline
*
- * \memberof Line
+ * Convert the #Line to a Polyline with the position clicked as third point.
+ * Further object properties are preserved by the use of object_substitute()
+ *
+ * Returns: an #DiaObjectChange to support undo/redo
*/
-static ObjectChange *
+static DiaObjectChange *
_convert_to_polyline_callback (DiaObject *obj, Point *clicked, gpointer data)
{
DiaObject *poly;
@@ -267,27 +273,28 @@ _convert_to_polyline_callback (DiaObject *obj, Point *clicked, gpointer data)
return object_substitute (obj, poly);
}
-/*!
- * \brief Upgrade the Line to a Zigzagline
+
+/**
+ * _convert_to_zigzagline_callback:
+ * @obj: self pointer
+ * @clicked: last clicked point on canvas or %NULL
+ * @data: here unuesed user_data pointer
*
- * Convert the _Line to a _Zigzagline with the position clicked (if near enough)
+ * Upgrade the #Line to a #Zigzagline
+ *
+ * Convert the #Line to a #Zigzagline with the position clicked (if near enough)
* for the new segment. The result of this function is more favorable for connected
* lines by autorouting.
*
* Further object properties are preserved by the use of object_substitute()
*
- * @param obj self pointer
- * @param clicked last clicked point on canvas or NULL
- * @param data here unuesed user_data pointer
- * @return an _ObjectChange to support undo/redo
- *
- * \memberof Line
+ * Returns: an #DiaObjectChange to support undo/redo
*/
-static ObjectChange *
+static DiaObjectChange *
_convert_to_zigzagline_callback (DiaObject *obj, Point *clicked, gpointer data)
{
DiaObject *zigzag;
- Line *line = (Line *)obj;
+ Line *line = (Line *) obj;
Point points[4];
if (clicked) {
@@ -317,6 +324,7 @@ _convert_to_zigzagline_callback (DiaObject *obj, Point *clicked, gpointer data)
return object_substitute (obj, zigzag);
}
+
static DiaMenuItem object_menu_items[] = {
{ N_("Add connection point"), line_add_connpoint_callback, NULL, 1 },
{ N_("Delete connection point"), line_remove_connpoint_callback, NULL, 1 },
@@ -414,7 +422,7 @@ line_select(Line *line, Point *clicked_point,
connection_update_handles(&line->connection);
}
-static ObjectChange*
+static DiaObjectChange*
line_move_handle(Line *line, Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers)
@@ -431,7 +439,7 @@ line_move_handle(Line *line, Handle *handle,
return NULL;
}
-static ObjectChange*
+static DiaObjectChange*
line_move(Line *line, Point *to)
{
Point start_to_end;
diff --git a/objects/standard/outline.c b/objects/standard/outline.c
index c6179a7e4..41108d495 100644
--- a/objects/standard/outline.c
+++ b/objects/standard/outline.c
@@ -136,11 +136,11 @@ static DiaObjectType outline_type =
DiaObjectType *_outline_type = (DiaObjectType *) &outline_type;
/* Class definition */
-static ObjectChange* outline_move_handle (Outline *outline,
+static DiaObjectChange* outline_move_handle (Outline *outline,
Handle *handle,
Point *to, ConnectionPoint *cp,
HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* outline_move (Outline *outline, Point *to);
+static DiaObjectChange* outline_move (Outline *outline, Point *to);
static void outline_select(Outline *outline, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void outline_draw(Outline *outline, DiaRenderer *renderer);
@@ -453,7 +453,7 @@ outline_distance_from (Outline *outline, Point *point)
*
* Move one of the objects handles
*/
-static ObjectChange*
+static DiaObjectChange*
outline_move_handle (Outline *outline,
Handle *handle,
Point *to,
@@ -520,7 +520,7 @@ outline_move_handle (Outline *outline,
*
* \memberof Outline
*/
-static ObjectChange*
+static DiaObjectChange*
outline_move (Outline *outline, Point *to)
{
DiaObject *obj = &outline->object;
diff --git a/objects/standard/polygon.c b/objects/standard/polygon.c
index eb3f5dbaa..f668027c5 100644
--- a/objects/standard/polygon.c
+++ b/objects/standard/polygon.c
@@ -64,10 +64,14 @@ static struct _PolygonProperties {
gboolean show_background;
} default_properties = { TRUE };
-static ObjectChange* polygon_move_handle(Polygon *polygon, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* polygon_move(Polygon *polygon, Point *to);
+static DiaObjectChange* polygon_move_handle (Polygon *polygon,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange* polygon_move (Polygon *polygon,
+ Point *to);
static void polygon_select(Polygon *polygon, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void polygon_draw(Polygon *polygon, DiaRenderer *renderer);
@@ -185,10 +189,14 @@ polygon_select(Polygon *polygon, Point *clicked_point,
polyshape_update_data(&polygon->poly);
}
-static ObjectChange*
-polygon_move_handle(Polygon *polygon, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+polygon_move_handle (Polygon *polygon,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
assert(polygon!=NULL);
assert(handle!=NULL);
@@ -201,11 +209,11 @@ polygon_move_handle(Polygon *polygon, Handle *handle,
}
-static ObjectChange*
-polygon_move(Polygon *polygon, Point *to)
+static DiaObjectChange *
+polygon_move (Polygon *polygon, Point *to)
{
- polyshape_move(&polygon->poly, to);
- polygon_update_data(polygon);
+ polyshape_move (&polygon->poly, to);
+ polygon_update_data (polygon);
return NULL;
}
@@ -446,27 +454,30 @@ polygon_load(ObjectNode obj_node, int version, DiaContext *ctx)
return &polygon->poly.object;
}
-static ObjectChange *
+
+static DiaObjectChange *
polygon_add_corner_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Polygon *poly = (Polygon*) obj;
int segment;
- ObjectChange *change;
+ DiaObjectChange *change;
- segment = polygon_closest_segment(poly, clicked);
- change = polyshape_add_point(&poly->poly, segment, clicked);
+ segment = polygon_closest_segment (poly, clicked);
+ change = polyshape_add_point (&poly->poly, segment, clicked);
+
+ polygon_update_data (poly);
- polygon_update_data(poly);
return change;
}
-static ObjectChange *
+
+static DiaObjectChange *
polygon_delete_corner_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Handle *handle;
int handle_nr, i;
Polygon *poly = (Polygon*) obj;
- ObjectChange *change;
+ DiaObjectChange *change;
handle = polygon_closest_handle(poly, clicked);
diff --git a/objects/standard/polyline.c b/objects/standard/polyline.c
index 764d7bbd0..0f15467e7 100644
--- a/objects/standard/polyline.c
+++ b/objects/standard/polyline.c
@@ -45,18 +45,22 @@ typedef struct _Polyline {
LineStyle line_style;
LineJoin line_join;
LineCaps line_caps;
- real dashlength;
- real line_width;
- real corner_radius;
+ double dashlength;
+ double line_width;
+ double corner_radius;
Arrow start_arrow, end_arrow;
- real absolute_start_gap, absolute_end_gap;
+ double absolute_start_gap, absolute_end_gap;
} Polyline;
-static ObjectChange* polyline_move_handle(Polyline *polyline, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* polyline_move(Polyline *polyline, Point *to);
+static DiaObjectChange *polyline_move_handle (Polyline *polyline,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *polyline_move (Polyline *polyline,
+ Point *to);
static void polyline_select(Polyline *polyline, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void polyline_draw(Polyline *polyline, DiaRenderer *renderer);
@@ -200,10 +204,14 @@ polyline_select(Polyline *polyline, Point *clicked_point,
polyconn_update_data(&polyline->poly);
}
-static ObjectChange*
-polyline_move_handle(Polyline *polyline, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+polyline_move_handle (Polyline *polyline,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
assert(polyline!=NULL);
assert(handle!=NULL);
@@ -216,11 +224,11 @@ polyline_move_handle(Polyline *polyline, Handle *handle,
}
-static ObjectChange*
-polyline_move(Polyline *polyline, Point *to)
+static DiaObjectChange *
+polyline_move (Polyline *polyline, Point *to)
{
- polyconn_move(&polyline->poly, to);
- polyline_update_data(polyline);
+ polyconn_move (&polyline->poly, to);
+ polyline_update_data (polyline);
return NULL;
}
@@ -582,26 +590,29 @@ polyline_load(ObjectNode obj_node, int version, DiaContext *ctx)
return &polyline->poly.object;
}
-static ObjectChange *
+
+static DiaObjectChange *
polyline_add_corner_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Polyline *poly = (Polyline*) obj;
int segment;
- ObjectChange *change;
+ DiaObjectChange *change;
+
+ segment = polyline_closest_segment (poly, clicked);
+ change = polyconn_add_point (&poly->poly, segment, clicked);
+ polyline_update_data (poly);
- segment = polyline_closest_segment(poly, clicked);
- change = polyconn_add_point(&poly->poly, segment, clicked);
- polyline_update_data(poly);
return change;
}
-static ObjectChange *
+
+static DiaObjectChange *
polyline_delete_corner_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Handle *handle;
int handle_nr, i;
Polyline *poly = (Polyline*) obj;
- ObjectChange *change;
+ DiaObjectChange *change;
handle = polyline_closest_handle(poly, clicked);
diff --git a/objects/standard/textobj.c b/objects/standard/textobj.c
index 932b04969..e2b2e850c 100644
--- a/objects/standard/textobj.c
+++ b/objects/standard/textobj.c
@@ -33,6 +33,7 @@
#include "diamenu.h"
#include "create.h"
#include "message.h" /* just dia_log_message */
+#include "dia-object-change-list.h"
#define HANDLE_TEXT HANDLE_CUSTOM1
@@ -76,10 +77,14 @@ static struct _TextobjProperties {
static real textobj_distance_from(Textobj *textobj, Point *point);
static void textobj_select(Textobj *textobj, Point *clicked_point,
DiaRenderer *interactive_renderer);
-static ObjectChange* textobj_move_handle(Textobj *textobj, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* textobj_move(Textobj *textobj, Point *to);
+static DiaObjectChange *textobj_move_handle (Textobj *textobj,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *textobj_move (Textobj *textobj,
+ Point *to);
static void textobj_draw(Textobj *textobj, DiaRenderer *renderer);
static void textobj_update_data(Textobj *textobj);
static DiaObject *textobj_create(Point *startpoint,
@@ -255,10 +260,14 @@ textobj_select(Textobj *textobj, Point *clicked_point,
text_grab_focus(textobj->text, &textobj->object);
}
-static ObjectChange*
-textobj_move_handle(Textobj *textobj, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+textobj_move_handle (Textobj *textobj,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
assert(textobj!=NULL);
assert(handle!=NULL);
@@ -271,16 +280,18 @@ textobj_move_handle(Textobj *textobj, Handle *handle,
return NULL;
}
-static ObjectChange*
-textobj_move(Textobj *textobj, Point *to)
+
+static DiaObjectChange *
+textobj_move (Textobj *textobj, Point *to)
{
textobj->object.position = *to;
- textobj_update_data(textobj);
+ textobj_update_data (textobj);
return NULL;
}
+
static void
textobj_draw(Textobj *textobj, DiaRenderer *renderer)
{
@@ -557,7 +568,8 @@ textobj_load(ObjectNode obj_node, int version, DiaContext *ctx)
return &textobj->object;
}
-static ObjectChange *
+
+static DiaObjectChange *
_textobj_convert_to_path_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Textobj *textobj = (Textobj *)obj;
@@ -568,7 +580,7 @@ _textobj_convert_to_path_callback (DiaObject *obj, Point *clicked, gpointer data
path = create_standard_path_from_text (text);
if (path) {
- ObjectChange *change;
+ DiaObjectChange *change;
Color bg = textobj->fill_color;
/* FIXME: otherwise object_substitue() will tint the text with bg */
@@ -579,13 +591,17 @@ _textobj_convert_to_path_callback (DiaObject *obj, Point *clicked, gpointer data
return change;
}
+
/* silently fail */
- return change_list_create ();
+ return dia_object_change_list_new ();
}
+
+
static DiaMenuItem textobj_menu_items[] = {
{ N_("Convert to Path"), _textobj_convert_to_path_callback, NULL, DIAMENU_ACTIVE }
};
+
static DiaMenu textobj_menu = {
"Text",
sizeof(textobj_menu_items)/sizeof(DiaMenuItem),
diff --git a/objects/standard/zigzagline.c b/objects/standard/zigzagline.c
index 2062ee7a7..8e7833397 100644
--- a/objects/standard/zigzagline.c
+++ b/objects/standard/zigzagline.c
@@ -47,17 +47,21 @@ typedef struct _Zigzagline {
LineStyle line_style;
LineJoin line_join;
LineCaps line_caps;
- real dashlength;
- real line_width;
- real corner_radius;
+ double dashlength;
+ double line_width;
+ double corner_radius;
Arrow start_arrow, end_arrow;
} Zigzagline;
-static ObjectChange* zigzagline_move_handle(Zigzagline *zigzagline, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers);
-static ObjectChange* zigzagline_move(Zigzagline *zigzagline, Point *to);
+static DiaObjectChange *zigzagline_move_handle (Zigzagline *zigzagline,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers);
+static DiaObjectChange *zigzagline_move (Zigzagline *zigzagline,
+ Point *to);
static void zigzagline_select(Zigzagline *zigzagline, Point *clicked_point,
DiaRenderer *interactive_renderer);
static void zigzagline_draw(Zigzagline *zigzagline, DiaRenderer *renderer);
@@ -173,12 +177,17 @@ zigzagline_select(Zigzagline *zigzagline, Point *clicked_point,
orthconn_update_data(&zigzagline->orth);
}
-static ObjectChange*
-zigzagline_move_handle(Zigzagline *zigzagline, Handle *handle,
- Point *to, ConnectionPoint *cp,
- HandleMoveReason reason, ModifierKeys modifiers)
+
+static DiaObjectChange *
+zigzagline_move_handle (Zigzagline *zigzagline,
+ Handle *handle,
+ Point *to,
+ ConnectionPoint *cp,
+ HandleMoveReason reason,
+ ModifierKeys modifiers)
{
- ObjectChange *change;
+ DiaObjectChange *change;
+
assert(zigzagline!=NULL);
assert(handle!=NULL);
assert(to!=NULL);
@@ -192,15 +201,16 @@ zigzagline_move_handle(Zigzagline *zigzagline, Handle *handle,
}
-static ObjectChange*
-zigzagline_move(Zigzagline *zigzagline, Point *to)
+static DiaObjectChange *
+zigzagline_move (Zigzagline *zigzagline, Point *to)
{
- orthconn_move(&zigzagline->orth, to);
- zigzagline_update_data(zigzagline);
+ orthconn_move (&zigzagline->orth, to);
+ zigzagline_update_data (zigzagline);
return NULL;
}
+
static void
zigzagline_draw (Zigzagline *zigzagline, DiaRenderer *renderer)
{
@@ -355,24 +365,31 @@ zigzagline_update_data(Zigzagline *zigzagline)
}
}
-static ObjectChange *
-zigzagline_add_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+zigzagline_add_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
- change = orthconn_add_segment((OrthConn *)obj, clicked);
- zigzagline_update_data((Zigzagline *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_add_segment ((OrthConn *) obj, clicked);
+ zigzagline_update_data ((Zigzagline *) obj);
+
return change;
}
-static ObjectChange *
-zigzagline_delete_segment_callback(DiaObject *obj, Point *clicked, gpointer data)
+
+static DiaObjectChange *
+zigzagline_delete_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
{
- ObjectChange *change;
- change = orthconn_delete_segment((OrthConn *)obj, clicked);
- zigzagline_update_data((Zigzagline *)obj);
+ DiaObjectChange *change;
+
+ change = orthconn_delete_segment ((OrthConn *) obj, clicked);
+ zigzagline_update_data ((Zigzagline *) obj);
+
return change;
}
+
/*!
* \brief Upgrade the _Zigzagline to a _Bezierline
*
@@ -387,7 +404,7 @@ zigzagline_delete_segment_callback(DiaObject *obj, Point *clicked, gpointer data
*
* \memberof _Zigzagline
*/
-static ObjectChange *
+static DiaObjectChange *
_convert_to_bezierline_callback (DiaObject *obj, Point *clicked, gpointer data)
{
Zigzagline *zigzagline = (Zigzagline *)obj;
diff --git a/plug-ins/cairo/diacairo.c b/plug-ins/cairo/diacairo.c
index b8e6280f4..9471ea9c2 100644
--- a/plug-ins/cairo/diacairo.c
+++ b/plug-ins/cairo/diacairo.c
@@ -142,11 +142,13 @@ static DiaExportFilter wmf_export_filter = {
FILTER_DONT_GUESS /* don't use this if not asked explicit */
};
-static ObjectChange *
+
+static DiaObjectChange *
cairo_clipboard_callback (DiagramData *data,
- const gchar *filename,
- guint flags, /* further additions */
- void *user_data)
+ const char *filename,
+ /* further additions */
+ guint flags,
+ void *user_data)
{
DiaContext *ctx = dia_context_new(_("Cairo Clipboard Copy"));
@@ -169,14 +171,16 @@ static DiaCallbackFilter cb_clipboard = {
};
#endif
+
static DiaCallbackFilter cb_gtk_print = {
- "FilePrintGTK",
- N_("Print (GTK) …"),
- "/InvisibleMenu/File/FilePrint",
- cairo_print_callback,
- (void*)OUTPUT_PDF
+ "FilePrintGTK",
+ N_("Print (GTK) …"),
+ "/InvisibleMenu/File/FilePrint",
+ cairo_print_callback,
+ (void *) OUTPUT_PDF
};
+
static gboolean
_plugin_can_unload (PluginInfo *info)
{
diff --git a/plug-ins/layout/layout.cpp b/plug-ins/layout/layout.cpp
index 453db1e96..10888a6b9 100644
--- a/plug-ins/layout/layout.cpp
+++ b/plug-ins/layout/layout.cpp
@@ -48,6 +48,7 @@
#include "ogdf-simple.h"
#include "dia-graph.h"
+#include "dia-object-change-list.h"
#include <vector>
@@ -110,7 +111,9 @@ _obj_get_bends (DiaObject *obj, std::vector<double>& coords)
prop->ops->free(prop);
return coords.size();
}
-static ObjectChange *
+
+
+static DiaObjectChange *
_obj_set_bends (DiaObject *obj, std::vector<double>& coords)
{
Property *prop = NULL;
@@ -198,23 +201,25 @@ _obj_set_bends (DiaObject *obj, std::vector<double>& coords)
GPtrArray *props = prop_list_from_single (prop);
return object_apply_props (obj, props);
}
+
return NULL;
}
+
typedef IGraph *(*GraphCreateFunc)();
/*!
* \brief Calback function invoking layout algorithms from Dia's menu
* \ingroup LayoutPlugin
*/
-static ObjectChange *
-layout_callback (DiagramData *data,
- const gchar *filename,
- guint flags, /* further additions */
- void *user_data,
- GraphCreateFunc func)
+static DiaObjectChange *
+layout_callback (DiagramData *data,
+ const char *filename,
+ guint flags, /* further additions */
+ void *user_data,
+ GraphCreateFunc func)
{
- ObjectChange *changes = NULL;
+ DiaObjectChange *changes = NULL;
GList *nodes = NULL, *edges = NULL, *list;
const char *algorithm = (const char*)user_data;
@@ -259,58 +264,87 @@ layout_callback (DiagramData *data,
else
g->AddEdge (g_list_index (nodes, src), g_list_index (nodes, dst), NULL, 0);
}
+
IGraph::eResult res;
if ((res = g->Layout (algorithm)) != IGraph::SUCCESS) {
- const char *sErr;
- switch (res) {
- case IGraph::NO_MODULE : sErr = _("No such module."); break;
- case IGraph::OUT_OF_MEMORY : sErr = _("Out of memory."); break;
- case IGraph::NO_TREE: sErr = _("Not a tree."); break;
- case IGraph::NO_FOREST: sErr = _("Not a forest."); break;
- case IGraph::FAILED_ALGORITHM: sErr = _("Failed algorithm."); break;
- case IGraph::FAILED_PRECONDITION: sErr = _("Failed precondition."); break;
- case IGraph::CRASHED : sErr = _("OGDF crashed."); break;
- default : sErr = _("Unknown reason"); break;
- }
- message_warning (_("Layout '%s' failed.\n%s"), (const char*)user_data, sErr);
+ const char *sErr;
+ switch (res) {
+ case IGraph::NO_MODULE:
+ sErr = _("No such module.");
+ break;
+ case IGraph::OUT_OF_MEMORY:
+ sErr = _("Out of memory.");
+ break;
+ case IGraph::NO_TREE:
+ sErr = _("Not a tree.");
+ break;
+ case IGraph::NO_FOREST:
+ sErr = _("Not a forest.");
+ break;
+ case IGraph::FAILED_ALGORITHM:
+ sErr = _("Failed algorithm.");
+ break;
+ case IGraph::FAILED_PRECONDITION:
+ sErr = _("Failed precondition.");
+ break;
+ case IGraph::CRASHED:
+ sErr = _("OGDF crashed.");
+ break;
+ default:
+ sErr = _("Unknown reason");
+ break;
+ }
+ message_warning (_("Layout '%s' failed.\n%s"),
+ (const char*) user_data,
+ sErr);
} else {
- changes = change_list_create ();
- /* transfer back information */
- int n;
- for (n = 0, list = nodes; list != NULL; list = g_list_next (list), ++n) {
- Point pt;
- if (g->GetNodePosition (n, &pt.x, &pt.y)) {
- DiaObject *o = (DiaObject *)list->data;
- GPtrArray *props = g_ptr_array_new ();
-
- //FIXME: can't use "obj_pos", it is not read in usual update_data impementations
- // "elem_corner" will only work for Element derived classes, but that covers most
- // of the cases here ...
- prop_list_add_point (props, "elem_corner", &pt);
- change_list_add (changes, object_apply_props (o, props));
- }
- }
- // first update to reuse the connected points
- diagram_update_connections_selection(DIA_DIAGRAM (data));
- /* use edge bends, if any */
- int e;
- for (e = 0, list = edges; list != NULL; list = g_list_next (list), ++e) {
- DiaObject *o = (DiaObject *)list->data;
- // number of bends / 2 is the number of points
- int n = g->GetEdgeBends (e, NULL, 0);
- if (n >= 0) { // with 0 it is just a reset of the exisiting line
- try {
- coords.resize (n);
- } catch (std::bad_alloc& ex) {
- g_warning ("%s", ex.what());
- continue;
- }
- g->GetEdgeBends (e, &coords[0], n);
- change_list_add (changes, _obj_set_bends (o, coords));
- }
- }
- /* update view */
- diagram_update_connections_selection(DIA_DIAGRAM (data));
+ changes = dia_object_change_list_new ();
+
+ /* transfer back information */
+ int n;
+ for (n = 0, list = nodes;
+ list != NULL;
+ list = g_list_next (list), ++n) {
+ Point pt;
+ if (g->GetNodePosition (n, &pt.x, &pt.y)) {
+ DiaObject *o = DIA_OBJECT (list->data);
+ GPtrArray *props = g_ptr_array_new ();
+
+ // FIXME: can't use "obj_pos", it is not read in usual update_data
+ // impementations "elem_corner" will only work for Element derived
+ // classes, but that covers most of the cases here ...
+ prop_list_add_point (props, "elem_corner", &pt);
+
+ dia_object_change_list_add (DIA_OBJECT_CHANGE_LIST (changes),
+ object_apply_props (o, props));
+ }
+ }
+
+ // first update to reuse the connected points
+ diagram_update_connections_selection (DIA_DIAGRAM (data));
+
+ /* use edge bends, if any */
+ int e;
+ for (e = 0, list = edges;
+ list != NULL;
+ list = g_list_next (list), ++e) {
+ DiaObject *o = DIA_OBJECT (list->data);
+ // number of bends / 2 is the number of points
+ int n = g->GetEdgeBends (e, NULL, 0);
+ if (n >= 0) { // with 0 it is just a reset of the exisiting line
+ try {
+ coords.resize (n);
+ } catch (std::bad_alloc& ex) {
+ g_warning ("%s", ex.what());
+ continue;
+ }
+ g->GetEdgeBends (e, &coords[0], n);
+ dia_object_change_list_add (DIA_OBJECT_CHANGE_LIST (changes),
+ _obj_set_bends (o, coords));
+ }
+ }
+ /* update view */
+ diagram_update_connections_selection (DIA_DIAGRAM (data));
}
g->Release ();
}
@@ -321,7 +355,8 @@ layout_callback (DiagramData *data,
return changes;
}
-static ObjectChange *
+
+static DiaObjectChange *
layout_callback1 (DiagramData *data,
const gchar *filename,
guint flags, /* further additions */
diff --git a/plug-ins/pdf/pdf-import.cpp b/plug-ins/pdf/pdf-import.cpp
index 185a20631..15100bc61 100644
--- a/plug-ins/pdf/pdf-import.cpp
+++ b/plug-ins/pdf/pdf-import.cpp
@@ -652,11 +652,9 @@ DiaOutputDev::_fill (GfxState *state, bool winding)
obj = create_standard_path (points->len, &g_array_index (points, BezPoint, 0));
applyStyle (obj, true);
if (this->pattern) {
- ObjectChange *change = dia_object_set_pattern (obj, this->pattern);
- if (change) {
- change->free (change);
- g_free (change);
- }
+ DiaObjectChange *change = dia_object_set_pattern (obj, this->pattern);
+
+ g_clear_pointer (&change, dia_object_change_unref);
}
}
g_array_free (points, TRUE);
@@ -779,7 +777,7 @@ DiaOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
DiaObject *obj;
GdkPixbuf *pixbuf;
Point pos;
- ObjectChange *change;
+ DiaObjectChange *change;
const double *ctm = state->getCTM();
pos.x = ctm[4] * scale;
@@ -839,12 +837,14 @@ DiaOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
g_hash_table_insert (this->image_cache, str, g_object_ref (pixbuf));
}
#endif
- obj = create_standard_image (pos.x, pos.y,
- ctm[0] * scale,
- ctm[3] * scale, NULL);
+ obj = create_standard_image (pos.x,
+ pos.y,
+ ctm[0] * scale,
+ ctm[3] * scale,
+ NULL);
+
if ((change = dia_object_set_pixbuf (obj, pixbuf)) != NULL) {
- change->free (change);
- g_free (change);
+ g_clear_pointer (&change, dia_object_change_unref);
}
g_object_unref (pixbuf);
@@ -852,6 +852,7 @@ DiaOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
addObject (obj);
}
+
extern "C"
gboolean
import_pdf(const gchar *filename, DiagramData *dia, DiaContext *ctx, void* user_data)
diff --git a/plug-ins/postscript/postscript.c b/plug-ins/postscript/postscript.c
index e3f004b87..aec08a184 100644
--- a/plug-ins/postscript/postscript.c
+++ b/plug-ins/postscript/postscript.c
@@ -29,27 +29,33 @@
#include "render_eps.h"
#include "paginate_psprint.h"
-static ObjectChange *
+
+static DiaObjectChange *
print_callback (DiagramData *data,
- const gchar *filename,
- guint flags, /* further additions */
- void *user_data)
+ const char *filename,
+ /* further additions */
+ guint flags,
+ void *user_data)
{
- if (!data)
+ if (!data) {
message_error (_("Nothing to print"));
- else
+ } else {
diagram_print_ps (data, filename ? filename : "output.ps");
+ }
+
return NULL;
}
+
static DiaCallbackFilter cb_ps_print = {
- "FilePrintPS",
- N_("Print (PS)"),
- "/InvisibleMenu/File/FilePrint",
- print_callback,
- NULL
+ "FilePrintPS",
+ N_("Print (PS)"),
+ "/InvisibleMenu/File/FilePrint",
+ print_callback,
+ NULL
};
+
/* --- dia plug-in interface --- */
static gboolean
_plugin_can_unload (PluginInfo *info)
diff --git a/plug-ins/python/diamodule.c b/plug-ins/python/diamodule.c
index c5615d01b..c412a9270 100644
--- a/plug-ins/python/diamodule.c
+++ b/plug-ins/python/diamodule.c
@@ -367,7 +367,7 @@ PyDia_RegisterImport(PyObject *self, PyObject *args)
* It needs to be registered before via Python function
* dia.register_action (or dia.register_callback)
*/
-static ObjectChange *
+static DiaObjectChange *
PyDia_callback_func (DiagramData *dia,
const char *filename,
guint flags,
diff --git a/plug-ins/python/pydia-menuitem.c b/plug-ins/python/pydia-menuitem.c
index 22fbed89a..c055fb81c 100644
--- a/plug-ins/python/pydia-menuitem.c
+++ b/plug-ins/python/pydia-menuitem.c
@@ -91,30 +91,31 @@ PyDiaMenuitem_GetAttr(PyDiaMenuitem *self, gchar *attr)
static PyObject *
-PyDiaMenuitem_Call(PyDiaMenuitem *self, PyObject *args)
+PyDiaMenuitem_Call (PyDiaMenuitem *self, PyObject *args)
{
const DiaMenuItem *mi;
- ObjectChange *oc;
+ DiaObjectChange *oc;
DiaObject *obj;
Point clicked;
- if (!PyArg_ParseTuple(args, "O!(dd)|ii:Menuitem.callback",
- &PyDiaObject_Type, &obj, &clicked.x, &clicked.y))
+ if (!PyArg_ParseTuple (args, "O!(dd)|ii:Menuitem.callback",
+ &PyDiaObject_Type, &obj, &clicked.x, &clicked.y)) {
return NULL;
+ }
mi = self->menuitem;
oc = mi->callback (obj, &clicked, mi->callback_data);
+
/* Throw away the undo information */
- if (oc) {
- if (oc->free)
- oc->free(oc);
- g_clear_pointer (&oc, g_free);
- }
+ g_clear_pointer (&oc, dia_object_change_unref);
+
+ Py_INCREF (Py_None);
- Py_INCREF(Py_None);
return Py_None;
}
+
+
/*
* Repr / _Str
*/
diff --git a/plug-ins/python/pydia-object.c b/plug-ins/python/pydia-object.c
index d08c98879..d7d9baa73 100644
--- a/plug-ins/python/pydia-object.c
+++ b/plug-ins/python/pydia-object.c
@@ -195,57 +195,77 @@ PyDiaObject_GetMenu(PyDiaObject *self, PyObject *args)
PyTuple_SetItem(ret, 1, items);
return ret;
}
+
+
static PyObject *
-PyDiaObject_Move(PyDiaObject *self, PyObject *args)
+PyDiaObject_Move (PyDiaObject *self, PyObject *args)
{
- Point point;
- ObjectChange *change;
+ Point point;
+ DiaObjectChange *change;
- if (!PyArg_ParseTuple(args, "dd:Object.move", &point.x, &point.y))
- return NULL;
+ if (!PyArg_ParseTuple (args, "dd:Object.move", &point.x, &point.y)) {
+ return NULL;
+ }
- if (!self->object->ops->move) {
- PyErr_SetString(PyExc_RuntimeError,"object does not implement method");
- return NULL;
- }
+ if (!self->object->ops->move) {
+ PyErr_SetString (PyExc_RuntimeError,
+ "object does not implement method");
+ return NULL;
+ }
- change = self->object->ops->move(self->object, &point);
- if (G_UNLIKELY(change)) /* TODO: return the change? */
- change->free(change);
+ change = dia_object_move (self->object, &point);
- Py_INCREF(Py_None);
- return Py_None;
+ if (G_UNLIKELY (change)) {
+ /* TODO: return the change? */
+ dia_object_change_unref (change);
+ }
+
+ Py_INCREF (Py_None);
+
+ return Py_None;
}
+
static PyObject *
-PyDiaObject_MoveHandle(PyDiaObject *self, PyObject *args)
+PyDiaObject_MoveHandle (PyDiaObject *self, PyObject *args)
{
- PyDiaHandle *handle;
- Point point;
- HandleMoveReason reason = 0;
- ModifierKeys modifiers = 0;
- ObjectChange *change;
+ PyDiaHandle *handle;
+ Point point;
+ HandleMoveReason reason = 0;
+ ModifierKeys modifiers = 0;
+ DiaObjectChange *change;
+
+ if (!PyArg_ParseTuple (args, "O!(dd)|ii:Object.move_handle",
+ &PyDiaHandle_Type, &handle, &point.x, &point.y,
+ &reason, &modifiers)) {
+ return NULL;
+ }
- if (!PyArg_ParseTuple(args, "O!(dd)|ii:Object.move_handle",
- &PyDiaHandle_Type, &handle, &point.x, &point.y,
- &reason, &modifiers))
- return NULL;
+ if (!self->object->ops->move_handle) {
+ PyErr_SetString (PyExc_RuntimeError,
+ "object does not implement method");
- if (!self->object->ops->move_handle) {
- PyErr_SetString(PyExc_RuntimeError,"object does not implement method");
- return NULL;
- }
+ return NULL;
+ }
- change = self->object->ops->move_handle(self->object, handle->handle, &point,
- NULL, reason, modifiers);
+ change = dia_object_move_handle (self->object,
+ handle->handle,
+ &point,
+ NULL,
+ reason,
+ modifiers);
- if (G_UNLIKELY(change)) /* TODO: return the change? */
- change->free(change);
+ if (G_UNLIKELY (change)) {
+ /* TODO: return the change? */
+ dia_object_change_unref (change);
+ }
- Py_INCREF(Py_None);
- return Py_None;
+ Py_INCREF (Py_None);
+
+ return Py_None;
}
+
static PyMethodDef PyDiaObject_Methods[] = {
{ "destroy", (PyCFunction)PyDiaObject_Destroy, METH_VARARGS,
"destroy() -> None."
diff --git a/plug-ins/stress/stress.c b/plug-ins/stress/stress.c
index 1dc04c6af..287216efc 100644
--- a/plug-ins/stress/stress.c
+++ b/plug-ins/stress/stress.c
@@ -27,17 +27,19 @@
#include "stress-memory.h"
-static ObjectChange *
+
+static DiaObjectChange *
stress_memory_callback (DiagramData *data,
- const gchar *filename,
- guint flags, /* further additions */
- void *user_data)
+ const char *filename,
+ /* further additions */
+ guint flags,
+ void *user_data)
{
guint64 avail;
if (vmem_avail (&avail)) {
guint64 eat = (avail * 9) / 10;
-
+
if (vmem_reserve (eat)) {
guint64 still_avail;
vmem_avail (&still_avail);
diff --git a/plug-ins/svg/svg-import.c b/plug-ins/svg/svg-import.c
index 11fd7a4b8..14cec92ec 100644
--- a/plug-ins/svg/svg-import.c
+++ b/plug-ins/svg/svg-import.c
@@ -425,7 +425,7 @@ _set_pattern_from_key (DiaObject *obj,
GHashTable *pattern_ht,
const char *key)
{
- ObjectChange *change = NULL;
+ DiaObjectChange *change = NULL;
DiaPattern *pattern = g_hash_table_lookup (pattern_ht, key);
if (pattern) {
@@ -434,10 +434,8 @@ _set_pattern_from_key (DiaObject *obj,
bprop->bool_data = TRUE;
}
- if (change) { /* throw it away, no one needs it here */
- change->free (change);
- g_clear_pointer (&change, g_free);
- }
+ /* throw it away, no one needs it here */
+ g_clear_pointer (&change, dia_object_change_unref);
}
@@ -1289,14 +1287,13 @@ read_image_svg (xmlNodePtr node,
GdkPixbuf *pixbuf = pixbuf_decode_base64 (data+1);
if (pixbuf) {
- ObjectChange *change;
+ DiaObjectChange *change;
- new_obj = create_standard_image(x, y, width, height, NULL);
+ new_obj = create_standard_image (x, y, width, height, NULL);
change = dia_object_set_pixbuf (new_obj, pixbuf);
- if (change) { /* throw it away, no one needs it here */
- change->free (change);
- g_clear_pointer (&change, g_free);
- }
+
+ /* throw it away, no one needs it here */
+ g_clear_pointer (&change, dia_object_change_unref);
g_clear_object (&pixbuf);
}
}
diff --git a/plug-ins/wmf/wmf.cpp b/plug-ins/wmf/wmf.cpp
index 59474e47c..0cb000e88 100644
--- a/plug-ins/wmf/wmf.cpp
+++ b/plug-ins/wmf/wmf.cpp
@@ -1532,11 +1532,12 @@ static DiaExportFilter emf_export_filter = {
"emf"
};
-static ObjectChange *
+
+static DiaObjectChange *
print_callback (DiagramData *data,
- const gchar *filename,
- guint flags,
- void *user_data)
+ const char *filename,
+ guint flags,
+ void *user_data)
{
/* Todo: get the context from caller */
DiaContext *ctx = dia_context_new ("PrintGDI");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]