summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomasz Boczkowski <penginsbacon@gmail.com>2015-05-17 11:33:31 +0000
committerTomasz Boczkowski <penginsbacon@gmail.com>2015-05-17 11:33:31 +0000
commit279bb517e59386cc3a5b299cafb78c0eb81cbedd (patch)
treeca41cf3d44100d7fb589f35c1ea2c267fcf6ba09 /src
parentfixed: color scales - extra row in RGB mode (diff)
downloadinkscape-279bb517e59386cc3a5b299cafb78c0eb81cbedd.tar.gz
inkscape-279bb517e59386cc3a5b299cafb78c0eb81cbedd.zip
fixed: color scales - updating color when switched from undefined
(bzr r14059.1.29)
Diffstat (limited to 'src')
-rw-r--r--src/ui/selected-color.cpp13
-rw-r--r--src/ui/widget/color-icc-selector.cpp19
-rw-r--r--src/ui/widget/color-icc-selector.h2
-rw-r--r--src/ui/widget/color-scales.cpp69
-rw-r--r--src/ui/widget/color-scales.h2
-rw-r--r--src/ui/widget/color-wheel-selector.cpp57
-rw-r--r--src/ui/widget/color-wheel-selector.h4
7 files changed, 107 insertions, 59 deletions
diff --git a/src/ui/selected-color.cpp b/src/ui/selected-color.cpp
index 6573129d3..8c37ee7e0 100644
--- a/src/ui/selected-color.cpp
+++ b/src/ui/selected-color.cpp
@@ -75,7 +75,7 @@ guint32 SelectedColor::value() const
void SelectedColor::setColorAlpha(SPColor const &color, gfloat alpha, bool emit_signal)
{
#ifdef DUMP_CHANGE_INFO
- g_message("SelectedColor::setColorAlpha( this=%p, %f, %f, %f, %s, %f, %s) in %s", this, color.v.c[0], color.v.c[1], color.v.c[2], (color.icc?color.icc->colorProfile.c_str():"<null>"), alpha, (emit?"YES":"no"), FOO_NAME(_csel));
+ g_message("SelectedColor::setColorAlpha( this=%p, %f, %f, %f, %s, %f, %s)", this, color.v.c[0], color.v.c[1], color.v.c[2], (color.icc?color.icc->colorProfile.c_str():"<null>"), alpha, (emit_signal?"YES":"no"));
#endif
g_return_if_fail( ( 0.0 <= alpha ) && ( alpha <= 1.0 ) );
@@ -84,11 +84,10 @@ void SelectedColor::setColorAlpha(SPColor const &color, gfloat alpha, bool emit_
}
#ifdef DUMP_CHANGE_INFO
- g_message("---- SelectedColor::setColorAlpha virgin:%s !close:%s alpha is:%s in %s",
+ g_message("---- SelectedColor::setColorAlpha virgin:%s !close:%s alpha is:%s",
(_virgin?"YES":"no"),
- (!color.isClose( _color, _epsilon )?"YES":"no"),
- ((fabs((_alpha) - (alpha)) >= _epsilon )?"YES":"no"),
- FOO_NAME(_csel)
+ (!color.isClose( _color, _EPSILON )?"YES":"no"),
+ ((fabs((_alpha) - (alpha)) >= _EPSILON )?"YES":"no")
);
#endif
@@ -113,8 +112,8 @@ void SelectedColor::setColorAlpha(SPColor const &color, gfloat alpha, bool emit_
#ifdef DUMP_CHANGE_INFO
} else {
- g_message("++++ SelectedColor::setColorAlpha color:%08x ==> _color:%08X isClose:%s in %s", color.toRGBA32(alpha), _color.toRGBA32(_alpha),
- (color.isClose( _color, _epsilon )?"YES":"no"), FOO_NAME(_csel));
+ g_message("++++ SelectedColor::setColorAlpha color:%08x ==> _color:%08X isClose:%s", color.toRGBA32(alpha), _color.toRGBA32(_alpha),
+ (color.isClose( _color, _EPSILON )?"YES":"no"));
#endif
}
}
diff --git a/src/ui/widget/color-icc-selector.cpp b/src/ui/widget/color-icc-selector.cpp
index a7e75bfc5..2c00ba081 100644
--- a/src/ui/widget/color-icc-selector.cpp
+++ b/src/ui/widget/color-icc-selector.cpp
@@ -366,8 +366,6 @@ void ColorICCSelector::init()
GtkWidget *t = GTK_WIDGET(gobj());
- gtk_widget_show(t);
-
_impl->_compUI.clear();
// Create components
@@ -523,6 +521,8 @@ void ColorICCSelector::init()
_impl->_slider->signal_grabbed.connect(sigc::mem_fun(_impl, &ColorICCSelectorImpl::_sliderGrabbed));
_impl->_slider->signal_released.connect(sigc::mem_fun(_impl, &ColorICCSelectorImpl::_sliderReleased));
_impl->_slider->signal_value_changed.connect(sigc::mem_fun(_impl, &ColorICCSelectorImpl::_sliderChanged));
+
+ gtk_widget_show(t);
}
void ColorICCSelectorImpl::_fixupHit(GtkWidget * /*src*/, gpointer data)
@@ -696,6 +696,16 @@ void ColorICCSelectorImpl::_profilesChanged(std::string const &name)
void ColorICCSelectorImpl::_profilesChanged(std::string const & /*name*/) {}
#endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
+void ColorICCSelector::on_show()
+{
+#if GTK_CHECK_VERSION(3, 0, 0)
+ Gtk::Grid::on_show();
+#else
+ Gtk::Table::on_show();
+#endif
+ _colorChanged();
+}
+
// Helpers for setting color value
void ColorICCSelector::_colorChanged()
@@ -894,7 +904,10 @@ void ColorICCSelectorImpl::_updateSliders(gint ignore)
cmsHTRANSFORM trans = _prof->getTransfToSRGB8();
if (trans) {
cmsDoTransform(trans, scratch, _compUI[i]._map, 1024);
- _compUI[i]._slider->setMap(_compUI[i]._map);
+ if (_compUI[i]._slider)
+ {
+ _compUI[i]._slider->setMap(_compUI[i]._map);
+ }
}
}
}
diff --git a/src/ui/widget/color-icc-selector.h b/src/ui/widget/color-icc-selector.h
index 37201de3b..1bcb0a540 100644
--- a/src/ui/widget/color-icc-selector.h
+++ b/src/ui/widget/color-icc-selector.h
@@ -39,6 +39,8 @@ class ColorICCSelector
virtual void init();
protected:
+ void on_show();
+
virtual void _colorChanged();
void _recalcColor(gboolean changing);
diff --git a/src/ui/widget/color-scales.cpp b/src/ui/widget/color-scales.cpp
index b940acbc7..170f83887 100644
--- a/src/ui/widget/color-scales.cpp
+++ b/src/ui/widget/color-scales.cpp
@@ -205,34 +205,8 @@ void ColorScales::_recalcColor()
_color.setColorAlpha(color, alpha);
}
-/* Helpers for setting color value */
-gfloat ColorScales::getScaled(const GtkAdjustment *a)
-{
- gfloat val = gtk_adjustment_get_value(const_cast<GtkAdjustment *>(a)) /
- gtk_adjustment_get_upper(const_cast<GtkAdjustment *>(a));
- return val;
-}
-
-void ColorScales::setScaled(GtkAdjustment *a, gfloat v)
-{
- gfloat val = v * gtk_adjustment_get_upper(a);
- gtk_adjustment_set_value(a, val);
-}
-
-void ColorScales::_setRangeLimit(gdouble upper)
-{
- _rangeLimit = upper;
- for (gint i = 0; i < static_cast<gint>(G_N_ELEMENTS(_a)); i++) {
- gtk_adjustment_set_upper(_a[i], upper);
- gtk_adjustment_changed(_a[i]);
- }
-}
-
-void ColorScales::_onColorChanged()
+void ColorScales::_updateDisplay()
{
- if (!get_visible()) {
- return;
- }
#ifdef DUMP_CHANGE_INFO
g_message("ColorScales::_onColorChanged( this=%p, %f, %f, %f, %f)", this, _color.color().v.c[0],
_color.color().v.c[1], _color.color().v.c[2], _color.alpha());
@@ -273,6 +247,47 @@ void ColorScales::_onColorChanged()
_updating = FALSE;
}
+/* Helpers for setting color value */
+gfloat ColorScales::getScaled(const GtkAdjustment *a)
+{
+ gfloat val = gtk_adjustment_get_value(const_cast<GtkAdjustment *>(a)) /
+ gtk_adjustment_get_upper(const_cast<GtkAdjustment *>(a));
+ return val;
+}
+
+void ColorScales::setScaled(GtkAdjustment *a, gfloat v)
+{
+ gfloat val = v * gtk_adjustment_get_upper(a);
+ gtk_adjustment_set_value(a, val);
+}
+
+void ColorScales::_setRangeLimit(gdouble upper)
+{
+ _rangeLimit = upper;
+ for (gint i = 0; i < static_cast<gint>(G_N_ELEMENTS(_a)); i++) {
+ gtk_adjustment_set_upper(_a[i], upper);
+ gtk_adjustment_changed(_a[i]);
+ }
+}
+
+void ColorScales::_onColorChanged()
+{
+ if (!get_visible()) {
+ return;
+ }
+ _updateDisplay();
+}
+
+void ColorScales::on_show()
+{
+#if GTK_CHECK_VERSION(3, 0, 0)
+ Gtk::Grid::on_show();
+#else
+ Gtk::Table::on_show();
+#endif
+ _updateDisplay();
+}
+
void ColorScales::_getRgbaFloatv(gfloat *rgba)
{
g_return_if_fail(rgba != NULL);
diff --git a/src/ui/widget/color-scales.h b/src/ui/widget/color-scales.h
index 025f92e2d..aeacfbcc1 100644
--- a/src/ui/widget/color-scales.h
+++ b/src/ui/widget/color-scales.h
@@ -49,6 +49,7 @@ public:
protected:
void _onColorChanged();
+ void on_show();
static void _adjustmentAnyChanged(GtkAdjustment *adjustment, ColorScales *cs);
void _sliderAnyGrabbed();
@@ -61,6 +62,7 @@ protected:
guint32 _getRgba32();
void _updateSliders(guint channels);
void _recalcColor();
+ void _updateDisplay();
void _setRangeLimit(gdouble upper);
diff --git a/src/ui/widget/color-wheel-selector.cpp b/src/ui/widget/color-wheel-selector.cpp
index 8c6402d90..ed3400bb5 100644
--- a/src/ui/widget/color-wheel-selector.cpp
+++ b/src/ui/widget/color-wheel-selector.cpp
@@ -170,30 +170,19 @@ void ColorWheelSelector::_initUI()
g_signal_connect(G_OBJECT(_wheel), "changed", G_CALLBACK(_wheelChanged), this);
}
-void ColorWheelSelector::_colorChanged()
+void ColorWheelSelector::on_show()
{
-#ifdef DUMP_CHANGE_INFO
- g_message("ColorWheelSelector::_colorChanged( this=%p, %f, %f, %f, %f)", this, _color.color().v.c[0],
- _color.color().v.c[1], _color.color().v.c[2], alpha);
+#if GTK_CHECK_VERSION(3, 0, 0)
+ Gtk::Grid::on_show();
+#else
+ Gtk::Table::on_show();
#endif
+ _updateDisplay();
+}
- bool oldval = _updating;
- _updating = true;
- {
- float hsv[3] = { 0, 0, 0 };
- sp_color_rgb_to_hsv_floatv(hsv, _color.color().v.c[0], _color.color().v.c[1], _color.color().v.c[2]);
- gimp_color_wheel_set_color(GIMP_COLOR_WHEEL(_wheel), hsv[0], hsv[1], hsv[2]);
- }
-
- guint32 start = _color.color().toRGBA32(0x00);
- guint32 mid = _color.color().toRGBA32(0x7f);
- guint32 end = _color.color().toRGBA32(0xff);
-
- _slider->setColors(start, mid, end);
-
- ColorScales::setScaled(_alpha_adjustment->gobj(), _color.alpha());
-
- _updating = oldval;
+void ColorWheelSelector::_colorChanged()
+{
+ _updateDisplay();
}
void ColorWheelSelector::_adjustmentChanged()
@@ -264,6 +253,32 @@ void ColorWheelSelector::_wheelChanged(GimpColorWheel *wheel, ColorWheelSelector
wheelSelector->_color.setColor(color);
}
+void ColorWheelSelector::_updateDisplay()
+{
+#ifdef DUMP_CHANGE_INFO
+ g_message("ColorWheelSelector::_colorChanged( this=%p, %f, %f, %f, %f)", this, _color.color().v.c[0],
+ _color.color().v.c[1], _color.color().v.c[2], alpha);
+#endif
+
+ bool oldval = _updating;
+ _updating = true;
+ {
+ float hsv[3] = { 0, 0, 0 };
+ sp_color_rgb_to_hsv_floatv(hsv, _color.color().v.c[0], _color.color().v.c[1], _color.color().v.c[2]);
+ gimp_color_wheel_set_color(GIMP_COLOR_WHEEL(_wheel), hsv[0], hsv[1], hsv[2]);
+ }
+
+ guint32 start = _color.color().toRGBA32(0x00);
+ guint32 mid = _color.color().toRGBA32(0x7f);
+ guint32 end = _color.color().toRGBA32(0xff);
+
+ _slider->setColors(start, mid, end);
+
+ ColorScales::setScaled(_alpha_adjustment->gobj(), _color.alpha());
+
+ _updating = oldval;
+}
+
Gtk::Widget *ColorWheelSelectorFactory::createWidget(Inkscape::UI::SelectedColor &color) const
{
diff --git a/src/ui/widget/color-wheel-selector.h b/src/ui/widget/color-wheel-selector.h
index f97f70f6a..5711d417c 100644
--- a/src/ui/widget/color-wheel-selector.h
+++ b/src/ui/widget/color-wheel-selector.h
@@ -48,6 +48,8 @@ public:
protected:
void _initUI();
+ void on_show();
+
void _colorChanged();
void _adjustmentChanged();
void _sliderGrabbed();
@@ -55,7 +57,7 @@ protected:
void _sliderChanged();
static void _wheelChanged(GimpColorWheel *wheel, ColorWheelSelector *cs);
- void _recalcColor(gboolean changing);
+ void _updateDisplay();
SelectedColor &_color;
bool _updating;