summaryrefslogtreecommitdiff
path: root/eel/eel-canvas-rect-ellipse.h
blob: e391dfb455eb8ea1a245b5291c950843cd7a41ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/*
 * 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., 51 Franklin St, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 */
/*
  @NOTATION@
 */
/* Rectangle and ellipse item types for 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 <federico@nuclecu.unam.mx>
 */

#ifndef EEL_CANVAS_RECT_ELLIPSE_H
#define EEL_CANVAS_RECT_ELLIPSE_H


#include <eel/eel-canvas.h>

#ifdef __cplusplus
extern "C" {
#endif


    /* Base class for rectangle and ellipse item types.  These are defined by their top-left and
     * bottom-right corners.  Rectangles and ellipses share the following arguments:
     *
     * name			type		read/write	description
     * ------------------------------------------------------------------------------------------
     * x1			double		RW		Leftmost coordinate of rectangle or ellipse
     * y1			double		RW		Topmost coordinate of rectangle or ellipse
     * x2			double		RW		Rightmost coordinate of rectangle or ellipse
     * y2			double		RW		Bottommost coordinate of rectangle or ellipse
     * fill_color		string		W		X color specification for fill color,
     *							or NULL pointer for no color (transparent)
     * fill_color_gdk	GdkColor*	RW		Allocated GdkColor for fill
     * outline_color	string		W		X color specification for outline color,
     *							or NULL pointer for no color (transparent)
     * outline_color_gdk	GdkColor*	RW		Allocated GdkColor for outline
     * fill_stipple		GdkBitmap*	RW		Stipple pattern for fill
     * outline_stipple	GdkBitmap*	RW		Stipple pattern for outline
     * width_pixels		uint		RW		Width of the outline in pixels.  The outline will
     *							not be scaled when the canvas zoom factor is changed.
     * width_units		double		RW		Width of the outline in canvas units.  The outline
     *							will be scaled when the canvas zoom factor is changed.
     */


#define EEL_TYPE_CANVAS_RE            (eel_canvas_re_get_type ())
#define EEL_CANVAS_RE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), EEL_TYPE_CANVAS_RE, EelCanvasRE))
#define EEL_CANVAS_RE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), EEL_TYPE_CANVAS_RE, EelCanvasREClass))
#define EEL_IS_CANVAS_RE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EEL_TYPE_CANVAS_RE))
#define EEL_IS_CANVAS_RE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EEL_TYPE_CANVAS_RE))
#define EEL_CANVAS_RE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), EEL_TYPE_CANVAS_RE, EelCanvasREClass))


    typedef struct _EelCanvasRE      EelCanvasRE;
    typedef struct _EelCanvasREClass EelCanvasREClass;

    struct _EelCanvasRE
    {
        EelCanvasItem item;

        double x1, y1, x2, y2;		/* Corners of item */
        double width;			/* Outline width */

        GdkRGBA fill_color;
        GdkRGBA outline_color;

	gboolean outline_stippling;

        /* Configuration flags */

        unsigned int fill_set : 1;	/* Is fill color set? */
        unsigned int outline_set : 1;	/* Is outline color set? */
        unsigned int width_pixels : 1;	/* Is outline width specified in pixels or units? */
    };

    struct _EelCanvasREClass
    {
        EelCanvasItemClass parent_class;
    };


    /* Standard Gtk function */
    GType eel_canvas_re_get_type (void) G_GNUC_CONST;


    /* Rectangle item.  No configurable or queryable arguments are available (use those in
     * EelCanvasRE).
     */


#define EEL_TYPE_CANVAS_RECT            (eel_canvas_rect_get_type ())
#define EEL_CANVAS_RECT(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), EEL_TYPE_CANVAS_RECT, EelCanvasRect))
#define EEL_CANVAS_RECT_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), EEL_TYPE_CANVAS_RECT, EelCanvasRectClass))
#define EEL_IS_CANVAS_RECT(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EEL_TYPE_CANVAS_RECT))
#define EEL_IS_CANVAS_RECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EEL_TYPE_CANVAS_RECT))
#define EEL_CANVAS_RECT_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), EEL_TYPE_CANVAS_RECT, EelCanvasRectClass))


    typedef struct _EelCanvasRect EelCanvasRect;
    typedef struct _EelCanvasRectPrivate EelCanvasRectPrivate;
    typedef struct _EelCanvasRectClass EelCanvasRectClass;

    struct _EelCanvasRect
    {
        EelCanvasRE re;
        EelCanvasRectPrivate *priv;
    };

    struct _EelCanvasRectClass
    {
        EelCanvasREClass parent_class;
    };


    /* Standard Gtk function */
    GType eel_canvas_rect_get_type (void) G_GNUC_CONST;

#ifdef __cplusplus
}
#endif

#endif