A tiny drawing library. include line draw and bitmap-font draw.bitmap-font is from linux-kernel-source.

Committer:
tosihisa
Date:
Thu Oct 21 13:52:40 2010 +0000
Revision:
0:b49309b1b9d3
Child:
2:ad7277b09655
1st release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tosihisa 0:b49309b1b9d3 1
tosihisa 0:b49309b1b9d3 2 /**
tosihisa 0:b49309b1b9d3 3 * @section LICENSE
tosihisa 0:b49309b1b9d3 4 *
tosihisa 0:b49309b1b9d3 5 * This source code is "GPLv2" license.
tosihisa 0:b49309b1b9d3 6 * The original of the font image is Linux kernel source.
tosihisa 0:b49309b1b9d3 7 * Because the Linux kernel license is "GPLv2 with the exception articles",
tosihisa 0:b49309b1b9d3 8 * this program also applies GPLv2.
tosihisa 0:b49309b1b9d3 9 *
tosihisa 0:b49309b1b9d3 10 * Copyright (C) 2010 tosihisa
tosihisa 0:b49309b1b9d3 11 *
tosihisa 0:b49309b1b9d3 12 * @section DESCRIPTION
tosihisa 0:b49309b1b9d3 13 *
tosihisa 0:b49309b1b9d3 14 * Tiny library of drawing in framebuffer
tosihisa 0:b49309b1b9d3 15 *
tosihisa 0:b49309b1b9d3 16 */
tosihisa 0:b49309b1b9d3 17
tosihisa 0:b49309b1b9d3 18 #ifndef __TINYDRAW_H /* { */
tosihisa 0:b49309b1b9d3 19 #define __TINYDRAW_H
tosihisa 0:b49309b1b9d3 20
tosihisa 0:b49309b1b9d3 21 #include "linuxfont/linuxfont.h"
tosihisa 0:b49309b1b9d3 22
tosihisa 0:b49309b1b9d3 23 #define TD_X_MAX (128)
tosihisa 0:b49309b1b9d3 24 #define TD_Y_MAX (64)
tosihisa 0:b49309b1b9d3 25
tosihisa 0:b49309b1b9d3 26 typedef short TD_XY_t;
tosihisa 0:b49309b1b9d3 27
tosihisa 0:b49309b1b9d3 28 typedef struct td_point_s {
tosihisa 0:b49309b1b9d3 29 TD_XY_t x;
tosihisa 0:b49309b1b9d3 30 TD_XY_t y;
tosihisa 0:b49309b1b9d3 31 } TD_POINT_t;
tosihisa 0:b49309b1b9d3 32
tosihisa 0:b49309b1b9d3 33 typedef unsigned char TD_COLOR_t;
tosihisa 0:b49309b1b9d3 34
tosihisa 0:b49309b1b9d3 35 typedef struct td_color_pair_s {
tosihisa 0:b49309b1b9d3 36 TD_COLOR_t fore;
tosihisa 0:b49309b1b9d3 37 TD_COLOR_t back;
tosihisa 0:b49309b1b9d3 38 } TD_COLOR_PAIR_t;
tosihisa 0:b49309b1b9d3 39
tosihisa 0:b49309b1b9d3 40 class TinyDraw {
tosihisa 0:b49309b1b9d3 41 public:
tosihisa 0:b49309b1b9d3 42 /**
tosihisa 0:b49309b1b9d3 43 * The frame buffer is cleared by 0.
tosihisa 0:b49309b1b9d3 44 *
tosihisa 0:b49309b1b9d3 45 * @param none.
tosihisa 0:b49309b1b9d3 46 * @return none.
tosihisa 0:b49309b1b9d3 47 */
tosihisa 0:b49309b1b9d3 48 void clear(void);
tosihisa 0:b49309b1b9d3 49
tosihisa 0:b49309b1b9d3 50 /**
tosihisa 0:b49309b1b9d3 51 * The dot is drawn in specified coordinates by the specified color code.
tosihisa 0:b49309b1b9d3 52 *
tosihisa 0:b49309b1b9d3 53 * @param x [in] X coordinates
tosihisa 0:b49309b1b9d3 54 * @param y [in] Y coordinates
tosihisa 0:b49309b1b9d3 55 * @param fcol [in] Color-code (0 or 1 or COL_TRANS).
tosihisa 0:b49309b1b9d3 56 * @return none.
tosihisa 0:b49309b1b9d3 57 */
tosihisa 0:b49309b1b9d3 58 void drawPoint(TD_XY_t x,TD_XY_t y,TD_COLOR_t fcol);
tosihisa 0:b49309b1b9d3 59
tosihisa 0:b49309b1b9d3 60 /**
tosihisa 0:b49309b1b9d3 61 * It draws in the line.
tosihisa 0:b49309b1b9d3 62 *
tosihisa 0:b49309b1b9d3 63 * @param p1 [in] point of start.
tosihisa 0:b49309b1b9d3 64 * @param p2 [in] point of end.
tosihisa 0:b49309b1b9d3 65 * @param col [in] Color-code (now only use 'fore').
tosihisa 0:b49309b1b9d3 66 * @return none.
tosihisa 0:b49309b1b9d3 67 */
tosihisa 0:b49309b1b9d3 68 void drawLine(TD_POINT_t *p1,TD_POINT_t *p2,TD_COLOR_PAIR_t *col);
tosihisa 0:b49309b1b9d3 69
tosihisa 0:b49309b1b9d3 70 /**
tosihisa 0:b49309b1b9d3 71 * It draws in the character.
tosihisa 0:b49309b1b9d3 72 *
tosihisa 0:b49309b1b9d3 73 * @param pnt [in] point of draw (upper left corner of font)
tosihisa 0:b49309b1b9d3 74 * @param c [in] character code(only use ASCII-CODE now)
tosihisa 0:b49309b1b9d3 75 * @param col [in] Color-code.
tosihisa 0:b49309b1b9d3 76 * @param fontdesc [in] font-descriptor.
tosihisa 0:b49309b1b9d3 77 * @return none.
tosihisa 0:b49309b1b9d3 78 */
tosihisa 0:b49309b1b9d3 79 void drawChar(TD_POINT_t *pnt,int c,TD_COLOR_PAIR_t *col,const struct font_desc *fontdesc);
tosihisa 0:b49309b1b9d3 80
tosihisa 0:b49309b1b9d3 81 /**
tosihisa 0:b49309b1b9d3 82 * It draws in the string.
tosihisa 0:b49309b1b9d3 83 *
tosihisa 0:b49309b1b9d3 84 * @param pnt [in] point of draw (upper left corner of font)
tosihisa 0:b49309b1b9d3 85 * @param str [in] string (only use ASCII-CODE now)
tosihisa 0:b49309b1b9d3 86 * @param col [in] Color-code.
tosihisa 0:b49309b1b9d3 87 * @param fontdesc [in] font-descriptor.
tosihisa 0:b49309b1b9d3 88 * @return none.
tosihisa 0:b49309b1b9d3 89 */
tosihisa 0:b49309b1b9d3 90 void drawStr(TD_POINT_t *pnt,char *str,TD_COLOR_PAIR_t *col,const struct font_desc *fontdesc);
tosihisa 0:b49309b1b9d3 91
tosihisa 0:b49309b1b9d3 92 /**
tosihisa 0:b49309b1b9d3 93 * Get the bit map image of the font.
tosihisa 0:b49309b1b9d3 94 *
tosihisa 0:b49309b1b9d3 95 * @param c [in] character code(only use ASCII-CODE now)
tosihisa 0:b49309b1b9d3 96 * @param fontdesc [in] font-descriptor.
tosihisa 0:b49309b1b9d3 97 * @return pointer for bit map image.
tosihisa 0:b49309b1b9d3 98 */
tosihisa 0:b49309b1b9d3 99 char *getCharImage(int c,const struct font_desc *fontdesc);
tosihisa 0:b49309b1b9d3 100
tosihisa 0:b49309b1b9d3 101 /**
tosihisa 0:b49309b1b9d3 102 * Get the framebuffer pointer.
tosihisa 0:b49309b1b9d3 103 *
tosihisa 0:b49309b1b9d3 104 * @param pnt [in] Coordinates.
tosihisa 0:b49309b1b9d3 105 * @return pointer for framebuffer.
tosihisa 0:b49309b1b9d3 106 */
tosihisa 0:b49309b1b9d3 107 TD_COLOR_t *getVRAMPtr(TD_POINT_t *pnt);
tosihisa 0:b49309b1b9d3 108
tosihisa 0:b49309b1b9d3 109 /**
tosihisa 0:b49309b1b9d3 110 * Get the top of framebuffer pointer.
tosihisa 0:b49309b1b9d3 111 *
tosihisa 0:b49309b1b9d3 112 * @param none.
tosihisa 0:b49309b1b9d3 113 * @return pointer for top of framebuffer.
tosihisa 0:b49309b1b9d3 114 */
tosihisa 0:b49309b1b9d3 115 TD_COLOR_t *getVRAMPtr(void);
tosihisa 0:b49309b1b9d3 116
tosihisa 0:b49309b1b9d3 117 static const int X_MAX = TD_X_MAX;
tosihisa 0:b49309b1b9d3 118 static const int Y_MAX = TD_Y_MAX;
tosihisa 0:b49309b1b9d3 119 static const TD_COLOR_t COL_TRANS = 0x80;
tosihisa 0:b49309b1b9d3 120
tosihisa 0:b49309b1b9d3 121 private:
tosihisa 0:b49309b1b9d3 122 TD_XY_t calcAbs(TD_XY_t v);
tosihisa 0:b49309b1b9d3 123 TD_XY_t calcMin(TD_XY_t v1,TD_XY_t v2);
tosihisa 0:b49309b1b9d3 124 int checkSign(TD_XY_t v);
tosihisa 0:b49309b1b9d3 125
tosihisa 0:b49309b1b9d3 126 TD_COLOR_t VRAM[(TD_X_MAX * TD_Y_MAX * sizeof(TD_COLOR_t))/8];
tosihisa 0:b49309b1b9d3 127 };
tosihisa 0:b49309b1b9d3 128
tosihisa 0:b49309b1b9d3 129 #endif /* __TINYDRAW_H } */
tosihisa 0:b49309b1b9d3 130