landscape mode options
Dependents: DISCO-F429ZI_LCDTS_demo_richard
Fork of LCD_DISCO_F429ZI by
LCD_DISCO_F429ZI.cpp@2:55b265685e55, 2018-03-16 (annotated)
- Committer:
- pierrebizouard
- Date:
- Fri Mar 16 09:56:25 2018 +0000
- Revision:
- 2:55b265685e55
- Parent:
- 1:1bcdc0162217
added copy layer
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bcostm | 0:dc55a068bc1a | 1 | /* Copyright (c) 2010-2011 mbed.org, MIT License |
bcostm | 0:dc55a068bc1a | 2 | * |
bcostm | 0:dc55a068bc1a | 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software |
bcostm | 0:dc55a068bc1a | 4 | * and associated documentation files (the "Software"), to deal in the Software without |
bcostm | 0:dc55a068bc1a | 5 | * restriction, including without limitation the rights to use, copy, modify, merge, publish, |
bcostm | 0:dc55a068bc1a | 6 | * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the |
bcostm | 0:dc55a068bc1a | 7 | * Software is furnished to do so, subject to the following conditions: |
bcostm | 0:dc55a068bc1a | 8 | * |
bcostm | 0:dc55a068bc1a | 9 | * The above copyright notice and this permission notice shall be included in all copies or |
bcostm | 0:dc55a068bc1a | 10 | * substantial portions of the Software. |
bcostm | 0:dc55a068bc1a | 11 | * |
bcostm | 0:dc55a068bc1a | 12 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING |
bcostm | 0:dc55a068bc1a | 13 | * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
bcostm | 0:dc55a068bc1a | 14 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
bcostm | 0:dc55a068bc1a | 15 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
bcostm | 0:dc55a068bc1a | 16 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
bcostm | 0:dc55a068bc1a | 17 | */ |
bcostm | 0:dc55a068bc1a | 18 | |
bcostm | 0:dc55a068bc1a | 19 | #include "LCD_DISCO_F429ZI.h" |
bcostm | 0:dc55a068bc1a | 20 | |
pierrebizouard | 2:55b265685e55 | 21 | #define FB_SIZE (320*240*4) |
pierrebizouard | 2:55b265685e55 | 22 | #define LAYER_COUNT 4 |
pierrebizouard | 2:55b265685e55 | 23 | #define LCD_FRAME_BUFFER_LAYER0 LCD_FRAME_BUFFER |
pierrebizouard | 2:55b265685e55 | 24 | #define CONVERTED_FRAME_BUFFER LCD_FRAME_BUFFER+FB_SIZE*LAYER_COUNT |
bcostm | 0:dc55a068bc1a | 25 | |
bcostm | 0:dc55a068bc1a | 26 | // Constructor |
bcostm | 0:dc55a068bc1a | 27 | LCD_DISCO_F429ZI::LCD_DISCO_F429ZI() |
bcostm | 0:dc55a068bc1a | 28 | { |
bcostm | 0:dc55a068bc1a | 29 | BSP_LCD_Init(); |
pierrebizouard | 2:55b265685e55 | 30 | int layer = 0; |
pierrebizouard | 2:55b265685e55 | 31 | for (int i=0; i<LAYER_COUNT; i++) |
pierrebizouard | 2:55b265685e55 | 32 | { |
pierrebizouard | 2:55b265685e55 | 33 | layer = (LAYER_COUNT-i-1); |
pierrebizouard | 2:55b265685e55 | 34 | BSP_LCD_LayerDefaultInit(layer, LCD_FRAME_BUFFER+layer*FB_SIZE); |
pierrebizouard | 2:55b265685e55 | 35 | BSP_LCD_SelectLayer(layer); |
pierrebizouard | 2:55b265685e55 | 36 | BSP_LCD_Clear(LCD_COLOR_WHITE); |
pierrebizouard | 2:55b265685e55 | 37 | if (layer != 0) { |
pierrebizouard | 2:55b265685e55 | 38 | BSP_LCD_SetColorKeying(layer, LCD_COLOR_WHITE); |
pierrebizouard | 2:55b265685e55 | 39 | BSP_LCD_SetLayerVisible(layer, DISABLE); |
pierrebizouard | 2:55b265685e55 | 40 | } |
pierrebizouard | 2:55b265685e55 | 41 | } |
pierrebizouard | 2:55b265685e55 | 42 | |
bcostm | 0:dc55a068bc1a | 43 | BSP_LCD_SelectLayer(0); |
bcostm | 0:dc55a068bc1a | 44 | BSP_LCD_SetFont(&Font16); |
bcostm | 0:dc55a068bc1a | 45 | BSP_LCD_DisplayOn(); |
bcostm | 0:dc55a068bc1a | 46 | BSP_LCD_Clear(LCD_COLOR_WHITE); |
bcostm | 0:dc55a068bc1a | 47 | } |
bcostm | 0:dc55a068bc1a | 48 | |
bcostm | 0:dc55a068bc1a | 49 | // Destructor |
bcostm | 0:dc55a068bc1a | 50 | LCD_DISCO_F429ZI::~LCD_DISCO_F429ZI() |
bcostm | 0:dc55a068bc1a | 51 | { |
bcostm | 0:dc55a068bc1a | 52 | |
bcostm | 0:dc55a068bc1a | 53 | } |
bcostm | 0:dc55a068bc1a | 54 | |
bcostm | 0:dc55a068bc1a | 55 | //================================================================================================================= |
bcostm | 0:dc55a068bc1a | 56 | // Public methods |
bcostm | 0:dc55a068bc1a | 57 | //================================================================================================================= |
bcostm | 0:dc55a068bc1a | 58 | |
bcostm | 0:dc55a068bc1a | 59 | uint8_t LCD_DISCO_F429ZI::Init(void) |
bcostm | 0:dc55a068bc1a | 60 | { |
bcostm | 0:dc55a068bc1a | 61 | return BSP_LCD_Init(); |
bcostm | 0:dc55a068bc1a | 62 | } |
bcostm | 0:dc55a068bc1a | 63 | |
bcostm | 0:dc55a068bc1a | 64 | uint32_t LCD_DISCO_F429ZI::GetXSize(void) |
bcostm | 0:dc55a068bc1a | 65 | { |
pierrebizouard | 1:1bcdc0162217 | 66 | return BSP_LCD_GetXSize(); |
bcostm | 0:dc55a068bc1a | 67 | } |
bcostm | 0:dc55a068bc1a | 68 | |
bcostm | 0:dc55a068bc1a | 69 | uint32_t LCD_DISCO_F429ZI::GetYSize(void) |
bcostm | 0:dc55a068bc1a | 70 | { |
pierrebizouard | 1:1bcdc0162217 | 71 | return BSP_LCD_GetYSize(); |
bcostm | 0:dc55a068bc1a | 72 | } |
bcostm | 0:dc55a068bc1a | 73 | |
bcostm | 0:dc55a068bc1a | 74 | void LCD_DISCO_F429ZI::LayerDefaultInit(uint16_t LayerIndex, uint32_t FB_Address) |
bcostm | 0:dc55a068bc1a | 75 | { |
bcostm | 0:dc55a068bc1a | 76 | BSP_LCD_LayerDefaultInit(LayerIndex, FB_Address); |
bcostm | 0:dc55a068bc1a | 77 | } |
bcostm | 0:dc55a068bc1a | 78 | |
bcostm | 0:dc55a068bc1a | 79 | void LCD_DISCO_F429ZI::SelectLayer(uint32_t LayerIndex) |
bcostm | 0:dc55a068bc1a | 80 | { |
bcostm | 0:dc55a068bc1a | 81 | BSP_LCD_SelectLayer(LayerIndex); |
bcostm | 0:dc55a068bc1a | 82 | } |
bcostm | 0:dc55a068bc1a | 83 | |
bcostm | 0:dc55a068bc1a | 84 | void LCD_DISCO_F429ZI::SetLayerVisible(uint32_t LayerIndex, FunctionalState state) |
bcostm | 0:dc55a068bc1a | 85 | { |
bcostm | 0:dc55a068bc1a | 86 | BSP_LCD_SetLayerVisible(LayerIndex, state); |
bcostm | 0:dc55a068bc1a | 87 | } |
bcostm | 0:dc55a068bc1a | 88 | |
bcostm | 0:dc55a068bc1a | 89 | void LCD_DISCO_F429ZI::SetTransparency(uint32_t LayerIndex, uint8_t Transparency) |
bcostm | 0:dc55a068bc1a | 90 | { |
bcostm | 0:dc55a068bc1a | 91 | BSP_LCD_SetTransparency(LayerIndex, Transparency); |
bcostm | 0:dc55a068bc1a | 92 | } |
bcostm | 0:dc55a068bc1a | 93 | |
bcostm | 0:dc55a068bc1a | 94 | void LCD_DISCO_F429ZI::SetLayerAddress(uint32_t LayerIndex, uint32_t Address) |
bcostm | 0:dc55a068bc1a | 95 | { |
bcostm | 0:dc55a068bc1a | 96 | BSP_LCD_SetLayerAddress(LayerIndex, Address); |
bcostm | 0:dc55a068bc1a | 97 | } |
bcostm | 0:dc55a068bc1a | 98 | |
bcostm | 0:dc55a068bc1a | 99 | void LCD_DISCO_F429ZI::SetLayerWindow(uint16_t LayerIndex, uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height) |
bcostm | 0:dc55a068bc1a | 100 | { |
bcostm | 0:dc55a068bc1a | 101 | BSP_LCD_SetLayerWindow(LayerIndex, Xpos, Ypos, Width, Height); |
bcostm | 0:dc55a068bc1a | 102 | } |
bcostm | 0:dc55a068bc1a | 103 | |
bcostm | 0:dc55a068bc1a | 104 | void LCD_DISCO_F429ZI::SetColorKeying(uint32_t LayerIndex, uint32_t RGBValue) |
bcostm | 0:dc55a068bc1a | 105 | { |
bcostm | 0:dc55a068bc1a | 106 | BSP_LCD_SetColorKeying(LayerIndex, RGBValue); |
bcostm | 0:dc55a068bc1a | 107 | } |
bcostm | 0:dc55a068bc1a | 108 | |
bcostm | 0:dc55a068bc1a | 109 | void LCD_DISCO_F429ZI::ResetColorKeying(uint32_t LayerIndex) |
bcostm | 0:dc55a068bc1a | 110 | { |
bcostm | 0:dc55a068bc1a | 111 | BSP_LCD_ResetColorKeying(LayerIndex); |
bcostm | 0:dc55a068bc1a | 112 | } |
bcostm | 0:dc55a068bc1a | 113 | |
bcostm | 0:dc55a068bc1a | 114 | uint32_t LCD_DISCO_F429ZI::GetTextColor(void) |
bcostm | 0:dc55a068bc1a | 115 | { |
bcostm | 0:dc55a068bc1a | 116 | return BSP_LCD_GetTextColor(); |
bcostm | 0:dc55a068bc1a | 117 | } |
bcostm | 0:dc55a068bc1a | 118 | |
bcostm | 0:dc55a068bc1a | 119 | uint32_t LCD_DISCO_F429ZI::GetBackColor(void) |
bcostm | 0:dc55a068bc1a | 120 | { |
bcostm | 0:dc55a068bc1a | 121 | return BSP_LCD_GetBackColor(); |
bcostm | 0:dc55a068bc1a | 122 | } |
bcostm | 0:dc55a068bc1a | 123 | |
bcostm | 0:dc55a068bc1a | 124 | void LCD_DISCO_F429ZI::SetTextColor(uint32_t Color) |
bcostm | 0:dc55a068bc1a | 125 | { |
bcostm | 0:dc55a068bc1a | 126 | BSP_LCD_SetTextColor(Color); |
bcostm | 0:dc55a068bc1a | 127 | } |
bcostm | 0:dc55a068bc1a | 128 | |
bcostm | 0:dc55a068bc1a | 129 | void LCD_DISCO_F429ZI::SetBackColor(uint32_t Color) |
bcostm | 0:dc55a068bc1a | 130 | { |
bcostm | 0:dc55a068bc1a | 131 | BSP_LCD_SetBackColor(Color); |
bcostm | 0:dc55a068bc1a | 132 | } |
bcostm | 0:dc55a068bc1a | 133 | |
bcostm | 0:dc55a068bc1a | 134 | void LCD_DISCO_F429ZI::SetFont(sFONT *pFonts) |
bcostm | 0:dc55a068bc1a | 135 | { |
bcostm | 0:dc55a068bc1a | 136 | BSP_LCD_SetFont(pFonts); |
bcostm | 0:dc55a068bc1a | 137 | } |
bcostm | 0:dc55a068bc1a | 138 | |
bcostm | 0:dc55a068bc1a | 139 | sFONT *LCD_DISCO_F429ZI::GetFont(void) |
bcostm | 0:dc55a068bc1a | 140 | { |
bcostm | 0:dc55a068bc1a | 141 | return BSP_LCD_GetFont(); |
bcostm | 0:dc55a068bc1a | 142 | } |
bcostm | 0:dc55a068bc1a | 143 | |
bcostm | 0:dc55a068bc1a | 144 | uint32_t LCD_DISCO_F429ZI::ReadPixel(uint16_t Xpos, uint16_t Ypos) |
bcostm | 0:dc55a068bc1a | 145 | { |
bcostm | 0:dc55a068bc1a | 146 | return BSP_LCD_ReadPixel(Xpos, Ypos); |
bcostm | 0:dc55a068bc1a | 147 | } |
bcostm | 0:dc55a068bc1a | 148 | |
bcostm | 0:dc55a068bc1a | 149 | void LCD_DISCO_F429ZI::Clear(uint32_t Color) |
bcostm | 0:dc55a068bc1a | 150 | { |
bcostm | 0:dc55a068bc1a | 151 | BSP_LCD_Clear(Color); |
bcostm | 0:dc55a068bc1a | 152 | } |
bcostm | 0:dc55a068bc1a | 153 | |
bcostm | 0:dc55a068bc1a | 154 | void LCD_DISCO_F429ZI::ClearStringLine(uint32_t Line) |
bcostm | 0:dc55a068bc1a | 155 | { |
bcostm | 0:dc55a068bc1a | 156 | BSP_LCD_ClearStringLine(Line); |
bcostm | 0:dc55a068bc1a | 157 | } |
bcostm | 0:dc55a068bc1a | 158 | |
bcostm | 0:dc55a068bc1a | 159 | void LCD_DISCO_F429ZI::DisplayChar(uint16_t Xpos, uint16_t Ypos, uint8_t Ascii) |
bcostm | 0:dc55a068bc1a | 160 | { |
bcostm | 0:dc55a068bc1a | 161 | BSP_LCD_DisplayChar(Xpos, Ypos, Ascii); |
bcostm | 0:dc55a068bc1a | 162 | } |
bcostm | 0:dc55a068bc1a | 163 | |
bcostm | 0:dc55a068bc1a | 164 | void LCD_DISCO_F429ZI::DisplayStringAt(uint16_t X, uint16_t Y, uint8_t *pText, Text_AlignModeTypdef mode) |
bcostm | 0:dc55a068bc1a | 165 | { |
bcostm | 0:dc55a068bc1a | 166 | BSP_LCD_DisplayStringAt(X, Y, pText, mode); |
bcostm | 0:dc55a068bc1a | 167 | } |
bcostm | 0:dc55a068bc1a | 168 | |
bcostm | 0:dc55a068bc1a | 169 | void LCD_DISCO_F429ZI::DisplayStringAtLine(uint16_t Line, uint8_t *ptr) |
bcostm | 0:dc55a068bc1a | 170 | { |
bcostm | 0:dc55a068bc1a | 171 | BSP_LCD_DisplayStringAtLine(Line, ptr); |
bcostm | 0:dc55a068bc1a | 172 | } |
bcostm | 0:dc55a068bc1a | 173 | |
bcostm | 0:dc55a068bc1a | 174 | void LCD_DISCO_F429ZI::DrawHLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length) |
bcostm | 0:dc55a068bc1a | 175 | { |
bcostm | 0:dc55a068bc1a | 176 | BSP_LCD_DrawHLine(Xpos, Ypos, Length); |
bcostm | 0:dc55a068bc1a | 177 | } |
bcostm | 0:dc55a068bc1a | 178 | |
bcostm | 0:dc55a068bc1a | 179 | void LCD_DISCO_F429ZI::DrawVLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length) |
bcostm | 0:dc55a068bc1a | 180 | { |
bcostm | 0:dc55a068bc1a | 181 | BSP_LCD_DrawVLine(Xpos, Ypos, Length); |
bcostm | 0:dc55a068bc1a | 182 | } |
bcostm | 0:dc55a068bc1a | 183 | |
bcostm | 0:dc55a068bc1a | 184 | void LCD_DISCO_F429ZI::DrawLine(uint16_t X1, uint16_t Y1, uint16_t X2, uint16_t Y2) |
bcostm | 0:dc55a068bc1a | 185 | { |
bcostm | 0:dc55a068bc1a | 186 | BSP_LCD_DrawLine(X1, Y1, X2, Y2); |
bcostm | 0:dc55a068bc1a | 187 | } |
bcostm | 0:dc55a068bc1a | 188 | |
bcostm | 0:dc55a068bc1a | 189 | void LCD_DISCO_F429ZI::DrawRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height) |
bcostm | 0:dc55a068bc1a | 190 | { |
bcostm | 0:dc55a068bc1a | 191 | BSP_LCD_DrawRect(Xpos, Ypos, Width, Height); |
bcostm | 0:dc55a068bc1a | 192 | } |
bcostm | 0:dc55a068bc1a | 193 | |
bcostm | 0:dc55a068bc1a | 194 | void LCD_DISCO_F429ZI::DrawCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius) |
bcostm | 0:dc55a068bc1a | 195 | { |
bcostm | 0:dc55a068bc1a | 196 | BSP_LCD_DrawCircle(Xpos, Ypos, Radius); |
bcostm | 0:dc55a068bc1a | 197 | } |
bcostm | 0:dc55a068bc1a | 198 | |
bcostm | 0:dc55a068bc1a | 199 | void LCD_DISCO_F429ZI::DrawPolygon(pPoint Points, uint16_t PointCount) |
bcostm | 0:dc55a068bc1a | 200 | { |
bcostm | 0:dc55a068bc1a | 201 | BSP_LCD_DrawPolygon(Points, PointCount); |
bcostm | 0:dc55a068bc1a | 202 | } |
bcostm | 0:dc55a068bc1a | 203 | |
bcostm | 0:dc55a068bc1a | 204 | void LCD_DISCO_F429ZI::DrawEllipse(int Xpos, int Ypos, int XRadius, int YRadius) |
bcostm | 0:dc55a068bc1a | 205 | { |
bcostm | 0:dc55a068bc1a | 206 | BSP_LCD_DrawEllipse(Xpos, Ypos, XRadius, YRadius); |
bcostm | 0:dc55a068bc1a | 207 | } |
bcostm | 0:dc55a068bc1a | 208 | |
bcostm | 0:dc55a068bc1a | 209 | void LCD_DISCO_F429ZI::DrawBitmap(uint32_t X, uint32_t Y, uint8_t *pBmp) |
bcostm | 0:dc55a068bc1a | 210 | { |
bcostm | 0:dc55a068bc1a | 211 | BSP_LCD_DrawBitmap(X, Y, pBmp); |
bcostm | 0:dc55a068bc1a | 212 | } |
bcostm | 0:dc55a068bc1a | 213 | |
bcostm | 0:dc55a068bc1a | 214 | void LCD_DISCO_F429ZI::FillRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height) |
bcostm | 0:dc55a068bc1a | 215 | { |
bcostm | 0:dc55a068bc1a | 216 | BSP_LCD_FillRect(Xpos, Ypos, Width, Height); |
bcostm | 0:dc55a068bc1a | 217 | } |
bcostm | 0:dc55a068bc1a | 218 | |
bcostm | 0:dc55a068bc1a | 219 | void LCD_DISCO_F429ZI::FillCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius) |
bcostm | 0:dc55a068bc1a | 220 | { |
bcostm | 0:dc55a068bc1a | 221 | BSP_LCD_FillCircle(Xpos, Ypos, Radius); |
bcostm | 0:dc55a068bc1a | 222 | } |
bcostm | 0:dc55a068bc1a | 223 | |
bcostm | 0:dc55a068bc1a | 224 | void LCD_DISCO_F429ZI::FillTriangle(uint16_t X1, uint16_t X2, uint16_t X3, uint16_t Y1, uint16_t Y2, uint16_t Y3) |
bcostm | 0:dc55a068bc1a | 225 | { |
bcostm | 0:dc55a068bc1a | 226 | BSP_LCD_FillTriangle(X1, X2, X3, Y1, Y2, Y3); |
bcostm | 0:dc55a068bc1a | 227 | } |
bcostm | 0:dc55a068bc1a | 228 | |
bcostm | 0:dc55a068bc1a | 229 | void LCD_DISCO_F429ZI::FillPolygon(pPoint Points, uint16_t PointCount) |
bcostm | 0:dc55a068bc1a | 230 | { |
bcostm | 0:dc55a068bc1a | 231 | BSP_LCD_FillPolygon(Points, PointCount); |
bcostm | 0:dc55a068bc1a | 232 | } |
bcostm | 0:dc55a068bc1a | 233 | |
bcostm | 0:dc55a068bc1a | 234 | void LCD_DISCO_F429ZI::FillEllipse(int Xpos, int Ypos, int XRadius, int YRadius) |
bcostm | 0:dc55a068bc1a | 235 | { |
bcostm | 0:dc55a068bc1a | 236 | BSP_LCD_FillEllipse(Xpos, Ypos, XRadius, YRadius); |
bcostm | 0:dc55a068bc1a | 237 | } |
bcostm | 0:dc55a068bc1a | 238 | |
bcostm | 0:dc55a068bc1a | 239 | void LCD_DISCO_F429ZI::DisplayOn(void) |
bcostm | 0:dc55a068bc1a | 240 | { |
bcostm | 0:dc55a068bc1a | 241 | BSP_LCD_DisplayOn(); |
bcostm | 0:dc55a068bc1a | 242 | } |
bcostm | 0:dc55a068bc1a | 243 | |
bcostm | 0:dc55a068bc1a | 244 | void LCD_DISCO_F429ZI::DisplayOff(void) |
bcostm | 0:dc55a068bc1a | 245 | { |
bcostm | 0:dc55a068bc1a | 246 | BSP_LCD_DisplayOff(); |
bcostm | 0:dc55a068bc1a | 247 | } |
bcostm | 0:dc55a068bc1a | 248 | |
bcostm | 0:dc55a068bc1a | 249 | void LCD_DISCO_F429ZI::DrawPixel(uint16_t Xpos, uint16_t Ypos, uint32_t RGB_Code) |
bcostm | 0:dc55a068bc1a | 250 | { |
bcostm | 0:dc55a068bc1a | 251 | BSP_LCD_DrawPixel(Xpos, Ypos, RGB_Code); |
bcostm | 0:dc55a068bc1a | 252 | } |
bcostm | 0:dc55a068bc1a | 253 | |
bcostm | 0:dc55a068bc1a | 254 | //================================================================================================================= |
bcostm | 0:dc55a068bc1a | 255 | // Private methods |
bcostm | 0:dc55a068bc1a | 256 | //================================================================================================================= |