File: base.c

package info (click to toggle)
pdf-presenter-console 3.1-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 1,660 kB
  • sloc: ansic: 18,202; makefile: 6
file content (217 lines) | stat: -rw-r--r-- 8,278 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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
/* base.c generated by valac 0.16.0, the Vala compiler
 * generated from base.vala, do not modify */


#include <glib.h>
#include <glib-object.h>
#include <gdk/gdk.h>


#define PDFPC_RENDERER_TYPE_BASE (pdfpc_renderer_base_get_type ())
#define PDFPC_RENDERER_BASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PDFPC_RENDERER_TYPE_BASE, pdfpcRendererBase))
#define PDFPC_RENDERER_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PDFPC_RENDERER_TYPE_BASE, pdfpcRendererBaseClass))
#define PDFPC_RENDERER_IS_BASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PDFPC_RENDERER_TYPE_BASE))
#define PDFPC_RENDERER_IS_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PDFPC_RENDERER_TYPE_BASE))
#define PDFPC_RENDERER_BASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PDFPC_RENDERER_TYPE_BASE, pdfpcRendererBaseClass))

typedef struct _pdfpcRendererBase pdfpcRendererBase;
typedef struct _pdfpcRendererBaseClass pdfpcRendererBaseClass;
typedef struct _pdfpcRendererBasePrivate pdfpcRendererBasePrivate;

#define PDFPC_METADATA_TYPE_BASE (pdfpc_metadata_base_get_type ())
#define PDFPC_METADATA_BASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PDFPC_METADATA_TYPE_BASE, pdfpcMetadataBase))
#define PDFPC_METADATA_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PDFPC_METADATA_TYPE_BASE, pdfpcMetadataBaseClass))
#define PDFPC_METADATA_IS_BASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PDFPC_METADATA_TYPE_BASE))
#define PDFPC_METADATA_IS_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PDFPC_METADATA_TYPE_BASE))
#define PDFPC_METADATA_BASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PDFPC_METADATA_TYPE_BASE, pdfpcMetadataBaseClass))

typedef struct _pdfpcMetadataBase pdfpcMetadataBase;
typedef struct _pdfpcMetadataBaseClass pdfpcMetadataBaseClass;
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

typedef enum  {
	PDFPC_RENDERER_RENDER_ERROR_SLIDE_DOES_NOT_EXIST
} pdfpcRendererRenderError;
#define PDFPC_RENDERER_RENDER_ERROR pdfpc_renderer_render_error_quark ()
struct _pdfpcRendererBase {
	GObject parent_instance;
	pdfpcRendererBasePrivate * priv;
	pdfpcMetadataBase* metadata;
	gint width;
	gint height;
};

struct _pdfpcRendererBaseClass {
	GObjectClass parent_class;
	GdkPixmap* (*render_to_pixmap) (pdfpcRendererBase* self, gint slide_number, GError** error);
	GdkPixmap* (*fade_to_black) (pdfpcRendererBase* self);
};

/**
     * Error domain used for every render error, which might occur
     */

static gpointer pdfpc_renderer_base_parent_class = NULL;

GType pdfpc_renderer_base_get_type (void) G_GNUC_CONST;
GQuark pdfpc_renderer_render_error_quark (void);
GType pdfpc_metadata_base_get_type (void) G_GNUC_CONST;
enum  {
	PDFPC_RENDERER_BASE_DUMMY_PROPERTY
};
pdfpcRendererBase* pdfpc_renderer_base_construct (GType object_type, pdfpcMetadataBase* metadata, gint width, gint height);
pdfpcMetadataBase* pdfpc_renderer_base_get_metadata (pdfpcRendererBase* self);
gint pdfpc_renderer_base_get_width (pdfpcRendererBase* self);
gint pdfpc_renderer_base_get_height (pdfpcRendererBase* self);
GdkPixmap* pdfpc_renderer_base_render_to_pixmap (pdfpcRendererBase* self, gint slide_number, GError** error);
static GdkPixmap* pdfpc_renderer_base_real_render_to_pixmap (pdfpcRendererBase* self, gint slide_number, GError** error);
GdkPixmap* pdfpc_renderer_base_fade_to_black (pdfpcRendererBase* self);
static GdkPixmap* pdfpc_renderer_base_real_fade_to_black (pdfpcRendererBase* self);
static void pdfpc_renderer_base_finalize (GObject* obj);


/**
         * Base constructor taking a metadata object as well as the desired
         * render width and height as parameters.
         */
static gpointer _g_object_ref0 (gpointer self) {
	return self ? g_object_ref (self) : NULL;
}


pdfpcRendererBase* pdfpc_renderer_base_construct (GType object_type, pdfpcMetadataBase* metadata, gint width, gint height) {
	pdfpcRendererBase * self = NULL;
	pdfpcMetadataBase* _tmp0_;
	pdfpcMetadataBase* _tmp1_;
	gint _tmp2_;
	gint _tmp3_;
	g_return_val_if_fail (metadata != NULL, NULL);
	self = (pdfpcRendererBase*) g_object_new (object_type, NULL);
	_tmp0_ = metadata;
	_tmp1_ = _g_object_ref0 (_tmp0_);
	_g_object_unref0 (self->metadata);
	self->metadata = _tmp1_;
	_tmp2_ = width;
	self->width = _tmp2_;
	_tmp3_ = height;
	self->height = _tmp3_;
	return self;
}


/**
         * Return the registered metadata object
         */
pdfpcMetadataBase* pdfpc_renderer_base_get_metadata (pdfpcRendererBase* self) {
	pdfpcMetadataBase* result = NULL;
	pdfpcMetadataBase* _tmp0_;
	pdfpcMetadataBase* _tmp1_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->metadata;
	_tmp1_ = _g_object_ref0 (_tmp0_);
	result = _tmp1_;
	return result;
}


/**
         * Return the desired render width
         */
gint pdfpc_renderer_base_get_width (pdfpcRendererBase* self) {
	gint result = 0;
	gint _tmp0_;
	g_return_val_if_fail (self != NULL, 0);
	_tmp0_ = self->width;
	result = _tmp0_;
	return result;
}


/**
         * Return the desired render height
         */
gint pdfpc_renderer_base_get_height (pdfpcRendererBase* self) {
	gint result = 0;
	gint _tmp0_;
	g_return_val_if_fail (self != NULL, 0);
	_tmp0_ = self->height;
	result = _tmp0_;
	return result;
}


/**
         * Render the given slide_number to a Gdk.Pixmap and return it.
         *
         * If the requested slide is not available an
         * RenderError.SLIDE_DOES_NOT_EXIST error should be thrown.
         */
static GdkPixmap* pdfpc_renderer_base_real_render_to_pixmap (pdfpcRendererBase* self, gint slide_number, GError** error) {
	g_critical ("Type `%s' does not implement abstract method `pdfpc_renderer_base_render_to_pixmap'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
	return NULL;
}


GdkPixmap* pdfpc_renderer_base_render_to_pixmap (pdfpcRendererBase* self, gint slide_number, GError** error) {
	g_return_val_if_fail (self != NULL, NULL);
	return PDFPC_RENDERER_BASE_GET_CLASS (self)->render_to_pixmap (self, slide_number, error);
}


/**
         * Fill the display with black. Useful for last "slide" or for fading
         * to black at certain points in the presentation.
         */
static GdkPixmap* pdfpc_renderer_base_real_fade_to_black (pdfpcRendererBase* self) {
	g_critical ("Type `%s' does not implement abstract method `pdfpc_renderer_base_fade_to_black'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
	return NULL;
}


GdkPixmap* pdfpc_renderer_base_fade_to_black (pdfpcRendererBase* self) {
	g_return_val_if_fail (self != NULL, NULL);
	return PDFPC_RENDERER_BASE_GET_CLASS (self)->fade_to_black (self);
}


static void pdfpc_renderer_base_class_init (pdfpcRendererBaseClass * klass) {
	pdfpc_renderer_base_parent_class = g_type_class_peek_parent (klass);
	PDFPC_RENDERER_BASE_CLASS (klass)->render_to_pixmap = pdfpc_renderer_base_real_render_to_pixmap;
	PDFPC_RENDERER_BASE_CLASS (klass)->fade_to_black = pdfpc_renderer_base_real_fade_to_black;
	G_OBJECT_CLASS (klass)->finalize = pdfpc_renderer_base_finalize;
}


static void pdfpc_renderer_base_instance_init (pdfpcRendererBase * self) {
}


static void pdfpc_renderer_base_finalize (GObject* obj) {
	pdfpcRendererBase * self;
	self = PDFPC_RENDERER_BASE (obj);
	_g_object_unref0 (self->metadata);
	G_OBJECT_CLASS (pdfpc_renderer_base_parent_class)->finalize (obj);
}


/**
     * Renderer base class needed to be extended by every slide renderer.
     */
GType pdfpc_renderer_base_get_type (void) {
	static volatile gsize pdfpc_renderer_base_type_id__volatile = 0;
	if (g_once_init_enter (&pdfpc_renderer_base_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (pdfpcRendererBaseClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) pdfpc_renderer_base_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (pdfpcRendererBase), 0, (GInstanceInitFunc) pdfpc_renderer_base_instance_init, NULL };
		GType pdfpc_renderer_base_type_id;
		pdfpc_renderer_base_type_id = g_type_register_static (G_TYPE_OBJECT, "pdfpcRendererBase", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
		g_once_init_leave (&pdfpc_renderer_base_type_id__volatile, pdfpc_renderer_base_type_id);
	}
	return pdfpc_renderer_base_type_id__volatile;
}


GQuark pdfpc_renderer_render_error_quark (void) {
	return g_quark_from_static_string ("pdfpc_renderer_render_error-quark");
}