2
by Reinhard Tartler
upgrade to pre8 |
1 |
/// \file
|
2 |
/// \ingroup Playtree
|
|
3 |
||
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
4 |
#ifndef __PLAYTREE_H
|
5 |
#define __PLAYTREE_H
|
|
6 |
||
7 |
struct stream_st; |
|
8 |
struct m_config; |
|
9 |
||
10 |
/// \defgroup PlaytreeIterReturn Playtree iterator return code
|
|
2
by Reinhard Tartler
upgrade to pre8 |
11 |
/// \ingroup PlaytreeIter
|
12 |
///@{
|
|
13 |
#define PLAY_TREE_ITER_ERROR 0
|
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
14 |
#define PLAY_TREE_ITER_ENTRY 1
|
15 |
#define PLAY_TREE_ITER_NODE 2
|
|
16 |
#define PLAY_TREE_ITER_END 3
|
|
17 |
///@}
|
|
2
by Reinhard Tartler
upgrade to pre8 |
18 |
|
19 |
/// \defgroup PlaytreeEntryTypes Playtree entry types
|
|
20 |
/// \ingroup Playtree
|
|
21 |
///@{
|
|
22 |
#define PLAY_TREE_ENTRY_NODE -1
|
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
23 |
#define PLAY_TREE_ENTRY_DVD 0
|
24 |
#define PLAY_TREE_ENTRY_VCD 1
|
|
25 |
#define PLAY_TREE_ENTRY_TV 2
|
|
26 |
#define PLAY_TREE_ENTRY_FILE 3
|
|
27 |
///@}
|
|
2
by Reinhard Tartler
upgrade to pre8 |
28 |
|
29 |
||
30 |
/// \defgroup PlaytreeEntryFlags Playtree flags
|
|
31 |
/// \ingroup Playtree
|
|
32 |
///@{
|
|
33 |
/// Play the item childs in random order.
|
|
34 |
#define PLAY_TREE_RND (1<<0)
|
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
35 |
/// Playtree flags used by the iterator to mark items already "randomly" played.
|
2
by Reinhard Tartler
upgrade to pre8 |
36 |
#define PLAY_TREE_RND_PLAYED (1<<8)
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
37 |
///@}
|
2
by Reinhard Tartler
upgrade to pre8 |
38 |
|
39 |
/// \defgroup PlaytreeIterMode Playtree iterator mode
|
|
40 |
/// \ingroup PlaytreeIter
|
|
41 |
///@{
|
|
42 |
#define PLAY_TREE_ITER_NORMAL 0
|
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
43 |
#define PLAY_TREE_ITER_RND 1
|
44 |
///@}
|
|
2
by Reinhard Tartler
upgrade to pre8 |
45 |
|
46 |
/// \defgroup Playtree
|
|
47 |
///@{
|
|
48 |
||
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
49 |
typedef struct play_tree play_tree_t; |
50 |
/// \ingroup PlaytreeIter
|
|
2
by Reinhard Tartler
upgrade to pre8 |
51 |
typedef struct play_tree_iter play_tree_iter_t; |
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
52 |
typedef struct play_tree_param play_tree_param_t; |
53 |
||
54 |
||
55 |
#if 0
|
|
56 |
typedef struct play_tree_info play_tree_info_t;
|
|
57 |
// TODO : a attrib,val pair system and not something hardcoded
|
|
58 |
struct play_tree_info {
|
|
59 |
char* title;
|
|
60 |
char* author;
|
|
61 |
char* copyright;
|
|
62 |
char* abstract;
|
|
63 |
// Some more ??
|
|
64 |
}
|
|
65 |
#endif
|
|
66 |
||
67 |
struct play_tree_param { |
|
68 |
char* name; |
|
69 |
char* value; |
|
70 |
};
|
|
71 |
||
72 |
||
73 |
/// Playtree item
|
|
2
by Reinhard Tartler
upgrade to pre8 |
74 |
struct play_tree { |
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
75 |
play_tree_t* parent; |
76 |
play_tree_t* child; |
|
77 |
play_tree_t* next; |
|
78 |
play_tree_t* prev; |
|
79 |
||
80 |
//play_tree_info_t info;
|
|
81 |
play_tree_param_t* params; |
|
82 |
int loop; |
|
83 |
char** files; |
|
84 |
int entry_type; |
|
85 |
int flags; |
|
86 |
};
|
|
87 |
||
2
by Reinhard Tartler
upgrade to pre8 |
88 |
|
89 |
/// \defgroup PlaytreeIter Playtree iterator
|
|
90 |
/// \ingroup Playtree
|
|
91 |
///@{
|
|
92 |
||
93 |
/// Playtree iterator
|
|
94 |
struct play_tree_iter { |
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
95 |
/// Root of the iterated tree.
|
2
by Reinhard Tartler
upgrade to pre8 |
96 |
play_tree_t* root; |
97 |
/// Current position in the tree.
|
|
98 |
play_tree_t* tree; |
|
99 |
/// \ref Config used.
|
|
100 |
struct m_config* config; |
|
101 |
/// Looping status
|
|
102 |
int loop; |
|
103 |
/// Selected file in the current item.
|
|
104 |
int file; |
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
105 |
/// Number of files in the current item.
|
2
by Reinhard Tartler
upgrade to pre8 |
106 |
int num_files; |
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
107 |
int entry_pushed; |
108 |
int mode; |
|
109 |
||
110 |
/// loop/valid stack to save/revert status when we go up/down.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
111 |
int* status_stack; |
112 |
/// status stack size
|
|
113 |
int stack_size; |
|
114 |
};
|
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
115 |
///@}
|
2
by Reinhard Tartler
upgrade to pre8 |
116 |
|
117 |
/// Create a new empty playtree item.
|
|
118 |
play_tree_t* |
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
119 |
play_tree_new(void); |
120 |
||
121 |
/// Free a playtree item.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
122 |
/** \param pt Item to free.
|
123 |
* \param childs If non-zero the item's childs are recursively freed.
|
|
124 |
*/
|
|
125 |
void
|
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
126 |
play_tree_free(play_tree_t* pt, int childs); |
127 |
||
128 |
||
129 |
/// Free an item and its siblings.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
130 |
/** \param pt Item to free.
|
131 |
* \param childs If non-zero the items' childs are recursively freed.
|
|
132 |
*/
|
|
133 |
void
|
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
134 |
play_tree_free_list(play_tree_t* pt, int childs); |
135 |
||
136 |
||
137 |
/// Set the childs of a playtree item.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
138 |
void
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
139 |
play_tree_set_child(play_tree_t* pt, play_tree_t* child); |
140 |
||
2
by Reinhard Tartler
upgrade to pre8 |
141 |
/// Set the parent of a playtree item.
|
142 |
void
|
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
143 |
play_tree_set_parent(play_tree_t* pt, play_tree_t* parent); |
144 |
||
145 |
||
146 |
/// Append an item after its siblings.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
147 |
void
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
148 |
play_tree_append_entry(play_tree_t* pt, play_tree_t* entry); |
149 |
||
150 |
/// Prepend an item before its siblings.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
151 |
void
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
152 |
play_tree_prepend_entry(play_tree_t* pt, play_tree_t* entry); |
153 |
||
154 |
/// Insert an item right after a siblings.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
155 |
void
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
156 |
play_tree_insert_entry(play_tree_t* pt, play_tree_t* entry); |
157 |
||
158 |
/// Detach an item from the tree.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
159 |
void
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
160 |
play_tree_remove(play_tree_t* pt, int free_it,int with_childs); |
161 |
||
162 |
/// Add a file to an item.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
163 |
void
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
164 |
play_tree_add_file(play_tree_t* pt,char* file); |
165 |
||
166 |
/// Remove a file from an item.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
167 |
int
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
168 |
play_tree_remove_file(play_tree_t* pt,char* file); |
169 |
||
170 |
||
171 |
/// Add a config paramter to an item.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
172 |
void
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
173 |
play_tree_set_param(play_tree_t* pt, char* name, char* val); |
174 |
||
175 |
/// Remove a config parameter from an item.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
176 |
int
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
177 |
play_tree_unset_param(play_tree_t* pt, char* name); |
178 |
||
179 |
/// Copy the config parameters from one item to another.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
180 |
void
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
181 |
play_tree_set_params_from(play_tree_t* dest,play_tree_t* src); |
182 |
||
183 |
/// \addtogroup PlaytreeIter
|
|
2
by Reinhard Tartler
upgrade to pre8 |
184 |
///@{
|
185 |
||
186 |
/// Create a new iterator.
|
|
187 |
play_tree_iter_t* |
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
188 |
play_tree_iter_new(play_tree_t* pt, struct m_config* config); |
189 |
||
190 |
/// Duplicate an iterator.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
191 |
play_tree_iter_t* |
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
192 |
play_tree_iter_new_copy(play_tree_iter_t* old); |
193 |
||
194 |
/// Free an iterator.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
195 |
void
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
196 |
play_tree_iter_free(play_tree_iter_t* iter); |
197 |
||
198 |
/// Step an iterator.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
199 |
/** \param iter The iterator.
|
200 |
* \param d The direction: d > 0 == next , d < 0 == prev
|
|
201 |
* \param with_node TRUE == stop on nodes with childs, FALSE == go directly to the next child
|
|
202 |
* \return See \ref PlaytreeIterReturn.
|
|
203 |
*/
|
|
204 |
int
|
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
205 |
play_tree_iter_step(play_tree_iter_t* iter, int d,int with_nodes); |
206 |
||
207 |
/// Step up, usefull to break a loop, etc.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
208 |
/** \param iter The iterator.
|
209 |
* \param d The direction: d > 0 == next , d < 0 == prev
|
|
210 |
* \param with_node TRUE == stop on nodes with childs, FALSE == go directly to the next child
|
|
211 |
* \return See \ref PlaytreeIterReturn.
|
|
212 |
*/
|
|
213 |
int
|
|
214 |
play_tree_iter_up_step(play_tree_iter_t* iter, int d,int with_nodes); |
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
215 |
|
216 |
/// Enter a node child list, only usefull when stopping on nodes.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
217 |
int
|
218 |
play_tree_iter_down_step(play_tree_iter_t* iter, int d,int with_nodes); |
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
219 |
|
220 |
/// Get a file from the current item.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
221 |
char* |
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
222 |
play_tree_iter_get_file(play_tree_iter_t* iter, int d); |
223 |
||
224 |
///@}
|
|
2
by Reinhard Tartler
upgrade to pre8 |
225 |
// PlaytreeIter group
|
226 |
||
227 |
/// Create a playtree from a playlist file.
|
|
228 |
/** \ingroup PlaytreeParser
|
|
229 |
*/
|
|
230 |
play_tree_t* |
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
231 |
parse_playtree(struct stream_st *stream, int forced); |
232 |
||
233 |
/// Clean a tree by destroying all empty elements.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
234 |
play_tree_t* |
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
235 |
play_tree_cleanup(play_tree_t* pt); |
236 |
||
237 |
/// Create a playtree from a playlist file.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
238 |
/** \ingroup PlaytreeParser
|
239 |
*/
|
|
240 |
play_tree_t* |
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
241 |
parse_playlist_file(char* file); |
242 |
||
243 |
/// \defgroup PtAPI Playtree highlevel API
|
|
2
by Reinhard Tartler
upgrade to pre8 |
244 |
/// \ingroup Playtree
|
245 |
/// Highlevel API with pt-suffix to different from low-level API
|
|
246 |
/// by Fabian Franz (mplayer@fabian-franz.de).
|
|
247 |
///@{
|
|
248 |
||
249 |
// Cleans up pt and creates a new iter.
|
|
250 |
play_tree_iter_t* pt_iter_create(play_tree_t** pt, struct m_config* config); |
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
251 |
|
252 |
/// Frees the iter.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
253 |
void pt_iter_destroy(play_tree_iter_t** iter); |
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
254 |
|
255 |
/// Gets the next available file in the direction (d=-1 || d=+1).
|
|
2
by Reinhard Tartler
upgrade to pre8 |
256 |
char* pt_iter_get_file(play_tree_iter_t* iter, int d); |
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
257 |
|
258 |
// Two Macros that implement forward and backward direction.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
259 |
#define pt_iter_get_next_file(iter) pt_iter_get_file(iter, 1)
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
260 |
#define pt_iter_get_prev_file(iter) pt_iter_get_file(iter, -1)
|
261 |
||
262 |
/// Inserts entry into the playtree.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
263 |
void pt_iter_insert_entry(play_tree_iter_t* iter, play_tree_t* entry); |
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
264 |
|
265 |
/// Replaces current entry in playtree with entry by doing insert and remove.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
266 |
void pt_iter_replace_entry(play_tree_iter_t* iter, play_tree_t* entry); |
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
267 |
|
268 |
/// Adds a new file to the playtree, if it is not valid it is created.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
269 |
void pt_add_file(play_tree_t** ppt, char* filename); |
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
270 |
|
271 |
/// \brief Performs a convert to playtree-syntax, by concat path/file
|
|
2
by Reinhard Tartler
upgrade to pre8 |
272 |
/// and performs pt_add_file
|
273 |
void pt_add_gui_file(play_tree_t** ppt, char* path, char* file); |
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
274 |
|
275 |
// Two macros to use only the iter and not the other things.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
276 |
#define pt_iter_add_file(iter, filename) pt_add_file(&iter->tree, filename)
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
277 |
#define pt_iter_add_gui_file(iter, path, name) pt_add_gui_file(&iter->tree, path, name)
|
278 |
||
279 |
/// Resets the iter and goes back to head.
|
|
2
by Reinhard Tartler
upgrade to pre8 |
280 |
void pt_iter_goto_head(play_tree_iter_t* iter); |
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
281 |
|
282 |
///@}
|
|
2
by Reinhard Tartler
upgrade to pre8 |
283 |
|
284 |
#endif
|
|
1
by Reinhard Tartler
imported mplayer_0.99+1.0pre7try2+cvs20060117 |
285 |
|
2
by Reinhard Tartler
upgrade to pre8 |
286 |
///@}
|
287 |