1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19  
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 /*
25  * Conversion parameters:
26  * inFile  = cairo-Raster-Sources.html
27  * outPack = cairo
28  * outFile = RasterSource
29  * strct   = cairo_pattern_t
30  * realStrct=
31  * ctorStrct=
32  * clss    = RasterSource
33  * interf  = 
34  * class Code: Yes
35  * interface Code: No
36  * template for:
37  * extend  = cairo_pattern_t
38  * implements:
39  * prefixes:
40  * 	- cairo_raster_source_pattern_
41  * omit structs:
42  * omit prefixes:
43  * omit code:
44  * 	- cairo_pattern_create_raster_source
45  * omit signals:
46  * imports:
47  * structWrap:
48  * module aliases:
49  * local aliases:
50  * overrides:
51  */
52 
53 module cairo.RasterSource;
54 
55 public  import cairo.c.types;
56 
57 private import cairo.c.functions;
58 private import glib.ConstructionException;
59 
60 
61 
62 private import cairo.Pattern;
63 
64 /**
65  * The raster source provides the ability to supply arbitrary pixel data
66  * whilst rendering. The pixels are queried at the time of rasterisation
67  * by means of user callback functions, allowing for the ultimate
68  * flexibility. For example, in handling compressed image sources, you
69  * may keep a MRU cache of decompressed images and decompress sources on the
70  * fly and discard old ones to conserve memory.
71  *
72  * For the raster source to be effective, you must at least specify
73  * the acquire and release callbacks which are used to retrieve the pixel
74  * data for the region of interest and demark when it can be freed afterwards.
75  * Other callbacks are provided for when the pattern is copied temporarily
76  * during rasterisation, or more permanently as a snapshot in order to keep
77  * the pixel data available for printing.
78  */
79 public class RasterSource : Pattern
80 {
81 	
82 	/** the main Gtk struct */
83 	protected cairo_pattern_t* cairo_pattern;
84 	
85 	
86 	/** Get the main Gtk struct */
87 	public cairo_pattern_t* getRasterSourceStruct()
88 	{
89 		return cairo_pattern;
90 	}
91 	
92 	
93 	/** the main Gtk struct as a void* */
94 	protected override void* getStruct()
95 	{
96 		return cast(void*)cairo_pattern;
97 	}
98 	
99 	/**
100 	 * Sets our main struct and passes it to the parent class
101 	 */
102 	public this (cairo_pattern_t* cairo_pattern)
103 	{
104 		super(cast(cairo_pattern_t*)cairo_pattern);
105 		this.cairo_pattern = cairo_pattern;
106 	}
107 	
108 	/**
109 	 * Creates a new user pattern for providing pixel data.
110 	 *
111 	 * Use the setter functions to associate callbacks with the returned
112 	 * pattern. The only mandatory callback is acquire.
113 	 *
114 	 * Since 1.12
115 	 *
116 	 * Params:
117 	 *     userData = the user data to be passed to all callbacks
118 	 *     content  = content type for the pixel data that will be returned.
119 	 *                Knowing the content type ahead of time is used for analysing
120 	 *                the operation and picking the appropriate rendering path.
121 	 *     width    = maximum size of the sample area
122 	 *     height   = maximum size of the sample area
123 	 */
124 	public this(void* userData, CairoContent content, int width, int height)
125 	{
126 		// cairo_pattern_t * cairo_pattern_create_raster_source (void *user_data,  cairo_content_t content,  int width,  int height);
127 		this(cairo_pattern_create_raster_source(userData, content, width, height));
128 	}
129 	
130 	/**
131 	 */
132 	
133 	/**
134 	 * Updates the user data that is provided to all callbacks.
135 	 * Since 1.12
136 	 * Params:
137 	 * data = the user data to be passed to all callbacks
138 	 */
139 	public void setCallbackData(void* data)
140 	{
141 		// void cairo_raster_source_pattern_set_callback_data  (cairo_pattern_t *pattern,  void *data);
142 		cairo_raster_source_pattern_set_callback_data(cairo_pattern, data);
143 	}
144 	
145 	/**
146 	 * Queries the current user data.
147 	 * Since 1.12
148 	 * Returns: the current user-data passed to each callback
149 	 */
150 	public void* getCallbackData()
151 	{
152 		// void * cairo_raster_source_pattern_get_callback_data  (cairo_pattern_t *pattern);
153 		return cairo_raster_source_pattern_get_callback_data(cairo_pattern);
154 	}
155 	
156 	/**
157 	 * Specifies the callbacks used to generate the image surface for a rendering
158 	 * operation (acquire) and the function used to cleanup that surface afterwards.
159 	 * The acquire callback should create a surface (preferably an image
160 	 * surface created to match the target using
161 	 * cairo_surface_create_similar_image()) that defines at least the region
162 	 * of interest specified by extents. The surface is allowed to be the entire
163 	 * sample area, but if it does contain a subsection of the sample area,
164 	 * the surface extents should be provided by setting the device offset (along
165 	 * with its width and height) using cairo_surface_set_device_offset().
166 	 * Since 1.12
167 	 * Params:
168 	 * acquire = acquire callback
169 	 * release = release callback
170 	 */
171 	public void setAcquire(cairo_raster_source_acquire_func_t acquire, cairo_raster_source_release_func_t release)
172 	{
173 		// void cairo_raster_source_pattern_set_acquire  (cairo_pattern_t *pattern,  cairo_raster_source_acquire_func_t acquire,  cairo_raster_source_release_func_t release);
174 		cairo_raster_source_pattern_set_acquire(cairo_pattern, acquire, release);
175 	}
176 	
177 	/**
178 	 * Queries the current acquire and release callbacks.
179 	 * Since 1.12
180 	 * Params:
181 	 * acquire = return value for the current acquire callback
182 	 * release = return value for the current release callback
183 	 */
184 	public void getAcquire(cairo_raster_source_acquire_func_t* acquire, cairo_raster_source_release_func_t* release)
185 	{
186 		// void cairo_raster_source_pattern_get_acquire  (cairo_pattern_t *pattern,  cairo_raster_source_acquire_func_t *acquire,  cairo_raster_source_release_func_t *release);
187 		cairo_raster_source_pattern_get_acquire(cairo_pattern, acquire, release);
188 	}
189 	
190 	/**
191 	 * Sets the callback that will be used whenever a snapshot is taken of the
192 	 * pattern, that is whenever the current contents of the pattern should be
193 	 * preserved for later use. This is typically invoked whilst printing.
194 	 * Since 1.12
195 	 * Params:
196 	 * snapshot = snapshot callback
197 	 */
198 	public void setSnapshot(cairo_raster_source_snapshot_func_t snapshot)
199 	{
200 		// void cairo_raster_source_pattern_set_snapshot  (cairo_pattern_t *pattern,  cairo_raster_source_snapshot_func_t snapshot);
201 		cairo_raster_source_pattern_set_snapshot(cairo_pattern, snapshot);
202 	}
203 	
204 	/**
205 	 * Queries the current snapshot callback.
206 	 * Since 1.12
207 	 * Returns: the current snapshot callback
208 	 */
209 	public cairo_raster_source_snapshot_func_t getSnapshot()
210 	{
211 		// cairo_raster_source_snapshot_func_t cairo_raster_source_pattern_get_snapshot  (cairo_pattern_t *pattern);
212 		return cairo_raster_source_pattern_get_snapshot(cairo_pattern);
213 	}
214 	
215 	/**
216 	 * Updates the copy callback which is used whenever a temporary copy of the
217 	 * pattern is taken.
218 	 * Since 1.12
219 	 * Params:
220 	 * copy = the copy callback
221 	 */
222 	public void setCopy(cairo_raster_source_copy_func_t copy)
223 	{
224 		// void cairo_raster_source_pattern_set_copy  (cairo_pattern_t *pattern,  cairo_raster_source_copy_func_t copy);
225 		cairo_raster_source_pattern_set_copy(cairo_pattern, copy);
226 	}
227 	
228 	/**
229 	 * Queries the current copy callback.
230 	 * Since 1.12
231 	 * Returns: the current copy callback
232 	 */
233 	public cairo_raster_source_copy_func_t getCopy()
234 	{
235 		// cairo_raster_source_copy_func_t cairo_raster_source_pattern_get_copy  (cairo_pattern_t *pattern);
236 		return cairo_raster_source_pattern_get_copy(cairo_pattern);
237 	}
238 	
239 	/**
240 	 * Updates the finish callback which is used whenever a pattern (or a copy
241 	 * thereof) will no longer be used.
242 	 * Since 1.12
243 	 * Params:
244 	 * finish = the finish callback
245 	 */
246 	public void setFinish(cairo_raster_source_finish_func_t finish)
247 	{
248 		// void cairo_raster_source_pattern_set_finish  (cairo_pattern_t *pattern,  cairo_raster_source_finish_func_t finish);
249 		cairo_raster_source_pattern_set_finish(cairo_pattern, finish);
250 	}
251 	
252 	/**
253 	 * Queries the current finish callback.
254 	 * Since 1.12
255 	 * Returns: the current finish callback
256 	 */
257 	public cairo_raster_source_finish_func_t getFinish()
258 	{
259 		// cairo_raster_source_finish_func_t cairo_raster_source_pattern_get_finish  (cairo_pattern_t *pattern);
260 		return cairo_raster_source_pattern_get_finish(cairo_pattern);
261 	}
262 }