From: bernie Date: Tue, 14 Sep 2004 20:56:39 +0000 (+0000) Subject: Make more generic and adapt to new gfx functions. X-Git-Tag: 1.0.0~1046 X-Git-Url: https://codewiz.org/gitweb?a=commitdiff_plain;h=6d839174d4e6613c2eb86994820faf0e0bebdd90;p=bertos.git Make more generic and adapt to new gfx functions. git-svn-id: https://src.develer.com/svnoss/bertos/trunk@195 38d2e660-2303-0410-9eaa-f027e97ec537 --- diff --git a/mware/charts.c b/mware/charts.c index 03b3a3af..f2aafeeb 100755 --- a/mware/charts.c +++ b/mware/charts.c @@ -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. @@ -41,18 +41,25 @@ #include -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); diff --git a/mware/charts.h b/mware/charts.h index e110b204..ca55259c 100755 --- a/mware/charts.h +++ b/mware/charts.h @@ -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 /*\}*/ /*! @@ -47,19 +47,11 @@ * \{ */ #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 */