summaryrefslogtreecommitdiffstats
path: root/src/display/canvas-axonomgrid.h
blob: 22fceed4473560fc5cf79a09ed0d7375bd80a295 (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
#ifndef SP_CANVAS_AXONOMGRID_H
#define SP_CANVAS_AXONOMGRID_H

/*
 * SPCAxonomGrid
 *
 * Generic (and quite unintelligent) modified copy of the grid item for gnome canvas
 *
 * Copyright (C) 2006 Johan Engelen  <johan@shouraizou.nl>
 * Copyright (C) 2000 Lauris Kaplinski 2000
 *
 */

#include <display/sp-canvas.h>
#include <libnr/nr-coord.h>


#define SP_TYPE_CAXONOMGRID            (sp_caxonomgrid_get_type ())
#define SP_CAXONOMGRID(obj)            (GTK_CHECK_CAST ((obj), SP_TYPE_CAXONOMGRID, SPCAxonomGrid))
#define SP_CAXONOMGRID_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), SP_TYPE_CAXONOMGRID, SPCAxonomGridClass))
#define SP_IS_CAXONOMGRID(obj)         (GTK_CHECK_TYPE ((obj), SP_TYPE_CAXONOMGRID))
#define SP_IS_CAXONOMGRID_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), SP_TYPE_CAXONOMGRID))


/** \brief  All the variables that are tracked for a axonometric grid specific
            canvas item. */
struct SPCAxonomGrid : public SPCanvasItem{
	NR::Point origin;     /**< Origin of the grid */
	double lengthy;       /**< The lengths of the primary y-axis */
	double angle_deg[3];  /**< Angle of each axis (note that angle[2] == 0) */
	double angle_rad[3];  /**< Angle of each axis (note that angle[2] == 0) */
	double tan_angle[3];  /**< tan(angle[.]) */
	guint32 color;        /**< Color for normal lines */
	guint32 empcolor;     /**< Color for emphasis lines */
	gint empspacing;      /**< Spacing between emphasis lines */
	bool scaled;          /**< Whether the grid is in scaled mode */
	
	NR::Point ow;         /**< Transformed origin by the affine for the zoom */
	double lyw;           /**< Transformed length y by the affine for the zoom */
	double lxw_x;
	double lxw_z;
	double spacing_ylines;
                          
    NR::Point sw;          /**< the scaling factors of the affine transform */
};

struct SPCAxonomGridClass {
	SPCanvasItemClass parent_class;
};


/* Standard Gtk function */
GtkType sp_caxonomgrid_get_type (void);



#endif