/*
* surf - visualizing algebraic curves and algebraic surfaces
* Copyright (C) 1996-1997 Friedrich-Alexander-Universitaet
* Erlangen-Nuernberg
* 1997-2000 Johannes Gutenberg-Universitaet Mainz
* Authors: Stephan Endrass, Hans Huelf, Ruediger Oertel,
* Kai Schneider, Ralf Schmitt, Johannes Beigel
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
#include "DisplayWindow.h"
#include "TableBuilder.h"
void DisplayWindow::toggled_depth_method (GtkWidget *w, gpointer data)
{
DisplayWindow *dw = (DisplayWindow *)data;
dw->depthCueingChanged (w);
}
void DisplayWindow::depthCueingChanged(GtkWidget *w)
{
if( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
gtk_widget_set_sensitive(depth_cue.depth_value,FALSE);
} else{
gtk_widget_set_sensitive(depth_cue.depth_value,TRUE);
}
}
void DisplayWindow::toggled_normalize_method (GtkWidget *w, gpointer data)
{
DisplayWindow *dw = (DisplayWindow *)data;
dw->normalizeChanged (w);
}
void DisplayWindow::normalizeChanged(GtkWidget *w)
{
if( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
gtk_widget_set_sensitive(normalize.normalize_factor,FALSE);
} else{
gtk_widget_set_sensitive(normalize.normalize_factor,TRUE);
}
}
static GtkWidget *get_color_spin()
{
GtkObject *adj;
GtkWidget *spin;
adj = gtk_adjustment_new (0.0, 0.0, 1.0, 0.001, 0.01, 0.0);
spin = gtk_spin_button_new (GTK_ADJUSTMENT(adj), 0.01, 3);
return spin;
}
void DisplayWindow::init_stereo_params()
{
stereo_params.frame = gtk_frame_new ("stereo image");
gtk_container_border_width (GTK_CONTAINER(stereo_params.frame), 5);
TableBuilder tb;
tb.setSize (5);
stereo_params.eye_distance = mygtk_new_spin (0.0, -10.0, 10.0, 0.1, 1.0, 0.1, 1);
tb.newLine ("eye distance:", stereo_params.eye_distance);
stereo_params.dist_to_screen = mygtk_new_spin (0.0, -30.0, 30.0, 0.1, 1.0, 0.1, 1);
tb.newLine ("distance from screen:", stereo_params.dist_to_screen);
tb.newLine ("left eye red value:", stereo_params.left_eye_red = get_color_spin());
tb.newLine ("right eye blue value:", stereo_params.right_eye_blue = get_color_spin());
tb.newLine ("right eye green value:", stereo_params.right_eye_green = get_color_spin());
GtkWidget *table = tb.getTable();
gtk_container_add (GTK_CONTAINER(stereo_params.frame), table);
controlWidget (stereo_params.eye_distance, "stereo_eye");
controlWidget (stereo_params.dist_to_screen, "stereo_z");
controlWidget (stereo_params.left_eye_red, "stereo_red");
controlWidget (stereo_params.right_eye_blue, "stereo_blue");
controlWidget (stereo_params.right_eye_green, "stereo_green");
}
void DisplayWindow::init_antialias()
{
//
// --- initialize antialias struct
//
antialias.frame = gtk_frame_new ("antialiasing");
gtk_container_border_width (GTK_CONTAINER(antialias.frame), 5);
TableBuilder tb;
tb.setSize(3);
antialias.level = mygtk_new_spin(1.0, 1.0, 8.0, 1,1,0,0);
tb.newLine ("level:", antialias.level);
antialias.threshold = mygtk_new_spin (0.0001, 0.0001, 0.9999, 0.0001, 0.0001, 0.4, 4);
tb.newLine ("threshold:", antialias.threshold);
antialias.radius = mygtk_new_spin (0.5, 0.5, 5.0, 0.1, 0.2, 0.1, 1);
tb.newLine ("radius:", antialias.radius);
antialias.table = tb.getTable();
gtk_container_border_width (GTK_CONTAINER(antialias.table), 5);
gtk_container_add (GTK_CONTAINER(antialias.frame), antialias.table);
controlWidget (antialias.level, "antialiasing");
controlWidget (antialias.threshold, "antialiasing_threshold");
controlWidget (antialias.radius, "antialiasing_radius");
}
void DisplayWindow::init_depth_cue()
{
//
// --- initialize depth_cue struct
//
depth_cue.box = gtk_hbox_new (FALSE, 0);
depth_cue.depth_cue = gtk_check_button_new_with_label ("depth:");
gtk_box_pack_start (GTK_BOX(depth_cue.box), depth_cue.depth_cue, FALSE, FALSE,0);
depth_cue.depth_value = mygtk_new_spin (14.0, -1000.0, 10.0, 0.1, 1.0, 0.1, 1);
gtk_box_pack_start (GTK_BOX(depth_cue.box), depth_cue.depth_value, TRUE, TRUE, 0);
depth_cue.frame = gtk_frame_new ("depth cueing");
gtk_container_border_width (GTK_CONTAINER(depth_cue.frame),5);
gtk_container_add (GTK_CONTAINER(depth_cue.frame), depth_cue.box);
gtk_signal_connect( GTK_OBJECT(depth_cue.depth_cue),"pressed",(GtkSignalFunc)toggled_depth_method,this );
controlWidget (depth_cue.depth_cue, "depth_cueing");
controlWidget (depth_cue.depth_value, "depth");
}
void DisplayWindow::init_normalize()
{
//
// --- initialize normalize struct
//
normalize.box = gtk_hbox_new (FALSE, 0);
normalize.normalize_brightness = gtk_check_button_new_with_label ("factor:");
gtk_box_pack_start (GTK_BOX(normalize.box), normalize.normalize_brightness, FALSE, FALSE,0);
normalize.normalize_factor = mygtk_new_spin (1.0, 0.0, 100.0, 0.01, 1.0, 0.1, 1);
gtk_box_pack_start (GTK_BOX(normalize.box), normalize.normalize_factor, TRUE, TRUE, 0);
normalize.frame = gtk_frame_new ("normalize brightness");
gtk_container_border_width (GTK_CONTAINER(normalize.frame),5);
gtk_container_add (GTK_CONTAINER(normalize.frame), normalize.box);
gtk_signal_connect( GTK_OBJECT(normalize.normalize_brightness),"pressed",(GtkSignalFunc)toggled_normalize_method,this );
controlWidget (normalize.normalize_brightness, "normalize_brightness");
controlWidget (normalize.normalize_factor, "normalize_factor");
}
DisplayWindow::DisplayWindow ()
{
init_stereo_params( );
init_normalize( );
init_antialias( );
init_depth_cue( );
//
// --- initialize remaining parts
//
mainBox = gtk_vbox_new (FALSE, 10);
gtk_container_border_width (GTK_CONTAINER(mainBox), 5);
#if 0
GtkWidget *optimizeColors = gtk_check_button_new_with_label ("optimize colors");
gtk_box_pack_start (GTK_BOX(mainBox), optimizeColors, FALSE, FALSE ,0);
GtkWidget *ditherColor = gtk_check_button_new_with_label ("dither colors");
gtk_box_pack_start (GTK_BOX(mainBox), ditherColor, FALSE, FALSE ,0);
GtkWidget *normBrightness = gtk_check_button_new_with_label ("normalize brightness");
gtk_box_pack_start (GTK_BOX(mainBox), normBrightness, FALSE, FALSE ,0);
#endif
gtk_box_pack_start (GTK_BOX(mainBox), antialias.frame, FALSE, FALSE ,0);
gtk_box_pack_start (GTK_BOX(mainBox), normalize.frame, FALSE, FALSE ,0);
gtk_box_pack_start (GTK_BOX(mainBox), depth_cue.frame, FALSE, FALSE ,0);
gtk_box_pack_start (GTK_BOX(mainBox), stereo_params.frame, FALSE, FALSE ,0);
}
syntax highlighted by Code2HTML, v. 0.9.1