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-Script-Surfaces.html
27  * outPack = cairo
28  * outFile = Script
29  * strct   = cairo_device_t
30  * realStrct=
31  * ctorStrct=
32  * clss    = Script
33  * interf  = 
34  * class Code: No
35  * interface Code: No
36  * template for:
37  * extend  = cairo_device_t
38  * implements:
39  * prefixes:
40  * 	- cairo_script_
41  * omit structs:
42  * omit prefixes:
43  * 	- cairo_script_surface_
44  * omit code:
45  * omit signals:
46  * imports:
47  * 	- glib.Str
48  * 	- cairo.Script
49  * 	- cairo.RecordingSurface
50  * structWrap:
51  * 	- cairo_device_t* -> Script
52  * 	- cairo_surface_t* -> RecordingSurface
53  * module aliases:
54  * local aliases:
55  * overrides:
56  */
57 
58 module cairo.Script;
59 
60 public  import cairo.c.types;
61 
62 private import cairo.c.functions;
63 private import glib.ConstructionException;
64 
65 private import glib.Str;
66 private import cairo.Script;
67 private import cairo.RecordingSurface;
68 
69 
70 private import cairo.Device;
71 
72 /**
73  * The script surface provides the ability to render to a native
74  * script that matches the cairo drawing model. The scripts can
75  * be replayed using tools under the util/cairo-script directoriy,
76  * or with cairo-perf-trace.
77  */
78 public class Script : Device
79 {
80 	
81 	/** the main Gtk struct */
82 	protected cairo_device_t* cairo_device;
83 	
84 	
85 	/** Get the main Gtk struct */
86 	public cairo_device_t* getScriptStruct()
87 	{
88 		return cairo_device;
89 	}
90 	
91 	
92 	/** the main Gtk struct as a void* */
93 	protected override void* getStruct()
94 	{
95 		return cast(void*)cairo_device;
96 	}
97 	
98 	/**
99 	 * Sets our main struct and passes it to the parent class
100 	 */
101 	public this (cairo_device_t* cairo_device)
102 	{
103 		super(cast(cairo_device_t*)cairo_device);
104 		this.cairo_device = cairo_device;
105 	}
106 	
107 	/**
108 	 */
109 	
110 	/**
111 	 * Creates a output device for emitting the script, used when
112 	 * creating the individual surfaces.
113 	 * Since 1.12
114 	 * Params:
115 	 * filename = the name (path) of the file to write the script to
116 	 * Returns: a pointer to the newly created device. The caller owns the surface and should call cairo_device_destroy() when done with it. This function always returns a valid pointer, but it will return a pointer to a "nil" device if an error such as out of memory occurs. You can use cairo_device_status() to check for this.
117 	 */
118 	public static Script create(string filename)
119 	{
120 		// cairo_device_t * cairo_script_create (const char *filename);
121 		auto p = cairo_script_create(Str.toStringz(filename));
122 		
123 		if(p is null)
124 		{
125 			return null;
126 		}
127 		
128 		return new Script(cast(cairo_device_t*) p);
129 	}
130 	
131 	/**
132 	 * Creates a output device for emitting the script, used when
133 	 * creating the individual surfaces.
134 	 * Since 1.12
135 	 * Params:
136 	 * writeFunc = callback function passed the bytes written to the script
137 	 * closure = user data to be passed to the callback
138 	 * Returns: a pointer to the newly created device. The caller owns the surface and should call cairo_device_destroy() when done with it. This function always returns a valid pointer, but it will return a pointer to a "nil" device if an error such as out of memory occurs. You can use cairo_device_status() to check for this.
139 	 */
140 	public static Script createForStream(cairo_write_func_t writeFunc, void* closure)
141 	{
142 		// cairo_device_t * cairo_script_create_for_stream (cairo_write_func_t write_func,  void *closure);
143 		auto p = cairo_script_create_for_stream(writeFunc, closure);
144 		
145 		if(p is null)
146 		{
147 			return null;
148 		}
149 		
150 		return new Script(cast(cairo_device_t*) p);
151 	}
152 	
153 	/**
154 	 * Converts the record operations in recording_surface into a script.
155 	 * Since 1.12
156 	 * Params:
157 	 * recordingSurface = the recording surface to replay
158 	 * Returns: CAIRO_STATUS_SUCCESS on successful completion or an error code.
159 	 */
160 	public cairo_status_t fromRecordingSurface(RecordingSurface recordingSurface)
161 	{
162 		// cairo_status_t cairo_script_from_recording_surface (cairo_device_t *script,  cairo_surface_t *recording_surface);
163 		return cairo_script_from_recording_surface(cairo_device, (recordingSurface is null) ? null : recordingSurface.getRecordingSurfaceStruct());
164 	}
165 	
166 	/**
167 	 * Queries the script for its current output mode.
168 	 * Since 1.12
169 	 * Params:
170 	 * script = The script (output device) to query
171 	 * Returns: the current output mode of the script
172 	 */
173 	public cairo_script_mode_t getMode()
174 	{
175 		// cairo_script_mode_t cairo_script_get_mode (cairo_device_t *script);
176 		return cairo_script_get_mode(cairo_device);
177 	}
178 	
179 	/**
180 	 * Change the output mode of the script
181 	 * Since 1.12
182 	 * Params:
183 	 * script = The script (output device)
184 	 * mode = the new mode
185 	 */
186 	public void setMode(cairo_script_mode_t mode)
187 	{
188 		// void cairo_script_set_mode (cairo_device_t *script,  cairo_script_mode_t mode);
189 		cairo_script_set_mode(cairo_device, mode);
190 	}
191 	
192 	/**
193 	 * Emit a string verbatim into the script.
194 	 * Since 1.12
195 	 * Params:
196 	 * comment = the string to emit
197 	 */
198 	public void writeComment(string comment)
199 	{
200 		// void cairo_script_write_comment (cairo_device_t *script,  const char *comment,  int len);
201 		cairo_script_write_comment(cairo_device, cast(char*)comment.ptr, cast(int) comment.length);
202 	}
203 }