From 0574860ec5179a0f7c2b0af89b695dbb1db0d216 Mon Sep 17 00:00:00 2001 From: Shamus Hammons Date: Wed, 26 Mar 2014 08:05:47 -0500 Subject: [PATCH] Fixed cross-compilation, added more GUI glue. --- Makefile | 5 ++-- cross-compile | 1 + src/gui/diskselector.cpp | 2 +- src/gui/gui.cpp | 65 +++++++++++++++++++++++++++++++++++++++- 4 files changed, 69 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 017b7ec..8f36aec 100644 --- a/Makefile +++ b/Makefile @@ -93,7 +93,8 @@ LDFLAGS = #LIBS = -L/usr/local/lib -L/usr/lib `sdl2-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB) -lgcov # Link in the gprof lib #LIBS = -L/usr/local/lib -L/usr/lib `sdl2-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB) -pg -LIBS = -L/usr/local/lib -L/usr/lib $(SDL_LIBS) -lstdc++ -lz $(GLLIB) -pg +#LIBS = -L/usr/local/lib -L/usr/lib $(SDL_LIBS) -lstdc++ -lz $(GLLIB) -pg +LIBS = $(SDL_LIBS) -lstdc++ -lz $(GLLIB) -pg #INCS = -I. -I./src -I/usr/local/include -I/usr/include INCS = -I. -I./src @@ -197,7 +198,7 @@ obj/%.o: src/gui/%.cpp $(TARGET)$(EXESUFFIX): $(OBJS) @echo -e "\033[01;33m***\033[00;32m Linking it all together...\033[00m" - @$(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) + $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) # strip --strip-all vj$(EXESUFFIX) # upx -9 vj$(EXESUFFIX) diff --git a/cross-compile b/cross-compile index 517fc72..ec07450 100755 --- a/cross-compile +++ b/cross-compile @@ -7,6 +7,7 @@ # export PATH=/opt/mxe/usr/bin:$PATH make CROSS=i686-pc-mingw32- clean && make CROSS=i686-pc-mingw32- +upx -9v apple2.exe #TARGET = apple2 #echo "Cross compiling $(TARGET) for Win32..." diff --git a/src/gui/diskselector.cpp b/src/gui/diskselector.cpp index d8fc6c1..69db0e7 100644 --- a/src/gui/diskselector.cpp +++ b/src/gui/diskselector.cpp @@ -201,7 +201,7 @@ void DiskSelector::DrawCharacter(SDL_Renderer * renderer, int x, int y, uint8_t SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00); #else - uint32_t pixel = 0xFFFFA000; + uint32_t pixel = 0xFFFFA020; uint8_t * ptr = (uint8_t *)&font10pt[(c - 0x20) * FONT_WIDTH * FONT_HEIGHT]; SDL_Rect dst; dst.x = x * FONT_WIDTH, dst.y = y * FONT_HEIGHT, dst.w = FONT_WIDTH, dst.h = FONT_HEIGHT; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 6865d5f..29358c8 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -115,6 +115,9 @@ const char iconHelp[7][80] = { "Turn emulated Apple off/on", "Insert floppy image into drive #1", "Insert floppy image into drive #2", "Swap disks", "Save emulator state", "Load emulator state", "Configure Apple2" }; +bool disk1EjectHovered = false; +bool disk2EjectHovered = false; + #define SIDEBAR_X_POS (VIRTUAL_SCREEN_WIDTH - 80) @@ -204,6 +207,48 @@ SDL_Texture * GUI::CreateTexture(SDL_Renderer * renderer, const void * source) void GUI::MouseDown(int32_t x, int32_t y, uint32_t buttons) { + if (sidebarState != SBS_SHOWN) + return; + + switch (iconSelected) + { + // Power + case 0: + SpawnMessage("*** POWER ***"); + break; + // Disk #1 + case 1: + SpawnMessage("*** DISK #1 ***"); + + if (disk1EjectHovered && !floppyDrive.IsEmpty(0)) + SpawnMessage("*** EJECT DISK #1 ***"); + + break; + // Disk #2 + case 2: + SpawnMessage("*** DISK #2 ***"); + + if (disk2EjectHovered && !floppyDrive.IsEmpty(1)) + SpawnMessage("*** EJECT DISK #2 ***"); + + break; + // Swap disks + case 3: + SpawnMessage("*** SWAP DISKS ***"); + break; + // Save state + case 4: + SpawnMessage("*** SAVE STATE ***"); + break; + // Load state + case 5: + SpawnMessage("*** LOAD STATE ***"); + break; + // Configuration + case 6: + SpawnMessage("*** CONFIGURATION ***"); + break; + } } @@ -252,6 +297,17 @@ void GUI::MouseMove(int32_t x, int32_t y, uint32_t buttons) else iconSelected = (y - 4) / 54; + // It's y+2 because the sidebar sits at (SIDEBAR_X_POS, 2) + disk1EjectHovered = ((x >= (SIDEBAR_X_POS + 24 + 29)) + && (x < (SIDEBAR_X_POS + 24 + 29 + 8)) + && (y >= (63 + 31 + 2)) + && (y < (63 + 31 + 2 + 7))) ? true : false); + + disk2EjectHovered = ((x >= (SIDEBAR_X_POS + 24 + 29)) + && (x < (SIDEBAR_X_POS + 24 + 29 + 8)) + && (y >= (117 + 31 + 2)) + && (y < (117 + 31 + 2 + 7)) ? true : false); + if (iconSelected != lastIconSelected) { HandleIconSelection(sdlRenderer); @@ -335,7 +391,14 @@ void GUI::DrawEjectButton(SDL_Renderer * renderer, int driveNumber) if (floppyDrive.IsEmpty(driveNumber)) return; - DrawCharArray(renderer, ejectIcon, 29, 31, 8, 7, 0x00, 0xAA, 0x00); + uint8_t r = 0x00, g = 0xAA, b = 0x00; + + if ((driveNumber == 0 && disk1EjectHovered) + || (driveNumber == 1 && disk2EjectHovered)) + r = 0x20, g = 0xFF, b = 0x20; + +// DrawCharArray(renderer, ejectIcon, 29, 31, 8, 7, 0x00, 0xAA, 0x00); + DrawCharArray(renderer, ejectIcon, 29, 31, 8, 7, r, g, b); }