Beispiel #1
0
Save_Widget::Save_Widget() :
    _plugin            (0),
    _compression_widget(0)
{
    //DJV_DEBUG("Save_Widget::Save_Widget");

    // Create widgets.

    Group_Box * group = new Group_Box(label_compression_group);

    _compression_widget = new Radio_Button_Group(label_compression());

    // Layout.

    Vertical_Layout * layout = new Vertical_Layout(this);
    layout->margin(Style::global()->margin_large());
    layout->spacing(Style::global()->spacing_large());

    layout->add(group);
    group->layout()->add(_compression_widget);

    layout->add_stretch();

    // Initialize.

    plugin_update();
    widget_update();

    // Callbacks.

    _compression_widget->signal.set(this, compression_callback);
}
Save_Widget::Save_Widget() :
    _plugin      (0),
    _codec_widget(0)
{
    // Create widgets.

    Group_Box * codec_group = new Group_Box(label_codec_group);

    _codec_widget = new Radio_Button_Group(label_codec());

    // Layout.

    Layout_Item::create_group(List<Layout_Item *>() <<
        _codec_widget);

    Vertical_Layout * layout = new Vertical_Layout(this);
    layout->spacing(Style::global()->spacing_large());

    layout->add(codec_group);
    codec_group->layout()->add(_codec_widget);

    layout->add_stretch();

    // Initialize.

    plugin_update();
    widget_update();

    // Callbacks.

    _codec_widget->signal.set(this, codec_callback);
}
Beispiel #3
0
Save_Widget::Save_Widget() :
    _plugin              (0),
    _color_profile_widget(0),
    _black_widget        (0),
    _white_widget        (0),
    _gamma_widget        (0)
{
    // Create color profile widgets.

    Group_Box * color_profile_group =
        new Group_Box(label_color_profile_group);

    _color_profile_widget = new Radio_Button_Group(label_color_profile());

    Group_Box * film_print_group = new Group_Box(label_film_print_group);

    _black_widget = new Int_Edit_Slider(0, 1023);

    _white_widget = new Int_Edit_Slider(0, 1023);

    _gamma_widget = new Float_Edit_Slider(0.01, 4.0);

    // Layout.

    Vertical_Layout * layout = new Vertical_Layout(this);
    layout->margin(Style::global()->margin_large());
    layout->spacing(Style::global()->spacing_large());

    layout->add(color_profile_group);
    color_profile_group->layout()->add(_color_profile_widget);

    color_profile_group->layout()->add(film_print_group);
    Form_Widget * form_widget = new Form_Widget;
    film_print_group->layout()->add(form_widget);
    form_widget->add_row(label_film_print_black, _black_widget);
    form_widget->add_row(label_film_print_white, _white_widget);
    form_widget->add_row(label_film_print_gamma, _gamma_widget);

    layout->add_stretch();

    // Initialize.

    _black_widget->default_value(Save::Options().film_print.black);
    _white_widget->default_value(Save::Options().film_print.white);
    _gamma_widget->default_value(Save::Options().film_print.gamma);

    plugin_update();
    widget_update();

    // Callbacks.

    _color_profile_widget->signal.set(this, color_profile_callback);
    _black_widget->signal.set(this, black_callback);
    _white_widget->signal.set(this, white_callback);
    _gamma_widget->signal.set(this, gamma_callback);
}
Application_Message_Dialog::Application_Message_Dialog() :
    Dialog("Messages"),
    _show        (true),
    _widget      (0),
    _show_widget (0),
    _clear_widget(0),
    _close_widget(0)
{
    // Create widgets.

    _widget = new Multiline_Text_Display;

    _show_widget = new Check_Button("&Show");

    _clear_widget = new Push_Button("&Clear");

    _close_widget = new Push_Button("Clos&e");

    // Layout.

    Vertical_Layout * layout = new Vertical_Layout(this);
    layout->add(_widget);
    layout->stretch(_widget);

    Horizontal_Layout * layout_h = new Horizontal_Layout(layout);
    layout_h->margin(0);
    layout_h->add(_show_widget);
    layout_h->add_stretch();
    layout_h->add(_clear_widget);
    layout_h->add(_close_widget);
    layout_h->add_spacer(Layout::window_handle_size());

    // Preferences.

    Prefs prefs(Prefs::prefs_global(), "application_message_dialog");
    Prefs::get_(&prefs, "show", &_show);

    // Initialize.

    widget_update();
    dialog_update();

    size(size_hint());

    // Callbacks.

    _show_widget->signal.set(this, show_callback);
    _clear_widget->signal.set(this, clear_callback);
    _close_widget->signal.set(this, close_callback);
}
Beispiel #5
0
Magnify_Dialog::Magnify_Dialog() :
    Dialog("Magnify"),
    _view        (0),
    _zoom        (ZOOM_200),
    _widget      (0),
    _zoom_widget (0),
    _close_widget(0)
{
    // Create widgets.

    _widget = new Magnify_Widget;

    _zoom_widget = new Choice_Widget(label_zoom());

    _close_widget = new Push_Button(label_close);

    // Layout.

    Vertical_Layout * layout = new Vertical_Layout(this);

    layout->add(_widget);
    layout->stretch(_widget);

    Horizontal_Layout * layout_h = new Horizontal_Layout(layout);
    layout_h->margin(0);
    layout_h->add(_zoom_widget);
    layout_h->add_spacer(-1, true);
    layout_h->add(_close_widget);
    layout_h->add_spacer(Layout::window_handle_size());

    // Preferences.

    Prefs prefs(Prefs::prefs(), "magnify_dialog");
    Prefs::get_(&prefs, "zoom", &_zoom);

    // Initialize.

    widget_update();

    size(Vector_Util::max(size_hint(), V2i(300, 300)));

    // Callbacks.

    _zoom_widget->signal.set(this, zoom_callback);

    _close_widget->signal.set(this, close_callback);
}
Beispiel #6
0
Multi_Choice_Dialog::Multi_Choice_Dialog(
    const String & label,
    const List<String> & list) :
    Abstract_Message_Dialog(label_multi_choice),
    signal      (this),
    index_signal(this),
    _widget     (0),
    _label      (0)
{
    // Create widgets.

    _widget = new Check_Button_Group(list);
    _widget->align(CENTER, CENTER);

    _label = new Label(label);

    Push_Button * ok_button = new Push_Button(label_ok);
    Push_Button * close_button = new Push_Button(label_close);

    // Layout.

    Vertical_Layout * layout = new Vertical_Layout(this);

    Vertical_Layout * layout_v = new Vertical_Layout(layout);
    layout->stretch(layout_v);
    layout_v->margin(Style::global()->margin_large());
    layout_v->add(_label);
    layout_v->add(_widget);
    layout_v->stretch(_widget);

    Horizontal_Layout * layout_h = new Horizontal_Layout(layout);
    layout_h->margin(0);
    layout_h->add_stretch();
    layout_h->add(ok_button);
    layout_h->add(close_button);
    layout_h->add_spacer(Layout::window_handle_size());

    // Initialize.

    size(size_hint(), false);

    // Callbacks.

    ok_button->signal.set(this, ok_callback);
    close_button->signal.set(this, close_callback);
}
Beispiel #7
0
Application::Application(int argc, char ** argv) :
    djv::Application("djv_play2_test", argc, argv),
    _frame(0),
    _image0(0),
    _image1(0),
    _window(0)
{
    File::seq_extensions.add(List<String>() << ".ppm" << ".PPM");

    // Command line.

    if (argc != 2)
    {
        print("usage: test_image_play2 (input)");
        exit(EXIT_ERROR);
        return;
    }

    _file.set(argv[1]);

    if (_file.is_seq_valid())
    {
        _file.type(File::SEQ);
    }

    is_valid(true);

    // Widgets.

    _window = new djv::Window(name());

    _widget = new Widget;

    // Layout.

    Vertical_Layout * layout = new Vertical_Layout(_window);
    layout->margin(0);
    layout->add(_widget);
    layout->stretch(_widget);

    // Initialize.

    _image_buf.resize(20);
    List<Image_Ptr>::size_type i = 0;

    for (; i < _image_buf.size(); ++i)
    {
        _image_buf[i].p = new Image_Ppm;
    }

    i = 0;

    for (; i < _image_buf.size() - 1; ++i)
    {
        _image_buf[i].next = &_image_buf[i + 1];
    }

    _image_buf[i].next = &_image_buf[0];

    _image0 = &_image_buf[0];
    _image0->p->load(_file.get(_file.seq().list[_frame]));
    _image0->frame = _frame;

    _image1 = &_image_buf[0];

    //update();
    Fl::add_idle(update_callback, this);

    _window->size(_image0->p->info().size);
    _window->show();

    // Callbacks.

    _window->close_signal.set(this, exit_callback);
}
Beispiel #8
0
Scale_Op::Scale_Op()
{
    // Widgets.

    Group_Box * size_group = new Group_Box("Size");
    Int_Edit_Slider * width = new Int_Edit_Slider;
    Int_Edit_Slider * height = new Int_Edit_Slider;

    Group_Box * type_group = new Group_Box("Type");
    Choice_Widget * type = new Choice_Widget(label_type());

    Group_Box * filter_default_group = new Group_Box("Default Filter");
    Choice_Widget * filter_default_min =
        new Choice_Widget(label_filter_default());
    Choice_Widget * filter_default_mag =
        new Choice_Widget(label_filter_default());

    Group_Box * filter_custom_group = new Group_Box("Custom Filter");
    Choice_Widget * filter_custom_min =
        new Choice_Widget(label_filter_custom());
    Choice_Widget * filter_custom_mag =
        new Choice_Widget(label_filter_custom());

    // Layout.

    Layout_Item::group(List<Layout_Item *>() <<
        width <<
        height);

    Vertical_Layout * layout = new Vertical_Layout(this);
    layout->add(size_group);
    Vertical_Layout * layout_v = new Vertical_Layout(size_group);
    Horizontal_Layout * layout_h = new Horizontal_Layout(layout_v);
    layout_v->add(width);
    layout_v->add(height);

    layout->add(type_group);
    layout_v = new Vertical_Layout(type_group);
    layout_v->add(type);

    layout->add(filter_default_group);
    layout_v = new Vertical_Layout(filter_default_group);
    layout_h = new Horizontal_Layout(layout_v);
    layout_h->margin(0);
    layout_h->add(filter_default_min);
    layout_h->add(filter_default_mag);

    layout->add(filter_custom_group);
    layout_v = new Vertical_Layout(filter_custom_group);
    layout_h = new Horizontal_Layout(layout_v);
    layout_h->margin(0);
    layout_h->add(filter_custom_min);
    layout_h->add(filter_custom_mag);

    layout->add_stretch();

    // Initialize.

    width->range(1, 2048);
    height->range(1, 2048);
    width->set(_value.size.x);
    height->set(_value.size.y);
    type->set(_value.type);
    filter_default_min->set(_value.default_min);
    filter_default_mag->set(_value.default_mag);
    filter_custom_min->set(_value.custom_min);
    filter_custom_mag->set(_value.custom_mag);

    // Callbacks.

    width->signal.set(this, width_callback);
    height->signal.set(this, height_callback);
    type->signal.set(this, type_callback);
    filter_default_min->signal.set(this, default_min_callback);
    filter_default_mag->signal.set(this, default_mag_callback);
    filter_custom_min->signal.set(this, custom_min_callback);
    filter_custom_mag->signal.set(this, custom_mag_callback);
}
Beispiel #9
0
Application::Application(int argc, char ** argv) :
    djv::Application("djv_play_test", argc, argv),
    _load  (0),
    _window(0),
    _frame (0)
{
    // Command line.

    if (argc != 2)
    {
        print("usage: djv_play_test (input)");
        exit(EXIT_ERROR);
        return;
    }

    _file.set(argv[1]);

    if (_file.is_seq_valid())
    {
        _file.type(File::SEQ);
    }

    try
    {
        _load = Image_Load_Factory::global()->get(_file, &_info);
    }
    catch (Error error)
    {
        this->error(error);
        exit(EXIT_ERROR);
        return;
    }

    is_valid(true);

    // Widgets.

    _window = new djv::Window(name());

    _widget = new Widget;

    // Layout.

    Vertical_Layout * layout = new Vertical_Layout(_window);
    layout->margin(0);
    layout->add(_widget);
    layout->stretch(_widget);

    // Initialize.

    //update();
    Fl::add_idle(update_callback, this);

    //_widget->zoom(0.5);

    _window->size(_info.size);
    _window->show();

    // Callbacks.

    _window->close_signal.set(this, exit_callback);
}
Display_Profile_Dialog::Display_Profile_Dialog() :
    Dialog("Display Profile"),
    signal            (this),
    _view             (0),
    _lut_widget       (0),
    _brightness_widget(0),
    _contrast_widget  (0),
    _saturation_widget(0),
    _gamma_widget     (0),
    _soft_clip_widget (0),
    _close_widget     (0)
{
    // Create LUT widgets.

    Group_Box * lut_group = new Group_Box(label_lut);

    _lut_widget = new File_Edit;

    // Create color widgets.

    Group_Box * color_group = new Group_Box(label_color);

    _brightness_widget = new Float_Edit_Slider;
    _brightness_widget->default_value(_value.color.brightness);
    _brightness_widget->range(0.0, 4.0);

    _contrast_widget = new Float_Edit_Slider;
    _contrast_widget->default_value(_value.color.contrast);
    _contrast_widget->range(0.0, 4.0);

    _saturation_widget = new Float_Edit_Slider;
    _saturation_widget->default_value(_value.color.saturation);
    _saturation_widget->range(0.0, 4.0);

    // Create levels widgets.

    Group_Box * levels_group = new Group_Box(label_levels);

    _levels_in_widget[0] = new Float_Edit_Slider;
    _levels_in_widget[0]->default_value(_value.levels.in_low);
    _levels_in_widget[0]->range(0.0, 1.0);

    _levels_in_widget[1] = new Float_Edit_Slider;
    _levels_in_widget[1]->default_value(_value.levels.in_high);
    _levels_in_widget[1]->range(0.0, 1.0);

    _gamma_widget = new Float_Edit_Slider;
    _gamma_widget->default_value(_value.levels.gamma);
    _gamma_widget->range(0.0, 4.0);

    _levels_out_widget[0] = new Float_Edit_Slider;
    _levels_out_widget[0]->default_value(_value.levels.out_low);
    _levels_out_widget[0]->range(0.0, 1.0);

    _levels_out_widget[1] = new Float_Edit_Slider;
    _levels_out_widget[1]->default_value(_value.levels.out_high);
    _levels_out_widget[1]->range(0.0, 1.0);

    _soft_clip_widget = new Float_Edit_Slider;
    _soft_clip_widget->default_value(_value.soft_clip);
    _soft_clip_widget->range(0.0, 1.0);

    // Create dialog widgets.

    _close_widget = new Push_Button(label_close);

    // Layout.

    Vertical_Layout * layout = new Vertical_Layout(this);

    layout->add(lut_group);
    lut_group->layout()->add(_lut_widget);

    layout->add(color_group);
    Form_Widget * form_widget = new Form_Widget;
    color_group->layout()->add(form_widget);
    form_widget->add_row(label_brightness, _brightness_widget);
    form_widget->add_row(label_contrast, _contrast_widget);
    form_widget->add_row(label_saturation, _saturation_widget);
    
    layout->add(levels_group);
    form_widget = new Form_Widget;
    levels_group->layout()->add(form_widget);
    form_widget->add_row(label_levels_in, _levels_in_widget[0]);
    form_widget->add_row(String(), _levels_in_widget[1]);
    form_widget->add_row(label_gamma, _gamma_widget);
    form_widget->add_row(label_levels_out, _levels_out_widget[0]);
    form_widget->add_row(String(), _levels_out_widget[1]);
    form_widget->add_row(label_soft_clip, _soft_clip_widget);
    
    layout->add_spacer(-1, true);

    Horizontal_Layout * layout_h = new Horizontal_Layout(layout);
    layout_h->margin(0);
    layout_h->add_stretch();
    layout_h->add(_close_widget);
    layout_h->add_spacer(Layout::window_handle_size());

    // Initialize.

    widget_update();

    size(size_hint());

    // Callbacks.

    _lut_widget->signal.set(this, lut_callback);

    _brightness_widget->signal.set(this, brightness_callback);
    _contrast_widget->signal.set(this, contrast_callback);
    _saturation_widget->signal.set(this, saturation_callback);

    _levels_in_widget[0]->signal.set(this, levels_in0_callback);
    _levels_in_widget[1]->signal.set(this, levels_in1_callback);
    _gamma_widget->signal.set(this, gamma_callback);
    _levels_out_widget[0]->signal.set(this, levels_out0_callback);
    _levels_out_widget[1]->signal.set(this, levels_out1_callback);
    _soft_clip_widget->signal.set(this, soft_clip_callback);

    _close_widget->signal.set(this, close_callback);
}