rework keyframe hide popup, keyframe auto render, textbox set_selection wide text
[goodguy/history.git] / cinelerra-5.1 / db / s.h
1 #ifndef _S_H_
2 #define _S_H_
3 #include <cstdio>
4 #include <stdlib.h>
5 #include <unistd.h>
6 #include <fcntl.h>
7 #include <errno.h>
8
9 #include "tdb.h"
10
11
12 // Video_frame
13 DbObj(Video_frame)
14   basic_def(double,Frame_mean);
15   basic_def(double,Frame_std_dev);
16   basic_def(double,Frame_cx);
17   basic_def(double,Frame_cy);
18   basic_def(double,Frame_moment);
19   varray_def(unsigned char,Frame_data);
20 };
21
22 DbLoc(Video_frame)
23   basic_ref(double,Frame_mean);
24   basic_ref(double,Frame_std_dev);
25   basic_ref(double,Frame_cx);
26   basic_ref(double,Frame_cy);
27   basic_ref(double,Frame_moment);
28   varray_ref(unsigned char,Frame_data);
29
30   class ikey_Frame_weight : public Db::iKey { public:
31     Video_frameObj::t_Frame_mean v_Frame_mean;
32     int v_id;
33     static int cmpr(char *a, char *b);
34     ikey_Frame_weight(ObjectLoc &loc,
35         double Frame_mean, int id=-1)
36     : iKey("Frame_weight",loc,cmpr),
37       v_Frame_mean(Frame_mean),
38       v_id(id) {}
39   };
40   class rkey_Frame_weight : public Db::rKey { public:
41     static int cmpr(char *a, char *b);
42     rkey_Frame_weight(ObjectLoc &loc) : rKey("Frame_weight",loc,cmpr) {}
43   };
44
45   class ikey_Frame_center : public Db::iKey { public:
46     Video_frameObj::t_Frame_moment v_Frame_moment;
47     int v_id;
48     static int cmpr(char *a, char *b);
49     ikey_Frame_center(ObjectLoc &loc,
50         double Frame_moment, int id=-1)
51     : iKey("Frame_center",loc,cmpr),
52       v_Frame_moment(Frame_moment),
53       v_id(id) {}
54   };
55   class rkey_Frame_center : public Db::rKey { public:
56     static int cmpr(char *a, char *b);
57     rkey_Frame_center(ObjectLoc &loc) : rKey("Frame_center",loc,cmpr) {}
58   };
59
60   int Allocate();
61   int Construct();
62   int Destruct();
63   void Deallocate();
64 };
65 // Timeline
66 DbObj(Timeline)
67   basic_def(unsigned int,Clip_id);
68   basic_def(unsigned int,Sequence_no);
69   basic_def(unsigned int,Frame_id);
70   basic_def(unsigned int,Group);
71   basic_def(double,Time_offset);
72 };
73
74 DbLoc(Timeline)
75   basic_ref(unsigned int,Clip_id);
76   basic_ref(unsigned int,Sequence_no);
77   basic_ref(unsigned int,Frame_id);
78   basic_ref(unsigned int,Group);
79   basic_ref(double,Time_offset);
80
81   class ikey_Timelines : public Db::iKey { public:
82     TimelineObj::t_Frame_id v_Frame_id;
83     int v_id;
84     static int cmpr(char *a, char *b);
85     ikey_Timelines(ObjectLoc &loc,
86         unsigned int Frame_id, int id=-1)
87     : iKey("Timelines",loc,cmpr),
88       v_Frame_id(Frame_id),
89       v_id(id) {}
90   };
91   class rkey_Timelines : public Db::rKey { public:
92     static int cmpr(char *a, char *b);
93     rkey_Timelines(ObjectLoc &loc) : rKey("Timelines",loc,cmpr) {}
94   };
95
96   class ikey_Sequences : public Db::iKey { public:
97     TimelineObj::t_Clip_id v_Clip_id;
98     TimelineObj::t_Sequence_no v_Sequence_no;
99     static int cmpr(char *a, char *b);
100     ikey_Sequences(ObjectLoc &loc,
101         unsigned int Clip_id,
102         unsigned int Sequence_no)
103     : iKey("Sequences",loc,cmpr),
104       v_Clip_id(Clip_id),
105       v_Sequence_no(Sequence_no) {}
106   };
107   class rkey_Sequences : public Db::rKey { public:
108     static int cmpr(char *a, char *b);
109     rkey_Sequences(ObjectLoc &loc) : rKey("Sequences",loc,cmpr) {}
110   };
111
112   int Allocate();
113   int Construct();
114   int Destruct();
115   void Deallocate();
116 };
117 // Clip_set
118 DbObj(Clip_set)
119   sarray_def(char,Title);
120   sarray_def(char,Asset_path);
121   basic_def(double,Position);
122   basic_def(double,Framerate);
123   basic_def(double,Average_weight);
124   basic_def(unsigned int,Frames);
125   basic_def(unsigned int,Prefix_size);
126   basic_def(unsigned int,Suffix_size);
127   varray_def(unsigned char,Weights);
128   basic_def(long,System_time);
129   basic_def(long,Creation_time);
130 };
131
132 DbLoc(Clip_set)
133   sarray_ref(char,Title);
134   sarray_ref(char,Asset_path);
135   basic_ref(double,Position);
136   basic_ref(double,Framerate);
137   basic_ref(double,Average_weight);
138   basic_ref(unsigned int,Frames);
139   basic_ref(unsigned int,Prefix_size);
140   basic_ref(unsigned int,Suffix_size);
141   varray_ref(unsigned char,Weights);
142   basic_ref(long,System_time);
143   basic_ref(long,Creation_time);
144
145   class ikey_Clip_title : public Db::iKey { public:
146     Clip_setObj::t_Title v_Title;
147     int v_id;
148     static int cmpr(char *a, char *b);
149     ikey_Clip_title(ObjectLoc &loc,
150         const Clip_setObj::t_Title &Title, int id=-1)
151     : iKey("Clip_title",loc,cmpr),
152       v_Title(Title),
153       v_id(id) {}
154   };
155   class rkey_Clip_title : public Db::rKey { public:
156     static int cmpr(char *a, char *b);
157     rkey_Clip_title(ObjectLoc &loc) : rKey("Clip_title",loc,cmpr) {}
158   };
159
160   class ikey_Clip_system_time : public Db::iKey { public:
161     Clip_setObj::t_System_time v_System_time;
162     int v_id;
163     static int cmpr(char *a, char *b);
164     ikey_Clip_system_time(ObjectLoc &loc,
165         long System_time, int id=-1)
166     : iKey("Clip_system_time",loc,cmpr),
167       v_System_time(System_time),
168       v_id(id) {}
169   };
170   class rkey_Clip_system_time : public Db::rKey { public:
171     static int cmpr(char *a, char *b);
172     rkey_Clip_system_time(ObjectLoc &loc) : rKey("Clip_system_time",loc,cmpr) {}
173   };
174
175   class ikey_Clip_creation_time : public Db::iKey { public:
176     Clip_setObj::t_Creation_time v_Creation_time;
177     int v_id;
178     static int cmpr(char *a, char *b);
179     ikey_Clip_creation_time(ObjectLoc &loc,
180         long Creation_time, int id=-1)
181     : iKey("Clip_creation_time",loc,cmpr),
182       v_Creation_time(Creation_time),
183       v_id(id) {}
184   };
185   class rkey_Clip_creation_time : public Db::rKey { public:
186     static int cmpr(char *a, char *b);
187     rkey_Clip_creation_time(ObjectLoc &loc) : rKey("Clip_creation_time",loc,cmpr) {}
188   };
189
190   class ikey_Clip_path_pos : public Db::iKey { public:
191     Clip_setObj::t_Asset_path v_Asset_path;
192     Clip_setObj::t_Position v_Position;
193     int v_id;
194     static int cmpr(char *a, char *b);
195     ikey_Clip_path_pos(ObjectLoc &loc,
196         const Clip_setObj::t_Asset_path &Asset_path,
197         double Position, int id=-1)
198     : iKey("Clip_path_pos",loc,cmpr),
199       v_Asset_path(Asset_path),
200       v_Position(Position),
201       v_id(id) {}
202   };
203   class rkey_Clip_path_pos : public Db::rKey { public:
204     static int cmpr(char *a, char *b);
205     rkey_Clip_path_pos(ObjectLoc &loc) : rKey("Clip_path_pos",loc,cmpr) {}
206   };
207
208   int Allocate();
209   int Construct();
210   int Destruct();
211   void Deallocate();
212 };
213 // Clip_views
214 DbObj(Clip_views)
215   basic_def(unsigned int,Access_clip_id);
216   basic_def(long,Access_time);
217   basic_def(unsigned int,Access_count);
218 };
219
220 DbLoc(Clip_views)
221   basic_ref(unsigned int,Access_clip_id);
222   basic_ref(long,Access_time);
223   basic_ref(unsigned int,Access_count);
224
225   class ikey_Clip_access : public Db::iKey { public:
226     Clip_viewsObj::t_Access_clip_id v_Access_clip_id;
227     static int cmpr(char *a, char *b);
228     ikey_Clip_access(ObjectLoc &loc,
229         unsigned int Access_clip_id)
230     : iKey("Clip_access",loc,cmpr),
231       v_Access_clip_id(Access_clip_id) {}
232   };
233   class rkey_Clip_access : public Db::rKey { public:
234     static int cmpr(char *a, char *b);
235     rkey_Clip_access(ObjectLoc &loc) : rKey("Clip_access",loc,cmpr) {}
236   };
237
238   class ikey_Last_view : public Db::iKey { public:
239     Clip_viewsObj::t_Access_time v_Access_time;
240     int v_id;
241     static int cmpr(char *a, char *b);
242     ikey_Last_view(ObjectLoc &loc,
243         long Access_time, int id=-1)
244     : iKey("Last_view",loc,cmpr),
245       v_Access_time(Access_time),
246       v_id(id) {}
247   };
248   class rkey_Last_view : public Db::rKey { public:
249     static int cmpr(char *a, char *b);
250     rkey_Last_view(ObjectLoc &loc) : rKey("Last_view",loc,cmpr) {}
251   };
252
253   class ikey_Total_views : public Db::iKey { public:
254     Clip_viewsObj::t_Access_count v_Access_count;
255     Clip_viewsObj::t_Access_clip_id v_Access_clip_id;
256     int v_id;
257     static int cmpr(char *a, char *b);
258     ikey_Total_views(ObjectLoc &loc,
259         unsigned int Access_count,
260         unsigned int Access_clip_id, int id=-1)
261     : iKey("Total_views",loc,cmpr),
262       v_Access_count(Access_count),
263       v_Access_clip_id(Access_clip_id),
264       v_id(id) {}
265   };
266   class rkey_Total_views : public Db::rKey { public:
267     static int cmpr(char *a, char *b);
268     rkey_Total_views(ObjectLoc &loc) : rKey("Total_views",loc,cmpr) {}
269   };
270
271   int Allocate();
272   int Construct();
273   int Destruct();
274   void Deallocate();
275 };
276
277
278 class theDb : public Db {
279   int dfd, dkey, no_atime;
280   int db_create();
281   int db_open();
282   int db_access();
283 public:
284   Objects objects;
285   Entity Video_frame;  Video_frameLoc video_frame;
286   Entity Timeline;  TimelineLoc timeline;
287   Entity Clip_set;  Clip_setLoc clip_set;
288   Entity Clip_views;  Clip_viewsLoc clip_views;
289
290   int create(const char *dfn);
291   int open(const char *dfn, int key=-1);
292   int access(const char *dfn, int key=-1, int rw=0);
293   void close();
294   int attach(int rw=0) { return Db::attach(rw); }
295   int detach() { return Db::detach(); }
296
297   theDb();
298   ~theDb() { finit(objects); }
299 };
300
301 #endif