diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2009-07-10 18:36:49 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2009-07-10 18:36:49 +0000 |
commit | 680298e61ce664e95b3f8143c0c0b814d5966f2a (patch) | |
tree | cd4bdf673143a3ff8496498927de526adfb9804e /amiga | |
parent | 5feb7018c5228a22d370d070c1f7c3dad2c71e25 (diff) | |
download | netsurf-680298e61ce664e95b3f8143c0c0b814d5966f2a.tar.gz netsurf-680298e61ce664e95b3f8143c0c0b814d5966f2a.tar.bz2 |
plotters line refactor
svn path=/trunk/netsurf/; revision=8446
Diffstat (limited to 'amiga')
-rwxr-xr-x | amiga/plotters.c | 57 | ||||
-rwxr-xr-x | amiga/plotters.h | 3 |
2 files changed, 42 insertions, 18 deletions
diff --git a/amiga/plotters.c b/amiga/plotters.c index 5ae0234f5..8f7e525cc 100755 --- a/amiga/plotters.c +++ b/amiga/plotters.c @@ -260,19 +260,31 @@ bool ami_rectangle(int x0, int y0, int x1, int y1, const plot_style_t *style) return true; } -bool ami_line(int x0, int y0, int x1, int y1, int width, - colour c, bool dotted, bool dashed) +bool ami_line(int x0, int y0, int x1, int y1, const plot_style_t *style) { #ifndef NS_AMIGA_CAIRO_ALL - glob->rp.PenWidth = width; - glob->rp.PenHeight = width; + glob->rp.PenWidth = style->stroke_width; + glob->rp.PenHeight = style->stroke_width; - glob->rp.LinePtrn = PATT_LINE; - if(dotted) glob->rp.LinePtrn = PATT_DOT; - if(dashed) glob->rp.LinePtrn = PATT_DASH; + switch (style->stroke_type) { + case PLOT_OP_TYPE_SOLID: /**< Solid colour */ + default: + glob->rp.LinePtrn = PATT_LINE; + break; - SetRPAttrs(&glob->rp,RPTAG_APenColor,p96EncodeColor(RGBFB_A8B8G8R8,c), - TAG_DONE); + case PLOT_OP_TYPE_DOT: /**< Doted plot */ + glob->rp.LinePtrn = PATT_DOT; + break; + + case PLOT_OP_TYPE_DASH: /**< dashed plot */ + glob->rp.LinePtrn = PATT_DASH; + break; + } + + SetRPAttrs(&glob->rp, + RPTAG_APenColor, + p96EncodeColor(RGBFB_A8B8G8R8, style->stroke_colour), + TAG_DONE); Move(&glob->rp,x0,y0); Draw(&glob->rp,x1,y1); @@ -280,15 +292,28 @@ bool ami_line(int x0, int y0, int x1, int y1, int width, glob->rp.PenHeight = 1; glob->rp.LinePtrn = PATT_LINE; #else - ami_cairo_set_colour(glob->cr,c); - if (dotted) ami_cairo_set_dotted(glob->cr); - else if (dashed) ami_cairo_set_dashed(glob->cr); - else ami_cairo_set_solid(glob->cr); + ami_cairo_set_colour(glob->cr, style->stroke_colour); - if (width == 0) - width = 1; + switch (style->stroke_type) { + case PLOT_OP_TYPE_SOLID: /**< Solid colour */ + default: + ami_cairo_set_solid(glob->cr); + break; + + case PLOT_OP_TYPE_DOT: /**< Doted plot */ + ami_cairo_set_dotted(glob->cr); + break; + + case PLOT_OP_TYPE_DASH: /**< dashed plot */ + ami_cairo_set_dashed(glob->cr); + break; + } + + if (style->stroke_width == 0) + cairo_set_line_width(glob->cr, 1); + else + cairo_set_line_width(glob->cr, style->stroke_width); - cairo_set_line_width(glob->cr, width); cairo_move_to(glob->cr, x0 + 0.5, y0 + 0.5); cairo_line_to(glob->cr, x1 + 0.5, y1 + 0.5); cairo_stroke(glob->cr); diff --git a/amiga/plotters.h b/amiga/plotters.h index 486823115..37c892f62 100755 --- a/amiga/plotters.h +++ b/amiga/plotters.h @@ -43,8 +43,7 @@ extern const struct plotter_table amiplot; bool ami_clg(colour c); bool ami_rectangle(int x0, int y0, int x1, int y1, const plot_style_t *style); -bool ami_line(int x0, int y0, int x1, int y1, int width, - colour c, bool dotted, bool dashed); +bool ami_line(int x0, int y0, int x1, int y1, const plot_style_t *style); bool ami_polygon(const int *p, unsigned int n, colour fill); bool ami_clip(int x0, int y0, int x1, int y1); bool ami_text(int x, int y, const struct css_style *style, |