Ruiby 3.23.0 → 3.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cb3b6e72faecebf43840bd1e0815e54dc550ea67
4
- data.tar.gz: c5b3838eaf542d042205fc782a5f8d1470e02cfb
3
+ metadata.gz: 3fd700885087f60ca85e4180dd50212ba8201983
4
+ data.tar.gz: 5c8be8fb45db8a39983dfd45f2cf38dcad75d5cd
5
5
  SHA512:
6
- metadata.gz: cd9a4e469adb759aadd31a2ed4ab652252fdb0329d41d440b7345b998902bdf8c690d3a895ab69422c9735fc9e60471603601fd67b06d7de9ed1477363fd3063
7
- data.tar.gz: 15d0d241efbf367f3459d9aed6e116c1c17f0ed37666b1524ba757144a75780104f3a7e809443f56602c79229a67f4abb177275ea8d2cc025e831395dd80b352
6
+ metadata.gz: 72bbaba901ea7dd7b2c92a8c858d0acb87767a5ba2ac10df72dd8f51fabf6d188ef5729f19e55c365c31f707e7dcb60182e27b271b1c527b7d30976e64777daf
7
+ data.tar.gz: e398906d054b4dd1057e948f68f838329dc412942180542360c26e8e13c0a39aa19a0fd9b25768064129d3e6d5ebb0793896d2821317e8edf02a2c77f3184605
@@ -1,3 +1,13 @@
1
+ 3.24.0 : 2017-11-28 19:12:41 +0100
2
+ quadvideo.rb : q
3
+ circle.rb : bg with gradient
4
+ ruiby_dsl3.rb : error() with exception for video()
5
+ plot.rb : correction color
6
+ list_grid.rb : no unselect on set_data
7
+ canvas.rb : gradiant for draw_rectangle, draw_rounded_rectangle, drw_polygon
8
+ README.md : gradient evolution, ruby-gnome2 references
9
+ README.md : updates
10
+ README.md : update dependencies
1
11
  3.23.0 : 2017-09-25 17:43:54 +0200
2
12
  README.md : 3.23
3
13
  ruiby_default_dialog3.rb : dialog synced
@@ -488,14 +498,4 @@
488
498
  ruiby_dsl3.rb : api n combo box
489
499
  gol.rb : speedy
490
500
  ruiby_threader.rb : anim
491
- gol.rb : entry for modify life formula online
492
- canvas.rb : animation, polygons, scale, rotation, translation
493
- test_basics_widget.rb : video test only if gstereamer is loaded
494
- Gemfile : no gst
495
- 0.128.0 : 2013-09-24 00:47:41 +0200
496
- test_basics_widget.rb : video test
497
- 0.127.0 : 2013-09-24 00:18:05 +0200
498
- ruiby_dsl3.rb : uri
499
- 0.126.0 : 2013-09-24 00:14:00 +0200
500
- ruiby_dsl3.rb : uri / url
501
- 0.125.0 : 2013-09-23 22:01:28 +0200
501
+ gol.rb : entry for modify life formula online
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Ruiby
2
2
 
3
+ ![icon](https://user-images.githubusercontent.com/27629/31522353-9bbe8958-afad-11e7-8e50-56ec8f904a79.png)
4
+
3
5
  [![Build Status](https://travis-ci.org/glurp/dsl-gtk.svg?branch=master)](https://travis-ci.org/glurp/dsl-gtk)
4
6
  [![Gem Version](https://badge.fury.io/rb/Ruiby.png)](http://badge.fury.io/rb/Ruiby)
5
7
  [![AppVeyor](https://ci.appveyor.com/api/projects/status/y6pqyq79ybcmj9ye?svg=true)](https://ci.appveyor.com/project/Glurp/dsl-gtk/branch/master)
@@ -18,16 +20,21 @@ Doc: [Reference+Exemples.](https://rawgithub.com/glurp/Ruiby/master/doc.html)
18
20
 
19
21
  Gem : https://rubygems.org/gems/Ruiby
20
22
 
23
+ Based on Ruby-Gmome2 :
24
+ * [Sources, Issues](https://github.com/ruby-gnome2/ruby-gnome2)
25
+ * [API](http://ruby-gnome2.osdn.jp/)
26
+
21
27
 
22
28
  Status
23
29
  ======
24
30
 
25
- NEW : 3.22.0 !! 25-09-2017 : minor corrections, improve canvas drawing
31
+ NEW : 3.24.0 !! 28-11-2017 : Gradiant on canvas draw primitives
26
32
 
27
33
 
28
34
 
29
35
  TODO :
30
36
 
37
+ * [ ] improve graphics quality on canvas : gradiant,transparency...
31
38
  * [ ] Gadget api: actual gadgets are cairo drawing => to be encapsuled
32
39
  * [ ] refactor samples demos with last improve: dynvar/autoslot...
33
40
  * [ ] resolve 100% gtk3 deprecated warning
@@ -58,21 +65,24 @@ Test it:
58
65
  ```
59
66
 
60
67
 
61
- Here a working gem config on windows (10-Jun-2016, Ruby 2.2.4p230) :
68
+ Here a working gem config on windows (25-Sept-2019, Ruby 2.3.3p222) :
62
69
  ```
63
- pkg-config-1.1.7
64
- cairo-1.15.2
65
- glib2-3.0.7
66
- gobject-introspection-3.0.7
67
- gio2-3.0.7
68
- atk-3.0.7
69
- pango-3.0.7
70
- gdk_pixbuf2-3.0.7
71
- cairo-gobject-3.0.7
72
- gdk3-3.0.7
73
- rsvg2-3.0.7
74
- gtk3-3.0.7
75
- gtksourceview3-3.0.7
70
+ did_you_mean-1.0.0
71
+ pkg-config-1.2.3
72
+ native-package-installer-1.0.4
73
+ cairo-1.15.9
74
+ glib2-3.1.8
75
+ gobject-introspection-3.1.8
76
+ gio2-3.1.8
77
+ atk-3.1.8
78
+ cairo-gobject-3.1.8
79
+ pango-3.1.8
80
+ gdk_pixbuf2-3.1.8
81
+ gdk3-3.1.8
82
+ rsvg2-3.1.8
83
+ gtk3-3.1.8
84
+ Ruiby-3.23.0
85
+ gtksourceview3-3.1.8
76
86
  ```
77
87
 
78
88
 
@@ -374,8 +384,11 @@ TODO:
374
384
  License
375
385
  =======
376
386
  Ruiby : LGPL, CC BY-SA
387
+
377
388
  fafamfam rasters images : CC Attribution 4.0 http://www.famfamfam.com/
389
+
378
390
  Crystal Clear icon set : LGPL
391
+
379
392
  Farm Fresh icon set : CC Attribution 3.0 License http://www.fatcow.com/free-icons
380
393
 
381
394
  Exemples
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.23.0
1
+ 3.24.0
@@ -14,7 +14,7 @@
14
14
  <img src="./assets/0.10.0/loading.gif" alt="loading"/>
15
15
  </div>
16
16
  <div id="wrapper" style="display:none;">
17
- <div class="timestamp">Generated <abbr class="timeago" title="2017-06-12T16:12:24+02:00">2017-06-12T16:12:24+02:00</abbr></div>
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2017-09-25T17:44:43+02:00">2017-09-25T17:44:43+02:00</abbr></div>
18
18
  <ul class="group_tabs"></ul>
19
19
 
20
20
  <div id="content">
data/doc.html CHANGED
@@ -72,7 +72,7 @@ hdoc['prompt']= '<div class="api"><br>def prompt(txt,value="")</div><div>show a
72
72
  hdoc['ask']= '<div class="api"><br>def ask(*txt)</div><div>show a modal <a href=#dialog>dialog</a>, asking yes/no question, return boolean response<br></div>';
73
73
  hdoc['log']= '<div class="api"><br>def log(*txt)</div><div> Logs<br>put a line of <a href=#message>message</a> <a href=#text>text</a> in log <a href=#dialog>dialog</a> (create and show the log <a href=#dialog>dialog</a> if not exist)<br></div>';
74
74
  hdoc['install_composant']= '<div class="api"><br>def install_composant(window,componant)</div><div>helper for <a href=#install>install</a> a <a href=#component>component</a>.<br>when use a <a href=#component>component</a>, define in Ruiby_dsl word:<br>def component_name(*args)<br>c=install_composant(<a href=#self>self</a>,ClassCompenent.new(*args))<br>end<br>ClassCompenent must inherit from AbstractComposant and define <br><a href=#component>component</a> method (as a <a href=#window>window</a>)<br>class XX < AbstractComposant<br>def <a href=#component>component</a><br><a href=#stack>stack</a> { .... }<br>end<br>end<br></div>';
75
- hdoc['canvas']= '<div class="api"><br>def canvas(width,height,option={})</div><div>Creative Commons BY-SA : Regis dAubarede <regis.aubarede@gmail.com><br>LGPL<br>Create a drawing area, for pixel/vectoriel draw<br>for interactive actions see test.rb fo little example.<br><br>@<a href=#cv>cv</a>=canvas(width,height,opt) do<br><a href=#on_canvas_draw>on_canvas_draw</a> { |<a href=#w>w</a>,ctx| myDraw(<a href=#w>w</a>,ctx) }<br><a href=#on_canvas_button_press>on_canvas_button_press</a> {|<a href=#w>w</a>,e| [e.x,e.y] } must return a object which will given to next move/release callback<br><a href=#on_canvas_button_motion>on_canvas_button_motion</a> {|<a href=#w>w</a>,e,o| n=[e.x,e.y] ; ... ; n }<br><a href=#on_canvas_button_release>on_canvas_button_release</a> {|<a href=#w>w</a>,e,o| ... }<br>on_canvas_keypress {|<a href=#w>w</a>,key| ... }<br>end<br><br>for drawing in canvas, this commands are usable.<br>basic gtk commands can still be uses ( move_to(), line_to()... )<br>def myDraw(<a href=#w>w</a>,ctx)<br><a href=#w>w</a>.init_ctx(color_fg="000000",color_bg="FFFFFF",width=1)<br><a href=#w>w</a>.draw_point(x1,y1,color,width)<br><a href=#w>w</a>.draw_polygon([x,y,...],colorFill,colorStroke,widthStroke)<br><a href=#w>w</a>.draw_circle(cx,cy,rayon,colorFill,colorStroke,widthStroke)<br><a href=#w>w</a>.draw_rectangle(x0,y0,<a href=#w>w</a>,h,r,widthStroke,colorFill,colorStroke)<br><a href=#cv>cv</a>.draw_rounded_rectangle(x0,y0,<a href=#w>w</a>,h,ar,colorStroke,colorFill,widthStroke)<br><a href=#w>w</a>.draw_pie(x,y,r,l_ratio_color_label)<br><a href=#w>w</a>.draw_arc(x,y,r,start,eend,width,color_stroke,color_fill=nil)<br><a href=#w>w</a>.draw_arc2(x,y,r,start,eend,width,color_stroke,color_fill=nil)<br><a href=#w>w</a>.draw_varbarr(x0,y0,x1,y1,vmin,vmax,l_date_value,width) {|<a href=#value>value</a>| color}<br><a href=#w>w</a>.draw_image(x,y,filename,sx,sy)<br><a href=#w>w</a>.draw_text(x,y,<a href=#text>text</a>,scale,color,bgcolor=nil)<br><a href=#w>w</a>.draw_text_left(x,y,<a href=#text>text</a>,scale,color,bgcolor=nil)<br><a href=#w>w</a>.draw_text_center(x,y,<a href=#text>text</a>,scale,color,bgcolor=nil)<br>lxy=<a href=#w>w</a>.translate(lxy,dx=0,dy=0) move a <a href=#list>list</a> of points<br>lxy=<a href=#w>w</a>.rotate(lxy,x0,y0,angle) rotate a <a href=#list>list</a> of points<br><a href=#cv>cv</a>.rotation(cx,cy,a) { draw... }<br><a href=#w>w</a>.scale(10,20,2) { <a href=#w>w</a>.draw_image(3,0,filename) } <br>>> draw in a transladed/scaled coord system<br>>> <a href=#image>image</a> will be draw at 16/20 (10+3*2)/(20+0*2)<br>, and size doubled<br>end<br></div>';
75
+ hdoc['canvas']= '<div class="api"><br>def canvas(width,height,option={})</div><div>Creative Commons BY-SA : Regis dAubarede <regis.aubarede@gmail.com><br>LGPL<br>Create a drawing area, for pixel/vectoriel draw<br>for interactive actions see test.rb fo little example.<br><br>@<a href=#cv>cv</a>=canvas(width,height,opt) do<br><a href=#on_canvas_draw>on_canvas_draw</a> { |<a href=#w>w</a>,ctx| myDraw(<a href=#w>w</a>,ctx) }<br><a href=#on_canvas_button_press>on_canvas_button_press</a> {|<a href=#w>w</a>,e| [e.x,e.y] } must return a object which will given to next move/release callback<br><a href=#on_canvas_button_motion>on_canvas_button_motion</a> {|<a href=#w>w</a>,e,o| n=[e.x,e.y] ; ... ; n }<br><a href=#on_canvas_button_release>on_canvas_button_release</a> {|<a href=#w>w</a>,e,o| ... }<br>on_canvas_keypress {|<a href=#w>w</a>,key| ... }<br>end<br><br>for drawing in canvas, this commands are usable.<br>basic gtk commands can still be uses ( move_to(), line_to()... )<br>def myDraw(<a href=#w>w</a>,ctx)<br><a href=#w>w</a>.init_ctx(color_fg="000000",color_bg="FFFFFF",width=1)<br><a href=#w>w</a>.draw_point(x1,y1,color,width)<br><a href=#w>w</a>.draw_polygon([x,y,...],colorFill,colorStroke,widthStroke)<br><a href=#w>w</a>.draw_circle(cx,cy,rayon,colorFill,colorStroke,widthStroke)<br><a href=#w>w</a>.draw_rectangle(x0,y0,<a href=#w>w</a>,h, r,widthStroke,colorFill,<a href=#w>w</a>)<br><a href=#cv>cv</a>.draw_rounded_rectangle(x0,y0,<a href=#w>w</a>,h,ar,colorStroke,colorFill,widthStroke)<br><a href=#w>w</a>.draw_pie(x,y,r,l_ratio_color_label)<br><a href=#w>w</a>.draw_arc(x,y,r,start,eend,width,color_stroke,color_fill=nil) camenber<br><a href=#w>w</a>.draw_arc2(x,y,r,start,eend,width,color_stroke,color_fill=nil) circle fraction<br><a href=#w>w</a>.draw_varbarr(x0,y0,x1,y1,vmin,vmax,l_date_value,width) {|<a href=#value>value</a>| color}<br><a href=#w>w</a>.draw_image(x,y,filename,sx,sy)<br><a href=#cv>cv</a>.ctx_font(<a href=#name>name</a>,size) choose font <a href=#name>name</a> and size for next draw_text...<br><a href=#w>w</a>.draw_text(x,y,<a href=#text>text</a>,scale,color,bgcolor=nil)<br><a href=#w>w</a>.draw_text_left(x,y,<a href=#text>text</a>,scale,color,bgcolor=nil)<br><a href=#w>w</a>.draw_text_center(x,y,<a href=#text>text</a>,scale,color,bgcolor=nil)<br>lxy=<a href=#w>w</a>.translate(lxy,dx=0,dy=0) move a <a href=#list>list</a> of points<br>lxy=<a href=#w>w</a>.rotate(lxy,x0,y0,angle) rotate a <a href=#list>list</a> of points<br><a href=#cv>cv</a>.rotation(cx,cy,a) { draw... }<br><a href=#w>w</a>.scale(10,20,2) { <a href=#w>w</a>.draw_image(3,0,filename) } <br>>> draw in a transladed/scaled coord system<br>>> <a href=#image>image</a> will be draw at 16/20 (10+3*2)/(20+0*2)<br>, and size doubled<br><br>end<br>gradient can be use for recangle and polygone, see samples/gradients.rb<br>in place od String bg-color, say Array : <a href=#w>w</a>{type direction color1 color2 ...}<br>type = linear/radial direction : tb Top->Bottom, bu Bottom->Up , lr: Left->Right, ..., trb -> TopLeft -> BottomRight <br></div>';
76
76
  hdoc['cv']= '<div class="api"><br>def cv.rotate(lxy,x0,y0,angle)</div><div></div>';
77
77
  hdoc['force_update']= '<div class="api"><br>def force_update(canvas)</div><div><a href=#update>update</a> a <a href=#canvas>canvas</a><br></div>';
78
78
  hdoc['on_canvas_button_press']= '<div class="api"><br>def on_canvas_button_press(&blk)</div><div>define action on button_press<br>action must return an object whici will be transmit to motion/release handler<br></div>';
@@ -322,8 +322,8 @@ function popup(word) {
322
322
  </head>
323
323
  <body>
324
324
  <div class='title'>Ruiby DSL Documentation</div>
325
- Ruiby Version: 3.22.4<br>
326
- Generated at : 2017-09-25 17:43:53 +0200<br>
325
+ Ruiby Version: 3.23.3<br>
326
+ Generated at : 2017-11-28 19:12:38 +0100<br>
327
327
  <a href="#code">See code example</a>
328
328
  <hr>
329
329
  <center>Search : <input type='input' value="" size='80' onchange='doSearch(this.value);'></center>
@@ -466,7 +466,7 @@ Generated at : 2017-09-25 17:43:53 +0200<br>
466
466
 
467
467
  <div class='atitle'><a name='canvas'>canvas</a></div>
468
468
  <div class='api'>def canvas(width,height,option={})</div>
469
- <div class='descr'>Creative Commons BY-SA : Regis d'Aubarede <regis.aubarede@gmail.com><br>LGPL<br>Create a drawing area, for pixel/vectoriel draw<br>for interactive actions see test.rb fo little example.<br><br>@<a href='#cv'>cv</a>=canvas(width,height,opt) do<br><a href='#on_canvas_draw'>on_canvas_draw</a> { |<a href='#w'>w</a>,ctx| myDraw(<a href='#w'>w</a>,ctx) }<br><a href='#on_canvas_button_press'>on_canvas_button_press</a> {|<a href='#w'>w</a>,e| [e.x,e.y] } must return a object which will given to next move/release callback<br><a href='#on_canvas_button_motion'>on_canvas_button_motion</a> {|<a href='#w'>w</a>,e,o| n=[e.x,e.y] ; ... ; n }<br><a href='#on_canvas_button_release'>on_canvas_button_release</a> {|<a href='#w'>w</a>,e,o| ... }<br>on_canvas_keypress {|<a href='#w'>w</a>,key| ... }<br>end<br><br>for drawing in canvas, this commands are usable.<br>basic gtk commands can still be uses ( move_to(), line_to()... )<br>def myDraw(<a href='#w'>w</a>,ctx)<br><a href='#w'>w</a>.init_ctx(color_fg="000000",color_bg="FFFFFF",width=1)<br><a href='#w'>w</a>.draw_point(x1,y1,color,width)<br><a href='#w'>w</a>.draw_polygon([x,y,...],colorFill,colorStroke,widthStroke)<br><a href='#w'>w</a>.draw_circle(cx,cy,rayon,colorFill,colorStroke,widthStroke)<br><a href='#w'>w</a>.draw_rectangle(x0,y0,<a href='#w'>w</a>,h,r,widthStroke,colorFill,colorStroke)<br><a href='#cv'>cv</a>.draw_rounded_rectangle(x0,y0,<a href='#w'>w</a>,h,ar,colorStroke,colorFill,widthStroke)<br><a href='#w'>w</a>.draw_pie(x,y,r,l_ratio_color_label)<br><a href='#w'>w</a>.draw_arc(x,y,r,start,eend,width,color_stroke,color_fill=nil)<br><a href='#w'>w</a>.draw_arc2(x,y,r,start,eend,width,color_stroke,color_fill=nil)<br><a href='#w'>w</a>.draw_varbarr(x0,y0,x1,y1,vmin,vmax,l_date_value,width) {|<a href='#value'>value</a>| color}<br><a href='#w'>w</a>.draw_image(x,y,filename,sx,sy)<br><a href='#w'>w</a>.draw_text(x,y,<a href='#text'>text</a>,scale,color,bgcolor=nil)<br><a href='#w'>w</a>.draw_text_left(x,y,<a href='#text'>text</a>,scale,color,bgcolor=nil)<br><a href='#w'>w</a>.draw_text_center(x,y,<a href='#text'>text</a>,scale,color,bgcolor=nil)<br>lxy=<a href='#w'>w</a>.translate(lxy,dx=0,dy=0) move a <a href='#list'>list</a> of points<br>lxy=<a href='#w'>w</a>.rotate(lxy,x0,y0,angle) rotate a <a href='#list'>list</a> of points<br><a href='#cv'>cv</a>.rotation(cx,cy,a) { draw... }<br><a href='#w'>w</a>.scale(10,20,2) { <a href='#w'>w</a>.draw_image(3,0,filename) } <br>>> draw in a transladed/scaled coord system<br>>> <a href='#image'>image</a> will be draw at 16/20 (10+3*2)/(20+0*2)<br>, and size doubled<br>end<br> <a href='#ex_canvas'>ex</a></div>
469
+ <div class='descr'>Creative Commons BY-SA : Regis d'Aubarede <regis.aubarede@gmail.com><br>LGPL<br>Create a drawing area, for pixel/vectoriel draw<br>for interactive actions see test.rb fo little example.<br><br>@<a href='#cv'>cv</a>=canvas(width,height,opt) do<br><a href='#on_canvas_draw'>on_canvas_draw</a> { |<a href='#w'>w</a>,ctx| myDraw(<a href='#w'>w</a>,ctx) }<br><a href='#on_canvas_button_press'>on_canvas_button_press</a> {|<a href='#w'>w</a>,e| [e.x,e.y] } must return a object which will given to next move/release callback<br><a href='#on_canvas_button_motion'>on_canvas_button_motion</a> {|<a href='#w'>w</a>,e,o| n=[e.x,e.y] ; ... ; n }<br><a href='#on_canvas_button_release'>on_canvas_button_release</a> {|<a href='#w'>w</a>,e,o| ... }<br>on_canvas_keypress {|<a href='#w'>w</a>,key| ... }<br>end<br><br>for drawing in canvas, this commands are usable.<br>basic gtk commands can still be uses ( move_to(), line_to()... )<br>def myDraw(<a href='#w'>w</a>,ctx)<br><a href='#w'>w</a>.init_ctx(color_fg="000000",color_bg="FFFFFF",width=1)<br><a href='#w'>w</a>.draw_point(x1,y1,color,width)<br><a href='#w'>w</a>.draw_polygon([x,y,...],colorFill,colorStroke,widthStroke)<br><a href='#w'>w</a>.draw_circle(cx,cy,rayon,colorFill,colorStroke,widthStroke)<br><a href='#w'>w</a>.draw_rectangle(x0,y0,<a href='#w'>w</a>,h, r,widthStroke,colorFill,<a href='#w'>w</a>)<br><a href='#cv'>cv</a>.draw_rounded_rectangle(x0,y0,<a href='#w'>w</a>,h,ar,colorStroke,colorFill,widthStroke)<br><a href='#w'>w</a>.draw_pie(x,y,r,l_ratio_color_label)<br><a href='#w'>w</a>.draw_arc(x,y,r,start,eend,width,color_stroke,color_fill=nil) camenber<br><a href='#w'>w</a>.draw_arc2(x,y,r,start,eend,width,color_stroke,color_fill=nil) circle fraction<br><a href='#w'>w</a>.draw_varbarr(x0,y0,x1,y1,vmin,vmax,l_date_value,width) {|<a href='#value'>value</a>| color}<br><a href='#w'>w</a>.draw_image(x,y,filename,sx,sy)<br><a href='#cv'>cv</a>.ctx_font(<a href='#name'>name</a>,size) choose font <a href='#name'>name</a> and size for next draw_text...<br><a href='#w'>w</a>.draw_text(x,y,<a href='#text'>text</a>,scale,color,bgcolor=nil)<br><a href='#w'>w</a>.draw_text_left(x,y,<a href='#text'>text</a>,scale,color,bgcolor=nil)<br><a href='#w'>w</a>.draw_text_center(x,y,<a href='#text'>text</a>,scale,color,bgcolor=nil)<br>lxy=<a href='#w'>w</a>.translate(lxy,dx=0,dy=0) move a <a href='#list'>list</a> of points<br>lxy=<a href='#w'>w</a>.rotate(lxy,x0,y0,angle) rotate a <a href='#list'>list</a> of points<br><a href='#cv'>cv</a>.rotation(cx,cy,a) { draw... }<br><a href='#w'>w</a>.scale(10,20,2) { <a href='#w'>w</a>.draw_image(3,0,filename) } <br>>> draw in a transladed/scaled coord system<br>>> <a href='#image'>image</a> will be draw at 16/20 (10+3*2)/(20+0*2)<br>, and size doubled<br><br>end<br>gradient can be use for recangle and polygone, see samples/gradients.rb<br>in place od String bg-color, say Array : <a href='#w'>w</a>{type direction color1 color2 ...}<br>type = linear/radial direction : tb Top->Bottom, bu Bottom->Up , lr: Left->Right, ..., trb -> TopLeft -> BottomRight <br> <a href='#ex_canvas'>ex</a></div>
470
470
 
471
471
  <div class='atitle'><a name='canvasOld'>canvasOld</a></div>
472
472
  <div class='api'>def canvasOld(width,height,option={})</div>
@@ -21,13 +21,14 @@ module Ruiby_dsl
21
21
  # w.draw_point(x1,y1,color,width)
22
22
  # w.draw_polygon([x,y,...],colorFill,colorStroke,widthStroke)
23
23
  # w.draw_circle(cx,cy,rayon,colorFill,colorStroke,widthStroke)
24
- # w.draw_rectangle(x0,y0,w,h,r,widthStroke,colorFill,colorStroke)
24
+ # w.draw_rectangle(x0,y0,w,h, r,widthStroke,colorFill,w)
25
25
  # cv.draw_rounded_rectangle(x0,y0,w,h,ar,colorStroke,colorFill,widthStroke)
26
26
  # w.draw_pie(x,y,r,l_ratio_color_label)
27
- # w.draw_arc(x,y,r,start,eend,width,color_stroke,color_fill=nil)
28
- # w.draw_arc2(x,y,r,start,eend,width,color_stroke,color_fill=nil)
27
+ # w.draw_arc(x,y,r,start,eend,width,color_stroke,color_fill=nil) # camenber
28
+ # w.draw_arc2(x,y,r,start,eend,width,color_stroke,color_fill=nil) # circle fraction
29
29
  # w.draw_varbarr(x0,y0,x1,y1,vmin,vmax,l_date_value,width) {|value| color}
30
30
  # w.draw_image(x,y,filename,sx,sy)
31
+ # cv.ctx_font(name,size) # choose font name and size for next draw_text...
31
32
  # w.draw_text(x,y,text,scale,color,bgcolor=nil)
32
33
  # w.draw_text_left(x,y,text,scale,color,bgcolor=nil)
33
34
  # w.draw_text_center(x,y,text,scale,color,bgcolor=nil)
@@ -38,7 +39,11 @@ module Ruiby_dsl
38
39
  # >> draw in a transladed/scaled coord system
39
40
  # >> image will be draw at 16/20 (10+3*2)/(20+0*2)
40
41
  # , and size doubled
42
+ #
41
43
  # end
44
+ # gradient can be use for recangle and polygone, see samples/gradients.rb
45
+ # in place od String bg-color, say Array : #w{type direction color1 color2 ...}
46
+ # type = linear/radial direction : tb Top->Bottom, bu Bottom->Up , lr: Left->Right, ..., trb -> TopLeft -> BottomRight
42
47
 
43
48
  def canvas(width,height,option={})
44
49
  autoslot()
@@ -92,15 +97,58 @@ module Ruiby_dsl
92
97
  colorStroke=@currentColorFg if colorFill.nil? && colorStroke.nil?
93
98
  _draw_poly(lxy,colorStroke,colorFill,widthStroke)
94
99
  end
100
+ def cv._set_gradient(cv,cr,acolor,lxy)
101
+ type,sens,*data=acolor
102
+ return unless type && sens && data && data.size>=2
103
+ cr.set_source_rgba(*Ruiby_dsl.cv_color_html("#FFF"))
104
+ if type =~ /^g/
105
+ x0,y0,x1,y1=*bbox(lxy)
106
+ case sens
107
+ when "tb" then x0,y0,x1,y1 = x1/2,y0, x1/2,y1
108
+ when "bu" then x1,y1,x0,y0 = x1/2,y0, x1/2,y1
109
+ when "lr" then x0,y0,x1,y1 = 0,y1/2, x1,y1/2
110
+ when "rl" then x0,y0,x1,y1 = x1,y1/2, x0,y1/2
111
+ when "trb" then x0,y0,x1,y1 = x0,y0, x1,y1
112
+ when "tlb" then x0,y0,x1,y1 = x1,y0, x0,y1
113
+ else
114
+ error("unknown gradient : #{sens}")
115
+ end
116
+ #p [sens,x0,y0,x1,y1]
117
+ pattern = Cairo::LinearPattern.new(x0,y0,x1,y1)
118
+ last_color="#000"
119
+ data.each_with_index {|color,i|
120
+ pos= 1.0*i/(data.length-1)
121
+ #p [pos,Ruiby_dsl.cv_color_html(color)]
122
+ color=last_color if color=="-"
123
+ last_color=color
124
+ pattern.add_color_stop(pos, *(Ruiby_dsl.cv_color_html(color)[0..2]))
125
+ }
126
+ cr.set_source(pattern)
127
+ else
128
+ end
129
+ end
130
+ def cv.bbox(lxy)
131
+ xmin,ymin=lxy[0..1]
132
+ xmax,ymax=lxy[0..1]
133
+ lxy.each_slice(2) {|x,y|
134
+ xmin=x if x<xmin ;ymin=y if y<ymin
135
+ xmax=x if x>xmax ;ymax=y if y>ymax
136
+ }
137
+ [xmin,ymin,xmax,ymax]
138
+ end
95
139
  def cv._draw_poly(lxy,color_fg,color_bg,width)
96
140
  raise("odd number of coord for lxy") if !lxy || lxy.size==0 || lxy.size%2==1
97
141
  w,cr=@currentCanvasCtx
98
142
  cr.set_line_width(width) if width
99
143
  x0,y0,*poly=*lxy
100
144
  if color_bg
101
- cr.set_source_rgba(*Ruiby_dsl.cv_color_html(color_bg))
102
145
  cr.move_to(x0,y0)
103
146
  poly.each_slice(2) {|x,y| cr.line_to(x,y) }
147
+ if Array === color_bg
148
+ _set_gradient(w,cr,color_bg,lxy)
149
+ else
150
+ cr.set_source_rgba(*Ruiby_dsl.cv_color_html(color_bg))
151
+ end
104
152
  cr.fill
105
153
  end
106
154
  if color_fg
@@ -115,21 +163,6 @@ module Ruiby_dsl
115
163
  width||=@currentWidth
116
164
  draw_line([x,y-width/2.0, x,y+width/2.0],color,width)
117
165
  end
118
- def cv.draw_text(x,y,text,scale=1,color=nil,bgcolor=nil)
119
- w,cr=@currentCanvasCtx
120
- cr.set_line_width(1)
121
- cr.set_source_rgba(*Ruiby_dsl.cv_color_html(color || @currentColorFg ))
122
- scale(x,y,scale) {
123
- if bgcolor
124
- a=cr.text_extents(text)
125
- w.draw_rectangle(0,-1,a.width,-a.height-3,1,bgcolor,bgcolor,0)
126
- cr.set_source_rgba(*Ruiby_dsl.cv_color_html(color || @currentColorFg ))
127
- end
128
- cr.move_to(0,0)
129
- cr.show_text(text)
130
- cr.fill
131
- }
132
- end
133
166
  def cv.draw_varbarr(x0,y0,x1,y1,dmin,dmax,lvalues0,width,&b)
134
167
  ax=1.0*(x1-x0)/(dmax-dmin) ;bx= x0-ax*dmin
135
168
  ay=1.0*(y1-y0)/(dmax-dmin) ;by= y0-ay*dmin
@@ -157,6 +190,21 @@ module Ruiby_dsl
157
190
  cr.select_font_face(fd.family, Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_NORMAL)
158
191
  cr.set_font_size(size)
159
192
  end
193
+ def cv.draw_text(x,y,text,scale=1,color=nil,bgcolor=nil)
194
+ w,cr=@currentCanvasCtx
195
+ cr.set_line_width(1)
196
+ cr.set_source_rgba(*Ruiby_dsl.cv_color_html(color || @currentColorFg ))
197
+ scale(x,y,scale) {
198
+ if bgcolor
199
+ a=cr.text_extents(text)
200
+ w.draw_rectangle(0,-1,a.width,-a.height-3,1,bgcolor,bgcolor,0)
201
+ cr.set_source_rgba(*Ruiby_dsl.cv_color_html(color || @currentColorFg ))
202
+ end
203
+ cr.move_to(0,0)
204
+ cr.show_text(text)
205
+ cr.fill
206
+ }
207
+ end
160
208
 
161
209
  def cv.draw_text_left(x,y,text,scale=1,color=nil,bgcolor=nil)
162
210
  w,cr=@currentCanvasCtx
@@ -198,7 +246,11 @@ module Ruiby_dsl
198
246
  cv,cr=@currentCanvasCtx
199
247
  pi=Math::PI
200
248
  ar=[ar,ar,ar,ar] if ar.kind_of?(Numeric)
201
- cr.set_source_rgba(*Ruiby_dsl.cv_color_html(colorFill ? colorFill : colorStroke))
249
+ if Array === colorFill
250
+ _set_gradient(w,cr,colorFill,[x0,y0,x0+w,y0+h])
251
+ else
252
+ cr.set_source_rgba(*Ruiby_dsl.cv_color_html(colorFill ? colorFill : colorStroke))
253
+ end
202
254
  cr.set_line_width( widthStroke )
203
255
  r=ar[0]
204
256
  cr.move_to(x0,y0+r)
@@ -375,6 +427,7 @@ module Ruiby_dsl
375
427
  def on_canvas_draw(&blk)
376
428
  _accept?(:handler)
377
429
  @currentCanvas.signal_connect( 'draw' ) do |w,cr|
430
+ next if defined?($RUIBY_CANVAS_ERROR) && $RUIBY_CANVAS_ERROR==true
378
431
  cr.set_line_join(Cairo::LINE_JOIN_ROUND)
379
432
  cr.set_line_cap(Cairo::LINE_CAP_ROUND)
380
433
  cr.set_line_width(2)
@@ -383,8 +436,10 @@ module Ruiby_dsl
383
436
  begin
384
437
  w.instance_eval { @currentCanvasCtx=[w,cr] }
385
438
  blk.call(w,cr)
439
+ $RUIBY_CANVAS_ERROR=false
386
440
  #w.instance_eval { @currentCanvasCtx=nil }
387
441
  rescue Exception => e
442
+ $RUIBY_CANVAS_ERROR=true
388
443
  after(1) { error(e) }
389
444
  end
390
445
  end
@@ -58,6 +58,7 @@ module Ruiby_dsl
58
58
  end
59
59
  def scrolled_win.set_data(words)
60
60
  raise("list.set_data() out of main thread!") if $__mainthread__ != Thread.current
61
+ list().unselect_all
61
62
  list().model.clear
62
63
  words.each { |w| list().model.append[0]=w }
63
64
  end
@@ -70,7 +70,7 @@ module Ruiby_dsl
70
70
  l=c[:data].each_with_object([]) { |(y,x),a|
71
71
  a << x*c[:xa]+c[:xb] ; a << y*c[:ya]+c[:yb]
72
72
  }
73
- if c[:bgrgba]
73
+ if c[:bgcolor]
74
74
  l1= [0,c[:yb]] + l + [ c[:xminmax].last*c[:xa]+c[:xb] ,c[:yb]]
75
75
  w.draw_polygon(l1,c[:bgcolor],c[:color],2)
76
76
  else
@@ -1010,10 +1010,13 @@ module Ruiby_dsl
1010
1010
  require "gst"
1011
1011
  require "clutter-gtk" # gem install clutter-gtk
1012
1012
  require "clutter-gst" # gem install clutter-gstreamer
1013
-
1013
+ p 1
1014
1014
  clutter = ClutterGtk::Embed.new
1015
+ p 2
1015
1016
  video=ClutterGst::VideoTexture.new
1017
+ p 3
1016
1018
  clutter.stage.add_child(video)
1019
+ p 4
1017
1020
  video.width=w
1018
1021
  video.height=h
1019
1022
  video.uri = url if url
@@ -459,8 +459,8 @@ module Ruiby_dsl
459
459
  require "clutter-gtk" # gem install clutter-gtk
460
460
  require "clutter-gst" # gem install clutter-gstreamer
461
461
  ClutterGst::VideoTexture.new
462
- rescue
463
- error("Not ready for Clutter/Gstreame...")
462
+ rescue Exception => e
463
+ error("Not ready for Clutter/Gstreame...",e)
464
464
  return button("no video")
465
465
  end
466
466
  p 1
@@ -7,9 +7,10 @@ require_relative '../lib/Ruiby.rb'
7
7
  Ruiby.app width: 400, height:200, title: "Drawing Ruiby/canvas test" do
8
8
  pt=[0,0]
9
9
  stack do
10
+ @lab=labeli("@")
10
11
  canvas(0,0) do
11
12
  on_canvas_draw do |w,ctx|
12
- w.draw_rectangle(10,10,180,180,30,"#F00","#00F",1)
13
+ w.draw_rectangle(0,0,400,200,0,nil,%w{g tb #AAA #555 - - - - - - - #AAA},2)
13
14
  w.draw_rectangle(30,30,70,70,[0,0,20,20],"#F00","#00A",1)
14
15
  w.draw_rectangle(60,110,50,50,[10,10,0,0],"#F00","#A0A",1)
15
16
  w.draw_rectangle(110,15,50,50,[0,10,10,0],"#F00","#AAA",1)
@@ -19,7 +20,8 @@ Ruiby.app width: 400, height:200, title: "Drawing Ruiby/canvas test" do
19
20
 
20
21
  w.draw_rectangle(pt.first-2,pt.last-2,3,3,0,"#000","#000",0) if pt!=[0,0]
21
22
  end
22
- on_canvas_button_press {|w,e| pt=[e.x,e.y] }
23
+ on_canvas_button_press {|w,e| pt=[e.x,e.y] ; @lab.text=pt.to_s ; pt}
24
+ on_canvas_button_motion {|w,e,o| pt=[e.x,e.y] ; @lab.text=pt.to_s ; pt}
23
25
  end
24
26
  end
25
27
  end
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ # Creative Commons BY-SA : Regis d'Aubarede <regis.aubarede@gmail.com>
3
+ # LGPL
4
+
5
+ require_relative '../lib/Ruiby.rb'
6
+
7
+ Ruiby.app width: 400, height: 300, title: "Drawing Ruiby/canvas test" do
8
+ pt=[0,0]
9
+ stack do
10
+ canvas(0,0) do
11
+ on_canvas_draw do |w,ctx|
12
+ w.draw_rectangle(0,0,200-1,100-1,0 ,nil,%w{g tb #F00 #FF0 #00F},2)
13
+ w.draw_rectangle(200,0,200-1,100-1,0 ,nil,%w{g bu #F00 #FF0 #00F},2)
14
+ w.draw_rectangle(0,100,200-1,100-1,0 ,nil,%w{g lr #F00 #FF0 #00F},2)
15
+ w.draw_rectangle(200,100,200,100,0 ,nil,%w{g tlb #F00 #FF0 #00F},2)
16
+ w.draw_rounded_rectangle(0,200,200,100,30 ,nil,%w{g tb #AAA #AAA #AAA #FFF #AAA #AAA #AAA},2)
17
+ w.draw_rounded_rectangle(200,200,200,100,30 ,nil,%w{g trb #FFF #AAA #555},2)
18
+
19
+ w.draw_rectangle(pt.first-2,pt.last-2,3,3,0,"#000","#000",0) if pt!=[0,0]
20
+ end
21
+ on_canvas_button_press {|w,e| pt=[e.x,e.y] }
22
+ end
23
+ end
24
+ end
@@ -10,6 +10,9 @@
10
10
  ######################################################################
11
11
 
12
12
  require_relative '../lib/Ruiby.rb'
13
+ require "gst"
14
+ require "clutter-gtk" # gem install clutter-gtk
15
+ require "clutter-gst" # gem install clutter-gstreamer
13
16
 
14
17
  Gem.loaded_specs.map {|n,g| puts " | %10s %6s " % [g.name,g.version] }
15
18
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Ruiby
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.23.0
4
+ version: 3.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Regis d'Aubarede
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-25 00:00:00.000000000 Z
11
+ date: 2017-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gtk3
@@ -4741,6 +4741,7 @@ files:
4741
4741
  - samples/gadget_trading.rb
4742
4742
  - samples/gol.rb
4743
4743
  - samples/gol2.rb
4744
+ - samples/gradients.rb
4744
4745
  - samples/hello.rb
4745
4746
  - samples/icones.rb
4746
4747
  - samples/images.rb
@@ -4887,6 +4888,7 @@ test_files:
4887
4888
  - samples/gadget_trading.rb
4888
4889
  - samples/gol.rb
4889
4890
  - samples/gol2.rb
4891
+ - samples/gradients.rb
4890
4892
  - samples/hello.rb
4891
4893
  - samples/icones.rb
4892
4894
  - samples/images.rb