1 /**
2 Color picker control.
3 
4 Copyright:
5 Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur.  
6 Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)  
7 Copyright (c) 2017-2018 Godot-D contributors  
8 
9 License: $(LINK2 https://opensource.org/licenses/MIT, MIT License)
10 
11 
12 */
13 module godot.colorpicker;
14 import std.meta : AliasSeq, staticIndexOf;
15 import std.traits : Unqual;
16 import godot.d.meta;
17 import godot.core;
18 import godot.c;
19 import godot.d.bind;
20 import godot.d.reference;
21 import godot.object;
22 import godot.classdb;
23 import godot.boxcontainer;
24 import godot.inputevent;
25 import godot.container;
26 import godot.control;
27 import godot.canvasitem;
28 import godot.node;
29 /**
30 Color picker control.
31 
32 $(D Control) node displaying a color picker widget. It's useful for selecting a color from an RGB/RGBA colorspace.
33 */
34 @GodotBaseClass struct ColorPicker
35 {
36 	enum string _GODOT_internal_name = "ColorPicker";
37 public:
38 @nogc nothrow:
39 	union { godot_object _godot_object; BoxContainer _GODOT_base; }
40 	alias _GODOT_base this;
41 	alias BaseClasses = AliasSeq!(typeof(_GODOT_base), typeof(_GODOT_base).BaseClasses);
42 	package(godot) __gshared bool _classBindingInitialized = false;
43 	package(godot) static struct _classBinding
44 	{
45 		__gshared:
46 		@GodotName("set_pick_color") GodotMethod!(void, Color) setPickColor;
47 		@GodotName("get_pick_color") GodotMethod!(Color) getPickColor;
48 		@GodotName("set_raw_mode") GodotMethod!(void, bool) setRawMode;
49 		@GodotName("is_raw_mode") GodotMethod!(bool) isRawMode;
50 		@GodotName("set_deferred_mode") GodotMethod!(void, bool) setDeferredMode;
51 		@GodotName("is_deferred_mode") GodotMethod!(bool) isDeferredMode;
52 		@GodotName("set_edit_alpha") GodotMethod!(void, bool) setEditAlpha;
53 		@GodotName("is_editing_alpha") GodotMethod!(bool) isEditingAlpha;
54 		@GodotName("add_preset") GodotMethod!(void, Color) addPreset;
55 		@GodotName("_value_changed") GodotMethod!(void, double) _valueChanged;
56 		@GodotName("_html_entered") GodotMethod!(void, String) _htmlEntered;
57 		@GodotName("_text_type_toggled") GodotMethod!(void) _textTypeToggled;
58 		@GodotName("_add_preset_pressed") GodotMethod!(void) _addPresetPressed;
59 		@GodotName("_screen_pick_pressed") GodotMethod!(void) _screenPickPressed;
60 		@GodotName("_sample_draw") GodotMethod!(void) _sampleDraw;
61 		@GodotName("_update_presets") GodotMethod!(void) _updatePresets;
62 		@GodotName("_hsv_draw") GodotMethod!(void, long, GodotObject) _hsvDraw;
63 		@GodotName("_uv_input") GodotMethod!(void, InputEvent) _uvInput;
64 		@GodotName("_w_input") GodotMethod!(void, InputEvent) _wInput;
65 		@GodotName("_preset_input") GodotMethod!(void, InputEvent) _presetInput;
66 		@GodotName("_screen_input") GodotMethod!(void, InputEvent) _screenInput;
67 		@GodotName("_focus_enter") GodotMethod!(void) _focusEnter;
68 		@GodotName("_focus_exit") GodotMethod!(void) _focusExit;
69 		@GodotName("_html_focus_exit") GodotMethod!(void) _htmlFocusExit;
70 	}
71 	bool opEquals(in ColorPicker other) const { return _godot_object.ptr is other._godot_object.ptr; }
72 	ColorPicker opAssign(T : typeof(null))(T n) { _godot_object.ptr = null; }
73 	bool opEquals(typeof(null) n) const { return _godot_object.ptr is null; }
74 	mixin baseCasts;
75 	static ColorPicker _new()
76 	{
77 		static godot_class_constructor constructor;
78 		if(constructor is null) constructor = _godot_api.godot_get_class_constructor("ColorPicker");
79 		if(constructor is null) return typeof(this).init;
80 		return cast(ColorPicker)(constructor());
81 	}
82 	@disable new(size_t s);
83 	/**
84 	
85 	*/
86 	void setPickColor(in Color color)
87 	{
88 		checkClassBinding!(typeof(this))();
89 		ptrcall!(void)(_classBinding.setPickColor, _godot_object, color);
90 	}
91 	/**
92 	
93 	*/
94 	Color getPickColor() const
95 	{
96 		checkClassBinding!(typeof(this))();
97 		return ptrcall!(Color)(_classBinding.getPickColor, _godot_object);
98 	}
99 	/**
100 	
101 	*/
102 	void setRawMode(in bool mode)
103 	{
104 		checkClassBinding!(typeof(this))();
105 		ptrcall!(void)(_classBinding.setRawMode, _godot_object, mode);
106 	}
107 	/**
108 	
109 	*/
110 	bool isRawMode() const
111 	{
112 		checkClassBinding!(typeof(this))();
113 		return ptrcall!(bool)(_classBinding.isRawMode, _godot_object);
114 	}
115 	/**
116 	
117 	*/
118 	void setDeferredMode(in bool mode)
119 	{
120 		checkClassBinding!(typeof(this))();
121 		ptrcall!(void)(_classBinding.setDeferredMode, _godot_object, mode);
122 	}
123 	/**
124 	
125 	*/
126 	bool isDeferredMode() const
127 	{
128 		checkClassBinding!(typeof(this))();
129 		return ptrcall!(bool)(_classBinding.isDeferredMode, _godot_object);
130 	}
131 	/**
132 	
133 	*/
134 	void setEditAlpha(in bool show)
135 	{
136 		checkClassBinding!(typeof(this))();
137 		ptrcall!(void)(_classBinding.setEditAlpha, _godot_object, show);
138 	}
139 	/**
140 	
141 	*/
142 	bool isEditingAlpha() const
143 	{
144 		checkClassBinding!(typeof(this))();
145 		return ptrcall!(bool)(_classBinding.isEditingAlpha, _godot_object);
146 	}
147 	/**
148 	Adds the given color to a list of color presets. The presets are displayed in the color picker and the user will be able to select them. Note: the presets list is only for $(I this) color picker.
149 	*/
150 	void addPreset(in Color color)
151 	{
152 		checkClassBinding!(typeof(this))();
153 		ptrcall!(void)(_classBinding.addPreset, _godot_object, color);
154 	}
155 	/**
156 	
157 	*/
158 	void _valueChanged(in double arg0)
159 	{
160 		Array _GODOT_args = Array.empty_array;
161 		_GODOT_args.append(arg0);
162 		String _GODOT_method_name = String("_value_changed");
163 		this.callv(_GODOT_method_name, _GODOT_args);
164 	}
165 	/**
166 	
167 	*/
168 	void _htmlEntered(StringArg0)(in StringArg0 arg0)
169 	{
170 		Array _GODOT_args = Array.empty_array;
171 		_GODOT_args.append(arg0);
172 		String _GODOT_method_name = String("_html_entered");
173 		this.callv(_GODOT_method_name, _GODOT_args);
174 	}
175 	/**
176 	
177 	*/
178 	void _textTypeToggled()
179 	{
180 		Array _GODOT_args = Array.empty_array;
181 		String _GODOT_method_name = String("_text_type_toggled");
182 		this.callv(_GODOT_method_name, _GODOT_args);
183 	}
184 	/**
185 	
186 	*/
187 	void _addPresetPressed()
188 	{
189 		Array _GODOT_args = Array.empty_array;
190 		String _GODOT_method_name = String("_add_preset_pressed");
191 		this.callv(_GODOT_method_name, _GODOT_args);
192 	}
193 	/**
194 	
195 	*/
196 	void _screenPickPressed()
197 	{
198 		Array _GODOT_args = Array.empty_array;
199 		String _GODOT_method_name = String("_screen_pick_pressed");
200 		this.callv(_GODOT_method_name, _GODOT_args);
201 	}
202 	/**
203 	
204 	*/
205 	void _sampleDraw()
206 	{
207 		Array _GODOT_args = Array.empty_array;
208 		String _GODOT_method_name = String("_sample_draw");
209 		this.callv(_GODOT_method_name, _GODOT_args);
210 	}
211 	/**
212 	
213 	*/
214 	void _updatePresets()
215 	{
216 		Array _GODOT_args = Array.empty_array;
217 		String _GODOT_method_name = String("_update_presets");
218 		this.callv(_GODOT_method_name, _GODOT_args);
219 	}
220 	/**
221 	
222 	*/
223 	void _hsvDraw(in long arg0, GodotObject arg1)
224 	{
225 		Array _GODOT_args = Array.empty_array;
226 		_GODOT_args.append(arg0);
227 		_GODOT_args.append(arg1);
228 		String _GODOT_method_name = String("_hsv_draw");
229 		this.callv(_GODOT_method_name, _GODOT_args);
230 	}
231 	/**
232 	
233 	*/
234 	void _uvInput(InputEvent arg0)
235 	{
236 		Array _GODOT_args = Array.empty_array;
237 		_GODOT_args.append(arg0);
238 		String _GODOT_method_name = String("_uv_input");
239 		this.callv(_GODOT_method_name, _GODOT_args);
240 	}
241 	/**
242 	
243 	*/
244 	void _wInput(InputEvent arg0)
245 	{
246 		Array _GODOT_args = Array.empty_array;
247 		_GODOT_args.append(arg0);
248 		String _GODOT_method_name = String("_w_input");
249 		this.callv(_GODOT_method_name, _GODOT_args);
250 	}
251 	/**
252 	
253 	*/
254 	void _presetInput(InputEvent arg0)
255 	{
256 		Array _GODOT_args = Array.empty_array;
257 		_GODOT_args.append(arg0);
258 		String _GODOT_method_name = String("_preset_input");
259 		this.callv(_GODOT_method_name, _GODOT_args);
260 	}
261 	/**
262 	
263 	*/
264 	void _screenInput(InputEvent arg0)
265 	{
266 		Array _GODOT_args = Array.empty_array;
267 		_GODOT_args.append(arg0);
268 		String _GODOT_method_name = String("_screen_input");
269 		this.callv(_GODOT_method_name, _GODOT_args);
270 	}
271 	/**
272 	
273 	*/
274 	void _focusEnter()
275 	{
276 		Array _GODOT_args = Array.empty_array;
277 		String _GODOT_method_name = String("_focus_enter");
278 		this.callv(_GODOT_method_name, _GODOT_args);
279 	}
280 	/**
281 	
282 	*/
283 	void _focusExit()
284 	{
285 		Array _GODOT_args = Array.empty_array;
286 		String _GODOT_method_name = String("_focus_exit");
287 		this.callv(_GODOT_method_name, _GODOT_args);
288 	}
289 	/**
290 	
291 	*/
292 	void _htmlFocusExit()
293 	{
294 		Array _GODOT_args = Array.empty_array;
295 		String _GODOT_method_name = String("_html_focus_exit");
296 		this.callv(_GODOT_method_name, _GODOT_args);
297 	}
298 	/**
299 	The currently selected color.
300 	*/
301 	@property Color color()
302 	{
303 		return getPickColor();
304 	}
305 	/// ditto
306 	@property void color(Color v)
307 	{
308 		setPickColor(v);
309 	}
310 	/**
311 	If `true` shows an alpha channel slider (transparency).
312 	*/
313 	@property bool editAlpha()
314 	{
315 		return isEditingAlpha();
316 	}
317 	/// ditto
318 	@property void editAlpha(bool v)
319 	{
320 		setEditAlpha(v);
321 	}
322 	/**
323 	If `true` allows the color R, G, B component values to go beyond 1.0, which can be used for certain special operations that require it (like tinting without darkening or rendering sprites in HDR).
324 	*/
325 	@property bool rawMode()
326 	{
327 		return isRawMode();
328 	}
329 	/// ditto
330 	@property void rawMode(bool v)
331 	{
332 		setRawMode(v);
333 	}
334 	/**
335 	If `true` the color will apply only after the user releases the mouse button, otherwise it will apply immediately even in mouse motion event (which can cause performance issues).
336 	*/
337 	@property bool deferredMode()
338 	{
339 		return isDeferredMode();
340 	}
341 	/// ditto
342 	@property void deferredMode(bool v)
343 	{
344 		setDeferredMode(v);
345 	}
346 }