From 23586362ec3409895c8d63b32b5e95d4cf964ee6 Mon Sep 17 00:00:00 2001 From: meepingsnesroms Date: Tue, 3 Apr 2018 13:15:29 -0700 Subject: [PATCH] Only use ugui for text rendering --- hwTestSuite/testSuite.c | 7 +-- hwTestSuite/viewer.c | 100 +++++++++++++--------------------------- hwTestSuite/viewer.h | 2 +- 3 files changed, 35 insertions(+), 74 deletions(-) diff --git a/hwTestSuite/testSuite.c b/hwTestSuite/testSuite.c index 1ef7e5d..a9c7766 100644 --- a/hwTestSuite/testSuite.c +++ b/hwTestSuite/testSuite.c @@ -202,7 +202,6 @@ void subprogramSetData(var data){ static Boolean testerInit(){ long osVer; Err error; - Boolean memoryAllocSuccess; FtrGet(sysFtrCreator, sysFtrNumROMVersion, &osVer); @@ -237,11 +236,7 @@ static Boolean testerInit(){ unsafeMode = false; /*make test list*/ - memoryAllocSuccess = initViewer(); - if(!memoryAllocSuccess){ - FrmCustomAlert(alt_err, "Could not allocate UG_WINDOW", 0, 0); - return false; - } + initViewer(); /*load first subprogram*/ subprogramIndex = 0; diff --git a/hwTestSuite/viewer.c b/hwTestSuite/viewer.c index 0e4e921..284d4c2 100644 --- a/hwTestSuite/viewer.c +++ b/hwTestSuite/viewer.c @@ -15,10 +15,6 @@ #define TEXTBOX_PIXEL_MARGIN 1 /*add 1 pixel border around text*/ #define TEXTBOX_PIXEL_WIDTH SCREEN_WIDTH #define TEXTBOX_PIXEL_HEIGHT (FONT_HEIGHT + (TEXTBOX_PIXEL_MARGIN * 2)) -#define TEXTBOX_DEFAULT_COLOR C_WHITE -#define TEXTBOX_DEFAULT_TEXT_COLOR C_BLACK -#define TEXTBOX_CURSOR_COLOR C_BLACK -#define TEXTBOX_CURSOR_TEXT_COLOR C_WHITE #define ITEM_LIST_ENTRYS ((SCREEN_HEIGHT - RESERVED_PIXELS_Y) / TEXTBOX_PIXEL_HEIGHT - 1) #define ITEM_STRING_SIZE (TEXTBOX_PIXEL_WIDTH / (FONT_WIDTH + FONT_SPACING)) @@ -31,12 +27,6 @@ static test_t hwTests[TESTS_AVAILABLE]; static uint32_t totalHwTests; -/*graphics*/ -static UG_WINDOW fbWindow; -static UG_OBJECT fbObjects[MAX_OBJECTS]; -static UG_TEXTBOX listEntrys[ITEM_LIST_ENTRYS]; -static char textboxString[ITEM_LIST_ENTRYS][ITEM_STRING_SIZE]; - /*list handler variables*/ static uint32_t page; static uint32_t index; @@ -44,6 +34,7 @@ static uint32_t lastIndex; static uint32_t lastPage; static uint32_t listLength; static uint32_t selectedEntry; +static char itemStrings[ITEM_LIST_ENTRYS][ITEM_STRING_SIZE]; static Boolean forceListRefresh; static void (*listHandler)(uint32_t command); @@ -52,12 +43,27 @@ static uint32_t bufferAddress;/*used to put the hex viewer in buffer mode instea /*functions*/ -static void windowCallback(UG_MESSAGE* message){ - /*do nothing*/ -} -static void forceTextEntryRefresh(uint32_t box){ - UG_TextboxSetText(&fbWindow, box, textboxString[box]); +static void renderListFrame(){ + int textBoxes; + int y = 0; + + for(textBoxes = 0; textBoxes < ITEM_LIST_ENTRYS; textBoxes++){ + if(textBoxes = index){ + /*render list cursor inverted*/ + UG_SetBackcolor(C_BLACK); + UG_SetForecolor(C_WHITE); + UG_PutString(0, y, itemStrings[textBoxes]); + UG_SetBackcolor(C_WHITE); + UG_SetForecolor(C_BLACK); + } + else{ + /*just the text*/ + UG_PutString(0, y, itemStrings[textBoxes]); + } + + y += TEXTBOX_PIXEL_HEIGHT; + } } static void hexHandler(uint32_t command){ @@ -67,8 +73,7 @@ static void hexHandler(uint32_t command){ /*fill strings*/ for(i = 0; i < ITEM_LIST_ENTRYS; i++){ - StrPrintF(textboxString[i], "0x%08X:0x%02X", hexViewOffset - bufferAddress, readArbitraryMemory8(hexViewOffset)); - forceTextEntryRefresh(i); + StrPrintF(itemStrings[i], "0x%08X:0x%02X", hexViewOffset - bufferAddress, readArbitraryMemory8(hexViewOffset)); hexViewOffset++; } } @@ -81,12 +86,11 @@ static void testPickerHandler(uint32_t command){ /*fill strings*/ for(i = 0; i < ITEM_LIST_ENTRYS; i++){ if(i < totalHwTests){ - StrNCopy(textboxString[i], hwTests[i].name, ITEM_STRING_SIZE); + StrNCopy(itemStrings[i], hwTests[i].name, ITEM_STRING_SIZE); } else{ - StrNCopy(textboxString[i], "Test List Overflow", ITEM_STRING_SIZE); + StrNCopy(itemStrings[i], "Test List Overflow", ITEM_STRING_SIZE); } - forceTextEntryRefresh(i); } } else if(command == LIST_ITEM_SELECTED){ @@ -95,13 +99,18 @@ static void testPickerHandler(uint32_t command){ } static void resetListHandler(){ + int i; + page = 0; index = 0; lastIndex = 0; lastPage = 0; listLength = 0; selectedEntry = 0; + for(i = 0; i < ITEM_LIST_ENTRYS; i++) + itemStrings[i][0] = '\0'; forceListRefresh = true; + UG_FillScreen(C_WHITE); } static var listModeFrame(){ @@ -147,26 +156,15 @@ static var listModeFrame(){ } - if(index != lastIndex){ + if(index != lastIndex || forceListRefresh){ /*update item colors*/ - UG_TextboxSetForeColor(&fbWindow, lastIndex, TEXTBOX_DEFAULT_TEXT_COLOR); - UG_TextboxSetBackColor(&fbWindow, lastIndex, TEXTBOX_DEFAULT_COLOR); - - UG_TextboxSetForeColor(&fbWindow, index, TEXTBOX_CURSOR_TEXT_COLOR); - UG_TextboxSetBackColor(&fbWindow, index, TEXTBOX_CURSOR_COLOR); - } - else if(forceListRefresh){ - UG_TextboxSetForeColor(&fbWindow, index, TEXTBOX_CURSOR_TEXT_COLOR); - UG_TextboxSetBackColor(&fbWindow, index, TEXTBOX_CURSOR_COLOR); + renderListFrame(); } lastIndex = index; lastPage = page; - //forceTextEntryRefresh(0); - fbWindow.state |= WND_STATE_UPDATE; - UG_Update(); - UG_PutString(0, 50, "subprogram exec worked"); + /*UG_PutString(0, 50, "subprogram exec worked");*/ if(forceListRefresh) forceListRefresh = false; @@ -205,7 +203,7 @@ var testPicker(){ return makeVar(LENGTH_0, TYPE_NULL, 0); } -static void initTestList(){ +void initViewer(){ var nullVar = makeVar(LENGTH_0, TYPE_NULL, 0); totalHwTests = 0; @@ -216,35 +214,3 @@ static void initTestList(){ hwTests[0].testFunction = hexRamBrowser; totalHwTests++; } - -Boolean initViewer(){ - int newTextboxY; - int entry; - UG_RESULT passed; - - passed = UG_WindowCreate(&fbWindow, fbObjects, MAX_OBJECTS, windowCallback); - if(passed != UG_RESULT_OK) - return false; - - initTestList(); - - UG_WindowSetStyle(&fbWindow, WND_STYLE_HIDE_TITLE | WND_STYLE_2D); - UG_WindowSetForeColor(&fbWindow, TEXTBOX_DEFAULT_TEXT_COLOR); - UG_WindowSetBackColor(&fbWindow, TEXTBOX_DEFAULT_COLOR); - - newTextboxY = 0; - for (entry = 0; entry < ITEM_LIST_ENTRYS; entry++){ - textboxString[entry][0] = '\0'; - UG_TextboxCreate(&fbWindow, &listEntrys[entry], entry, 0/*x start*/, newTextboxY, TEXTBOX_PIXEL_WIDTH - 1/*x end*/, newTextboxY + TEXTBOX_PIXEL_HEIGHT - 1); - UG_TextboxSetAlignment(&fbWindow, entry, ALIGN_CENTER); - UG_TextboxSetText(&fbWindow, entry, textboxString[entry]); - UG_TextboxSetForeColor(&fbWindow, entry, TEXTBOX_DEFAULT_TEXT_COLOR); - UG_TextboxSetBackColor(&fbWindow, entry, TEXTBOX_DEFAULT_COLOR); - UG_TextboxShow(&fbWindow, entry); - newTextboxY += TEXTBOX_PIXEL_HEIGHT; - } - - /*set_main_window*/ - UG_WindowShow(&fbWindow); - return true; -} diff --git a/hwTestSuite/viewer.h b/hwTestSuite/viewer.h index 9b67850..242656d 100644 --- a/hwTestSuite/viewer.h +++ b/hwTestSuite/viewer.h @@ -6,5 +6,5 @@ var hexViewer(); var testPicker(); -Boolean initViewer(); +void initViewer(); #endif