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 gstreamer.TocEntry;
26 
27 private import glib.ConstructionException;
28 private import glib.ListG;
29 private import glib.Str;
30 private import gobject.ObjectG;
31 private import gstreamer.TagList;
32 private import gstreamer.Toc;
33 private import gstreamerc.gstreamer;
34 public  import gstreamerc.gstreamertypes;
35 
36 
37 /** */
38 public class TocEntry
39 {
40 	/** the main Gtk struct */
41 	protected GstTocEntry* gstTocEntry;
42 	protected bool ownedRef;
43 
44 	/** Get the main Gtk struct */
45 	public GstTocEntry* getTocEntryStruct()
46 	{
47 		return gstTocEntry;
48 	}
49 
50 	/** the main Gtk struct as a void* */
51 	protected void* getStruct()
52 	{
53 		return cast(void*)gstTocEntry;
54 	}
55 
56 	/**
57 	 * Sets our main struct and passes it to the parent class.
58 	 */
59 	public this (GstTocEntry* gstTocEntry, bool ownedRef = false)
60 	{
61 		this.gstTocEntry = gstTocEntry;
62 		this.ownedRef = ownedRef;
63 	}
64 
65 
66 	/** */
67 	public static GType getType()
68 	{
69 		return gst_toc_entry_get_type();
70 	}
71 
72 	/**
73 	 * Create new #GstTocEntry structure.
74 	 *
75 	 * Params:
76 	 *     type = entry type.
77 	 *     uid = unique ID (UID) in the whole TOC.
78 	 *
79 	 * Returns: newly allocated #GstTocEntry structure, free it with gst_toc_entry_unref().
80 	 *
81 	 * Throws: ConstructionException GTK+ fails to create the object.
82 	 */
83 	public this(GstTocEntryType type, string uid)
84 	{
85 		auto p = gst_toc_entry_new(type, Str.toStringz(uid));
86 		
87 		if(p is null)
88 		{
89 			throw new ConstructionException("null returned by new");
90 		}
91 		
92 		this(cast(GstTocEntry*) p);
93 	}
94 
95 	/**
96 	 * Appends the #GstTocEntry @subentry to @entry.
97 	 *
98 	 * Params:
99 	 *     subentry = A #GstTocEntry
100 	 */
101 	public void appendSubEntry(TocEntry subentry)
102 	{
103 		gst_toc_entry_append_sub_entry(gstTocEntry, (subentry is null) ? null : subentry.getTocEntryStruct());
104 	}
105 
106 	/**
107 	 * Returns: @entry's entry type
108 	 */
109 	public GstTocEntryType getEntryType()
110 	{
111 		return gst_toc_entry_get_entry_type(gstTocEntry);
112 	}
113 
114 	/**
115 	 * Get @loop_type and @repeat_count values from the @entry and write them into
116 	 * appropriate storages. Loops are e.g. used by sampled instruments. GStreamer
117 	 * is not automatically applying the loop. The application can process this
118 	 * meta data and use it e.g. to send a seek-event to loop a section.
119 	 *
120 	 * Params:
121 	 *     loopType = the storage for the loop_type
122 	 *         value, leave %NULL if not need.
123 	 *     repeatCount = the storage for the repeat_count
124 	 *         value, leave %NULL if not need.
125 	 *
126 	 * Returns: %TRUE if all non-%NULL storage pointers were filled with appropriate
127 	 *     values, %FALSE otherwise.
128 	 *
129 	 * Since: 1.4
130 	 */
131 	public bool getLoop(out GstTocLoopType loopType, out int repeatCount)
132 	{
133 		return gst_toc_entry_get_loop(gstTocEntry, &loopType, &repeatCount) != 0;
134 	}
135 
136 	/**
137 	 * Gets the parent #GstTocEntry of @entry.
138 	 *
139 	 * Returns: The parent #GstTocEntry of @entry
140 	 */
141 	public TocEntry getParent()
142 	{
143 		auto p = gst_toc_entry_get_parent(gstTocEntry);
144 		
145 		if(p is null)
146 		{
147 			return null;
148 		}
149 		
150 		return ObjectG.getDObject!(TocEntry)(cast(GstTocEntry*) p);
151 	}
152 
153 	/**
154 	 * Get @start and @stop values from the @entry and write them into appropriate
155 	 * storages.
156 	 *
157 	 * Params:
158 	 *     start = the storage for the start value, leave
159 	 *         %NULL if not need.
160 	 *     stop = the storage for the stop value, leave
161 	 *         %NULL if not need.
162 	 *
163 	 * Returns: %TRUE if all non-%NULL storage pointers were filled with appropriate
164 	 *     values, %FALSE otherwise.
165 	 */
166 	public bool getStartStopTimes(out long start, out long stop)
167 	{
168 		return gst_toc_entry_get_start_stop_times(gstTocEntry, &start, &stop) != 0;
169 	}
170 
171 	/**
172 	 * Gets the sub-entries of @entry.
173 	 *
174 	 * Returns: A #GList of #GstTocEntry of @entry
175 	 */
176 	public ListG getSubEntries()
177 	{
178 		auto p = gst_toc_entry_get_sub_entries(gstTocEntry);
179 		
180 		if(p is null)
181 		{
182 			return null;
183 		}
184 		
185 		return new ListG(cast(GList*) p);
186 	}
187 
188 	/**
189 	 * Gets the tags for @entry.
190 	 *
191 	 * Returns: A #GstTagList for @entry
192 	 */
193 	public TagList getTags()
194 	{
195 		auto p = gst_toc_entry_get_tags(gstTocEntry);
196 		
197 		if(p is null)
198 		{
199 			return null;
200 		}
201 		
202 		return ObjectG.getDObject!(TagList)(cast(GstTagList*) p);
203 	}
204 
205 	/**
206 	 * Gets the parent #GstToc of @entry.
207 	 *
208 	 * Returns: The parent #GstToc of @entry
209 	 */
210 	public Toc getToc()
211 	{
212 		auto p = gst_toc_entry_get_toc(gstTocEntry);
213 		
214 		if(p is null)
215 		{
216 			return null;
217 		}
218 		
219 		return ObjectG.getDObject!(Toc)(cast(GstToc*) p);
220 	}
221 
222 	/**
223 	 * Gets the UID of @entry.
224 	 *
225 	 * Returns: The UID of @entry
226 	 */
227 	public string getUid()
228 	{
229 		return Str.toString(gst_toc_entry_get_uid(gstTocEntry));
230 	}
231 
232 	/**
233 	 * Returns: %TRUE if @entry's type is an alternative type, otherwise %FALSE
234 	 */
235 	public bool isAlternative()
236 	{
237 		return gst_toc_entry_is_alternative(gstTocEntry) != 0;
238 	}
239 
240 	/**
241 	 * Returns: %TRUE if @entry's type is a sequence type, otherwise %FALSE
242 	 */
243 	public bool isSequence()
244 	{
245 		return gst_toc_entry_is_sequence(gstTocEntry) != 0;
246 	}
247 
248 	/**
249 	 * Merge @tags into the existing tags of @entry using @mode.
250 	 *
251 	 * Params:
252 	 *     tags = A #GstTagList or %NULL
253 	 *     mode = A #GstTagMergeMode
254 	 */
255 	public void mergeTags(TagList tags, GstTagMergeMode mode)
256 	{
257 		gst_toc_entry_merge_tags(gstTocEntry, (tags is null) ? null : tags.getTagListStruct(), mode);
258 	}
259 
260 	/**
261 	 * Set @loop_type and @repeat_count values for the @entry.
262 	 *
263 	 * Params:
264 	 *     loopType = loop_type value to set.
265 	 *     repeatCount = repeat_count value to set.
266 	 *
267 	 * Since: 1.4
268 	 */
269 	public void setLoop(GstTocLoopType loopType, int repeatCount)
270 	{
271 		gst_toc_entry_set_loop(gstTocEntry, loopType, repeatCount);
272 	}
273 
274 	/**
275 	 * Set @start and @stop values for the @entry.
276 	 *
277 	 * Params:
278 	 *     start = start value to set.
279 	 *     stop = stop value to set.
280 	 */
281 	public void setStartStopTimes(long start, long stop)
282 	{
283 		gst_toc_entry_set_start_stop_times(gstTocEntry, start, stop);
284 	}
285 
286 	/**
287 	 * Set a #GstTagList with tags for the complete @entry.
288 	 *
289 	 * Params:
290 	 *     tags = A #GstTagList or %NULL
291 	 */
292 	public void setTags(TagList tags)
293 	{
294 		gst_toc_entry_set_tags(gstTocEntry, (tags is null) ? null : tags.getTagListStruct());
295 	}
296 }