summaryrefslogtreecommitdiff
path: root/eel/eel-canvas-util.h
diff options
context:
space:
mode:
Diffstat (limited to 'eel/eel-canvas-util.h')
-rw-r--r--eel/eel-canvas-util.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/eel/eel-canvas-util.h b/eel/eel-canvas-util.h
new file mode 100644
index 00000000..e4484cde
--- /dev/null
+++ b/eel/eel-canvas-util.h
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Mate Library.
+ *
+ * The Mate Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Mate Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Mate Library; see the file COPYING.LIB. If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+/*
+ @NOTATION@
+ */
+/* Miscellaneous utility functions for the EelCanvas widget
+ *
+ * EelCanvas is basically a port of the Tk toolkit's most excellent canvas widget. Tk is
+ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
+ *
+ * Author: Federico Mena <[email protected]>
+ */
+
+#ifndef EEL_CANVAS_UTIL_H
+#define EEL_CANVAS_UTIL_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+ /* This structure defines an array of points. X coordinates are stored in the even-numbered
+ * indices, and Y coordinates are stored in the odd-numbered indices. num_points indicates the
+ * number of points, so the array is 2*num_points elements big.
+ */
+ typedef struct
+ {
+ double *coords;
+ int num_points;
+ int ref_count;
+ } EelCanvasPoints;
+
+
+ /* Allocate a new EelCanvasPoints structure with enough space for the specified number of points */
+ EelCanvasPoints *eel_canvas_points_new (int num_points);
+
+ /* Increate ref count */
+ EelCanvasPoints *eel_canvas_points_ref (EelCanvasPoints *points);
+#define eel_canvas_points_unref eel_canvas_points_free
+
+ /* Decrease ref count and free structure if it has reached zero */
+ void eel_canvas_points_free (EelCanvasPoints *points);
+
+ /* Given three points forming an angle, compute the coordinates of the inside and outside points of
+ * the mitered corner formed by a line of a given width at that angle.
+ *
+ * If the angle is less than 11 degrees, then FALSE is returned and the return points are not
+ * modified. Otherwise, TRUE is returned.
+ */
+ int eel_canvas_get_miter_points (double x1, double y1, double x2, double y2, double x3, double y3,
+ double width,
+ double *mx1, double *my1, double *mx2, double *my2);
+
+ /* Compute the butt points of a line segment. If project is FALSE, then the results are as follows:
+ *
+ * -------------------* (bx1, by1)
+ * |
+ * (x1, y1) *------------------* (x2, y2)
+ * |
+ * -------------------* (bx2, by2)
+ *
+ * that is, the line is not projected beyond (x2, y2). If project is TRUE, then the results are as
+ * follows:
+ *
+ * -------------------* (bx1, by1)
+ * (x2, y2) |
+ * (x1, y1) *-------------* |
+ * |
+ * -------------------* (bx2, by2)
+ */
+ void eel_canvas_get_butt_points (double x1, double y1, double x2, double y2,
+ double width, int project,
+ double *bx1, double *by1, double *bx2, double *by2);
+
+ /* Calculate the distance from a polygon to a point. The polygon's X coordinates are in the even
+ * indices of the poly array, and the Y coordinates are in the odd indices.
+ */
+ double eel_canvas_polygon_to_point (double *poly, int num_points, double x, double y);
+
+
+ void eel_canvas_item_reset_bounds (EelCanvasItem *item);
+
+ /* Sets the bbox to the new value, requesting full repaint. */
+ void eel_canvas_update_bbox (EelCanvasItem *item, int x1, int y1, int x2, int y2);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif