Only use ugui for text rendering

This commit is contained in:
meepingsnesroms
2018-04-03 13:15:29 -07:00
parent 5dbbd5cc8f
commit 23586362ec
3 changed files with 35 additions and 74 deletions

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -6,5 +6,5 @@
var hexViewer();
var testPicker();
Boolean initViewer();
void initViewer();
#endif