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 module gsk.ConicGradientNode;
26 
27 private import glib.ConstructionException;
28 private import gobject.ObjectG;
29 private import graphene.Point;
30 private import graphene.Rect;
31 private import gsk.RenderNode;
32 private import gsk.c.functions;
33 public  import gsk.c.types;
34 
35 
36 /**
37  * A render node for a conic gradient.
38  */
39 public class ConicGradientNode : RenderNode
40 {
41 	/** the main Gtk struct */
42 	protected GskConicGradientNode* gskConicGradientNode;
43 
44 	/** Get the main Gtk struct */
45 	public GskConicGradientNode* getConicGradientNodeStruct(bool transferOwnership = false)
46 	{
47 		if (transferOwnership)
48 			ownedRef = false;
49 		return gskConicGradientNode;
50 	}
51 
52 	/** the main Gtk struct as a void* */
53 	protected override void* getStruct()
54 	{
55 		return cast(void*)gskConicGradientNode;
56 	}
57 
58 	/**
59 	 * Sets our main struct and passes it to the parent class.
60 	 */
61 	public this (GskConicGradientNode* gskConicGradientNode, bool ownedRef = false)
62 	{
63 		this.gskConicGradientNode = gskConicGradientNode;
64 		super(cast(GskRenderNode*)gskConicGradientNode, ownedRef);
65 	}
66 
67 
68 	/** */
69 	public static GType getType()
70 	{
71 		return gsk_conic_gradient_node_get_type();
72 	}
73 
74 	/**
75 	 * Creates a `GskRenderNode` that draws a conic gradient.
76 	 *
77 	 * The conic gradient
78 	 * starts around @center in the direction of @rotation. A rotation of 0 means
79 	 * that the gradient points up. Color stops are then added clockwise.
80 	 *
81 	 * Params:
82 	 *     bounds = the bounds of the node
83 	 *     center = the center of the gradient
84 	 *     rotation = the rotation of the gradient in degrees
85 	 *     colorStops = a pointer to an array of
86 	 *         `GskColorStop` defining the gradient. The offsets of all color stops
87 	 *         must be increasing. The first stop's offset must be >= 0 and the last
88 	 *         stop's offset must be <= 1.
89 	 *
90 	 * Returns: A new `GskRenderNode`
91 	 *
92 	 * Throws: ConstructionException GTK+ fails to create the object.
93 	 */
94 	public this(Rect bounds, Point center, float rotation, GskColorStop[] colorStops)
95 	{
96 		auto __p = gsk_conic_gradient_node_new((bounds is null) ? null : bounds.getRectStruct(), (center is null) ? null : center.getPointStruct(), rotation, colorStops.ptr, cast(size_t)colorStops.length);
97 
98 		if(__p is null)
99 		{
100 			throw new ConstructionException("null returned by new");
101 		}
102 
103 		this(cast(GskConicGradientNode*) __p);
104 	}
105 
106 	/**
107 	 * Retrieves the angle for the gradient in radians, normalized in [0, 2 * PI].
108 	 *
109 	 * The angle is starting at the top and going clockwise, as expressed
110 	 * in the css specification:
111 	 *
112 	 * angle = 90 - gsk_conic_gradient_node_get_rotation()
113 	 *
114 	 * Returns: the angle for the gradient
115 	 *
116 	 * Since: 4.2
117 	 */
118 	public float getAngle()
119 	{
120 		return gsk_conic_gradient_node_get_angle(cast(GskRenderNode*)gskConicGradientNode);
121 	}
122 
123 	/**
124 	 * Retrieves the center pointer for the gradient.
125 	 *
126 	 * Returns: the center point for the gradient
127 	 */
128 	public Point getCenter()
129 	{
130 		auto __p = gsk_conic_gradient_node_get_center(cast(GskRenderNode*)gskConicGradientNode);
131 
132 		if(__p is null)
133 		{
134 			return null;
135 		}
136 
137 		return ObjectG.getDObject!(Point)(cast(graphene_point_t*) __p);
138 	}
139 
140 	/**
141 	 * Retrieves the color stops in the gradient.
142 	 *
143 	 * Returns: the color stops in the gradient
144 	 */
145 	public GskColorStop[] getColorStops()
146 	{
147 		size_t nStops;
148 
149 		auto __p = gsk_conic_gradient_node_get_color_stops(cast(GskRenderNode*)gskConicGradientNode, &nStops);
150 
151 		return __p[0 .. nStops];
152 	}
153 
154 	/**
155 	 * Retrieves the number of color stops in the gradient.
156 	 *
157 	 * Returns: the number of color stops
158 	 */
159 	public size_t getNColorStops()
160 	{
161 		return gsk_conic_gradient_node_get_n_color_stops(cast(GskRenderNode*)gskConicGradientNode);
162 	}
163 
164 	/**
165 	 * Retrieves the rotation for the gradient in degrees.
166 	 *
167 	 * Returns: the rotation for the gradient
168 	 */
169 	public float getRotation()
170 	{
171 		return gsk_conic_gradient_node_get_rotation(cast(GskRenderNode*)gskConicGradientNode);
172 	}
173 }