~ubuntu-branches/ubuntu/hardy/avidemux/hardy

« back to all changes in this revision

Viewing changes to avidemux/ADM_userInterfaces/ADM_GTK/ADM_dialog/DIA_contrast.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Matvey Kozhev
  • Date: 2007-12-18 13:53:04 UTC
  • mfrom: (1.1.7 upstream)
  • Revision ID: james.westby@ubuntu.com-20071218135304-cdqec2lg2bglyz15
Tags: 1:2.4~preview3-0.0ubuntu1
* Upload to Ubuntu. (LP: #163287, LP: #126572)
* debian/changelog: re-added Ubuntu releases.
* debian/control:
  - Require debhelper >= 5.0.51 (for dh_icons) and imagemagick.
  - Build-depend on libsdl1.2-dev instead of libsdl-dev.
  - Build against newer libx264-dev. (LP: #138854)
  - Removed libamrnb-dev, not in Ubuntu yet.
* debian/rules:
  - Install all icon sizes, using convert (upstream installs none).
  - Added missing calls to dh_installmenu, dh_installman, dh_icons and
    dh_desktop.
* debian/menu, debian/avidemux-qt.menu:
  - Corrected package and executable names.
* debian/avidemux-common.install: Install icons.
* debian/avidemux.common.manpages: Install man/avidemux.1.
* debian/links, debian/avidemux-cli.links, debian/avidemux-gtk.links:
  - Link manpages to avidemux.1.gz.
* debian/install, debian/avidemux-qt.install, debian/avidemux-gtk.desktop,
  debian/avidemux-qt.desktop: Install desktop files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
                          DIA_contrast.cpp  -  description
 
3
                             -------------------
 
4
    begin                : Mon Sep 23 2002
 
5
    copyright            : (C) 2002 by mean
 
6
    email                : fixounet@free.fr
 
7
 ***************************************************************************/
 
8
 
 
9
/***************************************************************************
 
10
 *                                                                         *
 
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.                                   *
 
15
 *                                                                         *
 
16
 ***************************************************************************/
 
17
#include "config.h"
 
18
 
 
19
#include <stdio.h>
 
20
#include <stdlib.h>
 
21
#include <string.h>
 
22
 
 
23
#include <gtk/gtk.h>
 
24
#include <time.h>
 
25
#include <sys/time.h>
 
26
#include <math.h>
 
27
 
 
28
 
 
29
#include "fourcc.h"
 
30
#include "avio.hxx"
 
31
 
 
32
#include "avi_vars.h"
 
33
#ifdef HAVE_ENCODER
 
34
 
 
35
 
 
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"
 
47
 
 
48
/********************************************************************/
 
49
static GtkWidget *create_dialog1 (void);
 
50
static GtkWidget *dialog = NULL;
 
51
 
 
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 );
 
56
 
 
57
static int lock=0;
 
58
static flyContrast *myCrop=NULL;
 
59
 
 
60
/********************************************************************/
 
61
uint8_t DIA_contrast(AVDMGenericVideoStream *in,CONTRAST_PARAM *param)
 
62
{
 
63
  
 
64
   uint32_t width,height;
 
65
      uint8_t ret=0;
 
66
        // Allocate space for green-ised video
 
67
        width=in->getInfo()->width;
 
68
        height=in->getInfo()->height;
 
69
 
 
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);        
 
74
        
 
75
          // and value changed
 
76
#define CNX(x,y) gtk_signal_connect(GTK_OBJECT(WID(x)), y, GTK_SIGNAL_FUNC(gui_update), (void *) (1));
 
77
 
 
78
        CNX (checkLuma, "toggled");
 
79
        CNX (checkbuttonU, "toggled");
 
80
        CNX (checkbuttonV, "toggled");
 
81
        
 
82
        
 
83
        CNX (hscaleContrast, "value_changed");
 
84
        CNX (hscaleContrast, "drag_data_received");
 
85
      
 
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),
 
91
            NULL);
 
92
 
 
93
 
 
94
          
 
95
        myCrop=new flyContrast( width, height,in,WID(drawingarea1),WID(hscale1));
 
96
        memcpy(&(myCrop->param),param,sizeof(CONTRAST_PARAM));
 
97
        myCrop->upload();
 
98
        myCrop->sliderChanged();
 
99
        ret=0;
 
100
        int response;
 
101
        response=gtk_dialog_run(GTK_DIALOG(dialog));
 
102
 
 
103
        if(response==GTK_RESPONSE_OK)
 
104
        {
 
105
            myCrop->download();
 
106
            memcpy(param,&(myCrop->param),sizeof(CONTRAST_PARAM));
 
107
            ret=1;
 
108
        }
 
109
        gtk_unregister_dialog(dialog);
 
110
        gtk_widget_destroy(dialog);
 
111
        delete myCrop;
 
112
        return ret;
 
113
}
 
114
 
 
115
 
 
116
//
 
117
//        Check entered values and green-out the selected portion on the screen
 
118
//        Each value must be even
 
119
//
 
120
void frame_changed( void )
 
121
{
 
122
  myCrop->sliderChanged();
 
123
}
 
124
void gui_update (GtkButton * button, gpointer user_data)
 
125
{
 
126
  if(lock) return;
 
127
    myCrop->update();
 
128
}
 
129
 
 
130
gboolean gui_draw (GtkWidget * widget, GdkEventExpose * event, gpointer user_data)
 
131
{
 
132
  myCrop->display();
 
133
  return TRUE;
 
134
}
 
135
 
 
136
/**************************************/
 
137
#define CHECKBOX(x,y) if(TRUE==gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(dialog,#x))))  \
 
138
                        y=1; else y=0;
 
139
#define SCHECKBOX(x,y) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(dialog,#x)),y)
 
140
 
 
141
 
 
142
uint8_t flyContrast::upload(void)
 
143
{
 
144
    lock++;
 
145
      SCHECKBOX (checkLuma, param.doLuma);
 
146
      SCHECKBOX (checkbuttonU, param.doChromaU);
 
147
      SCHECKBOX (checkbuttonV, param.doChromaV);
 
148
 
 
149
      GtkAdjustment *adj=gtk_range_get_adjustment (GTK_RANGE(WID(hscaleBright)));
 
150
      GTK_ADJUSTMENT(adj)->value=param.offset;
 
151
  
 
152
      adj=gtk_range_get_adjustment (GTK_RANGE(WID(hscaleContrast)));
 
153
      GTK_ADJUSTMENT(adj)->value=param.coef;
 
154
    lock--;
 
155
    return 1;
 
156
}
 
157
uint8_t flyContrast::download (void)
 
158
{
 
159
  CHECKBOX (checkLuma, param.doLuma);
 
160
  CHECKBOX (checkbuttonU, param.doChromaU);
 
161
  CHECKBOX (checkbuttonV, param.doChromaV);
 
162
  
 
163
  GtkAdjustment *adj=gtk_range_get_adjustment (GTK_RANGE(WID(hscaleBright)));
 
164
  param.offset= (int32_t)GTK_ADJUSTMENT(adj)->value;
 
165
  
 
166
  adj=gtk_range_get_adjustment (GTK_RANGE(WID(hscaleContrast)));
 
167
  param.coef=GTK_ADJUSTMENT(adj)->value;
 
168
   return 1;
 
169
}
 
170
 
 
171
GtkWidget*
 
172
create_dialog1 (void)
 
173
{
 
174
  GtkWidget *dialog1;
 
175
  GtkWidget *dialog_vbox1;
 
176
  GtkWidget *vbox1;
 
177
  GtkWidget *hbox1;
 
178
  GtkWidget *vbox3;
 
179
  GtkWidget *label1;
 
180
  GtkWidget *hscaleContrast;
 
181
  GtkWidget *label2;
 
182
  GtkWidget *hscaleBright;
 
183
  GtkWidget *vbox2;
 
184
  GtkWidget *checkLuma;
 
185
  GtkWidget *checkbuttonU;
 
186
  GtkWidget *checkbuttonV;
 
187
  GtkWidget *hscale1;
 
188
  GtkWidget *drawingarea1;
 
189
  GtkWidget *dialog_action_area1;
 
190
  GtkWidget *cancelbutton1;
 
191
  GtkWidget *okbutton1;
 
192
 
 
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);
 
196
 
 
197
  dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
 
198
  gtk_widget_show (dialog_vbox1);
 
199
 
 
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);
 
203
 
 
204
  hbox1 = gtk_hbox_new (FALSE, 0);
 
205
  gtk_widget_show (hbox1);
 
206
  gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0);
 
207
 
 
208
  vbox3 = gtk_vbox_new (FALSE, 0);
 
209
  gtk_widget_show (vbox3);
 
210
  gtk_box_pack_start (GTK_BOX (hbox1), vbox3, TRUE, TRUE, 0);
 
211
 
 
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);
 
215
 
 
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);
 
220
 
 
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);
 
224
 
 
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);
 
230
 
 
231
  vbox2 = gtk_vbox_new (FALSE, 0);
 
232
  gtk_widget_show (vbox2);
 
233
  gtk_box_pack_start (GTK_BOX (hbox1), vbox2, TRUE, TRUE, 0);
 
234
 
 
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);
 
238
 
 
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);
 
242
 
 
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);
 
246
 
 
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);
 
250
 
 
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);
 
255
 
 
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);
 
259
 
 
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);
 
264
 
 
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);
 
269
 
 
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");
 
289
 
 
290
  return dialog1;
 
291
}
 
292
 
 
293
 
 
294
#endif