public
Description: a tiny graphical app kit for ruby
Homepage: http://code.whytheluckystiff.net/shoes
Clone URL: git://github.com/why/shoes.git
Search Repo:
 * shoes/ruby.c: add radial gradients. fix shadow effect to use DEST_OUT 
 operator.
why (author)
Tue May 13 09:15:35 -0700 2008
commit  61af0f9cbde84beec100e8e08b7873c59d88482e
tree    011b728db2ff3ef63deffbd73bc1bb26fa0980f4
parent  60c47c64dacae4f2b2edf46576ebc8f96feae641
...
1179
1180
1181
1182
 
1183
1184
1185
1186
1187
...
1617
1618
1619
 
1620
1621
1622
1623
1624
1625
1626
1627
 
 
1628
1629
1630
1631
 
 
 
 
 
 
 
 
 
 
 
 
 
1632
1633
1634
...
1179
1180
1181
 
1182
1183
1184
1185
1186
1187
...
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
 
 
1627
1628
1629
 
 
 
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
0
@@ -1179,7 +1179,7 @@
0
 {
0
   shoes_effect *fx = (shoes_effect *)data;
0
   int distance = ATTR2(int, fx->attr, distance, 4);
0
- shoes_layer_blur_filter(cr, data, CAIRO_OPERATOR_IN, CAIRO_OPERATOR__OVER, distance);
0
+ shoes_layer_blur_filter(cr, data, CAIRO_OPERATOR_IN, CAIRO_OPERATOR_DEST_OVER, distance);
0
 }
0
 
0
 void
0
0
0
@@ -1617,18 +1617,29 @@
0
 {
0
   double angle = ATTR2(dbl, attr, angle, 0.);
0
   double rads = angle * SHOES_RAD2PI;
0
+ double edge = sin(rads) + cos(rads);
0
 
0
   if (rb_obj_is_kind_of(r1, rb_cString))
0
     r1 = shoes_color_parse(cColor, r1);
0
   if (rb_obj_is_kind_of(r2, rb_cString))
0
     r2 = shoes_color_parse(cColor, r2);
0
 
0
- pattern->pattern = cairo_pattern_create_linear(0.0, 0.0, 0.0, sin(rads) + cos(rads));
0
- if (angle != 0.)
0
+ VALUE radius = ATTR(attr, radius);
0
+ if (!NIL_P(radius))
0
   {
0
- cairo_matrix_t matrix;
0
- cairo_matrix_init_rotate(&matrix, rads);
0
- cairo_pattern_set_matrix(pattern->pattern, &matrix);
0
+ double r = 0.001;
0
+ if (rb_obj_is_kind_of(r, rb_cFloat)) r = NUM2DBL(radius);
0
+ pattern->pattern = cairo_pattern_create_radial(0.5, 0.5, r, edge / 2., edge / 2., edge / 2.);
0
+ }
0
+ else
0
+ {
0
+ pattern->pattern = cairo_pattern_create_linear(0.0, 0.0, 0.0, edge);
0
+ if (angle != 0.)
0
+ {
0
+ cairo_matrix_t matrix;
0
+ cairo_matrix_init_rotate(&matrix, rads);
0
+ cairo_pattern_set_matrix(pattern->pattern, &matrix);
0
+ }
0
   }
0
   shoes_color_grad_stop(pattern->pattern, 0.0, r1);
0
   shoes_color_grad_stop(pattern->pattern, 1.0, r2);

Comments

    No one has commented yet.