Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/goocanvas/src/goocanvasgrid.h
blob: fa70e2eee45cd3b48a935640bedab1b63175801b (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
146
147
148
149
150
151
152
153
/*
 * GooCanvas. Copyright (C) 2005-8 Damon Chaplin.
 * Released under the GNU LGPL license. See COPYING for details.
 *
 * goocanvasgrid.h - a grid item.
 */
#ifndef __GOO_CANVAS_GRID_H__
#define __GOO_CANVAS_GRID_H__

#include <gtk/gtk.h>
#include "goocanvasitemsimple.h"

G_BEGIN_DECLS


/* This is the data used by both model and view classes. */
typedef struct _GooCanvasGridData   GooCanvasGridData;
struct _GooCanvasGridData
{
  /* The area that the grid covers. */
  gdouble x, y, width, height;

  /* The distance between grid lines. */
  gdouble x_step, y_step;

  /* The offset before the first grid line. */
  gdouble x_offset, y_offset;

  /* The widths of the grid lines, or -ve to use item's stroke width. */
  gdouble horz_grid_line_width, vert_grid_line_width;

  /* The color/pattern for the grid lines, or NULL to use the stroke color. */
  cairo_pattern_t *horz_grid_line_pattern, *vert_grid_line_pattern;

  /* The width of the border around the grid, or -1 for no border. */
  gdouble border_width;

  /* The color/pattern for the border, or NULL to use the stroke color. */
  cairo_pattern_t *border_pattern;

  /* If the horizontal and vertical grid lines should be shown. */
  guint show_horz_grid_lines : 1;
  guint show_vert_grid_lines : 1;

  /* If vertical grid lines are drawn on top. */
  guint vert_grid_lines_on_top : 1;
};


#define GOO_TYPE_CANVAS_GRID            (goo_canvas_grid_get_type ())
#define GOO_CANVAS_GRID(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GOO_TYPE_CANVAS_GRID, GooCanvasGrid))
#define GOO_CANVAS_GRID_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GOO_TYPE_CANVAS_GRID, GooCanvasGridClass))
#define GOO_IS_CANVAS_GRID(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GOO_TYPE_CANVAS_GRID))
#define GOO_IS_CANVAS_GRID_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GOO_TYPE_CANVAS_GRID))
#define GOO_CANVAS_GRID_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GOO_TYPE_CANVAS_GRID, GooCanvasGridClass))


typedef struct _GooCanvasGrid       GooCanvasGrid;
typedef struct _GooCanvasGridClass  GooCanvasGridClass;

/**
 * GooCanvasGrid
 *
 * The #GooCanvasGrid-struct struct contains private data only.
 */
struct _GooCanvasGrid
{
  GooCanvasItemSimple parent_object;

  GooCanvasGridData *grid_data;
};

struct _GooCanvasGridClass
{
  GooCanvasItemSimpleClass parent_class;

  /*< private >*/

  /* Padding for future expansion */
  void (*_goo_canvas_reserved1) (void);
  void (*_goo_canvas_reserved2) (void);
  void (*_goo_canvas_reserved3) (void);
  void (*_goo_canvas_reserved4) (void);
};


GType          goo_canvas_grid_get_type      (void) G_GNUC_CONST;
GooCanvasItem* goo_canvas_grid_new           (GooCanvasItem      *parent,
					      gdouble             x,
					      gdouble             y,
					      gdouble             width,
					      gdouble             height,
					      gdouble             x_step,
					      gdouble             y_step,
					      gdouble             x_offset,
					      gdouble             y_offset,
					      ...);



#define GOO_TYPE_CANVAS_GRID_MODEL            (goo_canvas_grid_model_get_type ())
#define GOO_CANVAS_GRID_MODEL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GOO_TYPE_CANVAS_GRID_MODEL, GooCanvasGridModel))
#define GOO_CANVAS_GRID_MODEL_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GOO_TYPE_CANVAS_GRID_MODEL, GooCanvasGridModelClass))
#define GOO_IS_CANVAS_GRID_MODEL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GOO_TYPE_CANVAS_GRID_MODEL))
#define GOO_IS_CANVAS_GRID_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GOO_TYPE_CANVAS_GRID_MODEL))
#define GOO_CANVAS_GRID_MODEL_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GOO_TYPE_CANVAS_GRID_MODEL, GooCanvasGridModelClass))


typedef struct _GooCanvasGridModel       GooCanvasGridModel;
typedef struct _GooCanvasGridModelClass  GooCanvasGridModelClass;

/**
 * GooCanvasGridModel
 *
 * The #GooCanvasGridModel-struct struct contains private data only.
 */
struct _GooCanvasGridModel
{
  GooCanvasItemModelSimple parent_object;

  GooCanvasGridData grid_data;
};

struct _GooCanvasGridModelClass
{
  GooCanvasItemModelSimpleClass parent_class;

  /*< private >*/

  /* Padding for future expansion */
  void (*_goo_canvas_reserved1) (void);
  void (*_goo_canvas_reserved2) (void);
  void (*_goo_canvas_reserved3) (void);
  void (*_goo_canvas_reserved4) (void);
};


GType               goo_canvas_grid_model_get_type (void) G_GNUC_CONST;
GooCanvasItemModel* goo_canvas_grid_model_new      (GooCanvasItemModel *parent,
						    gdouble             x,
						    gdouble             y,
						    gdouble             width,
						    gdouble             height,
						    gdouble             x_step,
						    gdouble             y_step,
						    gdouble             x_offset,
						    gdouble             y_offset,
						    ...);


G_END_DECLS

#endif /* __GOO_CANVAS_GRID_H__ */