Hi
Can you advise on the correct configuration to ensure memory devices & punch out work on the STM32F769I-DISCO? I get the area that should be punched out showing the background gradient, and what should be the background is black.
I am using:
Library: STemWin_CM7_wc32_ARGB.a
#define GUI_USE_ARGB (1) in GUIConf.h
#define COLOR_MODE_0 CMS_ARGB8888 which results in COLOR_CONVERSION_0 GUICC_M8888I and GUIDRV_LIN_32 being used in LCDConf.c
The code is pretty much the example, with me adding some bitmaps for testing
:
GUI_MEMDEV_Handle hMemData;
GUI_MEMDEV_Handle hMemMask;
GUI_RECT Rect;
hMemMask = GUI_MEMDEV_CreateFixed(0, 0, 99, 49, GUI_MEMDEV_NOTRANS, GUI_MEMDEV_APILIST_8, GUICC_8);
hMemData = GUI_MEMDEV_CreateFixed(0, 0, 99, 49, GUI_MEMDEV_NOTRANS, GUI_MEMDEV_APILIST_32, GUICC_M8888I);
volatile uint32_t maskPtr, dataPtr;
maskPtr = GUI_MEMDEV_GetDataPtr(hMemMask);
dataPtr = GUI_MEMDEV_GetDataPtr(hMemData);
maskPtr++;
dataPtr++;
//
// Background
//
GUI_SetBkColor(GUI_DARKBLUE);
GUI_Clear();
GUI_DrawGradientV(0, 0, 399, 49, GUI_DARKGRAY, GUI_DARKBLUE);
GUI_SetColor(GUI_WHITE);
//
// Mask device
//
GUI_SetDrawMode(GUI_DM_TRANS);
GUI_MEMDEV_Select(hMemMask);
GUI_SetBkColor(GUI_BLACK);
GUI_Clear();
GUI_AA_FillCircle(49, 24, 20);
GUI_SetPenSize(8);
GUI_DrawLine(0, 0, 99, 49);
//
// Data Device
//
GUI_MEMDEV_Select(hMemData);
GUI_SetBkColor(GUI_LIGHTGRAY);
GUI_Clear();
Rect.x0 = 6;
Rect.y0 = 0;
Rect.x1 = 99;
Rect.y1 = 49;
GUI_SetColor(GUI_DARKGRAY);
GUI_DrawBitmap(&bmARGBRBswpAlphaInv,0,0);
GUI_DrawBitmap(&bmARGBnoswpNoInv,50,20);
GUI_DispStringInRectEx("Punch\r\nme\r\nout!", &Rect,
GUI_TA_HCENTER | GUI_TA_VCENTER, 20, GUI_ROTATE_0);
//
// Result
//
GUI_MEMDEV_Select(0);
GUI_MEMDEV_PunchOutDevice(hMemData, hMemMask);
memDevMode = 1;
GUI_MEMDEV_Write(hMemData);
memDevMode = 0;
GUI_DrawBitmap(&bmARGBRBswpAlphaInv,200,200);
GUI_DrawBitmap(&bmARGBnoswpNoInv,250,220);
while (1) {
GUI_Delay(100);
}
Can you advise on the correct configuration to ensure memory devices & punch out work on the STM32F769I-DISCO? I get the area that should be punched out showing the background gradient, and what should be the background is black.
I am using:
Library: STemWin_CM7_wc32_ARGB.a
#define GUI_USE_ARGB (1) in GUIConf.h
#define COLOR_MODE_0 CMS_ARGB8888 which results in COLOR_CONVERSION_0 GUICC_M8888I and GUIDRV_LIN_32 being used in LCDConf.c
The code is pretty much the example, with me adding some bitmaps for testing

GUI_MEMDEV_Handle hMemData;
GUI_MEMDEV_Handle hMemMask;
GUI_RECT Rect;
hMemMask = GUI_MEMDEV_CreateFixed(0, 0, 99, 49, GUI_MEMDEV_NOTRANS, GUI_MEMDEV_APILIST_8, GUICC_8);
hMemData = GUI_MEMDEV_CreateFixed(0, 0, 99, 49, GUI_MEMDEV_NOTRANS, GUI_MEMDEV_APILIST_32, GUICC_M8888I);
volatile uint32_t maskPtr, dataPtr;
maskPtr = GUI_MEMDEV_GetDataPtr(hMemMask);
dataPtr = GUI_MEMDEV_GetDataPtr(hMemData);
maskPtr++;
dataPtr++;
//
// Background
//
GUI_SetBkColor(GUI_DARKBLUE);
GUI_Clear();
GUI_DrawGradientV(0, 0, 399, 49, GUI_DARKGRAY, GUI_DARKBLUE);
GUI_SetColor(GUI_WHITE);
//
// Mask device
//
GUI_SetDrawMode(GUI_DM_TRANS);
GUI_MEMDEV_Select(hMemMask);
GUI_SetBkColor(GUI_BLACK);
GUI_Clear();
GUI_AA_FillCircle(49, 24, 20);
GUI_SetPenSize(8);
GUI_DrawLine(0, 0, 99, 49);
//
// Data Device
//
GUI_MEMDEV_Select(hMemData);
GUI_SetBkColor(GUI_LIGHTGRAY);
GUI_Clear();
Rect.x0 = 6;
Rect.y0 = 0;
Rect.x1 = 99;
Rect.y1 = 49;
GUI_SetColor(GUI_DARKGRAY);
GUI_DrawBitmap(&bmARGBRBswpAlphaInv,0,0);
GUI_DrawBitmap(&bmARGBnoswpNoInv,50,20);
GUI_DispStringInRectEx("Punch\r\nme\r\nout!", &Rect,
GUI_TA_HCENTER | GUI_TA_VCENTER, 20, GUI_ROTATE_0);
//
// Result
//
GUI_MEMDEV_Select(0);
GUI_MEMDEV_PunchOutDevice(hMemData, hMemMask);
memDevMode = 1;
GUI_MEMDEV_Write(hMemData);
memDevMode = 0;
GUI_DrawBitmap(&bmARGBRBswpAlphaInv,200,200);
GUI_DrawBitmap(&bmARGBnoswpNoInv,250,220);
while (1) {
GUI_Delay(100);
}