1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 | #include <ctk/ctk.h>
static void
color_changed (GObject *o,
GParamSpec *pspect G_GNUC_UNUSED,
gpointer data G_GNUC_UNUSED)
{
CdkRGBA color;
ctk_color_chooser_get_rgba (CTK_COLOR_CHOOSER (o), &color);
g_print ("color changed: %g %g %g %g\n",
color.red, color.green, color.blue, color.alpha);
}
static void
dialog_response (CtkDialog *dialog, gint response)
{
CdkRGBA color;
switch (response)
{
case CTK_RESPONSE_OK:
ctk_color_chooser_get_rgba (CTK_COLOR_CHOOSER (dialog), &color);
g_print ("color accepted: %g %g %g %g\n",
color.red, color.green, color.blue, color.alpha);
break;
default:
g_print ("canceled\n");
break;
}
ctk_main_quit ();
}
int
main (int argc, char *argv[])
{
CtkWidget *dialog;
gint i;<--- Shadowed declaration
ctk_init (NULL, NULL);
dialog = ctk_color_chooser_dialog_new ("Select a color", NULL);
for (i = 1; i < argc; i++)
{
if (g_strcmp0 (argv[i], "--no-alpha") == 0)
{
g_print ("turning alpha off\n");
ctk_color_chooser_set_use_alpha (CTK_COLOR_CHOOSER (dialog), FALSE);
}
else if (g_strcmp0 (argv[i], "--edit") == 0)
{
g_print ("starting in edit mode\n");
g_object_set (dialog, "show-editor", TRUE, NULL);
}
else if (g_strcmp0 (argv[i], "--palette") == 0)
{
const gchar *c[9] = { "red", "maroon", "yellow", "green", "blue", "magenta", "DarkOliveGreen4", "khaki2", "thistle1" };
CdkRGBA color;
CdkRGBA colors[9*9];
gint i,j;<--- Shadow variable
gdouble f[5] = { 0.2, 0.35, 0.5, 0.65, 0.8 };<--- Variable 'f' can be declared as const array
g_print ("setting custom palette\n");
for (i = 0; i < 9; i++)
{
cdk_rgba_parse (&color, c[i]);
for (j = 0; j < 5; j++)
{
colors[i*9 + j].red = f[j]*color.red;
colors[i*9 + j].green = f[j]*color.green;
colors[i*9 + j].blue = f[j]*color.blue;
colors[i*9 + j].alpha = 1;
}
for (j = 5; j < 9; j++)
{
colors[i*9 + j].red = f[9-j]*color.red + (1-f[9-j]);
colors[i*9 + j].green = f[9-j]*color.green + (1-f[9-j]);
colors[i*9 + j].blue = f[9-j]*color.blue + (1-f[9-j]);
colors[i*9 + j].alpha = 1;
}
}
ctk_color_chooser_add_palette (CTK_COLOR_CHOOSER (dialog),
CTK_ORIENTATION_VERTICAL,
9, 9*9,
colors);
}
else if (g_strcmp0 (argv[i], "--no-palette") == 0)
{
ctk_color_chooser_add_palette (CTK_COLOR_CHOOSER (dialog),
CTK_ORIENTATION_VERTICAL, 0, 0, NULL);
}
}
g_signal_connect (dialog, "notify::color", G_CALLBACK (color_changed), NULL);
g_signal_connect (dialog, "response", G_CALLBACK (dialog_response), NULL);
ctk_widget_show_all (dialog);
ctk_main ();
return 0;
}
|