Make more generic and adapt to new gfx functions.
authorbernie <bernie@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 14 Sep 2004 20:56:39 +0000 (20:56 +0000)
committerbernie <bernie@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 14 Sep 2004 20:56:39 +0000 (20:56 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@195 38d2e660-2303-0410-9eaa-f027e97ec537

mware/charts.c
mware/charts.h

index 03b3a3af36fcdbe8b610e02ae967cccc438daddd..f2aafeeb613e3d8f8a48d1bb5d9bb86ede8eddd2 100755 (executable)
@@ -26,8 +26,8 @@
 
 /*#*
  *#* $Log$
- *#* Revision 1.4  2004/08/25 14:12:09  rasky
- *#* Aggiornato il comment block dei log RCS
+ *#* Revision 1.5  2004/09/14 20:56:39  bernie
+ *#* Make more generic and adapt to new gfx functions.
  *#*
  *#* Revision 1.3  2004/08/11 19:39:12  bernie
  *#* Use chart_x_t and chart_y_t for the input dataset.
 #include <mware/gfx.h>
 
 
-void chart_init(Bitmap *bm, vcoord_t xmin, vcoord_t ymin, vcoord_t xmax, vcoord_t ymax)
+#ifndef CONFIG_CHART_ARROWS
+#define CONFIG_CHART_ARROWS 0
+#endif
+
+
+void chart_init(Bitmap *bm, coord_t xmin, coord_t ymin, coord_t xmax, coord_t ymax)
 {
        gfx_ClearBitmap(bm);
+
+       gfx_SetClipRect(bm, xmin + CHART_BORDERLEFT, ymin + CHART_BORDERTOP,
+               xmax - CHART_BORDERRIGHT, ymax - CHART_BORDERBOTTOM);
+
        chart_drawAxis(bm);
+}
 
-       gfx_SetClipRect(bm, CHART_BORDERLEFT, CHART_BORDERTOP,
-               bm->width - CHART_BORDERRIGHT - 1, bm->height - CHART_BORDERBOTTOM - 1);
 
+void chart_setScale(Bitmap *bm, chart_x_t xmin, chart_y_t ymin, chart_x_t xmax, chart_y_t ymax)
+{
        gfx_SetViewRect(bm, xmin, ymin, xmax, ymax);
-
-       //CHECK_WALL(wall_before_raster, WALL_SIZE);
-       //CHECK_WALL(wall_after_raster, WALL_SIZE);
 }
 
 
@@ -61,22 +68,31 @@ void chart_init(Bitmap *bm, vcoord_t xmin, vcoord_t ymin, vcoord_t xmax, vcoord_
  */
 void chart_drawAxis(Bitmap *bm)
 {
+#if CONFIG_CHART_ARROWS
+
        /* Draw axis */
-       gfx_MoveTo(bm, CHART_BORDERLEFT, 4);
-       gfx_LineTo(bm, CHART_BORDERLEFT, CHART_BORDERTOP + CHART_HEIGHT - 1);
-       gfx_LineTo(bm, CHART_BORDERLEFT + CHART_WIDTH - 5, CHART_BORDERTOP + CHART_HEIGHT - 1);
+       gfx_MoveTo(bm, bm->cr.xmin, bm->cr.ymin + 4);
+       gfx_LineTo(bm, bm->cr.xmin, bm->cr.ymax - 1);
+       gfx_LineTo(bm, bm->cr.xmax - 4 - 1, bm->cr.ymax - 1);
 
        /* Draw up arrow */
-       gfx_MoveTo(bm, CHART_BORDERLEFT - 2, 3);
-       gfx_LineTo(bm, CHART_BORDERLEFT + 2, 3);
-       gfx_LineTo(bm, CHART_BORDERLEFT, 0);
-       gfx_LineTo(bm, CHART_BORDERLEFT - 2, 3);
+       gfx_MoveTo(bm, bm->cr.xmin - 2, bm->cr.ymin + 3);
+       gfx_LineTo(bm, bm->cr.xmin + 2, bm->cr.ymin + 3);
+       gfx_LineTo(bm, bm->cr.xmin, bm->cr.ymin);
+       gfx_LineTo(bm, bm->cr.xmin - 2, bm->cr.ymin + 3);
 
        /* Draw right arrow */
-       gfx_MoveTo(bm, CHART_BORDERLEFT + CHART_WIDTH - 4, CHART_BORDERTOP + CHART_HEIGHT - 3);
-       gfx_LineTo(bm, CHART_BORDERLEFT + CHART_WIDTH - 4, CHART_BORDERTOP + CHART_HEIGHT + 1);
-       gfx_LineTo(bm, CHART_BORDERLEFT + CHART_WIDTH - 1, CHART_BORDERTOP + CHART_HEIGHT - 1);
-       gfx_LineTo(bm, CHART_BORDERLEFT + CHART_WIDTH - 4, CHART_BORDERTOP + CHART_HEIGHT - 3);
+       gfx_MoveTo(bm, bm->cr.xmax - 4, bm->cr.ymax - 3);
+       gfx_LineTo(bm, bm->cr.xmax - 4, bm->cr.ymax + 1);
+       gfx_LineTo(bm, bm->cr.xmax - 1, bm->cr.ymax - 1);
+       gfx_LineTo(bm, bm->cr.xmax - 4, bm->cr.ymax - 3);
+
+#else /* CONFIG_CHART_ARROWS */
+
+       /* Draw a box around the chart */
+       gfx_RectDraw(bm, bm->cr.xmin, bm->cr.ymin, bm->cr.xmax, bm->cr.ymax);
+
+#endif /* CONFIG_CHART_ARROWS */
 
        //CHECK_WALL(wall_before_raster, WALL_SIZE);
        //CHECK_WALL(wall_after_raster, WALL_SIZE);
@@ -120,10 +136,13 @@ void chart_drawDots(Bitmap *bm, const chart_x_t *dots_x, const chart_y_t *dots_y
 
                y = gfx_TransformY(bm, dots_y[i]);
 
-               gfx_DrawRect(bm, x - 1, y - 1, x + 1, y + 1);
+               /* Draw tick over the curve */
+               gfx_RectFill(bm,
+                       x - TICKS_WIDTH / 2, y - TICKS_HEIGHT / 2,
+                       x + (TICKS_WIDTH + 1) / 2, y + (TICKS_HEIGHT + 1) / 2);
 
-               /* Disegna ticks sull'asse X */
-               gfx_DrawLine(bm, x, bm->height - 1, x, CHART_HEIGHT - 1);
+               /* Draw vertical line from the curve to the X-axis */
+               //gfx_DrawLine(bm, x, y, x, bm->cr.ymax - 1);
        }
 
        //CHECK_WALL(wall_before_raster, WALL_SIZE);
index e110b2043ac639230e56450d88b4c026083de271..ca55259cef83a703aa3ad646d0efca9a2dd602d0 100755 (executable)
@@ -18,8 +18,8 @@
 
 /*#*
  *#* $Log$
- *#* Revision 1.4  2004/08/25 14:12:09  rasky
- *#* Aggiornato il comment block dei log RCS
+ *#* Revision 1.5  2004/09/14 20:56:39  bernie
+ *#* Make more generic and adapt to new gfx functions.
  *#*
  *#* Revision 1.3  2004/08/11 19:39:12  bernie
  *#* Use chart_x_t and chart_y_t for the input dataset.
@@ -39,7 +39,7 @@
  * \{
  */
 #define TICKS_HEIGHT     2
-#define TICKS_WIDTH      3
+#define TICKS_WIDTH      2
 /*\}*/
 
 /*!
  * \{
  */
 #define CHART_BORDERTOP       0
-#define CHART_BORDERBOTTOM    TICKS_HEIGHT
-#define CHART_BORDERLEFT      TICKS_WIDTH
+#define CHART_BORDERBOTTOM    0
+#define CHART_BORDERLEFT      0
 #define CHART_BORDERRIGHT     0
 /*\}*/
 
-/*!
- * \name Chart size in pixels
- * \{
- */
-#define CHART_WIDTH     (bm->width - CHART_BORDERLEFT - CHART_BORDERRIGHT)
-#define CHART_HEIGHT    (bm->height  - CHART_BORDERTOP - CHART_BORDERBOTTOM)
-/*\}*/
-
 #ifndef CONFIG_CHART_TYPE_X
 #define CONFIG_CHART_TYPE_X vcoord_t
 #endif
@@ -73,9 +65,10 @@ typedef CONFIG_CHART_TYPE_Y chart_y_t;
 
 
 /* Public function protos */
-extern void chart_init(Bitmap *bm, vcoord_t xmin, vcoord_t ymin, vcoord_t xmax, vcoord_t ymax);
-extern void chart_drawAxis(Bitmap *bm);
-extern void chart_drawCurve(Bitmap *bm, const chart_y_t *curve_y, int curve_cnt);
-extern void chart_drawDots(Bitmap *bm, const chart_x_t *dots_x, const chart_y_t *dots_y, int cnt);
+void chart_init(Bitmap *bm, coord_t xmin, coord_t ymin, coord_t xmax, coord_t ymax);
+void chart_setScale(Bitmap *bm, chart_x_t xmin, chart_y_t ymin, chart_x_t xmax, chart_y_t ymax);
+void chart_drawAxis(Bitmap *bm);
+void chart_drawCurve(Bitmap *bm, const chart_y_t *curve_y, int curve_cnt);
+void chart_drawDots(Bitmap *bm, const chart_x_t *dots_x, const chart_y_t *dots_y, int cnt);
 
 #endif /* MWARE_CHARTS_H */