summaryrefslogtreecommitdiff
path: root/include/nsfb_plot.h
diff options
context:
space:
mode:
authorVincent Sanders <vince@netsurf-browser.org>2009-04-08 10:17:09 +0000
committerVincent Sanders <vince@netsurf-browser.org>2009-04-08 10:17:09 +0000
commit056e1ebed94379db41ebb2e40cc88a873cfb4411 (patch)
treed1d01c4b9f9d4c2c2b1db4b705e631d49cf2e6b0 /include/nsfb_plot.h
downloadlibnsfb-056e1ebed94379db41ebb2e40cc88a873cfb4411.tar.gz
libnsfb-056e1ebed94379db41ebb2e40cc88a873cfb4411.tar.bz2
initial commit of netsurf framebuffer library
svn path=/trunk/libnsfb/; revision=7060
Diffstat (limited to 'include/nsfb_plot.h')
-rw-r--r--include/nsfb_plot.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/include/nsfb_plot.h b/include/nsfb_plot.h
new file mode 100644
index 0000000..2dbd22a
--- /dev/null
+++ b/include/nsfb_plot.h
@@ -0,0 +1,88 @@
+
+
+/** Clears plotting area to a flat colour (if needed)
+ */
+typedef bool (nsfb_plotfn_clg_t)(nsfb_t *nsfb, nsfb_colour_t c);
+
+/** Plots a rectangle outline. The line can be solid, dotted or
+ * dashed. Top left corner at (x0,y0) and rectangle has given
+ * width and height.
+ */
+typedef bool (nsfb_plotfn_rectangle_t)(nsfb_t *nsfb, nsfb_bbox_t *rect, int line_width, nsfb_colour_t c, bool dotted, bool dashed);
+
+/** Plots a line from (x0,y0) to (x1,y1). Coordinates are at
+ * centre of line width/thickness.
+ */
+typedef bool (nsfb_plotfn_line_t)(nsfb_t *nsfb, nsfb_bbox_t *line, int line_width, nsfb_colour_t c, bool dotted, bool dashed);
+
+/** Plots a filled polygon with straight lines between points.
+ * The lines around the edge of the ploygon are not plotted. The
+ * polygon is filled with the non-zero winding rule.
+ */
+typedef bool (nsfb_plotfn_polygon_t)(nsfb_t *nsfb, const int *p, unsigned int n, nsfb_colour_t fill);
+
+/** Plots a filled rectangle. Top left corner at (x0,y0), bottom
+ * right corner at (x1,y1). Note: (x0,y0) is inside filled area,
+ * but (x1,y1) is below and to the right. See diagram below.
+ */
+typedef bool (nsfb_plotfn_fill_t)(nsfb_t *nsfb, nsfb_bbox_t *rect, nsfb_colour_t c);
+
+/** Sets a clip rectangle for subsequent plots.
+ */
+typedef bool (nsfb_plotfn_clip_t)(nsfb_t *nsfb, nsfb_bbox_t *clip);
+
+/** Plots an arc, around (x,y), from anticlockwise from angle1 to
+ * angle2. Angles are measured anticlockwise from horizontal, in
+ * degrees.
+ */
+typedef bool (nsfb_plotfn_arc_t)(nsfb_t *nsfb, int x, int y, int radius, int angle1, int angle2, nsfb_colour_t c);
+
+/** Plots a point.
+ *
+ * Plot a single alpha blended pixel.
+ */
+typedef bool (nsfb_plotfn_point_t)(nsfb_t *nsfb, int x, int y, nsfb_colour_t c);
+
+/** Plot an ellipse.
+ *
+ * plot an ellipse outline, note if teh bounding box is square this will plot a
+ * circle.
+ */
+typedef bool (nsfb_plotfn_ellipse_t)(nsfb_t *nsfb, nsfb_bbox_t *ellipse, nsfb_colour_t c);
+
+/** Plot a filled ellipse.
+ *
+ * plot a filled ellipse, note if the bounding box is square this will plot a
+ * circle.
+ */
+typedef bool (nsfb_plotfn_ellipse_fill_t)(nsfb_t *nsfb, nsfb_bbox_t *ellipse, nsfb_colour_t c);
+
+
+/** Plot bitmap
+ */
+typedef bool (nsfb_plotfn_bitmap_t)(nsfb_t *nsfb, nsfb_bbox_t *loc, nsfb_colour_t *pixel, int bmp_width, int bmp_height, int bmp_stride, bool alpha);
+
+
+/** Copy an area of screen
+ *
+ * Copy an area of the display.
+ */
+typedef bool (nsfb_plotfn_copy_t)(nsfb_t *nsfb, int srcx, int srcy, int width, int height, int dstx, int dsty);
+
+/** plotter function table. */
+typedef struct nsfb_plotter_fns_s {
+ nsfb_plotfn_clg_t *clg;
+ nsfb_plotfn_rectangle_t *rectangle;
+ nsfb_plotfn_line_t *line;
+ nsfb_plotfn_polygon_t *polygon;
+ nsfb_plotfn_fill_t *fill;
+ nsfb_plotfn_clip_t *clip;
+ nsfb_plotfn_ellipse_t *ellipse;
+ nsfb_plotfn_ellipse_fill_t *ellipse_fill;
+ nsfb_plotfn_arc_t *arc;
+ nsfb_plotfn_bitmap_t *bitmap;
+ nsfb_plotfn_point_t *point;
+ nsfb_plotfn_copy_t *copy;
+} nsfb_plotter_fns_t;
+
+