mirror of
https://github.com/libretro/Mu.git
synced 2026-09-23 15:15:43 +00:00
Only use ugui for text rendering
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -6,5 +6,5 @@
|
||||
|
||||
var hexViewer();
|
||||
var testPicker();
|
||||
Boolean initViewer();
|
||||
void initViewer();
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user