update version, update Features5 docs
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / denoiseseltempavg / seltempavgwindow.h
1
2 /*
3  * CINELERRA
4  * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  */
21
22 #ifndef TIMEAVGWINDOW_H
23 #define TIMEAVGWINDOW_H
24
25
26 class SelTempAvgThread;
27 class SelTempAvgWindow;
28
29 class SelTempAvgParanoid;
30 class SelTempAvgNoSubtract;
31 class SelTempAvgStartKeyframe;
32 class SelTempAvgMask;
33
34 class SelTempAvgOffsetRadial;
35 class SelTempAvgMethodRadial;
36
37 class SelTempAvgSlider;
38
39 class SelTempAvgThreshSlider;
40 class SelTempAvgOffsetValue;
41 class SelTempAvgGainValue;
42
43
44 #include "guicast.h"
45 #include "mutex.h"
46 #include "seltempavg.h"
47
48
49
50
51
52 enum {
53   AVG_RY,
54   AVG_GU,
55   AVG_BV,
56   STD_RY,
57   STD_GU,
58   STD_BV
59 };
60
61 enum {
62   MASK_RY,
63   MASK_GU,
64   MASK_BV
65 };
66
67
68 class SelTempAvgWindow : public PluginClientWindow
69 {
70 public:
71         SelTempAvgWindow(SelTempAvgMain *client);
72         ~SelTempAvgWindow();
73
74         void create_objects();
75
76         SelTempAvgMain *client;
77         SelTempAvgSlider *total_frames;
78
79         SelTempAvgThreshSlider *avg_threshold_RY, *avg_threshold_GU, *avg_threshold_BV;
80         SelTempAvgThreshSlider *std_threshold_RY, *std_threshold_GU, *std_threshold_BV;
81         SelTempAvgMask *mask_RY, *mask_GU, *mask_BV;
82
83         SelTempAvgOffsetRadial *offset_fixed, *offset_restartmarker;
84         SelTempAvgMethodRadial *method_none, *method_seltempavg, *method_stddev, *method_average;
85
86         SelTempAvgParanoid *paranoid;
87         SelTempAvgNoSubtract *no_subtract;
88         SelTempAvgStartKeyframe *offset_restartmarker_keyframe;
89         BC_TextBox                *offset_restartmarker_pos;
90
91         SelTempAvgOffsetValue *offset_fixed_value;
92         SelTempAvgGainValue *gain;
93 };
94
95 class SelTempAvgThreshSlider : public BC_TextBox
96 {
97 public:
98         SelTempAvgThreshSlider(SelTempAvgMain *client, int x, int y, int type, float curval);
99         ~SelTempAvgThreshSlider();
100         int handle_event();
101         int type;
102         SelTempAvgMain *client;
103 };
104
105
106 class SelTempAvgOffsetValue : public BC_TextBox
107 {
108 public:
109         SelTempAvgOffsetValue(SelTempAvgMain *client, int x, int y);
110         ~SelTempAvgOffsetValue();
111         int handle_event();
112         SelTempAvgMain *client;
113 };
114
115
116 class SelTempAvgGainValue : public BC_TextBox
117 {
118 public:
119         SelTempAvgGainValue(SelTempAvgMain *client, int x, int y);
120         ~SelTempAvgGainValue();
121         int handle_event();
122         SelTempAvgMain *client;
123 };
124
125
126 class SelTempAvgSlider : public BC_ISlider
127 {
128 public:
129         SelTempAvgSlider(SelTempAvgMain *client, int x, int y);
130         ~SelTempAvgSlider();
131         int handle_event();
132
133         SelTempAvgMain *client;
134 };
135
136
137 class SelTempAvgOffsetRadial : public BC_Radial
138 {
139 public:
140         SelTempAvgOffsetRadial(SelTempAvgMain *client, SelTempAvgWindow *gui, int x, int y, int type, char *caption);
141         int handle_event();
142         SelTempAvgMain *client;
143         SelTempAvgWindow *gui;
144         int type;
145 };
146
147
148 class SelTempAvgMethodRadial : public BC_Radial
149 {
150 public:
151         SelTempAvgMethodRadial(SelTempAvgMain *client, SelTempAvgWindow *gui, int x, int y, int type, char *caption);
152         int handle_event();
153         SelTempAvgMain *client;
154         SelTempAvgWindow *gui;
155         int type;
156 };
157
158 class SelTempAvgParanoid : public BC_CheckBox
159 {
160 public:
161         SelTempAvgParanoid(SelTempAvgMain *client, int x, int y);
162         int handle_event();
163         SelTempAvgMain *client;
164 };
165
166 class SelTempAvgNoSubtract : public BC_CheckBox
167 {
168 public:
169         SelTempAvgNoSubtract(SelTempAvgMain *client, int x, int y);
170         int handle_event();
171         SelTempAvgMain *client;
172 };
173
174 class SelTempAvgMask : public BC_CheckBox
175 {
176 public:
177         SelTempAvgMask(SelTempAvgMain *client, int x, int y,int type, int val);
178         int handle_event();
179         SelTempAvgMain *client;
180         int type;
181 };
182
183
184 class SelTempAvgStartKeyframe : public BC_CheckBox
185 {
186 public:
187         SelTempAvgStartKeyframe(SelTempAvgMain *client, int x, int y);
188         int handle_event();
189         SelTempAvgMain *client;
190 };
191
192
193 #endif