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:34:54 2010 +0000
Revision:
4:68c16070d1db
Parent:
3:c861edfe5dc1
Update comment(not changed code)

Who changed what in which revision?

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