From fd3c7753435658a6aeebf1b68d18178a6c7cf57d Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Wed, 6 Jan 2010 22:26:55 +0000 Subject: add bezier curve plotters svn path=/trunk/libnsfb/; revision=9794 --- include/libnsfb.h | 20 ++++++++++++++++++++ include/libnsfb_plot.h | 4 ++++ include/nsfb_plot.h | 10 ++++++++++ 3 files changed, 34 insertions(+) (limited to 'include') diff --git a/include/libnsfb.h b/include/libnsfb.h index 5975768..41490ad 100644 --- a/include/libnsfb.h +++ b/include/libnsfb.h @@ -15,9 +15,29 @@ typedef struct nsfb_cursor_s nsfb_cursor_t; typedef struct nsfb_s nsfb_t; + +/** representation of a colour. + * + * The colour value comprises of four components arranged in the order ABGR: + * bits 24-31 are the alpha value and represent the opacity. 0 is + * transparent i.e. there would be no change in the target surface if + * this colour were to be used and 0xFF is opaque. + * + * bits 16-23 are the Blue component of the colour. + * + * bits 8-15 are the Green component of the colour. + * + * bits 0-7 are the Red component of the colour. + */ typedef uint32_t nsfb_colour_t; typedef struct nsfb_event_s nsfb_event_t; +/** co-ordinate for plotting operations */ +typedef struct nsfb_point_s { + int x; + int y; +} nsfb_point_t; + /** bounding box for plotting operations */ typedef struct nsfb_bbox_s { int x0; diff --git a/include/libnsfb_plot.h b/include/libnsfb_plot.h index 45aad28..1d420b0 100644 --- a/include/libnsfb_plot.h +++ b/include/libnsfb_plot.h @@ -78,6 +78,10 @@ bool nsfb_plot_arc(nsfb_t *nsfb, int x, int y, int radius, int angle1, int angle */ bool nsfb_plot_point(nsfb_t *nsfb, int x, int y, nsfb_colour_t c); +bool nsfb_plot_cubic_bezier(nsfb_t *nsfb, nsfb_bbox_t *curve, nsfb_point_t *ctrla, nsfb_point_t *ctrlb, nsfb_colour_t c); + +bool nsfb_plot_quadratic_bezier(nsfb_t *nsfb, nsfb_bbox_t *curve, nsfb_point_t *ctrla, nsfb_colour_t cl); + /** copy an area of screen * * Copy an area of the display. diff --git a/include/nsfb_plot.h b/include/nsfb_plot.h index 790a923..52af7cd 100644 --- a/include/nsfb_plot.h +++ b/include/nsfb_plot.h @@ -83,6 +83,14 @@ typedef bool (nsfb_plotfn_glyph1_t)(nsfb_t *nsfb, nsfb_bbox_t *loc, const uint8_ */ typedef bool (nsfb_plotfn_readrect_t)(nsfb_t *nsfb, nsfb_bbox_t *rect, nsfb_colour_t *buffer); +/** Plot quadratic bezier spline + */ +typedef bool (nsfb_plotfn_quadratic_bezier_t)(nsfb_t *nsfb, nsfb_bbox_t *curve, nsfb_point_t *ctrla, nsfb_colour_t c); + +/** Plot cubic bezier spline + */ +typedef bool (nsfb_plotfn_cubic_bezier_t)(nsfb_t *nsfb, nsfb_bbox_t *curve, nsfb_point_t *ctrla, nsfb_point_t *ctrlb, nsfb_colour_t c); + /** plotter function table. */ typedef struct nsfb_plotter_fns_s { nsfb_plotfn_clg_t *clg; @@ -101,6 +109,8 @@ typedef struct nsfb_plotter_fns_s { nsfb_plotfn_glyph8_t *glyph8; nsfb_plotfn_glyph1_t *glyph1; nsfb_plotfn_readrect_t *readrect; + nsfb_plotfn_quadratic_bezier_t *quadratic; + nsfb_plotfn_cubic_bezier_t *cubic; } nsfb_plotter_fns_t; -- cgit v1.2.3