Tiny graphics library for STM32F746G-DISCO board
Dependents: RadarDemo 3DDemo RadarDemoT
RK043FN48H.h@3:1ddc4aa1e5cb, 2016-11-11 (annotated)
- Committer:
- karpent
- Date:
- Fri Nov 11 12:05:16 2016 +0000
- Revision:
- 3:1ddc4aa1e5cb
- Parent:
- 2:02b7b78e8510
Missing method DrawChar() added, DrawText() corrected.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
karpent | 0:566855d63a2f | 1 | // |
karpent | 0:566855d63a2f | 2 | // RK043FN48H.h - Graphics commands for DISCO_F746NG display build on top of stm32746g driver. |
karpent | 0:566855d63a2f | 3 | // |
karpent | 0:566855d63a2f | 4 | |
karpent | 0:566855d63a2f | 5 | #pragma once |
karpent | 0:566855d63a2f | 6 | |
karpent | 0:566855d63a2f | 7 | #include "Commons.h" |
karpent | 0:566855d63a2f | 8 | #include "Display.h" |
karpent | 0:566855d63a2f | 9 | #include "stm32746g_discovery_lcd.h" |
karpent | 2:02b7b78e8510 | 10 | #include "GrFont.h" |
karpent | 0:566855d63a2f | 11 | |
karpent | 0:566855d63a2f | 12 | #define ALPHA_MASK 0x00FFFFFF |
karpent | 0:566855d63a2f | 13 | |
karpent | 0:566855d63a2f | 14 | /** |
karpent | 0:566855d63a2f | 15 | * @brief Display layers available for RK043FN48H |
karpent | 0:566855d63a2f | 16 | */ |
karpent | 0:566855d63a2f | 17 | typedef enum ELayer { |
karpent | 0:566855d63a2f | 18 | Background = 0, // Bottom |
karpent | 0:566855d63a2f | 19 | Foreground = 1 // Upper |
karpent | 0:566855d63a2f | 20 | } Layer; |
karpent | 0:566855d63a2f | 21 | |
karpent | 0:566855d63a2f | 22 | /** |
karpent | 0:566855d63a2f | 23 | * @brief DISCO_F746NG display |
karpent | 0:566855d63a2f | 24 | */ |
karpent | 0:566855d63a2f | 25 | class RK043FN48H : public Display |
karpent | 0:566855d63a2f | 26 | { |
karpent | 0:566855d63a2f | 27 | public: |
karpent | 0:566855d63a2f | 28 | RK043FN48H(); |
karpent | 0:566855d63a2f | 29 | ~RK043FN48H(); |
karpent | 0:566855d63a2f | 30 | |
karpent | 0:566855d63a2f | 31 | /** |
karpent | 0:566855d63a2f | 32 | * @brief Clear the active layer using background color. |
karpent | 0:566855d63a2f | 33 | * @retval None |
karpent | 0:566855d63a2f | 34 | */ |
karpent | 2:02b7b78e8510 | 35 | void virtual Clear(); |
karpent | 0:566855d63a2f | 36 | |
karpent | 0:566855d63a2f | 37 | /** |
karpent | 0:566855d63a2f | 38 | * @brief Clear the active layer using given color. |
karpent | 0:566855d63a2f | 39 | * @retval None |
karpent | 0:566855d63a2f | 40 | */ |
karpent | 0:566855d63a2f | 41 | void Clear(uint32_t color); |
karpent | 0:566855d63a2f | 42 | |
karpent | 0:566855d63a2f | 43 | /** |
karpent | 0:566855d63a2f | 44 | * @brief Clear selected layer using given color. |
karpent | 0:566855d63a2f | 45 | * @retval None |
karpent | 0:566855d63a2f | 46 | */ |
karpent | 0:566855d63a2f | 47 | void ClearLayer(Layer layer, uint32_t color); |
karpent | 2:02b7b78e8510 | 48 | |
karpent | 0:566855d63a2f | 49 | /** |
karpent | 0:566855d63a2f | 50 | * @brief Set background color for active layer. |
karpent | 0:566855d63a2f | 51 | * @retval None |
karpent | 0:566855d63a2f | 52 | */ |
karpent | 0:566855d63a2f | 53 | void SetBackgroundColor(uint32_t color); |
karpent | 0:566855d63a2f | 54 | |
karpent | 0:566855d63a2f | 55 | /** |
karpent | 0:566855d63a2f | 56 | * @brief Set foreground color for active layer. |
karpent | 0:566855d63a2f | 57 | * @retval None |
karpent | 0:566855d63a2f | 58 | */ |
karpent | 0:566855d63a2f | 59 | void SetForegroundColor(uint32_t color); |
karpent | 2:02b7b78e8510 | 60 | |
karpent | 0:566855d63a2f | 61 | /// <summary> |
karpent | 0:566855d63a2f | 62 | /// Sets the color of the draw. |
karpent | 0:566855d63a2f | 63 | /// </summary> |
karpent | 0:566855d63a2f | 64 | /// <param name="red">The red.</param> |
karpent | 0:566855d63a2f | 65 | /// <param name="green">The green.</param> |
karpent | 0:566855d63a2f | 66 | /// <param name="blue">The blue.</param> |
karpent | 0:566855d63a2f | 67 | /// <param name="alpha">The alpha.</param> |
karpent | 0:566855d63a2f | 68 | void virtual SetDrawColor(uint8_t red, uint8_t green, uint8_t blue, uint8_t alpha); |
karpent | 2:02b7b78e8510 | 69 | |
karpent | 2:02b7b78e8510 | 70 | /// <summary> |
karpent | 2:02b7b78e8510 | 71 | /// Gets the color of the draw. |
karpent | 2:02b7b78e8510 | 72 | /// </summary> |
karpent | 2:02b7b78e8510 | 73 | /// <returns>Draw color value</returns> |
karpent | 2:02b7b78e8510 | 74 | uint32_t virtual GetDrawColor(); |
karpent | 2:02b7b78e8510 | 75 | |
karpent | 0:566855d63a2f | 76 | /// <summary> |
karpent | 2:02b7b78e8510 | 77 | /// Sets the clear color. |
karpent | 0:566855d63a2f | 78 | /// </summary> |
karpent | 2:02b7b78e8510 | 79 | /// <param name="red">The red.</param> |
karpent | 2:02b7b78e8510 | 80 | /// <param name="green">The green.</param> |
karpent | 2:02b7b78e8510 | 81 | /// <param name="blue">The blue.</param> |
karpent | 2:02b7b78e8510 | 82 | /// <param name="alpha">The alpha.</param> |
karpent | 2:02b7b78e8510 | 83 | void virtual SetClearColor(uint8_t red, uint8_t green, uint8_t blue, uint8_t alpha); |
karpent | 2:02b7b78e8510 | 84 | |
karpent | 2:02b7b78e8510 | 85 | /// <summary> |
karpent | 2:02b7b78e8510 | 86 | /// Gets the clear color. |
karpent | 2:02b7b78e8510 | 87 | /// </summary> |
karpent | 2:02b7b78e8510 | 88 | /// <returns>Clear color value</returns> |
karpent | 2:02b7b78e8510 | 89 | uint32_t virtual GetClearColor(); |
karpent | 2:02b7b78e8510 | 90 | |
karpent | 0:566855d63a2f | 91 | /// <summary> |
karpent | 0:566855d63a2f | 92 | /// Draws the point. |
karpent | 0:566855d63a2f | 93 | /// </summary> |
karpent | 0:566855d63a2f | 94 | /// <param name="posX">The position x.</param> |
karpent | 0:566855d63a2f | 95 | /// <param name="posY">The position y.</param> |
karpent | 0:566855d63a2f | 96 | /// <param name="colorMask">The color mask.</param> |
karpent | 0:566855d63a2f | 97 | void virtual DrawPoint(int posX, int posY, uint32_t colorMask); |
karpent | 2:02b7b78e8510 | 98 | |
karpent | 0:566855d63a2f | 99 | //void virtual DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2); |
karpent | 0:566855d63a2f | 100 | |
karpent | 0:566855d63a2f | 101 | //void virtual FillRectangle(uint16_t posX, uint16_t posY, uint16_t x2, uint16_t y2); |
karpent | 0:566855d63a2f | 102 | |
karpent | 0:566855d63a2f | 103 | void CopyBitmap(Layer layer, uint8_t *bitmap, uint32_t width, uint32_t height, uint32_t rgbGolorCode); |
karpent | 0:566855d63a2f | 104 | |
karpent | 0:566855d63a2f | 105 | /// <summary> |
karpent | 0:566855d63a2f | 106 | /// Returns screen width. |
karpent | 0:566855d63a2f | 107 | /// </summary> |
karpent | 0:566855d63a2f | 108 | /// <returns></returns> |
karpent | 0:566855d63a2f | 109 | uint16_t virtual DisplayWidth(); |
karpent | 0:566855d63a2f | 110 | |
karpent | 0:566855d63a2f | 111 | /// <summary> |
karpent | 0:566855d63a2f | 112 | /// Returns screen height. |
karpent | 0:566855d63a2f | 113 | /// </summary> |
karpent | 0:566855d63a2f | 114 | /// <returns></returns> |
karpent | 0:566855d63a2f | 115 | uint16_t virtual DisplayHeight(); |
karpent | 2:02b7b78e8510 | 116 | |
karpent | 0:566855d63a2f | 117 | void SetActiveLayer(Layer layer); |
karpent | 2:02b7b78e8510 | 118 | |
karpent | 0:566855d63a2f | 119 | Layer GetActiveLayer(); |
karpent | 2:02b7b78e8510 | 120 | |
karpent | 0:566855d63a2f | 121 | void SetLayersTransparency( uint8_t background, uint8_t foreground); |
karpent | 2:02b7b78e8510 | 122 | |
karpent | 0:566855d63a2f | 123 | void SetLayersVisibility( bool background, bool foreground); |
karpent | 2:02b7b78e8510 | 124 | |
karpent | 2:02b7b78e8510 | 125 | //============================================================================== |
karpent | 2:02b7b78e8510 | 126 | // |
karpent | 2:02b7b78e8510 | 127 | // Text output |
karpent | 2:02b7b78e8510 | 128 | // |
karpent | 2:02b7b78e8510 | 129 | //============================================================================== |
karpent | 2:02b7b78e8510 | 130 | |
karpent | 2:02b7b78e8510 | 131 | /** |
karpent | 2:02b7b78e8510 | 132 | * @brief Change current text cursor location for the given position on the screen. |
karpent | 2:02b7b78e8510 | 133 | * Remark - cursor is unvisible. |
karpent | 2:02b7b78e8510 | 134 | * @param x : X position |
karpent | 2:02b7b78e8510 | 135 | * @param y : Y position |
karpent | 2:02b7b78e8510 | 136 | * @retval None |
karpent | 2:02b7b78e8510 | 137 | */ |
karpent | 2:02b7b78e8510 | 138 | void GotoXY(int x, int y); |
karpent | 2:02b7b78e8510 | 139 | |
karpent | 2:02b7b78e8510 | 140 | /** |
karpent | 2:02b7b78e8510 | 141 | * @brief Put character on the screen using current font and cursor location. |
karpent | 2:02b7b78e8510 | 142 | * See also: gotoXY(x,y), SetFont(type), SetForegroundColor(c), SetBackgroundColor(c) |
karpent | 2:02b7b78e8510 | 143 | * @param ch: Character to print |
karpent | 2:02b7b78e8510 | 144 | * @retval None |
karpent | 2:02b7b78e8510 | 145 | */ |
karpent | 2:02b7b78e8510 | 146 | void putch(char ch); |
karpent | 2:02b7b78e8510 | 147 | |
karpent | 2:02b7b78e8510 | 148 | /** |
karpent | 2:02b7b78e8510 | 149 | * @brief Put string on the screen using current font and cursor location. |
karpent | 2:02b7b78e8510 | 150 | * See also: gotoXY(x,y), SetFont(type), SetForegroundColor(c), SetBackgroundColor(c) |
karpent | 2:02b7b78e8510 | 151 | * @param str: C string (char *) to print. |
karpent | 2:02b7b78e8510 | 152 | * @retval None |
karpent | 2:02b7b78e8510 | 153 | */ |
karpent | 2:02b7b78e8510 | 154 | void puts(const char * str); |
karpent | 2:02b7b78e8510 | 155 | |
karpent | 2:02b7b78e8510 | 156 | /** |
karpent | 2:02b7b78e8510 | 157 | * @brief Draw string on the screen at given position using current font. |
karpent | 2:02b7b78e8510 | 158 | * See also: SetFont(type), SetForegroundColor(c), SetBackgroundColor(c) |
karpent | 2:02b7b78e8510 | 159 | * @param str: C string (char *) to print. |
karpent | 2:02b7b78e8510 | 160 | * @retval None |
karpent | 2:02b7b78e8510 | 161 | */ |
karpent | 2:02b7b78e8510 | 162 | void virtual DrawText(int posX, int posY, char * str); |
karpent | 2:02b7b78e8510 | 163 | |
karpent | 0:566855d63a2f | 164 | private: |
karpent | 0:566855d63a2f | 165 | |
karpent | 2:02b7b78e8510 | 166 | // Frame buffer addresses for layers |
karpent | 0:566855d63a2f | 167 | uint32_t FbForegroundStartAdress; |
karpent | 0:566855d63a2f | 168 | uint32_t FbBackgroundStartAdress; |
karpent | 0:566855d63a2f | 169 | |
karpent | 0:566855d63a2f | 170 | /** |
karpent | 0:566855d63a2f | 171 | * @brief Mirror structure for drivers DropProp, |
karpent | 0:566855d63a2f | 172 | * Contains selected font, background and foreground color |
karpent | 0:566855d63a2f | 173 | */ |
karpent | 0:566855d63a2f | 174 | LCD_DrawPropTypeDef actualDrawProp[MAX_LAYER_NUMBER]; |
karpent | 2:02b7b78e8510 | 175 | |
karpent | 2:02b7b78e8510 | 176 | /** |
karpent | 2:02b7b78e8510 | 177 | * @brief Actual cursor text position for text output |
karpent | 2:02b7b78e8510 | 178 | */ |
karpent | 2:02b7b78e8510 | 179 | Point _cursorPos[MAX_LAYER_NUMBER]; |
karpent | 2:02b7b78e8510 | 180 | |
karpent | 2:02b7b78e8510 | 181 | /** |
karpent | 2:02b7b78e8510 | 182 | * @brief Current fonts for layers |
karpent | 2:02b7b78e8510 | 183 | */ |
karpent | 2:02b7b78e8510 | 184 | GrFont _selectedFont[MAX_LAYER_NUMBER]; |
karpent | 2:02b7b78e8510 | 185 | |
karpent | 2:02b7b78e8510 | 186 | /** |
karpent | 2:02b7b78e8510 | 187 | * @brief Internal method to move text coursor to the next line |
karpent | 2:02b7b78e8510 | 188 | * depending on font height. Font width is not used. |
karpent | 2:02b7b78e8510 | 189 | * @param w : Font width |
karpent | 2:02b7b78e8510 | 190 | * @param h : Font height |
karpent | 2:02b7b78e8510 | 191 | */ |
karpent | 2:02b7b78e8510 | 192 | void gotoNewLine(int w, int h); |
karpent | 2:02b7b78e8510 | 193 | |
karpent | 0:566855d63a2f | 194 | }; |
karpent | 0:566855d63a2f | 195 |