add BearPi STemWin test demo
This commit is contained in:
96
components/gui/STemWin/Config/GUIConf.c
Normal file
96
components/gui/STemWin/Config/GUIConf.c
Normal file
@@ -0,0 +1,96 @@
|
||||
/*********************************************************************
|
||||
* Portions COPYRIGHT 2016 STMicroelectronics *
|
||||
* Portions SEGGER Microcontroller GmbH & Co. KG *
|
||||
* Solutions for real time microcontroller applications *
|
||||
**********************************************************************
|
||||
* *
|
||||
* (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG *
|
||||
* *
|
||||
* Internet: www.segger.com Support: support@segger.com *
|
||||
* *
|
||||
**********************************************************************
|
||||
|
||||
** emWin V5.32 - Graphical user interface for embedded applications **
|
||||
All Intellectual Property rights in the Software belongs to SEGGER.
|
||||
emWin is protected by international copyright laws. Knowledge of the
|
||||
source code may not be used to write a similar product. This file may
|
||||
only be used in accordance with the following terms:
|
||||
|
||||
The software has been licensed to STMicroelectronics International
|
||||
N.V. a Dutch company with a Swiss branch and its headquarters in Plan-
|
||||
les-Ouates, Geneva, 39 Chemin du Champ des Filles, Switzerland for the
|
||||
purposes of creating libraries for ARM Cortex-M-based 32-bit microcon_
|
||||
troller products commercialized by Licensee only, sublicensed and dis_
|
||||
tributed under the terms and conditions of the End User License Agree_
|
||||
ment supplied by STMicroelectronics International N.V.
|
||||
Full source code is available at: www.segger.com
|
||||
|
||||
We appreciate your understanding and fairness.
|
||||
----------------------------------------------------------------------
|
||||
File : GUIConf.c
|
||||
Purpose : Display controller initialization
|
||||
---------------------------END-OF-HEADER------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Licensed under MCD-ST Liberty SW License Agreement V2, (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.st.com/software_license_agreement_liberty_v2
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include "GUI.h"
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Defines
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
//
|
||||
// Define the available number of bytes available for the GUI
|
||||
//
|
||||
#define GUI_NUMBYTES 0x200000
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Public code
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
/*********************************************************************
|
||||
*
|
||||
* GUI_X_Config
|
||||
*
|
||||
* Purpose:
|
||||
* Called during the initialization process in order to set up the
|
||||
* available memory for the GUI.
|
||||
*/
|
||||
void GUI_X_Config(void) {
|
||||
//
|
||||
// 32 bit aligned memory area
|
||||
//
|
||||
static U32 aMemory[GUI_NUMBYTES / 4];
|
||||
//
|
||||
// Assign memory to emWin
|
||||
//
|
||||
GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
|
||||
//
|
||||
// Set default font
|
||||
//
|
||||
GUI_SetDefaultFont(GUI_FONT_6X8);
|
||||
}
|
||||
|
||||
/*************************** End of file ****************************/
|
96
components/gui/STemWin/Config/GUIConf.h
Normal file
96
components/gui/STemWin/Config/GUIConf.h
Normal file
@@ -0,0 +1,96 @@
|
||||
/*********************************************************************
|
||||
* Portions COPYRIGHT 2016 STMicroelectronics *
|
||||
* Portions SEGGER Microcontroller GmbH & Co. KG *
|
||||
* Solutions for real time microcontroller applications *
|
||||
**********************************************************************
|
||||
* *
|
||||
* (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG *
|
||||
* *
|
||||
* Internet: www.segger.com Support: support@segger.com *
|
||||
* *
|
||||
**********************************************************************
|
||||
|
||||
** emWin V5.32 - Graphical user interface for embedded applications **
|
||||
All Intellectual Property rights in the Software belongs to SEGGER.
|
||||
emWin is protected by international copyright laws. Knowledge of the
|
||||
source code may not be used to write a similar product. This file may
|
||||
only be used in accordance with the following terms:
|
||||
|
||||
The software has been licensed to STMicroelectronics International
|
||||
N.V. a Dutch company with a Swiss branch and its headquarters in Plan-
|
||||
les-Ouates, Geneva, 39 Chemin du Champ des Filles, Switzerland for the
|
||||
purposes of creating libraries for ARM Cortex-M-based 32-bit microcon_
|
||||
troller products commercialized by Licensee only, sublicensed and dis_
|
||||
tributed under the terms and conditions of the End User License Agree_
|
||||
ment supplied by STMicroelectronics International N.V.
|
||||
Full source code is available at: www.segger.com
|
||||
|
||||
We appreciate your understanding and fairness.
|
||||
----------------------------------------------------------------------
|
||||
File : GUIConf.h
|
||||
Purpose : Configures emWins abilities, fonts etc.
|
||||
----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Licensed under MCD-ST Liberty SW License Agreement V2, (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.st.com/software_license_agreement_liberty_v2
|
||||
*
|
||||
* 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 GUICONF_H
|
||||
#define GUICONF_H
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Multi layer/display support
|
||||
*/
|
||||
#define GUI_NUM_LAYERS 2 // Maximum number of available layers
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Multi tasking support
|
||||
*/
|
||||
#ifdef OS_SUPPORT
|
||||
#define GUI_OS (1) // Compile with multitasking support
|
||||
#else
|
||||
#define GUI_OS (0)
|
||||
#endif
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Configuration of touch support
|
||||
*/
|
||||
#ifndef GUI_SUPPORT_TOUCH
|
||||
#define GUI_SUPPORT_TOUCH (1) // Support touchscreen
|
||||
#endif
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Default font
|
||||
*/
|
||||
#define GUI_DEFAULT_FONT &GUI_Font6x8
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Configuration of available packages
|
||||
*/
|
||||
#define GUI_SUPPORT_MOUSE (1) /* Support a mouse */
|
||||
#define GUI_WINSUPPORT (1) /* Use window manager */
|
||||
#define GUI_SUPPORT_MEMDEV (1) /* Memory device package available */
|
||||
#define GUI_SUPPORT_DEVICES (1) /* Enable use of device pointers */
|
||||
|
||||
#endif /* Avoid multiple inclusion */
|
836
components/gui/STemWin/Config/GUIDRV_Template.c
Normal file
836
components/gui/STemWin/Config/GUIDRV_Template.c
Normal file
@@ -0,0 +1,836 @@
|
||||
/*********************************************************************
|
||||
* Portions COPYRIGHT 2016 STMicroelectronics *
|
||||
* Portions SEGGER Microcontroller GmbH & Co. KG *
|
||||
* Solutions for real time microcontroller applications *
|
||||
**********************************************************************
|
||||
* *
|
||||
* (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG *
|
||||
* *
|
||||
* Internet: www.segger.com Support: support@segger.com *
|
||||
* *
|
||||
**********************************************************************
|
||||
|
||||
** emWin V5.32 - Graphical user interface for embedded applications **
|
||||
All Intellectual Property rights in the Software belongs to SEGGER.
|
||||
emWin is protected by international copyright laws. Knowledge of the
|
||||
source code may not be used to write a similar product. This file may
|
||||
only be used in accordance with the following terms:
|
||||
|
||||
The software has been licensed to STMicroelectronics International
|
||||
N.V. a Dutch company with a Swiss branch and its headquarters in Plan-
|
||||
les-Ouates, Geneva, 39 Chemin du Champ des Filles, Switzerland for the
|
||||
purposes of creating libraries for ARM Cortex-M-based 32-bit microcon_
|
||||
troller products commercialized by Licensee only, sublicensed and dis_
|
||||
tributed under the terms and conditions of the End User License Agree_
|
||||
ment supplied by STMicroelectronics International N.V.
|
||||
Full source code is available at: www.segger.com
|
||||
|
||||
We appreciate your understanding and fairness.
|
||||
----------------------------------------------------------------------
|
||||
File : GUIDRV_Template.c
|
||||
Purpose : Template driver, could be used as starting point for new
|
||||
simple display drivers supporting only one color depth.
|
||||
---------------------------END-OF-HEADER------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Licensed under MCD-ST Liberty SW License Agreement V2, (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.st.com/software_license_agreement_liberty_v2
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include "LCD_Private.h"
|
||||
#include "GUI_Private.h"
|
||||
#include "LCD_ConfDefaults.h"
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Defines
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
/*********************************************************************
|
||||
*
|
||||
* Macros for MIRROR_, SWAP_ and LUT_
|
||||
*/
|
||||
#if (!defined (LCD_LUT_COM) && !defined(LCD_LUT_SEG))
|
||||
#if (!LCD_MIRROR_X && !LCD_MIRROR_Y && !LCD_SWAP_XY)
|
||||
#define LOG2PHYS_X(x, y) x
|
||||
#define LOG2PHYS_Y(x, y) y
|
||||
#elif (!LCD_MIRROR_X && !LCD_MIRROR_Y && LCD_SWAP_XY)
|
||||
#define LOG2PHYS_X(x, y) y
|
||||
#define LOG2PHYS_Y(x, y) x
|
||||
#elif (!LCD_MIRROR_X && LCD_MIRROR_Y && !LCD_SWAP_XY)
|
||||
#define LOG2PHYS_X(x, y) x
|
||||
#define LOG2PHYS_Y(x, y) LCD_YSIZE - 1 - (y)
|
||||
#elif (!LCD_MIRROR_X && LCD_MIRROR_Y && LCD_SWAP_XY)
|
||||
#define LOG2PHYS_X(x, y) y
|
||||
#define LOG2PHYS_Y(x, y) LCD_XSIZE - 1 - (x)
|
||||
#elif ( LCD_MIRROR_X && !LCD_MIRROR_Y && !LCD_SWAP_XY)
|
||||
#define LOG2PHYS_X(x, y) LCD_XSIZE - 1 - (x)
|
||||
#define LOG2PHYS_Y(x, y) y
|
||||
#elif ( LCD_MIRROR_X && !LCD_MIRROR_Y && LCD_SWAP_XY)
|
||||
#define LOG2PHYS_X(x, y) LCD_YSIZE - 1 - (y)
|
||||
#define LOG2PHYS_Y(x, y) x
|
||||
#elif ( LCD_MIRROR_X && LCD_MIRROR_Y && !LCD_SWAP_XY)
|
||||
#define LOG2PHYS_X(x, y) LCD_XSIZE - 1 - (x)
|
||||
#define LOG2PHYS_Y(x, y) LCD_YSIZE - 1 - (y)
|
||||
#elif ( LCD_MIRROR_X && LCD_MIRROR_Y && LCD_SWAP_XY)
|
||||
#define LOG2PHYS_X(x, y) LCD_YSIZE - 1 - (y)
|
||||
#define LOG2PHYS_Y(x, y) LCD_XSIZE - 1 - (x)
|
||||
#endif
|
||||
#else
|
||||
#if ( defined (LCD_LUT_COM) && !defined(LCD_LUT_SEG))
|
||||
#define LOG2PHYS_X(x, y) x
|
||||
#define LOG2PHYS_Y(x, y) LCD__aLine2Com0[y]
|
||||
#elif (!defined (LCD_LUT_COM) && defined(LCD_LUT_SEG))
|
||||
#define LOG2PHYS_X(x, y) LCD__aCol2Seg0[x]
|
||||
#define LOG2PHYS_Y(x, y) y
|
||||
#elif ( defined (LCD_LUT_COM) && defined(LCD_LUT_SEG))
|
||||
#define LOG2PHYS_X(x, y) LCD__aCol2Seg0[x]
|
||||
#define LOG2PHYS_Y(x, y) LCD__aLine2Com0[y]
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Types
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
typedef struct {
|
||||
U32 VRAMAddr;
|
||||
int xSize, ySize;
|
||||
int vxSize, vySize;
|
||||
int vxSizePhys;
|
||||
int BitsPerPixel;
|
||||
} DRIVER_CONTEXT_TEMPLATE;
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Static functions
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
/*********************************************************************
|
||||
*
|
||||
* _SetPixelIndex
|
||||
*
|
||||
* Purpose:
|
||||
* Sets the index of the given pixel. The upper layers
|
||||
* calling this routine make sure that the coordinates are in range, so
|
||||
* that no check on the parameters needs to be performed.
|
||||
*/
|
||||
static void _SetPixelIndex(GUI_DEVICE * pDevice, int x, int y, int PixelIndex) {
|
||||
//
|
||||
// Convert logical into physical coordinates (Dep. on LCDConf.h)
|
||||
//
|
||||
#if (LCD_MIRROR_X == 1) || (LCD_MIRROR_Y == 1) || (LCD_SWAP_XY == 1)
|
||||
int xPhys, yPhys;
|
||||
|
||||
xPhys = LOG2PHYS_X(x, y);
|
||||
yPhys = LOG2PHYS_Y(x, y);
|
||||
#else
|
||||
#define xPhys x
|
||||
#define yPhys y
|
||||
#endif
|
||||
GUI_USE_PARA(pDevice);
|
||||
GUI_USE_PARA(x);
|
||||
GUI_USE_PARA(y);
|
||||
GUI_USE_PARA(PixelIndex);
|
||||
{
|
||||
//
|
||||
// Write into hardware ... Adapt to your system
|
||||
//
|
||||
// TBD by customer...
|
||||
//
|
||||
}
|
||||
#if (LCD_MIRROR_X == 0) && (LCD_MIRROR_Y == 0) && (LCD_SWAP_XY == 0)
|
||||
#undef xPhys
|
||||
#undef yPhys
|
||||
#endif
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _GetPixelIndex
|
||||
*
|
||||
* Purpose:
|
||||
* Returns the index of the given pixel. The upper layers
|
||||
* calling this routine make sure that the coordinates are in range, so
|
||||
* that no check on the parameters needs to be performed.
|
||||
*/
|
||||
static unsigned int _GetPixelIndex(GUI_DEVICE * pDevice, int x, int y) {
|
||||
unsigned int PixelIndex;
|
||||
//
|
||||
// Convert logical into physical coordinates (Dep. on LCDConf.h)
|
||||
//
|
||||
#if (LCD_MIRROR_X == 1) || (LCD_MIRROR_Y == 1) || (LCD_SWAP_XY == 1)
|
||||
int xPhys, yPhys;
|
||||
|
||||
xPhys = LOG2PHYS_X(x, y);
|
||||
yPhys = LOG2PHYS_Y(x, y);
|
||||
#else
|
||||
#define xPhys x
|
||||
#define yPhys y
|
||||
#endif
|
||||
GUI_USE_PARA(pDevice);
|
||||
GUI_USE_PARA(x);
|
||||
GUI_USE_PARA(y);
|
||||
{
|
||||
//
|
||||
// Write into hardware ... Adapt to your system
|
||||
//
|
||||
// TBD by customer...
|
||||
//
|
||||
PixelIndex = 0;
|
||||
}
|
||||
#if (LCD_MIRROR_X == 0) && (LCD_MIRROR_Y == 0) && (LCD_SWAP_XY == 0)
|
||||
#undef xPhys
|
||||
#undef yPhys
|
||||
#endif
|
||||
return PixelIndex;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _XorPixel
|
||||
*/
|
||||
static void _XorPixel(GUI_DEVICE * pDevice, int x, int y) {
|
||||
LCD_PIXELINDEX PixelIndex;
|
||||
LCD_PIXELINDEX IndexMask;
|
||||
|
||||
PixelIndex = _GetPixelIndex(pDevice, x, y);
|
||||
IndexMask = pDevice->pColorConvAPI->pfGetIndexMask();
|
||||
_SetPixelIndex(pDevice, x, y, PixelIndex ^ IndexMask);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _FillRect
|
||||
*/
|
||||
static void _FillRect(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1) {
|
||||
LCD_PIXELINDEX PixelIndex;
|
||||
int x;
|
||||
|
||||
PixelIndex = LCD__GetColorIndex();
|
||||
if (GUI_pContext->DrawMode & LCD_DRAWMODE_XOR) {
|
||||
for (; y0 <= y1; y0++) {
|
||||
for (x = x0; x <= x1; x++) {
|
||||
_XorPixel(pDevice, x, y0);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (; y0 <= y1; y0++) {
|
||||
for (x = x0; x <= x1; x++) {
|
||||
_SetPixelIndex(pDevice, x, y0, PixelIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _DrawHLine
|
||||
*/
|
||||
static void _DrawHLine(GUI_DEVICE * pDevice, int x0, int y, int x1) {
|
||||
_FillRect(pDevice, x0, y, x1, y);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _DrawVLine, not optimized
|
||||
*/
|
||||
static void _DrawVLine(GUI_DEVICE * pDevice, int x, int y0, int y1) {
|
||||
_FillRect(pDevice, x, y0, x, y1);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Draw Bitmap 1 BPP
|
||||
*/
|
||||
static void _DrawBitLine1BPP(GUI_DEVICE * pDevice, int x, int y, U8 const GUI_UNI_PTR * p, int Diff, int xsize, const LCD_PIXELINDEX * pTrans) {
|
||||
LCD_PIXELINDEX IndexMask, Index0, Index1, Pixel;
|
||||
|
||||
Index0 = *(pTrans + 0);
|
||||
Index1 = *(pTrans + 1);
|
||||
x += Diff;
|
||||
switch (GUI_pContext->DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
|
||||
case 0:
|
||||
do {
|
||||
_SetPixelIndex(pDevice, x++, y, (*p & (0x80 >> Diff)) ? Index1 : Index0);
|
||||
if (++Diff == 8) {
|
||||
Diff = 0;
|
||||
p++;
|
||||
}
|
||||
} while (--xsize);
|
||||
break;
|
||||
case LCD_DRAWMODE_TRANS:
|
||||
do {
|
||||
if (*p & (0x80 >> Diff))
|
||||
_SetPixelIndex(pDevice, x, y, Index1);
|
||||
x++;
|
||||
if (++Diff == 8) {
|
||||
Diff = 0;
|
||||
p++;
|
||||
}
|
||||
} while (--xsize);
|
||||
break;
|
||||
case LCD_DRAWMODE_XOR | LCD_DRAWMODE_TRANS:
|
||||
case LCD_DRAWMODE_XOR:
|
||||
IndexMask = pDevice->pColorConvAPI->pfGetIndexMask();
|
||||
do {
|
||||
if (*p & (0x80 >> Diff)) {
|
||||
Pixel = _GetPixelIndex(pDevice, x, y);
|
||||
_SetPixelIndex(pDevice, x, y, Pixel ^ IndexMask);
|
||||
}
|
||||
x++;
|
||||
if (++Diff == 8) {
|
||||
Diff = 0;
|
||||
p++;
|
||||
}
|
||||
} while (--xsize);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Draw Bitmap 2 BPP
|
||||
*/
|
||||
static void _DrawBitLine2BPP(GUI_DEVICE * pDevice, int x, int y, U8 const GUI_UNI_PTR * p, int Diff, int xsize, const LCD_PIXELINDEX * pTrans) {
|
||||
LCD_PIXELINDEX Pixels, PixelIndex;
|
||||
int CurrentPixel, Shift, Index;
|
||||
|
||||
Pixels = *p;
|
||||
CurrentPixel = Diff;
|
||||
x += Diff;
|
||||
switch (GUI_pContext->DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
|
||||
case 0:
|
||||
if (pTrans) {
|
||||
do {
|
||||
Shift = (3 - CurrentPixel) << 1;
|
||||
Index = (Pixels & (0xC0 >> (6 - Shift))) >> Shift;
|
||||
PixelIndex = *(pTrans + Index);
|
||||
_SetPixelIndex(pDevice, x++, y, PixelIndex);
|
||||
if (++CurrentPixel == 4) {
|
||||
CurrentPixel = 0;
|
||||
Pixels = *(++p);
|
||||
}
|
||||
} while (--xsize);
|
||||
} else {
|
||||
do {
|
||||
Shift = (3 - CurrentPixel) << 1;
|
||||
Index = (Pixels & (0xC0 >> (6 - Shift))) >> Shift;
|
||||
_SetPixelIndex(pDevice, x++, y, Index);
|
||||
if (++CurrentPixel == 4) {
|
||||
CurrentPixel = 0;
|
||||
Pixels = *(++p);
|
||||
}
|
||||
} while (--xsize);
|
||||
}
|
||||
break;
|
||||
case LCD_DRAWMODE_TRANS:
|
||||
if (pTrans) {
|
||||
do {
|
||||
Shift = (3 - CurrentPixel) << 1;
|
||||
Index = (Pixels & (0xC0 >> (6 - Shift))) >> Shift;
|
||||
if (Index) {
|
||||
PixelIndex = *(pTrans + Index);
|
||||
_SetPixelIndex(pDevice, x, y, PixelIndex);
|
||||
}
|
||||
x++;
|
||||
if (++CurrentPixel == 4) {
|
||||
CurrentPixel = 0;
|
||||
Pixels = *(++p);
|
||||
}
|
||||
} while (--xsize);
|
||||
} else {
|
||||
do {
|
||||
Shift = (3 - CurrentPixel) << 1;
|
||||
Index = (Pixels & (0xC0 >> (6 - Shift))) >> Shift;
|
||||
if (Index) {
|
||||
_SetPixelIndex(pDevice, x, y, Index);
|
||||
}
|
||||
x++;
|
||||
if (++CurrentPixel == 4) {
|
||||
CurrentPixel = 0;
|
||||
Pixels = *(++p);
|
||||
}
|
||||
} while (--xsize);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Draw Bitmap 4 BPP
|
||||
*/
|
||||
static void _DrawBitLine4BPP(GUI_DEVICE * pDevice, int x, int y, U8 const GUI_UNI_PTR * p, int Diff, int xsize, const LCD_PIXELINDEX * pTrans) {
|
||||
LCD_PIXELINDEX Pixels, PixelIndex;
|
||||
int CurrentPixel, Shift, Index;
|
||||
|
||||
Pixels = *p;
|
||||
CurrentPixel = Diff;
|
||||
x += Diff;
|
||||
switch (GUI_pContext->DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
|
||||
case 0:
|
||||
if (pTrans) {
|
||||
do {
|
||||
Shift = (1 - CurrentPixel) << 2;
|
||||
Index = (Pixels & (0xF0 >> (4 - Shift))) >> Shift;
|
||||
PixelIndex = *(pTrans + Index);
|
||||
_SetPixelIndex(pDevice, x++, y, PixelIndex);
|
||||
if (++CurrentPixel == 2) {
|
||||
CurrentPixel = 0;
|
||||
Pixels = *(++p);
|
||||
}
|
||||
} while (--xsize);
|
||||
} else {
|
||||
do {
|
||||
Shift = (1 - CurrentPixel) << 2;
|
||||
Index = (Pixels & (0xF0 >> (4 - Shift))) >> Shift;
|
||||
_SetPixelIndex(pDevice, x++, y, Index);
|
||||
if (++CurrentPixel == 2) {
|
||||
CurrentPixel = 0;
|
||||
Pixels = *(++p);
|
||||
}
|
||||
} while (--xsize);
|
||||
}
|
||||
break;
|
||||
case LCD_DRAWMODE_TRANS:
|
||||
if (pTrans) {
|
||||
do {
|
||||
Shift = (1 - CurrentPixel) << 2;
|
||||
Index = (Pixels & (0xF0 >> (4 - Shift))) >> Shift;
|
||||
if (Index) {
|
||||
PixelIndex = *(pTrans + Index);
|
||||
_SetPixelIndex(pDevice, x, y, PixelIndex);
|
||||
}
|
||||
x++;
|
||||
if (++CurrentPixel == 2) {
|
||||
CurrentPixel = 0;
|
||||
Pixels = *(++p);
|
||||
}
|
||||
} while (--xsize);
|
||||
} else {
|
||||
do {
|
||||
Shift = (1 - CurrentPixel) << 2;
|
||||
Index = (Pixels & (0xF0 >> (4 - Shift))) >> Shift;
|
||||
if (Index) {
|
||||
_SetPixelIndex(pDevice, x, y, Index);
|
||||
}
|
||||
x++;
|
||||
if (++CurrentPixel == 2) {
|
||||
CurrentPixel = 0;
|
||||
Pixels = *(++p);
|
||||
}
|
||||
} while (--xsize);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Draw Bitmap 8 BPP
|
||||
*/
|
||||
static void _DrawBitLine8BPP(GUI_DEVICE * pDevice, int x, int y, U8 const GUI_UNI_PTR * p, int xsize, const LCD_PIXELINDEX * pTrans) {
|
||||
LCD_PIXELINDEX Pixel;
|
||||
|
||||
switch (GUI_pContext->DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
|
||||
case 0:
|
||||
if (pTrans) {
|
||||
for (; xsize > 0; xsize--, x++, p++) {
|
||||
Pixel = *p;
|
||||
_SetPixelIndex(pDevice, x, y, *(pTrans + Pixel));
|
||||
}
|
||||
} else {
|
||||
for (; xsize > 0; xsize--, x++, p++) {
|
||||
_SetPixelIndex(pDevice, x, y, *p);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LCD_DRAWMODE_TRANS:
|
||||
if (pTrans) {
|
||||
for (; xsize > 0; xsize--, x++, p++) {
|
||||
Pixel = *p;
|
||||
if (Pixel) {
|
||||
_SetPixelIndex(pDevice, x, y, *(pTrans + Pixel));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (; xsize > 0; xsize--, x++, p++) {
|
||||
Pixel = *p;
|
||||
if (Pixel) {
|
||||
_SetPixelIndex(pDevice, x, y, Pixel);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Draw Bitmap 16 BPP, not optimized
|
||||
*
|
||||
* Purpose:
|
||||
* Drawing of 16bpp high color bitmaps.
|
||||
* Only required for 16bpp color depth of target. Should be removed otherwise.
|
||||
*/
|
||||
static void _DrawBitLine16BPP(GUI_DEVICE * pDevice, int x, int y, U16 const GUI_UNI_PTR * p, int xsize) {
|
||||
for (;xsize > 0; xsize--, x++, p++) {
|
||||
_SetPixelIndex(pDevice, x, y, *p);
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Draw Bitmap 32 BPP, not optimized
|
||||
*
|
||||
* Purpose:
|
||||
* Drawing of 32bpp true color bitmaps.
|
||||
* Only required for 32bpp color depth of target. Should be removed otherwise.
|
||||
*/
|
||||
static void _DrawBitLine32BPP(GUI_DEVICE * pDevice, int x, int y, U32 const GUI_UNI_PTR * p, int xsize) {
|
||||
for (;xsize > 0; xsize--, x++, p++) {
|
||||
_SetPixelIndex(pDevice, x, y, *p);
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _DrawBitmap
|
||||
*/
|
||||
static void _DrawBitmap(GUI_DEVICE * pDevice, int x0, int y0,
|
||||
int xSize, int ySize,
|
||||
int BitsPerPixel,
|
||||
int BytesPerLine,
|
||||
const U8 GUI_UNI_PTR * pData, int Diff,
|
||||
const LCD_PIXELINDEX * pTrans) {
|
||||
int i;
|
||||
|
||||
switch (BitsPerPixel) {
|
||||
case 1:
|
||||
for (i = 0; i < ySize; i++) {
|
||||
_DrawBitLine1BPP(pDevice, x0, i + y0, pData, Diff, xSize, pTrans);
|
||||
pData += BytesPerLine;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (i = 0; i < ySize; i++) {
|
||||
_DrawBitLine2BPP(pDevice, x0, i + y0, pData, Diff, xSize, pTrans);
|
||||
pData += BytesPerLine;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
for (i = 0; i < ySize; i++) {
|
||||
_DrawBitLine4BPP(pDevice, x0, i + y0, pData, Diff, xSize, pTrans);
|
||||
pData += BytesPerLine;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
for (i = 0; i < ySize; i++) {
|
||||
_DrawBitLine8BPP(pDevice, x0, i + y0, pData, xSize, pTrans);
|
||||
pData += BytesPerLine;
|
||||
}
|
||||
break;
|
||||
//
|
||||
// Only required for 16bpp color depth of target. Should be removed otherwise.
|
||||
//
|
||||
case 16:
|
||||
for (i = 0; i < ySize; i++) {
|
||||
_DrawBitLine16BPP(pDevice, x0, i + y0, (const U16 *)pData, xSize);
|
||||
pData += BytesPerLine;
|
||||
}
|
||||
break;
|
||||
//
|
||||
// Only required for 32bpp color depth of target. Should be removed otherwise.
|
||||
//
|
||||
case 32:
|
||||
for (i = 0; i < ySize; i++) {
|
||||
_DrawBitLine32BPP(pDevice, x0, i + y0, (const U32 *)pData, xSize);
|
||||
pData += BytesPerLine;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _InitOnce
|
||||
*
|
||||
* Purpose:
|
||||
* Allocates a fixed block for the context of the driver
|
||||
*
|
||||
* Return value:
|
||||
* 0 on success, 1 on error
|
||||
*/
|
||||
static int _InitOnce(GUI_DEVICE * pDevice) {
|
||||
DRIVER_CONTEXT_TEMPLATE * pContext;
|
||||
|
||||
if (pDevice->u.pContext == NULL) {
|
||||
pDevice->u.pContext = GUI_ALLOC_GetFixedBlock(sizeof(DRIVER_CONTEXT_TEMPLATE));
|
||||
pContext = (DRIVER_CONTEXT_TEMPLATE *)pDevice->u.pContext;
|
||||
pContext->BitsPerPixel = LCD__GetBPP(pDevice->pColorConvAPI->pfGetIndexMask());
|
||||
}
|
||||
return pDevice->u.pContext ? 0 : 1;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _GetDevProp
|
||||
*/
|
||||
static I32 _GetDevProp(GUI_DEVICE * pDevice, int Index) {
|
||||
DRIVER_CONTEXT_TEMPLATE * pContext;
|
||||
|
||||
pContext = (DRIVER_CONTEXT_TEMPLATE *)pDevice->u.pContext;
|
||||
switch (Index) {
|
||||
case LCD_DEVCAP_XSIZE:
|
||||
return pContext->xSize;
|
||||
case LCD_DEVCAP_YSIZE:
|
||||
return pContext->ySize;
|
||||
case LCD_DEVCAP_VXSIZE:
|
||||
return pContext->vxSize;
|
||||
case LCD_DEVCAP_VYSIZE:
|
||||
return pContext->vySize;
|
||||
case LCD_DEVCAP_BITSPERPIXEL:
|
||||
return pContext->BitsPerPixel;
|
||||
case LCD_DEVCAP_NUMCOLORS:
|
||||
return 0;
|
||||
case LCD_DEVCAP_XMAG:
|
||||
return 1;
|
||||
case LCD_DEVCAP_YMAG:
|
||||
return 1;
|
||||
case LCD_DEVCAP_MIRROR_X:
|
||||
return 0;
|
||||
case LCD_DEVCAP_MIRROR_Y:
|
||||
return 0;
|
||||
case LCD_DEVCAP_SWAP_XY:
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _GetDevData
|
||||
*/
|
||||
static void * _GetDevData(GUI_DEVICE * pDevice, int Index) {
|
||||
GUI_USE_PARA(pDevice);
|
||||
#if GUI_SUPPORT_MEMDEV
|
||||
switch (Index) {
|
||||
case LCD_DEVDATA_MEMDEV:
|
||||
return (void *)&GUI_MEMDEV_DEVICE_16; // TBD: Has to be adapted to the right memory device depending on the used color depth!
|
||||
}
|
||||
#else
|
||||
GUI_USE_PARA(Index);
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _GetRect
|
||||
*/
|
||||
static void _GetRect(GUI_DEVICE * pDevice, LCD_RECT * pRect) {
|
||||
DRIVER_CONTEXT_TEMPLATE * pContext;
|
||||
|
||||
pContext = (DRIVER_CONTEXT_TEMPLATE *)pDevice->u.pContext;
|
||||
pRect->x0 = 0;
|
||||
pRect->y0 = 0;
|
||||
pRect->x1 = pContext->vxSize - 1;
|
||||
pRect->y1 = pContext->vySize - 1;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _SetOrg
|
||||
*/
|
||||
static void _SetOrg(GUI_DEVICE * pDevice, int x, int y) {
|
||||
LCD_X_SETORG_INFO Data = {0};
|
||||
|
||||
Data.xPos = x;
|
||||
Data.yPos = y;
|
||||
LCD_X_DisplayDriver(pDevice->LayerIndex, LCD_X_SETORG, (void *)&Data);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Static code: Functions available by _GetDevFunc()
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
/*********************************************************************
|
||||
*
|
||||
* _SetVRAMAddr
|
||||
*/
|
||||
static void _SetVRAMAddr(GUI_DEVICE * pDevice, void * pVRAM) {
|
||||
DRIVER_CONTEXT_TEMPLATE * pContext;
|
||||
LCD_X_SETVRAMADDR_INFO Data = {0};
|
||||
|
||||
_InitOnce(pDevice);
|
||||
if (pDevice->u.pContext) {
|
||||
pContext = (DRIVER_CONTEXT_TEMPLATE *)pDevice->u.pContext;
|
||||
pContext->VRAMAddr = (U32)pVRAM;
|
||||
Data.pVRAM = pVRAM;
|
||||
LCD_X_DisplayDriver(pDevice->LayerIndex, LCD_X_SETVRAMADDR, (void *)&Data);
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _SetVSize
|
||||
*/
|
||||
static void _SetVSize(GUI_DEVICE * pDevice, int xSize, int ySize) {
|
||||
DRIVER_CONTEXT_TEMPLATE * pContext;
|
||||
|
||||
_InitOnce(pDevice);
|
||||
if (pDevice->u.pContext) {
|
||||
pContext = (DRIVER_CONTEXT_TEMPLATE *)pDevice->u.pContext;
|
||||
pContext->vxSize = xSize;
|
||||
pContext->vySize = ySize;
|
||||
pContext->vxSizePhys = xSize;
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _SetSize
|
||||
*/
|
||||
static void _SetSize(GUI_DEVICE * pDevice, int xSize, int ySize) {
|
||||
DRIVER_CONTEXT_TEMPLATE * pContext;
|
||||
LCD_X_SETSIZE_INFO Data = {0};
|
||||
|
||||
_InitOnce(pDevice);
|
||||
if (pDevice->u.pContext) {
|
||||
pContext = (DRIVER_CONTEXT_TEMPLATE *)pDevice->u.pContext;
|
||||
pContext->vxSizePhys = (pContext->vxSizePhys == 0) ? xSize : pContext->vxSizePhys;
|
||||
pContext->xSize = xSize;
|
||||
pContext->ySize = ySize;
|
||||
Data.xSize = xSize;
|
||||
Data.ySize = ySize;
|
||||
LCD_X_DisplayDriver(pDevice->LayerIndex, LCD_X_SETSIZE, (void *)&Data);
|
||||
}
|
||||
}
|
||||
/*********************************************************************
|
||||
*
|
||||
* _Init
|
||||
*/
|
||||
static int _Init(GUI_DEVICE * pDevice) {
|
||||
int r;
|
||||
|
||||
r = _InitOnce(pDevice);
|
||||
r |= LCD_X_DisplayDriver(pDevice->LayerIndex, LCD_X_INITCONTROLLER, NULL);
|
||||
return r;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _On
|
||||
*/
|
||||
static void _On (GUI_DEVICE * pDevice) {
|
||||
LCD_X_DisplayDriver(pDevice->LayerIndex, LCD_X_ON, NULL);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _Off
|
||||
*/
|
||||
static void _Off (GUI_DEVICE * pDevice) {
|
||||
LCD_X_DisplayDriver(pDevice->LayerIndex, LCD_X_OFF, NULL);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _SetLUTEntry
|
||||
*/
|
||||
static void _SetLUTEntry(GUI_DEVICE * pDevice, U8 Pos, LCD_COLOR Color) {
|
||||
LCD_X_SETLUTENTRY_INFO Data = {0};
|
||||
|
||||
Data.Pos = Pos;
|
||||
Data.Color = Color;
|
||||
LCD_X_DisplayDriver(pDevice->LayerIndex, LCD_X_SETLUTENTRY, (void *)&Data);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* _GetDevFunc
|
||||
*/
|
||||
static void (* _GetDevFunc(GUI_DEVICE ** ppDevice, int Index))(void) {
|
||||
GUI_USE_PARA(ppDevice);
|
||||
switch (Index) {
|
||||
case LCD_DEVFUNC_SET_VRAM_ADDR:
|
||||
return (void (*)(void))_SetVRAMAddr;
|
||||
case LCD_DEVFUNC_SET_VSIZE:
|
||||
return (void (*)(void))_SetVSize;
|
||||
case LCD_DEVFUNC_SET_SIZE:
|
||||
return (void (*)(void))_SetSize;
|
||||
case LCD_DEVFUNC_INIT:
|
||||
return (void (*)(void))_Init;
|
||||
case LCD_DEVFUNC_ON:
|
||||
return (void (*)(void))_On;
|
||||
case LCD_DEVFUNC_OFF:
|
||||
return (void (*)(void))_Off;
|
||||
case LCD_DEVFUNC_SETLUTENTRY:
|
||||
return (void (*)(void))_SetLUTEntry;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Public data
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
/*********************************************************************
|
||||
*
|
||||
* GUI_DEVICE_API structure
|
||||
*/
|
||||
const GUI_DEVICE_API GUIDRV_Template_API = {
|
||||
//
|
||||
// Data
|
||||
//
|
||||
DEVICE_CLASS_DRIVER,
|
||||
//
|
||||
// Drawing functions
|
||||
//
|
||||
_DrawBitmap,
|
||||
_DrawHLine,
|
||||
_DrawVLine,
|
||||
_FillRect,
|
||||
_GetPixelIndex,
|
||||
_SetPixelIndex,
|
||||
_XorPixel,
|
||||
//
|
||||
// Set origin
|
||||
//
|
||||
_SetOrg,
|
||||
//
|
||||
// Request information
|
||||
//
|
||||
_GetDevFunc,
|
||||
_GetDevProp,
|
||||
_GetDevData,
|
||||
_GetRect,
|
||||
};
|
||||
|
||||
/*************************** End of file ****************************/
|
73
components/gui/STemWin/Config/GUIDRV_Template.h
Normal file
73
components/gui/STemWin/Config/GUIDRV_Template.h
Normal file
@@ -0,0 +1,73 @@
|
||||
/*********************************************************************
|
||||
* Portions COPYRIGHT 2016 STMicroelectronics *
|
||||
* Portions SEGGER Microcontroller GmbH & Co. KG *
|
||||
* Solutions for real time microcontroller applications *
|
||||
**********************************************************************
|
||||
* *
|
||||
* (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG *
|
||||
* *
|
||||
* Internet: www.segger.com Support: support@segger.com *
|
||||
* *
|
||||
**********************************************************************
|
||||
|
||||
** emWin V5.32 - Graphical user interface for embedded applications **
|
||||
All Intellectual Property rights in the Software belongs to SEGGER.
|
||||
emWin is protected by international copyright laws. Knowledge of the
|
||||
source code may not be used to write a similar product. This file may
|
||||
only be used in accordance with the following terms:
|
||||
|
||||
The software has been licensed to STMicroelectronics International
|
||||
N.V. a Dutch company with a Swiss branch and its headquarters in Plan-
|
||||
les-Ouates, Geneva, 39 Chemin du Champ des Filles, Switzerland for the
|
||||
purposes of creating libraries for ARM Cortex-M-based 32-bit microcon_
|
||||
troller products commercialized by Licensee only, sublicensed and dis_
|
||||
tributed under the terms and conditions of the End User License Agree_
|
||||
ment supplied by STMicroelectronics International N.V.
|
||||
Full source code is available at: www.segger.com
|
||||
|
||||
We appreciate your understanding and fairness.
|
||||
----------------------------------------------------------------------
|
||||
File : GUIDRV_Template.h
|
||||
Purpose : Interface definition for GUIDRV_Template driver
|
||||
---------------------------END-OF-HEADER------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Licensed under MCD-ST Liberty SW License Agreement V2, (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.st.com/software_license_agreement_liberty_v2
|
||||
*
|
||||
* 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 GUIDRV_TEMPLATE_H
|
||||
#define GUIDRV_TEMPLATE_H
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Display drivers
|
||||
*/
|
||||
//
|
||||
// Addresses
|
||||
//
|
||||
extern const GUI_DEVICE_API GUIDRV_Template_API;
|
||||
|
||||
//
|
||||
// Macro to be used in configuration files
|
||||
//
|
||||
#define GUIDRV_TEMPLATE &GUIDRV_Template_API
|
||||
|
||||
#endif
|
||||
|
||||
/*************************** End of file ****************************/
|
236
components/gui/STemWin/Config/LCDConf_FlexColor_Template.c
Normal file
236
components/gui/STemWin/Config/LCDConf_FlexColor_Template.c
Normal file
@@ -0,0 +1,236 @@
|
||||
/*********************************************************************
|
||||
* Portions COPYRIGHT 2016 STMicroelectronics *
|
||||
* Portions SEGGER Microcontroller GmbH & Co. KG *
|
||||
* Solutions for real time microcontroller applications *
|
||||
**********************************************************************
|
||||
* *
|
||||
* (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG *
|
||||
* *
|
||||
* Internet: www.segger.com Support: support@segger.com *
|
||||
* *
|
||||
**********************************************************************
|
||||
|
||||
** emWin V5.32 - Graphical user interface for embedded applications **
|
||||
All Intellectual Property rights in the Software belongs to SEGGER.
|
||||
emWin is protected by international copyright laws. Knowledge of the
|
||||
source code may not be used to write a similar product. This file may
|
||||
only be used in accordance with the following terms:
|
||||
|
||||
The software has been licensed to STMicroelectronics International
|
||||
N.V. a Dutch company with a Swiss branch and its headquarters in Plan-
|
||||
les-Ouates, Geneva, 39 Chemin du Champ des Filles, Switzerland for the
|
||||
purposes of creating libraries for ARM Cortex-M-based 32-bit microcon_
|
||||
troller products commercialized by Licensee only, sublicensed and dis_
|
||||
tributed under the terms and conditions of the End User License Agree_
|
||||
ment supplied by STMicroelectronics International N.V.
|
||||
Full source code is available at: www.segger.com
|
||||
|
||||
We appreciate your understanding and fairness.
|
||||
----------------------------------------------------------------------
|
||||
File : LCDConf_FlexColor_Template.c
|
||||
Purpose : Display controller configuration (single layer)
|
||||
---------------------------END-OF-HEADER------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Licensed under MCD-ST Liberty SW License Agreement V2, (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.st.com/software_license_agreement_liberty_v2
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include "GUI.h"
|
||||
#include "GUIDRV_FlexColor.h"
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Layer configuration (to be modified)
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
|
||||
//
|
||||
// Physical display size
|
||||
//
|
||||
#define XSIZE_PHYS 240 // To be adapted to x-screen size
|
||||
#define YSIZE_PHYS 320 // To be adapted to y-screen size
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Configuration checking
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
#ifndef VXSIZE_PHYS
|
||||
#define VXSIZE_PHYS XSIZE_PHYS
|
||||
#endif
|
||||
#ifndef VYSIZE_PHYS
|
||||
#define VYSIZE_PHYS YSIZE_PHYS
|
||||
#endif
|
||||
#ifndef XSIZE_PHYS
|
||||
#error Physical X size of display is not defined!
|
||||
#endif
|
||||
#ifndef YSIZE_PHYS
|
||||
#error Physical Y size of display is not defined!
|
||||
#endif
|
||||
#ifndef GUICC_565
|
||||
#error Color conversion not defined!
|
||||
#endif
|
||||
#ifndef GUIDRV_FLEXCOLOR
|
||||
#error No display driver defined!
|
||||
#endif
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Local functions
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
/********************************************************************
|
||||
*
|
||||
* LcdWriteReg
|
||||
*
|
||||
* Function description:
|
||||
* Sets display register
|
||||
*/
|
||||
static void LcdWriteReg(U16 Data) {
|
||||
// ... TBD by user
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
*
|
||||
* LcdWriteData
|
||||
*
|
||||
* Function description:
|
||||
* Writes a value to a display register
|
||||
*/
|
||||
static void LcdWriteData(U16 Data) {
|
||||
// ... TBD by user
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
*
|
||||
* LcdWriteDataMultiple
|
||||
*
|
||||
* Function description:
|
||||
* Writes multiple values to a display register.
|
||||
*/
|
||||
static void LcdWriteDataMultiple(U16 * pData, int NumItems) {
|
||||
while (NumItems--) {
|
||||
// ... TBD by user
|
||||
}
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
*
|
||||
* LcdReadDataMultiple
|
||||
*
|
||||
* Function description:
|
||||
* Reads multiple values from a display register.
|
||||
*/
|
||||
static void LcdReadDataMultiple(U16 * pData, int NumItems) {
|
||||
while (NumItems--) {
|
||||
// ... TBD by user
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Public functions
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
/*********************************************************************
|
||||
*
|
||||
* LCD_X_Config
|
||||
*
|
||||
* Function description:
|
||||
* Called during the initialization process in order to set up the
|
||||
* display driver configuration.
|
||||
*
|
||||
*/
|
||||
void LCD_X_Config(void) {
|
||||
GUI_DEVICE * pDevice;
|
||||
CONFIG_FLEXCOLOR Config = {0};
|
||||
GUI_PORT_API PortAPI = {0};
|
||||
//
|
||||
// Set display driver and color conversion
|
||||
//
|
||||
pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_565, 0, 0);
|
||||
//
|
||||
// Display driver configuration, required for Lin-driver
|
||||
//
|
||||
LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);
|
||||
LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);
|
||||
//
|
||||
// Orientation
|
||||
//
|
||||
Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_Y;
|
||||
GUIDRV_FlexColor_Config(pDevice, &Config);
|
||||
//
|
||||
// Set controller and operation mode
|
||||
//
|
||||
PortAPI.pfWrite16_A0 = LcdWriteReg;
|
||||
PortAPI.pfWrite16_A1 = LcdWriteData;
|
||||
PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple;
|
||||
PortAPI.pfReadM16_A1 = LcdReadDataMultiple;
|
||||
GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66708, GUIDRV_FLEXCOLOR_M16C0B16);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* LCD_X_DisplayDriver
|
||||
*
|
||||
* Function description:
|
||||
* This function is called by the display driver for several purposes.
|
||||
* To support the according task the routine needs to be adapted to
|
||||
* the display controller. Please note that the commands marked with
|
||||
* 'optional' are not cogently required and should only be adapted if
|
||||
* the display controller supports these features.
|
||||
*
|
||||
* Parameter:
|
||||
* LayerIndex - Index of layer to be configured
|
||||
* Cmd - Please refer to the details in the switch statement below
|
||||
* pData - Pointer to a LCD_X_DATA structure
|
||||
*
|
||||
* Return Value:
|
||||
* < -1 - Error
|
||||
* -1 - Command not handled
|
||||
* 0 - Ok
|
||||
*/
|
||||
int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData) {
|
||||
int r;
|
||||
(void) LayerIndex;
|
||||
(void) pData;
|
||||
|
||||
switch (Cmd) {
|
||||
case LCD_X_INITCONTROLLER: {
|
||||
//
|
||||
// Called during the initialization process in order to set up the
|
||||
// display controller and put it into operation. If the display
|
||||
// controller is not initialized by any external routine this needs
|
||||
// to be adapted by the customer...
|
||||
//
|
||||
// ...
|
||||
return 0;
|
||||
}
|
||||
default:
|
||||
r = -1;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
/*************************** End of file ****************************/
|
||||
|
59
components/gui/STemWin/Config/LCDConf_FlexColor_Template.h
Normal file
59
components/gui/STemWin/Config/LCDConf_FlexColor_Template.h
Normal file
@@ -0,0 +1,59 @@
|
||||
/*********************************************************************
|
||||
* Portions COPYRIGHT 2016 STMicroelectronics *
|
||||
* Portions SEGGER Microcontroller GmbH & Co. KG *
|
||||
* Solutions for real time microcontroller applications *
|
||||
**********************************************************************
|
||||
* *
|
||||
* (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG *
|
||||
* *
|
||||
* Internet: www.segger.com Support: support@segger.com *
|
||||
* *
|
||||
**********************************************************************
|
||||
|
||||
** emWin V5.32 - Graphical user interface for embedded applications **
|
||||
All Intellectual Property rights in the Software belongs to SEGGER.
|
||||
emWin is protected by international copyright laws. Knowledge of the
|
||||
source code may not be used to write a similar product. This file may
|
||||
only be used in accordance with the following terms:
|
||||
|
||||
The software has been licensed to STMicroelectronics International
|
||||
N.V. a Dutch company with a Swiss branch and its headquarters in Plan-
|
||||
les-Ouates, Geneva, 39 Chemin du Champ des Filles, Switzerland for the
|
||||
purposes of creating libraries for ARM Cortex-M-based 32-bit microcon_
|
||||
troller products commercialized by Licensee only, sublicensed and dis_
|
||||
tributed under the terms and conditions of the End User License Agree_
|
||||
ment supplied by STMicroelectronics International N.V.
|
||||
Full source code is available at: www.segger.com
|
||||
|
||||
We appreciate your understanding and fairness.
|
||||
----------------------------------------------------------------------
|
||||
File : LCDConf_FlexColor_Template.h
|
||||
Purpose : Display driver configuration file
|
||||
---------------------------END-OF-HEADER------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Licensed under MCD-ST Liberty SW License Agreement V2, (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.st.com/software_license_agreement_liberty_v2
|
||||
*
|
||||
* 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 LCDCONF_H
|
||||
#define LCDCONF_H
|
||||
|
||||
#endif /* LCDCONF_H */
|
||||
|
||||
/*************************** End of file ****************************/
|
262
components/gui/STemWin/Config/LCDConf_Lin_Template.c
Normal file
262
components/gui/STemWin/Config/LCDConf_Lin_Template.c
Normal file
@@ -0,0 +1,262 @@
|
||||
/*********************************************************************
|
||||
* Portions COPYRIGHT 2016 STMicroelectronics *
|
||||
* Portions SEGGER Microcontroller GmbH & Co. KG *
|
||||
* Solutions for real time microcontroller applications *
|
||||
**********************************************************************
|
||||
* *
|
||||
* (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG *
|
||||
* *
|
||||
* Internet: www.segger.com Support: support@segger.com *
|
||||
* *
|
||||
**********************************************************************
|
||||
|
||||
** emWin V5.32 - Graphical user interface for embedded applications **
|
||||
All Intellectual Property rights in the Software belongs to SEGGER.
|
||||
emWin is protected by international copyright laws. Knowledge of the
|
||||
source code may not be used to write a similar product. This file may
|
||||
only be used in accordance with the following terms:
|
||||
|
||||
The software has been licensed to STMicroelectronics International
|
||||
N.V. a Dutch company with a Swiss branch and its headquarters in Plan-
|
||||
les-Ouates, Geneva, 39 Chemin du Champ des Filles, Switzerland for the
|
||||
purposes of creating libraries for ARM Cortex-M-based 32-bit microcon_
|
||||
troller products commercialized by Licensee only, sublicensed and dis_
|
||||
tributed under the terms and conditions of the End User License Agree_
|
||||
ment supplied by STMicroelectronics International N.V.
|
||||
Full source code is available at: www.segger.com
|
||||
|
||||
We appreciate your understanding and fairness.
|
||||
----------------------------------------------------------------------
|
||||
File : LCDConf_Lin_Template.c
|
||||
Purpose : Display controller configuration (single layer)
|
||||
---------------------------END-OF-HEADER------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Licensed under MCD-ST Liberty SW License Agreement V2, (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.st.com/software_license_agreement_liberty_v2
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include "GUI.h"
|
||||
#include "GUIDRV_Lin.h"
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Layer configuration (to be modified)
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
//
|
||||
// Physical display size
|
||||
//
|
||||
#define XSIZE_PHYS 320
|
||||
#define YSIZE_PHYS 240
|
||||
|
||||
//
|
||||
// Color conversion
|
||||
//
|
||||
#define COLOR_CONVERSION GUICC_8888
|
||||
|
||||
//
|
||||
// Display driver
|
||||
//
|
||||
#define DISPLAY_DRIVER GUIDRV_WIN32
|
||||
|
||||
//
|
||||
// Buffers / VScreens
|
||||
//
|
||||
#define NUM_BUFFERS 1 // Number of multiple buffers to be used
|
||||
#define NUM_VSCREENS 1 // Number of virtual screens to be used
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Configuration checking
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
#ifndef VRAM_ADDR
|
||||
#define VRAM_ADDR 0 // TBD by customer: This has to be the frame buffer start address
|
||||
#endif
|
||||
#ifndef XSIZE_PHYS
|
||||
#error Physical X size of display is not defined!
|
||||
#endif
|
||||
#ifndef YSIZE_PHYS
|
||||
#error Physical Y size of display is not defined!
|
||||
#endif
|
||||
#ifndef COLOR_CONVERSION
|
||||
#error Color conversion not defined!
|
||||
#endif
|
||||
#ifndef DISPLAY_DRIVER
|
||||
#error No display driver defined!
|
||||
#endif
|
||||
#ifndef NUM_VSCREENS
|
||||
#define NUM_VSCREENS 1
|
||||
#else
|
||||
#if (NUM_VSCREENS <= 0)
|
||||
#error At least one screeen needs to be defined!
|
||||
#endif
|
||||
#endif
|
||||
#if (NUM_VSCREENS > 1) && (NUM_BUFFERS > 1)
|
||||
#error Virtual screens and multiple buffers are not allowed!
|
||||
#endif
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Public code
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
/*********************************************************************
|
||||
*
|
||||
* LCD_X_Config
|
||||
*
|
||||
* Purpose:
|
||||
* Called during the initialization process in order to set up the
|
||||
* display driver configuration.
|
||||
*
|
||||
*/
|
||||
void LCD_X_Config(void) {
|
||||
//
|
||||
// At first initialize use of multiple buffers on demand
|
||||
//
|
||||
#if (NUM_BUFFERS > 1)
|
||||
GUI_MULTIBUF_Config(NUM_BUFFERS);
|
||||
#endif
|
||||
//
|
||||
// Set display driver and color conversion for 1st layer
|
||||
//
|
||||
GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0);
|
||||
//
|
||||
// Display driver configuration, required for Lin-driver
|
||||
//
|
||||
if (LCD_GetSwapXY()) {
|
||||
LCD_SetSizeEx (0, YSIZE_PHYS, XSIZE_PHYS);
|
||||
LCD_SetVSizeEx(0, YSIZE_PHYS * NUM_VSCREENS, XSIZE_PHYS);
|
||||
} else {
|
||||
LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS);
|
||||
LCD_SetVSizeEx(0, XSIZE_PHYS, YSIZE_PHYS * NUM_VSCREENS);
|
||||
}
|
||||
LCD_SetVRAMAddrEx(0, (void *)VRAM_ADDR);
|
||||
//
|
||||
// Set user palette data (only required if no fixed palette is used)
|
||||
//
|
||||
#if defined(PALETTE)
|
||||
LCD_SetLUTEx(0, PALETTE);
|
||||
#endif
|
||||
|
||||
//
|
||||
// Set custom functions for several operations to optimize native processes
|
||||
//
|
||||
LCD_SetDevFunc(0, LCD_DEVFUNC_COPYBUFFER, (void(*)(void))CUSTOM_LCD_CopyBuffer);
|
||||
LCD_SetDevFunc(0, LCD_DEVFUNC_COPYRECT, (void(*)(void))CUSTOM_LCD_CopyRect);
|
||||
LCD_SetDevFunc(0, LCD_DEVFUNC_FILLRECT, (void(*)(void))CUSTOM_LCD_FillRect);
|
||||
LCD_SetDevFunc(0, LCD_DEVFUNC_DRAWBMP_8BPP, (void(*)(void))CUSTOM_LCD_DrawBitmap8bpp);
|
||||
LCD_SetDevFunc(0, LCD_DEVFUNC_DRAWBMP_16BPP, (void(*)(void))CUSTOM_LCD_DrawBitmap16bpp);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* LCD_X_DisplayDriver
|
||||
*
|
||||
* Purpose:
|
||||
* This function is called by the display driver for several purposes.
|
||||
* To support the according task the routine needs to be adapted to
|
||||
* the display controller. Please note that the commands marked with
|
||||
* 'optional' are not cogently required and should only be adapted if
|
||||
* the display controller supports these features.
|
||||
*
|
||||
* Parameter:
|
||||
* LayerIndex - Index of layer to be configured
|
||||
* Cmd - Please refer to the details in the switch statement below
|
||||
* pData - Pointer to a LCD_X_DATA structure
|
||||
*
|
||||
* Return Value:
|
||||
* < -1 - Error
|
||||
* -1 - Command not handled
|
||||
* 0 - Ok
|
||||
*/
|
||||
int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData) {
|
||||
int r;
|
||||
|
||||
switch (Cmd) {
|
||||
case LCD_X_INITCONTROLLER: {
|
||||
//
|
||||
// Called during the initialization process in order to set up the
|
||||
// display controller and put it into operation. If the display
|
||||
// controller is not initialized by any external routine this needs
|
||||
// to be adapted by the customer...
|
||||
//
|
||||
// ...
|
||||
return 0;
|
||||
}
|
||||
case LCD_X_SETVRAMADDR: {
|
||||
//
|
||||
// Required for setting the address of the video RAM for drivers
|
||||
// with memory mapped video RAM which is passed in the 'pVRAM' element of p
|
||||
//
|
||||
LCD_X_SETVRAMADDR_INFO * p;
|
||||
p = (LCD_X_SETVRAMADDR_INFO *)pData;
|
||||
//...
|
||||
return 0;
|
||||
}
|
||||
case LCD_X_SETORG: {
|
||||
//
|
||||
// Required for setting the display origin which is passed in the 'xPos' and 'yPos' element of p
|
||||
//
|
||||
LCD_X_SETORG_INFO * p;
|
||||
p = (LCD_X_SETORG_INFO *)pData;
|
||||
//...
|
||||
return 0;
|
||||
}
|
||||
case LCD_X_SHOWBUFFER: {
|
||||
//
|
||||
// Required if multiple buffers are used. The 'Index' element of p contains the buffer index.
|
||||
//
|
||||
LCD_X_SHOWBUFFER_INFO * p;
|
||||
p = (LCD_X_SHOWBUFFER_INFO *)pData;
|
||||
//...
|
||||
return 0;
|
||||
}
|
||||
case LCD_X_SETLUTENTRY: {
|
||||
//
|
||||
// Required for setting a lookup table entry which is passed in the 'Pos' and 'Color' element of p
|
||||
//
|
||||
LCD_X_SETLUTENTRY_INFO * p;
|
||||
p = (LCD_X_SETLUTENTRY_INFO *)pData;
|
||||
//...
|
||||
return 0;
|
||||
}
|
||||
case LCD_X_ON: {
|
||||
//
|
||||
// Required if the display controller should support switching on and off
|
||||
//
|
||||
return 0;
|
||||
}
|
||||
case LCD_X_OFF: {
|
||||
//
|
||||
// Required if the display controller should support switching on and off
|
||||
//
|
||||
// ...
|
||||
return 0;
|
||||
}
|
||||
default:
|
||||
r = -1;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
/*************************** End of file ****************************/
|
59
components/gui/STemWin/Config/LCDConf_Lin_Template.h
Normal file
59
components/gui/STemWin/Config/LCDConf_Lin_Template.h
Normal file
@@ -0,0 +1,59 @@
|
||||
/*********************************************************************
|
||||
* Portions COPYRIGHT 2016 STMicroelectronics *
|
||||
* Portions SEGGER Microcontroller GmbH & Co. KG *
|
||||
* Solutions for real time microcontroller applications *
|
||||
**********************************************************************
|
||||
* *
|
||||
* (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG *
|
||||
* *
|
||||
* Internet: www.segger.com Support: support@segger.com *
|
||||
* *
|
||||
**********************************************************************
|
||||
|
||||
** emWin V5.30 - Graphical user interface for embedded applications **
|
||||
All Intellectual Property rights in the Software belongs to SEGGER.
|
||||
emWin is protected by international copyright laws. Knowledge of the
|
||||
source code may not be used to write a similar product. This file may
|
||||
only be used in accordance with the following terms:
|
||||
|
||||
The software has been licensed to STMicroelectronics International
|
||||
N.V. a Dutch company with a Swiss branch and its headquarters in Plan-
|
||||
les-Ouates, Geneva, 39 Chemin du Champ des Filles, Switzerland for the
|
||||
purposes of creating libraries for ARM Cortex-M-based 32-bit microcon_
|
||||
troller products commercialized by Licensee only, sublicensed and dis_
|
||||
tributed under the terms and conditions of the End User License Agree_
|
||||
ment supplied by STMicroelectronics International N.V.
|
||||
Full source code is available at: www.segger.com
|
||||
|
||||
We appreciate your understanding and fairness.
|
||||
----------------------------------------------------------------------
|
||||
File : LCDConf_Lin_Template.h
|
||||
Purpose : Display driver configuration file
|
||||
---------------------------END-OF-HEADER------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Licensed under MCD-ST Liberty SW License Agreement V2, (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.st.com/software_license_agreement_liberty_v2
|
||||
*
|
||||
* 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 LCDCONF_H
|
||||
#define LCDCONF_H
|
||||
|
||||
#endif /* LCDCONF_H */
|
||||
|
||||
/*************************** End of file ****************************/
|
71
components/gui/STemWin/Config/SIMConf.c
Normal file
71
components/gui/STemWin/Config/SIMConf.c
Normal file
@@ -0,0 +1,71 @@
|
||||
/*********************************************************************
|
||||
* Portions COPYRIGHT 2016 STMicroelectronics *
|
||||
* Portions SEGGER Microcontroller GmbH & Co. KG *
|
||||
* Solutions for real time microcontroller applications *
|
||||
**********************************************************************
|
||||
* *
|
||||
* (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG *
|
||||
* *
|
||||
* Internet: www.segger.com Support: support@segger.com *
|
||||
* *
|
||||
**********************************************************************
|
||||
|
||||
** emWin V5.32 - Graphical user interface for embedded applications **
|
||||
emWin is protected by international copyright laws. Knowledge of the
|
||||
source code may not be used to write a similar product. This file may
|
||||
only be used in accordance with a license and should not be re-
|
||||
distributed in any way. We appreciate your understanding and fairness.
|
||||
----------------------------------------------------------------------
|
||||
File : SIMConf.c
|
||||
Purpose : Windows Simulator configuration
|
||||
---------------------------END-OF-HEADER------------------------------
|
||||
*/
|
||||
/**
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Licensed under MCD-ST Liberty SW License Agreement V2, (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.st.com/software_license_agreement_liberty_v2
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
#include "LCD_SIM.h"
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Public code
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
/*********************************************************************
|
||||
*
|
||||
* SIM_X_Config
|
||||
*
|
||||
* Purpose:
|
||||
* Called during the initialization process in order to configure
|
||||
* the simulator.
|
||||
*/
|
||||
void SIM_X_Config() {
|
||||
SIM_GUI_SetTransColor(0xff0000); // Define the transparent color
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void SIMConf_C(void); // Avoid empty object files
|
||||
void SIMConf_C(void) {}
|
||||
|
||||
#endif
|
||||
|
||||
/*************************** End of file ****************************/
|
Reference in New Issue
Block a user