| /* |
| * Copyright (c) 2021-2022 Arm Limited. All rights reserved. |
| * SPDX-License-Identifier: Apache-2.0 |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| #ifndef GLCD_MPS3_H |
| #define GLCD_MPS3_H |
| |
| #include <stdint.h> |
| |
| /****************************************************************************** |
| Color coding |
| GLCD is coded: 15..11 red, 10..5 green, 4..0 blue (unsigned short) |
| GLCD_R5, GLCD_G6, GLCD_B5 |
| original coding: 17..12 red, 11..6 green, 5..0 blue |
| ORG_R6, ORG_G6, ORG_B6 |
| |
| ORG_R1..5 = GLCD_R0..4, ORG_R0 = GLCD_R4 |
| ORG_G0..5 = GLCD_G0..5, |
| ORG_B1..5 = GLCD_B0..4, ORG_B0 = GLCD_B4 |
| |
| GLCD RGB color definitions |
| ******************************************************************************/ |
| #define Black 0x0000 /* 0, 0, 0 */ |
| #define Navy 0x000F /* 0, 0, 128 */ |
| #define DarkGreen 0x03E0 /* 0, 128, 0 */ |
| #define DarkCyan 0x03EF /* 0, 128, 128 */ |
| #define Maroon 0x7800 /* 128, 0, 0 */ |
| #define Purple 0x780F /* 128, 0, 128 */ |
| #define Olive 0x7BE0 /* 128, 128, 0 */ |
| #define LightGrey 0xC618 /* 192, 192, 192 */ |
| #define DarkGrey 0x7BEF /* 128, 128, 128 */ |
| #define Blue 0x001F /* 0, 0, 255 */ |
| #define Green 0x07E0 /* 0, 255, 0 */ |
| #define Cyan 0x07FF /* 0, 255, 255 */ |
| #define Red 0xF800 /* 255, 0, 0 */ |
| #define Magenta 0xF81F /* 255, 0, 255 */ |
| #define Yellow 0xFFE0 /* 255, 255, 0 */ |
| #define White 0xFFFF /* 255, 255, 255 */ |
| |
| /************************** Orientation configuration ************************/ |
| #ifndef LANDSCAPE |
| #define LANDSCAPE 1 /* 1 for landscape, 0 for portrait. */ |
| #endif |
| #ifndef ROTATE180 |
| #define ROTATE180 1 /* 1 to rotate the screen for 180 deg. */ |
| #endif |
| |
| /*------------------------- Speed dependant settings -------------------------*/ |
| |
| /* If processor works on high frequency delay has to be increased, it can be |
| increased by factor 2^N by this constant. */ |
| #define DELAY_2N 8 |
| |
| /*---------------------- Graphic LCD size definitions ------------------------*/ |
| #if (LANDSCAPE == 1) |
| #define GLCD_WIDTH 320 /* Screen Width (in pixels). */ |
| #define GLCD_HEIGHT 240 /* Screen Hight (in pixels). */ |
| #else |
| #define GLCD_WIDTH 240 /* Screen Width (in pixels). */ |
| #define GLCD_HEIGHT 320 /* Screen Hight (in pixels). */ |
| #endif |
| |
| #define BPP 16 /* Bits per pixel. */ |
| #define BYPP ((BPP+7)/8) /* Bytes per pixel. */ |
| |
| |
| /** |
| * @brief Initialize the Himax LCD with HX8347-D LCD Controller. |
| */ |
| void GLCD_Initialize(void); |
| |
| /** |
| * @brief Set draw window region to whole screen. |
| */ |
| void GLCD_WindowMax(void); |
| |
| /** |
| * @brief Set draw window region. |
| * @param[in] x Horizontal position. |
| * @param[in] y Vertical position. |
| * @param[in] w Window width in pixel. |
| * @param[in] h Window height in pixels. |
| */ |
| void GLCD_SetWindow(unsigned int x, unsigned int y, |
| unsigned int w, unsigned int h); |
| |
| /** |
| * @brief Set foreground color. |
| * @param[in] color Foreground color. |
| */ |
| void GLCD_SetTextColor(unsigned short color); |
| |
| /** |
| * @brief Set background color. |
| * @param[in] color Background color. |
| */ |
| void GLCD_SetBackColor(unsigned short color); |
| |
| /** |
| * @brief Clear display. |
| * @param[in] color Display clearing color. |
| * |
| */ |
| void GLCD_Clear(unsigned short color); |
| |
| /** |
| * @brief Draw character on given position. |
| * @param[in] x Horizontal position. |
| * @param[in] y Vertical position. |
| * @param[in] cw Character width in pixel. |
| * @param[in] ch Character height in pixels. |
| * @param[in] c Pointer to character bitmap. |
| * |
| */ |
| void GLCD_DrawChar(unsigned int x, unsigned int y, |
| unsigned int cw, unsigned int ch, |
| unsigned char *c); |
| |
| /** |
| * @brief Display character on given line. |
| * @param[in] ln Line number. |
| * @param[in] col Column number. |
| * @param[in] fi Font index (0 = 9x15). |
| * @param[in] c ASCII character. |
| */ |
| void GLCD_DisplayChar(unsigned int ln, unsigned int col, |
| unsigned char fi, unsigned char c); |
| |
| |
| /** |
| * @brief Display string on given line. |
| * @param[in] ln Line number. |
| * @param[in] col Column number. |
| * @param[in] fi Font index (0 = 9x15). |
| * @param[in] s Pointer to string. |
| */ |
| void GLCD_DisplayString(unsigned int ln, unsigned int col, |
| unsigned char fi, char *s); |
| |
| /** |
| * @brief Clear given line. |
| * @param[in] ln: Line number. |
| * @param[in] fi Font index (0 = 9x15). |
| */ |
| void GLCD_ClearLn(unsigned int ln, unsigned char fi); |
| |
| /** |
| * @brief Display graphical bitmap image at position x horizontally and y |
| * vertically. This function is optimized for 16 bits per pixel |
| * format, it has to be adapted for any other format. |
| * @param[in] x Horizontal position. |
| * @param[in] y Vertical position. |
| * @param[in] w Width of bitmap. |
| * @param[in] h Height of bitmap. |
| * @param[in] bitmap Address at which the bitmap data resides. |
| */ |
| void GLCD_Bitmap(unsigned int x, unsigned int y, |
| unsigned int w, unsigned int h, |
| unsigned short *bitmap); |
| |
| /** |
| * @brief Displays an 8 bit image, conversion to the LCD's |
| * 16 bit codec is done on the fly. |
| * @param[in] data Pointer to the full sized image data. |
| * @param[in] width Image width. |
| * @param[in] height Image height. |
| * @param[in] channels Number of channels in the image. |
| * @param[in] pos_x Start x position for the LCD. |
| * @param[in] pos_y Start y position for the LCD. |
| * @param[in] downsample_factor Factor by which the image |
| * is downsampled by. |
| */ |
| void GLCD_Image(const void *data, const uint32_t width, |
| const uint32_t height, const uint32_t channels, |
| const uint32_t pos_x, const uint32_t pos_y, |
| const uint32_t downsample_factor); |
| |
| /** |
| * @brief Draw box filled with color. |
| * @param[in] x Horizontal position. |
| * @param[in] y Vertical position. |
| * @param[in] w Window width in pixels. |
| * @param[in] h Window height in pixels. |
| * @param[in] color Box color. |
| */ |
| void GLCD_Box(unsigned int x, unsigned int y, |
| unsigned int w, unsigned int h, |
| unsigned short color); |
| |
| #endif /* GLCD_MPS3_H */ |