1
/***************************************************************************
2
DIA_contrast.cpp - description
4
begin : Mon Sep 23 2002
5
copyright : (C) 2002 by mean
6
email : fixounet@free.fr
7
***************************************************************************/
9
/***************************************************************************
11
* This program is free software; you can redistribute it and/or modify *
12
* it under the terms of the GNU General Public License as published by *
13
* the Free Software Foundation; either version 2 of the License, or *
14
* (at your option) any later version. *
16
***************************************************************************/
36
#include "ADM_editor/ADM_edit.hxx"
37
#include "ADM_video/ADM_genvideo.hxx"
38
#include "ADM_videoFilter/ADM_vidContrast.h"
39
#include "ADM_toolkit/toolkit.hxx"
40
#include "ADM_colorspace/ADM_rgb.h"
41
#include "ADM_toolkit_gtk/ADM_gladeSupport.h"
42
#include "ADM_toolkit_gtk/toolkit_gtk.h"
43
#include "ADM_toolkit_gtk/toolkit_gtk_include.h"
44
#include <ADM_assert.h>
45
#include "DIA_flyDialog.h"
46
#include "DIA_flyContrast.h"
48
/********************************************************************/
49
static GtkWidget *create_dialog1 (void);
50
static GtkWidget *dialog = NULL;
52
static gboolean gui_draw (GtkWidget * widget,
53
GdkEventExpose * event, gpointer user_data);
54
static void gui_update (GtkButton * button, gpointer user_data);
55
static void frame_changed( void );
58
static flyContrast *myCrop=NULL;
60
/********************************************************************/
61
uint8_t DIA_contrast(AVDMGenericVideoStream *in,CONTRAST_PARAM *param)
64
uint32_t width,height;
66
// Allocate space for green-ised video
67
width=in->getInfo()->width;
68
height=in->getInfo()->height;
70
dialog=create_dialog1();
71
gtk_register_dialog(dialog);
72
gtk_window_set_title (GTK_WINDOW (dialog), QT_TR_NOOP("Contrast"));
73
gtk_widget_show(dialog);
76
#define CNX(x,y) gtk_signal_connect(GTK_OBJECT(WID(x)), y, GTK_SIGNAL_FUNC(gui_update), (void *) (1));
78
CNX (checkLuma, "toggled");
79
CNX (checkbuttonU, "toggled");
80
CNX (checkbuttonV, "toggled");
83
CNX (hscaleContrast, "value_changed");
84
CNX (hscaleContrast, "drag_data_received");
86
CNX (hscaleBright, "value_changed");
87
CNX (hscaleBright, "drag_data_received");
88
gtk_signal_connect(GTK_OBJECT(WID(hscale1)), "value_changed",GTK_SIGNAL_FUNC(frame_changed), NULL);
89
gtk_signal_connect(GTK_OBJECT(WID(drawingarea1)), "expose_event",
90
GTK_SIGNAL_FUNC(gui_draw),
95
myCrop=new flyContrast( width, height,in,WID(drawingarea1),WID(hscale1));
96
memcpy(&(myCrop->param),param,sizeof(CONTRAST_PARAM));
98
myCrop->sliderChanged();
101
response=gtk_dialog_run(GTK_DIALOG(dialog));
103
if(response==GTK_RESPONSE_OK)
106
memcpy(param,&(myCrop->param),sizeof(CONTRAST_PARAM));
109
gtk_unregister_dialog(dialog);
110
gtk_widget_destroy(dialog);
117
// Check entered values and green-out the selected portion on the screen
118
// Each value must be even
120
void frame_changed( void )
122
myCrop->sliderChanged();
124
void gui_update (GtkButton * button, gpointer user_data)
130
gboolean gui_draw (GtkWidget * widget, GdkEventExpose * event, gpointer user_data)
136
/**************************************/
137
#define CHECKBOX(x,y) if(TRUE==gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(dialog,#x)))) \
139
#define SCHECKBOX(x,y) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(dialog,#x)),y)
142
uint8_t flyContrast::upload(void)
145
SCHECKBOX (checkLuma, param.doLuma);
146
SCHECKBOX (checkbuttonU, param.doChromaU);
147
SCHECKBOX (checkbuttonV, param.doChromaV);
149
GtkAdjustment *adj=gtk_range_get_adjustment (GTK_RANGE(WID(hscaleBright)));
150
GTK_ADJUSTMENT(adj)->value=param.offset;
152
adj=gtk_range_get_adjustment (GTK_RANGE(WID(hscaleContrast)));
153
GTK_ADJUSTMENT(adj)->value=param.coef;
157
uint8_t flyContrast::download (void)
159
CHECKBOX (checkLuma, param.doLuma);
160
CHECKBOX (checkbuttonU, param.doChromaU);
161
CHECKBOX (checkbuttonV, param.doChromaV);
163
GtkAdjustment *adj=gtk_range_get_adjustment (GTK_RANGE(WID(hscaleBright)));
164
param.offset= (int32_t)GTK_ADJUSTMENT(adj)->value;
166
adj=gtk_range_get_adjustment (GTK_RANGE(WID(hscaleContrast)));
167
param.coef=GTK_ADJUSTMENT(adj)->value;
172
create_dialog1 (void)
175
GtkWidget *dialog_vbox1;
180
GtkWidget *hscaleContrast;
182
GtkWidget *hscaleBright;
184
GtkWidget *checkLuma;
185
GtkWidget *checkbuttonU;
186
GtkWidget *checkbuttonV;
188
GtkWidget *drawingarea1;
189
GtkWidget *dialog_action_area1;
190
GtkWidget *cancelbutton1;
191
GtkWidget *okbutton1;
193
dialog1 = gtk_dialog_new ();
194
gtk_window_set_title (GTK_WINDOW (dialog1), QT_TR_NOOP("Contrast"));
195
gtk_window_set_type_hint (GTK_WINDOW (dialog1), GDK_WINDOW_TYPE_HINT_DIALOG);
197
dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
198
gtk_widget_show (dialog_vbox1);
200
vbox1 = gtk_vbox_new (FALSE, 0);
201
gtk_widget_show (vbox1);
202
gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 0);
204
hbox1 = gtk_hbox_new (FALSE, 0);
205
gtk_widget_show (hbox1);
206
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0);
208
vbox3 = gtk_vbox_new (FALSE, 0);
209
gtk_widget_show (vbox3);
210
gtk_box_pack_start (GTK_BOX (hbox1), vbox3, TRUE, TRUE, 0);
212
label1 = gtk_label_new (QT_TR_NOOP("Contrast"));
213
gtk_widget_show (label1);
214
gtk_box_pack_start (GTK_BOX (vbox3), label1, FALSE, FALSE, 0);
216
hscaleContrast = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (1, 0.5, 1.5, 0.1, 0.1, 0)));
217
gtk_widget_show (hscaleContrast);
218
gtk_box_pack_start (GTK_BOX (vbox3), hscaleContrast, FALSE, TRUE, 0);
219
gtk_scale_set_value_pos (GTK_SCALE (hscaleContrast), GTK_POS_LEFT);
221
label2 = gtk_label_new (QT_TR_NOOP("Brightness"));
222
gtk_widget_show (label2);
223
gtk_box_pack_start (GTK_BOX (vbox3), label2, FALSE, FALSE, 0);
225
hscaleBright = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, -127, 127, 1, 1, 0)));
226
gtk_widget_show (hscaleBright);
227
gtk_box_pack_start (GTK_BOX (vbox3), hscaleBright, FALSE, TRUE, 0);
228
gtk_scale_set_value_pos (GTK_SCALE (hscaleBright), GTK_POS_LEFT);
229
gtk_scale_set_digits (GTK_SCALE (hscaleBright), 0);
231
vbox2 = gtk_vbox_new (FALSE, 0);
232
gtk_widget_show (vbox2);
233
gtk_box_pack_start (GTK_BOX (hbox1), vbox2, TRUE, TRUE, 0);
235
checkLuma = gtk_check_button_new_with_mnemonic (QT_TR_NOOP("Luma"));
236
gtk_widget_show (checkLuma);
237
gtk_box_pack_start (GTK_BOX (vbox2), checkLuma, FALSE, FALSE, 0);
239
checkbuttonU = gtk_check_button_new_with_mnemonic (QT_TR_NOOP("Chroma U"));
240
gtk_widget_show (checkbuttonU);
241
gtk_box_pack_start (GTK_BOX (vbox2), checkbuttonU, FALSE, FALSE, 0);
243
checkbuttonV = gtk_check_button_new_with_mnemonic (QT_TR_NOOP("Chroma v"));
244
gtk_widget_show (checkbuttonV);
245
gtk_box_pack_start (GTK_BOX (vbox2), checkbuttonV, FALSE, FALSE, 0);
247
hscale1 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 99, 1, 1, 1)));
248
gtk_widget_show (hscale1);
249
gtk_box_pack_start (GTK_BOX (vbox1), hscale1, TRUE, TRUE, 0);
251
drawingarea1 = gtk_drawing_area_new ();
252
gtk_widget_show (drawingarea1);
253
gtk_box_pack_start (GTK_BOX (vbox1), drawingarea1, TRUE, TRUE, 0);
254
gtk_widget_set_size_request (drawingarea1, -1, 300);
256
dialog_action_area1 = GTK_DIALOG (dialog1)->action_area;
257
gtk_widget_show (dialog_action_area1);
258
gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END);
260
cancelbutton1 = gtk_button_new_from_stock ("gtk-cancel");
261
gtk_widget_show (cancelbutton1);
262
gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), cancelbutton1, GTK_RESPONSE_CANCEL);
263
GTK_WIDGET_SET_FLAGS (cancelbutton1, GTK_CAN_DEFAULT);
265
okbutton1 = gtk_button_new_from_stock ("gtk-ok");
266
gtk_widget_show (okbutton1);
267
gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), okbutton1, GTK_RESPONSE_OK);
268
GTK_WIDGET_SET_FLAGS (okbutton1, GTK_CAN_DEFAULT);
270
/* Store pointers to all widgets, for use by lookup_widget(). */
271
GLADE_HOOKUP_OBJECT_NO_REF (dialog1, dialog1, "dialog1");
272
GLADE_HOOKUP_OBJECT_NO_REF (dialog1, dialog_vbox1, "dialog_vbox1");
273
GLADE_HOOKUP_OBJECT (dialog1, vbox1, "vbox1");
274
GLADE_HOOKUP_OBJECT (dialog1, hbox1, "hbox1");
275
GLADE_HOOKUP_OBJECT (dialog1, vbox3, "vbox3");
276
GLADE_HOOKUP_OBJECT (dialog1, label1, "label1");
277
GLADE_HOOKUP_OBJECT (dialog1, hscaleContrast, "hscaleContrast");
278
GLADE_HOOKUP_OBJECT (dialog1, label2, "label2");
279
GLADE_HOOKUP_OBJECT (dialog1, hscaleBright, "hscaleBright");
280
GLADE_HOOKUP_OBJECT (dialog1, vbox2, "vbox2");
281
GLADE_HOOKUP_OBJECT (dialog1, checkLuma, "checkLuma");
282
GLADE_HOOKUP_OBJECT (dialog1, checkbuttonU, "checkbuttonU");
283
GLADE_HOOKUP_OBJECT (dialog1, checkbuttonV, "checkbuttonV");
284
GLADE_HOOKUP_OBJECT (dialog1, hscale1, "hscale1");
285
GLADE_HOOKUP_OBJECT (dialog1, drawingarea1, "drawingarea1");
286
GLADE_HOOKUP_OBJECT_NO_REF (dialog1, dialog_action_area1, "dialog_action_area1");
287
GLADE_HOOKUP_OBJECT (dialog1, cancelbutton1, "cancelbutton1");
288
GLADE_HOOKUP_OBJECT (dialog1, okbutton1, "okbutton1");