/* * Copyright (c) 2021 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 /****************************************************************************** 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(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 */