Loads bitmaps into QSPI memory for GC500_2_5inch to use.
Dependencies: DMBasicGUI DMSupport
easyGUIFixed/GuiItems.h
- Committer:
- jmitc91516
- Date:
- 2017-07-31
- Revision:
- 0:a5c253316af6
File content as of revision 0:a5c253316af6:
/* ************************************************************************ */ /* */ /* (C)2004-2015 IBIS Solutions ApS */ /* sales@easyGUI.com */ /* www.easyGUI.com */ /* */ /* v6.0.9.005 */ /* */ /* GuiLib.c include file - do NOT reference it in your linker setup */ /* */ /* ************************************************************************ */ //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ static GuiConst_INT8U GetItemByte( GuiConst_INT8U *PrefixLocate*PrefixLocate ItemDataPtrPtr) { GuiConst_INT8U D; #ifdef GuiConst_AVRGCC_COMPILER D = ReadBytePtr(*ItemDataPtrPtr); #else #ifdef GuiConst_AVR_COMPILER_FLASH_RAM GuiConst_INT8U PrefixRom * ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; D = *ItemFlashPtr; #else #ifdef GuiConst_ICC_COMPILER GuiConst_INT8U PrefixRom * ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; D = *ItemFlashPtr; #else #ifdef GuiConst_CODEVISION_COMPILER GuiConst_INT8U PrefixRom * ItemFlashPtr; ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; D = *ItemFlashPtr; #else D = **ItemDataPtrPtr; #endif #endif #endif #endif (*ItemDataPtrPtr)++; return (D); } //------------------------------------------------------------------------------ static GuiConst_INT16S GetItemWord( GuiConst_INT8U *PrefixLocate*PrefixLocate ItemDataPtrPtr) { GuiConst_INT16U D; #ifdef GuiConst_AVRGCC_COMPILER D = ReadBytePtr(*ItemDataPtrPtr); (*ItemDataPtrPtr)++; D += 0x0100 * (GuiConst_INT16U)ReadBytePtr(*ItemDataPtrPtr); #else #ifdef GuiConst_AVR_COMPILER_FLASH_RAM GuiConst_INT8U PrefixRom * ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; D = *ItemFlashPtr; (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x0100 * (*ItemFlashPtr); #else #ifdef GuiConst_ICC_COMPILER GuiConst_INT8U PrefixRom * ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; D = *ItemFlashPtr; (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x0100 * (*ItemFlashPtr); #else #ifdef GuiConst_CODEVISION_COMPILER GuiConst_INT8U PrefixRom * ItemFlashPtr; ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; D = *ItemFlashPtr; (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x0100 * (*ItemFlashPtr); #else D = **ItemDataPtrPtr; (*ItemDataPtrPtr)++; D += 0x0100 * (GuiConst_INT16U)**ItemDataPtrPtr; #endif #endif #endif #endif (*ItemDataPtrPtr)++; return ((GuiConst_INT16S) D); } //------------------------------------------------------------------------------ #ifdef GuiLib_COLOR_BYTESIZE_3 static GuiConst_INT32S GetItemTriple( GuiConst_INT8U *PrefixLocate*PrefixLocate ItemDataPtrPtr) { GuiConst_INT32U D; #ifdef GuiConst_AVRGCC_COMPILER D = ReadBytePtr(*ItemDataPtrPtr); (*ItemDataPtrPtr)++; D += 0x00000100 * (GuiConst_INT32U)ReadBytePtr(*ItemDataPtrPtr); (*ItemDataPtrPtr)++; D += 0x00010000 * (GuiConst_INT32U)ReadBytePtr(*ItemDataPtrPtr); #else #ifdef GuiConst_AVR_COMPILER_FLASH_RAM GuiConst_INT8U PrefixRom * ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; D = *ItemFlashPtr; (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x00000100 * (*ItemFlashPtr); (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x00010000 * (*ItemFlashPtr); #else #ifdef GuiConst_ICC_COMPILER GuiConst_INT8U PrefixRom * ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; D = *ItemFlashPtr; (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x00000100 * (*ItemFlashPtr); (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x00010000 * (*ItemFlashPtr); #else #ifdef GuiConst_CODEVISION_COMPILER GuiConst_INT8U PrefixRom * ItemFlashPtr; ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; D = *ItemFlashPtr; (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x00000100 * (*ItemFlashPtr); (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x00010000 * (*ItemFlashPtr); #else D = **ItemDataPtrPtr; (*ItemDataPtrPtr)++; D += 0x00000100 * (GuiConst_INT32U)**ItemDataPtrPtr; (*ItemDataPtrPtr)++; D += 0x00010000 * (GuiConst_INT32U)**ItemDataPtrPtr; #endif #endif #endif #endif (*ItemDataPtrPtr)++; return ((GuiConst_INT32S) D); } #endif #ifdef GuiLib_GETITEMLONG //------------------------------------------------------------------------------ static GuiConst_INT32S GetItemLong( GuiConst_INT8U *PrefixLocate*PrefixLocate ItemDataPtrPtr) { GuiConst_INT32U D; #ifdef GuiConst_AVRGCC_COMPILER D = ReadBytePtr(*ItemDataPtrPtr); (*ItemDataPtrPtr)++; D += 0x00000100 * (GuiConst_INT32U)ReadBytePtr(*ItemDataPtrPtr); (*ItemDataPtrPtr)++; D += 0x00010000 * (GuiConst_INT32U)ReadBytePtr(*ItemDataPtrPtr); (*ItemDataPtrPtr)++; D += 0x01000000 * (GuiConst_INT32U)ReadBytePtr(*ItemDataPtrPtr); #else #ifdef GuiConst_AVR_COMPILER_FLASH_RAM GuiConst_INT8U PrefixRom * ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; D = *ItemFlashPtr; (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x00000100 * (*ItemFlashPtr); (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x00010000 * (*ItemFlashPtr); (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x01000000 * (*ItemFlashPtr); #else #ifdef GuiConst_ICC_COMPILER GuiConst_INT8U PrefixRom * ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; D = *ItemFlashPtr; (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x00000100 * (*ItemFlashPtr); (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x00010000 * (*ItemFlashPtr); (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x01000000 * (*ItemFlashPtr); #else #ifdef GuiConst_CODEVISION_COMPILER GuiConst_INT8U PrefixRom * ItemFlashPtr; ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; D = *ItemFlashPtr; (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x00000100 * (*ItemFlashPtr); (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x00010000 * (*ItemFlashPtr); (*ItemDataPtrPtr)++; ItemFlashPtr++; D += 0x01000000 * (*ItemFlashPtr); #else D = **ItemDataPtrPtr; (*ItemDataPtrPtr)++; D += 0x00000100 * (GuiConst_INT32U)**ItemDataPtrPtr; (*ItemDataPtrPtr)++; D += 0x00010000 * (GuiConst_INT32U)**ItemDataPtrPtr; (*ItemDataPtrPtr)++; D += 0x01000000 * (GuiConst_INT32U)**ItemDataPtrPtr; #endif #endif #endif #endif (*ItemDataPtrPtr)++; return ((GuiConst_INT32S) D); } #endif //------------------------------------------------------------------------------ #ifdef GuiLib_COLOR_BYTESIZE_1 #define GetItemColor GetItemByte #endif #ifdef GuiLib_COLOR_BYTESIZE_2 #define GetItemColor GetItemWord #endif #ifdef GuiLib_COLOR_BYTESIZE_3 #define GetItemColor GetItemTriple #endif //------------------------------------------------------------------------------ GuiConst_TEXT PrefixGeneric *GetItemTextPtr(GuiConst_INT8U index) { #ifndef GuiConst_REMOTE_TEXT_DATA #ifdef GuiConst_REMOTE_STRUCT_DATA GuiConst_INT16U TxtReadSize; #endif #endif if (index > 2) return NULL; #ifdef GuiConst_REMOTE_TEXT_DATA sgl.CurItem.TextLength[index] = GetRemoteText(sgl.CurItem.TextIndex[index]); sgl.CurItem.TextPtr[index] = &sgl.GuiLib_RemoteTextBuffer[0]; #else #ifdef GuiConst_REMOTE_STRUCT_DATA TxtReadSize = sgl.CurItem.TextLength[index] + 1; #ifndef GuiConst_CHARMODE_ANSI TxtReadSize *= 2; #endif GuiLib_RemoteDataReadBlock(sgl.CurItem.TextOffset[index], TxtReadSize, (GuiConst_INT8U PrefixGeneric*)&sgl.GuiLib_RemoteStructText); sgl.CurItem.TextPtr[index] = (GuiConst_TEXT PrefixGeneric*)&sgl.GuiLib_RemoteStructText; #endif #endif // GuiConst_REMOTE_TEXT_DATA return sgl.CurItem.TextPtr[index]; } //------------------------------------------------------------------------------ #ifdef GuiConst_ITEM_RADIOBUTTON_INUSE #define GuiItem_TEMP_PTR_NEEDED #endif #ifdef GuiConst_ITEM_BUTTON_INUSE #ifndef GuiItem_TEMP_PTR_NEEDED #define GuiItem_TEMP_PTR_NEEDED #endif #endif #ifdef GuiConst_ITEM_CHECKBOX_INUSE #ifndef GuiItem_TEMP_PTR_NEEDED #define GuiItem_TEMP_PTR_NEEDED #endif #endif static void DrawItem( GuiConst_INT8U ColorInvert) { GuiConst_INT16U StructToCallIndex; GuiConst_INT32S VarValue; GuiConst_INT16S I, N; #ifdef GuiConst_ITEM_CHECKBOX_INUSE GuiConst_INT8U CheckmarkMode; #endif #ifdef GuiConst_ITEM_RADIOBUTTON_INUSE GuiConst_INT16S RemYMemory; #endif #ifdef GuiConst_ITEM_BUTTON_INUSE GuiConst_INT8U DisabledGlyphColorInUse; GuiConst_INT8U DisabledTextColorInUse; GuiConst_INT16S CX, CY; GuiConst_INT16S RemX1, RemY1; GuiConst_INT16S GX1, GX2, GY1, GY2; GuiConst_INTCOLOR ButtonColor; #ifdef GuiConst_CLIPPING_SUPPORT_ON GuiConst_INT16S RemClippingX1, RemClippingY1, RemClippingX2, RemClippingY2; #endif // GuiConst_CLIPPING_SUPPORT_ON #endif GuiConst_INT16U StrLen; #ifdef GuiItem_TEMP_PTR_NEEDED TextParRec TempTextPar; #endif #ifdef GuiConst_CURSOR_SUPPORT_ON GuiConst_INT8U IsCursorField; GuiConst_INT8U FoundActiveCursorField; #endif GuiConst_INTCOLOR ForeColor; GuiConst_INTCOLOR BackColor; GuiConst_INT8U BackColorTransp; GuiConst_INT32S BackColor2; #ifndef GuiConst_CHARMODE_ANSI GuiConst_INT16U P; #endif GuiConst_TEXT PrefixGeneric *CharPtr; GuiConst_INT16S X1, X2, Y1, Y2; #ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE GuiConst_INT16S CX1, CX2, CY1, CY2; GuiConst_INT16S Y; GuiConst_INT16S SourceLayerIndexNo; GuiConst_INT16S DestLayerIndexNo; GuiConst_INT8U PrefixLocate *DestAddress; GuiConst_INT16U DestLineSize; GuiConst_INT16S DestX; GuiConst_INT16S DestY; GuiConst_INT16U DestWidth; GuiConst_INT16U DestHeight; GuiConst_INT8U PrefixLocate *SourceAddress; GuiConst_INT16U SourceLineSize; GuiConst_INT16S SourceX; GuiConst_INT16S SourceY; GuiConst_INT16U SourceWidth; GuiConst_INT16U SourceHeight; GuiConst_INT32S FilterPars[10]; #endif #ifdef GuiConst_ITEM_STRUCTCOND_INUSE GuiConst_INT8U FirstRound; #endif #ifdef GuiConst_ITEM_TOUCHAREA_INUSE GuiConst_INT32S TouchSearch; GuiConst_INT32S TouchIndex; #endif #ifdef GuiConst_TEXTBOX_FIELDS_ON GuiConst_INT16S found; GuiConst_INT16S PrefixLocate *ScrollPos; #endif #ifdef GuiConst_REL_COORD_ORIGO_INUSE if (!sgl.InitialDrawing) { sgl.CoordOrigoX = sgl.CurItem.CoordOrigoX; sgl.CoordOrigoY = sgl.CurItem.CoordOrigoY; } #endif #ifdef GuiConst_CLIPPING_SUPPORT_ON if (!sgl.InitialDrawing && sgl.DisplayWriting) GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); #endif SetCurFont(sgl.CurItem.TextPar[0].FontIndex); #ifdef GuiConst_CURSOR_SUPPORT_ON IsCursorField = (sgl.CursorInUse && (sgl.CurItem.CursorFieldNo >= 0)); FoundActiveCursorField = (IsCursorField && (GuiLib_ActiveCursorFieldNo == sgl.CurItem.CursorFieldNo)); if (FoundActiveCursorField) sgl.CursorActiveFieldFound = 1; #endif sgl.AutoRedrawSaveIndex = -1; if ((sgl.InitialDrawing) || (sgl.AutoRedrawUpdate == GuiLib_TRUE)) { #ifdef GuiConst_CURSOR_SUPPORT_ON if ((sgl.CurItem.CursorFieldNo >= 0) && (sgl.CursorFieldFound == -1)) sgl.CursorFieldFound = sgl.CurItem.CursorFieldNo; if (IsCursorField) { sgl.CurItem.CursorFieldLevel++; #ifdef GuiConst_ITEM_SCROLLBOX_INUSE if (sgl.NextScrollLineReading) { sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FIELDSCROLLBOX; sgl.CurItem.CursorScrollBoxIndex = sgl.GlobalScrollBoxIndex; } else #endif sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_FIELDSCROLLBOX; #ifndef GuiConst_CURSOR_FIELDS_OFF if (!(sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_AUTOREDRAWFIELD)) sgl.AutoRedrawSaveIndex = AutoRedraw_InsertCursor(&sgl.CurItem, 0, sgl.DisplayLevel); #endif } #endif // GuiConst_CURSOR_SUPPORT_ON if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_AUTOREDRAWFIELD) { sgl.AutoRedrawSaveIndex = AutoRedraw_Insert(&sgl.CurItem, 0, sgl.DisplayLevel); #ifdef GuiConst_CURSOR_SUPPORT_ON if (IsCursorField) AutoRedraw_SetAsCursor(sgl.AutoRedrawSaveIndex); #endif // GuiConst_CURSOR_SUPPORT_ON } } switch (ColorInvert) { case GuiLib_COL_INVERT_OFF: sgl.SwapColors = 0; break; case GuiLib_COL_INVERT_ON: sgl.SwapColors = 1; break; case GuiLib_COL_INVERT_IF_CURSOR: #ifdef GuiConst_CURSOR_SUPPORT_ON if (FoundActiveCursorField) sgl.SwapColors = 1; #else sgl.SwapColors = 0; #endif break; } if (sgl.SwapColors) { ForeColor = sgl.CurItem.BarForeColor; BackColor = sgl.CurItem.BarBackColor; BackColorTransp = ((sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_BARTRANSPARENT) > 0); } else { ForeColor = sgl.CurItem.ForeColor; BackColor = sgl.CurItem.BackColor; BackColorTransp = ((sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_TRANSPARENT) > 0); } sgl.CurItem.Drawn = 0; switch (sgl.CurItem.ItemType) { case GuiLib_ITEM_CLEARAREA: if (sgl.DisplayWriting) { X1 = sgl.CurItem.X1; Y1 = sgl.CurItem.Y1; X2 = sgl.CurItem.X2; Y2 = sgl.CurItem.Y2; OrderCoord(&X1, &X2); OrderCoord(&Y1, &Y2); if (!BackColorTransp) GuiLib_FillBox(X1, Y1, X2, Y2, BackColor); UpdateDrawLimits(X1, Y1, X2, Y2); } break; case GuiLib_ITEM_TEXT: if (sgl.DisplayWriting) { if (sgl.CurItem.TextPar[0].BackBoxSizeX > 0) { DrawBackBox(BackColor, BackColorTransp, 0); UpdateDrawLimits(sgl.BbX1, sgl.BbY1, sgl.BbX2, sgl.BbY2); } DRAW_ROM_TEXT(GetItemTextPtr(0), sgl.CurItem.TextLength[0], 0, ForeColor, BackColor, BackColorTransp); UpdateDrawLimits(sgl.FontWriteX1, sgl.FontWriteY1, sgl.FontWriteX2, sgl.FontWriteY2); } break; case GuiLib_ITEM_TEXTBLOCK: if (sgl.DisplayWriting) { #ifdef GuiConst_ITEM_TEXTBLOCK_INUSE #ifdef GuiConst_TEXTBOX_FIELDS_ON ScrollPos = TextBox_Scroll_GetPosRec( sgl.CurItem.CompPars.CompTextBox.ScrollIndex); if (ScrollPos != NULL) sgl.CurItem.CompPars.CompTextBox.ScrollPos = *ScrollPos; #endif DRAW_ROM_TEXTBLOCK(GetItemTextPtr(0), sgl.CurItem.TextLength[0], 0, ForeColor, BackColor, BackColorTransp); #ifdef GuiConst_TEXTBOX_FIELDS_ON if (ScrollPos != NULL) *ScrollPos = sgl.CurItem.CompPars.CompTextBox.ScrollPos; #endif UpdateDrawLimits(sgl.CurItem.X1, sgl.CurItem.Y1, sgl.CurItem.X2, sgl.CurItem.Y2); #endif } break; case GuiLib_ITEM_VAR: if (sgl.DisplayWriting) { #ifdef GuiConst_DISP_VAR_NOW displayVarNow = 1; #endif if (sgl.CurItem.TextPar[0].BackBoxSizeX > 0) { DrawBackBox(BackColor, BackColorTransp, 0); UpdateDrawLimits(sgl.BbX1, sgl.BbY1, sgl.BbX2, sgl.BbY2); } if (sgl.CurItem.VarPtr != 0) { if (sgl.CurItem.VarType == GuiLib_VAR_STRING) { CharPtr = (GuiConst_TEXT PrefixGeneric *)sgl.CurItem.VarPtr; #ifdef GuiConst_CHARMODE_ANSI StrLen = strlen(CharPtr); #else #ifdef GuiConst_CODEVISION_COMPILER StrLen = GuiLib_UnicodeStrLen((GuiConst_TEXT*)CharPtr); #else StrLen = GuiLib_UnicodeStrLen(CharPtr); #endif #endif } else { VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); StrLen = DataNumStr(VarValue, sgl.CurItem.VarType, 0); #ifdef GuiConst_CHARMODE_ANSI CharPtr = (GuiConst_TEXT PrefixGeneric *) sgl.VarNumTextStr; #else for (P = 0; P <= StrLen; P++) sgl.VarNumUnicodeTextStr[P] = sgl.VarNumTextStr[P]; CharPtr = (GuiConst_TEXT PrefixGeneric *) sgl.VarNumUnicodeTextStr; #endif } #ifdef GuiConst_CHARMODE_ANSI strcpy(sgl.AnsiTextBuf, CharPtr); DrawText(sgl.AnsiTextBuf, StrLen, 0, ForeColor, BackColor, BackColorTransp); #else GuiLib_UnicodeStrCpy(sgl.UnicodeTextBuf, CharPtr); DrawText(sgl.UnicodeTextBuf, StrLen, 0, ForeColor, BackColor, BackColorTransp); #endif } #ifdef GuiConst_DISP_VAR_NOW displayVarNow = 0; #endif UpdateDrawLimits(sgl.FontWriteX1, sgl.FontWriteY1, sgl.FontWriteX2, sgl.FontWriteY2); } break; case GuiLib_ITEM_VARBLOCK: if (sgl.DisplayWriting) { #ifdef GuiConst_ITEM_TEXTBLOCK_INUSE #ifdef GuiConst_DISP_VAR_NOW displayVarNow = 1; #endif if (sgl.CurItem.VarPtr != 0) { if (sgl.CurItem.VarType == GuiLib_VAR_STRING) { CharPtr = (GuiConst_TEXT PrefixGeneric *)sgl.CurItem.VarPtr; #ifdef GuiConst_CHARMODE_ANSI StrLen = strlen(CharPtr); #else #ifdef GuiConst_CODEVISION_COMPILER StrLen = GuiLib_UnicodeStrLen((GuiConst_TEXT*)CharPtr); #else StrLen = GuiLib_UnicodeStrLen(CharPtr); #endif #endif } else { VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); StrLen = DataNumStr(VarValue, sgl.CurItem.VarType, 0); #ifdef GuiConst_CHARMODE_ANSI CharPtr = (GuiConst_TEXT PrefixGeneric *) sgl.VarNumTextStr; #else for (P = 0; P <= StrLen; P++) sgl.VarNumUnicodeTextStr[P] = sgl.VarNumTextStr[P]; CharPtr = (GuiConst_TEXT PrefixGeneric *) sgl.VarNumUnicodeTextStr; #endif } #ifdef GuiConst_TEXTBOX_FIELDS_ON ScrollPos = TextBox_Scroll_GetPosRec( sgl.CurItem.CompPars.CompTextBox.ScrollIndex); if (ScrollPos != NULL) sgl.CurItem.CompPars.CompTextBox.ScrollPos = *ScrollPos; #endif #ifdef GuiConst_CHARMODE_ANSI strcpy(sgl.AnsiTextBuf, CharPtr); DrawTextBlock(sgl.AnsiTextBuf, StrLen, 0, ForeColor, BackColor, BackColorTransp); #else GuiLib_UnicodeStrCpy(sgl.UnicodeTextBuf, CharPtr); DrawTextBlock(sgl.UnicodeTextBuf, StrLen, 0, ForeColor, BackColor, BackColorTransp); #endif #ifdef GuiConst_TEXTBOX_FIELDS_ON if (ScrollPos != NULL) *ScrollPos = sgl.CurItem.CompPars.CompTextBox.ScrollPos; #endif } #ifdef GuiConst_DISP_VAR_NOW displayVarNow = 0; #endif UpdateDrawLimits(sgl.CurItem.X1, sgl.CurItem.Y1, sgl.CurItem.X2, sgl.CurItem.Y2); #endif } break; case GuiLib_ITEM_DOT: if (sgl.DisplayWriting) { GuiLib_Dot(sgl.CurItem.X1, sgl.CurItem.Y1, ForeColor); UpdateDrawLimits(sgl.CurItem.X1, sgl.CurItem.Y1, sgl.CurItem.X1, sgl.CurItem.Y1); } break; case GuiLib_ITEM_LINE: if (sgl.DisplayWriting) { X1 = sgl.CurItem.X1; Y1 = sgl.CurItem.Y1; X2 = sgl.CurItem.X2; Y2 = sgl.CurItem.Y2; if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_PATTERNEDLINE) GuiLib_LinePattern(X1, Y1, X2, Y2, sgl.CurItem.LinePattern, ForeColor); else GuiLib_Line(X1, Y1, X2, Y2, ForeColor); UpdateDrawLimits(X1, Y1, X2, Y2); } break; case GuiLib_ITEM_FRAME: if (sgl.DisplayWriting) { X1 = sgl.CurItem.X1; Y1 = sgl.CurItem.Y1; X2 = sgl.CurItem.X2; Y2 = sgl.CurItem.Y2; OrderCoord(&X1, &X2); OrderCoord(&Y1, &Y2); if (sgl.CurItem.FrameThickness == 0) N = sgl.ThicknessMemory; else N = sgl.CurItem.FrameThickness; DrawBorderBox(X1, Y1, X2, Y2, ForeColor, BackColor, BackColorTransp, N); UpdateDrawLimits(X1, Y1, X2, Y2); } break; case GuiLib_ITEM_ROUNDEDFRAME: if (sgl.DisplayWriting) { X1 = sgl.CurItem.X1; Y1 = sgl.CurItem.Y1; X2 = sgl.CurItem.X2; Y2 = sgl.CurItem.Y2; OrderCoord(&X1, &X2); OrderCoord(&Y1, &Y2); if (BackColorTransp) BackColor2 = GuiLib_NO_COLOR; else BackColor2 = BackColor; if (sgl.CurItem.R1 <= 0) DrawBorderBox( X1, Y1, X2, Y2, ForeColor, BackColor, BackColorTransp, 1); else { Ellipse( X1 + sgl.CurItem.R1, Y1 + sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, ForeColor, BackColor2, 0, 0, 1, 0); if (X2 - X1 + 1 - 2 * sgl.CurItem.R1 > 0) { GuiLib_HLine(X1 + sgl.CurItem.R1, X2 - sgl.CurItem.R1, Y1, ForeColor); if (!BackColorTransp) GuiLib_FillBox( X1 + sgl.CurItem.R1, Y1 + 1, X2 - sgl.CurItem.R1, Y1 + sgl.CurItem.R1, BackColor); } Ellipse( X2 - sgl.CurItem.R1, Y1 + sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, ForeColor, BackColor2, 0, 0, 0, 1); if (Y2 - Y1 + 1 - 2 * sgl.CurItem.R1 > 0) { GuiLib_VLine(X1, Y1 + sgl.CurItem.R1, Y2 - sgl.CurItem.R1, ForeColor); if (!BackColorTransp) GuiLib_FillBox( X1 + 1, Y1 + sgl.CurItem.R1, X2 - 1, Y2 - sgl.CurItem.R1, BackColor); GuiLib_VLine(X2 , Y1 + sgl.CurItem.R1, Y2 - sgl.CurItem.R1, ForeColor); } Ellipse( X1 + sgl.CurItem.R1, Y2 - sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, ForeColor, BackColor2, 0, 1, 0, 0); if (X2 - X1 + 1 - 2 * sgl.CurItem.R1 > 0) { if (!BackColorTransp) GuiLib_FillBox( X1 + sgl.CurItem.R1, Y2 - sgl.CurItem.R1, X2 - sgl.CurItem.R1, Y2 - 1, BackColor); GuiLib_HLine(X1 + sgl.CurItem.R1, X2 - sgl.CurItem.R1, Y2, ForeColor); } Ellipse( X2 - sgl.CurItem.R1, Y2 - sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, ForeColor, BackColor2, 1, 0, 0, 0); } } break; case GuiLib_ITEM_BLOCK: if (sgl.DisplayWriting) { X1 = sgl.CurItem.X1; Y1 = sgl.CurItem.Y1; X2 = sgl.CurItem.X2; Y2 = sgl.CurItem.Y2; OrderCoord(&X1, &X2); OrderCoord(&Y1, &Y2); GuiLib_FillBox(X1, Y1, X2, Y2, ForeColor); UpdateDrawLimits(X1, Y1, X2, Y2); } break; case GuiLib_ITEM_ROUNDEDBLOCK: if (sgl.DisplayWriting) { X1 = sgl.CurItem.X1; Y1 = sgl.CurItem.Y1; X2 = sgl.CurItem.X2; Y2 = sgl.CurItem.Y2; OrderCoord(&X1, &X2); OrderCoord(&Y1, &Y2); if (sgl.CurItem.R1 <= 0) GuiLib_FillBox(X1, Y1, X2, Y2, ForeColor); else { Ellipse( X1 + sgl.CurItem.R1, Y1 + sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, ForeColor, ForeColor, 0, 0, 1, 0); if (X2 - X1 + 1 - 2 * sgl.CurItem.R1 > 0) GuiLib_FillBox( X1 + sgl.CurItem.R1, Y1, X2 - sgl.CurItem.R1, Y1 + sgl.CurItem.R1, ForeColor); Ellipse( X2 - sgl.CurItem.R1, Y1 + sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, ForeColor, ForeColor, 0, 0, 0, 1); if (Y2 - Y1 + 1 - 2 * sgl.CurItem.R1 > 0) GuiLib_FillBox(X1, Y1 + sgl.CurItem.R1, X2, Y2 - sgl.CurItem.R1, ForeColor); Ellipse( X1 + sgl.CurItem.R1, Y2 - sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, ForeColor, ForeColor, 0, 1, 0, 0); if (X2 - X1 + 1 - 2 * sgl.CurItem.R1 > 0) GuiLib_FillBox( X1 + sgl.CurItem.R1, Y2 - sgl.CurItem.R1, X2 - sgl.CurItem.R1, Y2, ForeColor); Ellipse( X2 - sgl.CurItem.R1, Y2 - sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, ForeColor, ForeColor, 1, 0, 0, 0); } } break; case GuiLib_ITEM_CIRCLE: if (sgl.DisplayWriting && (sgl.CurItem.R1 >= 0)) { if (BackColorTransp) BackColor2 = GuiLib_NO_COLOR; else BackColor2 = BackColor; if ((sgl.CurItem.FrameThickness == 0xFF) && !(sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_CIRCLE_IF)) { Ellipse(sgl.CurItem.X1 + sgl.CurItem.R1, sgl.CurItem.Y1, sgl.CurItem.R1, sgl.CurItem.R1, ForeColor, BackColor2, 1, 1, 1, 1); UpdateDrawLimits(sgl.CurItem.X1, sgl.CurItem.Y1 - sgl.CurItem.R1, sgl.CurItem.X1 + 2 * sgl.CurItem.R1, sgl.CurItem.Y1 + sgl.CurItem.R1); } else { Circle(sgl.CurItem.X1 + sgl.CurItem.R1, sgl.CurItem.Y1, sgl.CurItem.R1, ForeColor, sgl.CurItem.FrameThickness & 0x01, sgl.CurItem.FrameThickness & 0x02, sgl.CurItem.FrameThickness & 0x04, sgl.CurItem.FrameThickness & 0x08, sgl.CurItem.FrameThickness & 0x10, sgl.CurItem.FrameThickness & 0x20, sgl.CurItem.FrameThickness & 0x40, sgl.CurItem.FrameThickness & 0x80, sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_CIRCLE_IF); X1 = sgl.CurItem.X1 + sgl.CurItem.R1; Y1 = sgl.CurItem.Y1; X2 = sgl.CurItem.X1 + sgl.CurItem.R1; Y2 = sgl.CurItem.Y1; if (sgl.CurItem.FrameThickness & 0xC3) X2 += sgl.CurItem.R1; if (sgl.CurItem.FrameThickness & 0x3C) X1 -= sgl.CurItem.R1; if (sgl.CurItem.FrameThickness & 0xF0) Y1 -= sgl.CurItem.R1; if (sgl.CurItem.FrameThickness & 0x0F) Y2 += sgl.CurItem.R1; UpdateDrawLimits(X1, Y1, X2, Y2); } } break; case GuiLib_ITEM_QUARTERCIRCLE: if (sgl.DisplayWriting && (sgl.CurItem.R1 >= 0)) { if (BackColorTransp) BackColor2 = GuiLib_NO_COLOR; else BackColor2 = BackColor; X1 = sgl.CurItem.X1; Y1 = sgl.CurItem.Y1; Ellipse(X1 + sgl.CurItem.R1, Y1, sgl.CurItem.R1, sgl.CurItem.R1, ForeColor, BackColor2, (sgl.CurItem.FrameThickness == 0), (sgl.CurItem.FrameThickness == 1), (sgl.CurItem.FrameThickness == 2), (sgl.CurItem.FrameThickness == 3)); switch (sgl.CurItem.FrameThickness) { case 1: X1 += sgl.CurItem.R1; break; case 2: X1 += sgl.CurItem.R1; Y1 += sgl.CurItem.R1; break; case 3: Y1 += sgl.CurItem.R1; break; } UpdateDrawLimits(sgl.CurItem.X1, sgl.CurItem.Y1, sgl.CurItem.X1 + sgl.CurItem.R1, sgl.CurItem.Y1 + sgl.CurItem.R1); } break; case GuiLib_ITEM_ELLIPSE: if (sgl.DisplayWriting && (sgl.CurItem.R1 >= 0) && (sgl.CurItem.R2 >= 0)) { if (BackColorTransp) BackColor2 = GuiLib_NO_COLOR; else BackColor2 = BackColor; Ellipse(sgl.CurItem.X1 + sgl.CurItem.R1, sgl.CurItem.Y1, sgl.CurItem.R1, sgl.CurItem.R2, ForeColor, BackColor2, 1, 1, 1, 1); UpdateDrawLimits(sgl.CurItem.X1, sgl.CurItem.Y1 - sgl.CurItem.R2, sgl.CurItem.X1 + 2 * sgl.CurItem.R1, sgl.CurItem.Y1 + sgl.CurItem.R2); } break; case GuiLib_ITEM_QUARTERELLIPSE: if (sgl.DisplayWriting && (sgl.CurItem.R1 >= 0) && (sgl.CurItem.R2 >= 0)) { if (BackColorTransp) BackColor2 = GuiLib_NO_COLOR; else BackColor2 = BackColor; X1 = sgl.CurItem.X1; Y1 = sgl.CurItem.Y1; Ellipse(X1 + sgl.CurItem.R1, Y1, sgl.CurItem.R1, sgl.CurItem.R2, ForeColor, BackColor2, (sgl.CurItem.FrameThickness == 0), (sgl.CurItem.FrameThickness == 1), (sgl.CurItem.FrameThickness == 2), (sgl.CurItem.FrameThickness == 3)); switch (sgl.CurItem.FrameThickness) { case 1: X1 += sgl.CurItem.R1; break; case 2: X1 += sgl.CurItem.R1; Y1 += sgl.CurItem.R2; break; case 3: Y1 += sgl.CurItem.R2; break; } UpdateDrawLimits(sgl.CurItem.X1, sgl.CurItem.Y1, sgl.CurItem.X1 + sgl.CurItem.R1, sgl.CurItem.Y1 + sgl.CurItem.R2); } break; case GuiLib_ITEM_BITMAP: case GuiLib_ITEM_BACKGROUND: #ifdef GuiConst_BITMAP_SUPPORT_ON if (sgl.DisplayWriting) { if (sgl.CommonByte6 & 0x02) BackColor2 = sgl.CurItem.CompPars.CompBitmap.TranspColor; else BackColor2 = -1; GuiLib_ShowBitmap(sgl.CurItem.StructToCallIndex, sgl.CurItem.X1, sgl.CurItem.Y1, BackColor2); UpdateDrawLimits(sgl.CurItem.X1, sgl.CurItem.Y1, sgl.BitmapWriteX2, sgl.BitmapWriteY2); } if (sgl.CurItem.ItemType == GuiLib_ITEM_BACKGROUND) { sgl.BackgrBitmapAry[sgl.GlobalBackgrBitmapIndex].InUse = 1; sgl.BackgrBitmapAry[sgl.GlobalBackgrBitmapIndex].Index = sgl.CurItem.StructToCallIndex; sgl.BackgrBitmapAry[sgl.GlobalBackgrBitmapIndex].X = sgl.CurItem.X1; sgl.BackgrBitmapAry[sgl.GlobalBackgrBitmapIndex].Y = sgl.CurItem.Y1; if (sgl.GlobalBackgrBitmapIndex < GuiConst_MAX_BACKGROUND_BITMAPS - 1) sgl.GlobalBackgrBitmapIndex++; } #endif break; case GuiLib_ITEM_ACTIVEAREA: if (sgl.DisplayWriting) { #ifdef GuiConst_CLIPPING_SUPPORT_ON if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_CLIPPING) { sgl.CurItem.ClipRectX1 = sgl.CurItem.X1; sgl.CurItem.ClipRectY1 = sgl.CurItem.Y1; sgl.CurItem.ClipRectX2 = sgl.CurItem.X2; sgl.CurItem.ClipRectY2 = sgl.CurItem.Y2; sgl.ActiveAreaX1 = sgl.CurItem.X1; sgl.ActiveAreaY1 = sgl.CurItem.Y1; sgl.ActiveAreaX2 = sgl.CurItem.X2; sgl.ActiveAreaY2 = sgl.CurItem.Y2; OrderCoord(&sgl.ActiveAreaX1, &sgl.ActiveAreaX2); OrderCoord(&sgl.ActiveAreaY1, &sgl.ActiveAreaY2); #ifdef GuiConst_DISPLAY_ACTIVE_AREA_CLIPPING if (sgl.ActiveAreaX1 < sgl.DisplayActiveAreaX1) sgl.ActiveAreaX1 = sgl.DisplayActiveAreaX1; if (sgl.ActiveAreaY1 < sgl.DisplayActiveAreaY1) sgl.ActiveAreaY1 = sgl.DisplayActiveAreaY1; if (sgl.ActiveAreaX2 > sgl.DisplayActiveAreaX2) sgl.ActiveAreaX2 = sgl.DisplayActiveAreaX2; if (sgl.ActiveAreaY2 > sgl.DisplayActiveAreaY2) sgl.ActiveAreaY2 = sgl.DisplayActiveAreaY2; #endif GuiLib_SetClipping(sgl.ActiveAreaX1, sgl.ActiveAreaY1, sgl.ActiveAreaX2, sgl.ActiveAreaY2); } #endif #ifdef GuiConst_CLIPPING_SUPPORT_ON #ifdef GuiConst_REL_COORD_ORIGO_INUSE if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_ACTIVEAREARELCOORD) { sgl.CurItem.ClipRectX1 += sgl.CoordOrigoX; sgl.CurItem.ClipRectY1 += sgl.CoordOrigoY; sgl.CurItem.ClipRectX2 += sgl.CoordOrigoX; sgl.CurItem.ClipRectY2 += sgl.CoordOrigoY; } #endif #endif sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_ACTIVEAREARELCOORD) { sgl.CoordOrigoX += sgl.CurItem.X1; sgl.CoordOrigoY += sgl.CurItem.Y1; } #ifdef GuiConst_REL_COORD_ORIGO_INUSE sgl.CurItem.CoordOrigoX = sgl.CoordOrigoX; sgl.CurItem.CoordOrigoY = sgl.CoordOrigoY; #endif #ifdef GuiConst_CLIPPING_SUPPORT_ON #ifdef GuiConst_REL_COORD_ORIGO_INUSE sgl.CurItem.ClipRectX1 -= sgl.CoordOrigoX; sgl.CurItem.ClipRectY1 -= sgl.CoordOrigoY; sgl.CurItem.ClipRectX2 -= sgl.CoordOrigoX; sgl.CurItem.ClipRectY2 -= sgl.CoordOrigoY; #endif #endif } break; case GuiLib_ITEM_CLIPRECT: #ifdef GuiConst_CLIPPING_SUPPORT_ON if (sgl.DisplayWriting) { if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_CLIPPING) { sgl.CurItem.ClipRectX1 = sgl.CurItem.X1; sgl.CurItem.ClipRectY1 = sgl.CurItem.Y1; sgl.CurItem.ClipRectX2 = sgl.CurItem.X2; sgl.CurItem.ClipRectY2 = sgl.CurItem.Y2; } StartClipping( (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_CLIPPING) != 0); } #endif break; case GuiLib_ITEM_STRUCTURE: case GuiLib_ITEM_STRUCTARRAY: case GuiLib_ITEM_STRUCTCOND: if (sgl.DisplayWriting && (sgl.CurItem.TextPar[0].BackBoxSizeX > 0)) { DrawBackBox(BackColor, BackColorTransp, 0); UpdateDrawLimits(sgl.BbX1, sgl.BbY1, sgl.BbX2, sgl.BbY2); } StructToCallIndex = sgl.CurItem.StructToCallIndex; if (sgl.CurItem.ItemType == GuiLib_ITEM_STRUCTARRAY) { if (StructToCallIndex != 0xFFFF) { VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); I = sgl.CurItem.CompPars.StructCall.IndexCount; while (I > 0) { if (ReadWord(GuiStruct_StructNdxList[StructToCallIndex]) == VarValue) break; StructToCallIndex++; I--; } if (I == 0) { if (ReadWord(GuiStruct_StructNdxList[sgl.CurItem.StructToCallIndex]) == 0xFFFF) StructToCallIndex = sgl.CurItem.StructToCallIndex; else StructToCallIndex = 0xFFFF; } } } #ifdef GuiConst_ITEM_STRUCTCOND_INUSE else if (sgl.CurItem.ItemType == GuiLib_ITEM_STRUCTCOND) { VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); I = sgl.CurItem.CompPars.StructCall.IndexCount - 1; FirstRound = 1; while (I >= 0) { if ((VarValue >= sgl.CurItem.CompPars.StructCall.IndexFirst[I]) && (VarValue <= sgl.CurItem.CompPars.StructCall.IndexLast[I]) && ((sgl.CurItem.CompPars.StructCall.IndexFirst[I] == sgl.CurItem.CompPars.StructCall.IndexLast[I]) || !FirstRound)) { StructToCallIndex = sgl.CurItem.CompPars.StructCall.CallIndex[I]; break; } I--; if ((I == -1) && FirstRound) { FirstRound = 0; I = sgl.CurItem.CompPars.StructCall.IndexCount - 1; } } } #endif DrawSubStruct(StructToCallIndex, ColorInvert, 0); break; #ifdef GuiConst_ITEM_TOUCHAREA_INUSE case GuiLib_ITEM_TOUCHAREA: TouchIndex = -1; for (TouchSearch = 0; TouchSearch < sgl.TouchAreaCnt; TouchSearch++) if (sgl.TouchAreas[TouchSearch].IndexNo == sgl.CurItem.CompPars.CompTouch.AreaNo) { TouchIndex = TouchSearch; break; } if (TouchIndex == -1) { TouchIndex = sgl.TouchAreaCnt; sgl.TouchAreaCnt++; } sgl.TouchAreas[TouchIndex].IndexNo = sgl.CurItem.CompPars.CompTouch.AreaNo; sgl.TouchAreas[TouchIndex].X1 = sgl.CurItem.X1; sgl.TouchAreas[TouchIndex].Y1 = sgl.CurItem.Y1; sgl.TouchAreas[TouchIndex].X2 = sgl.CurItem.X2; sgl.TouchAreas[TouchIndex].Y2 = sgl.CurItem.Y2; OrderCoord(&sgl.TouchAreas[TouchIndex].X1, &sgl.TouchAreas[TouchIndex].X2); OrderCoord(&sgl.TouchAreas[TouchIndex].Y1, &sgl.TouchAreas[TouchIndex].Y2); break; #endif case GuiLib_ITEM_POSCALLBACK: for (I = 0; I < GuiConst_POSCALLBACK_CNT; I++) if (sgl.PosCallbacks[I].InUse && (sgl.PosCallbacks[I].IndexNo == sgl.CurItem.PosCallbackNo) && (sgl.PosCallbacks[I].PosCallbackFunc != 0)) { (*sgl.PosCallbacks[I].PosCallbackFunc)(sgl.CurItem.PosCallbackNo, sgl.CurItem.X1, sgl.CurItem.Y1); break; } break; #ifdef GuiConst_ITEM_SCROLLBOX_INUSE case GuiLib_ITEM_SCROLLBOX: break; #endif #ifdef GuiConst_ITEM_CHECKBOX_INUSE case GuiLib_ITEM_CHECKBOX: PrepareInternalStruct(); GuiVarCompInt1 = sgl.CurItem.CompPars.CompCheckBox.Size; sgl.Memory.C[0] = ForeColor; Y2 = sgl.CurItem.Y1 + sgl.CurItem.CompPars.CompCheckBox.Size - 1; switch (sgl.CurItem.CompPars.CompCheckBox.Style) { case GuiLib_CHECKBOX_FLAT: if (BackColorTransp) DrawSubStruct(GuiStructCOMP_CBFLATTRANSP, 0, 1); else DrawSubStruct(GuiStructCOMP_CBFLAT, 0, 1); break; case GuiLib_CHECKBOX_3D: DrawSubStruct(GuiStructCOMP_CB3D, 0, 1); if (!BackColorTransp) DrawSubStruct(GuiStructCOMP_CB3DINNER, 0, 1); break; case GuiLib_CHECKBOX_ICON: TempTextPar = sgl.CurItem.TextPar[0]; SetCurFont(sgl.CurItem.CompPars.CompCheckBox.IconFont); sgl.CurItem.X1 = sgl.CurItem.X1 + sgl.CurItem.CompPars.CompCheckBox.IconOffsetX; sgl.CurItem.Y1 = sgl.CurItem.Y1 + sgl.CurItem.CompPars.CompCheckBox.IconOffsetY; sgl.CurItem.TextPar[0].Alignment = GuiLib_ALIGN_LEFT; sgl.CurItem.TextPar[0].Ps = GuiLib_PS_OFF; sgl.CurItem.TextPar[0].BitFlags = 0; sgl.CurItem.TextPar[0].BackBoxSizeX = 0; sgl.CurItem.TextPar[0].BackBorderPixels = 0; DrawText(sgl.CurItem.CompPars.CompCheckBox.IconPtr, 1, 0, ForeColor, BackColor, BackColorTransp); Y2 = sgl.FontWriteY2; sgl.CurItem.TextPar[0] = TempTextPar; break; case GuiLib_CHECKBOX_BITMAP: if (sgl.CurItem.CompPars.CompCheckBox.BitmapIsTransparent) BackColor2 = sgl.CurItem.CompPars.CompCheckBox.BitmapTranspColor; else BackColor2 = -1; GuiLib_ShowBitmap(sgl.CurItem.CompPars.CompCheckBox.BitmapIndex, sgl.CurItem.X1, sgl.CurItem.Y1, BackColor2); break; } if ((sgl.CurItem.VarPtr != 0) && (sgl.CurItem.VarType != GuiLib_VAR_STRING)) { VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); if (VarValue != 0) CheckmarkMode = 1; else if ((sgl.CurItem.CompPars.CompCheckBox.Style == GuiLib_CHECKBOX_NONE) && (!BackColorTransp)) CheckmarkMode = 2; else CheckmarkMode = 0; if (CheckmarkMode > 0) { GuiVarCompInt1 = sgl.CurItem.CompPars.CompCheckBox.Size; if (CheckmarkMode == 1) sgl.Memory.C[0] = sgl.CurItem.CompPars.CompCheckBox.MarkColor; else sgl.Memory.C[0] = BackColor; switch (sgl.CurItem.CompPars.CompCheckBox.MarkStyle) { case GuiLib_CHECKBOX_MARK_CHECKED: GuiVarCompInt1 = (sgl.CurItem.CompPars.CompCheckBox.Size / 2) - ((sgl.CurItem.CompPars.CompCheckBox.Size - 6) / 6); GuiVarCompInt2 = (sgl.CurItem.CompPars.CompCheckBox.Size / 2) + ((sgl.CurItem.CompPars.CompCheckBox.Size - 8) / 6); GuiVarCompInt3 = GuiVarCompInt2 - ((sgl.CurItem.CompPars.CompCheckBox.Size - 1) / 5); GuiVarCompInt4 = -GuiVarCompInt3; GuiVarCompInt5 = -((GuiVarCompInt3 - 1) / 2); if (((sgl.CurItem.CompPars.CompCheckBox.Style == GuiLib_CHECKBOX_FLAT) || (sgl.CurItem.CompPars.CompCheckBox.Style == GuiLib_CHECKBOX_3D) || (sgl.CurItem.CompPars.CompCheckBox.Style == GuiLib_CHECKBOX_NONE)) && (sgl.CurItem.CompPars.CompCheckBox.Size <= 10)) DrawSubStruct(GuiStructCOMP_CBMCHSMALL, 0, 1); else DrawSubStruct(GuiStructCOMP_CBMCHBIG, 0, 1); break; case GuiLib_CHECKBOX_MARK_CROSSED: if ((sgl.CurItem.CompPars.CompCheckBox.Style == GuiLib_CHECKBOX_FLAT) && (sgl.CurItem.CompPars.CompCheckBox.Size <= 8)) DrawSubStruct(GuiStructCOMP_CBMCRFLSMALL, 0, 1); else if (((sgl.CurItem.CompPars.CompCheckBox.Style == GuiLib_CHECKBOX_3D) || (sgl.CurItem.CompPars.CompCheckBox.Style == GuiLib_CHECKBOX_NONE)) && (sgl.CurItem.CompPars.CompCheckBox.Size <= 8)) DrawSubStruct(GuiStructCOMP_CBMCR3DSMALL, 0, 1); else DrawSubStruct(GuiStructCOMP_CBMCRBIG, 0, 1); break; case GuiLib_CHECKBOX_MARK_FILLED: if (sgl.CurItem.CompPars.CompCheckBox.Style == GuiLib_CHECKBOX_FLAT) DrawSubStruct(GuiStructCOMP_CBMFIFLAT, 0, 1); else DrawSubStruct(GuiStructCOMP_CBMFI3D, 0, 1); break; case GuiLib_CHECKBOX_MARK_ICON: TempTextPar = sgl.CurItem.TextPar[0]; SetCurFont(sgl.CurItem.CompPars.CompCheckBox.MarkIconFont); sgl.CurItem.X1 = sgl.CurItem.X1 + sgl.CurItem.CompPars.CompCheckBox.MarkOffsetX; sgl.CurItem.Y1 = Y2 + sgl.CurItem.CompPars.CompCheckBox.MarkOffsetY; sgl.CurItem.TextPar[0].Alignment = GuiLib_ALIGN_LEFT; sgl.CurItem.TextPar[0].Ps = GuiLib_PS_OFF; sgl.CurItem.TextPar[0].BitFlags = 0; sgl.CurItem.TextPar[0].BackBoxSizeX = 0; sgl.CurItem.TextPar[0].BackBorderPixels = 0; if (CheckmarkMode == 1) DrawText(sgl.CurItem.CompPars.CompCheckBox.MarkIconPtr, 1, 0, sgl.CurItem.CompPars.CompCheckBox.MarkColor, 0, 1); else DrawText(sgl.CurItem.CompPars.CompCheckBox.MarkIconPtr, 1, 0, BackColor, 0, 2); sgl.CurItem.TextPar[0] = TempTextPar; break; case GuiLib_CHECKBOX_MARK_BITMAP: if (CheckmarkMode == 1) { if (sgl.CurItem.CompPars.CompCheckBox.MarkBitmapIsTransparent) BackColor2 = sgl.CurItem.CompPars.CompCheckBox.MarkBitmapTranspColor; else BackColor2 = -1; GuiLib_ShowBitmap(sgl.CurItem.CompPars.CompCheckBox.MarkBitmapIndex, sgl.CurItem.X1 + sgl.CurItem.CompPars.CompCheckBox.MarkOffsetX, sgl.CurItem.Y1 + sgl.CurItem.CompPars.CompCheckBox.MarkOffsetY, BackColor2); } else { ReadBitmapSizes(sgl.CurItem.CompPars.CompCheckBox.MarkBitmapIndex); GuiLib_FillBox(sgl.CurItem.X1, sgl.CurItem.Y1, sgl.CurItem.X1 + sgl.BitmapSizeX -1, sgl.CurItem.Y1 + sgl.BitmapSizeY - 1, BackColor); } break; } } } break; #endif #ifdef GuiConst_ITEM_RADIOBUTTON_INUSE case GuiLib_ITEM_RADIOBUTTON: PrepareInternalStruct(); X1 = sgl.CurItem.X1; Y1 = sgl.CurItem.Y1; RemYMemory = sgl.Memory.Y[GuiLib_MEMORY_CNT]; if ((sgl.CurItem.VarPtr != 0) && (sgl.CurItem.VarType != GuiLib_VAR_STRING)) VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); else VarValue = -1; for (N = 0; N < sgl.CurItem.CompPars.CompRadioButton.Count; N++) { GuiVarCompInt1 = sgl.CurItem.CompPars.CompRadioButton.Size; sgl.Memory.C[0] = ForeColor; switch (sgl.CurItem.CompPars.CompRadioButton.Style) { case GuiLib_RADIOBUTTON_FLAT: if (BackColorTransp) DrawSubStruct(GuiStructCOMP_RBFLATTRANSP, 0, 1); else DrawSubStruct(GuiStructCOMP_RBFLAT, 0, 1); break; case GuiLib_RADIOBUTTON_3D: if (!BackColorTransp) DrawSubStruct(GuiStructCOMP_RB3DINNER, 0, 1); DrawSubStruct(GuiStructCOMP_RB3D, 0, 1); break; case GuiLib_RADIOBUTTON_ICON: TempTextPar = sgl.CurItem.TextPar[0]; SetCurFont(sgl.CurItem.CompPars.CompRadioButton.IconFont); sgl.CurItem.X1 = X1 + sgl.CurItem.CompPars.CompRadioButton.IconOffsetX; sgl.CurItem.Y1 = Y1 + sgl.CurItem.CompPars.CompRadioButton.IconOffsetY + sgl.CurFont->BaseLine; sgl.CurItem.TextPar[0].Alignment = GuiLib_ALIGN_LEFT; sgl.CurItem.TextPar[0].Ps = GuiLib_PS_OFF; sgl.CurItem.TextPar[0].BitFlags = 0; sgl.CurItem.TextPar[0].BackBoxSizeX = 0; sgl.CurItem.TextPar[0].BackBorderPixels = 0; DrawText(sgl.CurItem.CompPars.CompRadioButton.IconPtr, 1, 0, ForeColor, BackColor, BackColorTransp); sgl.CurItem.TextPar[0] = TempTextPar; break; case GuiLib_RADIOBUTTON_BITMAP: if (sgl.CurItem.CompPars.CompRadioButton.BitmapIsTransparent) BackColor2 = sgl.CurItem.CompPars.CompRadioButton.BitmapTranspColor; else BackColor2 = -1; GuiLib_ShowBitmap(sgl.CurItem.CompPars.CompRadioButton.BitmapIndex, X1, Y1, BackColor2); break; } if (VarValue == N) { GuiVarCompInt1 = sgl.CurItem.CompPars.CompRadioButton.Size; GuiVarCompInt2 = sgl.CurItem.CompPars.CompRadioButton.Size - 3; if (sgl.CurItem.CompPars.CompRadioButton.Style == GuiLib_RADIOBUTTON_FLAT) GuiVarCompInt2++; sgl.Memory.C[0] = sgl.CurItem.CompPars.CompRadioButton.MarkColor; switch (sgl.CurItem.CompPars.CompRadioButton.MarkStyle) { case GuiLib_RADIOBUTTON_MARK_STANDARD: if (GuiVarCompInt1 <= 1) DrawSubStruct(GuiStructCOMP_RBMSQUA, 0, 1); else if (sgl.CurItem.CompPars.CompRadioButton.Style == GuiLib_RADIOBUTTON_FLAT) DrawSubStruct(GuiStructCOMP_RBMFLAT, 0, 1); else DrawSubStruct(GuiStructCOMP_RBM3D, 0, 1); break; case GuiLib_RADIOBUTTON_MARK_ICON: TempTextPar = sgl.CurItem.TextPar[0]; SetCurFont(sgl.CurItem.CompPars.CompRadioButton.MarkIconFont); sgl.CurItem.X1 = X1 + sgl.CurItem.CompPars.CompRadioButton.MarkOffsetX; sgl.CurItem.Y1 = Y1 + sgl.CurItem.CompPars.CompRadioButton.MarkOffsetY + sgl.CurFont->BaseLine; sgl.CurItem.TextPar[0].Alignment = GuiLib_ALIGN_LEFT; sgl.CurItem.TextPar[0].Ps = GuiLib_PS_OFF; sgl.CurItem.TextPar[0].BitFlags = 0; sgl.CurItem.TextPar[0].BackBoxSizeX = 0; sgl.CurItem.TextPar[0].BackBorderPixels = 0; DrawText(sgl.CurItem.CompPars.CompRadioButton.MarkIconPtr, 1, 0, ForeColor, BackColor, BackColorTransp); sgl.CurItem.TextPar[0] = TempTextPar; break; case GuiLib_RADIOBUTTON_MARK_BITMAP: if (sgl.CurItem.CompPars.CompRadioButton.MarkBitmapIsTransparent) BackColor2 = sgl.CurItem.CompPars.CompRadioButton.MarkBitmapTranspColor; else BackColor2 = -1; GuiLib_ShowBitmap(sgl.CurItem.CompPars.CompRadioButton.MarkBitmapIndex, X1 + sgl.CurItem.CompPars.CompRadioButton.MarkOffsetX, Y1 + sgl.CurItem.CompPars.CompRadioButton.MarkOffsetY, BackColor2); break; } } Y1 += sgl.CurItem.CompPars.CompRadioButton.InterDistance; sgl.Memory.Y[GuiLib_MEMORY_CNT] += sgl.CurItem.CompPars.CompRadioButton.InterDistance; } sgl.Memory.Y[GuiLib_MEMORY_CNT] = RemYMemory; break; #endif #ifdef GuiConst_ITEM_BUTTON_INUSE case GuiLib_ITEM_BUTTON: PrepareInternalStruct(); X1 = sgl.CurItem.X1; Y1 = sgl.CurItem.Y1; X2 = sgl.CurItem.X2; Y2 = sgl.CurItem.Y2; RemX1 = sgl.CurItem.X1; RemY1 = sgl.CurItem.Y1; GuiVarCompInt1 = X2 - X1 + 1; GuiVarCompInt2 = Y2 - Y1 + 1; GuiVarCompInt3 = sgl.CurItem.R1; GuiVarCompInt4 = GuiVarCompInt1 - sgl.CurItem.R1; GuiVarCompInt5 = GuiVarCompInt2 - sgl.CurItem.R1; sgl.Memory.C[0] = ForeColor; sgl.Memory.C[1] = BackColor; if (sgl.ButtonColorOverride == GuiLib_TRUE) sgl.Memory.C[2] = sgl.DisabledButtonColor; else sgl.Memory.C[2] = GuiLib_DesaturatePixelColor(BackColor,800); if ((sgl.CurItem.VarPtr != 0) && (sgl.CurItem.VarType != GuiLib_VAR_STRING)) { VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); if ((VarValue < GuiLib_BUTTON_STATE_UP) || (VarValue > GuiLib_BUTTON_STATE_DISABLED)) VarValue = GuiLib_BUTTON_STATE_UP; } else VarValue = GuiLib_BUTTON_STATE_UP; DisabledGlyphColorInUse = 0; DisabledTextColorInUse = 0; switch (sgl.CurItem.CompPars.CompButton.BodyStyle) { case GuiLib_BUTTON_BODY_FLAT: switch (VarValue) { case 0 : if (sgl.CurItem.R1 == 0) DrawSubStruct(GuiStructCOMP_BUFLAT0, 0, 1); else DrawSubStruct(GuiStructCOMP_BUFLATR0, 0, 1); break; case 1 : if (sgl.CurItem.R1 == 0) DrawSubStruct(GuiStructCOMP_BUFLAT1, 0, 1); else DrawSubStruct(GuiStructCOMP_BUFLATR1, 0, 1); break; case 2 : if (sgl.CurItem.R1 == 0) DrawSubStruct(GuiStructCOMP_BUFLAT2, 0, 1); else DrawSubStruct(GuiStructCOMP_BUFLATR2, 0, 1); DisabledGlyphColorInUse = (sgl.CurItem.CompPars.CompButton.GlyphLikeUp & 0x02); DisabledTextColorInUse = (sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x08); break; } break; case GuiLib_BUTTON_BODY_3D: switch (VarValue) { case 0 : if (sgl.CurItem.R1 == 0) DrawSubStruct(GuiStructCOMP_BU3D0, 0, 1); else DrawSubStruct(GuiStructCOMP_BU3DR0, 0, 1); break; case 1 : if (sgl.CurItem.R1 == 0) DrawSubStruct(GuiStructCOMP_BU3D1, 0, 1); else DrawSubStruct(GuiStructCOMP_BU3DR1, 0, 1); break; case 2 : if (sgl.CurItem.R1 == 0) DrawSubStruct(GuiStructCOMP_BU3D2, 0, 1); else DrawSubStruct(GuiStructCOMP_BU3DR2, 0, 1); DisabledGlyphColorInUse = !(sgl.CurItem.CompPars.CompButton.GlyphLikeUp & 0x02); DisabledTextColorInUse = !(sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x08); break; } break; case GuiLib_BUTTON_BODY_ICON: TempTextPar = sgl.CurItem.TextPar[VarValue]; SetCurFont(sgl.CurItem.CompPars.CompButton.BodyIconFont[VarValue]); sgl.CurItem.X1 = X1 + sgl.CurItem.CompPars.CompButton.BodyIconOffsetX[VarValue]; sgl.CurItem.Y1 = Y1 + sgl.CurItem.CompPars.CompButton.BodyIconOffsetY[VarValue] + sgl.CurFont->BaseLine; sgl.CurItem.TextPar[VarValue].Alignment = GuiLib_ALIGN_LEFT; sgl.CurItem.TextPar[VarValue].Ps = GuiLib_PS_OFF; sgl.CurItem.TextPar[VarValue].BitFlags = 0; sgl.CurItem.TextPar[VarValue].BackBoxSizeX = 0; sgl.CurItem.TextPar[VarValue].BackBorderPixels = 0; DrawText(sgl.CurItem.CompPars.CompButton.BodyIconPtr[VarValue], 1, VarValue, ForeColor, BackColor, BackColorTransp); sgl.CurItem.TextPar[VarValue] = TempTextPar; X1 = sgl.FontWriteX1; Y1 = sgl.FontWriteY1; X2 = sgl.FontWriteX2; Y2 = sgl.FontWriteY2; break; case GuiLib_BUTTON_BODY_BITMAP: if (sgl.CurItem.CompPars.CompButton.BodyBitmapIsTransparent[VarValue]) BackColor2 = sgl.CurItem.CompPars.CompButton.BodyBitmapTranspColor[VarValue]; else BackColor2 = -1; GuiLib_ShowBitmap(sgl.CurItem.CompPars.CompButton.BodyBitmapIndex[VarValue], X1, Y1, BackColor2); X2 = sgl.BitmapWriteX2; Y2 = sgl.BitmapWriteY2; break; } CX = (X1 + X2) / 2; CY = (Y1 + Y2) / 2; #ifdef GuiConst_CLIPPING_SUPPORT_ON RemClippingX1 = sgl.CurItem.ClipRectX1; RemClippingY1 = sgl.CurItem.ClipRectY1; RemClippingX2 = sgl.CurItem.ClipRectX2; RemClippingY2 = sgl.CurItem.ClipRectY2; sgl.CurItem.ClipRectX1 = GuiLib_GET_MAX(sgl.CurItem.ClipRectX1, X1); sgl.CurItem.ClipRectY1 = GuiLib_GET_MAX(sgl.CurItem.ClipRectY1, Y1); sgl.CurItem.ClipRectX2 = GuiLib_GET_MIN(sgl.CurItem.ClipRectX2, X2); sgl.CurItem.ClipRectY2 = GuiLib_GET_MIN(sgl.CurItem.ClipRectY2, Y2); GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); #endif // GuiConst_CLIPPING_SUPPORT_ON if (sgl.CurItem.CompPars.CompButton.Layout != GuiLib_BUTTON_LAYOUT_TEXT) { switch (sgl.CurItem.CompPars.CompButton.Layout) { case GuiLib_BUTTON_LAYOUT_GLYPH: GX1 = CX; GY1 = CY; break; case GuiLib_BUTTON_LAYOUT_GLYPHLEFT: GX1 = X1 + GuiLib_GET_MIN((Y2 - Y1) / 2, (X2 - X1) / 4); GY1 = CY; break; case GuiLib_BUTTON_LAYOUT_GLYPHRIGHT: GX1 = X2 - GuiLib_GET_MIN((Y2 - Y1) / 2, (X2 - X1) / 4); GY1 = CY; break; case GuiLib_BUTTON_LAYOUT_GLYPHTOP: GX1 = CX; GY1 = Y1 + ((Y2 - Y1) / 4); break; case GuiLib_BUTTON_LAYOUT_GLYPHBOTTOM: GX1 = CX; GY1 = Y2 - ((Y2 - Y1) / 4); break; } switch (sgl.CurItem.CompPars.CompButton.GlyphStyle) { case GuiLib_BUTTON_GLYPH_ICON: TempTextPar = sgl.CurItem.TextPar[VarValue]; SetCurFont(sgl.CurItem.CompPars.CompButton.GlyphIconFont[VarValue]); sgl.CurItem.X1 = GX1 + sgl.CurItem.CompPars.CompButton.GlyphIconOffsetX[VarValue]; sgl.CurItem.Y1 = GY1 + sgl.CurItem.CompPars.CompButton.GlyphIconOffsetY[VarValue] + GuiLib_FONT_MID_Y(sgl.CurFont->BaseLine, sgl.CurFont->TopLine); sgl.CurItem.TextPar[VarValue].Alignment = GuiLib_ALIGN_CENTER; sgl.CurItem.TextPar[VarValue].Ps = GuiLib_PS_OFF; sgl.CurItem.TextPar[VarValue].BitFlags = 0; sgl.CurItem.TextPar[VarValue].BackBoxSizeX = 0; sgl.CurItem.TextPar[VarValue].BackBorderPixels = 0; if (DisabledGlyphColorInUse) ButtonColor = GuiLib_MiddlePixelColor( sgl.CurItem.CompPars.CompButton.GlyphIconColor[VarValue], sgl.Memory.C[2], 800); else ButtonColor = sgl.CurItem.CompPars.CompButton.GlyphIconColor[VarValue]; DrawText(sgl.CurItem.CompPars.CompButton.GlyphIconPtr[VarValue], 1, VarValue, ButtonColor, 0, GuiLib_TRUE); sgl.CurItem.TextPar[VarValue] = TempTextPar; GX1 = sgl.FontWriteX1; GY1 = sgl.FontWriteY1; GX2 = sgl.FontWriteX2; GY2 = sgl.FontWriteY2; break; case GuiLib_BUTTON_GLYPH_BITMAP: ReadBitmapSizes(sgl.CurItem.CompPars.CompButton.GlyphBitmapIndex[VarValue]); GX1 -= sgl.BitmapSizeX / 2; GY1 -= sgl.BitmapSizeY / 2; GX1 += sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetX[VarValue]; GY1 += sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetY[VarValue]; if (sgl.CurItem.CompPars.CompButton.GlyphBitmapIsTransparent[VarValue]) BackColor2 = sgl.CurItem.CompPars.CompButton.GlyphBitmapTranspColor[VarValue]; else BackColor2 = -1; GuiLib_ShowBitmap(sgl.CurItem.CompPars.CompButton.GlyphBitmapIndex[VarValue], GX1, GY1, BackColor2); GX2 = sgl.BitmapWriteX2; GY2 = sgl.BitmapWriteY2; break; } } if (sgl.CurItem.CompPars.CompButton.Layout != GuiLib_BUTTON_LAYOUT_GLYPH) { TempTextPar = sgl.CurItem.TextPar[VarValue]; SetCurFont(sgl.CurItem.TextPar[VarValue].FontIndex); switch (sgl.CurItem.CompPars.CompButton.Layout) { case GuiLib_BUTTON_LAYOUT_TEXT: sgl.CurItem.X1 = CX; sgl.CurItem.Y1 = CY; break; case GuiLib_BUTTON_LAYOUT_GLYPHLEFT: sgl.CurItem.X1 = X2 - ((X2 - GX2 + 1) / 2); sgl.CurItem.Y1 = CY; break; case GuiLib_BUTTON_LAYOUT_GLYPHRIGHT: sgl.CurItem.X1 = X1 + ((GX1 - X1 + 1) / 2); sgl.CurItem.Y1 = CY; break; case GuiLib_BUTTON_LAYOUT_GLYPHTOP: sgl.CurItem.X1 = CX; sgl.CurItem.Y1 = Y2 - ((Y2 - GY2 + 1) / 2); break; case GuiLib_BUTTON_LAYOUT_GLYPHBOTTOM: sgl.CurItem.X1 = CX; sgl.CurItem.Y1 = Y1 + ((GY1 - Y1 + 1) / 2); break; } sgl.CurItem.Y1 += GuiLib_FONT_MID_Y(sgl.CurFont->BaseLine, sgl.CurFont->TopLine); sgl.CurItem.TextPar[VarValue].Alignment = GuiLib_ALIGN_CENTER; sgl.CurItem.TextPar[VarValue].BitFlags = 0; sgl.CurItem.TextPar[VarValue].BackBoxSizeX = 0; sgl.CurItem.TextPar[VarValue].BackBorderPixels = 0; if (DisabledTextColorInUse) ButtonColor = GuiLib_MiddlePixelColor( sgl.CurItem.CompPars.CompButton.TextColor[VarValue], sgl.Memory.C[2], 800); else ButtonColor = sgl.CurItem.CompPars.CompButton.TextColor[VarValue]; DRAW_ROM_TEXT(GetItemTextPtr(VarValue), sgl.CurItem.TextLength[VarValue], VarValue, ButtonColor, 0, GuiLib_TRUE); sgl.CurItem.TextPar[VarValue] = TempTextPar; } sgl.CurItem.X1 = RemX1; sgl.CurItem.Y1 = RemY1; #ifdef GuiConst_CLIPPING_SUPPORT_ON sgl.CurItem.ClipRectX1 = RemClippingX1; sgl.CurItem.ClipRectY1 = RemClippingY1; sgl.CurItem.ClipRectX2 = RemClippingX2; sgl.CurItem.ClipRectY2 = RemClippingY2; GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); #endif // GuiConst_CLIPPING_SUPPORT_ON break; #endif #ifdef GuiConst_ITEM_PANEL_INUSE case GuiLib_ITEM_PANEL: PrepareInternalStruct(); X1 = sgl.CurItem.X1; Y1 = sgl.CurItem.Y1; X2 = sgl.CurItem.X2; Y2 = sgl.CurItem.Y2; OrderCoord(&X1, &X2); OrderCoord(&Y1, &Y2); GuiVarCompInt1 = X2 - X1 + 1; GuiVarCompInt2 = Y2 - Y1 + 1; GuiVarCompInt3 = sgl.CurItem.R1; GuiVarCompInt4 = GuiVarCompInt1 - sgl.CurItem.R1; GuiVarCompInt5 = GuiVarCompInt2 - sgl.CurItem.R1; sgl.Memory.C[0] = ForeColor; switch (sgl.CurItem.CompPars.CompPanel.Style) { case GuiLib_PANEL_FLAT: if (sgl.CurItem.R1 == 0) { if (BackColorTransp) DrawSubStruct(GuiStructCOMP_PAFLATTRANSP, 0, 1); else DrawSubStruct(GuiStructCOMP_PAFLAT, 0, 1); } else { if (BackColorTransp) DrawSubStruct(GuiStructCOMP_PAFLATTRANSPR, 0, 1); else DrawSubStruct(GuiStructCOMP_PAFLATR, 0, 1); } break; case GuiLib_PANEL_3D_RAISED: if (sgl.CurItem.R1 == 0) { if (!BackColorTransp) DrawSubStruct(GuiStructCOMP_PA3DINNER, 0, 1); DrawSubStruct(GuiStructCOMP_PA3DRAIS, 0, 1); } else { if (!BackColorTransp) DrawSubStruct(GuiStructCOMP_PA3DINNERR, 0, 1); DrawSubStruct(GuiStructCOMP_PA3DRAISR, 0, 1); } break; case GuiLib_PANEL_3D_LOWERED: if (sgl.CurItem.R1 == 0) { if (!BackColorTransp) DrawSubStruct(GuiStructCOMP_PA3DINNER, 0, 1); DrawSubStruct(GuiStructCOMP_PA3DLOW, 0, 1); } else { if (!BackColorTransp) DrawSubStruct(GuiStructCOMP_PA3DINNERR, 0, 1); DrawSubStruct(GuiStructCOMP_PA3DLOWR, 0, 1); } break; case GuiLib_PANEL_EMBOSSED_RAISED: if (!BackColorTransp) DrawSubStruct(GuiStructCOMP_PA3DINNER, 0, 1); DrawSubStruct(GuiStructCOMP_PAEMBRAIS, 0, 1); break; case GuiLib_PANEL_EMBOSSED_LOWERED: if (!BackColorTransp) DrawSubStruct(GuiStructCOMP_PA3DINNER, 0, 1); DrawSubStruct(GuiStructCOMP_PAEMBLOW, 0, 1); break; } break; #endif #ifdef GuiConst_ITEM_GRAPH_INUSE case GuiLib_ITEM_GRAPH: break; #endif #ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE case GuiLib_ITEM_GRAPHICSLAYER: #ifdef GuiLib_LAYERS_SUPPORTED if (sgl.DisplayWriting) { sgl.LayerOrigoX = 0; sgl.LayerOrigoY = 0; sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; X1 = sgl.CurItem.X1; X2 = sgl.CurItem.X2; Y1 = sgl.CurItem.Y1; Y2 = sgl.CurItem.Y2; GuiLib_COORD_ADJUST(X1, Y1); GuiLib_COORD_ADJUST(X2, Y2); OrderCoord(&X1, &X2); OrderCoord(&Y1, &Y2); switch (sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].SizeMode) { case GuiLib_GRAPHICS_LAYER_SIZE_COORD: X1 = GuiLib_GET_MINMAX(X1, 0, GuiConst_DISPLAY_WIDTH_HW - 1); Y1 = GuiLib_GET_MINMAX(Y1, 0, GuiConst_DISPLAY_HEIGHT_HW - 1); X2 = GuiLib_GET_MINMAX(X2, 0, GuiConst_DISPLAY_WIDTH_HW - 1); Y2 = GuiLib_GET_MINMAX(Y2, 0, GuiConst_DISPLAY_HEIGHT_HW - 1); sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].X = GuiLib_GET_MINMAX( X1, 0, GuiConst_DISPLAY_WIDTH_HW); sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Y = GuiLib_GET_MINMAX( Y1, 0, GuiConst_DISPLAY_HEIGHT_HW); sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Width = X2 - X1 + 1; sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Height = Y2 - Y1 + 1; break; case GuiLib_GRAPHICS_LAYER_SIZE_SCREEN: sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].X = 0; sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Y = 0; sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Width = GuiConst_DISPLAY_WIDTH_HW; sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Height = GuiConst_DISPLAY_HEIGHT_HW; break; case GuiLib_GRAPHICS_LAYER_SIZE_CLIP: CX1 = sgl.CurItem.ClipRectX1; CX2 = sgl.CurItem.ClipRectX2; CY1 = sgl.CurItem.ClipRectY1; CY2 = sgl.CurItem.ClipRectY2; GuiLib_COORD_ADJUST(CX1, CY1); GuiLib_COORD_ADJUST(CX2, CY2); OrderCoord(&CX1, &CX2); OrderCoord(&CY1, &CY2); sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].X = CX1; sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Y = CY1; sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Width = CX2 - CX1 + 1; sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Height = CY2 - CY1 + 1; break; } sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].LineSize = GuiConst_PIXEL_BYTE_SIZE * sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Width; sgl.CurItem.ClipRectX1 = 0; sgl.CurItem.ClipRectY1 = 0; sgl.CurItem.ClipRectX2 = sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Width - 1; sgl.CurItem.ClipRectY2 = sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Height - 1; #ifdef GuiConst_CLIPPING_SUPPORT_ON StartClipping(1); #endif sgl.LayerOrigoX = -sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].X; sgl.LayerOrigoY = -sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Y; sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; if (GraphicsLayer_Push(sgl.GlobalGraphicsLayerIndex)) { switch (sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].InitMode) { case GuiLib_GRAPHICS_LAYER_INIT_NONE: break; case GuiLib_GRAPHICS_LAYER_INIT_COL: GuiLib_FillBox( sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].X, sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Y, sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].X + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Width - 1, sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Y + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Height - 1, BackColor); break; case GuiLib_GRAPHICS_LAYER_INIT_COPY: GraphicsLayer_Copy( sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].BaseAddress, sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].LineSize, 0, 0, #ifdef GuiConst_DISPLAY_BUFFER_EASYGUI #ifdef GuiLib_COLOR_UNIT_16 (GuiConst_INT8U*)GuiLib_DisplayBuf.Bytes, #else (GuiConst_INT8U*)GuiLib_DisplayBuf, #endif #else // GuiConst_DISPLAY_BUFFER_EASYGUI 0, #endif // GuiConst_DISPLAY_BUFFER_EASYGUI GuiConst_BYTES_PR_LINE, sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].X, sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Y, sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Width, sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Height); break; } } } #endif break; case GuiLib_ITEM_GRAPHICSFILTER: #ifdef GuiLib_LAYERS_SUPPORTED if (sgl.DisplayWriting) { sgl.LayerOrigoX = 0; sgl.LayerOrigoY = 0; sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; SourceLayerIndexNo = IndexOfGraphicsLayer( sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].SourceLayerIndexNo); DestLayerIndexNo = IndexOfGraphicsLayer( sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].DestLayerIndexNo); if (SourceLayerIndexNo != DestLayerIndexNo) { if (SourceLayerIndexNo == GuiLib_GRAPHICS_LAYER_BASE) { #ifdef GuiConst_DISPLAY_BUFFER_EASYGUI #ifdef GuiLib_COLOR_UNIT_16 SourceAddress = &(GuiLib_DisplayBuf.Bytes[0][0]); #else #ifdef GuiConst_COLOR_DEPTH_2 #ifdef GuiConst_BYTE_HORIZONTAL #ifdef GuiConst_COLOR_PLANES_2 SourceAddress = &(GuiLib_DisplayBuf[0][0][0]); #else SourceAddress = &(GuiLib_DisplayBuf[0][0]); #endif #else #ifdef GuiConst_COLOR_PLANES_2 SourceAddress = &(GuiLib_DisplayBuf[0][0][0]); #else SourceAddress = &(GuiLib_DisplayBuf[0][0]); #endif #endif #else SourceAddress = &(GuiLib_DisplayBuf[0][0]); #endif #endif // GuiLib_COLOR_UNIT_16 #else // GuiConst_DISPLAY_BUFFER_EASYGUI SourceAddress = 0; #endif // GuiConst_DISPLAY_BUFFER_EASYGUI SourceLineSize = GuiConst_BYTES_PR_LINE; SourceX = 0; SourceY = 0; SourceWidth = GuiConst_DISPLAY_WIDTH_HW; SourceHeight = GuiConst_DISPLAY_HEIGHT_HW; } else { SourceAddress = sgl.GraphicsLayerList[SourceLayerIndexNo].BaseAddress; SourceLineSize = sgl.GraphicsLayerList[SourceLayerIndexNo].LineSize; SourceX = sgl.GraphicsLayerList[SourceLayerIndexNo].X; SourceY = sgl.GraphicsLayerList[SourceLayerIndexNo].Y; SourceWidth = sgl.GraphicsLayerList[SourceLayerIndexNo].Width; SourceHeight = sgl.GraphicsLayerList[SourceLayerIndexNo].Height; } if (DestLayerIndexNo == GuiLib_GRAPHICS_LAYER_BASE) { #ifdef GuiConst_DISPLAY_BUFFER_EASYGUI #ifdef GuiLib_COLOR_UNIT_16 DestAddress = &(GuiLib_DisplayBuf.Bytes[0][0]); #else #ifdef GuiConst_COLOR_DEPTH_2 #ifdef GuiConst_BYTE_HORIZONTAL #ifdef GuiConst_COLOR_PLANES_2 DestAddress = &(GuiLib_DisplayBuf[0][0][0]); #else DestAddress = &(GuiLib_DisplayBuf[0][0]); #endif #else #ifdef GuiConst_COLOR_PLANES_2 DestAddress = &(GuiLib_DisplayBuf[0][0][0]); #else DestAddress = &(GuiLib_DisplayBuf[0][0]); #endif #endif #else DestAddress = &(GuiLib_DisplayBuf[0][0]); #endif #endif #else // GuiConst_DISPLAY_BUFFER_EASYGUI DestAddress = 0; #endif // GuiConst_DISPLAY_BUFFER_EASYGUI DestLineSize = GuiConst_BYTES_PR_LINE; DestX = SourceX; DestY = SourceY; DestWidth = SourceWidth; DestHeight = SourceHeight; } else { DestAddress = sgl.GraphicsLayerList[DestLayerIndexNo].BaseAddress; DestLineSize = sgl.GraphicsLayerList[DestLayerIndexNo].LineSize; DestX = sgl.GraphicsLayerList[DestLayerIndexNo].X; DestY = sgl.GraphicsLayerList[DestLayerIndexNo].Y; DestWidth = sgl.GraphicsLayerList[DestLayerIndexNo].Width; DestHeight = sgl.GraphicsLayerList[DestLayerIndexNo].Height; } if ((DestX <= SourceX) && (DestY <= SourceY) && (DestX + DestWidth >= SourceX + SourceWidth) && (DestY + DestHeight >= SourceY + SourceHeight) && (sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex]. GraphicsFilterFunc != 0)) { if (DestLayerIndexNo != GuiLib_GRAPHICS_LAYER_BASE) { DestX = SourceX - DestX; DestY = SourceY - DestY; } if (SourceLayerIndexNo != GuiLib_GRAPHICS_LAYER_BASE) { SourceX = 0; SourceY = 0; } for (I = 0; I <= 9; I++) { if (sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].ParVarType[I] == GuiLib_VAR_NONE) FilterPars[I] = sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].ParValueNum[I]; else FilterPars[I] = ReadVar( sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].ParVarPtr[I], sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].ParVarType[I]); } sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].GraphicsFilterFunc( DestAddress + DestY * DestLineSize + DestX * GuiConst_PIXEL_BYTE_SIZE, DestLineSize, SourceAddress + SourceY * SourceLineSize + SourceX * GuiConst_PIXEL_BYTE_SIZE, SourceLineSize, sgl.GraphicsLayerList[SourceLayerIndexNo].Width, sgl.GraphicsLayerList[SourceLayerIndexNo].Height, FilterPars); } GraphicsLayer_Pop( sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].ContAtLayerIndexNo); MarkDisplayBoxRepaint( DestX, DestY, DestX + sgl.GraphicsLayerList[SourceLayerIndexNo].Width - 1, DestY + sgl.GraphicsLayerList[SourceLayerIndexNo].Height - 1); } else GraphicsLayer_Pop(GuiLib_GRAPHICS_LAYER_BASE); if (sgl.BaseLayerDrawing) { sgl.LayerOrigoX = 0; sgl.LayerOrigoY = 0; } else { I = sgl.GraphicsLayerLifo[sgl.GraphicsLayerLifoCnt - 1]; sgl.LayerOrigoX = -sgl.GraphicsLayerList[I].X; sgl.LayerOrigoY = -sgl.GraphicsLayerList[I].Y; } sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; if (sgl.BaseLayerDrawing) { #ifdef GuiConst_CLIPPING_SUPPORT_ON StartClipping(0); #endif } else { I = sgl.GraphicsLayerLifo[sgl.GraphicsLayerLifoCnt - 1]; sgl.CurItem.ClipRectX1 = 0; sgl.CurItem.ClipRectY1 = 0; sgl.CurItem.ClipRectX2 = sgl.GraphicsLayerList[I].Width - 1; sgl.CurItem.ClipRectY2 = sgl.GraphicsLayerList[I].Height - 1; #ifdef GuiConst_CLIPPING_SUPPORT_ON StartClipping(1); #endif } } #endif break; #endif } if (sgl.CurItem.UpdateType == GuiLib_UPDATE_ON_CHANGE) if ((sgl.InitialDrawing) || (sgl.AutoRedrawUpdate == GuiLib_TRUE)) AutoRedraw_UpdateOnChange(sgl.AutoRedrawSaveIndex); if (sgl.AutoRedrawSaveIndex >= 0) AutoRedraw_UpdateDrawn(sgl.AutoRedrawSaveIndex, &sgl.CurItem); #ifdef GuiConst_TEXTBOX_FIELDS_ON if (((sgl.CurItem.ItemType == GuiLib_ITEM_TEXTBLOCK) || (sgl.CurItem.ItemType == GuiLib_ITEM_VARBLOCK)) && (sgl.CurItem.CompPars.CompTextBox.ScrollIndex != 0xFF)) { found = AutoRedraw_GetTextBox( sgl.CurItem.CompPars.CompTextBox.ScrollIndex, -1); if (found == -1) { if (sgl.AutoRedrawSaveIndex >= 0) AutoRedraw_SetAsTextBox(sgl.AutoRedrawSaveIndex); else AutoRedraw_InsertTextBox(&sgl.CurItem, 0, sgl.DisplayLevel); } found = 0; for (N = 0; N < GuiConst_TEXTBOX_FIELDS_MAX; N++) { if (sgl.TextBoxScrollPositions[N].index == sgl.CurItem.CompPars.CompTextBox.ScrollIndex) { found = 1; break; } } if (found == 0) { for (N = 0; N < GuiConst_TEXTBOX_FIELDS_MAX; N++) { if (sgl.TextBoxScrollPositions[N].index == -1) { sgl.TextBoxScrollPositions[N].index = sgl.CurItem.CompPars.CompTextBox.ScrollIndex; sgl.TextBoxScrollPositions[N].pos = sgl.CurItem.CompPars.CompTextBox.ScrollPos; break; } } } } #endif #ifdef GuiConst_CURSOR_SUPPORT_ON if (sgl.InitialDrawing && IsCursorField) sgl.CurItem.CursorFieldLevel--; if ((ColorInvert == GuiLib_COL_INVERT_IF_CURSOR) && FoundActiveCursorField) sgl.SwapColors = 0; #endif #ifdef GuiConst_REL_COORD_ORIGO_INUSE if (!sgl.InitialDrawing) { sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; } #endif #ifdef GuiConst_CLIPPING_SUPPORT_ON if (!sgl.InitialDrawing && sgl.DisplayWriting) GuiLib_ResetClipping(); #endif } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ static void ReadItem(GuiConst_INT16S LanguageIndex) { GuiConst_INT16S X; GuiConst_INT16S N; GuiConst_INT16S I,J; GuiConst_INTCOLOR TmpForeColor, TmpBackColor; GuiConst_INTCOLOR PrefixLocate *ColVarPtr; GuiConst_INT16U ColVarPtrIdx, PtrIdx; GuiConst_INT16U TmpColIdx; GuiConst_INT16U TmpForeColIdx; #ifdef GuiConst_ADV_CONTROLS GuiConst_INT16U TmpBackColIdx; #endif GuiConst_INT8U B1; GuiConst_INT16U W1; #ifdef GuiConst_REMOTE_TEXT_DATA GuiConst_INT16U Ti; #endif GuiConst_INT16U TxtSize; #ifndef GuiConst_REMOTE_TEXT_DATA GuiConst_INT16U TxtSum1, TxtSum2; #endif #ifdef GuiConst_REMOTE_STRUCT_DATA GuiConst_INT16U TxtReadSize; #endif #ifdef GuiConst_BLINK_SUPPORT_ON GuiConst_INT8S BS2; #endif #ifdef GuiConst_ITEM_SCROLLBOX_INUSE GuiConst_INT8U ScrollBoxIndex; #ifndef GuiConst_SCROLLITEM_BAR_NONE #ifdef GuiConst_REMOTE_BITMAP_DATA GuiConst_INT8U * PixelDataPtr; GuiConst_INT8U BitmapHeader[4]; #else GuiConst_INT8U PrefixRom * PixelDataPtr; #endif // GuiConst_REMOTE_BITMAP_DATA #endif // GuiConst_SCROLLITEM_BAR_NONE #endif // GuiConst_ITEM_SCROLLBOX_INUSE #ifdef GuiConst_ADV_COMPONENTS GuiConst_INT8U L; #endif #ifdef GuiConst_ITEM_GRAPH_INUSE GuiConst_INT8U GraphIndex; GuiConst_INT8U Axis; GuiConst_INT8U B; #endif #ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE GuiConst_INT8U GraphicsLayerIndex; GuiConst_INT8U GraphicsFilterIndex; #endif #ifdef GuiConst_ITEM_STRUCTCOND_INUSE GuiConst_INT16U CondI; #endif GuiConst_INT8U ColMemoryFore; GuiConst_INT8U ColMemoryBack; sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_INUSE; #ifdef GuiConst_REL_COORD_ORIGO_INUSE if (sgl.DisplayLevel == 0) { sgl.CurItem.CoordOrigoX = sgl.CoordOrigoX; sgl.CurItem.CoordOrigoY = sgl.CoordOrigoY; } #endif sgl.CommonByte0 = GetItemByte(&sgl.ItemDataPtr); sgl.CommonByte1 = GetItemByte(&sgl.ItemDataPtr); sgl.CommonByte2 = GetItemByte(&sgl.ItemDataPtr); sgl.CommonByte3 = GetItemByte(&sgl.ItemDataPtr); sgl.CommonByte4 = GetItemByte(&sgl.ItemDataPtr); sgl.CommonByte5 = GetItemByte(&sgl.ItemDataPtr); sgl.CommonByte6 = GetItemByte(&sgl.ItemDataPtr); sgl.CommonByte7 = GetItemByte(&sgl.ItemDataPtr); sgl.CurItem.ItemType = sgl.CommonByte0 & 0x3F; if (sgl.CurItem.ItemType < 32) sgl.ItemTypeBit1 = (GuiConst_INT32U)0x00000001 << (sgl.CurItem.ItemType & 0x1F); else sgl.ItemTypeBit1 = 0; if (sgl.CurItem.ItemType >= 32) sgl.ItemTypeBit2 = (GuiConst_INT32U)0x00000001 << (sgl.CurItem.ItemType - 32); else sgl.ItemTypeBit2 = 0; if (sgl.CommonByte7 & 0x20) { B1 = GetItemByte(&sgl.ItemDataPtr); if (B1 & 0x01) sgl.CurItem.ForeColorEnhance = GetItemWord(&sgl.ItemDataPtr); if (B1 & 0x02) sgl.CurItem.BackColorEnhance = GetItemWord(&sgl.ItemDataPtr); if (B1 & 0x04) sgl.CurItem.BarForeColorEnhance = GetItemWord(&sgl.ItemDataPtr); if (B1 & 0x08) sgl.CurItem.BarBackColorEnhance = GetItemWord(&sgl.ItemDataPtr); } else { sgl.CurItem.ForeColorEnhance = 0; sgl.CurItem.BackColorEnhance = 0; sgl.CurItem.BarForeColorEnhance = 0; sgl.CurItem.BarBackColorEnhance = 0; } if (sgl.CommonByte7 & 0x40) { ColMemoryFore = GetItemByte(&sgl.ItemDataPtr); ColMemoryBack = GetItemByte(&sgl.ItemDataPtr); } else { ColMemoryFore = 0; ColMemoryBack = 0; } TmpForeColor = sgl.CurItem.ForeColor; TmpForeColIdx = sgl.CurItem.ForeColorIndex; TmpBackColor = sgl.CurItem.BackColor; #ifdef GuiConst_ADV_CONTROLS TmpBackColIdx = sgl.CurItem.BackColorIndex; #endif if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + GuiLib_ITEMBIT_TEXTBLOCK + GuiLib_ITEMBIT_DOT + GuiLib_ITEMBIT_LINE + GuiLib_ITEMBIT_FRAME + GuiLib_ITEMBIT_BLOCK + GuiLib_ITEMBIT_CIRCLE + GuiLib_ITEMBIT_ELLIPSE + GuiLib_ITEMBIT_STRUCTURE + GuiLib_ITEMBIT_STRUCTARRAY + GuiLib_ITEMBIT_VAR + GuiLib_ITEMBIT_VARBLOCK + GuiLib_ITEMBIT_SCROLLBOX + GuiLib_ITEMBIT_GRAPH)) || (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME + GuiLib_ITEMBIT_ROUNDEDBLOCK + GuiLib_ITEMBIT_QUARTERCIRCLE + GuiLib_ITEMBIT_QUARTERELLIPSE + GuiLib_ITEMBIT_CHECKBOX + GuiLib_ITEMBIT_RADIOBUTTON + GuiLib_ITEMBIT_BUTTON + GuiLib_ITEMBIT_EDITBOX + GuiLib_ITEMBIT_PANEL + GuiLib_ITEMBIT_MEMO + GuiLib_ITEMBIT_LISTBOX + GuiLib_ITEMBIT_COMBOBOX + GuiLib_ITEMBIT_SCROLLAREA + GuiLib_ITEMBIT_PROGRESSBAR + GuiLib_ITEMBIT_STRUCTCOND))) { B1 = ColMemoryFore & 0x03; if (B1) { sgl.CurItem.ForeColor = sgl.Memory.C[B1-1]; sgl.CurItem.ForeColorIndex = sgl.ColMemoryIndex[B1-1]; } else { TmpColIdx = sgl.CurItem.ForeColorIndex; sgl.CurItem.ForeColorIndex = 0xFFFF; switch (sgl.CommonByte3 & 0x07) { case GuiLib_COLOR_FORE: sgl.CurItem.ForeColor = GuiConst_PIXEL_ON; break; case GuiLib_COLOR_BACK: sgl.CurItem.ForeColor = GuiConst_PIXEL_OFF; break; case GuiLib_COLOR_OTHER: sgl.CurItem.ForeColor = (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); break; case GuiLib_COLOR_INVERT: sgl.CurItem.ForeColor = TmpBackColor; break; case GuiLib_COLOR_TABLE: sgl.CurItem.ForeColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) { sgl.CurItem.ForeColor = GuiConst_PIXEL_ON; } else { sgl.CurItem.ForeColor = *ColVarPtr; sgl.CurItem.ForeColorIndex = ColVarPtrIdx; } break; default: sgl.CurItem.ForeColorIndex = TmpColIdx; break; } } if (sgl.CurItem.ForeColorEnhance > 0) sgl.CurItem.ForeColor = GuiLib_BrightenPixelColor( sgl.CurItem.ForeColor, sgl.CurItem.ForeColorEnhance); else if (sgl.CurItem.ForeColorEnhance < 0) sgl.CurItem.ForeColor = GuiLib_DarkenPixelColor( sgl.CurItem.ForeColor, -sgl.CurItem.ForeColorEnhance); B1 = ColMemoryFore & 0x30; if (B1) { sgl.CurItem.BarForeColor = sgl.Memory.C[B1-1]; sgl.CurItem.BarForeColorIndex = sgl.ColMemoryIndex[B1-1]; } else { TmpColIdx = sgl.CurItem.BarForeColorIndex; sgl.CurItem.BarForeColorIndex = 0xFFFF; switch ((sgl.CommonByte5 >> 1) & 0x07) { case GuiLib_COLOR_FORE: sgl.CurItem.BarForeColor = GuiConst_PIXEL_ON; break; case GuiLib_COLOR_BACK: sgl.CurItem.BarForeColor = GuiConst_PIXEL_OFF; break; case GuiLib_COLOR_OTHER: sgl.CurItem.BarForeColor = (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); break; case GuiLib_COLOR_INVERT: sgl.CurItem.BarForeColor = sgl.CurItem.BackColor; break; case GuiLib_COLOR_TABLE: sgl.CurItem.BarForeColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) { sgl.CurItem.BarForeColor = GuiConst_PIXEL_ON; } else { sgl.CurItem.BarForeColor = *ColVarPtr; sgl.CurItem.BarForeColorIndex = ColVarPtrIdx; } break; default: sgl.CurItem.BarForeColorIndex = TmpColIdx; break; } } if (sgl.CurItem.BarForeColorEnhance > 0) sgl.CurItem.BarForeColor = GuiLib_BrightenPixelColor( sgl.CurItem.BarForeColor, sgl.CurItem.BarForeColorEnhance); else if (sgl.CurItem.BarForeColorEnhance < 0) sgl.CurItem.BarForeColor = GuiLib_DarkenPixelColor( sgl.CurItem.BarForeColor, -sgl.CurItem.BarForeColorEnhance); } if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_CLEARAREA + GuiLib_ITEMBIT_TEXT + GuiLib_ITEMBIT_TEXTBLOCK + GuiLib_ITEMBIT_FRAME + GuiLib_ITEMBIT_CIRCLE + GuiLib_ITEMBIT_ELLIPSE + GuiLib_ITEMBIT_STRUCTURE + GuiLib_ITEMBIT_STRUCTARRAY + GuiLib_ITEMBIT_VAR + GuiLib_ITEMBIT_VARBLOCK + GuiLib_ITEMBIT_SCROLLBOX + GuiLib_ITEMBIT_GRAPH + GuiLib_ITEMBIT_GRAPHICSLAYER)) || (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME + GuiLib_ITEMBIT_QUARTERCIRCLE + GuiLib_ITEMBIT_QUARTERELLIPSE + GuiLib_ITEMBIT_CHECKBOX + GuiLib_ITEMBIT_RADIOBUTTON + GuiLib_ITEMBIT_BUTTON + GuiLib_ITEMBIT_EDITBOX + GuiLib_ITEMBIT_PANEL + GuiLib_ITEMBIT_MEMO + GuiLib_ITEMBIT_LISTBOX + GuiLib_ITEMBIT_COMBOBOX + GuiLib_ITEMBIT_SCROLLAREA + GuiLib_ITEMBIT_PROGRESSBAR + GuiLib_ITEMBIT_STRUCTCOND))) { B1 = ColMemoryBack & 0x03; if (B1) { sgl.CurItem.BackColor = sgl.Memory.C[B1-1]; sgl.CurItem.BackColorIndex = sgl.ColMemoryIndex[B1-1]; sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSPARENT; } else { TmpColIdx = sgl.CurItem.BackColorIndex; sgl.CurItem.BackColorIndex = 0xFFFF; switch ((sgl.CommonByte3 >> 3) & 0x07) { case GuiLib_COLOR_FORE: sgl.CurItem.BackColor = GuiConst_PIXEL_ON; sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSPARENT; break; case GuiLib_COLOR_BACK: sgl.CurItem.BackColor = GuiConst_PIXEL_OFF; sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSPARENT; break; case GuiLib_COLOR_OTHER: sgl.CurItem.BackColor = GetItemColor(&sgl.ItemDataPtr); sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSPARENT; break; case GuiLib_COLOR_INVERT: sgl.CurItem.BackColor = TmpForeColor; sgl.CurItem.BackColorIndex = TmpForeColIdx; sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSPARENT; break; case GuiLib_COLOR_TRANSP: sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_TRANSPARENT; break; case GuiLib_COLOR_TABLE: sgl.CurItem.BackColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSPARENT; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) { sgl.CurItem.BackColor = GuiConst_PIXEL_ON; } else { sgl.CurItem.BackColor = *ColVarPtr; sgl.CurItem.BackColorIndex = ColVarPtrIdx; } sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSPARENT; break; default: sgl.CurItem.BackColorIndex = TmpColIdx; break; } } if (sgl.CurItem.BackColorEnhance > 0) sgl.CurItem.BackColor = GuiLib_BrightenPixelColor( sgl.CurItem.BackColor, sgl.CurItem.BackColorEnhance); else if (sgl.CurItem.BackColorEnhance < 0) sgl.CurItem.BackColor = GuiLib_DarkenPixelColor( sgl.CurItem.BackColor, -sgl.CurItem.BackColorEnhance); B1 = ColMemoryBack & 0x30; if (B1) { sgl.CurItem.BarBackColor = sgl.Memory.C[B1-1]; sgl.CurItem.BarBackColorIndex = sgl.ColMemoryIndex[B1-1]; } else { TmpColIdx = sgl.CurItem.BarBackColorIndex; sgl.CurItem.BarBackColorIndex = 0xFFFF; switch ((sgl.CommonByte5 >> 4) & 0x07) { case GuiLib_COLOR_FORE: sgl.CurItem.BarBackColor = GuiConst_PIXEL_ON; sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_BARTRANSPARENT; break; case GuiLib_COLOR_BACK: sgl.CurItem.BarBackColor = GuiConst_PIXEL_OFF; sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_BARTRANSPARENT; break; case GuiLib_COLOR_OTHER: sgl.CurItem.BarBackColor = GetItemColor(&sgl.ItemDataPtr); sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_BARTRANSPARENT; break; case GuiLib_COLOR_INVERT: sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_BARTRANSPARENT; sgl.CurItem.BarBackColor = sgl.CurItem.ForeColor; break; case GuiLib_COLOR_TRANSP: sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_BARTRANSPARENT; break; case GuiLib_COLOR_TABLE: sgl.CurItem.BarBackColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_BARTRANSPARENT; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate*)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) { sgl.CurItem.BarBackColor = GuiConst_PIXEL_ON; } else { sgl.CurItem.BarBackColor = *ColVarPtr; sgl.CurItem.BarBackColorIndex = ColVarPtrIdx; } sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_BARTRANSPARENT; break; default: sgl.CurItem.BarBackColorIndex = TmpColIdx; break; } } if (sgl.CurItem.BarBackColorEnhance > 0) sgl.CurItem.BarBackColor = GuiLib_BrightenPixelColor( sgl.CurItem.BarBackColor, sgl.CurItem.BarBackColorEnhance); else if (sgl.CurItem.BarBackColorEnhance < 0) sgl.CurItem.BarBackColor = GuiLib_DarkenPixelColor( sgl.CurItem.BarBackColor, -sgl.CurItem.BarBackColorEnhance); } #ifdef GuiConst_COLOR_DEPTH_1 #ifdef GuiConst_BITMAP_SUPPORT_ON if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_BITMAP + GuiLib_ITEMBIT_BACKGROUND)) && (sgl.CommonByte6 & 0x02)) sgl.CurItem.CompPars.CompBitmap.TranspColor = (sgl.CommonByte6 >> 2) & 0x01; #endif #else #ifdef GuiConst_BITMAP_SUPPORT_ON if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_BITMAP + GuiLib_ITEMBIT_BACKGROUND)) && (sgl.CommonByte6 & 0x02)) { sgl.CurItem.CompPars.CompBitmap.TranspColor = GetItemColor(&sgl.ItemDataPtr); } #endif #endif B1 = ColMemoryFore & 0x0C; if (B1) { sgl.Memory.C[B1 - 1] = sgl.CurItem.ForeColor; sgl.ColMemoryIndex[B1 - 1] = sgl.CurItem.ForeColorIndex; } B1 = ColMemoryFore & 0xC0; if (B1) { sgl.Memory.C[B1 - 1] = sgl.CurItem.BarForeColor; sgl.ColMemoryIndex[B1 - 1] = sgl.CurItem.BarForeColorIndex; } B1 = ColMemoryBack & 0x0C; if (B1) { sgl.Memory.C[B1 - 1] = sgl.CurItem.BackColor; sgl.ColMemoryIndex[B1 - 1] = sgl.CurItem.BackColorIndex; } B1 = ColMemoryBack & 0xC0; if (B1) { sgl.Memory.C[B1 - 1] = sgl.CurItem.BarBackColor; sgl.ColMemoryIndex[B1 - 1] = sgl.CurItem.BarBackColorIndex; } if (sgl.CommonByte0 & 0x40) B1 = GetItemByte(&sgl.ItemDataPtr); else B1 = 0; sgl.X1MemoryRead = B1 & 0x03; sgl.X1MemoryWrite = (B1 >> 2) & 0x03; sgl.Y1MemoryRead = (B1 >> 4) & 0x03; sgl.Y1MemoryWrite = (B1 >> 6) & 0x03; if (sgl.CommonByte0 & 0x80) B1 = GetItemByte(&sgl.ItemDataPtr); else B1 = 0; sgl.X2MemoryRead = B1 & 0x03; sgl.X2MemoryWrite = (B1 >> 2) & 0x03; sgl.Y2MemoryRead = (B1 >> 4) & 0x03; sgl.Y2MemoryWrite = (B1 >> 6) & 0x03; if (sgl.CommonByte7 & 0x01) B1 = GetItemByte(&sgl.ItemDataPtr); else B1 = 0; sgl.R1MemoryRead = B1 & 0x03; sgl.R1MemoryWrite = (B1 >> 2) & 0x03; sgl.R2MemoryRead = (B1 >> 4) & 0x03; sgl.R2MemoryWrite = (B1 >> 6) & 0x03; if (sgl.CommonByte7 & 0x80) { if (sgl.X1MemoryRead) sgl.X1MemoryRead += GuiLib_MEMORY_CNT; if (sgl.X1MemoryWrite) sgl.X1MemoryWrite += GuiLib_MEMORY_CNT; if (sgl.Y1MemoryRead) sgl.Y1MemoryRead += GuiLib_MEMORY_CNT; if (sgl.Y1MemoryWrite) sgl.Y1MemoryWrite += GuiLib_MEMORY_CNT; if (sgl.X2MemoryRead) sgl.X2MemoryRead += GuiLib_MEMORY_CNT; if (sgl.X2MemoryWrite) sgl.X2MemoryWrite += GuiLib_MEMORY_CNT; if (sgl.Y2MemoryRead) sgl.Y2MemoryRead += GuiLib_MEMORY_CNT; if (sgl.Y2MemoryWrite) sgl.Y2MemoryWrite += GuiLib_MEMORY_CNT; if (sgl.R1MemoryRead) sgl.R1MemoryRead += GuiLib_MEMORY_CNT; if (sgl.R1MemoryWrite) sgl.R1MemoryWrite += GuiLib_MEMORY_CNT; if (sgl.R2MemoryRead) sgl.R2MemoryRead += GuiLib_MEMORY_CNT; if (sgl.R2MemoryWrite) sgl.R2MemoryWrite += GuiLib_MEMORY_CNT; } if (sgl.CommonByte6 & 0x01) B1 = GetItemByte(&sgl.ItemDataPtr); else B1 = 0; if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + GuiLib_ITEMBIT_TEXTBLOCK + GuiLib_ITEMBIT_STRUCTURE + GuiLib_ITEMBIT_STRUCTARRAY + GuiLib_ITEMBIT_VAR + GuiLib_ITEMBIT_VARBLOCK)) || (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_STRUCTCOND))) sgl.CurItem.TextPar[0].BackBorderPixels = B1; else sgl.CurItem.TextPar[0].BackBorderPixels = 0; if (sgl.CommonByte6 & 0x08) { N = GetItemWord(&sgl.ItemDataPtr); sgl.CurItem.TextPar[0].BackBoxSizeY1 = GetItemByte(&sgl.ItemDataPtr); sgl.CurItem.TextPar[0].BackBoxSizeY2 = GetItemByte(&sgl.ItemDataPtr); } else N = 0; if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + GuiLib_ITEMBIT_STRUCTURE + GuiLib_ITEMBIT_STRUCTARRAY + GuiLib_ITEMBIT_VAR)) || (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_STRUCTCOND))) sgl.CurItem.TextPar[0].BackBoxSizeX = N; else sgl.CurItem.TextPar[0].BackBoxSizeX = 0; #ifdef GuiConst_ITEM_SCROLLBOX_INUSE if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_SCROLLBOX) { if (sgl.NextScrollLineReading) if (sgl.CommonByte6 & 0x08) { sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].LineSizeX = sgl.CurItem.TextPar[0].BackBoxSizeX; sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].LineSizeY = sgl.CurItem.TextPar[0].BackBoxSizeY1; sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].LineSizeY2 = sgl.CurItem.TextPar[0].BackBoxSizeY2; } } #endif sgl.X1Mode = sgl.CommonByte1 & 0x03; sgl.Y1Mode = (sgl.CommonByte1 >> 2) & 0x03; sgl.X2Mode = (sgl.CommonByte1 >> 4) & 0x03; sgl.Y2Mode = (sgl.CommonByte1 >> 6) & 0x03; sgl.R1Mode = (sgl.CommonByte7 >> 1) & 0x03; sgl.R2Mode = (sgl.CommonByte7 >> 3) & 0x03; if (sgl.CommonByte2 & 0x01) sgl.ItemX1 = GetItemWord(&sgl.ItemDataPtr); else sgl.ItemX1 = 0; if (sgl.CommonByte2 & 0x02) sgl.ItemY1 = GetItemWord(&sgl.ItemDataPtr); else sgl.ItemY1 = 0; if (sgl.CommonByte2 & 0x04) sgl.ItemX2 = GetItemWord(&sgl.ItemDataPtr); else sgl.ItemX2 = 0; if (sgl.CommonByte2 & 0x08) sgl.ItemY2 = GetItemWord(&sgl.ItemDataPtr); else sgl.ItemY2 = 0; if (sgl.CommonByte6 & 0x10) sgl.ItemR1 = GetItemWord(&sgl.ItemDataPtr); else sgl.ItemR1 = 0; if (sgl.CommonByte6 & 0x20) sgl.ItemR2 = GetItemWord(&sgl.ItemDataPtr); else sgl.ItemR2 = 0; if (sgl.CommonByte2 & 0x10) { sgl.X1VarIdx = GetItemWord(&sgl.ItemDataPtr); if (sgl.X1VarIdx >= GuiStruct_VarPtrCnt) sgl.X1VarIdx = 0; } if (sgl.CommonByte2 & 0x20) { sgl.Y1VarIdx = GetItemWord(&sgl.ItemDataPtr); if (sgl.Y1VarIdx >= GuiStruct_VarPtrCnt) sgl.Y1VarIdx = 0; } if (sgl.CommonByte2 & 0x40) { sgl.X2VarIdx = GetItemWord(&sgl.ItemDataPtr); if (sgl.X2VarIdx >= GuiStruct_VarPtrCnt) sgl.X2VarIdx = 0; } if (sgl.CommonByte2 & 0x80) { sgl.Y2VarIdx = GetItemWord(&sgl.ItemDataPtr); if (sgl.Y2VarIdx >= GuiStruct_VarPtrCnt) sgl.Y2VarIdx = 0; } if (sgl.CommonByte6 & 0x40) { sgl.R1VarIdx = GetItemWord(&sgl.ItemDataPtr); if (sgl.R1VarIdx >= GuiStruct_VarPtrCnt) sgl.R1VarIdx = 0; } if (sgl.CommonByte6 & 0x80) { sgl.R2VarIdx = GetItemWord(&sgl.ItemDataPtr); if (sgl.R2VarIdx >= GuiStruct_VarPtrCnt) sgl.R2VarIdx = 0; } if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_CLEARAREA + GuiLib_ITEMBIT_TEXT + GuiLib_ITEMBIT_TEXTBLOCK + GuiLib_ITEMBIT_LINE + GuiLib_ITEMBIT_FRAME + GuiLib_ITEMBIT_BLOCK + GuiLib_ITEMBIT_CIRCLE + GuiLib_ITEMBIT_ELLIPSE + GuiLib_ITEMBIT_BITMAP + GuiLib_ITEMBIT_BACKGROUND + GuiLib_ITEMBIT_STRUCTURE + GuiLib_ITEMBIT_STRUCTARRAY + GuiLib_ITEMBIT_ACTIVEAREA + GuiLib_ITEMBIT_CLIPRECT + GuiLib_ITEMBIT_VAR + GuiLib_ITEMBIT_VARBLOCK + GuiLib_ITEMBIT_TOUCHAREA + GuiLib_ITEMBIT_SCROLLBOX + GuiLib_ITEMBIT_GRAPH + GuiLib_ITEMBIT_GRAPHICSLAYER)) || (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME + GuiLib_ITEMBIT_ROUNDEDBLOCK + GuiLib_ITEMBIT_QUARTERCIRCLE + GuiLib_ITEMBIT_QUARTERELLIPSE + GuiLib_ITEMBIT_CHECKBOX + GuiLib_ITEMBIT_RADIOBUTTON + GuiLib_ITEMBIT_BUTTON + GuiLib_ITEMBIT_EDITBOX + GuiLib_ITEMBIT_PANEL + GuiLib_ITEMBIT_MEMO + GuiLib_ITEMBIT_LISTBOX + GuiLib_ITEMBIT_COMBOBOX + GuiLib_ITEMBIT_SCROLLAREA + GuiLib_ITEMBIT_PROGRESSBAR + GuiLib_ITEMBIT_STRUCTCOND))) { B1 = (sgl.CommonByte3 >> 6) & 0x03; if (B1 != GuiLib_ALIGN_NOCHANGE) sgl.CurItem.TextPar[0].Alignment = B1; } B1 = sgl.CommonByte4 & 0x03; if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + GuiLib_ITEMBIT_TEXTBLOCK + GuiLib_ITEMBIT_STRUCTURE + GuiLib_ITEMBIT_STRUCTARRAY + GuiLib_ITEMBIT_VAR + GuiLib_ITEMBIT_VARBLOCK)) || (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_EDITBOX + GuiLib_ITEMBIT_MEMO + GuiLib_ITEMBIT_LISTBOX + GuiLib_ITEMBIT_COMBOBOX + GuiLib_ITEMBIT_PROGRESSBAR + GuiLib_ITEMBIT_STRUCTCOND))) { if (B1 != GuiLib_PS_NOCHANGE) sgl.CurItem.TextPar[0].Ps = B1; } if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + GuiLib_ITEMBIT_TEXTBLOCK + GuiLib_ITEMBIT_STRUCTURE + GuiLib_ITEMBIT_STRUCTARRAY + GuiLib_ITEMBIT_VAR + GuiLib_ITEMBIT_VARBLOCK)) || (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_EDITBOX + GuiLib_ITEMBIT_MEMO + GuiLib_ITEMBIT_LISTBOX + GuiLib_ITEMBIT_COMBOBOX + GuiLib_ITEMBIT_PROGRESSBAR + GuiLib_ITEMBIT_STRUCTCOND))) { if (sgl.CommonByte4 & 0x10) sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_UNDERLINE; else sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_UNDERLINE; } else if (sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_LINE + GuiLib_ITEMBIT_CIRCLE)) { if (sgl.CommonByte4 & 0x10) sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_PATTERNEDLINE; else sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_PATTERNEDLINE; } if (sgl.CommonByte4 & 0x20) sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_AUTOREDRAWFIELD; else sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_AUTOREDRAWFIELD; #ifdef GuiConst_CURSOR_SUPPORT_ON if (sgl.CommonByte4 & 0x40) sgl.CurItem.CursorFieldNo = GetItemByte(&sgl.ItemDataPtr); else sgl.CurItem.CursorFieldNo = -1; #endif #ifdef GuiConst_BLINK_SUPPORT_ON if (sgl.CommonByte5 & 0x01) BS2 = GetItemByte(&sgl.ItemDataPtr); else BS2 = -1; if (sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + GuiLib_ITEMBIT_TEXTBLOCK + GuiLib_ITEMBIT_VAR + GuiLib_ITEMBIT_VARBLOCK)) sgl.CurItem.BlinkFieldNo = BS2; else sgl.CurItem.BlinkFieldNo = -1; #endif if (sgl.CommonByte4 & 0x80) sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_TRANSLATION; else sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSLATION; if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + GuiLib_ITEMBIT_TEXTBLOCK + GuiLib_ITEMBIT_VAR + GuiLib_ITEMBIT_VARBLOCK)) || (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_BUTTON))) { if (sgl.CommonByte5 & 0x80) B1 = GetItemByte(&sgl.ItemDataPtr); else { if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_VAR + GuiLib_ITEMBIT_VARBLOCK)) || (sgl.CommonByte4 & 0x80)) I = LanguageIndex; else I = 0; B1 = ReadByte(GuiFont_LanguageTextDir[I]); } } else B1 = 0; if (B1) sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_REVERSEWRITING; else sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_REVERSEWRITING; if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_LINE)) && (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_PATTERNEDLINE)) sgl.CurItem.LinePattern = GetItemByte(&sgl.ItemDataPtr); #ifdef GuiConst_BLINK_SUPPORT_ON if (sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + GuiLib_ITEMBIT_TEXTBLOCK + GuiLib_ITEMBIT_VAR + GuiLib_ITEMBIT_VARBLOCK)) { if (sgl.CommonByte5 & 0x01) sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_BLINKTEXTFIELD; else sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_BLINKTEXTFIELD; } #endif if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + GuiLib_ITEMBIT_TEXTBLOCK)) || (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_BUTTON))) sgl.CurItem.TextCnt = GetItemByte(&sgl.ItemDataPtr); else sgl.CurItem.TextCnt = 1; if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + GuiLib_ITEMBIT_TEXTBLOCK + GuiLib_ITEMBIT_STRUCTURE + GuiLib_ITEMBIT_STRUCTARRAY + GuiLib_ITEMBIT_VAR + GuiLib_ITEMBIT_VARBLOCK + GuiLib_ITEMBIT_SCROLLBOX + GuiLib_ITEMBIT_GRAPH)) || (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_BUTTON + GuiLib_ITEMBIT_EDITBOX + GuiLib_ITEMBIT_LISTBOX + GuiLib_ITEMBIT_COMBOBOX + GuiLib_ITEMBIT_PROGRESSBAR + GuiLib_ITEMBIT_STRUCTCOND))) { if (sgl.CurItem.ItemType == GuiLib_ITEM_BUTTON) J = 3; else J = 1; for (I = 0; I < J; I++) { B1 = GetItemByte(&sgl.ItemDataPtr); if (B1 != 0xFF) sgl.CurItem.TextPar[I].FontIndex = B1 + 1; } } if (sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXTBLOCK + GuiLib_ITEMBIT_VARBLOCK)) { #ifdef GuiConst_TEXTBOX_FIELDS_ON sgl.CurItem.CompPars.CompTextBox.ScrollPos = 0; sgl.CurItem.CompPars.CompTextBox.ScrollIndex = GetItemByte(&sgl.ItemDataPtr); #else B1 = GetItemByte(&sgl.ItemDataPtr); #endif } sgl.CurItem.UpdateType = GuiLib_AUTOREDRAW_MODE; if (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_CHECKBOX + GuiLib_ITEMBIT_RADIOBUTTON + GuiLib_ITEMBIT_BUTTON + GuiLib_ITEMBIT_EDITBOX + GuiLib_ITEMBIT_LISTBOX + GuiLib_ITEMBIT_COMBOBOX + GuiLib_ITEMBIT_PROGRESSBAR)) { PtrIdx = GetItemWord(&sgl.ItemDataPtr); if (PtrIdx >= GuiStruct_VarPtrCnt) PtrIdx = 0; sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_AUTOREDRAWFIELD; sgl.CurItem.UpdateType = GuiLib_UPDATE_ON_CHANGE; sgl.CurItem.VarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[PtrIdx]); sgl.CurItem.VarType = ReadByte(GuiStruct_VarTypeList[PtrIdx]); } if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_STRUCTARRAY + GuiLib_ITEMBIT_VAR + GuiLib_ITEMBIT_VARBLOCK)) || (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_STRUCTCOND)) { PtrIdx = GetItemWord(&sgl.ItemDataPtr); if (PtrIdx >= GuiStruct_VarPtrCnt) PtrIdx = 0; sgl.CurItem.UpdateType = GuiLib_AUTOREDRAW_MODE; sgl.CurItem.VarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[PtrIdx]); sgl.CurItem.VarType = ReadByte(GuiStruct_VarTypeList[PtrIdx]); } #ifdef GuiConst_AUTOREDRAW_ON_CHANGE if ((sgl.CommonByte4 & 0x20) && ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + GuiLib_ITEMBIT_TEXTBLOCK + GuiLib_ITEMBIT_DOT + GuiLib_ITEMBIT_LINE + GuiLib_ITEMBIT_FRAME + GuiLib_ITEMBIT_BLOCK + GuiLib_ITEMBIT_CIRCLE + GuiLib_ITEMBIT_ELLIPSE + GuiLib_ITEMBIT_BITMAP + GuiLib_ITEMBIT_BACKGROUND + GuiLib_ITEMBIT_STRUCTURE)) || (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME + GuiLib_ITEMBIT_ROUNDEDBLOCK + GuiLib_ITEMBIT_QUARTERCIRCLE + GuiLib_ITEMBIT_QUARTERELLIPSE)))) { PtrIdx = GetItemWord(&sgl.ItemDataPtr); if (PtrIdx >= GuiStruct_VarPtrCnt) PtrIdx = 0; sgl.CurItem.UpdateType = GuiLib_AUTOREDRAW_MODE; sgl.CurItem.VarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[PtrIdx]); sgl.CurItem.VarType = ReadByte(GuiStruct_VarTypeList[PtrIdx]); } #endif if (sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_FRAME + GuiLib_ITEMBIT_CIRCLE + GuiLib_ITEMBIT_ELLIPSE)) { sgl.CurItem.FrameThickness = GetItemByte(&sgl.ItemDataPtr); } if (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_QUARTERCIRCLE + GuiLib_ITEMBIT_QUARTERELLIPSE)) { sgl.CurItem.FrameThickness = GetItemByte(&sgl.ItemDataPtr) % 4; } if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_STRUCTARRAY)) || (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_STRUCTCOND))) sgl.CurItem.CompPars.StructCall.IndexCount = GetItemWord(&sgl.ItemDataPtr); #ifdef GuiConst_ITEM_STRUCTCOND_INUSE if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_STRUCTCOND) { for (CondI = 0; CondI < sgl.CurItem.CompPars.StructCall.IndexCount; CondI++) { sgl.CurItem.CompPars.StructCall.IndexFirst[CondI] = GetItemWord(&sgl.ItemDataPtr); sgl.CurItem.CompPars.StructCall.IndexLast[CondI] = GetItemWord(&sgl.ItemDataPtr); sgl.CurItem.CompPars.StructCall.CallIndex[CondI] = GetItemWord(&sgl.ItemDataPtr); } } #endif if (sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_ACTIVEAREA + GuiLib_ITEMBIT_CLIPRECT)) { B1 = GetItemByte(&sgl.ItemDataPtr); if (B1 & 0x01) sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_CLIPPING; else sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_CLIPPING; if (B1 & 0x02) sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_ACTIVEAREARELCOORD; else sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_ACTIVEAREARELCOORD; } if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_FORMATTER) { sgl.CurItem.FormatFormat = GetItemByte(&sgl.ItemDataPtr); B1 = GetItemByte(&sgl.ItemDataPtr); if (B1 & 0x01) sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATSHOWSIGN; else sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_FORMATSHOWSIGN; if (B1 & 0x02) sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATZEROPADDING; else sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_FORMATZEROPADDING; sgl.CurItem.FormatAlignment = (B1 >> 2) & 0x03; if (B1 & 0x10) sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATTRAILINGZEROS; else sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_FORMATTRAILINGZEROS; if (B1 & 0x20) sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATTHOUSANDSSEP; else sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_FORMATTHOUSANDSSEP; sgl.CurItem.FormatFieldWidth = GetItemByte(&sgl.ItemDataPtr); sgl.CurItem.FormatDecimals = GetItemByte(&sgl.ItemDataPtr); } if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_STRUCTURE + GuiLib_ITEMBIT_STRUCTARRAY + GuiLib_ITEMBIT_BITMAP + GuiLib_ITEMBIT_BACKGROUND)) || (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_STRUCTCOND))) sgl.CurItem.StructToCallIndex = GetItemWord(&sgl.ItemDataPtr); #ifdef GuiConst_ITEM_TEXTBLOCK_INUSE if (sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXTBLOCK + GuiLib_ITEMBIT_VARBLOCK)) { sgl.CurItem.CompPars.CompTextBox.HorzAlignment = GetItemByte(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompTextBox.VertAlignment = GetItemByte(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompTextBox.LineDist = GetItemByte(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompTextBox.LineDistRelToFont = GetItemByte(&sgl.ItemDataPtr); } #endif #ifdef GuiConst_ITEM_TOUCHAREA_INUSE if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_TOUCHAREA) sgl.CurItem.CompPars.CompTouch.AreaNo = GetItemWord(&sgl.ItemDataPtr); #endif if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_POSCALLBACK) sgl.CurItem.PosCallbackNo = GetItemWord(&sgl.ItemDataPtr); #ifdef GuiConst_ITEM_SCROLLBOX_INUSE if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_SCROLLBOX) { ScrollBoxIndex = GetItemByte(&sgl.ItemDataPtr); sgl.GlobalScrollBoxIndex = ScrollBoxIndex; sgl.ScrollBoxesAry[ScrollBoxIndex].InUse = GuiLib_SCROLL_STRUCTURE_READ; sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxType = GetItemByte(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].MakeUpStructIndex = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].LineVerticalOffset = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].LineOffsetX = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].LineOffsetY = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeX = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeY = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructIndex = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructOffsetX = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructOffsetY = GetItemWord(&sgl.ItemDataPtr); B1 = GetItemByte(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorTransparent = 0; sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorIndex = 0xFFFF; switch (B1) { case GuiLib_COLOR_NOCHANGE: sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = sgl.CurItem.ForeColor; sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorIndex = sgl.CurItem.ForeColorIndex; break; case GuiLib_COLOR_FORE: sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = GuiConst_PIXEL_ON; break; case GuiLib_COLOR_BACK: sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = GuiConst_PIXEL_OFF; break; case GuiLib_COLOR_OTHER: sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = (GuiConst_INTCOLOR) GetItemColor(&sgl.ItemDataPtr); break; case GuiLib_COLOR_INVERT: sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = TmpForeColor; sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorIndex = TmpForeColIdx; break; case GuiLib_COLOR_TRANSP: sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorTransparent = 1; break; case GuiLib_COLOR_TABLE: sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = GuiConst_PIXEL_ON; else { sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = *ColVarPtr; sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorIndex = ColVarPtrIdx; } break; } sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode = GetItemByte(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs = GetItemByte(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode = GetItemByte(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].LineMarkerCount = GetItemByte(&sgl.ItemDataPtr); for (L = 0; L < sgl.ScrollBoxesAry[ScrollBoxIndex].LineMarkerCount; L++) { sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorIndex[L] = 0xFFFF; B1 = GetItemByte(&sgl.ItemDataPtr); switch (B1) { case GuiLib_COLOR_NOCHANGE: sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = sgl.CurItem.BackColor; sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorIndex[L] = sgl.CurItem.BackColorIndex; break; case GuiLib_COLOR_FORE: sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = GuiConst_PIXEL_ON; sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorTransparent[L] = 0; break; case GuiLib_COLOR_BACK: sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = GuiConst_PIXEL_OFF; sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorTransparent[L] = 0; break; case GuiLib_COLOR_OTHER: sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = (GuiConst_INTCOLOR) GetItemColor(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorTransparent[L] = 0; break; case GuiLib_COLOR_INVERT: sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = TmpForeColor; sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorIndex[L] = TmpForeColIdx; sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorTransparent[L] = 0; break; case GuiLib_COLOR_TRANSP: sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorTransparent[L] = 1; break; case GuiLib_COLOR_TABLE: sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorTransparent[L] = 0; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = GuiConst_PIXEL_ON; else { sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = *ColVarPtr; sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorIndex[L] = ColVarPtrIdx; } sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorTransparent[L] = 0; break; } sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStructIndex[L] = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerDrawingOrder[L] = GetItemByte(&sgl.ItemDataPtr); if (L || (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxType)) sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerSize[L] = 0; else sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerSize[L] = 1; sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[L] = 0; } sgl.ScrollBoxesAry[ScrollBoxIndex].BarType = GetItemByte(&sgl.ItemDataPtr); #ifndef GuiConst_SCROLLITEM_BAR_NONE if (sgl.ScrollBoxesAry[ScrollBoxIndex].BarType != GuiLib_MARKER_NONE) { sgl.ScrollBoxesAry[ScrollBoxIndex].BarMode = GetItemByte(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].BarPositionX = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].BarPositionY = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeX = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeY = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].BarStructIndex = GetItemWord(&sgl.ItemDataPtr); B1 = GetItemByte(&sgl.ItemDataPtr); switch (B1 & 0x07) { case GuiLib_COLOR_NOCHANGE: sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = sgl.CurItem.ForeColor; break; case GuiLib_COLOR_FORE: sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = GuiConst_PIXEL_ON; break; case GuiLib_COLOR_BACK: sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = GuiConst_PIXEL_OFF; break; case GuiLib_COLOR_OTHER: sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = (GuiConst_INTCOLOR) GetItemColor(&sgl.ItemDataPtr); break; case GuiLib_COLOR_INVERT: sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = TmpBackColor; break; case GuiLib_COLOR_TRANSP: break; case GuiLib_COLOR_TABLE: sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = GuiConst_PIXEL_ON; else sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = *ColVarPtr; break; } sgl.ScrollBoxesAry[ScrollBoxIndex].BarTransparent = 0; switch ((B1 & 0x38) >> 3) { case GuiLib_COLOR_NOCHANGE: sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = sgl.CurItem.ForeColor; break; case GuiLib_COLOR_FORE: sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = GuiConst_PIXEL_ON; break; case GuiLib_COLOR_BACK: sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = GuiConst_PIXEL_OFF; break; case GuiLib_COLOR_OTHER: sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = (GuiConst_INTCOLOR) GetItemColor(&sgl.ItemDataPtr); break; case GuiLib_COLOR_INVERT: sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = TmpForeColor; break; case GuiLib_COLOR_TRANSP: sgl.ScrollBoxesAry[ScrollBoxIndex].BarTransparent = 1; break; case GuiLib_COLOR_TABLE: sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = GuiConst_PIXEL_ON; else sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = *ColVarPtr; break; } sgl.ScrollBoxesAry[ScrollBoxIndex].BarThickness = GetItemByte(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerLeftOffset = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerRightOffset = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerTopOffset = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBottomOffset = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].BarIconPtr = (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; #ifdef GuiConst_CHARMODE_ANSI sgl.ItemDataPtr++; #else sgl.ItemDataPtr += 2; #endif sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerIconFont = GetItemByte(&sgl.ItemDataPtr) + 1; sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerIconOffsetX = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerIconOffsetY = GetItemWord(&sgl.ItemDataPtr); B1 = GetItemByte(&sgl.ItemDataPtr); switch (B1 & 0x07) { case GuiLib_COLOR_NOCHANGE: sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = sgl.CurItem.ForeColor; break; case GuiLib_COLOR_FORE: sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = GuiConst_PIXEL_ON; break; case GuiLib_COLOR_BACK: sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = GuiConst_PIXEL_OFF; break; case GuiLib_COLOR_OTHER: sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); break; case GuiLib_COLOR_INVERT: sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = TmpBackColor; break; case GuiLib_COLOR_TRANSP: break; case GuiLib_COLOR_TABLE: sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = GuiConst_PIXEL_ON; else sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = *ColVarPtr; break; } sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerTransparent = 0; switch ((B1 & 0x38) >> 3) { case GuiLib_COLOR_NOCHANGE: sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = sgl.CurItem.BackColor; break; case GuiLib_COLOR_FORE: sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = GuiConst_PIXEL_ON; break; case GuiLib_COLOR_BACK: sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = GuiConst_PIXEL_OFF; break; case GuiLib_COLOR_OTHER: sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); break; case GuiLib_COLOR_INVERT: sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = TmpForeColor; break; case GuiLib_COLOR_TRANSP: sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerTransparent = 1; break; case GuiLib_COLOR_TABLE: sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = GuiConst_PIXEL_ON; else sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = *ColVarPtr; break; } if (sgl.ScrollBoxesAry[ScrollBoxIndex].BarType == GuiLib_MARKER_BITMAP) { sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIndex = GetItemWord(&sgl.ItemDataPtr); #ifdef GuiConst_REMOTE_BITMAP_DATA GuiLib_RemoteDataReadBlock( (GuiConst_INT32U PrefixRom)GuiStruct_BitmapPtrList[ sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIndex], 4, BitmapHeader); PixelDataPtr = &BitmapHeader[0] + 2; #else PixelDataPtr = (GuiConst_INT8U PrefixRom *)ReadWord(GuiStruct_BitmapPtrList[ sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIndex]) + 2; #endif sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapHeight = (GuiConst_INT16S)*PixelDataPtr; PixelDataPtr++; sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapHeight += 256*(GuiConst_INT16S)*PixelDataPtr; B1 = GetItemByte(&sgl.ItemDataPtr); #ifdef GuiConst_BITMAP_SUPPORT_ON sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIsTransparent = (B1 & 0x01); if (sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIsTransparent) #ifdef GuiConst_COLOR_DEPTH_1 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapTranspColor = (B1 >> 1) & 0x01; #else sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapTranspColor = GetItemColor(&sgl.ItemDataPtr); #endif #else sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIsTransparent = 0; #endif } } #endif sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorType = GetItemByte(&sgl.ItemDataPtr); #ifndef GuiConst_SCROLLITEM_INDICATOR_NONE if (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorType != GuiLib_INDICATOR_NONE) { sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMode = GetItemByte(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorPositionX = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorPositionY = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeX = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeY = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorStructIndex = GetItemWord(&sgl.ItemDataPtr); B1 = GetItemByte(&sgl.ItemDataPtr); switch (B1 & 0x07) { case GuiLib_COLOR_NOCHANGE: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = sgl.CurItem.ForeColor; break; case GuiLib_COLOR_FORE: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = GuiConst_PIXEL_ON; break; case GuiLib_COLOR_BACK: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = GuiConst_PIXEL_OFF; break; case GuiLib_COLOR_OTHER: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); break; case GuiLib_COLOR_INVERT: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = TmpBackColor; break; case GuiLib_COLOR_TRANSP: break; case GuiLib_COLOR_TABLE: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = GuiConst_PIXEL_ON; else sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = *ColVarPtr; break; } sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorTransparent = 0; switch ((B1 & 0x38) >> 3) { case GuiLib_COLOR_NOCHANGE: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = sgl.CurItem.BackColor; break; case GuiLib_COLOR_FORE: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = GuiConst_PIXEL_ON; break; case GuiLib_COLOR_BACK: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = GuiConst_PIXEL_OFF; break; case GuiLib_COLOR_OTHER: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); break; case GuiLib_COLOR_INVERT: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = TmpForeColor; break; case GuiLib_COLOR_TRANSP: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorTransparent = 1; break; case GuiLib_COLOR_TABLE: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = GuiConst_PIXEL_ON; else sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = *ColVarPtr; break; } sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorThickness = GetItemByte(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerLeftOffset = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerRightOffset = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerTopOffset = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBottomOffset = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorIconPtr = (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; #ifdef GuiConst_CHARMODE_ANSI sgl.ItemDataPtr++; #else sgl.ItemDataPtr += 2; #endif sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerIconFont = GetItemByte(&sgl.ItemDataPtr) + 1; sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerIconOffsetX = GetItemWord(&sgl.ItemDataPtr); sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerIconOffsetY = GetItemWord(&sgl.ItemDataPtr); B1 = GetItemByte(&sgl.ItemDataPtr); switch (B1 & 0x07) { case GuiLib_COLOR_NOCHANGE: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = sgl.CurItem.ForeColor; break; case GuiLib_COLOR_FORE: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = GuiConst_PIXEL_ON; break; case GuiLib_COLOR_BACK: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = GuiConst_PIXEL_OFF; break; case GuiLib_COLOR_OTHER: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); break; case GuiLib_COLOR_INVERT: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = TmpBackColor; break; case GuiLib_COLOR_TRANSP: break; case GuiLib_COLOR_TABLE: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = GuiConst_PIXEL_ON; else sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = *ColVarPtr; break; } sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerTransparent = 0; switch ((B1 & 0x38) >> 3) { case GuiLib_COLOR_NOCHANGE: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = sgl.CurItem.BackColor; break; case GuiLib_COLOR_FORE: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = GuiConst_PIXEL_ON; break; case GuiLib_COLOR_BACK: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = GuiConst_PIXEL_OFF; break; case GuiLib_COLOR_OTHER: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); break; case GuiLib_COLOR_INVERT: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = TmpForeColor; break; case GuiLib_COLOR_TRANSP: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerTransparent = 1; break; case GuiLib_COLOR_TABLE: sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = GuiConst_PIXEL_ON; else sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = *ColVarPtr; break; } if (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorType == GuiLib_MARKER_BITMAP) { sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapIndex = GetItemWord(&sgl.ItemDataPtr); B1 = GetItemByte(&sgl.ItemDataPtr); #ifdef GuiConst_BITMAP_SUPPORT_ON sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapIsTransparent = (B1 & 0x01); if (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapIsTransparent) #ifdef GuiConst_COLOR_DEPTH_1 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapTranspColor = (B1 >> 1) & 0x01; #else sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapTranspColor = GetItemColor(&sgl.ItemDataPtr); #endif #else sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapIsTransparent = 0; #endif } sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorLine = -1; } #endif } #endif #ifdef GuiConst_ITEM_GRAPH_INUSE if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_GRAPH) { GraphIndex = GetItemByte(&sgl.ItemDataPtr); sgl.GlobalGraphIndex = GraphIndex; sgl.GraphAry[GraphIndex].InUse = GuiLib_GRAPH_STRUCTURE_USED; sgl.GraphAry[GraphIndex].OriginOffsetX = GetItemWord(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].OriginOffsetY = GetItemWord(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].ForeColor = sgl.CurItem.ForeColor; sgl.GraphAry[GraphIndex].BackColor = sgl.CurItem.BackColor; for (Axis = GuiLib_GRAPHAXIS_X; Axis <= GuiLib_GRAPHAXIS_Y; Axis++) { sgl.GraphAry[GraphIndex].GraphAxesCnt[Axis] = GetItemByte(&sgl.ItemDataPtr); for (L = 0; L < sgl.GraphAry[GraphIndex].GraphAxesCnt[Axis]; L++) { sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags = 0; B = GetItemByte(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].Visible = 1; sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].Line = B & 0x01; sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].LineBetweenAxes = (B >> 7) & 0x01; sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].LineNegative = (B >> 1) & 0x01; sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].Arrow = (B >> 2) & 0x01; sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].TicksMajor = (B >> 3) & 0x01; sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].TicksMinor = (B >> 4) & 0x01; sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].Numbers = (B >> 5) & 0x01; sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersAtOrigo = (B >> 6) & 0x01; sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].Offset = GetItemWord(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].ArrowLength = GetItemWord(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].ArrowWidth = GetItemWord(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].TicksMajorLength = GetItemWord(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].TicksMajorWidth = GetItemWord(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].TicksMinorLength = GetItemWord(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].TicksMinorWidth = GetItemWord(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersMinValue = GetItemLong(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersMinValueOrg = sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersMinValue; sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersMaxValue = GetItemLong(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersMaxValueOrg = sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersMaxValue; sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersStepMajor = GetItemLong(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersStepMinor = GetItemLong(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersOffset = GetItemWord(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersAtEnd = GetItemWord(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].FormatFieldWidth = GetItemByte(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].FormatDecimals = GetItemByte(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].FormatAlignment = GetItemByte(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].FormatFormat = GetItemByte(&sgl.ItemDataPtr); B = GetItemByte(&sgl.ItemDataPtr); if (B & 0x01) sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags |= GuiLib_BITFLAG_FORMATSHOWSIGN; else sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags &= ~GuiLib_BITFLAG_FORMATSHOWSIGN; if (B & 0x02) sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags |= GuiLib_BITFLAG_FORMATZEROPADDING; else sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags &= ~GuiLib_BITFLAG_FORMATZEROPADDING; if (B & 0x04) sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags |= GuiLib_BITFLAG_FORMATTRAILINGZEROS; else sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags &= ~GuiLib_BITFLAG_FORMATTRAILINGZEROS; if (B & 0x08) sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags |= GuiLib_BITFLAG_FORMATTHOUSANDSSEP; else sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags &= ~GuiLib_BITFLAG_FORMATTHOUSANDSSEP; sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].Scale = 10000; } } sgl.GraphAry[GraphIndex].GraphDataSetCnt = GetItemByte(&sgl.ItemDataPtr); for (L = 0; L < sgl.GraphAry[GraphIndex].GraphDataSetCnt; L++) { sgl.GraphAry[GraphIndex].GraphDataSets[L].DataSize = 0; sgl.GraphAry[GraphIndex].GraphDataSets[L].DataFirst = 0; sgl.GraphAry[GraphIndex].GraphDataSets[L].DataCount = 0; sgl.GraphAry[GraphIndex].GraphDataSets[L].AxisIndexX = 0; sgl.GraphAry[GraphIndex].GraphDataSets[L].AxisIndexY = 0; sgl.GraphAry[GraphIndex].GraphDataSets[L].Visible = 1; sgl.GraphAry[GraphIndex].GraphDataSets[L].Representation = GetItemByte(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphDataSets[L].Width = GetItemWord(&sgl.ItemDataPtr); sgl.GraphAry[GraphIndex].GraphDataSets[L].Thickness = GetItemWord(&sgl.ItemDataPtr); B1 = GetItemByte(&sgl.ItemDataPtr); switch (B1 & 0x07) { case GuiLib_COLOR_NOCHANGE: sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = sgl.CurItem.ForeColor; break; case GuiLib_COLOR_FORE: sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = GuiConst_PIXEL_ON; break; case GuiLib_COLOR_BACK: sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = GuiConst_PIXEL_OFF; break; case GuiLib_COLOR_OTHER: sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = (GuiConst_INTCOLOR) GetItemColor(&sgl.ItemDataPtr); break; case GuiLib_COLOR_INVERT: sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = TmpBackColor; break; case GuiLib_COLOR_TRANSP: break; case GuiLib_COLOR_TABLE: sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = GuiConst_PIXEL_ON; else sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = *ColVarPtr; break; } sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColorTransparent = 0; switch ((B1 & 0x38) >> 3) { case GuiLib_COLOR_NOCHANGE: sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = sgl.CurItem.BackColor; break; case GuiLib_COLOR_FORE: sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = GuiConst_PIXEL_ON; break; case GuiLib_COLOR_BACK: sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = GuiConst_PIXEL_OFF; break; case GuiLib_COLOR_OTHER: sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = (GuiConst_INTCOLOR) GetItemColor(&sgl.ItemDataPtr); break; case GuiLib_COLOR_INVERT: sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = TmpForeColor; break; case GuiLib_COLOR_TRANSP: sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColorTransparent = 1; break; case GuiLib_COLOR_TABLE: sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = GuiConst_PIXEL_ON; else sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = *ColVarPtr; break; } } } #endif #ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_GRAPHICSLAYER) { GraphicsLayerIndex = GetItemByte(&sgl.ItemDataPtr); sgl.GlobalGraphicsLayerIndex = GraphicsLayerIndex; sgl.GraphicsLayerList[GraphicsLayerIndex].InUse = GuiLib_GRAPHICS_LAYER_USED; sgl.GraphicsLayerList[GraphicsLayerIndex].SizeMode = GetItemByte(&sgl.ItemDataPtr); sgl.GraphicsLayerList[GraphicsLayerIndex].InitMode = GetItemByte(&sgl.ItemDataPtr); } if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_GRAPHICSFILTER) { GraphicsFilterIndex = GetItemByte(&sgl.ItemDataPtr); sgl.GlobalGraphicsFilterIndex = GraphicsFilterIndex; sgl.GraphicsFilterList[GraphicsFilterIndex].InUse = GuiLib_GRAPHICS_FILTER_USED; sgl.GraphicsFilterList[GraphicsFilterIndex].SourceLayerIndexNo = GetItemWord(&sgl.ItemDataPtr); sgl.GraphicsFilterList[GraphicsFilterIndex].DestLayerIndexNo = GetItemWord(&sgl.ItemDataPtr); sgl.GraphicsFilterList[GraphicsFilterIndex].ContAtLayerIndexNo = GetItemWord(&sgl.ItemDataPtr); for (I = 0; I <= 9; I++) { B1 = GetItemByte(&sgl.ItemDataPtr); if (B1 == 0) { sgl.GraphicsFilterList[GraphicsFilterIndex].ParVarType[I] = GuiLib_VAR_NONE; sgl.GraphicsFilterList[GraphicsFilterIndex].ParVarPtr[I] = 0; sgl.GraphicsFilterList[GraphicsFilterIndex].ParValueNum[I] = GetItemLong(&sgl.ItemDataPtr); } else { PtrIdx = GetItemWord(&sgl.ItemDataPtr); if (PtrIdx >= GuiStruct_VarPtrCnt) PtrIdx = 0; sgl.GraphicsFilterList[GraphicsFilterIndex].ParVarType[I] = ReadByte(GuiStruct_VarTypeList[PtrIdx]); sgl.GraphicsFilterList[GraphicsFilterIndex].ParVarPtr[I] = (void*)ReadWord(GuiStruct_VarPtrList[PtrIdx]); sgl.GraphicsFilterList[GraphicsFilterIndex].ParValueNum[I] = 0; } } } #endif #ifdef GuiConst_ITEM_CHECKBOX_INUSE if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_CHECKBOX) { sgl.CurItem.CompPars.CompCheckBox.Style = GetItemByte(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompCheckBox.Size = GetItemByte(&sgl.ItemDataPtr); switch (sgl.CurItem.CompPars.CompCheckBox.Style) { case GuiLib_CHECKBOX_ICON: sgl.CurItem.CompPars.CompCheckBox.IconPtr = (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; #ifdef GuiConst_CHARMODE_ANSI sgl.ItemDataPtr++; #else sgl.ItemDataPtr += 2; #endif sgl.CurItem.CompPars.CompCheckBox.IconFont = GetItemByte(&sgl.ItemDataPtr) + 1; sgl.CurItem.CompPars.CompCheckBox.IconOffsetX = GetItemWord(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompCheckBox.IconOffsetY = GetItemWord(&sgl.ItemDataPtr); break; case GuiLib_CHECKBOX_BITMAP: sgl.CurItem.CompPars.CompCheckBox.BitmapIndex = GetItemWord(&sgl.ItemDataPtr); B1 = GetItemByte(&sgl.ItemDataPtr); #ifdef GuiConst_BITMAP_SUPPORT_ON sgl.CurItem.CompPars.CompCheckBox.BitmapIsTransparent = (B1 & 0x01); if (sgl.CurItem.CompPars.CompCheckBox.BitmapIsTransparent) #ifdef GuiConst_COLOR_DEPTH_1 sgl.CurItem.CompPars.CompCheckBox.BitmapTranspColor = (B1 >> 1) & 0x01; #else sgl.CurItem.CompPars.CompCheckBox.BitmapTranspColor = GetItemColor(&sgl.ItemDataPtr); #endif #else sgl.CurItem.CompPars.CompCheckBox.BitmapIsTransparent = 0; #endif break; } sgl.CurItem.CompPars.CompCheckBox.MarkStyle = GetItemByte(&sgl.ItemDataPtr); if (sgl.CurItem.CompPars.CompCheckBox.MarkStyle != GuiLib_CHECKBOX_MARK_BITMAP) { B1 = GetItemByte(&sgl.ItemDataPtr); switch (B1 & 0x07) { case GuiLib_COLOR_NOCHANGE: sgl.CurItem.CompPars.CompCheckBox.MarkColor = sgl.CurItem.ForeColor; sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = sgl.CurItem.ForeColorIndex; break; case GuiLib_COLOR_FORE: sgl.CurItem.CompPars.CompCheckBox.MarkColor = GuiConst_PIXEL_ON; sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = 0xFFFF; break; case GuiLib_COLOR_BACK: sgl.CurItem.CompPars.CompCheckBox.MarkColor = GuiConst_PIXEL_OFF; sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = 0xFFFF; break; case GuiLib_COLOR_OTHER: sgl.CurItem.CompPars.CompCheckBox.MarkColor = (GuiConst_INTCOLOR) GetItemColor(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = 0xFFFF; break; case GuiLib_COLOR_INVERT: sgl.CurItem.CompPars.CompCheckBox.MarkColor = TmpBackColor; sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = TmpBackColIdx; break; case GuiLib_COLOR_TRANSP: break; case GuiLib_COLOR_TABLE: sgl.CurItem.CompPars.CompCheckBox.MarkColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = 0xFFFF; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR*)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) { sgl.CurItem.CompPars.CompCheckBox.MarkColor = GuiConst_PIXEL_ON; sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = 0xFFFF; } else { sgl.CurItem.CompPars.CompCheckBox.MarkColor = *ColVarPtr; sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = ColVarPtrIdx; } break; } } switch (sgl.CurItem.CompPars.CompCheckBox.MarkStyle) { case GuiLib_CHECKBOX_MARK_ICON: sgl.CurItem.CompPars.CompCheckBox.MarkIconPtr = (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; #ifdef GuiConst_CHARMODE_ANSI sgl.ItemDataPtr++; #else sgl.ItemDataPtr += 2; #endif sgl.CurItem.CompPars.CompCheckBox.MarkIconFont = GetItemByte(&sgl.ItemDataPtr) + 1; sgl.CurItem.CompPars.CompCheckBox.MarkOffsetX = GetItemWord(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompCheckBox.MarkOffsetY = GetItemWord(&sgl.ItemDataPtr); break; case GuiLib_CHECKBOX_MARK_BITMAP: sgl.CurItem.CompPars.CompCheckBox.MarkBitmapIndex = GetItemWord(&sgl.ItemDataPtr); B1 = GetItemByte(&sgl.ItemDataPtr); #ifdef GuiConst_BITMAP_SUPPORT_ON sgl.CurItem.CompPars.CompCheckBox.MarkBitmapIsTransparent = (B1 & 0x01); if (sgl.CurItem.CompPars.CompCheckBox.MarkBitmapIsTransparent) #ifdef GuiConst_COLOR_DEPTH_1 sgl.CurItem.CompPars.CompCheckBox.MarkBitmapTranspColor = (B1 >> 1) & 0x01; #else sgl.CurItem.CompPars.CompCheckBox.MarkBitmapTranspColor = GetItemColor(&sgl.ItemDataPtr); #endif #else sgl.CurItem.CompPars.CompCheckBox.MarkBitmapIsTransparent = 0; #endif sgl.CurItem.CompPars.CompCheckBox.MarkOffsetX = GetItemWord(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompCheckBox.MarkOffsetY = GetItemWord(&sgl.ItemDataPtr); break; } } #endif #ifdef GuiConst_ITEM_RADIOBUTTON_INUSE if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_RADIOBUTTON) { sgl.CurItem.CompPars.CompRadioButton.Style = GetItemByte(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompRadioButton.Size = GetItemByte(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompRadioButton.Count = GetItemByte(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompRadioButton.InterDistance = GetItemWord(&sgl.ItemDataPtr); switch (sgl.CurItem.CompPars.CompRadioButton.Style) { case GuiLib_RADIOBUTTON_ICON: sgl.CurItem.CompPars.CompRadioButton.IconPtr = (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; #ifdef GuiConst_CHARMODE_ANSI sgl.ItemDataPtr++; #else sgl.ItemDataPtr += 2; #endif sgl.CurItem.CompPars.CompRadioButton.IconFont = GetItemByte(&sgl.ItemDataPtr) + 1; sgl.CurItem.CompPars.CompRadioButton.IconOffsetX = GetItemWord(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompRadioButton.IconOffsetY = GetItemWord(&sgl.ItemDataPtr); break; case GuiLib_RADIOBUTTON_BITMAP: sgl.CurItem.CompPars.CompRadioButton.BitmapIndex = GetItemWord(&sgl.ItemDataPtr); B1 = GetItemByte(&sgl.ItemDataPtr); #ifdef GuiConst_BITMAP_SUPPORT_ON sgl.CurItem.CompPars.CompRadioButton.BitmapIsTransparent = (B1 & 0x01); if (sgl.CurItem.CompPars.CompRadioButton.BitmapIsTransparent) #ifdef GuiConst_COLOR_DEPTH_1 sgl.CurItem.CompPars.CompRadioButton.BitmapTranspColor = (B1 >> 1) & 0x01; #else sgl.CurItem.CompPars.CompRadioButton.BitmapTranspColor = GetItemColor(&sgl.ItemDataPtr); #endif #else sgl.CurItem.CompPars.CompRadioButton.BitmapIsTransparent = 0; #endif break; } sgl.CurItem.CompPars.CompRadioButton.MarkStyle = GetItemByte(&sgl.ItemDataPtr); if (sgl.CurItem.CompPars.CompRadioButton.MarkStyle != GuiLib_RADIOBUTTON_MARK_BITMAP) { B1 = GetItemByte(&sgl.ItemDataPtr); switch (B1 & 0x07) { case GuiLib_COLOR_NOCHANGE: sgl.CurItem.CompPars.CompRadioButton.MarkColor = sgl.CurItem.ForeColor; sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = sgl.CurItem.ForeColorIndex; break; case GuiLib_COLOR_FORE: sgl.CurItem.CompPars.CompRadioButton.MarkColor = GuiConst_PIXEL_ON; sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = 0xFFFF; break; case GuiLib_COLOR_BACK: sgl.CurItem.CompPars.CompRadioButton.MarkColor = GuiConst_PIXEL_OFF; sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = 0xFFFF; break; case GuiLib_COLOR_OTHER: sgl.CurItem.CompPars.CompRadioButton.MarkColor = (GuiConst_INTCOLOR) GetItemColor(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = 0xFFFF; break; case GuiLib_COLOR_INVERT: sgl.CurItem.CompPars.CompRadioButton.MarkColor = TmpBackColor; sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = TmpBackColIdx; break; case GuiLib_COLOR_TRANSP: break; case GuiLib_COLOR_TABLE: sgl.CurItem.CompPars.CompRadioButton.MarkColor = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = 0xFFFF; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) { sgl.CurItem.CompPars.CompRadioButton.MarkColor = GuiConst_PIXEL_ON; sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = 0xFFFF; } else { sgl.CurItem.CompPars.CompRadioButton.MarkColor = *ColVarPtr; sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = ColVarPtrIdx; } break; } } switch (sgl.CurItem.CompPars.CompRadioButton.MarkStyle) { case GuiLib_RADIOBUTTON_MARK_ICON: sgl.CurItem.CompPars.CompRadioButton.MarkIconPtr = (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; #ifdef GuiConst_CHARMODE_ANSI sgl.ItemDataPtr++; #else sgl.ItemDataPtr += 2; #endif sgl.CurItem.CompPars.CompRadioButton.MarkIconFont = GetItemByte(&sgl.ItemDataPtr) + 1; sgl.CurItem.CompPars.CompRadioButton.MarkOffsetX = GetItemWord(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompRadioButton.MarkOffsetY = GetItemWord(&sgl.ItemDataPtr); break; case GuiLib_RADIOBUTTON_MARK_BITMAP: sgl.CurItem.CompPars.CompRadioButton.MarkBitmapIndex = GetItemWord(&sgl.ItemDataPtr); B1 = GetItemByte(&sgl.ItemDataPtr); #ifdef GuiConst_BITMAP_SUPPORT_ON sgl.CurItem.CompPars.CompRadioButton.MarkBitmapIsTransparent = (B1 & 0x01); if (sgl.CurItem.CompPars.CompRadioButton.MarkBitmapIsTransparent) #ifdef GuiConst_COLOR_DEPTH_1 sgl.CurItem.CompPars.CompRadioButton.MarkBitmapTranspColor = (B1 >> 1) & 0x01; #else sgl.CurItem.CompPars.CompRadioButton.MarkBitmapTranspColor = GetItemColor(&sgl.ItemDataPtr); #endif #else sgl.CurItem.CompPars.CompRadioButton.MarkBitmapIsTransparent = 0; #endif sgl.CurItem.CompPars.CompRadioButton.MarkOffsetX = GetItemWord(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompRadioButton.MarkOffsetY = GetItemWord(&sgl.ItemDataPtr); break; } } #endif #ifdef GuiConst_ITEM_BUTTON_INUSE if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_BUTTON) { sgl.CurItem.CompPars.CompButton.Layout = GetItemByte(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompButton.BodyStyle = GetItemByte(&sgl.ItemDataPtr); if ((sgl.CurItem.CompPars.CompButton.BodyStyle == GuiLib_BUTTON_BODY_ICON) || (sgl.CurItem.CompPars.CompButton.BodyStyle == GuiLib_BUTTON_BODY_BITMAP)) { sgl.CurItem.CompPars.CompButton.BodyLikeUp = GetItemByte(&sgl.ItemDataPtr); for (I = 0; I < 3; I++) if ((I == 0) || ((I == 1) && !(sgl.CurItem.CompPars.CompButton.BodyLikeUp & 0x01)) || ((I == 2) && !(sgl.CurItem.CompPars.CompButton.BodyLikeUp & 0x02))) { switch (sgl.CurItem.CompPars.CompButton.BodyStyle) { case GuiLib_BUTTON_BODY_ICON: sgl.CurItem.CompPars.CompButton.BodyIconPtr[I] = (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; #ifdef GuiConst_CHARMODE_ANSI sgl.ItemDataPtr++; #else sgl.ItemDataPtr += 2; #endif sgl.CurItem.CompPars.CompButton.BodyIconFont[I] = GetItemByte(&sgl.ItemDataPtr) + 1; sgl.CurItem.CompPars.CompButton.BodyIconOffsetX[I] = GetItemWord(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompButton.BodyIconOffsetY[I] = GetItemWord(&sgl.ItemDataPtr); break; case GuiLib_BUTTON_BODY_BITMAP: sgl.CurItem.CompPars.CompButton.BodyBitmapIndex[I] = GetItemWord(&sgl.ItemDataPtr); B1 = GetItemByte(&sgl.ItemDataPtr); #ifdef GuiConst_BITMAP_SUPPORT_ON sgl.CurItem.CompPars.CompButton.BodyBitmapIsTransparent[I] = (B1 & 0x01); if (sgl.CurItem.CompPars.CompButton.BodyBitmapIsTransparent[I]) #ifdef GuiConst_COLOR_DEPTH_1 sgl.CurItem.CompPars.CompButton.BodyBitmapTranspColor[I] = (B1 >> 1) & 0x01; #else sgl.CurItem.CompPars.CompButton.BodyBitmapTranspColor[I] = GetItemColor(&sgl.ItemDataPtr); #endif #else sgl.CurItem.CompPars.CompButton.BodyBitmapIsTransparent[I] = 0; #endif break; } } else { switch (sgl.CurItem.CompPars.CompButton.BodyStyle) { case GuiLib_BUTTON_BODY_ICON: sgl.CurItem.CompPars.CompButton.BodyIconPtr[I] = sgl.CurItem.CompPars.CompButton.BodyIconPtr[0]; sgl.CurItem.CompPars.CompButton.BodyIconFont[I] = sgl.CurItem.CompPars.CompButton.BodyIconFont[0]; sgl.CurItem.CompPars.CompButton.BodyIconOffsetX[I] = sgl.CurItem.CompPars.CompButton.BodyIconOffsetX[0]; sgl.CurItem.CompPars.CompButton.BodyIconOffsetY[I] = sgl.CurItem.CompPars.CompButton.BodyIconOffsetY[0]; break; case GuiLib_BUTTON_BODY_BITMAP: sgl.CurItem.CompPars.CompButton.BodyBitmapIndex[I] = sgl.CurItem.CompPars.CompButton.BodyBitmapIndex[0]; sgl.CurItem.CompPars.CompButton.BodyBitmapIsTransparent[I] = sgl.CurItem.CompPars.CompButton.BodyBitmapIsTransparent[0]; sgl.CurItem.CompPars.CompButton.BodyBitmapTranspColor[I] = sgl.CurItem.CompPars.CompButton.BodyBitmapTranspColor[0]; break; } } } if (sgl.CurItem.CompPars.CompButton.Layout != GuiLib_BUTTON_LAYOUT_GLYPH) { sgl.CurItem.CompPars.CompButton.TextLikeUp = GetItemByte(&sgl.ItemDataPtr); for (I = 0; I < 3; I++) { if ((I == 0) || ((I == 1) && !(sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x04)) || ((I == 2) && !(sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x08))) { B1 = GetItemByte(&sgl.ItemDataPtr); switch (B1 & 0x07) { case GuiLib_COLOR_NOCHANGE: sgl.CurItem.CompPars.CompButton.TextColor[I] = sgl.CurItem.ForeColor; sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = sgl.CurItem.ForeColorIndex; break; case GuiLib_COLOR_FORE: sgl.CurItem.CompPars.CompButton.TextColor[I] = GuiConst_PIXEL_ON; sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = 0xFFFF; break; case GuiLib_COLOR_BACK: sgl.CurItem.CompPars.CompButton.TextColor[I] = GuiConst_PIXEL_OFF; sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = 0xFFFF; break; case GuiLib_COLOR_OTHER: sgl.CurItem.CompPars.CompButton.TextColor[I] = (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = 0xFFFF; break; case GuiLib_COLOR_INVERT: sgl.CurItem.CompPars.CompButton.TextColor[I] = TmpBackColor; sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = TmpBackColIdx; break; case GuiLib_COLOR_TRANSP: break; case GuiLib_COLOR_TABLE: sgl.CurItem.CompPars.CompButton.TextColor[I] = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = 0xFFFF; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR*)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) { sgl.CurItem.CompPars.CompButton.TextColor[I] = GuiConst_PIXEL_ON; sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = 0xFFFF; } else { sgl.CurItem.CompPars.CompButton.TextColor[I] = *ColVarPtr; sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = ColVarPtrIdx; } break; } B1 = GetItemByte(&sgl.ItemDataPtr); if (B1 & 0x04) sgl.CurItem.TextPar[I].BitFlags |= GuiLib_BITFLAG_UNDERLINE; else sgl.CurItem.TextPar[I].BitFlags &= ~GuiLib_BITFLAG_UNDERLINE; B1 = B1 & 0x03; if (B1 != GuiLib_PS_NOCHANGE) sgl.CurItem.TextPar[I].Ps = B1; } else { sgl.CurItem.CompPars.CompButton.TextColor[I] = sgl.CurItem.CompPars.CompButton.TextColor[0]; sgl.CurItem.TextPar[I] = sgl.CurItem.TextPar[0]; } } } if (sgl.CurItem.CompPars.CompButton.Layout != GuiLib_BUTTON_LAYOUT_TEXT) { sgl.CurItem.CompPars.CompButton.GlyphStyle = GetItemByte(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompButton.GlyphLikeUp = GetItemByte(&sgl.ItemDataPtr); for (I = 0; I < 3; I++) if ((I == 0) || ((I == 1) && !(sgl.CurItem.CompPars.CompButton.GlyphLikeUp & 0x01)) || ((I == 2) && !(sgl.CurItem.CompPars.CompButton.GlyphLikeUp & 0x02))) { switch (sgl.CurItem.CompPars.CompButton.GlyphStyle) { case GuiLib_BUTTON_GLYPH_ICON: B1 = GetItemByte(&sgl.ItemDataPtr); switch (B1 & 0x07) { case GuiLib_COLOR_NOCHANGE: sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = sgl.CurItem.ForeColor; sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = sgl.CurItem.ForeColorIndex; break; case GuiLib_COLOR_FORE: sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = GuiConst_PIXEL_ON; sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = 0xFFFF; break; case GuiLib_COLOR_BACK: sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = GuiConst_PIXEL_OFF; sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = 0xFFFF; break; case GuiLib_COLOR_OTHER: sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = 0xFFFF; break; case GuiLib_COLOR_INVERT: sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = TmpBackColor; sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = TmpBackColIdx; break; case GuiLib_COLOR_TRANSP: break; case GuiLib_COLOR_TABLE: sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = 0xFFFF; break; case GuiLib_COLOR_VAR: ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) ColVarPtrIdx = 0; ColVarPtr = (GuiConst_INTCOLOR*)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); if (ColVarPtr == 0) { sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = GuiConst_PIXEL_ON; sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = 0xFFFF; } else { sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = *ColVarPtr; sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = ColVarPtrIdx; } break; } sgl.CurItem.CompPars.CompButton.GlyphIconPtr[I] = (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; #ifdef GuiConst_CHARMODE_ANSI sgl.ItemDataPtr++; #else sgl.ItemDataPtr += 2; #endif sgl.CurItem.CompPars.CompButton.GlyphIconFont[I] = GetItemByte(&sgl.ItemDataPtr) + 1; sgl.CurItem.CompPars.CompButton.GlyphIconOffsetX[I] = GetItemWord(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompButton.GlyphIconOffsetY[I] = GetItemWord(&sgl.ItemDataPtr); break; case GuiLib_BUTTON_GLYPH_BITMAP: sgl.CurItem.CompPars.CompButton.GlyphBitmapIndex[I] = GetItemWord(&sgl.ItemDataPtr); B1 = GetItemByte(&sgl.ItemDataPtr); #ifdef GuiConst_BITMAP_SUPPORT_ON sgl.CurItem.CompPars.CompButton.GlyphBitmapIsTransparent[I] = (B1 & 0x01); if (sgl.CurItem.CompPars.CompButton.GlyphBitmapIsTransparent[I]) #ifdef GuiConst_COLOR_DEPTH_1 sgl.CurItem.CompPars.CompButton.GlyphBitmapTranspColor[I] = (B1 >> 1) & 0x01; #else sgl.CurItem.CompPars.CompButton.GlyphBitmapTranspColor[I] = GetItemColor(&sgl.ItemDataPtr); #endif #else sgl.CurItem.CompPars.CompButton.GlyphBitmapIsTransparent[I] = 0; #endif sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetX[I] = GetItemWord(&sgl.ItemDataPtr); sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetY[I] = GetItemWord(&sgl.ItemDataPtr); break; } } else { switch (sgl.CurItem.CompPars.CompButton.GlyphStyle) { case GuiLib_BUTTON_GLYPH_ICON: sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = sgl.CurItem.CompPars.CompButton.GlyphIconColor[0]; sgl.CurItem.CompPars.CompButton.GlyphIconPtr[I] = sgl.CurItem.CompPars.CompButton.GlyphIconPtr[0]; sgl.CurItem.CompPars.CompButton.GlyphIconFont[I] = sgl.CurItem.CompPars.CompButton.GlyphIconFont[0]; sgl.CurItem.CompPars.CompButton.GlyphIconOffsetX[I] = sgl.CurItem.CompPars.CompButton.GlyphIconOffsetX[0]; sgl.CurItem.CompPars.CompButton.GlyphIconOffsetY[I] = sgl.CurItem.CompPars.CompButton.GlyphIconOffsetY[0]; break; case GuiLib_BUTTON_GLYPH_BITMAP: sgl.CurItem.CompPars.CompButton.GlyphBitmapIndex[I] = sgl.CurItem.CompPars.CompButton.GlyphBitmapIndex[0]; sgl.CurItem.CompPars.CompButton.GlyphBitmapIsTransparent[I] = sgl.CurItem.CompPars.CompButton.GlyphBitmapIsTransparent[0]; sgl.CurItem.CompPars.CompButton.GlyphBitmapTranspColor[I] = sgl.CurItem.CompPars.CompButton.GlyphBitmapTranspColor[0]; sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetX[I] = sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetX[0]; sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetY[I] = sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetY[0]; break; } } } } #endif #ifdef GuiConst_ITEM_PANEL_INUSE if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_PANEL) { sgl.CurItem.CompPars.CompPanel.Style = GetItemByte(&sgl.ItemDataPtr); } #endif if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + GuiLib_ITEMBIT_TEXTBLOCK)) || (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_BUTTON))) { if (sgl.CommonByte4 & 0x80) { #ifdef GuiConst_LANGUAGE_ALL_ACTIVE N = GuiConst_LANGUAGE_CNT; W1 = LanguageIndex; #else N = GuiConst_LANGUAGE_ACTIVE_CNT; W1 = ReadWord(GuiFont_LanguageIndex[LanguageIndex]); #endif } else { N = 1; W1 = 0; } J = 0; for (I = 0; I < sgl.CurItem.TextCnt; I++) { #ifndef GuiConst_REMOTE_TEXT_DATA TxtSum1 = 0; TxtSum2 = 0; #endif for (X = 0; X < N; X++) { #ifdef GuiConst_REMOTE_TEXT_DATA Ti = GetItemWord(&sgl.ItemDataPtr); if (X == W1) { sgl.CurItem.TextLength[J] = GetRemoteText(Ti); sgl.CurItem.TextIndex[J] = Ti; sgl.CurItem.TextPtr[J] = &sgl.GuiLib_RemoteTextBuffer[0]; } #else TxtSize = GetItemByte(&sgl.ItemDataPtr); if (TxtSize == 0xFF) TxtSize = GetItemWord(&sgl.ItemDataPtr); if (X == W1) { sgl.CurItem.TextLength[J] = GuiLib_GET_MIN(TxtSize, GuiConst_MAX_TEXT_LEN); #ifdef GuiConst_REMOTE_STRUCT_DATA TxtReadSize = sgl.CurItem.TextLength[J] + 1; #ifndef GuiConst_CHARMODE_ANSI TxtReadSize *= 2; #endif #endif } TxtSize++; #ifndef GuiConst_CHARMODE_ANSI TxtSize *= 2; #endif #ifndef GuiConst_REMOTE_TEXT_DATA if (X < W1) TxtSum1 += TxtSize; else TxtSum2 += TxtSize; #endif #endif // GuiConst_REMOTE_TEXT_DATA } #ifndef GuiConst_REMOTE_TEXT_DATA #ifdef GuiConst_REMOTE_STRUCT_DATA sgl.RemoteStructOffset += TxtSum1; GuiLib_RemoteDataReadBlock( sgl.RemoteStructOffset, TxtReadSize, (GuiConst_INT8U*)&sgl.GuiLib_RemoteStructText); sgl.CurItem.TextOffset[J] = sgl.RemoteStructOffset; sgl.CurItem.TextPtr[J] = (GuiConst_TEXT PrefixGeneric *)&sgl.GuiLib_RemoteStructText; sgl.RemoteStructOffset += TxtSum2; #else sgl.ItemDataPtr += TxtSum1; sgl.CurItem.TextPtr[J] = (GuiConst_TEXT PrefixGeneric *)(sgl.ItemDataPtr); sgl.ItemDataPtr += TxtSum2; #endif #endif // GuiConst_REMOTE_TEXT_DATA #ifdef GuiConst_ITEM_BUTTON_INUSE if ((sgl.ItemTypeBit2 & GuiLib_ITEMBIT_BUTTON) && (((I == 0) && (sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x01)) || ((I == 1) && (sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x02)))) J++; #endif J++; } #ifdef GuiConst_ITEM_BUTTON_INUSE if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_BUTTON) { if (sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x01) { sgl.CurItem.TextLength[1] = sgl.CurItem.TextLength[0]; sgl.CurItem.TextPtr[1] = sgl.CurItem.TextPtr[0]; #ifdef GuiConst_REMOTE_TEXT_DATA sgl.CurItem.TextIndex[1] = sgl.CurItem.TextIndex[0]; #else #ifdef GuiConst_REMOTE_STRUCT_DATA sgl.CurItem.TextOffset[1] = sgl.CurItem.TextOffset[0]; #endif #endif } if (sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x02) { sgl.CurItem.TextLength[2] = sgl.CurItem.TextLength[0]; sgl.CurItem.TextPtr[2] = sgl.CurItem.TextPtr[0]; #ifdef GuiConst_REMOTE_TEXT_DATA sgl.CurItem.TextIndex[2] = sgl.CurItem.TextIndex[0]; #else #ifdef GuiConst_REMOTE_STRUCT_DATA sgl.CurItem.TextOffset[2] = sgl.CurItem.TextOffset[0]; #endif #endif } } #endif } } //------------------------------------------------------------------------------ static GuiConst_INT16S VarStrCmp( GuiConst_INT8U PrefixLocate *S1, GuiConst_INT8U PrefixLocate *S2) { GuiConst_INT16S len = 0; #ifdef GuiConst_CHARMODE_ANSI do { if ((*S1 == 0) && (*S2 == 0)) return (0); else if (*S1 == 0) return (-1); else if (*S2 == 0) return (1); else if (*S1 < *S2) return (-1); else if (*S1 > *S2) return (1); S1++; S2++; } while ((len++) < GuiConst_AUTOREDRAW_MAX_VAR_SIZE); #else GuiConst_INT16U T1, T2, T3; do { T1 = *S1++; T3 = *S1++; T1 |= T3 << 8; T2 = *S2++; T3 = *S2++; T2 |= T3 << 8; if (T1 < T2) return (-1); else if (T1 > T2) return (1); else if (T1 == 0) return (0); } while ((len++) < GuiConst_AUTOREDRAW_MAX_VAR_SIZE); #endif return (1); } //------------------------------------------------------------------------------ void AutoRedraw_Init(void) { GuiConst_INT16S I; for (I=0;I<GuiConst_MAX_DYNAMIC_ITEMS;I++) { sgl.AutoRedraw[I].Next = -1; sgl.AutoRedraw[I].Prev = -1; sgl.AutoRedraw[I].Valid = ITEM_NONE; } sgl.AutoRedrawCount = 0; sgl.AutoRedrawFirst = -1; sgl.AutoRedrawLast = -1; sgl.AutoRedrawCount = 0; sgl.AutoRedrawParent = -1; sgl.AutoRedrawUpdate = GuiLib_FALSE; sgl.AutoRedrawInsertPoint = GuiConst_MAX_DYNAMIC_ITEMS; sgl.AutoRedrawLatest = -1; return; } //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_Reset(void) { sgl.AutoRedrawNext = sgl.AutoRedrawFirst; return sgl.AutoRedrawNext; } //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_GetNext(GuiConst_INT16S I) { GuiConst_INT16S N, result; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return -1; result = -1; N = sgl.AutoRedraw[I].Next; while ((N >= 0) && (N < GuiConst_MAX_DYNAMIC_ITEMS)) { if ((sgl.AutoRedraw[N].Valid & ITEM_AUTOREDRAW) == ITEM_AUTOREDRAW) { result = N; break; } else if (sgl.AutoRedraw[N].Valid == ITEM_NONE) break; else { N = sgl.AutoRedraw[N].Next; if ((N < 0) || (N >= GuiConst_MAX_DYNAMIC_ITEMS)) break; } } return result; } //------------------------------------------------------------------------------ GuiConst_INT8S AutoRedraw_ItemIsStruct(GuiConst_INT16S I) { if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return GuiLib_FALSE; if ((sgl.AutoRedraw[I].Valid & ITEM_AUTOREDRAW) == ITEM_AUTOREDRAW) { if ((sgl.AutoRedraw[I].Item.ItemType == GuiLib_ITEM_STRUCTARRAY) || (sgl.AutoRedraw[I].Item.ItemType == GuiLib_ITEM_STRUCTCOND)) return GuiLib_TRUE; else return GuiLib_FALSE; } else return GuiLib_FALSE; } //------------------------------------------------------------------------------ GuiConst_INT8S AutoRedraw_GetLevel(GuiConst_INT16S I) { if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return -1; if ((sgl.AutoRedraw[I].Valid & ITEM_AUTOREDRAW) == ITEM_AUTOREDRAW) return sgl.AutoRedraw[I].Level; else return 0; } //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_Add(PrefixLocate GuiLib_ItemRec * PrefixLocate Item, GuiConst_INT16S Struct, GuiConst_INT8U Level) { GuiConst_INT16S I, N; I = -1; if (sgl.AutoRedrawCount < GuiConst_MAX_DYNAMIC_ITEMS) { if (sgl.AutoRedrawFirst == -1) { I = 0; sgl.AutoRedrawFirst = 0; sgl.AutoRedrawLast = -1; sgl.AutoRedrawNext = 0; } else { for (N=0;N<GuiConst_MAX_DYNAMIC_ITEMS;N++) { if (sgl.AutoRedraw[N].Valid == ITEM_NONE) { I = N; break; } } } if (I >= 0) { sgl.AutoRedraw[I].Next = -1; sgl.AutoRedraw[I].Prev = sgl.AutoRedrawLast; sgl.AutoRedraw[I].Valid = ITEM_AUTOREDRAW; sgl.AutoRedraw[I].Parent = sgl.AutoRedrawParent; sgl.AutoRedraw[I].Level = Level; memcpy(&sgl.AutoRedraw[I].Item, Item, sizeof(GuiLib_ItemRec)); memcpy(&sgl.AutoRedraw[I].Memory, &sgl.Memory, sizeof(ItemMemory)); if ((sgl.AutoRedrawLast >= 0) && (sgl.AutoRedrawLast < GuiConst_MAX_DYNAMIC_ITEMS)) sgl.AutoRedraw[sgl.AutoRedrawLast].Next = I; sgl.AutoRedrawCount++; sgl.AutoRedrawLast = I; sgl.AutoRedrawLatest = I; } } return I; } //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_Insert(PrefixLocate GuiLib_ItemRec * PrefixLocate Item, GuiConst_INT16S Struct, GuiConst_INT8U Level) { GuiConst_INT16S I, N; if ((sgl.AutoRedrawFirst == -1) || (sgl.AutoRedrawInsertPoint >= GuiConst_MAX_DYNAMIC_ITEMS)) { return AutoRedraw_Add(Item, Struct, Level); } if (sgl.AutoRedrawCount < GuiConst_MAX_DYNAMIC_ITEMS) { I = -1; for (N=0;N<GuiConst_MAX_DYNAMIC_ITEMS;N++) { if (sgl.AutoRedraw[N].Valid == ITEM_NONE) { I = N; break; } } } else return -1; if (I >= 0) { if (sgl.AutoRedrawInsertPoint < 0) { sgl.AutoRedraw[I].Next = sgl.AutoRedrawFirst; sgl.AutoRedraw[I].Prev = -1; } else { sgl.AutoRedraw[I].Next = sgl.AutoRedraw[sgl.AutoRedrawInsertPoint].Next; sgl.AutoRedraw[I].Prev = sgl.AutoRedrawInsertPoint; sgl.AutoRedraw[sgl.AutoRedraw[I].Prev].Next = I; } if (sgl.AutoRedraw[I].Next != -1) sgl.AutoRedraw[sgl.AutoRedraw[I].Next].Prev = I; sgl.AutoRedraw[I].Valid = ITEM_AUTOREDRAW; sgl.AutoRedraw[I].Parent = sgl.AutoRedrawParent; sgl.AutoRedraw[I].Level = Level; memcpy(&sgl.AutoRedraw[I].Item, Item, sizeof(GuiLib_ItemRec)); memcpy(&sgl.AutoRedraw[I].Memory, &sgl.Memory, sizeof(ItemMemory)); if (sgl.AutoRedraw[I].Next == -1) sgl.AutoRedrawLast = I; if (sgl.AutoRedraw[I].Prev == -1) sgl.AutoRedrawFirst = I; sgl.AutoRedrawInsertPoint = I; sgl.AutoRedrawLatest = I; sgl.AutoRedrawCount++; } return I; } //------------------------------------------------------------------------------ void AutoRedraw_UpdateDrawn(GuiConst_INT16S I, PrefixLocate GuiLib_ItemRec * PrefixLocate Item) { if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return; if (sgl.AutoRedraw[I].Valid != ITEM_NONE) { sgl.AutoRedraw[I].Item.Drawn = Item->Drawn; sgl.AutoRedraw[I].Item.DrawnX1 = Item->DrawnX1; sgl.AutoRedraw[I].Item.DrawnY1 = Item->DrawnY1; sgl.AutoRedraw[I].Item.DrawnX2 = Item->DrawnX2; sgl.AutoRedraw[I].Item.DrawnY2 = Item->DrawnY2; } return; } //------------------------------------------------------------------------------ void AutoRedraw_Delete(GuiConst_INT16S I) { if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return; if (sgl.AutoRedraw[I].Valid != ITEM_NONE) { if (sgl.AutoRedrawLast == I) sgl.AutoRedrawLast = sgl.AutoRedraw[I].Prev; if (sgl.AutoRedrawFirst == I) sgl.AutoRedrawFirst = sgl.AutoRedraw[I].Next; if (sgl.AutoRedraw[I].Prev != -1) sgl.AutoRedraw[sgl.AutoRedraw[I].Prev].Next = sgl.AutoRedraw[I].Next; if (sgl.AutoRedraw[I].Next != -1) sgl.AutoRedraw[sgl.AutoRedraw[I].Next].Prev = sgl.AutoRedraw[I].Prev; sgl.AutoRedraw[I].Next = -1; sgl.AutoRedraw[I].Prev = -1; sgl.AutoRedraw[I].Valid = ITEM_NONE; sgl.AutoRedrawCount--; } return; } //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_DeleteStruct(GuiConst_INT16S Struct_id) { GuiConst_INT16S I, N, X; I = sgl.AutoRedrawFirst; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return -1; if ((Struct_id < 0) || (Struct_id >= GuiConst_MAX_DYNAMIC_ITEMS)) return -1; if (sgl.AutoRedraw[Struct_id].Valid == ITEM_NONE) return -1; while (sgl.AutoRedraw[I].Valid != ITEM_NONE) { N = sgl.AutoRedraw[I].Next; if (sgl.AutoRedraw[I].Parent == Struct_id) { X = AutoRedraw_DeleteStruct(I); if ((X >= 0) && (X < GuiConst_MAX_DYNAMIC_ITEMS)) N = sgl.AutoRedraw[X].Next; } I = N; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) break; } sgl.AutoRedrawInsertPoint = sgl.AutoRedraw[Struct_id].Prev; AutoRedraw_Delete(Struct_id); if (sgl.AutoRedrawInsertPoint >= 0) return sgl.AutoRedrawInsertPoint; else return sgl.AutoRedrawFirst; } //------------------------------------------------------------------------------ void AutoRedraw_Destroy(void) { GuiConst_INT16S I; for (I=0;I<GuiConst_MAX_DYNAMIC_ITEMS;I++) { sgl.AutoRedraw[I].Next = -1; sgl.AutoRedraw[I].Prev = -1; sgl.AutoRedraw[I].Valid = ITEM_NONE; } sgl.AutoRedrawCount = 0; sgl.AutoRedrawFirst = -1; sgl.AutoRedrawLast = -1; sgl.AutoRedrawCount = 0; sgl.AutoRedrawParent = -1; sgl.AutoRedrawUpdate = GuiLib_FALSE; sgl.AutoRedrawInsertPoint = GuiConst_MAX_DYNAMIC_ITEMS; sgl.AutoRedrawLatest = -1; return; } //------------------------------------------------------------------------------ PrefixLocate GuiLib_ItemRec *AutoRedraw_GetItem(GuiConst_INT16S I) { if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return NULL; else return &sgl.AutoRedraw[I].Item; } //------------------------------------------------------------------------------ PrefixLocate ItemMemory *AutoRedraw_GetItemMemory(GuiConst_INT16S I) { if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return NULL; else return &sgl.AutoRedraw[I].Memory; } //------------------------------------------------------------------------------ void AutoRedraw_UpdateOnChange(GuiConst_INT16S I) { if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return; if ((sgl.AutoRedraw[I].Valid & ITEM_AUTOREDRAW) == ITEM_AUTOREDRAW) { sgl.AutoRedraw[I].ValueSize = 0; if (sgl.AutoRedraw[I].Item.UpdateType == GuiLib_UPDATE_ON_CHANGE) { if (sgl.AutoRedraw[I].Item.VarPtr != 0) { switch (sgl.AutoRedraw[I].Item.VarType) { case GuiLib_VAR_BOOL: case GuiLib_VAR_UNSIGNED_CHAR: case GuiLib_VAR_SIGNED_CHAR: sgl.AutoRedraw[I].ValueSize = 1; break; case GuiLib_VAR_UNSIGNED_INT: case GuiLib_VAR_SIGNED_INT: sgl.AutoRedraw[I].ValueSize = 2; break; case GuiLib_VAR_UNSIGNED_LONG: case GuiLib_VAR_SIGNED_LONG: case GuiLib_VAR_FLOAT: sgl.AutoRedraw[I].ValueSize = 4; break; case GuiLib_VAR_DOUBLE: sgl.AutoRedraw[I].ValueSize = 8; break; case GuiLib_VAR_COLOR: sgl.AutoRedraw[I].ValueSize = GuiConst_PIXEL_BYTE_SIZE; break; case GuiLib_VAR_STRING: sgl.AutoRedraw[I].ValueSize = GuiLib_AUTOREDRAW_MAX_VAR_SIZE; break; default: sgl.AutoRedraw[I].ValueSize = 0; } if (sgl.AutoRedraw[I].ValueSize > 0) { memcpy(&sgl.AutoRedraw[I].Value[0], sgl.AutoRedraw[I].Item.VarPtr, sgl.AutoRedraw[I].ValueSize); } } } } return; } //------------------------------------------------------------------------------ GuiConst_INT8S RefreshColorVariable(GuiConst_INTCOLOR PrefixLocate *comp, GuiConst_INT16U idx) { GuiConst_INTCOLOR PrefixLocate *ColVarPtr; GuiConst_INTCOLOR ColVal; GuiConst_INT8S changed = GuiLib_FALSE; if (idx != 0xFFFF) { if (idx < GuiStruct_VarPtrCnt) { ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[idx]); if (ColVarPtr != 0) { ColVal = *ColVarPtr; if (*comp != ColVal) { *comp = ColVal; changed = GuiLib_TRUE; } } } } return changed; } //------------------------------------------------------------------------------ GuiConst_INT8S AutoRedraw_VarChanged(GuiConst_INT16S I) { GuiLib_ItemRecPtr Item; GuiConst_INT16S VarChange; GuiConst_INT8S changed; changed = GuiLib_FALSE; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return changed; if ((sgl.AutoRedraw[I].Valid & ITEM_AUTOREDRAW) == ITEM_AUTOREDRAW) { Item = &sgl.AutoRedraw[I].Item; if (Item->UpdateType == GuiLib_UPDATE_ON_CHANGE) { if ((Item->TextPar[0].BitFlags & GuiLib_BITFLAG_INUSE) && (Item->VarPtr != 0)) { VarChange = 0; if (sgl.AutoRedraw[I].ValueSize > 0) { if (Item->VarType == GuiLib_VAR_STRING) VarChange = VarStrCmp(&sgl.AutoRedraw[I].Value[0], (GuiConst_INT8U PrefixLocate *)Item->VarPtr); else VarChange = memcmp(&sgl.AutoRedraw[I].Value[0], Item->VarPtr, sgl.AutoRedraw[I].ValueSize); } if ((sgl.AutoRedraw[I].ValueSize == 0) || (VarChange != 0)) changed = GuiLib_TRUE; } } else changed = GuiLib_TRUE; changed |= RefreshColorVariable(&Item->ForeColor, Item->ForeColorIndex); changed |= RefreshColorVariable(&Item->BackColor, Item->BackColorIndex); changed |= RefreshColorVariable(&Item->BarForeColor, Item->BarForeColorIndex); changed |= RefreshColorVariable(&Item->BarBackColor, Item->BarBackColorIndex); #ifdef GuiConst_ITEM_RADIOBUTTON_INUSE if (Item->ItemType == GuiLib_ITEM_RADIOBUTTON) changed |= RefreshColorVariable(&Item->CompPars.CompRadioButton.MarkColor, Item->CompPars.CompRadioButton.MarkColorIndex); #endif #ifdef GuiConst_ITEM_CHECKBOX_INUSE if (Item->ItemType == GuiLib_ITEM_CHECKBOX) changed |= RefreshColorVariable(&Item->CompPars.CompCheckBox.MarkColor, Item->CompPars.CompCheckBox.MarkColorIndex); #endif #ifdef GuiConst_ITEM_BUTTON_INUSE if (Item->ItemType == GuiLib_ITEM_BUTTON) { GuiConst_INT32S state; if ((sgl.CurItem.VarPtr != 0) && (sgl.CurItem.VarType != GuiLib_VAR_STRING)) { state = ReadVar(Item->VarPtr, Item->VarType); if ((state < GuiLib_BUTTON_STATE_UP) || (state > GuiLib_BUTTON_STATE_DISABLED)) state = GuiLib_BUTTON_STATE_UP; } else state = GuiLib_BUTTON_STATE_UP; changed |= RefreshColorVariable(&Item->CompPars.CompButton.TextColor[state], Item->CompPars.CompButton.TextColorIndex[state]); changed |= RefreshColorVariable(&Item->CompPars.CompButton.GlyphIconColor[state], Item->CompPars.CompButton.GlyphIconColorIndex[state]); } #endif } return changed; } //------------------------------------------------------------------------------ void AutoRedraw_UpdateVar(GuiConst_INT16S I) { if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return; if ((sgl.AutoRedraw[I].Valid & ITEM_AUTOREDRAW) == ITEM_AUTOREDRAW) { if (sgl.AutoRedraw[I].Item.UpdateType == GuiLib_UPDATE_ON_CHANGE) { if ((sgl.AutoRedraw[I].Item.TextPar[0].BitFlags & GuiLib_BITFLAG_INUSE) && (sgl.AutoRedraw[I].Item.VarPtr != 0)) { if (sgl.AutoRedraw[I].ValueSize > 0) { memcpy(&sgl.AutoRedraw[I].Value[0], sgl.AutoRedraw[I].Item.VarPtr, sgl.AutoRedraw[I].ValueSize); } } } } return; } #ifdef GuiConst_TEXTBOX_FIELDS_ON //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_InsertTextBox(PrefixLocate GuiLib_ItemRec * PrefixLocate Item, GuiConst_INT16S Struct, GuiConst_INT8U Level) { GuiConst_INT16S I; I = AutoRedraw_Insert(Item, Struct, Level); if (I != -1) sgl.AutoRedraw[I].Valid = ITEM_TEXTBOX; return I; }//------------------------------------------------------------------------------ void AutoRedraw_SetAsTextBox(GuiConst_INT16S I) { if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return; if (sgl.AutoRedraw[I].Valid != ITEM_NONE) sgl.AutoRedraw[I].Valid |= ITEM_TEXTBOX; return; } //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_GetTextBox(GuiConst_INT8S T, GuiConst_INT16S I) { if (I == -1) { I = sgl.AutoRedrawFirst; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return -1; } else { if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return -1; if (sgl.AutoRedraw[I].Valid == ITEM_NONE) return -1; I = sgl.AutoRedraw[I].Next; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return -1; } while (I != -1) { if (sgl.AutoRedraw[I].Valid != ITEM_NONE) { if ((sgl.AutoRedraw[I].Valid & ITEM_TEXTBOX) == ITEM_TEXTBOX) { if (sgl.AutoRedraw[I].Item.CompPars.CompTextBox.ScrollIndex == T) break; } I = sgl.AutoRedraw[I].Next; } else return -1; } return I; } #endif // GuiConst_TEXTBOX_FIELDS_ON #ifdef GuiConst_CURSOR_SUPPORT_ON //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_InsertCursor(PrefixLocate GuiLib_ItemRec * PrefixLocate Item, GuiConst_INT16S Struct, GuiConst_INT8U Level) { GuiConst_INT16S I; I = AutoRedraw_Insert(Item, Struct, Level); if (I != -1) sgl.AutoRedraw[I].Valid = ITEM_CURSOR; return I; } //------------------------------------------------------------------------------ void AutoRedraw_SetAsCursor(GuiConst_INT16S I) { if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return; if (sgl.AutoRedraw[I].Valid != ITEM_NONE) sgl.AutoRedraw[I].Valid |= ITEM_CURSOR; return; } //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_IsOnlyCursor(GuiConst_INT16S I) { GuiConst_INT16S ret = GuiLib_FALSE; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return ret; if (sgl.AutoRedraw[I].Valid == ITEM_CURSOR) ret = GuiLib_TRUE; return ret; } //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_GetCursor(GuiConst_INT8S C, GuiConst_INT16S I) { if (I == -1) { I = sgl.AutoRedrawFirst; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return -1; } else { if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return -1; if (sgl.AutoRedraw[I].Valid == ITEM_NONE) return -1; I = sgl.AutoRedraw[I].Next; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return -1; } while (I != -1) { if (sgl.AutoRedraw[I].Valid != ITEM_NONE) { if ((sgl.AutoRedraw[I].Valid & ITEM_CURSOR) == ITEM_CURSOR) { if (sgl.AutoRedraw[I].Item.CursorFieldNo == C) break; } I = sgl.AutoRedraw[I].Next; } else return -1; } return I; } //------------------------------------------------------------------------------ GuiConst_INT8S AutoRedraw_GetCursorNumber(GuiConst_INT16S I) { if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return -1; if (sgl.AutoRedraw[I].Valid & ITEM_CURSOR) return sgl.AutoRedraw[I].Item.CursorFieldNo; return -1; } //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_GetFirstCursor(void) { GuiConst_INT16S I, result; GuiConst_INT8S C; I = sgl.AutoRedrawFirst; C = 0x7F; result = -1; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return result; while (I != -1) { if (sgl.AutoRedraw[I].Valid != ITEM_NONE) { if ((sgl.AutoRedraw[I].Valid & ITEM_CURSOR) == ITEM_CURSOR) { if (sgl.AutoRedraw[I].Item.CursorFieldNo < C) { C = sgl.AutoRedraw[I].Item.CursorFieldNo; result = I; } } I = sgl.AutoRedraw[I].Next; } else return -1; } return result; } //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_GetLastCursor(void) { GuiConst_INT16S I, result; GuiConst_INT8S C; I = sgl.AutoRedrawFirst; C = 0; result = -1; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return result; while (I != -1) { if (sgl.AutoRedraw[I].Valid != ITEM_NONE) { if ((sgl.AutoRedraw[I].Valid & ITEM_CURSOR) == ITEM_CURSOR) { if (sgl.AutoRedraw[I].Item.CursorFieldNo > C) { C = sgl.AutoRedraw[I].Item.CursorFieldNo; result = I; } } I = sgl.AutoRedraw[I].Next; } else return -1; } return result; } //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_GetNextCursor(GuiConst_INT8S C) { GuiConst_INT16S I, result; GuiConst_INT8S closest; I = sgl.AutoRedrawFirst; closest = 0x7f; result = -1; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return result; while (I != -1) { if (sgl.AutoRedraw[I].Valid != ITEM_NONE) { if ((sgl.AutoRedraw[I].Valid & ITEM_CURSOR) == ITEM_CURSOR) { if ((sgl.AutoRedraw[I].Item.CursorFieldNo > C) && (sgl.AutoRedraw[I].Item.CursorFieldNo <= closest)) { closest = sgl.AutoRedraw[I].Item.CursorFieldNo; result = I; } } I = sgl.AutoRedraw[I].Next; } else return -1; } return result; } //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_GetPrevCursor(GuiConst_INT8S C) { GuiConst_INT16S I, result; GuiConst_INT8S closest; I = sgl.AutoRedrawFirst; closest = 0; result = -1; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return result; while (I != -1) { if (sgl.AutoRedraw[I].Valid != ITEM_NONE) { if ((sgl.AutoRedraw[I].Valid & ITEM_CURSOR) == ITEM_CURSOR) { if ((sgl.AutoRedraw[I].Item.CursorFieldNo < C) && (sgl.AutoRedraw[I].Item.CursorFieldNo >= closest)) { closest = sgl.AutoRedraw[I].Item.CursorFieldNo; result = I; } } I = sgl.AutoRedraw[I].Next; } else return -1; } return result; } //------------------------------------------------------------------------------ GuiConst_INT16S AutoRedraw_CheckCursorInheritance(GuiConst_INT16S N) { GuiConst_INT16S I, J, result; GuiConst_INT16S cursor_id; if (GuiLib_ActiveCursorFieldNo < 0) return -1; if ((N < 0) || (N >= GuiConst_MAX_DYNAMIC_ITEMS)) return -1; if (sgl.AutoRedraw[N].Valid == ITEM_NONE) return -1; I = sgl.AutoRedraw[N].Parent; result = 1; while (result == 1) { if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) { result = -1; break; } if (sgl.AutoRedraw[I].Valid != ITEM_NONE) { if ((sgl.AutoRedraw[I].Valid & ITEM_CURSOR) == ITEM_CURSOR) { cursor_id = sgl.AutoRedraw[I].Item.CursorFieldNo; if (cursor_id == GuiLib_ActiveCursorFieldNo) { result = 0; break; } } J = sgl.AutoRedraw[I].Parent; if (J == I) result = -1; I = J; } else { result = -1; break; } } return result; } //------------------------------------------------------------------------------ void AutoRedraw_ResetCursor(void) { GuiConst_INT16S I; I = sgl.AutoRedrawFirst; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) return; while ((sgl.AutoRedraw[I].Valid & ITEM_AUTOREDRAW) == ITEM_AUTOREDRAW) { sgl.AutoRedraw[I].Item.CursorFieldNo = GuiLib_NO_CURSOR; I = sgl.AutoRedraw[I].Next; if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) break; } return; } #endif // GuiConst_CURSOR_SUPPORT_ON