0
@@ -16,7 +16,7 @@ VALUE cShoes, cApp, cDialog, cShoesWindow, cMouse, cCanvas, cFlow, cStack, cMask
0
VALUE eVlcError, eImageError, eNotImpl;
0
VALUE reHEX_SOURCE, reHEX3_SOURCE, reRGB_SOURCE, reRGBA_SOURCE, reGRAY_SOURCE, reGRAYA_SOURCE, reLF;
0
VALUE symAltQuest, symAltSlash, symAltDot;
0
-ID s_aref, s_mult, s_perc, s_bind, s_gsub, s_keys, s_update, s_new, s_run, s_to_pattern, s_to_i, s_to_s, s_URI, s_angle, s_arrow, s_autoplay, s_begin, s_body, s_call, s_center, s_change, s_checked, s_checked_q, s_choose, s_click, s_corner, s_curve, s_distance, s_displace_left, s_displace_top, s_downcase, s_draw, s_end, s_fill, s_finish, s_font, s_group, s_hand, s_headers, s_hidden, s_host, s_hover, s_href, s_inner, s_insert, s_items, s_keypress, s_link, s_method, s_motion, s_path, s_port, s_progress, s_release, s_save, s_wheel, s_s
croll, s_start, s_attach, s_leading, s_leave, s_match, s_text, s_title, s_top, s_right, s_bottom, s_left, s_up, s_down, s_height, s_resizable, s_remove, s_strokewidth, s_width, s_margin, s_margin_left, s_margin_right, s_margin_top, s_margin_bottom, s_radius, s_secret, s_now, s_debug, s_error, s_warn, s_info;
0
+ID s_aref, s_mult, s_perc, s_bind, s_gsub, s_keys, s_update, s_new, s_run, s_to_pattern, s_to_i, s_to_s, s_URI, s_angle, s_arrow, s_autoplay, s_begin, s_body, s_call, s_center, s_change, s_checked, s_checked_q, s_choose, s_click, s_corner, s_curve, s_distance, s_displace_left, s_displace_top, s_downcase, s_draw, s_end, s_fill, s_finish, s_font, s_group, s_hand, s_headers, s_hidden, s_host, s_hover, s_href, s_inner, s_insert, s_items, s_keypress, s_link, s_method, s_motion, s_path, s_port, s_progress, s_release, s_save, s_wheel, s_s
troke, s_scroll, s_start, s_attach, s_leading, s_leave, s_match, s_text, s_title, s_top, s_right, s_bottom, s_left, s_up, s_down, s_height, s_resizable, s_remove, s_strokewidth, s_width, s_margin, s_margin_left, s_margin_right, s_margin_top, s_margin_bottom, s_radius, s_secret, s_now, s_debug, s_error, s_warn, s_info;
0
// Mauricio's instance_eval hack (he bested my cloaker back in 06 Jun 2006)
0
@@ -530,8 +530,6 @@ shoes_control_show_ref(SHOES_CONTROL_REF ref)
0
shoes_shape_mark(shoes_shape *path)
0
- rb_gc_mark_maybe(path->fg);
0
- rb_gc_mark_maybe(path->bg);
0
rb_gc_mark_maybe(path->parent);
0
rb_gc_mark_maybe(path->attr);
0
@@ -554,11 +552,11 @@ shoes_shape_new(cairo_path_t *line, VALUE parent, VALUE x, VALUE y, int w, int h
0
Data_Get_Struct(parent, shoes_canvas, canvas);
0
- path->fg = canvas->fg;
0
- path->bg = canvas->bg;
0
+ if (NIL_P(ATTR(path->attr, stroke))) ATTRSET(path->attr, stroke, canvas->fg);
0
+ if (NIL_P(ATTR(path->attr, fill))) ATTRSET(path->attr, fill, canvas->bg);
0
ATTRSET(path->attr, left, x);
0
ATTRSET(path->attr, top, y);
0
@@ -573,18 +571,19 @@ shoes_shape_alloc(VALUE klass)
0
obj = Data_Wrap_Struct(klass, shoes_shape_mark, shoes_shape_free, shape);
0
#define PATH_OUT(pen, cfunc) \
0
- if (!NIL_P(
self_t->pen)) \
0
+ if (!NIL_P(
ATTR(self_t->attr, pen))) \
0
+ VALUE p = ATTR(self_t->attr, pen); \
0
+ if (!rb_obj_is_kind_of(p, cPattern)) \
0
+ ATTRSET(self_t->attr, pen, p = rb_funcall(p, s_to_pattern, 0)); \
0
double r = 0., sw = self_t->sw; \
0
cairo_matrix_t matrix1, matrix2; \
0
shoes_pattern *pattern; \
0
- Data_Get_Struct(
self_t->pen, shoes_pattern, pattern); \
0
+ Data_Get_Struct(
ATTR(self_t->attr, pen), shoes_pattern, pattern); \
0
PATTERN_SCALE(pattern); \
0
cairo_set_line_width(canvas->cr, sw); \
0
cairo_set_source(canvas->cr, PATTERN(pattern)); \
0
@@ -604,8 +603,8 @@ shoes_shape_draw(VALUE self, VALUE c, VALUE actual)
0
cairo_new_path(canvas->cr);
0
cairo_append_path(canvas->cr, self_t->line);
0
- PATH_OUT(bg, cairo_fill_preserve);
0
- PATH_OUT(fg, cairo_stroke);
0
+ PATH_OUT(fill, cairo_fill_preserve);
0
+ PATH_OUT(stroke, cairo_stroke);
0
cairo_restore(canvas->cr);
0
@@ -4022,6 +4021,7 @@ shoes_ruby_init()
0
s_save = rb_intern("save");
0
s_wheel = rb_intern("wheel");
0
s_scroll = rb_intern("scroll");
0
+ s_stroke = rb_intern("stroke");
0
s_start = rb_intern("start");
0
s_attach = rb_intern("attach");
0
s_text = rb_intern("text");
Comments
No one has commented yet.