r864: Merge 2.1:
[cinelerra_cv/ct.git] / plugins / freezeframe / freezeframe.h
blob86220dbb0c637493f1dc3c963b7702bc0ab64c1c
1 #ifndef FREEZEFRAME_H
2 #define FREEZEFRAME_H
7 #include "filexml.inc"
8 #include "mutex.h"
9 #include "pluginvclient.h"
13 class FreezeFrameWindow;
14 class FreezeFrameMain;
15 class FreezeFrameThread;
17 class FreezeFrameConfig
19 public:
20 FreezeFrameConfig();
21 void copy_from(FreezeFrameConfig &that);
22 int equivalent(FreezeFrameConfig &that);
23 void interpolate(FreezeFrameConfig &prev,
24 FreezeFrameConfig &next,
25 long prev_frame,
26 long next_frame,
27 long current_frame);
28 int enabled;
29 int line_double;
32 class FreezeFrameToggle : public BC_CheckBox
34 public:
35 FreezeFrameToggle(FreezeFrameMain *client,
36 int *value,
37 int x,
38 int y,
39 char *text);
40 ~FreezeFrameToggle();
41 int handle_event();
42 FreezeFrameMain *client;
43 int *value;
46 class FreezeFrameWindow : public BC_Window
48 public:
49 FreezeFrameWindow(FreezeFrameMain *client, int x, int y);
50 ~FreezeFrameWindow();
52 int create_objects();
53 int close_event();
55 FreezeFrameMain *client;
56 FreezeFrameToggle *enabled;
57 // FreezeFrameToggle *line_double;
60 PLUGIN_THREAD_HEADER(FreezeFrameMain, FreezeFrameThread, FreezeFrameWindow)
62 class FreezeFrameMain : public PluginVClient
64 public:
65 FreezeFrameMain(PluginServer *server);
66 ~FreezeFrameMain();
68 PLUGIN_CLASS_MEMBERS(FreezeFrameConfig, FreezeFrameThread)
70 int process_buffer(VFrame *frame,
71 int64_t start_position,
72 double frame_rate);
73 int is_realtime();
74 void update_gui();
75 void save_data(KeyFrame *keyframe);
76 void read_data(KeyFrame *keyframe);
77 int load_defaults();
78 int save_defaults();
79 int is_synthesis();
81 // Frame to replicate
82 VFrame *first_frame;
83 // Position of frame to replicate
84 int64_t first_frame_position;
88 #endif