Merge CV, ver=5.1; ops/methods from HV, and interface from CV where possible
[goodguy/history.git] / cinelerra-5.0 / plugins / gamma / gammawindow.C
diff --git a/cinelerra-5.0/plugins/gamma/gammawindow.C b/cinelerra-5.0/plugins/gamma/gammawindow.C
deleted file mode 100644 (file)
index 9fd7496..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-
-/*
- * CINELERRA
- * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
- * 
- * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
- */
-
-#include "bcdisplayinfo.h"
-#include "gammawindow.h"
-#include "language.h"
-
-
-
-
-
-
-
-
-
-
-GammaWindow::GammaWindow(GammaMain *client)
- : PluginClientWindow(client,
-       400, 
-       380, 
-       400, 
-       380, 
-       0)
-{ 
-       this->client = client; 
-}
-
-void GammaWindow::create_objects()
-{
-       int x = 10, y = 10;
-       add_subwindow(histogram = new BC_SubWindow(x, 
-               y, 
-               get_w() - x * 2, 
-               get_h() - 180, 
-               WHITE));
-       y += histogram->get_h() + 10;
-
-       BC_Title *title;
-       add_tool(title = new BC_Title(x, y, _("Maximum:")));
-       x += title->get_w() + 10;
-       add_tool(max_slider = new MaxSlider(client, 
-               this, 
-               x, 
-               y, 
-               190));
-       x += max_slider->get_w() + 10;
-       add_tool(max_text = new MaxText(client,
-               this,
-               x,
-               y,
-               100));
-       y += max_text->get_h() + 10;
-       x = 10;
-       add_tool(automatic = new GammaAuto(client, x, y));
-
-       y += automatic->get_h() + 10;
-       add_tool(title = new BC_Title(x, y, _("Gamma:")));
-       x += title->get_w() + 10;
-       add_tool(gamma_slider = new GammaSlider(client, 
-               this, 
-               x, 
-               y, 
-               190));
-       x += gamma_slider->get_w() + 10;
-       add_tool(gamma_text = new GammaText(client,
-               this,
-               x,
-               y,
-               100));
-       y += gamma_text->get_h() + 10;
-       x = 10;
-
-       add_tool(plot = new GammaPlot(client, x, y));
-       y += plot->get_h() + 10;
-
-       add_tool(new GammaColorPicker(client, this, x, y));
-
-       show_window();
-       flush();
-}
-
-void GammaWindow::update()
-{
-       max_slider->update(client->config.max);
-       max_text->update(client->config.max);
-       gamma_slider->update(client->config.gamma);
-       gamma_text->update(client->config.gamma);
-       automatic->update(client->config.automatic);
-       plot->update(client->config.plot);
-       update_histogram();
-}
-
-void GammaWindow::update_histogram()
-{
-       histogram->clear_box(0, 0, histogram->get_w(), histogram->get_h());
-       if(client->engine)
-       {
-               int max = 0;
-               histogram->set_color(MEGREY);
-               for(int i = 0; i < histogram->get_w(); i++)
-               {
-                       int x1 = (int64_t)i * HISTOGRAM_SIZE / histogram->get_w();
-                       int x2 = (int64_t)(i + 1) * HISTOGRAM_SIZE / histogram->get_w();
-                       if(x2 == x1) x2++;
-                       int accum = 0;
-                       for(int x = x1; x < x2; x++)
-                       {
-                               accum += client->engine->accum[x];
-                       }
-                       if(accum > max) max = accum;
-               }
-               for(int i = 0; i < histogram->get_w(); i++)
-               {
-                       int x1 = (int64_t)i * HISTOGRAM_SIZE / histogram->get_w();
-                       int x2 = (int64_t)(i + 1) * HISTOGRAM_SIZE / histogram->get_w();
-                       if(x2 == x1) x2++;
-                       int accum = 0;
-                       for(int x = x1; x < x2; x++)
-                       {
-                               accum += client->engine->accum[x];
-                       }
-
-                       int h = (int)(log(accum) / log(max) * histogram->get_h());
-                       histogram->draw_line(i, 
-                               histogram->get_h(), 
-                               i, 
-                               histogram->get_h() - h);
-               }
-       }
-
-       histogram->set_color(GREEN);
-       int y1 = histogram->get_h();
-       float max = client->config.max * client->config.gamma;
-       float scale = 1.0 / max;
-       float gamma = client->config.gamma - 1.0;
-       for(int i = 1; i < histogram->get_w(); i++)
-       {
-               float in = (float)i / histogram->get_w();
-               float out = in * (scale * pow(in * 2 / max, gamma));
-               int y2 = (int)(histogram->get_h() - out * histogram->get_h());
-               histogram->draw_line(i - 1, y1, i, y2);
-               y1 = y2;
-       }
-       histogram->flash();
-}
-
-
-
-
-MaxSlider::MaxSlider(GammaMain *client, 
-       GammaWindow *gui, 
-       int x, 
-       int y,
-       int w)
- : BC_FSlider(x, 
-       y, 
-       0, 
-       w, 
-       w,
-       0.0, 
-       1.0, 
-       client->config.max)
-{
-       this->client = client;
-       this->gui = gui;
-       set_precision(0.01);
-}
-
-int MaxSlider::handle_event()
-{
-       client->config.max = get_value();
-       gui->max_text->update(client->config.max);
-       gui->update_histogram();
-       client->send_configure_change();
-       return 1;
-}
-
-MaxText::MaxText(GammaMain *client,
-       GammaWindow *gui,
-       int x,
-       int y,
-       int w)
- : BC_TextBox(x, y, w, 1, client->config.max)
-{
-       this->client = client;
-       this->gui = gui;
-}
-
-int MaxText::handle_event()
-{
-       client->config.max = atof(get_text());
-       gui->max_slider->update(client->config.max);
-       client->send_configure_change();
-       return 1;
-}
-
-GammaSlider::GammaSlider(GammaMain *client, 
-       GammaWindow *gui, 
-       int x, 
-       int y,
-       int w)
- : BC_FSlider(x, 
-       y, 
-       0, 
-       w, 
-       w,
-       0.0, 
-       1.0, 
-       client->config.gamma)
-{
-       this->client = client;
-       this->gui = gui;
-       set_precision(0.01);
-}
-
-int GammaSlider::handle_event()
-{
-       client->config.gamma = get_value();
-       gui->gamma_text->update(client->config.gamma);
-       gui->update_histogram();
-       client->send_configure_change();
-       return 1;
-}
-
-GammaText::GammaText(GammaMain *client,
-       GammaWindow *gui,
-       int x,
-       int y,
-       int w)
- : BC_TextBox(x, y, w, 1, client->config.gamma)
-{
-       this->client = client;
-       this->gui = gui;
-}
-
-int GammaText::handle_event()
-{
-       client->config.gamma = atof(get_text());
-       gui->gamma_slider->update(client->config.gamma);
-       client->send_configure_change();
-       return 1;
-}
-
-GammaAuto::GammaAuto(GammaMain *client, int x, int y)
- : BC_CheckBox(x, 
-       y, 
-       client->config.automatic, 
-       _("Automatic"))
-{
-       this->plugin = client;
-}
-
-int GammaAuto::handle_event()
-{
-       plugin->config.automatic = get_value();
-       plugin->send_configure_change();
-       return 1;
-}
-
-
-GammaPlot::GammaPlot(GammaMain *plugin, int x, int y)
- : BC_CheckBox(x, y, plugin->config.plot, _("Plot histogram"))
-{
-       this->plugin = plugin;
-}
-int GammaPlot::handle_event()
-{
-       plugin->config.plot = get_value();
-       plugin->send_configure_change();
-       return 1;
-}
-
-
-GammaColorPicker::GammaColorPicker(GammaMain *plugin, 
-       GammaWindow *gui, 
-       int x, 
-       int y)
- : BC_GenericButton(x, y, _("Use Color Picker"))
-{
-       this->plugin = plugin;
-       this->gui = gui;
-}
-
-int GammaColorPicker::handle_event()
-{
-// Get colorpicker value
-       float red = plugin->get_red();
-       float green = plugin->get_green();
-       float blue = plugin->get_blue();
-// Get maximum value
-       plugin->config.max = MAX(red, green);
-       plugin->config.max = MAX(plugin->config.max, blue);
-       gui->max_text->update(plugin->config.max);
-       gui->max_slider->update(plugin->config.max);
-       plugin->send_configure_change();
-       return 1;       
-}
-
-