📄 c_display.c
字号:
case DISPLAY_VERTICAL_LINE :
{
if (On == TRUE)
{
if (Y1 > Y2)
{
cDisplayLineY(X1,Y2,Y1);
}
else
{
cDisplayLineY(X1,Y1,Y2);
}
}
}
break;
case DISPLAY_CHAR :
{
cDisplayChar(IOMapDisplay.pFont,On,X1,Y1,X2);
}
break;
}
}
void cDisplayInit(void* pHeader)
{
dDisplayInit();
IOMapDisplay.Display = (UBYTE*)IOMapDisplay.Normal;
IOMapDisplay.pFunc = &cDisplayDraw;
IOMapDisplay.EraseMask = 0;
IOMapDisplay.UpdateMask = 0;
IOMapDisplay.TextLinesCenterFlags = 0;
IOMapDisplay.Flags = DISPLAY_REFRESH | DISPLAY_ON;
VarsDisplay.ErasePointer = 0;
VarsDisplay.UpdatePointer = 0;
}
void cDisplayCtrl(void)
{
ULONG TmpMask;
UBYTE Tmp;
SCREEN_CORDINATE Cordinate;
if (!(IOMapDisplay.Flags & DISPLAY_POPUP))
{
if (IOMapDisplay.Display == (UBYTE*)IOMapDisplay.Popup)
{
IOMapDisplay.Display = VarsDisplay.DisplaySave;
}
}
else
{
if (IOMapDisplay.Display != (UBYTE*)IOMapDisplay.Popup)
{
VarsDisplay.DisplaySave = IOMapDisplay.Display;
IOMapDisplay.Display = (UBYTE*)IOMapDisplay.Popup;
}
}
if (IOMapDisplay.EraseMask)
{
VarsDisplay.ErasePointer = 31;
while ((VarsDisplay.ErasePointer) && (!(IOMapDisplay.EraseMask & (0x00000001 << VarsDisplay.ErasePointer))))
{
VarsDisplay.ErasePointer--;
}
TmpMask = IOMapDisplay.EraseMask & (1 << VarsDisplay.ErasePointer);
if ((TmpMask & TEXTLINE_BITS))
{
Tmp = 0;
while (!(TmpMask & TEXTLINE_BIT(Tmp)))
{
Tmp++;
}
if (Tmp < TEXTLINES)
{
cDisplayEraseLine(Tmp);
}
}
else
{
if ((TmpMask & MENUICON_BITS))
{
Tmp = 0;
while (!(TmpMask & MENUICON_BIT(Tmp)))
{
Tmp++;
}
if (Tmp < MENUICONS)
{
cDisplayEraseScreen((SCREEN_CORDINATE*)&MENUICON_CORDINATES[Tmp]);
}
}
else
{
if ((TmpMask & STATUSICON_BITS))
{
Tmp = 0;
while (!(TmpMask & STATUSICON_BIT(Tmp)))
{
Tmp++;
}
if (Tmp < STATUSICONS)
{
cDisplayEraseScreen((SCREEN_CORDINATE*)&STATUSICON_CORDINATES[Tmp]);
}
}
else
{
if ((TmpMask & SCREEN_BITS))
{
Tmp = 0;
while (!(TmpMask & SCREEN_BIT(Tmp)))
{
Tmp++;
}
if (Tmp < SCREENS)
{
cDisplayEraseScreen((SCREEN_CORDINATE*)&SCREEN_CORDINATES[Tmp]);
}
if ((TmpMask & SCREEN_BIT(SCREEN_LARGE)))
{
if ((IOMapDisplay.UpdateMask & SPECIAL_BIT(TOPLINE)))
{
cDisplayLineX(0,DISPLAY_WIDTH - 1,9);
IOMapDisplay.UpdateMask &= ~SPECIAL_BIT(TOPLINE);
}
}
}
else
{
if ((TmpMask & BITMAP_BITS))
{
Tmp = 0;
while (!(TmpMask & BITMAP_BIT(Tmp)))
{
Tmp++;
}
if (Tmp < BITMAPS)
{
Cordinate.StartX = VarsDisplay.pOldBitmaps[Tmp]->StartX;
Cordinate.StartY = VarsDisplay.pOldBitmaps[Tmp]->StartY;
Cordinate.PixelsX = VarsDisplay.pOldBitmaps[Tmp]->PixelsX;
Cordinate.PixelsY = VarsDisplay.pOldBitmaps[Tmp]->PixelsY;
cDisplayEraseScreen(&Cordinate);
}
}
else
{
if ((TmpMask & SPECIAL_BITS))
{
Tmp = 0;
while (!(TmpMask & SPECIAL_BIT(Tmp)))
{
Tmp++;
}
switch (Tmp)
{
case FRAME_SELECT :
{
}
break;
case MENUTEXT :
{
cDisplayEraseLine(TEXTLINE_5);
}
break;
case STATUSTEXT :
{
cDisplayEraseLine(TEXTLINE_1);
}
break;
case STEPLINE :
{
}
break;
case TOPLINE :
{
}
break;
}
}
else
{
if ((TmpMask & STEPICON_BITS))
{
Tmp = 0;
while (!(TmpMask & STEPICON_BIT(Tmp)))
{
Tmp++;
}
if (Tmp < STEPICONS)
{
cDisplayEraseScreen((SCREEN_CORDINATE*)&STEPICON_CORDINATES[Tmp]);
}
}
}
}
}
}
}
}
IOMapDisplay.EraseMask &= ~TmpMask;
if (++VarsDisplay.ErasePointer >= 32)
{
VarsDisplay.ErasePointer = 0;
}
VarsDisplay.UpdatePointer = 0;
}
else
{
if (IOMapDisplay.UpdateMask)
{
VarsDisplay.UpdatePointer = 31;
while ((VarsDisplay.UpdatePointer) && (!(IOMapDisplay.UpdateMask & (0x00000001 << VarsDisplay.UpdatePointer))))
{
VarsDisplay.UpdatePointer--;
}
TmpMask = IOMapDisplay.UpdateMask & (0x00000001 << VarsDisplay.UpdatePointer);
if ((TmpMask & TEXTLINE_BITS))
{
Tmp = 0;
while (!(TmpMask & TEXTLINE_BIT(Tmp)))
{
Tmp++;
}
if (Tmp < TEXTLINES)
{
if ((IOMapDisplay.TextLinesCenterFlags & (UBYTE)TmpMask))
{
cDisplayCenterString(IOMapDisplay.pFont,IOMapDisplay.pTextLines[Tmp],TEXTLINE_1 + Tmp);
}
else
{
cDisplayString(IOMapDisplay.pFont,0,Tmp * 8,IOMapDisplay.pTextLines[Tmp]);
}
}
}
else
{
if ((TmpMask & MENUICON_BITS))
{
Tmp = 0;
while (!(TmpMask & MENUICON_BIT(Tmp)))
{
Tmp++;
}
if (Tmp < MENUICONS)
{
cDisplayUpdateMenuIcon(IOMapDisplay.pMenuIcons[Tmp],(SCREEN_CORDINATE*)&MENUICON_CORDINATES[Tmp]);
}
}
else
{
if ((TmpMask & STATUSICON_BITS))
{
Tmp = 0;
while (!(TmpMask & STATUSICON_BIT(Tmp)))
{
Tmp++;
}
if (Tmp < STATUSICONS)
{
cDisplayUpdateIcon(IOMapDisplay.pStatusIcons,IOMapDisplay.StatusIcons[Tmp],(SCREEN_CORDINATE*)&STATUSICON_CORDINATES[Tmp]);
}
}
else
{
if ((TmpMask & SCREEN_BITS))
{
Tmp = 0;
while (!(TmpMask & SCREEN_BIT(Tmp)))
{
Tmp++;
}
if (Tmp < SCREENS)
{
cDisplayUpdateScreen((SCREEN_CORDINATE*)&SCREEN_CORDINATES[Tmp],IOMapDisplay.pScreens[Tmp]);
}
}
else
{
if ((TmpMask & BITMAP_BITS))
{
Tmp = 0;
while (!(TmpMask & BITMAP_BIT(Tmp)))
{
Tmp++;
}
if (Tmp < BITMAPS)
{
VarsDisplay.pOldBitmaps[Tmp] = IOMapDisplay.pBitmaps[Tmp];
cDisplayUpdateScreen((SCREEN_CORDINATE*)&SCREEN_CORDINATES[SCREEN_BACKGROUND],IOMapDisplay.pBitmaps[Tmp]);
}
}
else
{
if ((TmpMask & SPECIAL_BITS))
{
Tmp = 0;
while (!(TmpMask & SPECIAL_BIT(Tmp)))
{
Tmp++;
}
switch (Tmp)
{
case FRAME_SELECT :
{
cDisplayFrame((SCREEN_CORDINATE*)&SELECT_FRAME_CORDINATES);
}
break;
case MENUTEXT :
{
cDisplayCenterString(IOMapDisplay.pFont,IOMapDisplay.pMenuText,TEXTLINE_5);
}
break;
case STATUSTEXT :
{
cDisplayCenterString(IOMapDisplay.pFont,IOMapDisplay.pStatusText,TEXTLINE_1);
}
break;
case STEPLINE :
{
cDisplayLineX(22,28,20);
cDisplayLineX(39,45,20);
cDisplayLineX(56,62,20);
cDisplayLineX(73,79,20);
}
break;
case TOPLINE :
{
cDisplayLineX(0,DISPLAY_WIDTH - 1,9);
}
break;
}
}
else
{
if ((TmpMask & STEPICON_BITS))
{
Tmp = 0;
while (!(TmpMask & STEPICON_BIT(Tmp)))
{
Tmp++;
}
if (Tmp < STEPICONS)
{
cDisplayUpdateIcon(IOMapDisplay.pStepIcons,IOMapDisplay.StepIcons[Tmp],(SCREEN_CORDINATE*)&STEPICON_CORDINATES[Tmp]);
}
}
}
}
}
}
}
}
IOMapDisplay.TextLinesCenterFlags &= (UBYTE)(~TmpMask);
IOMapDisplay.UpdateMask &= ~TmpMask;
if (++VarsDisplay.UpdatePointer >= 32)
{
VarsDisplay.UpdatePointer = 0;
}
}
VarsDisplay.ErasePointer = 0;
}
if (!(IOMapDisplay.Flags & DISPLAY_POPUP))
{
if (!(IOMapDisplay.Flags & DISPLAY_REFRESH_DISABLED))
{
if ((IOMapDisplay.Flags & DISPLAY_ON))
{
dDisplayOn(TRUE);
}
else
{
dDisplayOn(FALSE);
}
if (!(dDisplayUpdate(DISPLAY_HEIGHT,DISPLAY_WIDTH,(UBYTE*)IOMapDisplay.Normal)))
{
IOMapDisplay.Flags &= ~DISPLAY_BUSY;
if (!(IOMapDisplay.Flags & DISPLAY_REFRESH))
{
IOMapDisplay.Flags |= DISPLAY_REFRESH_DISABLED;
}
}
else
{
IOMapDisplay.Flags |= DISPLAY_BUSY;
}
}
else
{
if ((IOMapDisplay.Flags & DISPLAY_REFRESH))
{
IOMapDisplay.Flags &= ~DISPLAY_REFRESH_DISABLED;
}
}
}
else
{
dDisplayUpdate(DISPLAY_HEIGHT,DISPLAY_WIDTH,(UBYTE*)IOMapDisplay.Popup);
}
}
void cDisplayExit(void)
{
dDisplayExit();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -