diff options
| author | Tomasz Boczkowski <penginsbacon@gmail.com> | 2015-05-17 11:33:31 +0000 |
|---|---|---|
| committer | Tomasz Boczkowski <penginsbacon@gmail.com> | 2015-05-17 11:33:31 +0000 |
| commit | 279bb517e59386cc3a5b299cafb78c0eb81cbedd (patch) | |
| tree | ca41cf3d44100d7fb589f35c1ea2c267fcf6ba09 /src | |
| parent | fixed: color scales - extra row in RGB mode (diff) | |
| download | inkscape-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.cpp | 13 | ||||
| -rw-r--r-- | src/ui/widget/color-icc-selector.cpp | 19 | ||||
| -rw-r--r-- | src/ui/widget/color-icc-selector.h | 2 | ||||
| -rw-r--r-- | src/ui/widget/color-scales.cpp | 69 | ||||
| -rw-r--r-- | src/ui/widget/color-scales.h | 2 | ||||
| -rw-r--r-- | src/ui/widget/color-wheel-selector.cpp | 57 | ||||
| -rw-r--r-- | src/ui/widget/color-wheel-selector.h | 4 |
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; |
