white is better ...
[scilab.git] / scilab / modules / gui / demos / cb_uicontrol_plot3d.dem.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2008 - INRIA - Pierre MARECHAL
3 // Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS
4 //
5 // This file must be used under the terms of the CeCILL.
6 // This source file is licensed as described in the file COPYING, which
7 // you should have received as part of this distribution.  The terms
8 // are also available at
9 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10 //
11
12 function uicontrol_plot3d()
13     demo_plot3d = figure( ...
14         "dockable", "off", ...
15         "infobar_visible", "off", ...
16         "toolbar_visible", "off", ...
17         "toolbar", "none", ...
18         "menubar_visible", "on", ...
19         "menubar", "none", ...
20         "default_axes", "off", ...
21         "layout", "gridbag", ...
22         "visible", "off");
23
24     fakeframe_height = 10;
25     demo_plot3d.figure_id       = 100001;
26     demo_plot3d.background      = -2;
27     demo_plot3d.color_map       = jetcolormap(128);
28     demo_plot3d.figure_position = [0 0];
29     demo_plot3d.figure_name     = gettext("Control Plot3d");
30     demo_plot3d.axes_size       = [900 450];
31
32     // New menu
33     h = uimenu(demo_plot3d, ...
34         "label" , gettext("File"));
35
36     uimenu(h, ...
37         "label"     , gettext("Close"), ...
38         "callback"  , "demo_plot3d=get_figure_handle(100001);delete(demo_plot3d);", ...
39         "tag"       , "close_menu");
40
41     demo_viewCode(SCI+ "/modules/gui/demos/cb_uicontrol_plot3d.dem.sci");
42
43     frame_left = uicontrol(demo_plot3d, ...
44         "style", "frame", ...
45         "constraints", createConstraints("gridbag", [1, 1, 1, 1], [0.4, 1], "both", "left", [0, 0], [0, 0]), ...
46         "border", createBorders("titled", createBorders("line", "lightGray", 1), _("Control Panel"), "center", "below_top", createFontBorder("", 16, "normal"), "black"), ...
47         "backgroundcolor", [1 1 1], ...
48         "layout", "gridbag");
49
50     //estetic panel
51     frame_angle = uicontrol(frame_left, ...
52         "style", "frame", ...
53         "backgroundcolor", [1 1 1], ...
54         "constraints", createConstraints("gridbag", [1, 1, 1, 1], [0, 0], "both", "center", [0, fakeframe_height]));
55
56     //angle
57     frame_angle = uicontrol(frame_left, ...
58         "style", "frame", ...
59         "backgroundcolor", [1 1 1], ...
60         "constraints", createConstraints("gridbag", [1, 2, 1, 1], [0, 0], "both", "center"), ...
61         "border", createBorders("titled", createBorders("line", "lightGray", 1), _("Rotation angle"), "center", "top", createFontBorder("", 11, "normal"), "black"), ...
62         "layout", "border");
63
64     uicontrol(frame_angle, ...
65         "style", "slider", ...
66         "backgroundcolor", [1 1 1], ...
67         "value", 70, ...
68         "min", 0, ...
69         "max", 360, ...
70         "sliderstep", [2, 30], ...
71         "callback", "update_plot3d_angle");
72
73     //estetic panel
74     frame_angle = uicontrol(frame_left, ...
75         "style", "frame", ...
76         "backgroundcolor", [1 1 1], ...
77         "constraints", createConstraints("gridbag", [1, 3, 1, 1], [0, 0], "both", "center", [0, fakeframe_height]));
78
79     //colormap
80     frame_colormap = uicontrol(frame_left, ...
81         "style", "frame", ...
82         "backgroundcolor", [1 1 1], ...
83         "constraints", createConstraints("gridbag", [1, 4, 1, 1], [0, 0], "both", "center"), ...
84         "border", createBorders("titled", createBorders("line", "lightGray", 1), _("Colormap"), "center", "top", createFontBorder("", 11, "normal"), "black"), ...
85         "layout_options", createLayoutOptions("grid", [3, 1]));
86
87     frame_colormap.layout = "grid";
88
89     uicontrol(frame_colormap, ...
90         "style", "radiobutton", ...
91         "backgroundcolor", [1 1 1], ...
92         "tag", "graycolormap", ...
93         "string", "Graycolormap", ...
94         "groupname", "colormap", ...
95         "callback", "update_colormap");
96
97     uicontrol(frame_colormap, ...
98         "style", "radiobutton", ...
99         "backgroundcolor", [1 1 1], ...
100         "tag", "hotcolormap", ...
101         "string", "Hotcolormap", ...
102         "groupname", "colormap", ...
103         "callback", "update_colormap");
104
105     jet = uicontrol(frame_colormap, ...
106         "tag", "jetcolormap", ...
107         "backgroundcolor", [1 1 1], ...
108         "style", "radiobutton", ...
109         "string", "Jetcolormap", ...
110         "groupname", "colormap", ...
111         "callback", "update_colormap");
112
113     jet.value = 1;
114
115     //estetic panel
116     frame_angle = uicontrol(frame_left, ...
117         "style", "frame", ...
118         "backgroundcolor", [1 1 1], ...
119         "constraints", createConstraints("gridbag", [1, 5, 1, 1], [0, 0], "both", "center", [0, fakeframe_height]));
120
121     //background
122     frame_background = uicontrol(frame_left, ...
123         "style", "frame", ...
124         "backgroundcolor", [1 1 1], ...
125         "constraints", createConstraints("gridbag", [1, 6, 1, 1], [0, 0], "both", "center"), ...
126         "border", createBorders("titled", createBorders("line", "lightGray", 1), _("Background Color"), "center", "top", createFontBorder("", 11, "normal"), "black"), ..
127         "layout", "border");
128
129     uicontrol(frame_background, ...
130         "tag", "button", ...
131         "style", "pushbutton", ...
132         "backgroundcolor", [1 1 1], ...
133         "relief", "raised", ...
134         "constraints", createConstraints("border", "center", [30 30]), ...
135         "string", "Color picker", ...
136         "callback", "update_background_color");
137
138     //estetic panel
139     frame_angle = uicontrol(frame_left, ...
140         "style", "frame", ...
141         "backgroundcolor", [1 1 1], ...
142         "constraints", createConstraints("gridbag", [1, 7, 1, 1], [0, 0], "both", "center", [0, fakeframe_height]));
143
144     //Show/hide
145     frame_style = uicontrol(frame_left, ...
146         "style", "frame", ...
147         "backgroundcolor", [1 1 1], ...
148         "constraints", createConstraints("gridbag", [1, 8, 1, 1], [1, 1], "both", "center"), ...
149         "border", createBorders("titled", createBorders("line", "lightGray", 1), _("Show / Hide"), "center", "top", createFontBorder("", 11, "normal"), "black"), ...
150         "layout_options", createLayoutOptions("grid", [4, 1]));
151
152     frame_style.layout = "grid";
153
154     uicontrol(frame_style, ...
155         "style", "checkbox", ...
156         "backgroundcolor", [1 1 1], ...
157         "value", 1, ...
158         "string", "Edges", ...
159         "callback", "update_edges_visible");
160
161     uicontrol(frame_style, ...
162         "style", "checkbox", ...
163         "backgroundcolor", [1 1 1], ...
164         "value", 1, ...
165         "string", "Labels", ...
166         "callback", "update_labels_visible");
167
168     uicontrol(frame_style, ...
169         "style", "checkbox", ...
170         "backgroundcolor", [1 1 1], ...
171         "value", 1, ...
172         "string", "Title", ...
173         "callback", "update_title_visible");
174
175     uicontrol(frame_style, ...
176         "style", "checkbox", ...
177         "backgroundcolor", [1 1 1], ...
178         "value", 1, ...
179         "string", "Tics", ...
180         "callback", "update_tics_visible");
181
182     //estetic panel
183     frame_angle = uicontrol(frame_left, ...
184         "style", "frame", ...
185         "backgroundcolor", [1 1 1], ...
186         "constraints", createConstraints("gridbag", [1, 9, 1, 1], [0, 0], "both", "center", [0, fakeframe_height]));
187
188     //Title
189     frame_style = uicontrol(frame_left, ...
190         "style", "frame", ...
191         "backgroundcolor", [1 1 1], ...
192         "constraints", createConstraints("gridbag", [1, 10, 1, 1], [1, 0], "both", "center"), ...
193         "border", createBorders("titled", createBorders("line", "lightGray", 1), _("Title"), "center", "top", createFontBorder("", 11, "normal"), "black"), ...
194         "layout", "border");
195
196     uicontrol(frame_style, ...
197         "style", "edit", ...
198         "backgroundcolor", [1 1 1], ...
199         "string", "My Beautiful Plot", ...
200         "callback", "update_title_string", ...
201         "tag", "title");
202
203     //Plot
204     frame_right = uicontrol(demo_plot3d, ...
205         "style", "frame", ...
206         "layout", "border", ...
207         "constraints", createConstraints("gridbag", [2, 1, 1, 1], [1, 1], "both"));
208
209
210     newaxes(frame_right);
211     demo_plot3d.immediate_drawing = "off";
212     plot3d();
213
214     a = gca();
215     a.tag                   = "plot";
216     a.title.text            = "My Beautiful Plot";
217     a.title.font_size       = 5;
218     a.rotation_angles(1)    = 70;
219
220     a.x_label.text          = "X";
221     a.y_label.text          = "Y";
222     a.z_label.text          = "Z";
223
224     demo_plot3d.immediate_drawing     = "on";
225
226     demo_plot3d.visible     = "on";
227 endfunction
228
229
230
231
232
233 function update_plot3d_angle()
234
235     my_plot_axes = gca();
236     my_new_angle = get(gcbo,"value");
237
238     if( my_new_angle>0 & my_new_angle<360 ) then
239         my_plot_axes.rotation_angles(2) = my_new_angle;
240     end
241
242 endfunction
243
244 function update_colormap()
245
246     my_figure    = gcf();
247     my_plot_axes = gca();
248
249     my_cur_color_map    = my_figure.color_map;
250     my_cur_bg_color_id  = my_plot_axes.background;
251
252     if my_cur_bg_color_id > 32 then
253         my_cur_bg_color_r = my_cur_color_map(my_cur_bg_color_id,1);
254         my_cur_bg_color_g = my_cur_color_map(my_cur_bg_color_id,2);
255         my_cur_bg_color_b = my_cur_color_map(my_cur_bg_color_id,3);
256     end
257
258     if get(gcbo, "tag") == "jetcolormap" then
259         my_figure.color_map = jetcolormap(128);
260     elseif get(gcbo, "tag") == "hotcolormap" then
261         my_figure.color_map = hotcolormap(128);
262     elseif get(gcbo, "tag") == "graycolormap" then
263         my_figure.color_map = graycolormap(128);
264     end
265
266     if my_cur_bg_color_id > 32 then
267
268         color_id = color( ..
269         my_cur_bg_color_r*255, ..
270         my_cur_bg_color_g*255, ..
271         my_cur_bg_color_b*255  ..
272         );
273
274         my_plot_axes.background = color_id;
275     end
276
277 endfunction
278
279 function update_background_color()
280
281     // Lancement du colorchooser
282     [my_red, my_green, my_blue] = uigetcolor();
283
284     if( (my_red<>[]) & (my_green<>[]) & (my_blue<>[]) ) then
285
286         set(gcbo,"BackgroundColor",[ my_red/255 my_green/255 my_blue/255 ]);
287
288         my_plot_axes            = gca();
289         color_id                = color(my_red,my_green,my_blue);
290         my_plot_axes.background = color_id;
291
292     end
293
294 endfunction
295
296 function update_tics_visible()
297
298     my_plot_axes = gca();
299
300     if get(gcbo,"value") == 0 then
301         my_plot_axes.axes_visible = ["off" "off" "off" ];
302     else
303         my_plot_axes.axes_visible = ["on" "on" "on" ];
304     end
305
306 endfunction
307
308 function update_title_visible()
309
310     my_plot_axes = gca();
311
312     if get(gcbo,"value") == 0 then
313         my_plot_axes.title.visible = "off";
314     else
315         my_plot_axes.title.visible = "on";
316     end
317
318 endfunction
319
320 function update_labels_visible()
321
322     my_plot_axes = gca();
323
324     if get(gcbo,"value") == 0 then
325         my_plot_axes.x_label.visible = "off";
326         my_plot_axes.y_label.visible = "off";
327         my_plot_axes.z_label.visible = "off";
328     else
329         my_plot_axes.x_label.visible = "on";
330         my_plot_axes.y_label.visible = "on";
331         my_plot_axes.z_label.visible = "on";
332     end
333
334 endfunction
335
336 function update_edges_visible()
337
338     my_plot_axes = gca();
339     my_plot3d    = my_plot_axes.children($);
340
341     if get(gcbo,"value") == 0 then
342         my_plot3d.color_mode = -1;
343     else
344         my_plot3d.color_mode = +1;
345     end
346
347 endfunction
348
349 function update_title_string
350
351     my_plot_axes = gca();
352     my_plot_axes.title.text = get(gcbo,"string");
353
354 endfunction