diff options
author | David Robillard <d@drobilla.net> | 2012-04-24 22:07:24 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2012-04-24 22:07:24 +0000 |
commit | 3051e646d3f9b75d7fbc9ace3cc11966e9536274 (patch) | |
tree | 6187317200f284fe884cc92e3da45d6f8ffa527f /ganv | |
parent | 47e38b43ea9a56ef3a4fa4655e9c54d7c52d1d0d (diff) | |
download | ganv-3051e646d3f9b75d7fbc9ace3cc11966e9536274.tar.gz ganv-3051e646d3f9b75d7fbc9ace3cc11966e9536274.tar.bz2 ganv-3051e646d3f9b75d7fbc9ace3cc11966e9536274.zip |
Move more implementation to C GanvCanvas.
git-svn-id: http://svn.drobilla.net/lad/trunk/ganv@4265 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'ganv')
-rw-r--r-- | ganv/Canvas.hpp | 40 | ||||
-rw-r--r-- | ganv/canvas.h | 73 |
2 files changed, 86 insertions, 27 deletions
diff --git a/ganv/Canvas.hpp b/ganv/Canvas.hpp index 477277d..05ba6e7 100644 --- a/ganv/Canvas.hpp +++ b/ganv/Canvas.hpp @@ -57,8 +57,7 @@ public: Gtk::Layout& widget(); - /** Remove all ports and edges and modules. */ - void destroy(); + METHOD0(ganv_canvas, destroy); /** Get the edge from @c tail to @c head if one exists. */ Edge* get_edge(Node* tail, Node* head) const; @@ -66,18 +65,12 @@ public: /** Delete the edge from @c tail to @c head. */ void remove_edge(Node* tail, Node* head); - /** Place @c i at a reasonable default location. */ - void set_default_placement(Node* i); - - /** Unselect all selected objects. */ - virtual void clear_selection(); - - void select_all(); + METHOD0(ganv_canvas, clear_selection); + METHOD0(ganv_canvas, select_all); RW_PROPERTY(gboolean, locked); - /** Return the current zoom factor (pixels per unit). */ - double get_zoom(); + METHOD0(ganv_canvas, get_zoom); /** Set the current zoom factor (pixels per unit). */ void set_zoom(double pix_per_unit); @@ -98,21 +91,22 @@ public: void render_to_dot(const std::string& filename); /** Automatically arrange the canvas contents if Graphviz is available. */ - void arrange(bool use_length_hints=false); + void arrange(); - /** Shift all canvas contents so the top-left object is at (x, y). */ - void move_contents_to(double x, double y); + METHOD2(ganv_canvas, move_contents_to, double, x, double, y); RW_PROPERTY(double, width) RW_PROPERTY(double, height) - /** Resize the canvas to the given dimensions. */ - void resize(double width, double height); + METHOD2(ganv_canvas, resize, double, width, double, height); RW_PROPERTY(GanvDirection, direction); - void for_each_node(GanvNodeFunction f, void* data); - void for_each_selected_node(GanvNodeFunction f, void* data); + METHOD2(ganv_canvas, for_each_node, + GanvNodeFunction, f, void*, data) + + METHOD2(ganv_canvas, for_each_selected_node, + GanvNodeFunction, f, void*, data) typedef void (*EdgePtrFunction)(GanvEdge* edge, void* data); @@ -131,15 +125,15 @@ public: const GanvNode*, node, GanvEdgeFunction, f); - GQuark wrapper_key(); - - GanvItem* root(); - - GdkCursor* move_cursor(); + METHOD0(ganv_canvas, get_move_cursor); void get_scroll_offsets(int& cx, int& cy) const; void scroll_to(int x, int y); + GQuark wrapper_key(); + + GanvItem* root(); + GanvCanvas* gobj(); const GanvCanvas* gobj() const; diff --git a/ganv/canvas.h b/ganv/canvas.h index 352c13c..829b8e2 100644 --- a/ganv/canvas.h +++ b/ganv/canvas.h @@ -63,6 +63,10 @@ GType ganv_canvas_get_type(void); GanvCanvas* ganv_canvas_new(double width, double height); +/** + * ganv_canvas_resize: + * Resize the canvas to the given dimensions. + */ void ganv_canvas_resize(GanvCanvas* canvas, double width, double height); @@ -90,10 +94,6 @@ ganv_canvas_remove_edge_between(GanvCanvas* canvas, double ganv_canvas_get_default_font_size(const GanvCanvas* canvas); -/** Get the current font size in points. */ -double -ganv_canvas_get_font_size(const GanvCanvas* canvas); - void ganv_canvas_set_font_size(GanvCanvas* canvas, double points); @@ -118,6 +118,22 @@ ganv_canvas_for_each_node(GanvCanvas* canvas, GanvNodeFunction f, void* data); +void +ganv_canvas_for_each_selected_node(GanvCanvas* canvas, + GanvNodeFunction f, + void* data); + +/** + * ganv_canvas_for_each_edge: + * @canvas: The canvas. + * @f: (scope call): A function to call on every edge on @canvas. + * @data: Data to pass to @f. + */ +void +ganv_canvas_for_each_edge(GanvCanvas* canvas, + GanvEdgeFunction f, + void* data); + /** * ganv_canvas_for_each_edge_from: * @canvas: The canvas. @@ -151,6 +167,55 @@ ganv_canvas_for_each_edge_on(GanvCanvas* canvas, const GanvNode* node, GanvEdgeFunction f); +/** + * ganv_canvas_destroy: + * Remove all items from the canvas. + */ +void +ganv_canvas_destroy(GanvCanvas* canvas); + +/** + * ganv_canvas_select_all: + * Select all items on the canvas. + */ +void +ganv_canvas_select_all(GanvCanvas* canvas); + +/** + * ganv_canvas_get_zoom: + * Return the current zoom factor (pixels per unit). + */ +double +ganv_canvas_get_zoom(GanvCanvas* canvas); + +/** + * ganv_canvas_get_font_size: + * Get the current font size in points. + */ +double +ganv_canvas_get_font_size(const GanvCanvas* canvas); + +/** + * ganv_canvas_set_scale: + * Set the zoom and font size for the canvas. + */ +void +ganv_canvas_set_scale(GanvCanvas* canvas, double zoom, double points); + +/** + * ganv_canvas_get_move_cursor: + * Return the cursor to use while dragging canvas objects. + */ +GdkCursor* +ganv_canvas_get_move_cursor(const GanvCanvas* canvas); + +/** + * ganv_canvas_move_contents_to: + * Shift all canvas contents so the top-left object is at (x, y). + */ +void +ganv_canvas_move_contents_to(GanvCanvas* canvas, double x, double y); + G_END_DECLS #endif /* GANV_CANVAS_H */ |