color-scales.cpp revision 66aef0bd4f8eae433e11409fffce072a4578577d
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix * bulia byak <buliabyak@users.sf.net>
b320a8d186114a5122ddc3afbe95110eb6cb10cecilixnamespace UI {
79d46cc367c4181803d9a7a327b163643f23e8a7cilixconst gchar *ColorScales::SUBMODE_NAMES[] = { N_("None"), N_("RGB"), N_("HSL"), N_("CMYK") };
b320a8d186114a5122ddc3afbe95110eb6cb10cecilixColorScales::ColorScales(SelectedColor &color, SPColorScalesMode mode)
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix _color.signal_changed.connect(sigc::mem_fun(this, &ColorScales::_onColorChanged));
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix _color.signal_dragged.connect(sigc::mem_fun(this, &ColorScales::_onColorChanged));
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix /* Create components */
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix for (i = 0; i < static_cast<gint>(G_N_ELEMENTS(_a)); i++) {
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix /* Label */
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix gtk_table_attach(GTK_TABLE(t), _l[i], 0, 1, i, i + 1, GTK_FILL, GTK_FILL, XPAD, YPAD);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix /* Adjustment */
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix _a[i] = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, _rangeLimit, 1.0, 10.0, 10.0));
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix /* Slider */
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix _s[i] = Gtk::manage(new Inkscape::UI::Widget::ColorSlider(Glib::wrap(_a[i], true)));
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix gtk_grid_attach(GTK_GRID(t), _s[i]->gobj(), 1, i, 1, 1);
5b20351508dc029f37f23fb7add6d0b43bf47f20johanengelen gtk_table_attach(GTK_TABLE(t), _s[i]->gobj(), 1, 2, i, i + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix /* Spinbutton */
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix _b[i] = gtk_spin_button_new(GTK_ADJUSTMENT(_a[i]), 1.0, 0);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix gtk_label_set_mnemonic_widget(GTK_LABEL(_l[i]), _b[i]);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix gtk_table_attach(GTK_TABLE(t), _b[i], 2, 3, i, i + 1, (GtkAttachOptions)0, (GtkAttachOptions)0, XPAD, YPAD);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix /* Attach channel value to adjustment */
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix g_object_set_data(G_OBJECT(_a[i]), "channel", GINT_TO_POINTER(i));
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix /* Signals */
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix g_signal_connect(G_OBJECT(_a[i]), "value_changed", G_CALLBACK(_adjustmentAnyChanged), this);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix _s[i]->signal_grabbed.connect(sigc::mem_fun(this, &ColorScales::_sliderAnyGrabbed));
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix _s[i]->signal_released.connect(sigc::mem_fun(this, &ColorScales::_sliderAnyReleased));
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix _s[i]->signal_value_changed.connect(sigc::mem_fun(this, &ColorScales::_sliderAnyChanged));
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix /* Initial mode is none, so it works */
switch (_mode) {
case SP_COLOR_SCALES_MODE_RGB:
case SP_COLOR_SCALES_MODE_HSV:
_getRgbaFloatv(c);
case SP_COLOR_SCALES_MODE_CMYK: {
_getCmykaFloatv(c);
return val;
if (!get_visible()) {
#ifdef DUMP_CHANGE_INFO
switch (_mode) {
case SP_COLOR_SCALES_MODE_RGB:
case SP_COLOR_SCALES_MODE_HSV:
switch (_mode) {
case SP_COLOR_SCALES_MODE_RGB:
case SP_COLOR_SCALES_MODE_HSV:
sp_color_cmyk_to_rgb_floatv(rgba, getScaled(_a[0]), getScaled(_a[1]), getScaled(_a[2]), getScaled(_a[3]));
switch (_mode) {
case SP_COLOR_SCALES_MODE_RGB:
case SP_COLOR_SCALES_MODE_HSV:
_getRgbaFloatv(c);
return rgba;
switch (mode) {
case SP_COLOR_SCALES_MODE_RGB:
case SP_COLOR_SCALES_MODE_HSV:
if (_updating) {
if (!_dragging) {
if (_updating) {
if (_dragging) {
if (_updating) {
_recalcColor();
#ifdef SPCS_PREVIEW
switch (_mode) {
case SP_COLOR_SCALES_MODE_RGB:
case SP_COLOR_SCALES_MODE_HSV:
if (!_updating) {
_recalcColor();
#ifdef SPCS_PREVIEW
if (!map) {
gchar *p;
gint h;
p = map;
return map;