~centralelyon2010/inkscape/imagelinks2

« back to all changes in this revision

Viewing changes to src/widgets/sp-color-gtkselector.cpp

  • Committer: mental
  • Date: 2006-01-16 02:36:01 UTC
  • Revision ID: mental@users.sourceforge.net-20060116023601-wkr0h7edl5veyudq
moving trunk for module inkscape

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifdef HAVE_CONFIG_H
 
2
# include "config.h"
 
3
#endif
 
4
#include <glibmm/i18n.h>
 
5
#include "sp-color-gtkselector.h"
 
6
 
 
7
 
 
8
static void sp_color_gtkselector_class_init (SPColorGtkselectorClass *klass);
 
9
static void sp_color_gtkselector_init (SPColorGtkselector *csel);
 
10
static void sp_color_gtkselector_destroy (GtkObject *object);
 
11
 
 
12
static void sp_color_gtkselector_show_all (GtkWidget *widget);
 
13
static void sp_color_gtkselector_hide_all (GtkWidget *widget);
 
14
 
 
15
 
 
16
static SPColorSelectorClass *parent_class;
 
17
 
 
18
#define XPAD 4
 
19
#define YPAD 1
 
20
 
 
21
GType
 
22
sp_color_gtkselector_get_type (void)
 
23
{
 
24
        static GType type = 0;
 
25
        if (!type) {
 
26
                static const GTypeInfo info = {
 
27
                        sizeof (SPColorGtkselectorClass),
 
28
                        NULL, /* base_init */
 
29
                        NULL, /* base_finalize */
 
30
                        (GClassInitFunc) sp_color_gtkselector_class_init,
 
31
                        NULL, /* class_finalize */
 
32
                        NULL, /* class_data */
 
33
                        sizeof (SPColorGtkselector),
 
34
                        0,        /* n_preallocs */
 
35
                        (GInstanceInitFunc) sp_color_gtkselector_init,
 
36
                        NULL,
 
37
                };
 
38
 
 
39
                type = g_type_register_static (SP_TYPE_COLOR_SELECTOR,
 
40
                                                                           "SPColorGtkselector",
 
41
                                                                           &info,
 
42
                                                                           static_cast< GTypeFlags > (0) );
 
43
        }
 
44
        return type;
 
45
}
 
46
 
 
47
static void
 
48
sp_color_gtkselector_class_init (SPColorGtkselectorClass *klass)
 
49
{
 
50
        static const gchar* nameset[] = {N_("System"), 0};
 
51
        GtkObjectClass *object_class;
 
52
        GtkWidgetClass *widget_class;
 
53
        SPColorSelectorClass *selector_class;
 
54
 
 
55
        object_class = (GtkObjectClass *) klass;
 
56
        widget_class = (GtkWidgetClass *) klass;
 
57
        selector_class = SP_COLOR_SELECTOR_CLASS (klass);
 
58
 
 
59
        parent_class = SP_COLOR_SELECTOR_CLASS (g_type_class_peek_parent (klass));
 
60
 
 
61
        selector_class->name = nameset;
 
62
        selector_class->submode_count = 1;
 
63
 
 
64
        object_class->destroy = sp_color_gtkselector_destroy;
 
65
 
 
66
        widget_class->show_all = sp_color_gtkselector_show_all;
 
67
        widget_class->hide_all = sp_color_gtkselector_hide_all;
 
68
}
 
69
 
 
70
void sp_color_gtkselector_init (SPColorGtkselector *csel)
 
71
{
 
72
    SP_COLOR_SELECTOR(csel)->base = new ColorGtkselector( SP_COLOR_SELECTOR(csel) );
 
73
 
 
74
    if ( SP_COLOR_SELECTOR(csel)->base )
 
75
    {
 
76
        SP_COLOR_SELECTOR(csel)->base->init();
 
77
    }
 
78
}
 
79
 
 
80
void ColorGtkselector::init()
 
81
{
 
82
        GtkWidget *gtksel;
 
83
 
 
84
        gtksel = gtk_color_selection_new();
 
85
        gtk_widget_show (gtksel);
 
86
        _gtkThing = GTK_COLOR_SELECTION (gtksel);
 
87
        gtk_box_pack_start (GTK_BOX (_csel), gtksel, TRUE, TRUE, 0);
 
88
 
 
89
        _sigId = g_signal_connect( GTK_OBJECT(gtksel), "color-changed", GTK_SIGNAL_FUNC( _gtkChanged ), _csel);
 
90
}
 
91
 
 
92
static void
 
93
sp_color_gtkselector_destroy (GtkObject *object)
 
94
{
 
95
        if (((GtkObjectClass *) (parent_class))->destroy)
 
96
                (* ((GtkObjectClass *) (parent_class))->destroy) (object);
 
97
}
 
98
 
 
99
static void
 
100
sp_color_gtkselector_show_all (GtkWidget *widget)
 
101
{
 
102
        gtk_widget_show (widget);
 
103
}
 
104
 
 
105
static void
 
106
sp_color_gtkselector_hide_all (GtkWidget *widget)
 
107
{
 
108
        gtk_widget_hide (widget);
 
109
}
 
110
 
 
111
GtkWidget *
 
112
sp_color_gtkselector_new (GType, SPColorSpaceType colorspace)
 
113
{
 
114
        SPColorGtkselector *csel;
 
115
 
 
116
        csel = (SPColorGtkselector*)gtk_type_new (SP_TYPE_COLOR_GTKSELECTOR);
 
117
 
 
118
        return GTK_WIDGET (csel);
 
119
}
 
120
 
 
121
ColorGtkselector::ColorGtkselector( SPColorSelector* csel )
 
122
    : ColorSelector( csel ),
 
123
      _gtkThing(0)
 
124
{
 
125
}
 
126
 
 
127
ColorGtkselector::~ColorGtkselector()
 
128
{
 
129
}
 
130
 
 
131
void ColorGtkselector::_colorChanged( const SPColor& color, gfloat alpha )
 
132
{
 
133
    GdkColor gcolor;
 
134
    float rgb[3];
 
135
    g_return_if_fail (_csel != NULL);
 
136
    g_return_if_fail (SP_IS_COLOR_GTKSELECTOR (_csel));
 
137
    g_return_if_fail( ( 0.0 <= alpha ) && ( alpha <= 1.0 ) );
 
138
 
 
139
    sp_color_copy (&_color, &color);
 
140
    _alpha = alpha;
 
141
 
 
142
    sp_color_get_rgb_floatv( &color, rgb );
 
143
    gcolor.pixel = 0;
 
144
    gcolor.red   = static_cast< guint16 > (rgb[0] * 65535);
 
145
    gcolor.green = static_cast< guint16 > (rgb[1] * 65535);
 
146
    gcolor.blue  = static_cast< guint16 > (rgb[2] * 65535);
 
147
 
 
148
//     g_message( "*****  _colorChanged %04x %04x %04x", gcolor.red, gcolor.green, gcolor.blue );
 
149
    g_signal_handler_block( _gtkThing, _sigId );
 
150
    gtk_color_selection_set_current_alpha (_gtkThing, (guint16)(65535 * alpha));
 
151
    gtk_color_selection_set_current_color (_gtkThing, &gcolor);
 
152
    g_signal_handler_unblock(_gtkThing, _sigId );
 
153
}
 
154
 
 
155
void ColorGtkselector::_gtkChanged( GtkColorSelection *colorselection, SPColorGtkselector *gtksel )
 
156
{
 
157
    ColorGtkselector* gtkInst = (ColorGtkselector*)(SP_COLOR_SELECTOR(gtksel)->base);
 
158
    SPColor ourColor;
 
159
    GdkColor color;
 
160
    guint16 alpha;
 
161
 
 
162
    gtk_color_selection_get_current_color (colorselection, &color);
 
163
    alpha = gtk_color_selection_get_current_alpha (colorselection);
 
164
 
 
165
    sp_color_set_rgb_float (&ourColor, (color.red / 65535.0), (color.green / 65535.0), (color.blue / 65535.0));
 
166
 
 
167
//     g_message( "*****  _gtkChanged   %04x %04x %04x", color.red, color.green, color.blue );
 
168
 
 
169
    gtkInst->_updateInternals( ourColor, static_cast< gfloat > (alpha) / 65535.0, gtk_color_selection_is_adjusting(colorselection) );
 
170
}