Full-screen and 2x tweaks for Status Area (#492)

Status Area tweaks:
. Full-screen: Correctly erase the PAUSED or STEPPING text status
. 2x windowed mode: draw the the correct size 3d rect
This commit is contained in:
TomCh 2017-10-05 22:06:53 +01:00 committed by GitHub
parent 9616df504e
commit 0bf2ae677a

View File

@ -612,8 +612,7 @@ static void DrawFrameWindow ()
int x = buttonx + 1; int x = buttonx + 1;
int y = buttony + BUTTONS*BUTTONCY + 36; // 36 = height of StatusArea int y = buttony + BUTTONS*BUTTONCY + 36; // 36 = height of StatusArea
RECT rect = {x, y, x+45, y+BUTTONS*BUTTONCY+22}; RECT rect = {x, y, x+45, y+BUTTONS*BUTTONCY+22};
HBRUSH hbr = (HBRUSH) GetStockObject(WHITE_BRUSH); int res = FillRect(dc, &rect, btnfacebrush);
int res = FillRect(dc, &rect, hbr);
} }
} }
@ -702,6 +701,9 @@ void FrameDrawDiskStatus( HDC passdc )
if (mem == NULL) if (mem == NULL)
return; return;
if (g_nAppMode == MODE_LOGO)
return;
// We use the actual drive since probing from memory doesn't tell us anything we don't already know. // We use the actual drive since probing from memory doesn't tell us anything we don't already know.
// DOS3.3 ProDOS // DOS3.3 ProDOS
// Drive $B7EA $BE3D // Drive $B7EA $BE3D
@ -793,12 +795,11 @@ void FrameDrawDiskStatus( HDC passdc )
if (g_bIsFullScreen) if (g_bIsFullScreen)
{ {
// GH#57 - drive lights in full screen mode
if (!g_bFullScreen_ShowSubunitStatus) if (!g_bFullScreen_ShowSubunitStatus)
return; return;
#if _DEBUG && 0
SetBkColor(dc,RGB(255,0,255));
#endif
SetTextColor(dc, g_aDiskFullScreenColorsLED[ g_eStatusDrive1 ] ); SetTextColor(dc, g_aDiskFullScreenColorsLED[ g_eStatusDrive1 ] );
TextOut(dc,x+ 3,y+2,TEXT("1"),1); TextOut(dc,x+ 3,y+2,TEXT("1"),1);
@ -822,11 +823,7 @@ void FrameDrawDiskStatus( HDC passdc )
// Erase background // Erase background
SelectObject(dc,GetStockObject(NULL_PEN)); SelectObject(dc,GetStockObject(NULL_PEN));
#if _DEBUG && 0
SelectObject( dc, CreateSolidBrush( RGB(255,0,255) ) );
#else
SelectObject(dc,btnfacebrush); SelectObject(dc,btnfacebrush);
#endif
Rectangle(dc,x+4,y+32,x+BUTTONCX+1,y+56); // y+35 -> 44 -> 56 Rectangle(dc,x+4,y+32,x+BUTTONCX+1,y+56); // y+35 -> 44 -> 56
SetTextColor(dc,RGB(0,0,0)); SetTextColor(dc,RGB(0,0,0));
@ -873,7 +870,7 @@ static void DrawStatusArea (HDC passdc, int drawflags)
if (!g_bFullScreen_ShowSubunitStatus) if (!g_bFullScreen_ShowSubunitStatus)
{ {
// Erase Config button icon too, as trk/sec is written here - see FrameDrawDiskStatus() // Erase Config button icon too, as trk/sec is written here - see FrameDrawDiskStatus()
RECT rect = {x,y-BUTTONCY,x+BUTTONCX,y+BUTTONCY}; RECT rect = {x-2,y-BUTTONCY,x+BUTTONCX+2,y+BUTTONCY}; // Extend rect's width by +/-2 as the TITLE_PAUSED text is wider than an icon button
FillRect(dc, &rect, (HBRUSH)GetStockObject(BLACK_BRUSH)); FillRect(dc, &rect, (HBRUSH)GetStockObject(BLACK_BRUSH));
} }
else else
@ -884,24 +881,11 @@ static void DrawStatusArea (HDC passdc, int drawflags)
FrameDrawDiskStatus( dc ); FrameDrawDiskStatus( dc );
#if HD_LED #if HD_LED
SetTextAlign(dc, TA_RIGHT | TA_TOP);
SetTextColor(dc, g_aDiskFullScreenColorsLED[ eHardDriveStatus ] ); SetTextColor(dc, g_aDiskFullScreenColorsLED[ eHardDriveStatus ] );
TextOut(dc,x+23,y+2,TEXT("H"),1); TextOut(dc,x+23,y+2,TEXT("H"),1);
#endif #endif
// Feature Request #3581 ] drive lights in full screen mode
// This has been in for a while, at least since 1.12.7.1
// Full Screen Drive LED
// Note: Made redundant with above code
// RECT rect = {0,0,8,8};
// CONST int DriveLedY = 12; // 8 in windowed mode
// DrawBitmapRect(dc,x+12,y+DriveLedY,&rect,g_hDiskFullScreenLED[ eDrive1Status ]);
// DrawBitmapRect(dc,x+30,y+DriveLedY,&rect,g_hDiskFullScreenLED[ eDrive2Status ]);
// SetTextColor(dc, g_aDiskFullScreenColors[ eDrive1Status ] );
// TextOut(dc,x+ 10,y+2,TEXT("*"),1);
// SetTextColor(dc, g_aDiskFullScreenColors[ eDrive2Status ] );
// TextOut(dc,x+ 20,y+2,TEXT("*"),1);
if (!IS_APPLE2) if (!IS_APPLE2)
{ {
SetTextAlign(dc,TA_RIGHT | TA_TOP); SetTextAlign(dc,TA_RIGHT | TA_TOP);
@ -909,19 +893,34 @@ static void DrawStatusArea (HDC passdc, int drawflags)
? RGB(128,128,128) ? RGB(128,128,128)
: RGB( 0, 0, 0) )); : RGB( 0, 0, 0) ));
// const TCHAR sCapsStatus[] = TEXT("Caps"); // Caps or A
// const int nCapsLen = sizeof(sCapsStatus) / sizeof(TCHAR);
// TextOut(dc,x+BUTTONCX,y+2,"Caps",4); // sCapsStatus,nCapsLen - 1);
TextOut(dc,x+BUTTONCX,y+2,TEXT("A"),1); // NB. Caps Lock indicator is already flush right! TextOut(dc,x+BUTTONCX,y+2,TEXT("A"),1); // NB. Caps Lock indicator is already flush right!
} }
SetTextAlign(dc,TA_CENTER | TA_TOP);
SetTextColor(dc,(g_nAppMode == MODE_PAUSED || g_nAppMode == MODE_STEPPING //
? RGB(255,255,255)
: RGB( 0, 0, 0))); static const char* pCurrentAppModeText = NULL;
TextOut(dc,x+BUTTONCX/2,y+13,(g_nAppMode == MODE_PAUSED
const char* const pNewAppModeText = (g_nAppMode == MODE_PAUSED)
? TITLE_PAUSED ? TITLE_PAUSED
: TITLE_STEPPING) ,8); : (g_nAppMode == MODE_STEPPING)
? TITLE_STEPPING
: NULL;
SetTextAlign(dc, TA_CENTER | TA_TOP);
if (pCurrentAppModeText && pNewAppModeText != pCurrentAppModeText)
{
SetTextColor(dc, RGB(0,0,0));
TextOut(dc, x+BUTTONCX/2, y+13, pCurrentAppModeText, strlen(pCurrentAppModeText));
pCurrentAppModeText = NULL;
}
if (pNewAppModeText)
{
SetTextColor(dc, RGB(255,255,255));
TextOut(dc, x+BUTTONCX/2, y+13, pNewAppModeText, strlen(pNewAppModeText));
pCurrentAppModeText = pNewAppModeText;
}
} }
} }
else // !g_bIsFullScreen else // !g_bIsFullScreen
@ -930,8 +929,8 @@ static void DrawStatusArea (HDC passdc, int drawflags)
{ {
SelectObject(dc,GetStockObject(NULL_PEN)); SelectObject(dc,GetStockObject(NULL_PEN));
SelectObject(dc,btnfacebrush); SelectObject(dc,btnfacebrush);
Rectangle(dc,x,y,x+BUTTONCX+2,y+60); // y+35 --> 48 --> 60 Rectangle(dc,x,y,x+BUTTONCX+2,y+34);
Draw3dRect(dc,x+1,y+3,x+BUTTONCX,y+56,0); // y+31 --> 44 --> 56 Draw3dRect(dc,x+1,y+3,x+BUTTONCX,y+30,0);
SelectObject(dc,smallfont); SelectObject(dc,smallfont);
SetTextAlign(dc,TA_CENTER | TA_TOP); SetTextAlign(dc,TA_CENTER | TA_TOP);