diff options
author | David Robillard <d@drobilla.net> | 2018-11-24 13:44:02 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-11-24 13:44:02 +0100 |
commit | d74de7f575a9ec49f96138c3c5251f28946c0c0e (patch) | |
tree | d9b620bfba1e7462df4ddb3f6225cc5216c0ca81 /ganv/canvas.h | |
parent | c6e874c2cc1c5c99a3859112e1bba0f07bcdb8ba (diff) | |
download | ganv-d74de7f575a9ec49f96138c3c5251f28946c0c0e.tar.gz ganv-d74de7f575a9ec49f96138c3c5251f28946c0c0e.tar.bz2 ganv-d74de7f575a9ec49f96138c3c5251f28946c0c0e.zip |
Squashed 'waflib/' changes from 6e726eb..5ea8f99
5ea8f99 Improve test output spacing
0e23b29 Raise exception when test suite fails to ensure non-zero exit status
d6de073 Show run time of unit tests
5b65554 Add short configure option for ultra-strict flags
4687ba6 Use gtest-like test output
258903d Fix failure count in test group summaries
da07e73 Fix verbose tests with Python 3
git-subtree-dir: waflib
git-subtree-split: 5ea8f99f6e1246079c1fe6bb590c38a53aadd40d
Diffstat (limited to 'ganv/canvas.h')
-rw-r--r-- | ganv/canvas.h | 630 |
1 files changed, 0 insertions, 630 deletions
diff --git a/ganv/canvas.h b/ganv/canvas.h deleted file mode 100644 index 3ffb55c..0000000 --- a/ganv/canvas.h +++ /dev/null @@ -1,630 +0,0 @@ -/* This file is part of Ganv. - * Copyright 2007-2015 David Robillard <http://drobilla.net> - * - * Ganv 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 3 of the License, or any later version. - * - * Ganv 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 details. - * - * You should have received a copy of the GNU General Public License along - * with Ganv. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef GANV_CANVAS_H -#define GANV_CANVAS_H - -#include <stdarg.h> - -#include <cairo.h> -#include <gtk/gtk.h> - -#include "ganv/canvas.h" -#include "ganv/types.h" -#include "ganv/edge.h" -#include "ganv/item.h" - -G_BEGIN_DECLS - -#define GANV_TYPE_CANVAS (ganv_canvas_get_type()) -#define GANV_CANVAS(obj) (GTK_CHECK_CAST((obj), GANV_TYPE_CANVAS, GanvCanvas)) -#define GANV_CANVAS_CLASS(klass) (GTK_CHECK_CLASS_CAST((klass), GANV_TYPE_CANVAS, GanvCanvasClass)) -#define GANV_IS_CANVAS(obj) (GTK_CHECK_TYPE((obj), GANV_TYPE_CANVAS)) -#define GANV_IS_CANVAS_CLASS(klass) (GTK_CHECK_CLASS_TYPE((klass), GANV_TYPE_CANVAS)) -#define GANV_CANVAS_GET_CLASS(obj) (GTK_CHECK_GET_CLASS((obj), GANV_TYPE_CANVAS, GanvCanvasClass)) - -typedef struct GanvCanvasImpl GanvCanvasPrivate; -typedef struct _GanvCanvasClass GanvCanvasClass; - -/** - * GanvDirection: - * @GANV_DIRECTION_DOWN: Signal flows from top to bottom. - * @GANV_DIRECTION_RIGHT: Signal flows from left to right. - * - * Specifies the direction of signal flow on the canvas, which affects the - * appearance of modules and how the canvas is auto-arranged. - */ -typedef enum { - GANV_DIRECTION_DOWN, - GANV_DIRECTION_RIGHT -} GanvDirection; - -struct _GanvCanvas { - GtkLayout layout; - GanvCanvasPrivate* impl; -}; - -struct _GanvCanvasClass { - GtkLayoutClass parent_class; - - /* Reserved for future expansion */ - gpointer spare_vmethods[4]; -}; - -GType ganv_canvas_get_type(void) G_GNUC_CONST; - -/** - * GanvEdgeFunc: - * @edge: Canvas edge. - * @data: User callback data. - * - * A node function that takes a user data argument (for callbacks). - * - * Note that in the Gtk world it is considered safe to cast a function to a - * function with more arguments and call the resulting pointer, so functions - * like ganv_edge_select can safely be used where a GanvEdgeFunc is expected. - */ -typedef void (*GanvEdgeFunc)(GanvEdge* edge, void* data); - -/** - * GanvNodeFunc: - * @node: Canvas node. - * @data: User callback data. - * - * A node function that takes a user data argument (for callbacks). - * - * Note that in the Gtk world it is considered safe to cast a function to a - * function with more arguments and call the resulting pointer, so functions - * like ganv_node_select can safely be used where a GanvNodeFunc is expected. - */ -typedef void (*GanvNodeFunc)(GanvNode* node, void* data); - -typedef int (*GanvPortOrderFunc)(const GanvPort*, const GanvPort*, void* data); - -/** - * ganv_canvas_new: - * - * Return value: A newly-created canvas. - */ -GanvCanvas* -ganv_canvas_new(double width, double height); - -/** - * ganv_canvas_set_wrapper: - * - * Set the opaque wrapper object for the canvas. - */ -void -ganv_canvas_set_wrapper(GanvCanvas* canvas, void* wrapper); - -/** - * ganv_canvas_get_wrapper: - * - * Return an opaque pointer to the wrapper for the canvas. - */ -void* -ganv_canvas_get_wrapper(GanvCanvas* canvas); - -/** - * ganv_canvas_clear: - * - * Remove all items from the canvas. - */ -void -ganv_canvas_clear(GanvCanvas* canvas); - -/** - * ganv_canvas_empty: - * - * Return value: True if there are no items on the canvas. - */ -gboolean -ganv_canvas_empty(const GanvCanvas* canvas); - -/** - * ganv_canvas_resize: - * - * Resize the canvas to the given dimensions. - */ -void -ganv_canvas_resize(GanvCanvas* canvas, double width, double height); - -/** - * ganv_canvas_root: - * @canvas: A canvas. - * - * Return value: (transfer none): The root group of the canvas. - */ -GanvItem* -ganv_canvas_root(GanvCanvas* canvas); - -/** - * ganv_canvas_set_scroll_region: - * @canvas: A canvas. - * @x1: Leftmost limit of the scrolling region. - * @y1: Upper limit of the scrolling region. - * @x2: Rightmost limit of the scrolling region. - * @y2: Lower limit of the scrolling region. - * - * Sets the scrolling region of a canvas to the specified rectangle. The - * canvas will then be able to scroll only within this region. The view of the - * canvas is adjusted as appropriate to display as much of the new region as - * possible. - */ -void -ganv_canvas_set_scroll_region(GanvCanvas* canvas, - double x1, double y1, double x2, double y2); - -/** - * ganv_canvas_get_scroll_region: - * @canvas: A canvas. - * @x1: Leftmost limit of the scrolling region (return value). - * @y1: Upper limit of the scrolling region (return value). - * @x2: Rightmost limit of the scrolling region (return value). - * @y2: Lower limit of the scrolling region (return value). - * - * Queries the scrolling region of a canvas. - */ -void -ganv_canvas_get_scroll_region(GanvCanvas* canvas, - double* x1, double* y1, double* x2, double* y2); - -/** - * ganv_canvas_set_center_scroll_region: - * @canvas: A canvas. - * @center_scroll_region: Whether to center the scrolling region in the canvas - * window when it is smaller than the canvas' allocation. - * - * When the scrolling region of the canvas is smaller than the canvas window, - * e.g. the allocation of the canvas, it can be either centered on the window - * or simply made to be on the upper-left corner on the window. This function - * lets you configure this property. - */ -void -ganv_canvas_set_center_scroll_region(GanvCanvas* canvas, - gboolean center_scroll_region); - -/** - * ganv_canvas_get_center_scroll_region: - * @canvas: A canvas. - * - * Returns whether the canvas is set to center the scrolling region in the - * window if the former is smaller than the canvas' allocation. - * - * Returns: Whether the scroll region is being centered in the canvas window. - */ -gboolean -ganv_canvas_get_center_scroll_region(const GanvCanvas* canvas); - -/** - * ganv_canvas_scroll_to: - * @canvas: A canvas. - * @cx: Horizontal scrolling offset in canvas pixel units. - * @cy: Vertical scrolling offset in canvas pixel units. - * - * Makes a canvas scroll to the specified offsets, given in canvas pixel units. - * The canvas will adjust the view so that it is not outside the scrolling - * region. This function is typically not used, as it is better to hook - * scrollbars to the canvas layout's scrolling adjusments. - */ -void -ganv_canvas_scroll_to(GanvCanvas* canvas, int cx, int cy); - -/** - * ganv_canvas_get_scroll_offsets: - * @canvas: A canvas. - * @cx: Horizontal scrolling offset (return value). - * @cy: Vertical scrolling offset (return value). - * - * Queries the scrolling offsets of a canvas. The values are returned in canvas - * pixel units. - */ -void -ganv_canvas_get_scroll_offsets(const GanvCanvas* canvas, int* cx, int* cy); - -/** - * ganv_canvas_w2c_affine: - * @canvas: A canvas. - * @matrix: An affine transformation matrix (return value). - * - * Gets the affine transform that converts from world coordinates to canvas - * pixel coordinates. - */ -void -ganv_canvas_w2c_affine(GanvCanvas* canvas, cairo_matrix_t* matrix); - -/** - * ganv_canvas_w2c: - * @canvas: A canvas. - * @wx: World X coordinate. - * @wy: World Y coordinate. - * @cx: X pixel coordinate (return value). - * @cy: Y pixel coordinate (return value). - * - * Converts world coordinates into canvas pixel coordinates. - */ -void -ganv_canvas_w2c(GanvCanvas* canvas, double wx, double wy, int* cx, int* cy); - -/** - * ganv_canvas_w2c_d: - * @canvas: A canvas. - * @wx: World X coordinate. - * @wy: World Y coordinate. - * @cx: X pixel coordinate (return value). - * @cy: Y pixel coordinate (return value). - * - * Converts world coordinates into canvas pixel coordinates. This version - * uses floating point coordinates for greater precision. - */ -void -ganv_canvas_w2c_d(GanvCanvas* canvas, - double wx, - double wy, - double* cx, - double* cy); - -/** - * ganv_canvas_c2w: - * @canvas: A canvas. - * @cx: Canvas pixel X coordinate. - * @cy: Canvas pixel Y coordinate. - * @wx: X world coordinate (return value). - * @wy: Y world coordinate (return value). - * - * Converts canvas pixel coordinates to world coordinates. - */ -void -ganv_canvas_c2w(GanvCanvas* canvas, int cx, int cy, double* wx, double* wy); - -/** - * ganv_canvas_window_to_world: - * @canvas: A canvas. - * @winx: Window-relative X coordinate. - * @winy: Window-relative Y coordinate. - * @worldx: X world coordinate (return value). - * @worldy: Y world coordinate (return value). - * - * Converts window-relative coordinates into world coordinates. You can use - * this when you need to convert mouse coordinates into world coordinates, for - * example. - */ -void -ganv_canvas_window_to_world(GanvCanvas* canvas, - double winx, - double winy, - double* worldx, - double* worldy); - -/** - * ganv_canvas_world_to_window: - * @canvas: A canvas. - * @worldx: World X coordinate. - * @worldy: World Y coordinate. - * @winx: X window-relative coordinate. - * @winy: Y window-relative coordinate. - * - * Converts world coordinates into window-relative coordinates. - */ -void -ganv_canvas_world_to_window(GanvCanvas* canvas, - double worldx, - double worldy, - double* winx, - double* winy); - -/** - * ganv_canvas_get_item_at: - * @canvas: A canvas. - * @x: X position in world coordinates. - * @y: Y position in world coordinates. - * - * Looks for the item that is under the specified position, which must be - * specified in world coordinates. - * - * Returns: (transfer none): The sought item, or NULL if no item is at the - * specified coordinates. - */ -GanvItem* -ganv_canvas_get_item_at(GanvCanvas* canvas, double x, double y); - -/** - * ganv_canvas_get_edge: - * - * Get the edge between two nodes, or NULL if none exists. - * - * Return value: (transfer none): The root group of @canvas. - */ -GanvEdge* -ganv_canvas_get_edge(GanvCanvas* canvas, - GanvNode* tail, - GanvNode* head); - -/** - * ganv_canvas_remove_edge: - * - * Remove @edge from the canvas. - */ -void -ganv_canvas_remove_edge(GanvCanvas* canvas, - GanvEdge* edge); - -/** - * ganv_canvas_remove_edge_between: - * - * Remove the edge from @tail to @head if one exists. - */ -void -ganv_canvas_remove_edge_between(GanvCanvas* canvas, - GanvNode* tail, - GanvNode* head); - -/** - * ganv_canvas_get_direction: - * - * Return the direction of signal flow. - */ -GanvDirection -ganv_canvas_get_direction(GanvCanvas* canvas); - -/** - * ganv_canvas_set_direction: - * - * Set the direction of signal flow. - */ -void -ganv_canvas_set_direction(GanvCanvas* canvas, GanvDirection dir); - -/** - * ganv_canvas_arrange: - * - * Automatically arrange the canvas contents. - */ -void -ganv_canvas_arrange(GanvCanvas* canvas); - -/** - * ganv_canvas_export_image: - * - * Draw the canvas to an image file. The file type is determined by extension, - * currently supported: pdf, ps, svg, dot. - * - * Returns: 0 on success. - */ -int -ganv_canvas_export_image(GanvCanvas* canvas, - const char* filename, - gboolean draw_background); - -/** - * ganv_canvas_export_dot: - * - * Write a Graphviz DOT description of the canvas to a file. - */ -void -ganv_canvas_export_dot(GanvCanvas* canvas, const char* filename); - -/** - * ganv_canvas_supports_sprung_layout: - * - * Returns: true iff ganv is compiled with sprung layout support. - */ -gboolean -ganv_canvas_supports_sprung_layout(const GanvCanvas* canvas); - -/** - * ganv_canvas_set_sprung_layout: - * - * Enable or disable "live" force-directed canvas layout. - * - * Returns: true iff sprung layout was enabled. - */ -gboolean -ganv_canvas_set_sprung_layout(GanvCanvas* canvas, gboolean sprung_layout); - -/** - * ganv_canvas_get_locked: - * - * Return true iff the canvas is locked and nodes may not move. - */ -gboolean -ganv_canvas_get_locked(const GanvCanvas* canvas); - -/** - * ganv_canvas_for_each_node: - * @canvas: The canvas. - * @f: (scope call): A function to call on every node on @canvas. - * @data: Data to pass to @f. - */ -void -ganv_canvas_for_each_node(GanvCanvas* canvas, - GanvNodeFunc f, - void* data); - -/** - * ganv_canvas_for_each_selected_node: - * @canvas: The canvas. - * @f: (scope call): A function to call on every selected node on @canvas. - * @data: Data to pass to @f. - */ -void -ganv_canvas_for_each_selected_node(GanvCanvas* canvas, - GanvNodeFunc 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, - GanvEdgeFunc f, - void* data); - -/** - * ganv_canvas_for_each_edge_from: - * @canvas: The canvas. - * @tail: The tail to enumerate every edge for. - * @f: (scope call): A function to call on every edge leaving @tail. - */ -void -ganv_canvas_for_each_edge_from(GanvCanvas* canvas, - const GanvNode* tail, - GanvEdgeFunc f, - void* data); - -/** - * ganv_canvas_for_each_edge_to: - * @canvas: The canvas. - * @head: The head to enumerate every edge for. - * @f: (scope call): A function to call on every edge entering @head. - */ -void -ganv_canvas_for_each_edge_to(GanvCanvas* canvas, - const GanvNode* head, - GanvEdgeFunc f, - void* data); - -/** - * ganv_canvas_for_each_edge_on: - * @canvas: The canvas. - * @node: The node to enumerate every edge for. - * @f: (scope call): A function to call on every edge attached to @node. - */ -void -ganv_canvas_for_each_edge_on(GanvCanvas* canvas, - const GanvNode* node, - GanvEdgeFunc f, - void* data); - -/** - * ganv_canvas_for_each_selected_edge: - * @canvas: The canvas. - * @f: (scope call): A function to call on every edge attached to @node. - * @data: Data to pass to @f. - */ -void -ganv_canvas_for_each_selected_edge(GanvCanvas* canvas, - GanvEdgeFunc f, - void* data); - -/** - * ganv_canvas_select_all: - * - * Select all items on the canvas. - */ -void -ganv_canvas_select_all(GanvCanvas* canvas); - -/** - * ganv_canvas_clear_selection: - * - * Deselect any selected items on the canvas. - */ -void -ganv_canvas_clear_selection(GanvCanvas* canvas); - -/** - * ganv_canvas_get_zoom: - * - * Return the current zoom factor (pixels per unit). - */ -double -ganv_canvas_get_zoom(const GanvCanvas* canvas); - -/** - * ganv_canvas_set_zoom: - * @canvas: A canvas. - * @zoom: The number of pixels that correspond to one canvas unit. - * - * The anchor point for zooming, i.e. the point that stays fixed and all others - * zoom inwards or outwards from it, depends on whether the canvas is set to - * center the scrolling region or not. You can control this using the - * ganv_canvas_set_center_scroll_region() function. If the canvas is set to - * center the scroll region, then the center of the canvas window is used as - * the anchor point for zooming. Otherwise, the upper-left corner of the - * canvas window is used as the anchor point. - */ -void -ganv_canvas_set_zoom(GanvCanvas* canvas, double zoom); - -/** - * ganv_canvas_zoom_full: - * - * Zoom so all canvas contents are visible. - */ -void -ganv_canvas_zoom_full(GanvCanvas* canvas); - -/** - * ganv_canvas_get_default_font_size: - * - * Get the default font size in points. - */ -double -ganv_canvas_get_default_font_size(const 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_font_size: - * - * Set the current font size in points. - */ -void -ganv_canvas_set_font_size(GanvCanvas* canvas, 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); - -/** - * ganv_canvas_set_port_order: - * @canvas The canvas to set the default port order on. - * @port_cmp Port comparison function. - * @data Data to be passed to order. - * - * Set a comparator function to use as the default order for ports on modules. - * If left unset, ports are shown in the order they are added. - */ -void -ganv_canvas_set_port_order(GanvCanvas* canvas, - GanvPortOrderFunc port_cmp, - void* data); - - -G_END_DECLS - -#endif /* GANV_CANVAS_H */ |