text_xprintf(): Support all styles; Pixel-wise text centering.
[bertos.git] / mware / gfx.c
index f4b0da33c40540cc69fff3c2128db9961179ccef..9f9cf6215c57ef984f76f49464b2ecc8ca033775 100755 (executable)
  * \brief General pourpose graphics routines
  */
 
-/*
- * $Log$
- * Revision 1.3  2004/08/04 03:16:59  bernie
- * Switch to new DevLib CONFIG_ convention.
- *
- * Revision 1.2  2004/06/03 11:27:09  bernie
- * Add dual-license information.
- *
- */
+/*#*
+ *#* $Log$
+ *#* Revision 1.6  2004/09/06 21:50:46  bernie
+ *#* Clarify side-effects in documentation.
+ *#*
+ *#* Revision 1.4  2004/08/24 16:53:10  bernie
+ *#* Use new-style config macros.
+ *#*
+ *#* Revision 1.3  2004/08/04 03:16:59  bernie
+ *#* Switch to new DevLib CONFIG_ convention.
+ *#*
+ *#* Revision 1.2  2004/06/03 11:27:09  bernie
+ *#* Add dual-license information.
+ *#*
+ *#*/
 
 #include "gfx.h"
 #include "config.h"
@@ -58,6 +64,8 @@
 
 /*!
  * Initialize a Bitmap structure with the provided parameters.
+ *
+ * \note The pen position is reset to the origin.
  */
 void gfx_InitBitmap(Bitmap *bm, uint8_t *raster, coord_t w, coord_t h)
 {
@@ -71,6 +79,8 @@ void gfx_InitBitmap(Bitmap *bm, uint8_t *raster, coord_t w, coord_t h)
 
 /*!
  * Clear the whole bitmap surface to all zeros
+ *
+ * \note This function does \b not update the current pen position
  */
 void gfx_ClearBitmap(Bitmap *bm)
 {
@@ -81,6 +91,8 @@ void gfx_ClearBitmap(Bitmap *bm)
 /*!
  * Copy a raster picture located in program memory in the bitmap.
  * The size of the raster to copy *must* be the same of the raster bitmap.
+ *
+ * \note This function does \b not update the current pen position
  */
 void gfx_blitBitmap_P(Bitmap *bm, const prog_uchar *raster)
 {
@@ -88,12 +100,18 @@ void gfx_blitBitmap_P(Bitmap *bm, const prog_uchar *raster)
 }
 
 
+/*!
+ * Draw a line on the bitmap \a bm using the specified start and end
+ * coordinates.
+ *
+ * \note This function does \b not update the current pen position
+ */
 void gfx_DrawLine(Bitmap *bm, coord_t x1, coord_t y1, coord_t x2, coord_t y2)
 {
        int x, y, e, len, adx, ady, signx, signy;
 
 
-#ifdef CONFIG_GFX_CLIPPING
+#if CONFIG_GFX_CLIPPING
        /* FIXME: broken */
 
        #define XMIN 0
@@ -149,7 +167,7 @@ void gfx_DrawLine(Bitmap *bm, coord_t x1, coord_t y1, coord_t x2, coord_t y2)
        #undef XMAX
        #undef YMAX
 
-#endif /* CONFIG_GRAPH_CLIPPING */
+#endif /* CONFIG_GFX_CLIPPING */
 
 
        if (x2 > x1)
@@ -224,13 +242,21 @@ void gfx_DrawLine(Bitmap *bm, coord_t x1, coord_t y1, coord_t x2, coord_t y2)
 }
 
 
+/*!
+ * Move the current pen position to the specified coordinates.
+ */
 void gfx_MoveTo(Bitmap *bm, coord_t x, coord_t y)
 {
        bm->penX = x;
        bm->penY = y;
 }
 
-
+/*!
+ * Draw a line from the current pen position to the new coordinates.
+ *
+ * \note This function moves the current pen position to the
+ *       new coordinates.
+ */
 void gfx_LineTo(Bitmap *bm, coord_t x, coord_t y)
 {
        gfx_DrawLine(bm, bm->penX, bm->penY, x, y);
@@ -240,7 +266,10 @@ void gfx_LineTo(Bitmap *bm, coord_t x, coord_t y)
 
 /*!
  * Draw a filled rectangle.
+ *
  * \note The bottom-right border of the rectangle is not drawn.
+ *
+ * \note This function does \b not update the current pen position
  */
 void gfx_FillRect(Bitmap *bm, coord_t x1, coord_t y1, coord_t x2, coord_t y2)
 {
@@ -269,7 +298,9 @@ void gfx_FillRect(Bitmap *bm, coord_t x1, coord_t y1, coord_t x2, coord_t y2)
 
 /*!
  * Draw an empty rectangle.
+ *
  * \note The bottom-right border of the rectangle is not drawn.
+ * \note This function does \b not update the current pen position
  */
 void gfx_DrawRect(Bitmap *bm, coord_t x1, coord_t y1, coord_t x2, coord_t y2)
 {
@@ -288,6 +319,7 @@ void gfx_DrawRect(Bitmap *bm, coord_t x1, coord_t y1, coord_t x2, coord_t y2)
 /*!
  * Clear a rectangular area.
  * \note The bottom-right border of the rectangle is not drawn.
+ * \note This function does \b not update the current pen position
  */
 void gfx_ClearRect(Bitmap *bm, coord_t x1, coord_t y1, coord_t x2, coord_t y2)
 {