/****************************************************************************
** ui.h extension file, included from the uic-generated form implementation.
**
** If you wish to add, delete or rename functions or slots use
** TQt Designer which will update this file, preserving your code. Create an
** init() function in place of a constructor, and a destroy() function in
** place of a destructor.
*****************************************************************************/
SQ_ImageBCG * SQ_ImageBCG::m_inst = 0;
void SQ_ImageBCG::init()
{
m_inst = this;
TQPixmap p = TQPixmap::fromMimeSource(locate("data", "images/imageedit/reset_value.png"));
sQ_LabelB->setSingle(true);
sQ_LabelC->setSingle(true);
sQ_LabelG->setSingle(true);
sQ_LabelB->setText(tr2i18n("Brightness"));
sQ_LabelC->setText(tr2i18n("Contrast"));
sQ_LabelG->setText(tr2i18n("Gamma"));
sQ_LabelRed->setText(tr2i18n("Red"), tr2i18n("Cyan"));
sQ_LabelGreen->setText(tr2i18n("Green"), tr2i18n("Magenta"));
sQ_LabelBlue->setText(tr2i18n("Blue"), tr2i18n("Yellow"));
pushResetB->setPixmap(p);
pushResetC->setPixmap(p);
pushResetG->setPixmap(p);
pushResetRed->setPixmap(p);
pushResetGreen->setPixmap(p);
pushResetBlue->setPixmap(p);
strings.append(TQString("") + tr2i18n("Brightness") + ", " + tr2i18n("Contrast") + ", " + tr2i18n("Gamma") + "");
strings.append(TQString("") + tr2i18n("Red") + ", " + tr2i18n("Green") + ", " + tr2i18n("Blue") + "");
id = 0;
widgetStackParams->raiseWidget(id);
text->setText(strings[id]);
TQPixmap tool1 = TQPixmap::fromMimeSource(locate("data", "images/imageedit/resize_toolbutton.png"));
TQPixmap tool2 = TQPixmap::fromMimeSource(locate("data", "images/imageedit/resize_toolbutton2.png"));
push1->setPixmap(tool1);
push2->setPixmap(tool2);
spinG->setRange(0, 6.0, 0.01, 2);
spinG->setValue(1.0);
connect(spinG, TQT_SIGNAL(valueChanged(int)), spinG, TQT_SLOT(slotValueChanged(int)));
}
void SQ_ImageBCG::slotResetG()
{
sliderG->setValue(100);
}
void SQ_ImageBCG::slotResetC()
{
sliderC->setValue(0);
}
void SQ_ImageBCG::slotResetB()
{
sliderB->setValue(0);
}
void SQ_ImageBCG::slotResetRed()
{
sliderRed->setValue(0);
}
void SQ_ImageBCG::slotResetGreen()
{
sliderGreen->setValue(0);
}
void SQ_ImageBCG::slotResetBlue()
{
sliderBlue->setValue(0);
}
void SQ_ImageBCG::slotStartBCG()
{
SQ_ImageBCGOptions opt;
opt.b = sliderB->value();
opt.c = sliderC->value();
opt.g = sliderG->value();
opt.red = sliderRed->value();
opt.green = sliderGreen->value();
opt.blue = sliderBlue->value();
emit bcg(&opt);
}
int SQ_ImageBCG::RGB2Y(int r, int g, int b)
{
return (int)((double)r * 0.299 + (double)g * 0.587 + (double)b * 0.114);
}
void SQ_ImageBCG::slotBChanged(int v)
{
spinB->blockSignals(true);
sliderB->blockSignals(true);
spinB->setValue(v);
sliderB->setValue(v);
spinB->blockSignals(false);
sliderB->blockSignals(false);
changeImage(v, sliderC->value(), sliderG->value(), sliderRed->value(), sliderGreen->value(), sliderBlue->value());
}
void SQ_ImageBCG::slotCChanged(int v)
{
spinC->blockSignals(true);
sliderC->blockSignals(true);
spinC->setValue(v);
sliderC->setValue(v);
spinC->blockSignals(false);
sliderC->blockSignals(false);
changeImage(sliderB->value(), v, sliderG->value(), sliderRed->value(), sliderGreen->value(), sliderBlue->value());
}
void SQ_ImageBCG::slotRedChanged(int v)
{
spinRed->blockSignals(true);
sliderRed->blockSignals(true);
spinRed->setValue(v);
sliderRed->setValue(v);
spinRed->blockSignals(false);
sliderRed->blockSignals(false);
changeImage(sliderB->value(), sliderC->value(), sliderG->value(), v, sliderGreen->value(), sliderBlue->value());
}
void SQ_ImageBCG::slotGreenChanged(int v)
{
spinGreen->blockSignals(true);
sliderGreen->blockSignals(true);
spinGreen->setValue(v);
sliderGreen->setValue(v);
spinGreen->blockSignals(false);
sliderGreen->blockSignals(false);
changeImage(sliderB->value(), sliderC->value(), sliderG->value(), sliderRed->value(), v, sliderBlue->value());
}
void SQ_ImageBCG::slotBlueChanged(int v)
{
spinBlue->blockSignals(true);
sliderBlue->blockSignals(true);
spinBlue->setValue(v);
sliderBlue->setValue(v);
spinBlue->blockSignals(false);
sliderBlue->blockSignals(false);
changeImage(sliderB->value(), sliderC->value(), sliderG->value(), sliderRed->value(), sliderGreen->value(), v);
}
void SQ_ImageBCG::slotGChanged(int v)
{
double g = (double)v / 100.0;
spinG->blockSignals(true);
spinG->setValue(g);
spinG->blockSignals(false);
changeImage(sliderB->value(), sliderC->value(), v, sliderRed->value(), sliderGreen->value(), sliderBlue->value());
}
void SQ_ImageBCG::slotGSpinChanged(double v)
{
int val = (int)(v * 100.0);
sliderG->blockSignals(true);
sliderG->setValue(val);
sliderG->blockSignals(false);
changeImage(sliderB->value(), sliderC->value(), val, sliderRed->value(), sliderGreen->value(), sliderBlue->value());
}
void SQ_ImageBCG::assignNewImage(const TQImage &im)
{
TQPixmap p;
p.convertFromImage(im);
pixmap1->setPixmap(p);
}
void SQ_ImageBCG::changeImage(int b, int c, int g1, int red, int green, int blue)
{
if(sample.isNull() || sample_saved.isNull())
return;
double g = (double)g1 / 100.0;
sample = sample_saved.copy();
// change brightness
fmt_filters::brightness(fmt_filters::image(sample.bits(), sample.width(), sample.height()), b);
//change contrast
if(c)
fmt_filters::contrast(fmt_filters::image(sample.bits(), sample.width(), sample.height()), c);
// change gamma
if(g1 != 100)
fmt_filters::gamma(fmt_filters::image(sample.bits(), sample.width(), sample.height()), g);
if(red || green || blue)
fmt_filters::colorize(fmt_filters::image(sample.bits(), sample.width(), sample.height()), blue, green, red);
assignNewImage(sample);
}
void SQ_ImageBCG::slotPush()
{
if(!id) id = 1;
else id = 0;
widgetStackParams->raiseWidget(id);
text->setText(strings[id]);
}
void SQ_ImageBCG::setPreviewImage(const TQImage &im)
{
if(im.isNull()) return;
sample = im.copy();
sample_saved = sample.copy();
TQPixmap p;
p.convertFromImage(sample_saved);
pixmap->setPixmap(p);
pixmap1->setPixmap(p);
changeImage(sliderB->value(), sliderC->value(), sliderG->value(), sliderRed->value(), sliderGreen->value(), sliderBlue->value());
}
SQ_ImageBCG* SQ_ImageBCG::instance()
{
return m_inst;
}