Graphics demos: improve Misc and Colormap
[scilab.git] / scilab / modules / graphics / demos / colormap / colormap.dem.sce
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2008 - INRIA - Pierre MARECHAL
3 // Copyright (C) 2010 - DIGITEO - Allan CORNET
4 // Copyright (C) 2016 - Scilab Enterprises - Paul Bignier
5 //
6 // This file is released under the 3-clause BSD license. See COPYING-BSD.
7
8 prot = funcprot();
9 funcprot(0);
10
11 function demo_colormap()
12
13     // Parameters
14     // =========================================================================
15
16     frame_w              = 200;     // Frame width
17     frame_h              = 330;     // Frame height
18
19     plot_w               = 600;     // Plot width
20     plot_h               = 550;     // Plot height
21
22     margin_x             = 15;      // Horizontal margin between each elements
23     margin_y             = 15;      // Vertical margin between each elements
24
25     defaultfont          = "arial"; // Default Font
26     text_font_size       = 12;      // Text font size
27
28     // Figure creation
29     // =========================================================================
30
31     axes_w       = 3*margin_x + frame_w + plot_w;    // axes width
32     axes_h       = 2*margin_y + max(frame_h,plot_h); // axes height
33
34     fig_handle = figure( ...
35     "infobar_visible", "off", ...
36     "toolbar_visible", "off", ...
37     "toolbar", "none", ...
38     "default_axes", "on", ...
39     "layout", "gridbag", ...
40     "visible", "off", ...
41     "background", -2, ...
42     "figure_position", [0 0], ...
43     "axes_size", [axes_w axes_h], ...
44     "figure_name", "Colormap");
45
46     c = createConstraints("gridbag", [2 1 1 1], [1 1], "vertical", "right");
47     // Create an empty panel on the right to occupy the 3/4 of the screen (figure plot)
48     empty_frame = uicontrol(fig_handle, "style", "frame","constraints", c);
49
50     c = createConstraints("gridbag", [1 1 1 5], [0.05 1], "both", "left", [0 0], [150 0]);
51     u = uicontrol(fig_handle, ...
52     "style", "frame", ...
53     "backgroundcolor", [1 1 1], ...
54     "layout", "border", ...
55     "constraints", c);
56
57     // Add top and bottom empty panels to pad the upcoming colormap panel
58     c = createConstraints("border", "top", [0 80]);
59     top = uicontrol(u, "style", "frame", "backgroundcolor", [1 1 1], "constraints", c);
60     c = createConstraints("border", "bottom", [0 80]);
61     bottom = uicontrol(u, "style", "frame", "backgroundcolor", [1 1 1], "constraints", c);
62
63     // Border for the colormap frame
64     b_f_colormap = createBorderFont("", 18);
65     b_l_colormap = createBorder("line", "navy", 2);
66     b_colormap   = createBorder("titled", b_l_colormap, "Colormap", "center", "top", b_f_colormap, "navy");
67
68     colormap_frame = uicontrol(u, ...
69     "style", "frame", ...
70     "backgroundcolor", [1 1 1], ...
71     "border", b_colormap, ...
72     "layout", "gridbag", ...
73     "tag", "colormap_frame");
74
75     demo_viewCode("colormap.dem.sce");
76
77     fig_handle.color_map = jetcolormap(128);
78
79     // Radio buttons
80     // =========================================================================
81
82     // Radio buttons : Jet
83
84     c = createConstraints("gridbag", [1 1 1 1], [1 1], "both", "upper");
85     square_radio = uicontrol( ...
86     "parent"             , colormap_frame, ...
87     "style"              , "radiobutton", ...
88     "string"             , "Jet", ...
89     "fontname"           , defaultfont, ...
90     "fontunits"          , "points", ...
91     "fontsize"           , text_font_size, ...
92     "value"              , 1, ...
93     "background"         , [1 1 1], ...
94     "callback"           , "demo_update_colormap", ...
95     "constraints"        , c, ...
96     "tag"                , "jetcolormap_radio");
97
98     // Radio buttons : Parula
99
100     c = createConstraints("gridbag", [1 2 1 1], [1 1], "both", "upper");
101     disk_radio = uicontrol( ...
102     "parent"             , colormap_frame, ...
103     "style"              , "radiobutton", ...
104     "string"             , "Parula", ...
105     "fontname"           , defaultfont, ...
106     "fontunits"          , "points", ...
107     "fontsize"           , text_font_size, ...
108     "value"              , 0, ...
109     "background"         , [1 1 1], ...
110     "callback"           , "demo_update_colormap", ...
111     "constraints"        , c, ...
112     "tag"                , "parulacolormap_radio");
113
114     // Radio buttons : HSV
115
116     c = createConstraints("gridbag", [1 3 1 1], [1 1], "both", "upper");
117     disk_radio = uicontrol( ...
118     "parent"             , colormap_frame, ...
119     "style"              , "radiobutton", ...
120     "string"             , "HSV", ...
121     "fontname"           , defaultfont, ...
122     "fontunits"          , "points", ...
123     "fontsize"           , text_font_size, ...
124     "value"              , 0, ...
125     "background"         , [1 1 1], ...
126     "callback"           , "demo_update_colormap", ...
127     "constraints"        , c, ...
128     "tag"                , "HSVcolormap_radio");
129
130     // Radio buttons : Hot
131
132     c = createConstraints("gridbag", [1 4 1 1], [1 1], "both", "upper");
133     disk_radio = uicontrol( ...
134     "parent"             , colormap_frame, ...
135     "style"              , "radiobutton", ...
136     "string"             , "Hot", ...
137     "fontname"           , defaultfont, ...
138     "fontunits"          , "points", ...
139     "fontsize"           , text_font_size, ...
140     "value"              , 0, ...
141     "background"         , [1 1 1], ...
142     "callback"           , "demo_update_colormap", ...
143     "constraints"        , c, ...
144     "tag"                , "hotcolormap_radio");
145
146     // Radio buttons : Gray
147
148     c = createConstraints("gridbag", [1 5 1 1], [1 1], "both", "upper");
149     disk_radio = uicontrol( ...
150     "parent"             , colormap_frame, ...
151     "style"              , "radiobutton", ...
152     "string"             , "Gray", ...
153     "fontname"           , defaultfont, ...
154     "fontunits"          , "points", ...
155     "fontsize"           , text_font_size, ...
156     "value"              , 0, ...
157     "background"         , [1 1 1], ...
158     "callback"           , "demo_update_colormap", ...
159     "constraints"        , c, ...
160     "tag"                , "graycolormap_radio");
161
162     // Radio buttons : Winter
163
164     c = createConstraints("gridbag", [1 6 1 1], [1 1], "both", "upper");
165     disk_radio = uicontrol( ...
166     "parent"             , colormap_frame, ...
167     "style"              , "radiobutton", ...
168     "string"             , "Winter", ...
169     "fontname"           , defaultfont, ...
170     "fontunits"          , "points", ...
171     "fontsize"           , text_font_size, ...
172     "value"              , 0, ...
173     "background"         , [1 1 1], ...
174     "callback"           , "demo_update_colormap", ...
175     "constraints"        , c, ...
176     "tag"                , "wintercolormap_radio");
177
178     // Radio buttons : Spring
179
180     c = createConstraints("gridbag", [1 7 1 1], [1 1], "both", "upper");
181     disk_radio = uicontrol( ...
182     "parent"             , colormap_frame, ...
183     "style"              , "radiobutton", ...
184     "string"             , "Spring", ...
185     "fontname"           , defaultfont, ...
186     "fontunits"          , "points", ...
187     "fontsize"           , text_font_size, ...
188     "value"              , 0, ...
189     "background"         , [1 1 1], ...
190     "callback"           , "demo_update_colormap", ...
191     "constraints"        , c, ...
192     "tag"                , "springcolormap_radio");
193
194     // Radio buttons : Summer
195
196     c = createConstraints("gridbag", [1 8 1 1], [1 1], "both", "upper");
197     disk_radio = uicontrol( ...
198     "parent"             , colormap_frame, ...
199     "style"              , "radiobutton", ...
200     "string"             , "Summer", ...
201     "fontname"           , defaultfont, ...
202     "fontunits"          , "points", ...
203     "fontsize"           , text_font_size, ...
204     "value"              , 0, ...
205     "background"         , [1 1 1], ...
206     "callback"           , "demo_update_colormap", ...
207     "constraints"        , c, ...
208     "tag"                , "summercolormap_radio");
209
210     // Radio buttons : Autumn
211
212     c = createConstraints("gridbag", [1 9 1 1], [1 1], "both", "upper");
213     disk_radio = uicontrol( ...
214     "parent"             , colormap_frame, ...
215     "style"              , "radiobutton", ...
216     "string"             , "Autumn", ...
217     "fontname"           , defaultfont, ...
218     "fontunits"          , "points", ...
219     "fontsize"           , text_font_size, ...
220     "value"              , 0, ...
221     "background"         , [1 1 1], ...
222     "callback"           , "demo_update_colormap", ...
223     "constraints"        , c, ...
224     "tag"                , "autumncolormap_radio");
225
226     // Radio buttons : Bone
227
228     c = createConstraints("gridbag", [1 10 1 1], [1 1], "both", "upper");
229     disk_radio = uicontrol( ...
230     "parent"             , colormap_frame, ...
231     "style"              , "radiobutton", ...
232     "string"             , "Bone", ...
233     "fontname"           , defaultfont, ...
234     "fontunits"          , "points", ...
235     "fontsize"           , text_font_size, ...
236     "value"              , 0, ...
237     "background"         , [1 1 1], ...
238     "callback"           , "demo_update_colormap", ...
239     "constraints"        , c, ...
240     "tag"                , "bonecolormap_radio");
241
242     // Radio buttons : Copper
243
244     c = createConstraints("gridbag", [1 11 1 1], [1 1], "both", "upper");
245     disk_radio = uicontrol( ...
246     "parent"             , colormap_frame, ...
247     "style"              , "radiobutton", ...
248     "string"             , "Copper", ...
249     "fontname"           , defaultfont, ...
250     "fontunits"          , "points", ...
251     "fontsize"           , text_font_size, ...
252     "value"              , 0, ...
253     "background"         , [1 1 1], ...
254     "callback"           , "demo_update_colormap", ...
255     "constraints"        , c, ...
256     "tag"                , "coppercolormap_radio");
257
258     // Radio buttons : Pink
259
260     c = createConstraints("gridbag", [1 12 1 1], [1 1], "both", "upper");
261     disk_radio = uicontrol( ...
262     "parent"             , colormap_frame, ...
263     "style"              , "radiobutton", ...
264     "string"             , "Pink", ...
265     "fontname"           , defaultfont, ...
266     "fontunits"          , "points", ...
267     "fontsize"           , text_font_size, ...
268     "value"              , 0, ...
269     "background"         , [1 1 1], ...
270     "callback"           , "demo_update_colormap", ...
271     "constraints"        , c, ...
272     "tag"                , "pinkcolormap_radio");
273
274     // Radio buttons : Rainbow
275
276     c = createConstraints("gridbag", [1 13 1 1], [1 1], "both", "upper");
277     disk_radio = uicontrol( ...
278     "parent"             , colormap_frame, ...
279     "style"              , "radiobutton", ...
280     "string"             , "Rainbow", ...
281     "fontname"           , defaultfont, ...
282     "fontunits"          , "points", ...
283     "fontsize"           , text_font_size, ...
284     "value"              , 0, ...
285     "background"         , [1 1 1], ...
286     "callback"           , "demo_update_colormap", ...
287     "constraints"        , c, ...
288     "tag"                , "rainbowcolormap_radio");
289
290     // Radio buttons : Ocean
291
292     c = createConstraints("gridbag", [1 14 1 1], [1 1], "both", "upper");
293     disk_radio = uicontrol( ...
294     "parent"             , colormap_frame, ...
295     "style"              , "radiobutton", ...
296     "string"             , "Ocean", ...
297     "fontname"           , defaultfont, ...
298     "fontunits"          , "points", ...
299     "fontsize"           , text_font_size, ...
300     "value"              , 0, ...
301     "background"         , [1 1 1], ...
302     "callback"           , "demo_update_colormap", ...
303     "constraints"        , c, ...
304     "tag"                , "oceancolormap_radio");
305
306     // Radio buttons : White
307
308     c = createConstraints("gridbag", [1 15 1 1], [1 1], "both", "upper");
309     disk_radio = uicontrol( ...
310     "parent"             , colormap_frame, ...
311     "style"              , "radiobutton", ...
312     "string"             , "White", ...
313     "fontname"           , defaultfont, ...
314     "fontunits"          , "points", ...
315     "fontsize"           , text_font_size, ...
316     "value"              , 0, ...
317     "background"         , [1 1 1], ...
318     "callback"           , "demo_update_colormap", ...
319     "constraints"        , c, ...
320     "tag"                , "whitecolormap_radio");
321
322     // Plot3d creation
323     // =========================================================================
324
325     my_plot_axes = gca();
326
327     my_plot_axes.x_label.text       = "";
328     my_plot_axes.y_label.text       = "";
329     my_plot_axes.z_label.text       = "";
330     my_plot_axes.title.text         = "";
331     my_plot_axes.title.font_size    = 5;
332     my_plot_axes.rotation_angles(1) = 80;
333     my_plot_axes.axes_bounds        = [ ((2*margin_x+frame_w)/axes_w)  0  1-((2*margin_x+frame_w)/axes_w)  1];
334
335     // define colormap
336     colormapSize = 128;
337     f = gcf();
338     f.color_map = jetcolormap(128);
339
340     // generate facet coordinates
341     x = %pi * [-1:0.05:1]';z = sin(x)*cos(x)';
342     [x,y,z] = genfac3d(x,x,z);
343
344     // generate colors
345     // colors depending on z, between 1 and colormap size
346     facetsColors = (z + 1) * (colormapSize - 1) / 2 + 1;
347
348     // plot
349     plot3d(x,y,list(z, facetsColors));
350
351     // Colorbar
352     z_min = min(z);
353     z_max = max(z);
354     colorbar(z_min,z_max);
355
356     // Background
357     my_plot_axes.background = color(240,240,240);
358
359     my_plot3d = gce();
360
361     my_plot_axes.rotation_angles(1) = 80;
362
363     fig_handle.visible = "on";
364
365 endfunction
366
367
368 function demo_update_colormap()
369
370     my_figure    = gcf();
371     my_plot_axes = gca();
372
373     my_figure.immediate_drawing = "off";
374
375     set(findobj("tag", "jetcolormap_radio")     , "value", 0);
376     set(findobj("tag", "parulacolormap_radio")  , "value", 0);
377     set(findobj("tag", "hotcolormap_radio")     , "value", 0);
378     set(findobj("tag", "graycolormap_radio")    , "value", 0);
379     set(findobj("tag", "wintercolormap_radio")  , "value", 0);
380     set(findobj("tag", "springcolormap_radio")  , "value", 0);
381     set(findobj("tag", "summercolormap_radio")  , "value", 0);
382     set(findobj("tag", "autumncolormap_radio")  , "value", 0);
383     set(findobj("tag", "bonecolormap_radio")    , "value", 0);
384     set(findobj("tag", "coppercolormap_radio")  , "value", 0);
385     set(findobj("tag", "pinkcolormap_radio")    , "value", 0);
386     set(findobj("tag", "HSVcolormap_radio")     , "value", 0);
387     set(findobj("tag", "rainbowcolormap_radio") , "value", 0);
388     set(findobj("tag", "oceancolormap_radio")   , "value", 0);
389     set(findobj("tag", "whitecolormap_radio")   , "value", 0);
390
391     set(gcbo, "value", 1);
392
393     my_wanted_colormap = get(gcbo,"tag");
394
395     if get(gcbo, "tag") == "jetcolormap_radio" then
396         my_figure.color_map = jetcolormap(128);
397     elseif get(gcbo, "tag") == "parulacolormap_radio" then
398         my_figure.color_map = parulacolormap(128);
399     elseif get(gcbo, "tag") == "hotcolormap_radio" then
400         my_figure.color_map = hotcolormap(128);
401     elseif get(gcbo, "tag") == "graycolormap_radio" then
402         my_figure.color_map = graycolormap(128);
403     elseif get(gcbo, "tag") == "wintercolormap_radio" then
404         my_figure.color_map = wintercolormap(128);
405     elseif get(gcbo, "tag") == "springcolormap_radio" then
406         my_figure.color_map = springcolormap(128);
407     elseif get(gcbo, "tag") == "summercolormap_radio" then
408         my_figure.color_map = summercolormap(128);
409     elseif get(gcbo, "tag") == "autumncolormap_radio" then
410         my_figure.color_map = autumncolormap(128);
411     elseif get(gcbo, "tag") == "bonecolormap_radio" then
412         my_figure.color_map = bonecolormap(128);
413     elseif get(gcbo, "tag") == "coppercolormap_radio" then
414         my_figure.color_map = coppercolormap(128);
415     elseif get(gcbo, "tag") == "pinkcolormap_radio" then
416         my_figure.color_map = pinkcolormap(128);
417     elseif get(gcbo, "tag") == "HSVcolormap_radio" then
418         my_figure.color_map = hsvcolormap(128);
419     elseif get(gcbo, "tag") == "rainbowcolormap_radio" then
420         my_figure.color_map = rainbowcolormap(128);
421     elseif get(gcbo, "tag") == "oceancolormap_radio" then
422         my_figure.color_map = oceancolormap(128);
423     elseif get(gcbo, "tag") == "whitecolormap_radio" then
424         my_figure.color_map = whitecolormap(128);
425     end
426
427     // Background
428     my_plot_axes.background = color(240,240,240);
429
430     my_figure.immediate_drawing = "on";
431
432 endfunction
433
434 funcprot(prot);
435
436 demo_colormap();
437 clear demo_colormap;