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

Committer:
tosihisa
Date:
Sat Nov 06 12:26:54 2010 +0000
Revision:
2:ad7277b09655
Parent:
0:b49309b1b9d3
Child:
3:c861edfe5dc1
Update Comment (Not changed code)

Who changed what in which revision?

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