File: cmpack_chart_data.h

package info (click to toggle)
c-munipack 2.1.39-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 55,888 kB
  • sloc: ansic: 200,762; cpp: 106,129; lex: 9,035; yacc: 4,916; sh: 4,074; fortran: 2,613; xml: 2,105; python: 1,182; makefile: 546; perl: 104
file content (158 lines) | stat: -rw-r--r-- 6,079 bytes parent folder | download | duplicates (2)
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
154
155
156
157
158
/**************************************************************

cmpack_chart_data.h (C-Munipack project)
Object which holds data for a chart (derived from GtkObject)
Copyright (C) 2011 David Motl, dmotl@volny.cz

This program 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 2
of the License, or (at your option) any later version.

This program 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 more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

$Id: cmpack_chart_data.h,v 1.2 2016/04/24 12:24:07 dmotl Exp $

**************************************************************/
#ifndef CMPACK_CHART_DATA_H
#define CMPACK_CHART_DATA_H

#include <stdint.h>
#include <gtk/gtk.h>

#include "cmpack_widgdefs.h"
#include "cmpack_image_data.h"

G_BEGIN_DECLS

typedef struct {
	gdouble		x, y;			// Position of center in pixels
	gdouble		d;				// Circle diameter
	gchar		*tag;			// Object's tag
	CmpackColor	color;			// Color of the circle and tag
	gboolean	hidden : 1;		// Display this item
	gboolean	outline : 1;	// Do not fill the circle
	gboolean	disabled : 1;	// Cannot be selected or activated
	gboolean    topmost : 1;	// Displayed on top of other items
	intptr_t	param;			// User data
} CmpackChartItem;

typedef struct {
	GObject			parent;

	/* Private data */ 
	gint			width, height;		/* Dimensions in pixels */
	gint			count, capacity;	/* Number of objects, allocated space */
	CmpackChartItem **items;			/* List of objects */
} CmpackChartData;

typedef struct {
	GObjectClass parent_class;

	/* Signals */
	void (*object_inserted)(CmpackChartData *model, gint row);
	void (*object_updated)(CmpackChartData *model, gint row);
	void (*object_deleted)(CmpackChartData *model, gint row);
	void (*dim_changed)(CmpackChartData *model);
	void (*data_cleared)(CmpackChartData *model);
} CmpackChartDataClass;

#define CMPACK_TYPE_CHART_DATA            (cmpack_chart_data_get_type ())
#define CMPACK_CHART_DATA(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), CMPACK_TYPE_CHART_DATA, CmpackChartData))
#define CMPACK_CHART_DATA_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), CMPACK_TYPE_CHART_DATA, CmpackChartDataClass))
#define CMPACK_IS_CHART_DATA(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CMPACK_TYPE_CHART_DATA))
#define CMPACK_IS_CHART_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CMPACK_TYPE_CHART_DATA))
#define CMPACK_CHART_DATA_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), CMPACK_TYPE_CHART_DATA, CmpackChartDataClass)) 

GType cmpack_chart_data_get_type(void) G_GNUC_CONST;

/* Create new chart data */
CmpackChartData *cmpack_chart_data_new(void);

/* Create new chart data with allocated capacity */
CmpackChartData *cmpack_chart_data_new_with_alloc(gint capacity);

/* Set allocated space for objects */
void cmpack_chart_data_alloc(CmpackChartData *data, gint capacity);

/* Set allocated space for objects */
void cmpack_chart_data_set_dimensions(CmpackChartData *data, gint width, gint height);

/* Get chart width in pixels */
gint cmpack_chart_data_width(CmpackChartData *data);

/* Get chart height in pixels */
gint cmpack_chart_data_height(CmpackChartData *data);

/* Get number of objects */
gint cmpack_chart_data_count(CmpackChartData *data);

/* Clear all data, set dimensions to zero */
void cmpack_chart_data_clear(CmpackChartData *data);

/* Add object to the list */
gint cmpack_chart_data_add(CmpackChartData *data, const CmpackChartItem *item, gsize item_size);

/* Find object by user data */
gint cmpack_chart_data_find_item(CmpackChartData *data, intptr_t param);

/* Change object's visibility */
void cmpack_chart_data_show_item(CmpackChartData *data, gint row, gboolean visible);

/* Change object's position */
void cmpack_chart_data_set_center(CmpackChartData *data, gint row, gdouble center_x, gdouble center_y);

/* Change object's size */
void cmpack_chart_data_set_diameter(CmpackChartData *data, gint row, gdouble diameter);

/* Change object's color */
void cmpack_chart_data_set_color(CmpackChartData *data, gint row, CmpackColor color);

/* Change object's tag */
void cmpack_chart_data_set_tag(CmpackChartData *data, gint row, const char *tag);

/* Change object's user data */
void cmpack_chart_data_set_param(CmpackChartData *data, gint row, intptr_t param);

/* Change object's sensitivity */
void cmpack_chart_data_set_sensitivity(CmpackChartData *data, gint row, gboolean sensitive);

/* Change object's sensitivity */
void cmpack_chart_data_set_outline(CmpackChartData *data, gint row, gboolean outline);

/* Change object's priority */
void cmpack_chart_data_set_topmost(CmpackChartData *data, gint row, gboolean topmost);

/* Delete object */
void cmpack_chart_data_delete(CmpackChartData *data, gint row);

/* Get object's identifier */
intptr_t cmpack_chart_data_get_param(CmpackChartData *data, gint row);

/* Get object's position */
gboolean cmpack_chart_data_get_center(CmpackChartData *data, gint row, gdouble *x, double *y);

/* Get object's tag */
const gchar *cmpack_chart_data_get_tag(CmpackChartData *data, gint row);

/* Get pointer to object */
CmpackChartItem *cmpack_chart_data_get_item(CmpackChartData *data, gint row);

/* Clear all tags */
void cmpack_chart_data_clear_tags(CmpackChartData *data);

/* Export chart to a file */
gboolean cmpack_chart_data_write_to_file(CmpackChartData *data, CmpackImageData *image,
	const gchar *filepath, const gchar *format, gint width, gint height, gboolean negative,
	CmpackOrientation orientation, gint jpeg_quality);

G_END_DECLS

#endif