Single Photo displayed on LPC4088

Dependencies:   DMBasicGUI DMSupport

Committer:
jmitc91516
Date:
Fri Jul 28 14:19:12 2017 +0000
Revision:
0:9140ec6aa604
Simple application that displays a single photograph on the LPC4088 display.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmitc91516 0:9140ec6aa604 1 /* ************************************************************************ */
jmitc91516 0:9140ec6aa604 2 /* */
jmitc91516 0:9140ec6aa604 3 /* (C)2004-2015 IBIS Solutions ApS */
jmitc91516 0:9140ec6aa604 4 /* sales@easyGUI.com */
jmitc91516 0:9140ec6aa604 5 /* www.easyGUI.com */
jmitc91516 0:9140ec6aa604 6 /* */
jmitc91516 0:9140ec6aa604 7 /* v6.0.9.005 */
jmitc91516 0:9140ec6aa604 8 /* */
jmitc91516 0:9140ec6aa604 9 /* GuiLib.c include file - do NOT reference it in your linker setup */
jmitc91516 0:9140ec6aa604 10 /* */
jmitc91516 0:9140ec6aa604 11 /* ************************************************************************ */
jmitc91516 0:9140ec6aa604 12
jmitc91516 0:9140ec6aa604 13 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 14 void GuiLib_ClearPositionCallbacks(void)
jmitc91516 0:9140ec6aa604 15 {
jmitc91516 0:9140ec6aa604 16 GuiConst_INT16U I;
jmitc91516 0:9140ec6aa604 17
jmitc91516 0:9140ec6aa604 18 for (I = 0; I < GuiConst_POSCALLBACK_CNT; I++)
jmitc91516 0:9140ec6aa604 19 sgl.PosCallbacks[I].InUse = 0;
jmitc91516 0:9140ec6aa604 20 }
jmitc91516 0:9140ec6aa604 21
jmitc91516 0:9140ec6aa604 22 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 23 void GuiLib_SetPositionCallbackFunc(
jmitc91516 0:9140ec6aa604 24 GuiConst_INT16U IndexNo,
jmitc91516 0:9140ec6aa604 25 void (*PosCallbackFunc) (GuiConst_INT16U IndexNo,
jmitc91516 0:9140ec6aa604 26 GuiConst_INT16S X,
jmitc91516 0:9140ec6aa604 27 GuiConst_INT16S Y))
jmitc91516 0:9140ec6aa604 28 {
jmitc91516 0:9140ec6aa604 29 GuiConst_INT32S I, J;
jmitc91516 0:9140ec6aa604 30
jmitc91516 0:9140ec6aa604 31 J = -1;
jmitc91516 0:9140ec6aa604 32 for (I = 0; I < GuiConst_POSCALLBACK_CNT; I++)
jmitc91516 0:9140ec6aa604 33 if (sgl.PosCallbacks[I].IndexNo == IndexNo)
jmitc91516 0:9140ec6aa604 34 {
jmitc91516 0:9140ec6aa604 35 J = I;
jmitc91516 0:9140ec6aa604 36 break;
jmitc91516 0:9140ec6aa604 37 }
jmitc91516 0:9140ec6aa604 38 if (J == -1)
jmitc91516 0:9140ec6aa604 39 for (I = 0; I < GuiConst_POSCALLBACK_CNT; I++)
jmitc91516 0:9140ec6aa604 40 if (!sgl.PosCallbacks[I].InUse)
jmitc91516 0:9140ec6aa604 41 {
jmitc91516 0:9140ec6aa604 42 J = I;
jmitc91516 0:9140ec6aa604 43 break;
jmitc91516 0:9140ec6aa604 44 }
jmitc91516 0:9140ec6aa604 45
jmitc91516 0:9140ec6aa604 46 if (J >= 0)
jmitc91516 0:9140ec6aa604 47 {
jmitc91516 0:9140ec6aa604 48 sgl.PosCallbacks[J].InUse = 1;
jmitc91516 0:9140ec6aa604 49 sgl.PosCallbacks[J].PosCallbackFunc = PosCallbackFunc;
jmitc91516 0:9140ec6aa604 50 sgl.PosCallbacks[J].IndexNo = IndexNo;
jmitc91516 0:9140ec6aa604 51 }
jmitc91516 0:9140ec6aa604 52 }
jmitc91516 0:9140ec6aa604 53
jmitc91516 0:9140ec6aa604 54 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 55 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 56 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 57 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 58 static void DrawCursorItem(
jmitc91516 0:9140ec6aa604 59 GuiConst_INT8U CursorVisible)
jmitc91516 0:9140ec6aa604 60 {
jmitc91516 0:9140ec6aa604 61 #ifndef GuiConst_CURSOR_FIELDS_OFF
jmitc91516 0:9140ec6aa604 62 GuiConst_INT16S RemCursorFieldNo, I;
jmitc91516 0:9140ec6aa604 63 PrefixLocate ItemMemory RemMemory;
jmitc91516 0:9140ec6aa604 64 PrefixLocate ItemMemory *PrefixLocate CursorMemory;
jmitc91516 0:9140ec6aa604 65 PrefixLocate GuiLib_ItemRec *CursorItem;
jmitc91516 0:9140ec6aa604 66
jmitc91516 0:9140ec6aa604 67 if (sgl.CursorInUse && (GuiLib_ActiveCursorFieldNo >= 0))
jmitc91516 0:9140ec6aa604 68 {
jmitc91516 0:9140ec6aa604 69 I = -1;
jmitc91516 0:9140ec6aa604 70 memcpy(&RemMemory, &sgl.Memory, sizeof(ItemMemory));
jmitc91516 0:9140ec6aa604 71 while ((I = AutoRedraw_GetCursor(GuiLib_ActiveCursorFieldNo, I)) != -1)
jmitc91516 0:9140ec6aa604 72 {
jmitc91516 0:9140ec6aa604 73 CursorItem = AutoRedraw_GetItem(I);
jmitc91516 0:9140ec6aa604 74 CursorMemory = AutoRedraw_GetItemMemory(I);
jmitc91516 0:9140ec6aa604 75
jmitc91516 0:9140ec6aa604 76 if ((CursorItem == NULL) || (CursorMemory == NULL))
jmitc91516 0:9140ec6aa604 77 return;
jmitc91516 0:9140ec6aa604 78
jmitc91516 0:9140ec6aa604 79 memcpy(&sgl.CurItem, CursorItem, sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 80 memcpy(&sgl.Memory, CursorMemory, sizeof(ItemMemory));
jmitc91516 0:9140ec6aa604 81
jmitc91516 0:9140ec6aa604 82
jmitc91516 0:9140ec6aa604 83 #ifdef GuiConst_ITEM_SCROLLBOX_INUSE
jmitc91516 0:9140ec6aa604 84 if ((sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_FIELDSCROLLBOX) &&
jmitc91516 0:9140ec6aa604 85 (sgl.ScrollBoxesAry[sgl.CurItem.CursorScrollBoxIndex].ScrollLineDataFunc != 0))
jmitc91516 0:9140ec6aa604 86 sgl.ScrollBoxesAry[sgl.CurItem.CursorScrollBoxIndex].ScrollLineDataFunc(
jmitc91516 0:9140ec6aa604 87 sgl.ScrollBoxesAry[sgl.CurItem.CursorScrollBoxIndex].MarkerStartLine[0]);
jmitc91516 0:9140ec6aa604 88 #endif // GuiConst_ITEM_SCROLLBOX_INUSE
jmitc91516 0:9140ec6aa604 89
jmitc91516 0:9140ec6aa604 90 if (!CursorVisible)
jmitc91516 0:9140ec6aa604 91 {
jmitc91516 0:9140ec6aa604 92 RemCursorFieldNo = GuiLib_ActiveCursorFieldNo;
jmitc91516 0:9140ec6aa604 93 GuiLib_ActiveCursorFieldNo = -1;
jmitc91516 0:9140ec6aa604 94 }
jmitc91516 0:9140ec6aa604 95 else
jmitc91516 0:9140ec6aa604 96 RemCursorFieldNo = 0;
jmitc91516 0:9140ec6aa604 97
jmitc91516 0:9140ec6aa604 98 sgl.SwapColors = 0;
jmitc91516 0:9140ec6aa604 99 #ifdef GuiConst_ITEM_SCROLLBOX_INUSE
jmitc91516 0:9140ec6aa604 100 if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_FIELDSCROLLBOX)
jmitc91516 0:9140ec6aa604 101 ScrollBox_DrawScrollLine(sgl.CurItem.CursorScrollBoxIndex,
jmitc91516 0:9140ec6aa604 102 sgl.ScrollBoxesAry[sgl.CurItem.CursorScrollBoxIndex].MarkerStartLine[0]);
jmitc91516 0:9140ec6aa604 103 else
jmitc91516 0:9140ec6aa604 104 #endif // GuiConst_ITEM_SCROLLBOX_INUSE
jmitc91516 0:9140ec6aa604 105 {
jmitc91516 0:9140ec6aa604 106 #ifdef GuiConst_BITMAP_SUPPORT_ON
jmitc91516 0:9140ec6aa604 107 UpdateBackgroundBitmap();
jmitc91516 0:9140ec6aa604 108 #endif
jmitc91516 0:9140ec6aa604 109
jmitc91516 0:9140ec6aa604 110 DrawItem(GuiLib_COL_INVERT_IF_CURSOR);
jmitc91516 0:9140ec6aa604 111 }
jmitc91516 0:9140ec6aa604 112
jmitc91516 0:9140ec6aa604 113 if (!CursorVisible)
jmitc91516 0:9140ec6aa604 114 GuiLib_ActiveCursorFieldNo = RemCursorFieldNo;
jmitc91516 0:9140ec6aa604 115 }
jmitc91516 0:9140ec6aa604 116 memcpy(&sgl.Memory, &RemMemory, sizeof(ItemMemory));
jmitc91516 0:9140ec6aa604 117 }
jmitc91516 0:9140ec6aa604 118 #else // GuiConst_CURSOR_FIELDS_OFF
jmitc91516 0:9140ec6aa604 119 CursorVisible = 0;
jmitc91516 0:9140ec6aa604 120 #endif // GuiConst_CURSOR_FIELDS_OFF
jmitc91516 0:9140ec6aa604 121 }
jmitc91516 0:9140ec6aa604 122
jmitc91516 0:9140ec6aa604 123 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 124 void GuiLib_Cursor_Hide(void)
jmitc91516 0:9140ec6aa604 125 {
jmitc91516 0:9140ec6aa604 126 #ifndef GuiConst_CURSOR_FIELDS_OFF
jmitc91516 0:9140ec6aa604 127 GuiDisplay_Lock();
jmitc91516 0:9140ec6aa604 128 DrawCursorItem(0);
jmitc91516 0:9140ec6aa604 129 GuiDisplay_Unlock();
jmitc91516 0:9140ec6aa604 130 GuiLib_ActiveCursorFieldNo = -1;
jmitc91516 0:9140ec6aa604 131 #endif // GuiConst_CURSOR_FIELDS_OFF
jmitc91516 0:9140ec6aa604 132 }
jmitc91516 0:9140ec6aa604 133
jmitc91516 0:9140ec6aa604 134 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 135 GuiConst_INT8U GuiLib_IsCursorFieldInUse(
jmitc91516 0:9140ec6aa604 136 GuiConst_INT16S AskCursorFieldNo)
jmitc91516 0:9140ec6aa604 137 {
jmitc91516 0:9140ec6aa604 138 #ifndef GuiConst_CURSOR_FIELDS_OFF
jmitc91516 0:9140ec6aa604 139 if (AskCursorFieldNo >= 0)
jmitc91516 0:9140ec6aa604 140 {
jmitc91516 0:9140ec6aa604 141 if (AutoRedraw_GetCursor(AskCursorFieldNo, -1) != -1)
jmitc91516 0:9140ec6aa604 142 return 1;
jmitc91516 0:9140ec6aa604 143 }
jmitc91516 0:9140ec6aa604 144
jmitc91516 0:9140ec6aa604 145 return 0;
jmitc91516 0:9140ec6aa604 146 #else // GuiConst_CURSOR_FIELDS_OFF
jmitc91516 0:9140ec6aa604 147 return 0;
jmitc91516 0:9140ec6aa604 148 #endif // GuiConst_CURSOR_FIELDS_OFF
jmitc91516 0:9140ec6aa604 149 }
jmitc91516 0:9140ec6aa604 150
jmitc91516 0:9140ec6aa604 151 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 152 GuiConst_INT8U GuiLib_Cursor_Select(
jmitc91516 0:9140ec6aa604 153 GuiConst_INT16S NewCursorFieldNo)
jmitc91516 0:9140ec6aa604 154 {
jmitc91516 0:9140ec6aa604 155 #ifndef GuiConst_CURSOR_FIELDS_OFF
jmitc91516 0:9140ec6aa604 156 if (NewCursorFieldNo == -1)
jmitc91516 0:9140ec6aa604 157 {
jmitc91516 0:9140ec6aa604 158 GuiLib_Cursor_Hide();
jmitc91516 0:9140ec6aa604 159 return 0;
jmitc91516 0:9140ec6aa604 160 }
jmitc91516 0:9140ec6aa604 161 else if (NewCursorFieldNo >= 0)
jmitc91516 0:9140ec6aa604 162 {
jmitc91516 0:9140ec6aa604 163 if (AutoRedraw_GetCursor(NewCursorFieldNo, -1) != -1)
jmitc91516 0:9140ec6aa604 164 {
jmitc91516 0:9140ec6aa604 165 GuiDisplay_Lock();
jmitc91516 0:9140ec6aa604 166
jmitc91516 0:9140ec6aa604 167 DrawCursorItem(0);
jmitc91516 0:9140ec6aa604 168 GuiLib_ActiveCursorFieldNo = NewCursorFieldNo;
jmitc91516 0:9140ec6aa604 169 DrawCursorItem(1);
jmitc91516 0:9140ec6aa604 170
jmitc91516 0:9140ec6aa604 171 GuiDisplay_Unlock();
jmitc91516 0:9140ec6aa604 172
jmitc91516 0:9140ec6aa604 173 return 1;
jmitc91516 0:9140ec6aa604 174 }
jmitc91516 0:9140ec6aa604 175 }
jmitc91516 0:9140ec6aa604 176
jmitc91516 0:9140ec6aa604 177 return 0;
jmitc91516 0:9140ec6aa604 178 #else
jmitc91516 0:9140ec6aa604 179 NewCursorFieldNo = 0;
jmitc91516 0:9140ec6aa604 180 return 0;
jmitc91516 0:9140ec6aa604 181 #endif
jmitc91516 0:9140ec6aa604 182 }
jmitc91516 0:9140ec6aa604 183
jmitc91516 0:9140ec6aa604 184 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 185 GuiConst_INT8U GuiLib_Cursor_Down(void)
jmitc91516 0:9140ec6aa604 186 {
jmitc91516 0:9140ec6aa604 187 #ifndef GuiConst_CURSOR_FIELDS_OFF
jmitc91516 0:9140ec6aa604 188 GuiConst_INT16S NewCursorFieldNo, Index;
jmitc91516 0:9140ec6aa604 189
jmitc91516 0:9140ec6aa604 190 Index = AutoRedraw_GetNextCursor(GuiLib_ActiveCursorFieldNo);
jmitc91516 0:9140ec6aa604 191
jmitc91516 0:9140ec6aa604 192 NewCursorFieldNo = AutoRedraw_GetCursorNumber(Index);
jmitc91516 0:9140ec6aa604 193
jmitc91516 0:9140ec6aa604 194 #ifdef GuiConst_CURSOR_MODE_WRAP_AROUND
jmitc91516 0:9140ec6aa604 195 if ((NewCursorFieldNo == GuiLib_ActiveCursorFieldNo)
jmitc91516 0:9140ec6aa604 196 || (Index == -1))
jmitc91516 0:9140ec6aa604 197 return GuiLib_Cursor_Home();
jmitc91516 0:9140ec6aa604 198 #else
jmitc91516 0:9140ec6aa604 199 if (Index == -1)
jmitc91516 0:9140ec6aa604 200 return 0;
jmitc91516 0:9140ec6aa604 201 #endif
jmitc91516 0:9140ec6aa604 202
jmitc91516 0:9140ec6aa604 203 GuiLib_Cursor_Select(NewCursorFieldNo);
jmitc91516 0:9140ec6aa604 204
jmitc91516 0:9140ec6aa604 205 return 1;
jmitc91516 0:9140ec6aa604 206 #else
jmitc91516 0:9140ec6aa604 207 return 0;
jmitc91516 0:9140ec6aa604 208 #endif
jmitc91516 0:9140ec6aa604 209 }
jmitc91516 0:9140ec6aa604 210
jmitc91516 0:9140ec6aa604 211 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 212 GuiConst_INT8U GuiLib_Cursor_Up(void)
jmitc91516 0:9140ec6aa604 213 {
jmitc91516 0:9140ec6aa604 214 #ifndef GuiConst_CURSOR_FIELDS_OFF
jmitc91516 0:9140ec6aa604 215 GuiConst_INT16S NewCursorFieldNo, Index;
jmitc91516 0:9140ec6aa604 216
jmitc91516 0:9140ec6aa604 217 Index = AutoRedraw_GetPrevCursor(GuiLib_ActiveCursorFieldNo);
jmitc91516 0:9140ec6aa604 218
jmitc91516 0:9140ec6aa604 219 NewCursorFieldNo = AutoRedraw_GetCursorNumber(Index);
jmitc91516 0:9140ec6aa604 220
jmitc91516 0:9140ec6aa604 221 #ifdef GuiConst_CURSOR_MODE_WRAP_AROUND
jmitc91516 0:9140ec6aa604 222 if ((NewCursorFieldNo == GuiLib_ActiveCursorFieldNo)
jmitc91516 0:9140ec6aa604 223 || (Index == -1))
jmitc91516 0:9140ec6aa604 224 return GuiLib_Cursor_End();
jmitc91516 0:9140ec6aa604 225 #else
jmitc91516 0:9140ec6aa604 226 if (Index == -1)
jmitc91516 0:9140ec6aa604 227 return 0;
jmitc91516 0:9140ec6aa604 228 #endif
jmitc91516 0:9140ec6aa604 229
jmitc91516 0:9140ec6aa604 230 GuiLib_Cursor_Select(NewCursorFieldNo);
jmitc91516 0:9140ec6aa604 231
jmitc91516 0:9140ec6aa604 232 return 1;
jmitc91516 0:9140ec6aa604 233 #else
jmitc91516 0:9140ec6aa604 234 return 0;
jmitc91516 0:9140ec6aa604 235 #endif
jmitc91516 0:9140ec6aa604 236
jmitc91516 0:9140ec6aa604 237 }
jmitc91516 0:9140ec6aa604 238
jmitc91516 0:9140ec6aa604 239 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 240 GuiConst_INT8U GuiLib_Cursor_Home(void)
jmitc91516 0:9140ec6aa604 241 {
jmitc91516 0:9140ec6aa604 242 #ifndef GuiConst_CURSOR_FIELDS_OFF
jmitc91516 0:9140ec6aa604 243 GuiConst_INT16S NewCursorFieldNo, Index;
jmitc91516 0:9140ec6aa604 244
jmitc91516 0:9140ec6aa604 245 Index = AutoRedraw_GetFirstCursor();
jmitc91516 0:9140ec6aa604 246
jmitc91516 0:9140ec6aa604 247 NewCursorFieldNo = AutoRedraw_GetCursorNumber(Index);
jmitc91516 0:9140ec6aa604 248
jmitc91516 0:9140ec6aa604 249 if (NewCursorFieldNo == GuiLib_ActiveCursorFieldNo)
jmitc91516 0:9140ec6aa604 250 return 0;
jmitc91516 0:9140ec6aa604 251
jmitc91516 0:9140ec6aa604 252 GuiLib_Cursor_Select(NewCursorFieldNo);
jmitc91516 0:9140ec6aa604 253
jmitc91516 0:9140ec6aa604 254 return 1;
jmitc91516 0:9140ec6aa604 255 #else
jmitc91516 0:9140ec6aa604 256 return 0;
jmitc91516 0:9140ec6aa604 257 #endif
jmitc91516 0:9140ec6aa604 258 }
jmitc91516 0:9140ec6aa604 259
jmitc91516 0:9140ec6aa604 260 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 261 GuiConst_INT8U GuiLib_Cursor_End(void)
jmitc91516 0:9140ec6aa604 262 {
jmitc91516 0:9140ec6aa604 263 #ifndef GuiConst_CURSOR_FIELDS_OFF
jmitc91516 0:9140ec6aa604 264 GuiConst_INT16S NewCursorFieldNo, Index;
jmitc91516 0:9140ec6aa604 265
jmitc91516 0:9140ec6aa604 266 Index = AutoRedraw_GetLastCursor();
jmitc91516 0:9140ec6aa604 267
jmitc91516 0:9140ec6aa604 268 NewCursorFieldNo = AutoRedraw_GetCursorNumber(Index);
jmitc91516 0:9140ec6aa604 269
jmitc91516 0:9140ec6aa604 270 if (NewCursorFieldNo == GuiLib_ActiveCursorFieldNo)
jmitc91516 0:9140ec6aa604 271 return 0;
jmitc91516 0:9140ec6aa604 272
jmitc91516 0:9140ec6aa604 273 GuiLib_Cursor_Select(NewCursorFieldNo);
jmitc91516 0:9140ec6aa604 274
jmitc91516 0:9140ec6aa604 275 return 1;
jmitc91516 0:9140ec6aa604 276 #else
jmitc91516 0:9140ec6aa604 277 return 0;
jmitc91516 0:9140ec6aa604 278 #endif
jmitc91516 0:9140ec6aa604 279 }
jmitc91516 0:9140ec6aa604 280 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 281 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 282 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 283 #endif // GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 284
jmitc91516 0:9140ec6aa604 285 #ifdef GuiConst_BLINK_SUPPORT_ON
jmitc91516 0:9140ec6aa604 286 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 287 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 288 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 289 static void BlinkBox(void)
jmitc91516 0:9140ec6aa604 290 {
jmitc91516 0:9140ec6aa604 291 if ((sgl.BlinkBoxRate) && (sgl.DisplayWriting))
jmitc91516 0:9140ec6aa604 292 GuiLib_InvertBox(sgl.BlinkBoxX1, sgl.BlinkBoxY1, sgl.BlinkBoxX2, sgl.BlinkBoxY2);
jmitc91516 0:9140ec6aa604 293 sgl.BlinkBoxInverted = !sgl.BlinkBoxInverted;
jmitc91516 0:9140ec6aa604 294 }
jmitc91516 0:9140ec6aa604 295
jmitc91516 0:9140ec6aa604 296 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 297 void GuiLib_BlinkBoxStart(
jmitc91516 0:9140ec6aa604 298 GuiConst_INT16S X1,
jmitc91516 0:9140ec6aa604 299 GuiConst_INT16S Y1,
jmitc91516 0:9140ec6aa604 300 GuiConst_INT16S X2,
jmitc91516 0:9140ec6aa604 301 GuiConst_INT16S Y2,
jmitc91516 0:9140ec6aa604 302 GuiConst_INT16S Rate)
jmitc91516 0:9140ec6aa604 303 {
jmitc91516 0:9140ec6aa604 304 GuiLib_BlinkBoxStop();
jmitc91516 0:9140ec6aa604 305 sgl.BlinkBoxX1 = X1;
jmitc91516 0:9140ec6aa604 306 sgl.BlinkBoxY1 = Y1;
jmitc91516 0:9140ec6aa604 307 sgl.BlinkBoxX2 = X2;
jmitc91516 0:9140ec6aa604 308 sgl.BlinkBoxY2 = Y2;
jmitc91516 0:9140ec6aa604 309 if (Rate < 1)
jmitc91516 0:9140ec6aa604 310 sgl.BlinkBoxRate = 1;
jmitc91516 0:9140ec6aa604 311 else
jmitc91516 0:9140ec6aa604 312 sgl.BlinkBoxRate = Rate;
jmitc91516 0:9140ec6aa604 313 sgl.BlinkBoxState = sgl.BlinkBoxRate;
jmitc91516 0:9140ec6aa604 314 sgl.BlinkBoxInverted = 0;
jmitc91516 0:9140ec6aa604 315 BlinkBox();
jmitc91516 0:9140ec6aa604 316 }
jmitc91516 0:9140ec6aa604 317
jmitc91516 0:9140ec6aa604 318 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 319 void GuiLib_BlinkBoxStop(void)
jmitc91516 0:9140ec6aa604 320 {
jmitc91516 0:9140ec6aa604 321 #ifndef GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 322 GuiConst_INT16U I;
jmitc91516 0:9140ec6aa604 323 #endif
jmitc91516 0:9140ec6aa604 324
jmitc91516 0:9140ec6aa604 325 if (sgl.BlinkBoxRate && sgl.BlinkBoxInverted)
jmitc91516 0:9140ec6aa604 326 BlinkBox();
jmitc91516 0:9140ec6aa604 327 sgl.BlinkBoxRate = 0;
jmitc91516 0:9140ec6aa604 328
jmitc91516 0:9140ec6aa604 329 #ifndef GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 330 for (I = 0; I < GuiConst_BLINK_FIELDS_MAX; I++)
jmitc91516 0:9140ec6aa604 331 if (sgl.BlinkTextItems[I].InUse && sgl.BlinkTextItems[I].Active)
jmitc91516 0:9140ec6aa604 332 GuiLib_BlinkBoxMarkedItemStop(I);
jmitc91516 0:9140ec6aa604 333 #endif
jmitc91516 0:9140ec6aa604 334 }
jmitc91516 0:9140ec6aa604 335
jmitc91516 0:9140ec6aa604 336 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 337 void GuiLib_BlinkBoxMarkedItem(
jmitc91516 0:9140ec6aa604 338 GuiConst_INT16U BlinkFieldNo,
jmitc91516 0:9140ec6aa604 339 GuiConst_INT16U CharNo,
jmitc91516 0:9140ec6aa604 340 GuiConst_INT16S Rate)
jmitc91516 0:9140ec6aa604 341 {
jmitc91516 0:9140ec6aa604 342 #ifndef GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 343 GuiConst_INT16S TextXOfs[GuiConst_MAX_TEXT_LEN + 2];
jmitc91516 0:9140ec6aa604 344 TextParRec TempTextPar;
jmitc91516 0:9140ec6aa604 345 GuiConst_INT8U TempPs;
jmitc91516 0:9140ec6aa604 346 GuiConst_INT16U CharCnt;
jmitc91516 0:9140ec6aa604 347 GuiConst_INT16U TempTextLength;
jmitc91516 0:9140ec6aa604 348 GuiConst_INT8U TempFormatFieldWidth;
jmitc91516 0:9140ec6aa604 349 GuiConst_INT8U TempFormatDecimals;
jmitc91516 0:9140ec6aa604 350 GuiConst_INT8U TempFormatAlignment;
jmitc91516 0:9140ec6aa604 351 GuiConst_INT8U TempFormatFormat;
jmitc91516 0:9140ec6aa604 352 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 353 GuiConst_INT32U PrefixRom TempOfs;
jmitc91516 0:9140ec6aa604 354 GuiConst_INT8U CharHeader[GuiLib_CHR_LINECTRL_OFS];
jmitc91516 0:9140ec6aa604 355 #else // GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 356 GuiConst_INT8U PrefixRom * TempPtr;
jmitc91516 0:9140ec6aa604 357 #endif // GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 358 #ifdef GuiConst_ITEM_TEXTBLOCK_INUSE
jmitc91516 0:9140ec6aa604 359 GuiConst_INT8U CharHeader1[GuiLib_CHR_LINECTRL_OFS];
jmitc91516 0:9140ec6aa604 360 GuiConst_INT8U CharHeader2[GuiLib_CHR_LINECTRL_OFS];
jmitc91516 0:9140ec6aa604 361 GuiConst_INT16S TextCharLineStart[GuiConst_MAX_PARAGRAPH_LINE_CNT];
jmitc91516 0:9140ec6aa604 362 GuiConst_INT16S TextCharLineEnd[GuiConst_MAX_PARAGRAPH_LINE_CNT];
jmitc91516 0:9140ec6aa604 363 GuiConst_INT16S M;
jmitc91516 0:9140ec6aa604 364 GuiConst_INT16S LineCnt;
jmitc91516 0:9140ec6aa604 365 GuiConst_INT16S LineCnt2;
jmitc91516 0:9140ec6aa604 366 GuiConst_INT16S LineLen;
jmitc91516 0:9140ec6aa604 367 GuiConst_INT16S XStart, XEnd;
jmitc91516 0:9140ec6aa604 368 GuiConst_INT16S P2;
jmitc91516 0:9140ec6aa604 369 #endif // GuiConst_ITEM_TEXTBLOCK_INUSE
jmitc91516 0:9140ec6aa604 370 GuiConst_INT16S N;
jmitc91516 0:9140ec6aa604 371 #ifndef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 372 GuiConst_INT16S P1;
jmitc91516 0:9140ec6aa604 373 #endif
jmitc91516 0:9140ec6aa604 374 GuiConst_TEXT PrefixGeneric *CharPtr;
jmitc91516 0:9140ec6aa604 375 GuiConst_INT32S VarValue;
jmitc91516 0:9140ec6aa604 376 GuiConst_INT16S TextPixelLen;
jmitc91516 0:9140ec6aa604 377
jmitc91516 0:9140ec6aa604 378 if ((BlinkFieldNo >= GuiConst_BLINK_FIELDS_MAX) ||
jmitc91516 0:9140ec6aa604 379 !sgl.BlinkTextItems[BlinkFieldNo].InUse)
jmitc91516 0:9140ec6aa604 380 return;
jmitc91516 0:9140ec6aa604 381
jmitc91516 0:9140ec6aa604 382 if (sgl.BlinkTextItems[BlinkFieldNo].Active &&
jmitc91516 0:9140ec6aa604 383 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate &&
jmitc91516 0:9140ec6aa604 384 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted)
jmitc91516 0:9140ec6aa604 385 {
jmitc91516 0:9140ec6aa604 386 if (sgl.DisplayWriting)
jmitc91516 0:9140ec6aa604 387 {
jmitc91516 0:9140ec6aa604 388 GuiLib_InvertBox(sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1,
jmitc91516 0:9140ec6aa604 389 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1,
jmitc91516 0:9140ec6aa604 390 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2,
jmitc91516 0:9140ec6aa604 391 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY2);
jmitc91516 0:9140ec6aa604 392 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted =
jmitc91516 0:9140ec6aa604 393 !sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted;
jmitc91516 0:9140ec6aa604 394 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxLast =
jmitc91516 0:9140ec6aa604 395 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted;
jmitc91516 0:9140ec6aa604 396 }
jmitc91516 0:9140ec6aa604 397 }
jmitc91516 0:9140ec6aa604 398
jmitc91516 0:9140ec6aa604 399 sgl.BlinkTextItems[BlinkFieldNo].Active = 0;
jmitc91516 0:9140ec6aa604 400 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate = 0;
jmitc91516 0:9140ec6aa604 401
jmitc91516 0:9140ec6aa604 402 if ((BlinkFieldNo < GuiConst_BLINK_FIELDS_MAX) &&
jmitc91516 0:9140ec6aa604 403 sgl.BlinkTextItems[BlinkFieldNo].InUse)
jmitc91516 0:9140ec6aa604 404 {
jmitc91516 0:9140ec6aa604 405 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 = sgl.BlinkTextItems[BlinkFieldNo].X1;
jmitc91516 0:9140ec6aa604 406 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2 = sgl.BlinkTextItems[BlinkFieldNo].X2;
jmitc91516 0:9140ec6aa604 407 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1 = sgl.BlinkTextItems[BlinkFieldNo].Y1;
jmitc91516 0:9140ec6aa604 408 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY2 = sgl.BlinkTextItems[BlinkFieldNo].Y2;
jmitc91516 0:9140ec6aa604 409
jmitc91516 0:9140ec6aa604 410 if (sgl.BlinkTextItems[BlinkFieldNo].InUse)
jmitc91516 0:9140ec6aa604 411 {
jmitc91516 0:9140ec6aa604 412 TempTextPar = sgl.CurItem.TextPar[0];
jmitc91516 0:9140ec6aa604 413 TempTextLength = sgl.CurItem.TextLength[0];
jmitc91516 0:9140ec6aa604 414 TempFormatFieldWidth = sgl.CurItem.FormatFieldWidth;
jmitc91516 0:9140ec6aa604 415 TempFormatDecimals = sgl.CurItem.FormatDecimals;
jmitc91516 0:9140ec6aa604 416 TempFormatAlignment = sgl.CurItem.FormatAlignment;
jmitc91516 0:9140ec6aa604 417 TempFormatFormat = sgl.CurItem.FormatFormat;
jmitc91516 0:9140ec6aa604 418
jmitc91516 0:9140ec6aa604 419 sgl.CurItem.FormatFieldWidth = sgl.BlinkTextItems[BlinkFieldNo].FormatFieldWidth;
jmitc91516 0:9140ec6aa604 420 sgl.CurItem.FormatDecimals = sgl.BlinkTextItems[BlinkFieldNo].FormatDecimals;
jmitc91516 0:9140ec6aa604 421 sgl.CurItem.FormatAlignment = sgl.BlinkTextItems[BlinkFieldNo].FormatAlignment;
jmitc91516 0:9140ec6aa604 422 sgl.CurItem.FormatFormat = sgl.BlinkTextItems[BlinkFieldNo].FormatFormat;
jmitc91516 0:9140ec6aa604 423 sgl.CurItem.TextPar[0] = sgl.BlinkTextItems[BlinkFieldNo].TextPar;
jmitc91516 0:9140ec6aa604 424 CharCnt = sgl.BlinkTextItems[BlinkFieldNo].CharCnt;
jmitc91516 0:9140ec6aa604 425 sgl.CurItem.TextLength[0] = CharCnt;
jmitc91516 0:9140ec6aa604 426
jmitc91516 0:9140ec6aa604 427 SetCurFont(sgl.BlinkTextItems[BlinkFieldNo].TextPar.FontIndex);
jmitc91516 0:9140ec6aa604 428
jmitc91516 0:9140ec6aa604 429 if ((sgl.BlinkTextItems[BlinkFieldNo].ItemType == GuiLib_ITEM_TEXT) ||
jmitc91516 0:9140ec6aa604 430 (sgl.BlinkTextItems[BlinkFieldNo].ItemType == GuiLib_ITEM_TEXTBLOCK))
jmitc91516 0:9140ec6aa604 431 {
jmitc91516 0:9140ec6aa604 432 #ifdef GuiConst_CHARMODE_UNICODE
jmitc91516 0:9140ec6aa604 433 ExtractUnicodeString(
jmitc91516 0:9140ec6aa604 434 (GuiConst_INT8U PrefixRom *)sgl.BlinkTextItems[BlinkFieldNo].TextPtr,
jmitc91516 0:9140ec6aa604 435 sgl.CurItem.TextLength[0]);
jmitc91516 0:9140ec6aa604 436 #ifdef GuiConst_ARAB_CHARS_INUSE
jmitc91516 0:9140ec6aa604 437 if (sgl.BlinkTextItems[BlinkFieldNo].TextPar.BitFlags &
jmitc91516 0:9140ec6aa604 438 GuiLib_BITFLAG_REVERSEWRITING)
jmitc91516 0:9140ec6aa604 439 {
jmitc91516 0:9140ec6aa604 440 CharCnt = ArabicCorrection(
jmitc91516 0:9140ec6aa604 441 sgl.UnicodeTextBuf, CharCnt,
jmitc91516 0:9140ec6aa604 442 (sgl.BlinkTextItems[BlinkFieldNo].TextPar.BitFlags &
jmitc91516 0:9140ec6aa604 443 GuiLib_BITFLAG_REVERSEWRITING) > 0);
jmitc91516 0:9140ec6aa604 444 }
jmitc91516 0:9140ec6aa604 445 #endif // GuiConst_ARAB_CHARS_INUSE
jmitc91516 0:9140ec6aa604 446 #endif // GuiConst_CHARMODE_UNICODE
jmitc91516 0:9140ec6aa604 447
jmitc91516 0:9140ec6aa604 448 #ifdef GuiConst_CHARMODE_UNICODE
jmitc91516 0:9140ec6aa604 449 CharPtr = (GuiConst_TEXT PrefixGeneric *)sgl.UnicodeTextBuf;
jmitc91516 0:9140ec6aa604 450 #else // GuiConst_CHARMODE_UNICODE
jmitc91516 0:9140ec6aa604 451 CharPtr = (GuiConst_TEXT PrefixRom *)sgl.BlinkTextItems[BlinkFieldNo].TextPtr;
jmitc91516 0:9140ec6aa604 452 #endif // GuiConst_CHARMODE_UNICODE
jmitc91516 0:9140ec6aa604 453 PrepareText(CharPtr,CharCnt,0);
jmitc91516 0:9140ec6aa604 454 }
jmitc91516 0:9140ec6aa604 455 else
jmitc91516 0:9140ec6aa604 456 {
jmitc91516 0:9140ec6aa604 457 #ifdef GuiConst_DISP_VAR_NOW
jmitc91516 0:9140ec6aa604 458 displayVarNow = 1;
jmitc91516 0:9140ec6aa604 459 #endif
jmitc91516 0:9140ec6aa604 460 if (sgl.BlinkTextItems[BlinkFieldNo].VarType == GuiLib_VAR_STRING)
jmitc91516 0:9140ec6aa604 461 {
jmitc91516 0:9140ec6aa604 462 CharPtr = (GuiConst_TEXT PrefixGeneric *)sgl.BlinkTextItems[BlinkFieldNo].TextPtr;
jmitc91516 0:9140ec6aa604 463 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 464 CharCnt = strlen(CharPtr);
jmitc91516 0:9140ec6aa604 465 #else
jmitc91516 0:9140ec6aa604 466 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 467 CharCnt = GuiLib_UnicodeStrLen((GuiConst_TEXT*)CharPtr);
jmitc91516 0:9140ec6aa604 468 #else // GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 469 CharCnt = GuiLib_UnicodeStrLen(CharPtr);
jmitc91516 0:9140ec6aa604 470 #endif // GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 471 #endif // GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 472 }
jmitc91516 0:9140ec6aa604 473 else
jmitc91516 0:9140ec6aa604 474 {
jmitc91516 0:9140ec6aa604 475 VarValue = ReadVar(sgl.BlinkTextItems[BlinkFieldNo].TextPtr,
jmitc91516 0:9140ec6aa604 476 sgl.BlinkTextItems[BlinkFieldNo].VarType);
jmitc91516 0:9140ec6aa604 477
jmitc91516 0:9140ec6aa604 478 CharCnt =
jmitc91516 0:9140ec6aa604 479 DataNumStr(VarValue, sgl.BlinkTextItems[BlinkFieldNo].VarType, 0);
jmitc91516 0:9140ec6aa604 480
jmitc91516 0:9140ec6aa604 481 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 482 CharPtr = (GuiConst_TEXT PrefixGeneric *) sgl.VarNumTextStr;
jmitc91516 0:9140ec6aa604 483 #else // GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 484 for (P1=0; P1<=CharCnt; P1++)
jmitc91516 0:9140ec6aa604 485 sgl.VarNumUnicodeTextStr[P1] = sgl.VarNumTextStr[P1];
jmitc91516 0:9140ec6aa604 486 CharPtr = (GuiConst_TEXT *) sgl.VarNumUnicodeTextStr;
jmitc91516 0:9140ec6aa604 487 #endif // GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 488 }
jmitc91516 0:9140ec6aa604 489 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 490 strcpy(sgl.AnsiTextBuf, CharPtr);
jmitc91516 0:9140ec6aa604 491 #else // GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 492 GuiLib_UnicodeStrCpy(sgl.UnicodeTextBuf, CharPtr);
jmitc91516 0:9140ec6aa604 493 #endif // GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 494 #ifdef GuiConst_ARAB_CHARS_INUSE
jmitc91516 0:9140ec6aa604 495 if (sgl.BlinkTextItems[BlinkFieldNo].TextPar.BitFlags &
jmitc91516 0:9140ec6aa604 496 GuiLib_BITFLAG_REVERSEWRITING)
jmitc91516 0:9140ec6aa604 497 {
jmitc91516 0:9140ec6aa604 498 CharCnt = ArabicCorrection(
jmitc91516 0:9140ec6aa604 499 sgl.UnicodeTextBuf, CharCnt,
jmitc91516 0:9140ec6aa604 500 (sgl.BlinkTextItems[BlinkFieldNo].TextPar.BitFlags &
jmitc91516 0:9140ec6aa604 501 GuiLib_BITFLAG_REVERSEWRITING) > 0);
jmitc91516 0:9140ec6aa604 502 }
jmitc91516 0:9140ec6aa604 503 #endif // GuiConst_ARAB_CHARS_INUSE
jmitc91516 0:9140ec6aa604 504 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 505 CharPtr = sgl.AnsiTextBuf;
jmitc91516 0:9140ec6aa604 506 #else // GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 507 CharPtr = sgl.UnicodeTextBuf;
jmitc91516 0:9140ec6aa604 508 #endif // GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 509 PrepareText(CharPtr, CharCnt,0);
jmitc91516 0:9140ec6aa604 510
jmitc91516 0:9140ec6aa604 511 #ifdef GuiConst_DISP_VAR_NOW
jmitc91516 0:9140ec6aa604 512 displayVarNow = 0;
jmitc91516 0:9140ec6aa604 513 #endif
jmitc91516 0:9140ec6aa604 514 }
jmitc91516 0:9140ec6aa604 515
jmitc91516 0:9140ec6aa604 516 if (CharNo > CharCnt)
jmitc91516 0:9140ec6aa604 517 {
jmitc91516 0:9140ec6aa604 518 SetCurFont(sgl.CurItem.TextPar[0].FontIndex);
jmitc91516 0:9140ec6aa604 519 sgl.CurItem.TextPar[0] = TempTextPar;
jmitc91516 0:9140ec6aa604 520 sgl.CurItem.TextLength[0] = TempTextLength;
jmitc91516 0:9140ec6aa604 521 sgl.CurItem.FormatFieldWidth = TempFormatFieldWidth;
jmitc91516 0:9140ec6aa604 522 sgl.CurItem.FormatDecimals = TempFormatDecimals;
jmitc91516 0:9140ec6aa604 523 sgl.CurItem.FormatAlignment = TempFormatAlignment;
jmitc91516 0:9140ec6aa604 524 sgl.CurItem.FormatFormat = TempFormatFormat;
jmitc91516 0:9140ec6aa604 525 return;
jmitc91516 0:9140ec6aa604 526 }
jmitc91516 0:9140ec6aa604 527
jmitc91516 0:9140ec6aa604 528 if(CharNo > 0)
jmitc91516 0:9140ec6aa604 529 {
jmitc91516 0:9140ec6aa604 530 #ifdef GuiConst_BLINK_LF_COUNTS
jmitc91516 0:9140ec6aa604 531 if (*(CharPtr + (CharNo - 1)) != GuiLib_LINEFEED)
jmitc91516 0:9140ec6aa604 532 #endif
jmitc91516 0:9140ec6aa604 533 {
jmitc91516 0:9140ec6aa604 534 sgl.BlinkTextItems[BlinkFieldNo].Active = 0;
jmitc91516 0:9140ec6aa604 535 sgl.BlinkTextItems[BlinkFieldNo].CharNo = CharNo;
jmitc91516 0:9140ec6aa604 536 }
jmitc91516 0:9140ec6aa604 537 }
jmitc91516 0:9140ec6aa604 538
jmitc91516 0:9140ec6aa604 539 #ifdef GuiConst_ITEM_TEXTBLOCK_INUSE
jmitc91516 0:9140ec6aa604 540 if ((sgl.BlinkTextItems[BlinkFieldNo].ItemType == GuiLib_ITEM_TEXTBLOCK)||
jmitc91516 0:9140ec6aa604 541 (sgl.BlinkTextItems[BlinkFieldNo].ItemType == GuiLib_ITEM_VARBLOCK))
jmitc91516 0:9140ec6aa604 542 {
jmitc91516 0:9140ec6aa604 543 if(CharNo > 0)
jmitc91516 0:9140ec6aa604 544 {
jmitc91516 0:9140ec6aa604 545 TextPixelLength(sgl.BlinkTextItems[BlinkFieldNo].TextPar.Ps,
jmitc91516 0:9140ec6aa604 546 CharCnt, TextXOfs);
jmitc91516 0:9140ec6aa604 547
jmitc91516 0:9140ec6aa604 548 TextCharLineStart[0] = 0;
jmitc91516 0:9140ec6aa604 549 TextCharLineEnd[0] = -1;
jmitc91516 0:9140ec6aa604 550
jmitc91516 0:9140ec6aa604 551 LineCnt = 1 - sgl.BlinkTextItems[BlinkFieldNo].BlindLinesAtTop;
jmitc91516 0:9140ec6aa604 552 if (LineCnt >= 1)
jmitc91516 0:9140ec6aa604 553 LineCnt = 1;
jmitc91516 0:9140ec6aa604 554 LineCnt2 = 1;
jmitc91516 0:9140ec6aa604 555 P2 = 0;
jmitc91516 0:9140ec6aa604 556
jmitc91516 0:9140ec6aa604 557
jmitc91516 0:9140ec6aa604 558 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 559 GuiLib_RemoteDataReadBlock(
jmitc91516 0:9140ec6aa604 560 (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[
jmitc91516 0:9140ec6aa604 561 sgl.TextCharNdx[TextCharLineStart[LineCnt2 - 1]]],
jmitc91516 0:9140ec6aa604 562 GuiLib_CHR_LINECTRL_OFS,
jmitc91516 0:9140ec6aa604 563 CharHeader2);
jmitc91516 0:9140ec6aa604 564 #endif // GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 565
jmitc91516 0:9140ec6aa604 566 while (P2 < CharCnt)
jmitc91516 0:9140ec6aa604 567 {
jmitc91516 0:9140ec6aa604 568 while ((P2 < CharCnt - 1) &&
jmitc91516 0:9140ec6aa604 569 !((ReadBytePtr(CharPtr + P2) == GuiLib_LINEFEED) ||
jmitc91516 0:9140ec6aa604 570 ((ReadBytePtr(CharPtr + P2) != ' ') && (ReadBytePtr(CharPtr + P2 + 1) == ' ')) ||
jmitc91516 0:9140ec6aa604 571 ((ReadBytePtr(CharPtr + P2) == '-') && (ReadBytePtr(CharPtr + P2 + 1) != ' '))))
jmitc91516 0:9140ec6aa604 572 P2++;
jmitc91516 0:9140ec6aa604 573
jmitc91516 0:9140ec6aa604 574 if (CalcCharsWidth(TextCharLineStart[LineCnt2 - 1], P2,
jmitc91516 0:9140ec6aa604 575 TextXOfs, &XStart, &XEnd) >
jmitc91516 0:9140ec6aa604 576 (sgl.BlinkTextItems[BlinkFieldNo].X2 -
jmitc91516 0:9140ec6aa604 577 sgl.BlinkTextItems[BlinkFieldNo].X1 + 1))
jmitc91516 0:9140ec6aa604 578 {
jmitc91516 0:9140ec6aa604 579 if (TextCharLineEnd[LineCnt2 - 1] == -1)
jmitc91516 0:9140ec6aa604 580 {
jmitc91516 0:9140ec6aa604 581 TextCharLineEnd[LineCnt2 - 1] = P2;
jmitc91516 0:9140ec6aa604 582 TextCharLineStart[LineCnt2] = P2 + 1;
jmitc91516 0:9140ec6aa604 583 TextCharLineEnd[LineCnt2] = -1;
jmitc91516 0:9140ec6aa604 584 }
jmitc91516 0:9140ec6aa604 585 else
jmitc91516 0:9140ec6aa604 586 {
jmitc91516 0:9140ec6aa604 587 TextCharLineStart[LineCnt2] = TextCharLineEnd[LineCnt2 - 1] + 1;
jmitc91516 0:9140ec6aa604 588 while ((TextCharLineStart[LineCnt2] < P2) &&
jmitc91516 0:9140ec6aa604 589 (ReadBytePtr(CharPtr + TextCharLineStart[LineCnt2]) ==
jmitc91516 0:9140ec6aa604 590 ' '))
jmitc91516 0:9140ec6aa604 591 TextCharLineStart[LineCnt2]++;
jmitc91516 0:9140ec6aa604 592 TextCharLineEnd[LineCnt2] = P2;
jmitc91516 0:9140ec6aa604 593 }
jmitc91516 0:9140ec6aa604 594 if (LineCnt >= GuiConst_MAX_PARAGRAPH_LINE_CNT)
jmitc91516 0:9140ec6aa604 595 {
jmitc91516 0:9140ec6aa604 596 P2 = CharCnt;
jmitc91516 0:9140ec6aa604 597 break;
jmitc91516 0:9140ec6aa604 598 }
jmitc91516 0:9140ec6aa604 599 LineCnt++;
jmitc91516 0:9140ec6aa604 600 if (LineCnt > 1)
jmitc91516 0:9140ec6aa604 601 LineCnt2 = LineCnt;
jmitc91516 0:9140ec6aa604 602 else
jmitc91516 0:9140ec6aa604 603 TextCharLineStart[LineCnt2 - 1] = TextCharLineStart[LineCnt2];
jmitc91516 0:9140ec6aa604 604 }
jmitc91516 0:9140ec6aa604 605 else
jmitc91516 0:9140ec6aa604 606 TextCharLineEnd[LineCnt2 - 1] = P2;
jmitc91516 0:9140ec6aa604 607 if (ReadBytePtr(CharPtr + P2) == GuiLib_LINEFEED)
jmitc91516 0:9140ec6aa604 608 {
jmitc91516 0:9140ec6aa604 609 TextCharLineEnd[LineCnt2 - 1] = P2 - 1;
jmitc91516 0:9140ec6aa604 610 TextCharLineStart[LineCnt2] = P2 + 1;
jmitc91516 0:9140ec6aa604 611 TextCharLineEnd[LineCnt2] = -1;
jmitc91516 0:9140ec6aa604 612 if (LineCnt >= GuiConst_MAX_PARAGRAPH_LINE_CNT)
jmitc91516 0:9140ec6aa604 613 {
jmitc91516 0:9140ec6aa604 614 P2 = CharCnt;
jmitc91516 0:9140ec6aa604 615 break;
jmitc91516 0:9140ec6aa604 616 }
jmitc91516 0:9140ec6aa604 617 LineCnt++;
jmitc91516 0:9140ec6aa604 618 if (LineCnt > 1)
jmitc91516 0:9140ec6aa604 619 LineCnt2 = LineCnt;
jmitc91516 0:9140ec6aa604 620 else
jmitc91516 0:9140ec6aa604 621 TextCharLineStart[LineCnt2 - 1] = TextCharLineStart[LineCnt2];
jmitc91516 0:9140ec6aa604 622 }
jmitc91516 0:9140ec6aa604 623 P2++;
jmitc91516 0:9140ec6aa604 624 }
jmitc91516 0:9140ec6aa604 625
jmitc91516 0:9140ec6aa604 626 if (sgl.BlinkTextItems[BlinkFieldNo].TextPar.BitFlags &
jmitc91516 0:9140ec6aa604 627 GuiLib_BITFLAG_REVERSEWRITING)
jmitc91516 0:9140ec6aa604 628 {
jmitc91516 0:9140ec6aa604 629 for (M = 0; M < LineCnt2 ; M++)
jmitc91516 0:9140ec6aa604 630 {
jmitc91516 0:9140ec6aa604 631 for (P2 = TextCharLineStart[M]; P2 <= (TextCharLineStart[M] +
jmitc91516 0:9140ec6aa604 632 ((TextCharLineEnd[M] - TextCharLineStart[M] + 1) / 2) - 1);
jmitc91516 0:9140ec6aa604 633 P2++)
jmitc91516 0:9140ec6aa604 634 {
jmitc91516 0:9140ec6aa604 635 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 636 TempOfs = sgl.TextCharNdx[P2];
jmitc91516 0:9140ec6aa604 637 sgl.TextCharNdx[P2] =
jmitc91516 0:9140ec6aa604 638 sgl.TextCharNdx[TextCharLineEnd[M] - (P2 - TextCharLineStart[M])];
jmitc91516 0:9140ec6aa604 639 sgl.TextCharNdx[TextCharLineEnd[M] - (P2 - TextCharLineStart[M])] =
jmitc91516 0:9140ec6aa604 640 TempOfs;
jmitc91516 0:9140ec6aa604 641 #else // GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 642 TempPtr = sgl.TextCharPtrAry[P2];
jmitc91516 0:9140ec6aa604 643 sgl.TextCharPtrAry[P2] =
jmitc91516 0:9140ec6aa604 644 (GuiConst_INT8U PrefixRom *)sgl.TextCharPtrAry[
jmitc91516 0:9140ec6aa604 645 TextCharLineEnd[M] - (P2 - TextCharLineStart[M])];
jmitc91516 0:9140ec6aa604 646 sgl.TextCharPtrAry[TextCharLineEnd[M] - (P2 - TextCharLineStart[M])] =
jmitc91516 0:9140ec6aa604 647 (GuiConst_INT8U PrefixRom *)TempPtr;
jmitc91516 0:9140ec6aa604 648 #endif // GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 649 }
jmitc91516 0:9140ec6aa604 650 }
jmitc91516 0:9140ec6aa604 651 TextPixelLength(sgl.BlinkTextItems[BlinkFieldNo].TextPar.Ps,
jmitc91516 0:9140ec6aa604 652 CharCnt, TextXOfs);
jmitc91516 0:9140ec6aa604 653 }
jmitc91516 0:9140ec6aa604 654
jmitc91516 0:9140ec6aa604 655 #ifdef GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 656 if (sgl.BlinkTextItems[BlinkFieldNo].BlindLinesAtTop < 0)
jmitc91516 0:9140ec6aa604 657 sgl.BlinkTextItems[BlinkFieldNo].BlindLinesAtTop = 0;
jmitc91516 0:9140ec6aa604 658 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1 -=
jmitc91516 0:9140ec6aa604 659 sgl.BlinkTextItems[BlinkFieldNo].TextBoxScrollPos -
jmitc91516 0:9140ec6aa604 660 (sgl.BlinkTextItems[BlinkFieldNo].TextBoxLineDist *
jmitc91516 0:9140ec6aa604 661 sgl.BlinkTextItems[BlinkFieldNo].BlindLinesAtTop);
jmitc91516 0:9140ec6aa604 662 #endif // GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 663
jmitc91516 0:9140ec6aa604 664 switch (sgl.BlinkTextItems[BlinkFieldNo].TextBoxVertAlignment)
jmitc91516 0:9140ec6aa604 665 {
jmitc91516 0:9140ec6aa604 666 case GuiLib_ALIGN_CENTER:
jmitc91516 0:9140ec6aa604 667 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1 +=
jmitc91516 0:9140ec6aa604 668 (sgl.BlinkTextItems[BlinkFieldNo].Y2 -
jmitc91516 0:9140ec6aa604 669 sgl.BlinkTextItems[BlinkFieldNo].Y1 + 1 -
jmitc91516 0:9140ec6aa604 670 (sgl.BlinkTextItems[BlinkFieldNo].YSize +
jmitc91516 0:9140ec6aa604 671 (LineCnt2 - 1) *
jmitc91516 0:9140ec6aa604 672 sgl.BlinkTextItems[BlinkFieldNo].TextBoxLineDist)) / 2;
jmitc91516 0:9140ec6aa604 673 break;
jmitc91516 0:9140ec6aa604 674
jmitc91516 0:9140ec6aa604 675 case GuiLib_ALIGN_RIGHT:
jmitc91516 0:9140ec6aa604 676 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1 +=
jmitc91516 0:9140ec6aa604 677 sgl.BlinkTextItems[BlinkFieldNo].Y2 -
jmitc91516 0:9140ec6aa604 678 sgl.BlinkTextItems[BlinkFieldNo].Y1 + 1 -
jmitc91516 0:9140ec6aa604 679 (sgl.BlinkTextItems[BlinkFieldNo].YSize +
jmitc91516 0:9140ec6aa604 680 (LineCnt2 - 1) *
jmitc91516 0:9140ec6aa604 681 sgl.BlinkTextItems[BlinkFieldNo].TextBoxLineDist);
jmitc91516 0:9140ec6aa604 682 break;
jmitc91516 0:9140ec6aa604 683 }
jmitc91516 0:9140ec6aa604 684
jmitc91516 0:9140ec6aa604 685 for (N = 0; N < LineCnt2; N++)
jmitc91516 0:9140ec6aa604 686 {
jmitc91516 0:9140ec6aa604 687 if (((CharNo - 1) <= TextCharLineEnd[N])
jmitc91516 0:9140ec6aa604 688 && ((CharNo - 1) >= TextCharLineStart[N]))
jmitc91516 0:9140ec6aa604 689 {
jmitc91516 0:9140ec6aa604 690 if (sgl.BlinkTextItems[BlinkFieldNo].TextPar.BitFlags &
jmitc91516 0:9140ec6aa604 691 GuiLib_BITFLAG_REVERSEWRITING)
jmitc91516 0:9140ec6aa604 692 CharNo = TextCharLineStart[N] + TextCharLineEnd[N] + 2 - CharNo;
jmitc91516 0:9140ec6aa604 693
jmitc91516 0:9140ec6aa604 694 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 =
jmitc91516 0:9140ec6aa604 695 sgl.BlinkTextItems[BlinkFieldNo].X1;
jmitc91516 0:9140ec6aa604 696
jmitc91516 0:9140ec6aa604 697 LineLen = CalcCharsWidth(TextCharLineStart[N],
jmitc91516 0:9140ec6aa604 698 TextCharLineEnd[N],
jmitc91516 0:9140ec6aa604 699 TextXOfs,
jmitc91516 0:9140ec6aa604 700 &XStart,
jmitc91516 0:9140ec6aa604 701 &XEnd);
jmitc91516 0:9140ec6aa604 702 switch (sgl.BlinkTextItems[BlinkFieldNo].TextBoxHorzAlignment)
jmitc91516 0:9140ec6aa604 703 {
jmitc91516 0:9140ec6aa604 704 case GuiLib_ALIGN_CENTER:
jmitc91516 0:9140ec6aa604 705 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 +=
jmitc91516 0:9140ec6aa604 706 (sgl.BlinkTextItems[BlinkFieldNo].X2 -
jmitc91516 0:9140ec6aa604 707 sgl.BlinkTextItems[BlinkFieldNo].X1 + LineLen - 1) / 2;
jmitc91516 0:9140ec6aa604 708 break;
jmitc91516 0:9140ec6aa604 709
jmitc91516 0:9140ec6aa604 710 case GuiLib_ALIGN_RIGHT:
jmitc91516 0:9140ec6aa604 711 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 +=
jmitc91516 0:9140ec6aa604 712 sgl.BlinkTextItems[BlinkFieldNo].X2 -
jmitc91516 0:9140ec6aa604 713 sgl.BlinkTextItems[BlinkFieldNo].X1 + LineLen - 1;
jmitc91516 0:9140ec6aa604 714 break;
jmitc91516 0:9140ec6aa604 715 }
jmitc91516 0:9140ec6aa604 716
jmitc91516 0:9140ec6aa604 717 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 -= XStart;
jmitc91516 0:9140ec6aa604 718 LineLen = CalcCharsWidth(CharNo - 1,
jmitc91516 0:9140ec6aa604 719 CharNo - 1,
jmitc91516 0:9140ec6aa604 720 TextXOfs,
jmitc91516 0:9140ec6aa604 721 &XStart,
jmitc91516 0:9140ec6aa604 722 &XEnd);
jmitc91516 0:9140ec6aa604 723 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2 =
jmitc91516 0:9140ec6aa604 724 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 + XEnd;
jmitc91516 0:9140ec6aa604 725 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 += XStart;
jmitc91516 0:9140ec6aa604 726 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY2 =
jmitc91516 0:9140ec6aa604 727 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1 +
jmitc91516 0:9140ec6aa604 728 sgl.BlinkTextItems[BlinkFieldNo].YSize - 1;
jmitc91516 0:9140ec6aa604 729
jmitc91516 0:9140ec6aa604 730 sgl.BlinkTextItems[BlinkFieldNo].Active = 1;
jmitc91516 0:9140ec6aa604 731 break;
jmitc91516 0:9140ec6aa604 732 }
jmitc91516 0:9140ec6aa604 733
jmitc91516 0:9140ec6aa604 734 #ifndef GuiConst_BLINK_LF_COUNTS
jmitc91516 0:9140ec6aa604 735 if ((N+1) < LineCnt2)
jmitc91516 0:9140ec6aa604 736 if ((TextCharLineEnd[N]+1) != TextCharLineStart[N+1])
jmitc91516 0:9140ec6aa604 737 CharNo++;
jmitc91516 0:9140ec6aa604 738 #endif
jmitc91516 0:9140ec6aa604 739
jmitc91516 0:9140ec6aa604 740 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1 +=
jmitc91516 0:9140ec6aa604 741 sgl.BlinkTextItems[BlinkFieldNo].TextBoxLineDist;
jmitc91516 0:9140ec6aa604 742 }
jmitc91516 0:9140ec6aa604 743 }
jmitc91516 0:9140ec6aa604 744 else
jmitc91516 0:9140ec6aa604 745 {
jmitc91516 0:9140ec6aa604 746 sgl.BlinkTextItems[BlinkFieldNo].Active = 1;
jmitc91516 0:9140ec6aa604 747 sgl.BlinkTextItems[BlinkFieldNo].CharNo = CharNo;
jmitc91516 0:9140ec6aa604 748 }
jmitc91516 0:9140ec6aa604 749 }
jmitc91516 0:9140ec6aa604 750 else
jmitc91516 0:9140ec6aa604 751 #endif // GuiConst_ITEM_TEXTBLOCK_INUSE
jmitc91516 0:9140ec6aa604 752 {
jmitc91516 0:9140ec6aa604 753 if (sgl.BlinkTextItems[BlinkFieldNo].TextPar.BitFlags &
jmitc91516 0:9140ec6aa604 754 GuiLib_BITFLAG_REVERSEWRITING)
jmitc91516 0:9140ec6aa604 755 {
jmitc91516 0:9140ec6aa604 756 for (N = 0; N < CharCnt / 2; N++)
jmitc91516 0:9140ec6aa604 757 {
jmitc91516 0:9140ec6aa604 758 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 759 TempOfs = sgl.TextCharNdx[N];
jmitc91516 0:9140ec6aa604 760 sgl.TextCharNdx[N] =
jmitc91516 0:9140ec6aa604 761 sgl.TextCharNdx[CharCnt - 1 - N];
jmitc91516 0:9140ec6aa604 762 sgl.TextCharNdx[CharCnt - 1 - N] =
jmitc91516 0:9140ec6aa604 763 TempOfs;
jmitc91516 0:9140ec6aa604 764 #else
jmitc91516 0:9140ec6aa604 765 TempPtr = sgl.TextCharPtrAry[N];
jmitc91516 0:9140ec6aa604 766 sgl.TextCharPtrAry[N] = (GuiConst_INT8U PrefixRom *)
jmitc91516 0:9140ec6aa604 767 sgl.TextCharPtrAry[CharCnt - 1 - N];
jmitc91516 0:9140ec6aa604 768 sgl.TextCharPtrAry[CharCnt - 1 - N] =
jmitc91516 0:9140ec6aa604 769 (GuiConst_INT8U PrefixRom *)TempPtr;
jmitc91516 0:9140ec6aa604 770 #endif
jmitc91516 0:9140ec6aa604 771 }
jmitc91516 0:9140ec6aa604 772 CharNo = CharCnt + 1 - CharNo;
jmitc91516 0:9140ec6aa604 773 }
jmitc91516 0:9140ec6aa604 774
jmitc91516 0:9140ec6aa604 775 TextPixelLen = TextPixelLength(sgl.BlinkTextItems[BlinkFieldNo].TextPar.Ps,
jmitc91516 0:9140ec6aa604 776 CharCnt, TextXOfs);
jmitc91516 0:9140ec6aa604 777
jmitc91516 0:9140ec6aa604 778 switch (sgl.BlinkTextItems[BlinkFieldNo].TextPar.Alignment)
jmitc91516 0:9140ec6aa604 779 {
jmitc91516 0:9140ec6aa604 780 case GuiLib_ALIGN_CENTER:
jmitc91516 0:9140ec6aa604 781 if (CharCnt > 0)
jmitc91516 0:9140ec6aa604 782 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 -= TextPixelLen / 2;
jmitc91516 0:9140ec6aa604 783 break;
jmitc91516 0:9140ec6aa604 784 case GuiLib_ALIGN_RIGHT:
jmitc91516 0:9140ec6aa604 785 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 -= TextPixelLen - 1;
jmitc91516 0:9140ec6aa604 786 break;
jmitc91516 0:9140ec6aa604 787 }
jmitc91516 0:9140ec6aa604 788
jmitc91516 0:9140ec6aa604 789 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2 = sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 +
jmitc91516 0:9140ec6aa604 790 TextPixelLen - 1;
jmitc91516 0:9140ec6aa604 791
jmitc91516 0:9140ec6aa604 792 if (CharNo)
jmitc91516 0:9140ec6aa604 793 {
jmitc91516 0:9140ec6aa604 794 if (sgl.BlinkTextItems[BlinkFieldNo].TextPar.Ps == GuiLib_PS_OFF)
jmitc91516 0:9140ec6aa604 795 {
jmitc91516 0:9140ec6aa604 796 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 =
jmitc91516 0:9140ec6aa604 797 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 + TextXOfs[CharNo-1] - 1;
jmitc91516 0:9140ec6aa604 798 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2 =
jmitc91516 0:9140ec6aa604 799 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 +
jmitc91516 0:9140ec6aa604 800 sgl.BlinkTextItems[BlinkFieldNo].XSize;
jmitc91516 0:9140ec6aa604 801 }
jmitc91516 0:9140ec6aa604 802 else if ((sgl.BlinkTextItems[BlinkFieldNo].TextPar.Ps == GuiLib_PS_NUM) &&
jmitc91516 0:9140ec6aa604 803 (sgl.TextPsMode[CharNo - 1] == 0))
jmitc91516 0:9140ec6aa604 804 {
jmitc91516 0:9140ec6aa604 805 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 =
jmitc91516 0:9140ec6aa604 806 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 + TextXOfs[CharNo - 1] - 1;
jmitc91516 0:9140ec6aa604 807 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2 =
jmitc91516 0:9140ec6aa604 808 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 +
jmitc91516 0:9140ec6aa604 809 sgl.BlinkTextItems[BlinkFieldNo].PsNumWidth +
jmitc91516 0:9140ec6aa604 810 sgl.BlinkTextItems[BlinkFieldNo].PsSpace;
jmitc91516 0:9140ec6aa604 811 }
jmitc91516 0:9140ec6aa604 812 else
jmitc91516 0:9140ec6aa604 813 {
jmitc91516 0:9140ec6aa604 814 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 815 GuiLib_RemoteDataReadBlock((GuiConst_INT32U PrefixRom)
jmitc91516 0:9140ec6aa604 816 GuiFont_ChPtrList[sgl.TextCharNdx[CharNo - 1]],
jmitc91516 0:9140ec6aa604 817 GuiLib_CHR_LINECTRL_OFS, CharHeader);
jmitc91516 0:9140ec6aa604 818 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 =
jmitc91516 0:9140ec6aa604 819 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 +
jmitc91516 0:9140ec6aa604 820 TextXOfs[CharNo-1] + CharHeader[GuiLib_CHR_XLEFT_OFS] - 1;
jmitc91516 0:9140ec6aa604 821 #else
jmitc91516 0:9140ec6aa604 822 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 =
jmitc91516 0:9140ec6aa604 823 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 + TextXOfs[CharNo - 1] +
jmitc91516 0:9140ec6aa604 824 ReadBytePtr(sgl.TextCharPtrAry[CharNo - 1] +
jmitc91516 0:9140ec6aa604 825 GuiLib_CHR_XLEFT_OFS) - 1;
jmitc91516 0:9140ec6aa604 826 #endif
jmitc91516 0:9140ec6aa604 827 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 828 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2 =
jmitc91516 0:9140ec6aa604 829 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 +
jmitc91516 0:9140ec6aa604 830 CharHeader[GuiLib_CHR_XWIDTH_OFS] + 1;
jmitc91516 0:9140ec6aa604 831 #else
jmitc91516 0:9140ec6aa604 832 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2 =
jmitc91516 0:9140ec6aa604 833 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 +
jmitc91516 0:9140ec6aa604 834 ReadBytePtr(sgl.TextCharPtrAry[CharNo - 1] +
jmitc91516 0:9140ec6aa604 835 GuiLib_CHR_XWIDTH_OFS) + 1;
jmitc91516 0:9140ec6aa604 836 #endif
jmitc91516 0:9140ec6aa604 837 }
jmitc91516 0:9140ec6aa604 838 sgl.BlinkTextItems[BlinkFieldNo].Active = 1;
jmitc91516 0:9140ec6aa604 839 }
jmitc91516 0:9140ec6aa604 840 else
jmitc91516 0:9140ec6aa604 841 {
jmitc91516 0:9140ec6aa604 842 sgl.BlinkTextItems[BlinkFieldNo].Active = 1;
jmitc91516 0:9140ec6aa604 843 sgl.BlinkTextItems[BlinkFieldNo].CharNo = CharNo;
jmitc91516 0:9140ec6aa604 844 }
jmitc91516 0:9140ec6aa604 845 }
jmitc91516 0:9140ec6aa604 846 SetCurFont(sgl.CurItem.TextPar[0].FontIndex);
jmitc91516 0:9140ec6aa604 847 sgl.CurItem.TextPar[0] = TempTextPar;
jmitc91516 0:9140ec6aa604 848 sgl.CurItem.TextLength[0] = TempTextLength;
jmitc91516 0:9140ec6aa604 849 sgl.CurItem.FormatFieldWidth = TempFormatFieldWidth;
jmitc91516 0:9140ec6aa604 850 sgl.CurItem.FormatDecimals = TempFormatDecimals;
jmitc91516 0:9140ec6aa604 851 sgl.CurItem.FormatAlignment = TempFormatAlignment;
jmitc91516 0:9140ec6aa604 852 sgl.CurItem.FormatFormat = TempFormatFormat;
jmitc91516 0:9140ec6aa604 853
jmitc91516 0:9140ec6aa604 854 }
jmitc91516 0:9140ec6aa604 855
jmitc91516 0:9140ec6aa604 856 if (sgl.BlinkTextItems[BlinkFieldNo].Active)
jmitc91516 0:9140ec6aa604 857 {
jmitc91516 0:9140ec6aa604 858 if (Rate < 1)
jmitc91516 0:9140ec6aa604 859 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate = 1;
jmitc91516 0:9140ec6aa604 860 else
jmitc91516 0:9140ec6aa604 861 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate = Rate;
jmitc91516 0:9140ec6aa604 862 if (sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate < 255)
jmitc91516 0:9140ec6aa604 863 {
jmitc91516 0:9140ec6aa604 864 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxState =
jmitc91516 0:9140ec6aa604 865 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate -
jmitc91516 0:9140ec6aa604 866 (sgl.RefreshClock % sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate);
jmitc91516 0:9140ec6aa604 867 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted =
jmitc91516 0:9140ec6aa604 868 ((sgl.RefreshClock / sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate) % 2) ==
jmitc91516 0:9140ec6aa604 869 0;
jmitc91516 0:9140ec6aa604 870 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxLast =
jmitc91516 0:9140ec6aa604 871 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted;
jmitc91516 0:9140ec6aa604 872 if (sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted && sgl.DisplayWriting)
jmitc91516 0:9140ec6aa604 873 GuiLib_InvertBox(sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1,
jmitc91516 0:9140ec6aa604 874 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1,
jmitc91516 0:9140ec6aa604 875 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2,
jmitc91516 0:9140ec6aa604 876 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY2);
jmitc91516 0:9140ec6aa604 877 }
jmitc91516 0:9140ec6aa604 878 else
jmitc91516 0:9140ec6aa604 879 {
jmitc91516 0:9140ec6aa604 880 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxState =
jmitc91516 0:9140ec6aa604 881 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate;
jmitc91516 0:9140ec6aa604 882 if (sgl.DisplayWriting)
jmitc91516 0:9140ec6aa604 883 GuiLib_InvertBox(sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1,
jmitc91516 0:9140ec6aa604 884 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1,
jmitc91516 0:9140ec6aa604 885 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2,
jmitc91516 0:9140ec6aa604 886 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY2);
jmitc91516 0:9140ec6aa604 887
jmitc91516 0:9140ec6aa604 888 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted =
jmitc91516 0:9140ec6aa604 889 !sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted;
jmitc91516 0:9140ec6aa604 890 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxLast =
jmitc91516 0:9140ec6aa604 891 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted;
jmitc91516 0:9140ec6aa604 892 }
jmitc91516 0:9140ec6aa604 893 }
jmitc91516 0:9140ec6aa604 894 }
jmitc91516 0:9140ec6aa604 895 #else // GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 896 gl.Dummy1_16U = BlinkFieldNo; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 897 gl.Dummy2_16U = CharNo; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 898 gl.Dummy1_16S = Rate; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 899 #endif // GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 900 }
jmitc91516 0:9140ec6aa604 901
jmitc91516 0:9140ec6aa604 902 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 903 void GuiLib_BlinkBoxMarkedItemStop(
jmitc91516 0:9140ec6aa604 904 GuiConst_INT16U BlinkFieldNo)
jmitc91516 0:9140ec6aa604 905 {
jmitc91516 0:9140ec6aa604 906 #ifndef GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 907 if ((BlinkFieldNo >= GuiConst_BLINK_FIELDS_MAX) ||
jmitc91516 0:9140ec6aa604 908 !sgl.BlinkTextItems[BlinkFieldNo].InUse)
jmitc91516 0:9140ec6aa604 909 return;
jmitc91516 0:9140ec6aa604 910
jmitc91516 0:9140ec6aa604 911 if (sgl.BlinkTextItems[BlinkFieldNo].Active &&
jmitc91516 0:9140ec6aa604 912 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate &&
jmitc91516 0:9140ec6aa604 913 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted)
jmitc91516 0:9140ec6aa604 914 {
jmitc91516 0:9140ec6aa604 915 if (sgl.DisplayWriting)
jmitc91516 0:9140ec6aa604 916 {
jmitc91516 0:9140ec6aa604 917 GuiLib_InvertBox(sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1,
jmitc91516 0:9140ec6aa604 918 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1,
jmitc91516 0:9140ec6aa604 919 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2,
jmitc91516 0:9140ec6aa604 920 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY2);
jmitc91516 0:9140ec6aa604 921 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted =
jmitc91516 0:9140ec6aa604 922 !sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted;
jmitc91516 0:9140ec6aa604 923 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxLast =
jmitc91516 0:9140ec6aa604 924 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted;
jmitc91516 0:9140ec6aa604 925 }
jmitc91516 0:9140ec6aa604 926 }
jmitc91516 0:9140ec6aa604 927 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate = 0;
jmitc91516 0:9140ec6aa604 928 sgl.BlinkTextItems[BlinkFieldNo].Active = 0;
jmitc91516 0:9140ec6aa604 929 #else // GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 930 gl.Dummy1_16U = BlinkFieldNo; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 931 #endif // GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 932 }
jmitc91516 0:9140ec6aa604 933
jmitc91516 0:9140ec6aa604 934 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 935 void GuiLib_BlinkBoxMarkedItemUpdate(
jmitc91516 0:9140ec6aa604 936 GuiConst_INT16U BlinkFieldNo)
jmitc91516 0:9140ec6aa604 937 {
jmitc91516 0:9140ec6aa604 938 #ifndef GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 939 if ((BlinkFieldNo >= GuiConst_BLINK_FIELDS_MAX) ||
jmitc91516 0:9140ec6aa604 940 !sgl.BlinkTextItems[BlinkFieldNo].InUse)
jmitc91516 0:9140ec6aa604 941 return;
jmitc91516 0:9140ec6aa604 942
jmitc91516 0:9140ec6aa604 943 if (sgl.BlinkTextItems[BlinkFieldNo].Active &&
jmitc91516 0:9140ec6aa604 944 ((sgl.BlinkTextItems[BlinkFieldNo].ItemType == GuiLib_ITEM_VAR) ||
jmitc91516 0:9140ec6aa604 945 (sgl.BlinkTextItems[BlinkFieldNo].ItemType == GuiLib_ITEM_VARBLOCK)))
jmitc91516 0:9140ec6aa604 946 GuiLib_BlinkBoxMarkedItem(
jmitc91516 0:9140ec6aa604 947 BlinkFieldNo,
jmitc91516 0:9140ec6aa604 948 sgl.BlinkTextItems[BlinkFieldNo].CharNo,
jmitc91516 0:9140ec6aa604 949 sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate);
jmitc91516 0:9140ec6aa604 950 #else // GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 951 gl.Dummy1_16U = BlinkFieldNo; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 952 #endif // GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 953 }
jmitc91516 0:9140ec6aa604 954 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 955 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 956 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 957 #endif // GuiConst_BLINK_SUPPORT_ON
jmitc91516 0:9140ec6aa604 958
jmitc91516 0:9140ec6aa604 959 #ifdef GuiConst_ITEM_TOUCHAREA_INUSE
jmitc91516 0:9140ec6aa604 960 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 961 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 962 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 963 GuiConst_INT32S GuiLib_TouchCheck(
jmitc91516 0:9140ec6aa604 964 GuiConst_INT16S X,
jmitc91516 0:9140ec6aa604 965 GuiConst_INT16S Y)
jmitc91516 0:9140ec6aa604 966 {
jmitc91516 0:9140ec6aa604 967 GuiConst_INT32S TouchSearch;
jmitc91516 0:9140ec6aa604 968 GuiConst_INT32S XX, YY;
jmitc91516 0:9140ec6aa604 969 GuiConst_INT32S XL, XR, YT, YB;
jmitc91516 0:9140ec6aa604 970 GuiConst_INT32S TouchArea;
jmitc91516 0:9140ec6aa604 971
jmitc91516 0:9140ec6aa604 972 if (sgl.TouchAdjustActive)
jmitc91516 0:9140ec6aa604 973 {
jmitc91516 0:9140ec6aa604 974 XX = 10 * (GuiConst_INT32S)X;
jmitc91516 0:9140ec6aa604 975 YY = 10 * (GuiConst_INT32S)Y;
jmitc91516 0:9140ec6aa604 976 XL = sgl.TouchAdjustXTL +
jmitc91516 0:9140ec6aa604 977 (YY - sgl.TouchAdjustYTL) * (sgl.TouchAdjustXBL - sgl.TouchAdjustXTL) /
jmitc91516 0:9140ec6aa604 978 (sgl.TouchAdjustYBL - sgl.TouchAdjustYTL);
jmitc91516 0:9140ec6aa604 979 XR = sgl.TouchAdjustXTR +
jmitc91516 0:9140ec6aa604 980 (YY - sgl.TouchAdjustYTR) * (sgl.TouchAdjustXBR - sgl.TouchAdjustXTR) /
jmitc91516 0:9140ec6aa604 981 (sgl.TouchAdjustYBR - sgl.TouchAdjustYTR);
jmitc91516 0:9140ec6aa604 982 YT = sgl.TouchAdjustYTL +
jmitc91516 0:9140ec6aa604 983 (XX - sgl.TouchAdjustXTL) * (sgl.TouchAdjustYTR - sgl.TouchAdjustYTL) /
jmitc91516 0:9140ec6aa604 984 (sgl.TouchAdjustXTR - sgl.TouchAdjustXTL);
jmitc91516 0:9140ec6aa604 985 YB = sgl.TouchAdjustYBL +
jmitc91516 0:9140ec6aa604 986 (XX - sgl.TouchAdjustXBL) * (sgl.TouchAdjustYBR - sgl.TouchAdjustYBL) /
jmitc91516 0:9140ec6aa604 987 (sgl.TouchAdjustXBR - sgl.TouchAdjustXBL);
jmitc91516 0:9140ec6aa604 988 sgl.TouchConvertX = GuiConst_DISPLAY_WIDTH * (XX - XL) / (XR - XL);
jmitc91516 0:9140ec6aa604 989 sgl.TouchConvertY = GuiConst_DISPLAY_HEIGHT * (YY - YT) / (YB - YT);
jmitc91516 0:9140ec6aa604 990 }
jmitc91516 0:9140ec6aa604 991 else
jmitc91516 0:9140ec6aa604 992 {
jmitc91516 0:9140ec6aa604 993 sgl.TouchConvertX = X;
jmitc91516 0:9140ec6aa604 994 sgl.TouchConvertY = Y;
jmitc91516 0:9140ec6aa604 995 }
jmitc91516 0:9140ec6aa604 996
jmitc91516 0:9140ec6aa604 997 TouchArea = -1;
jmitc91516 0:9140ec6aa604 998 if ((sgl.TouchConvertX >= 0) && (sgl.TouchConvertX < GuiConst_DISPLAY_WIDTH) &&
jmitc91516 0:9140ec6aa604 999 (sgl.TouchConvertY >= 0) && (sgl.TouchConvertY < GuiConst_DISPLAY_HEIGHT))
jmitc91516 0:9140ec6aa604 1000 for (TouchSearch = 0; TouchSearch < sgl.TouchAreaCnt; TouchSearch++)
jmitc91516 0:9140ec6aa604 1001 if ((sgl.TouchConvertX >= sgl.TouchAreas[TouchSearch].X1) &&
jmitc91516 0:9140ec6aa604 1002 (sgl.TouchConvertX <= sgl.TouchAreas[TouchSearch].X2) &&
jmitc91516 0:9140ec6aa604 1003 (sgl.TouchConvertY >= sgl.TouchAreas[TouchSearch].Y1) &&
jmitc91516 0:9140ec6aa604 1004 (sgl.TouchConvertY <= sgl.TouchAreas[TouchSearch].Y2))
jmitc91516 0:9140ec6aa604 1005 {
jmitc91516 0:9140ec6aa604 1006 if (TouchArea == -1)
jmitc91516 0:9140ec6aa604 1007 TouchArea = sgl.TouchAreas[TouchSearch].IndexNo;
jmitc91516 0:9140ec6aa604 1008 else if (sgl.TouchAreas[TouchSearch].IndexNo < TouchArea)
jmitc91516 0:9140ec6aa604 1009 TouchArea = sgl.TouchAreas[TouchSearch].IndexNo;
jmitc91516 0:9140ec6aa604 1010 }
jmitc91516 0:9140ec6aa604 1011 return TouchArea;
jmitc91516 0:9140ec6aa604 1012 }
jmitc91516 0:9140ec6aa604 1013
jmitc91516 0:9140ec6aa604 1014 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1015 GuiConst_INT32S GuiLib_TouchGet(
jmitc91516 0:9140ec6aa604 1016 GuiConst_INT16S X,
jmitc91516 0:9140ec6aa604 1017 GuiConst_INT16S Y,
jmitc91516 0:9140ec6aa604 1018 GuiConst_INT16S* TouchX,
jmitc91516 0:9140ec6aa604 1019 GuiConst_INT16S* TouchY)
jmitc91516 0:9140ec6aa604 1020 {
jmitc91516 0:9140ec6aa604 1021 GuiConst_INT32S Result;
jmitc91516 0:9140ec6aa604 1022
jmitc91516 0:9140ec6aa604 1023 Result = GuiLib_TouchCheck(X, Y);
jmitc91516 0:9140ec6aa604 1024
jmitc91516 0:9140ec6aa604 1025 *TouchX = sgl.TouchConvertX;
jmitc91516 0:9140ec6aa604 1026 *TouchY = sgl.TouchConvertY;
jmitc91516 0:9140ec6aa604 1027
jmitc91516 0:9140ec6aa604 1028 return (Result);
jmitc91516 0:9140ec6aa604 1029 }
jmitc91516 0:9140ec6aa604 1030
jmitc91516 0:9140ec6aa604 1031 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1032 void GuiLib_TouchAdjustReset(void)
jmitc91516 0:9140ec6aa604 1033 {
jmitc91516 0:9140ec6aa604 1034 sgl.TouchAdjustActive = 0;
jmitc91516 0:9140ec6aa604 1035 sgl.TouchAdjustInUse[0] = 0;
jmitc91516 0:9140ec6aa604 1036 sgl.TouchAdjustInUse[1] = 0;
jmitc91516 0:9140ec6aa604 1037 sgl.TouchAdjustInUse[2] = 0;
jmitc91516 0:9140ec6aa604 1038 sgl.TouchAdjustInUse[3] = 0;
jmitc91516 0:9140ec6aa604 1039 }
jmitc91516 0:9140ec6aa604 1040
jmitc91516 0:9140ec6aa604 1041 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1042 void GuiLib_TouchAdjustSet(
jmitc91516 0:9140ec6aa604 1043 GuiConst_INT16S XTrue,
jmitc91516 0:9140ec6aa604 1044 GuiConst_INT16S YTrue,
jmitc91516 0:9140ec6aa604 1045 GuiConst_INT16S XMeasured,
jmitc91516 0:9140ec6aa604 1046 GuiConst_INT16S YMeasured)
jmitc91516 0:9140ec6aa604 1047 {
jmitc91516 0:9140ec6aa604 1048 GuiConst_INT8U I;
jmitc91516 0:9140ec6aa604 1049 GuiConst_INT32S XTL, YTL, XTR, YTR, XBL, YBL, XBR, YBR, XL, XR, YT, YB;
jmitc91516 0:9140ec6aa604 1050
jmitc91516 0:9140ec6aa604 1051 if (YTrue < GuiConst_DISPLAY_HEIGHT / 2)
jmitc91516 0:9140ec6aa604 1052 {
jmitc91516 0:9140ec6aa604 1053 if (XTrue < GuiConst_DISPLAY_WIDTH / 2)
jmitc91516 0:9140ec6aa604 1054 I = 0;
jmitc91516 0:9140ec6aa604 1055 else
jmitc91516 0:9140ec6aa604 1056 I = 1;
jmitc91516 0:9140ec6aa604 1057 }
jmitc91516 0:9140ec6aa604 1058 else
jmitc91516 0:9140ec6aa604 1059 {
jmitc91516 0:9140ec6aa604 1060 if (XTrue < GuiConst_DISPLAY_WIDTH / 2)
jmitc91516 0:9140ec6aa604 1061 I = 2;
jmitc91516 0:9140ec6aa604 1062 else
jmitc91516 0:9140ec6aa604 1063 I = 3;
jmitc91516 0:9140ec6aa604 1064 }
jmitc91516 0:9140ec6aa604 1065
jmitc91516 0:9140ec6aa604 1066 sgl.TouchAdjustInUse[I] = 1;
jmitc91516 0:9140ec6aa604 1067
jmitc91516 0:9140ec6aa604 1068 sgl.TouchAdjustXTrue[I] = XTrue;
jmitc91516 0:9140ec6aa604 1069 sgl.TouchAdjustYTrue[I] = YTrue;
jmitc91516 0:9140ec6aa604 1070 sgl.TouchAdjustXMeasured[I] = XMeasured;
jmitc91516 0:9140ec6aa604 1071 sgl.TouchAdjustYMeasured[I] = YMeasured;
jmitc91516 0:9140ec6aa604 1072
jmitc91516 0:9140ec6aa604 1073 if (sgl.TouchAdjustInUse[0] && sgl.TouchAdjustInUse[3])
jmitc91516 0:9140ec6aa604 1074 {
jmitc91516 0:9140ec6aa604 1075 sgl.TouchAdjustActive = 1;
jmitc91516 0:9140ec6aa604 1076 if (!sgl.TouchAdjustInUse[1])
jmitc91516 0:9140ec6aa604 1077 {
jmitc91516 0:9140ec6aa604 1078 sgl.TouchAdjustInUse[1] = 1;
jmitc91516 0:9140ec6aa604 1079 sgl.TouchAdjustXTrue[1] = sgl.TouchAdjustXTrue[3];
jmitc91516 0:9140ec6aa604 1080 sgl.TouchAdjustYTrue[1] = sgl.TouchAdjustYTrue[0];
jmitc91516 0:9140ec6aa604 1081 sgl.TouchAdjustXMeasured[1] = sgl.TouchAdjustXMeasured[3];
jmitc91516 0:9140ec6aa604 1082 sgl.TouchAdjustYMeasured[1] = sgl.TouchAdjustYMeasured[0];
jmitc91516 0:9140ec6aa604 1083 }
jmitc91516 0:9140ec6aa604 1084 if (!sgl.TouchAdjustInUse[2])
jmitc91516 0:9140ec6aa604 1085 {
jmitc91516 0:9140ec6aa604 1086 sgl.TouchAdjustInUse[2] = 1;
jmitc91516 0:9140ec6aa604 1087 sgl.TouchAdjustXTrue[2] = sgl.TouchAdjustXTrue[0];
jmitc91516 0:9140ec6aa604 1088 sgl.TouchAdjustYTrue[2] = sgl.TouchAdjustYTrue[3];
jmitc91516 0:9140ec6aa604 1089 sgl.TouchAdjustXMeasured[2] = sgl.TouchAdjustXMeasured[0];
jmitc91516 0:9140ec6aa604 1090 sgl.TouchAdjustYMeasured[2] = sgl.TouchAdjustYMeasured[3];
jmitc91516 0:9140ec6aa604 1091 }
jmitc91516 0:9140ec6aa604 1092 }
jmitc91516 0:9140ec6aa604 1093 else if (sgl.TouchAdjustInUse[1] && sgl.TouchAdjustInUse[2])
jmitc91516 0:9140ec6aa604 1094 {
jmitc91516 0:9140ec6aa604 1095 sgl.TouchAdjustActive = 1;
jmitc91516 0:9140ec6aa604 1096 if (!sgl.TouchAdjustInUse[0])
jmitc91516 0:9140ec6aa604 1097 {
jmitc91516 0:9140ec6aa604 1098 sgl.TouchAdjustInUse[0] = 1;
jmitc91516 0:9140ec6aa604 1099 sgl.TouchAdjustXTrue[0] = sgl.TouchAdjustXTrue[2];
jmitc91516 0:9140ec6aa604 1100 sgl.TouchAdjustYTrue[0] = sgl.TouchAdjustYTrue[1];
jmitc91516 0:9140ec6aa604 1101 sgl.TouchAdjustXMeasured[0] = sgl.TouchAdjustXMeasured[2];
jmitc91516 0:9140ec6aa604 1102 sgl.TouchAdjustYMeasured[0] = sgl.TouchAdjustYMeasured[1];
jmitc91516 0:9140ec6aa604 1103 }
jmitc91516 0:9140ec6aa604 1104 if (!sgl.TouchAdjustInUse[3])
jmitc91516 0:9140ec6aa604 1105 {
jmitc91516 0:9140ec6aa604 1106 sgl.TouchAdjustInUse[3] = 1;
jmitc91516 0:9140ec6aa604 1107 sgl.TouchAdjustXTrue[3] = sgl.TouchAdjustXTrue[1];
jmitc91516 0:9140ec6aa604 1108 sgl.TouchAdjustYTrue[3] = sgl.TouchAdjustYTrue[2];
jmitc91516 0:9140ec6aa604 1109 sgl.TouchAdjustXMeasured[3] = sgl.TouchAdjustXMeasured[1];
jmitc91516 0:9140ec6aa604 1110 sgl.TouchAdjustYMeasured[3] = sgl.TouchAdjustYMeasured[2];
jmitc91516 0:9140ec6aa604 1111 }
jmitc91516 0:9140ec6aa604 1112 }
jmitc91516 0:9140ec6aa604 1113
jmitc91516 0:9140ec6aa604 1114 if (sgl.TouchAdjustActive)
jmitc91516 0:9140ec6aa604 1115 {
jmitc91516 0:9140ec6aa604 1116 XTL = (10 * sgl.TouchAdjustXMeasured[1]) - ((10 * sgl.TouchAdjustXTrue[1] *
jmitc91516 0:9140ec6aa604 1117 (sgl.TouchAdjustXMeasured[1] - sgl.TouchAdjustXMeasured[0])) /
jmitc91516 0:9140ec6aa604 1118 (sgl.TouchAdjustXTrue[1] - sgl.TouchAdjustXTrue[0]));
jmitc91516 0:9140ec6aa604 1119 XTR = (10 * sgl.TouchAdjustXMeasured[0]) +
jmitc91516 0:9140ec6aa604 1120 ((10 * (GuiConst_DISPLAY_WIDTH - sgl.TouchAdjustXTrue[0]) *
jmitc91516 0:9140ec6aa604 1121 (sgl.TouchAdjustXMeasured[1] - sgl.TouchAdjustXMeasured[0])) /
jmitc91516 0:9140ec6aa604 1122 (sgl.TouchAdjustXTrue[1] - sgl.TouchAdjustXTrue[0]));
jmitc91516 0:9140ec6aa604 1123 XBL = (10 * sgl.TouchAdjustXMeasured[3]) - ((10 * sgl.TouchAdjustXTrue[3] *
jmitc91516 0:9140ec6aa604 1124 (sgl.TouchAdjustXMeasured[3] - sgl.TouchAdjustXMeasured[2])) /
jmitc91516 0:9140ec6aa604 1125 (sgl.TouchAdjustXTrue[3] - sgl.TouchAdjustXTrue[2]));
jmitc91516 0:9140ec6aa604 1126 XBR = (10 * sgl.TouchAdjustXMeasured[2]) +
jmitc91516 0:9140ec6aa604 1127 ((10 * (GuiConst_DISPLAY_WIDTH - sgl.TouchAdjustXTrue[2]) *
jmitc91516 0:9140ec6aa604 1128 (sgl.TouchAdjustXMeasured[3] - sgl.TouchAdjustXMeasured[2])) /
jmitc91516 0:9140ec6aa604 1129 (sgl.TouchAdjustXTrue[3] - sgl.TouchAdjustXTrue[2]));
jmitc91516 0:9140ec6aa604 1130
jmitc91516 0:9140ec6aa604 1131 YT = 5 * (sgl.TouchAdjustYTrue[0] + sgl.TouchAdjustYTrue[1]);
jmitc91516 0:9140ec6aa604 1132 YB = 5 * (sgl.TouchAdjustYTrue[2] + sgl.TouchAdjustYTrue[3]);
jmitc91516 0:9140ec6aa604 1133
jmitc91516 0:9140ec6aa604 1134 sgl.TouchAdjustXTL = XBL - (YB * (XBL - XTL) / (YB - YT));
jmitc91516 0:9140ec6aa604 1135 sgl.TouchAdjustXBL =
jmitc91516 0:9140ec6aa604 1136 XTL + (((10 * GuiConst_DISPLAY_HEIGHT) - YT) * (XBL - XTL) / (YB - YT));
jmitc91516 0:9140ec6aa604 1137 sgl.TouchAdjustXTR = XBR - (YB * (XBR - XTR) / (YB - YT));
jmitc91516 0:9140ec6aa604 1138 sgl.TouchAdjustXBR =
jmitc91516 0:9140ec6aa604 1139 XTR + (((10 * GuiConst_DISPLAY_HEIGHT) - YT) * (XBR - XTR) / (YB - YT));
jmitc91516 0:9140ec6aa604 1140
jmitc91516 0:9140ec6aa604 1141 YTL = (10 * sgl.TouchAdjustYMeasured[2]) - ((10 * sgl.TouchAdjustYTrue[2] *
jmitc91516 0:9140ec6aa604 1142 (sgl.TouchAdjustYMeasured[2] - sgl.TouchAdjustYMeasured[0])) /
jmitc91516 0:9140ec6aa604 1143 (sgl.TouchAdjustYTrue[2] - sgl.TouchAdjustYTrue[0]));
jmitc91516 0:9140ec6aa604 1144 YBL = (10 * sgl.TouchAdjustYMeasured[0]) +
jmitc91516 0:9140ec6aa604 1145 ((10 * (GuiConst_DISPLAY_HEIGHT - sgl.TouchAdjustYTrue[0]) *
jmitc91516 0:9140ec6aa604 1146 (sgl.TouchAdjustYMeasured[2] - sgl.TouchAdjustYMeasured[0])) /
jmitc91516 0:9140ec6aa604 1147 (sgl.TouchAdjustYTrue[2] - sgl.TouchAdjustYTrue[0]));
jmitc91516 0:9140ec6aa604 1148 YTR = (10 * sgl.TouchAdjustYMeasured[3]) - ((10 * sgl.TouchAdjustYTrue[3] *
jmitc91516 0:9140ec6aa604 1149 (sgl.TouchAdjustYMeasured[3] - sgl.TouchAdjustYMeasured[1])) /
jmitc91516 0:9140ec6aa604 1150 (sgl.TouchAdjustYTrue[3] - sgl.TouchAdjustYTrue[1]));
jmitc91516 0:9140ec6aa604 1151 YBR = (10 * sgl.TouchAdjustYMeasured[1]) +
jmitc91516 0:9140ec6aa604 1152 ((10 * (GuiConst_DISPLAY_HEIGHT - sgl.TouchAdjustYTrue[1]) *
jmitc91516 0:9140ec6aa604 1153 (sgl.TouchAdjustYMeasured[3] - sgl.TouchAdjustYMeasured[1])) /
jmitc91516 0:9140ec6aa604 1154 (sgl.TouchAdjustYTrue[3] - sgl.TouchAdjustYTrue[1]));
jmitc91516 0:9140ec6aa604 1155
jmitc91516 0:9140ec6aa604 1156 XL = 5 * (sgl.TouchAdjustXTrue[0] + sgl.TouchAdjustXTrue[2]);
jmitc91516 0:9140ec6aa604 1157 XR = 5 * (sgl.TouchAdjustXTrue[1] + sgl.TouchAdjustXTrue[3]);
jmitc91516 0:9140ec6aa604 1158
jmitc91516 0:9140ec6aa604 1159 sgl.TouchAdjustYTL = YTR - (XR * (YTR - YTL) / (XR - XL));
jmitc91516 0:9140ec6aa604 1160 sgl.TouchAdjustYTR =
jmitc91516 0:9140ec6aa604 1161 YTL + (((10 * GuiConst_DISPLAY_WIDTH) - XL) * (YTR - YTL) / (XR - XL));
jmitc91516 0:9140ec6aa604 1162 sgl.TouchAdjustYBL = YBR - (XR * (YBR - YBL) / (XR - XL));
jmitc91516 0:9140ec6aa604 1163 sgl.TouchAdjustYBR =
jmitc91516 0:9140ec6aa604 1164 YBL + (((10 * GuiConst_DISPLAY_WIDTH) - XL) * (YBR - YBL) / (XR - XL));
jmitc91516 0:9140ec6aa604 1165 }
jmitc91516 0:9140ec6aa604 1166 }
jmitc91516 0:9140ec6aa604 1167 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1168 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1169 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1170 #endif // GuiConst_ITEM_TOUCHAREA_INUSE
jmitc91516 0:9140ec6aa604 1171
jmitc91516 0:9140ec6aa604 1172 #ifdef GuiConst_ITEM_SCROLLBOX_INUSE
jmitc91516 0:9140ec6aa604 1173 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1174 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1175 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1176 static void ScrollBox_ShowLineStruct(
jmitc91516 0:9140ec6aa604 1177 GuiConst_INT8U ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 1178 GuiConst_INT16U StructToCallIndex,
jmitc91516 0:9140ec6aa604 1179 GuiConst_INT16S X,
jmitc91516 0:9140ec6aa604 1180 GuiConst_INT16S Y,
jmitc91516 0:9140ec6aa604 1181 GuiConst_INT8U ColorInvert)
jmitc91516 0:9140ec6aa604 1182 {
jmitc91516 0:9140ec6aa604 1183 GuiLib_StructPtr StructToCall;
jmitc91516 0:9140ec6aa604 1184 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1185 GuiConst_INT16S RemClippingX1, RemClippingY1, RemClippingX2, RemClippingY2;
jmitc91516 0:9140ec6aa604 1186 #endif //GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1187
jmitc91516 0:9140ec6aa604 1188 if (StructToCallIndex != 0xFFFF)
jmitc91516 0:9140ec6aa604 1189 {
jmitc91516 0:9140ec6aa604 1190 sgl.DisplayLevel++;
jmitc91516 0:9140ec6aa604 1191 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1192 RemClippingX1 = sgl.CurItem.ClipRectX1;
jmitc91516 0:9140ec6aa604 1193 RemClippingY1 = sgl.CurItem.ClipRectY1;
jmitc91516 0:9140ec6aa604 1194 RemClippingX2 = sgl.CurItem.ClipRectX2;
jmitc91516 0:9140ec6aa604 1195 RemClippingY2 = sgl.CurItem.ClipRectY2;
jmitc91516 0:9140ec6aa604 1196 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1197 memcpy(&sgl.CurItem, &sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxItem,
jmitc91516 0:9140ec6aa604 1198 sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 1199 sgl.CurItem.RX = X;
jmitc91516 0:9140ec6aa604 1200 sgl.CurItem.RY = Y;
jmitc91516 0:9140ec6aa604 1201 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1202 sgl.CurItem.ClipRectX1 = RemClippingX1;
jmitc91516 0:9140ec6aa604 1203 sgl.CurItem.ClipRectY1 = RemClippingY1;
jmitc91516 0:9140ec6aa604 1204 sgl.CurItem.ClipRectX2 = RemClippingX2;
jmitc91516 0:9140ec6aa604 1205 sgl.CurItem.ClipRectY2 = RemClippingY2;
jmitc91516 0:9140ec6aa604 1206 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1207 StructToCall = (GuiLib_StructPtr)
jmitc91516 0:9140ec6aa604 1208 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 1209 GetRemoteStructData(StructToCallIndex);
jmitc91516 0:9140ec6aa604 1210 #else // GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 1211 (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[StructToCallIndex]);
jmitc91516 0:9140ec6aa604 1212 #endif // GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 1213
jmitc91516 0:9140ec6aa604 1214 if (ColorInvert == GuiLib_COL_INVERT_ON)
jmitc91516 0:9140ec6aa604 1215 {
jmitc91516 0:9140ec6aa604 1216 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1217 if (sgl.ScrollBoxesAry[ScrollBoxIndex].ContainsCursorFields)
jmitc91516 0:9140ec6aa604 1218 ColorInvert = GuiLib_COL_INVERT_IF_CURSOR;
jmitc91516 0:9140ec6aa604 1219 #endif // GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1220 }
jmitc91516 0:9140ec6aa604 1221 else
jmitc91516 0:9140ec6aa604 1222 {
jmitc91516 0:9140ec6aa604 1223 #ifdef GuiConst_BITMAP_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1224 UpdateBackgroundBitmap();
jmitc91516 0:9140ec6aa604 1225 #endif
jmitc91516 0:9140ec6aa604 1226 }
jmitc91516 0:9140ec6aa604 1227
jmitc91516 0:9140ec6aa604 1228 DrawStructure(StructToCall, ColorInvert);
jmitc91516 0:9140ec6aa604 1229 ResetLayerBufPtr();
jmitc91516 0:9140ec6aa604 1230 sgl.DisplayLevel--;
jmitc91516 0:9140ec6aa604 1231 }
jmitc91516 0:9140ec6aa604 1232 }
jmitc91516 0:9140ec6aa604 1233
jmitc91516 0:9140ec6aa604 1234 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1235 static void ScrollBox_ShowLineBlock(
jmitc91516 0:9140ec6aa604 1236 GuiConst_INTCOLOR Color,
jmitc91516 0:9140ec6aa604 1237 GuiConst_INT8U Transparent,
jmitc91516 0:9140ec6aa604 1238 GuiConst_INT16S X1,
jmitc91516 0:9140ec6aa604 1239 GuiConst_INT16S Y1,
jmitc91516 0:9140ec6aa604 1240 GuiConst_INT16S X2,
jmitc91516 0:9140ec6aa604 1241 GuiConst_INT16S Y2)
jmitc91516 0:9140ec6aa604 1242 {
jmitc91516 0:9140ec6aa604 1243 if (!Transparent)
jmitc91516 0:9140ec6aa604 1244 GuiLib_FillBox(X1, Y1, X2, Y2, Color);
jmitc91516 0:9140ec6aa604 1245 }
jmitc91516 0:9140ec6aa604 1246
jmitc91516 0:9140ec6aa604 1247 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1248 static void ScrollBox_ShowBarBlock(
jmitc91516 0:9140ec6aa604 1249 GuiConst_INTCOLOR ForeColor,
jmitc91516 0:9140ec6aa604 1250 GuiConst_INTCOLOR BackColor,
jmitc91516 0:9140ec6aa604 1251 GuiConst_INT8U Thickness,
jmitc91516 0:9140ec6aa604 1252 GuiConst_INT16S X,
jmitc91516 0:9140ec6aa604 1253 GuiConst_INT16S Y,
jmitc91516 0:9140ec6aa604 1254 GuiConst_INT16S SizeX,
jmitc91516 0:9140ec6aa604 1255 GuiConst_INT16S SizeY)
jmitc91516 0:9140ec6aa604 1256 {
jmitc91516 0:9140ec6aa604 1257 GuiConst_INT8U T;
jmitc91516 0:9140ec6aa604 1258 GuiConst_INT16S BX1, BY1, BX2, BY2;
jmitc91516 0:9140ec6aa604 1259
jmitc91516 0:9140ec6aa604 1260 if (Thickness > 0)
jmitc91516 0:9140ec6aa604 1261 for (T = 0; T < Thickness; T++)
jmitc91516 0:9140ec6aa604 1262 {
jmitc91516 0:9140ec6aa604 1263 BX1 = X + T;
jmitc91516 0:9140ec6aa604 1264 BY1 = Y + T;
jmitc91516 0:9140ec6aa604 1265 BX2 = X + SizeX - 1 - T;
jmitc91516 0:9140ec6aa604 1266 BY2 = Y + SizeY - 1 - T;
jmitc91516 0:9140ec6aa604 1267 GuiLib_Box(BX1, BY1, BX2, BY2, ForeColor);
jmitc91516 0:9140ec6aa604 1268 }
jmitc91516 0:9140ec6aa604 1269 BX1 = X + Thickness;
jmitc91516 0:9140ec6aa604 1270 BY1 = Y + Thickness;
jmitc91516 0:9140ec6aa604 1271 BX2 = X + SizeX - 1 - Thickness;
jmitc91516 0:9140ec6aa604 1272 BY2 = Y + SizeY - 1 - Thickness;
jmitc91516 0:9140ec6aa604 1273 GuiLib_FillBox(BX1, BY1, BX2, BY2, BackColor);
jmitc91516 0:9140ec6aa604 1274 }
jmitc91516 0:9140ec6aa604 1275
jmitc91516 0:9140ec6aa604 1276 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1277 static void ScrollBox_SetTopLine(
jmitc91516 0:9140ec6aa604 1278 GuiConst_INT8U ScrollBoxIndex)
jmitc91516 0:9140ec6aa604 1279 {
jmitc91516 0:9140ec6aa604 1280 GuiConst_INT16U LowerLimtA=0;
jmitc91516 0:9140ec6aa604 1281 if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0)
jmitc91516 0:9140ec6aa604 1282 {
jmitc91516 0:9140ec6aa604 1283 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine =
jmitc91516 0:9140ec6aa604 1284 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] -
jmitc91516 0:9140ec6aa604 1285 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs;
jmitc91516 0:9140ec6aa604 1286 GuiLib_LIMIT_MINMAX(sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine,
jmitc91516 0:9140ec6aa604 1287 LowerLimtA, sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines -
jmitc91516 0:9140ec6aa604 1288 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines);
jmitc91516 0:9140ec6aa604 1289 }
jmitc91516 0:9140ec6aa604 1290 else
jmitc91516 0:9140ec6aa604 1291 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine =
jmitc91516 0:9140ec6aa604 1292 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] -
jmitc91516 0:9140ec6aa604 1293 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs;
jmitc91516 0:9140ec6aa604 1294 }
jmitc91516 0:9140ec6aa604 1295
jmitc91516 0:9140ec6aa604 1296 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1297 static void ScrollBox_DrawScrollLine(
jmitc91516 0:9140ec6aa604 1298 GuiConst_INT8U ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 1299 GuiConst_INT16S LineNdx)
jmitc91516 0:9140ec6aa604 1300 {
jmitc91516 0:9140ec6aa604 1301 GuiConst_INT16U N;
jmitc91516 0:9140ec6aa604 1302 GuiConst_INT16S SX1, SY1;
jmitc91516 0:9140ec6aa604 1303 GuiConst_INT16S X1, Y1, X2, Y2;
jmitc91516 0:9140ec6aa604 1304 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1305 GuiConst_INT16S RemClippingX1, RemClippingY1, RemClippingX2, RemClippingY2;
jmitc91516 0:9140ec6aa604 1306 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1307
jmitc91516 0:9140ec6aa604 1308 if ((LineNdx < sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine) ||
jmitc91516 0:9140ec6aa604 1309 (LineNdx >= sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine +
jmitc91516 0:9140ec6aa604 1310 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines))
jmitc91516 0:9140ec6aa604 1311 return;
jmitc91516 0:9140ec6aa604 1312
jmitc91516 0:9140ec6aa604 1313 X1 = sgl.ScrollBoxesAry[ScrollBoxIndex].X1 +
jmitc91516 0:9140ec6aa604 1314 sgl.ScrollBoxesAry[ScrollBoxIndex].LineOffsetX;
jmitc91516 0:9140ec6aa604 1315 Y1 = sgl.ScrollBoxesAry[ScrollBoxIndex].Y1 +
jmitc91516 0:9140ec6aa604 1316 sgl.ScrollBoxesAry[ScrollBoxIndex].LineOffsetY +
jmitc91516 0:9140ec6aa604 1317 (LineNdx - sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine) *
jmitc91516 0:9140ec6aa604 1318 sgl.ScrollBoxesAry[ScrollBoxIndex].LineVerticalOffset;
jmitc91516 0:9140ec6aa604 1319 X2 = X1 + sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeX - 1;
jmitc91516 0:9140ec6aa604 1320 Y2 = Y1 + sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeY - 1;
jmitc91516 0:9140ec6aa604 1321
jmitc91516 0:9140ec6aa604 1322 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1323 RemClippingX1 = sgl.CurItem.ClipRectX1;
jmitc91516 0:9140ec6aa604 1324 RemClippingY1 = sgl.CurItem.ClipRectY1;
jmitc91516 0:9140ec6aa604 1325 RemClippingX2 = sgl.CurItem.ClipRectX2;
jmitc91516 0:9140ec6aa604 1326 RemClippingY2 = sgl.CurItem.ClipRectY2;
jmitc91516 0:9140ec6aa604 1327 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX1, X1, X2);
jmitc91516 0:9140ec6aa604 1328 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY1, Y1, Y2);
jmitc91516 0:9140ec6aa604 1329 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX2, X1, X2);
jmitc91516 0:9140ec6aa604 1330 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY2, Y1, Y2);
jmitc91516 0:9140ec6aa604 1331 GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1,
jmitc91516 0:9140ec6aa604 1332 sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2);
jmitc91516 0:9140ec6aa604 1333 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1334
jmitc91516 0:9140ec6aa604 1335 if ((LineNdx >= 0) &&
jmitc91516 0:9140ec6aa604 1336 (LineNdx < sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines))
jmitc91516 0:9140ec6aa604 1337 {
jmitc91516 0:9140ec6aa604 1338 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollLineDataFunc(LineNdx);
jmitc91516 0:9140ec6aa604 1339
jmitc91516 0:9140ec6aa604 1340 SX1 = X1 + sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructOffsetX;
jmitc91516 0:9140ec6aa604 1341 SY1 = Y1 + sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructOffsetY;
jmitc91516 0:9140ec6aa604 1342 for (N = 0; N <= GuiConst_SCROLLITEM_MARKERS_MAX; N++)
jmitc91516 0:9140ec6aa604 1343 {
jmitc91516 0:9140ec6aa604 1344 if (N < GuiConst_SCROLLITEM_MARKERS_MAX)
jmitc91516 0:9140ec6aa604 1345 {
jmitc91516 0:9140ec6aa604 1346 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[N] >= 0) &&
jmitc91516 0:9140ec6aa604 1347 (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerSize[N] >= 1))
jmitc91516 0:9140ec6aa604 1348 {
jmitc91516 0:9140ec6aa604 1349 if ((LineNdx >= sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[N]) &&
jmitc91516 0:9140ec6aa604 1350 (LineNdx <= (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[N] +
jmitc91516 0:9140ec6aa604 1351 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerSize[N] - 1)))
jmitc91516 0:9140ec6aa604 1352 {
jmitc91516 0:9140ec6aa604 1353 ScrollBox_ShowLineBlock(
jmitc91516 0:9140ec6aa604 1354 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[N],
jmitc91516 0:9140ec6aa604 1355 sgl.ScrollBoxesAry[ScrollBoxIndex].
jmitc91516 0:9140ec6aa604 1356 MarkerColorTransparent[N], X1, Y1, X2, Y2);
jmitc91516 0:9140ec6aa604 1357 switch (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerDrawingOrder[N])
jmitc91516 0:9140ec6aa604 1358 {
jmitc91516 0:9140ec6aa604 1359 case 0:
jmitc91516 0:9140ec6aa604 1360 ScrollBox_ShowLineStruct(ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 1361 sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructIndex, SX1, SY1,
jmitc91516 0:9140ec6aa604 1362 GuiLib_COL_INVERT_ON);
jmitc91516 0:9140ec6aa604 1363 if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStructIndex[N] !=
jmitc91516 0:9140ec6aa604 1364 0xFFFF)
jmitc91516 0:9140ec6aa604 1365 ScrollBox_ShowLineStruct(ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 1366 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStructIndex[N],
jmitc91516 0:9140ec6aa604 1367 SX1, SY1, GuiLib_COL_INVERT_ON);
jmitc91516 0:9140ec6aa604 1368 break;
jmitc91516 0:9140ec6aa604 1369
jmitc91516 0:9140ec6aa604 1370 case 1:
jmitc91516 0:9140ec6aa604 1371 if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStructIndex[N] !=
jmitc91516 0:9140ec6aa604 1372 0xFFFF)
jmitc91516 0:9140ec6aa604 1373 ScrollBox_ShowLineStruct(ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 1374 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStructIndex[N],
jmitc91516 0:9140ec6aa604 1375 SX1, SY1, GuiLib_COL_INVERT_ON);
jmitc91516 0:9140ec6aa604 1376 ScrollBox_ShowLineStruct(ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 1377 sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructIndex, SX1, SY1,
jmitc91516 0:9140ec6aa604 1378 GuiLib_COL_INVERT_ON);
jmitc91516 0:9140ec6aa604 1379 break;
jmitc91516 0:9140ec6aa604 1380
jmitc91516 0:9140ec6aa604 1381 case 2:
jmitc91516 0:9140ec6aa604 1382 ScrollBox_ShowLineStruct(ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 1383 sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructIndex, SX1, SY1,
jmitc91516 0:9140ec6aa604 1384 GuiLib_COL_INVERT_ON);
jmitc91516 0:9140ec6aa604 1385 break;
jmitc91516 0:9140ec6aa604 1386
jmitc91516 0:9140ec6aa604 1387 case 3:
jmitc91516 0:9140ec6aa604 1388 if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStructIndex[N] !=
jmitc91516 0:9140ec6aa604 1389 0xFFFF)
jmitc91516 0:9140ec6aa604 1390 ScrollBox_ShowLineStruct(ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 1391 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStructIndex[N],
jmitc91516 0:9140ec6aa604 1392 SX1, SY1, GuiLib_COL_INVERT_ON);
jmitc91516 0:9140ec6aa604 1393 break;
jmitc91516 0:9140ec6aa604 1394 }
jmitc91516 0:9140ec6aa604 1395
jmitc91516 0:9140ec6aa604 1396 break;
jmitc91516 0:9140ec6aa604 1397 }
jmitc91516 0:9140ec6aa604 1398 }
jmitc91516 0:9140ec6aa604 1399 }
jmitc91516 0:9140ec6aa604 1400 else
jmitc91516 0:9140ec6aa604 1401 {
jmitc91516 0:9140ec6aa604 1402 ScrollBox_ShowLineBlock(
jmitc91516 0:9140ec6aa604 1403 sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor,
jmitc91516 0:9140ec6aa604 1404 sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorTransparent,
jmitc91516 0:9140ec6aa604 1405 X1, Y1, X2, Y2);
jmitc91516 0:9140ec6aa604 1406 ScrollBox_ShowLineStruct(ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 1407 sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructIndex, SX1, SY1,
jmitc91516 0:9140ec6aa604 1408 GuiLib_COL_INVERT_OFF);
jmitc91516 0:9140ec6aa604 1409 }
jmitc91516 0:9140ec6aa604 1410 }
jmitc91516 0:9140ec6aa604 1411 }
jmitc91516 0:9140ec6aa604 1412 else
jmitc91516 0:9140ec6aa604 1413 ScrollBox_ShowLineBlock(sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor,
jmitc91516 0:9140ec6aa604 1414 sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorTransparent,
jmitc91516 0:9140ec6aa604 1415 X1, Y1, X2, Y2);
jmitc91516 0:9140ec6aa604 1416
jmitc91516 0:9140ec6aa604 1417 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1418 sgl.CurItem.ClipRectX1 = RemClippingX1;
jmitc91516 0:9140ec6aa604 1419 sgl.CurItem.ClipRectY1 = RemClippingY1;
jmitc91516 0:9140ec6aa604 1420 sgl.CurItem.ClipRectX2 = RemClippingX2;
jmitc91516 0:9140ec6aa604 1421 sgl.CurItem.ClipRectY2 = RemClippingY2;
jmitc91516 0:9140ec6aa604 1422 GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1,
jmitc91516 0:9140ec6aa604 1423 sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2);
jmitc91516 0:9140ec6aa604 1424 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1425 }
jmitc91516 0:9140ec6aa604 1426
jmitc91516 0:9140ec6aa604 1427 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1428 GuiConst_INT8U GuiLib_ScrollBox_Init(
jmitc91516 0:9140ec6aa604 1429 GuiConst_INT8U ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 1430 void (*DataFuncPtr) (GuiConst_INT16S LineIndex),
jmitc91516 0:9140ec6aa604 1431 GuiConst_INT16S NoOfLines,
jmitc91516 0:9140ec6aa604 1432 GuiConst_INT16S ActiveLine)
jmitc91516 0:9140ec6aa604 1433 {
jmitc91516 0:9140ec6aa604 1434 GuiConst_INT16U StructToCallIndex;
jmitc91516 0:9140ec6aa604 1435 GuiLib_StructPtr StructToCall;
jmitc91516 0:9140ec6aa604 1436 GuiLib_ItemRec RemCurItem;
jmitc91516 0:9140ec6aa604 1437 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1438 GuiConst_INT8U RemCursorInUse;
jmitc91516 0:9140ec6aa604 1439 #endif // GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1440
jmitc91516 0:9140ec6aa604 1441 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 1442 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_READ) ||
jmitc91516 0:9140ec6aa604 1443 (ActiveLine >= NoOfLines))
jmitc91516 0:9140ec6aa604 1444 return (0);
jmitc91516 0:9140ec6aa604 1445
jmitc91516 0:9140ec6aa604 1446 memcpy(&RemCurItem, &sgl.CurItem, sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 1447
jmitc91516 0:9140ec6aa604 1448 sgl.GlobalScrollBoxIndex = ScrollBoxIndex;
jmitc91516 0:9140ec6aa604 1449
jmitc91516 0:9140ec6aa604 1450 memcpy(&sgl.CurItem, &sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxItem,
jmitc91516 0:9140ec6aa604 1451 sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 1452 StructToCallIndex = sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructIndex;
jmitc91516 0:9140ec6aa604 1453 if (StructToCallIndex != 0xFFFF)
jmitc91516 0:9140ec6aa604 1454 {
jmitc91516 0:9140ec6aa604 1455 sgl.DisplayLevel++;
jmitc91516 0:9140ec6aa604 1456 StructToCall = (GuiLib_StructPtr)
jmitc91516 0:9140ec6aa604 1457 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 1458 GetRemoteStructData(StructToCallIndex);
jmitc91516 0:9140ec6aa604 1459 #else
jmitc91516 0:9140ec6aa604 1460 (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[StructToCallIndex]);
jmitc91516 0:9140ec6aa604 1461 #endif
jmitc91516 0:9140ec6aa604 1462 sgl.NextScrollLineReading = 1;
jmitc91516 0:9140ec6aa604 1463 sgl.InitialDrawing = 1;
jmitc91516 0:9140ec6aa604 1464 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1465 RemCursorInUse = sgl.CursorInUse;
jmitc91516 0:9140ec6aa604 1466 sgl.ScrollBoxesAry[ScrollBoxIndex].ContainsCursorFields = 0;
jmitc91516 0:9140ec6aa604 1467 sgl.CursorInUse = (GuiLib_ActiveCursorFieldNo >= 0);
jmitc91516 0:9140ec6aa604 1468 sgl.CursorFieldFound = -1;
jmitc91516 0:9140ec6aa604 1469 sgl.CursorActiveFieldFound = 0;
jmitc91516 0:9140ec6aa604 1470 #endif // GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1471 DrawStructure(StructToCall, GuiLib_COL_INVERT_OFF);
jmitc91516 0:9140ec6aa604 1472 ResetLayerBufPtr();
jmitc91516 0:9140ec6aa604 1473 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1474 sgl.InitialDrawing = 0;
jmitc91516 0:9140ec6aa604 1475 if (sgl.CursorFieldFound == -1)
jmitc91516 0:9140ec6aa604 1476 {
jmitc91516 0:9140ec6aa604 1477 sgl.CursorInUse = 0;
jmitc91516 0:9140ec6aa604 1478 GuiLib_ActiveCursorFieldNo = -1;
jmitc91516 0:9140ec6aa604 1479 }
jmitc91516 0:9140ec6aa604 1480 else
jmitc91516 0:9140ec6aa604 1481 {
jmitc91516 0:9140ec6aa604 1482 sgl.ScrollBoxesAry[ScrollBoxIndex].ContainsCursorFields = 1;
jmitc91516 0:9140ec6aa604 1483 if (sgl.CursorActiveFieldFound == 0)
jmitc91516 0:9140ec6aa604 1484 {
jmitc91516 0:9140ec6aa604 1485 GuiLib_ActiveCursorFieldNo = sgl.CursorFieldFound;
jmitc91516 0:9140ec6aa604 1486
jmitc91516 0:9140ec6aa604 1487 DrawCursorItem(1);
jmitc91516 0:9140ec6aa604 1488 }
jmitc91516 0:9140ec6aa604 1489 }
jmitc91516 0:9140ec6aa604 1490 sgl.CursorInUse = sgl.CursorInUse | RemCursorInUse;
jmitc91516 0:9140ec6aa604 1491 #endif // GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1492 sgl.NextScrollLineReading = 0;
jmitc91516 0:9140ec6aa604 1493 sgl.DisplayLevel--;
jmitc91516 0:9140ec6aa604 1494 }
jmitc91516 0:9140ec6aa604 1495
jmitc91516 0:9140ec6aa604 1496 SetCurFont(sgl.CurItem.TextPar[0].FontIndex);
jmitc91516 0:9140ec6aa604 1497 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeY == 0) &&
jmitc91516 0:9140ec6aa604 1498 (sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeY2 == 0))
jmitc91516 0:9140ec6aa604 1499 {
jmitc91516 0:9140ec6aa604 1500 sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeY = sgl.CurFont->BaseLine;
jmitc91516 0:9140ec6aa604 1501 sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeY2 =
jmitc91516 0:9140ec6aa604 1502 sgl.CurFont->YSize - sgl.CurFont->BaseLine - 1;
jmitc91516 0:9140ec6aa604 1503 }
jmitc91516 0:9140ec6aa604 1504
jmitc91516 0:9140ec6aa604 1505 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1506 GuiLib_SetClipping(sgl.CurItem.ClipRectX1,sgl.CurItem.ClipRectY1,
jmitc91516 0:9140ec6aa604 1507 sgl.CurItem.ClipRectX2,sgl.CurItem.ClipRectY2);
jmitc91516 0:9140ec6aa604 1508 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1509
jmitc91516 0:9140ec6aa604 1510 StructToCallIndex = sgl.ScrollBoxesAry[ScrollBoxIndex].MakeUpStructIndex;
jmitc91516 0:9140ec6aa604 1511 if (StructToCallIndex != 0xFFFF)
jmitc91516 0:9140ec6aa604 1512 {
jmitc91516 0:9140ec6aa604 1513 sgl.DisplayLevel++;
jmitc91516 0:9140ec6aa604 1514 memcpy(&sgl.CurItem, &sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxItem,
jmitc91516 0:9140ec6aa604 1515 sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 1516 sgl.CurItem.RX = sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].X1;
jmitc91516 0:9140ec6aa604 1517 sgl.CurItem.RY = sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].Y1;
jmitc91516 0:9140ec6aa604 1518 StructToCall = (GuiLib_StructPtr)
jmitc91516 0:9140ec6aa604 1519 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 1520 GetRemoteStructData(StructToCallIndex);
jmitc91516 0:9140ec6aa604 1521 #else
jmitc91516 0:9140ec6aa604 1522 (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[StructToCallIndex]);
jmitc91516 0:9140ec6aa604 1523 #endif
jmitc91516 0:9140ec6aa604 1524 DrawStructure(StructToCall,GuiLib_COL_INVERT_OFF);
jmitc91516 0:9140ec6aa604 1525 ResetLayerBufPtr();
jmitc91516 0:9140ec6aa604 1526 sgl.DisplayLevel--;
jmitc91516 0:9140ec6aa604 1527 }
jmitc91516 0:9140ec6aa604 1528
jmitc91516 0:9140ec6aa604 1529 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollLineDataFunc = DataFuncPtr;
jmitc91516 0:9140ec6aa604 1530 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] = ActiveLine;
jmitc91516 0:9140ec6aa604 1531 sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine = ActiveLine;
jmitc91516 0:9140ec6aa604 1532 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines = NoOfLines;
jmitc91516 0:9140ec6aa604 1533 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0) &&
jmitc91516 0:9140ec6aa604 1534 (NoOfLines < sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines))
jmitc91516 0:9140ec6aa604 1535 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines = NoOfLines;
jmitc91516 0:9140ec6aa604 1536 sgl.ScrollBoxesAry[ScrollBoxIndex].InUse = GuiLib_SCROLL_STRUCTURE_USED;
jmitc91516 0:9140ec6aa604 1537 ScrollBox_SetTopLine(ScrollBoxIndex);
jmitc91516 0:9140ec6aa604 1538 GuiLib_ScrollBox_Redraw(ScrollBoxIndex);
jmitc91516 0:9140ec6aa604 1539 sgl.ScrollBoxesAry[ScrollBoxIndex].LastScrollTopLine = 0xFFFF;
jmitc91516 0:9140ec6aa604 1540
jmitc91516 0:9140ec6aa604 1541 memcpy(&sgl.CurItem, &RemCurItem, sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 1542
jmitc91516 0:9140ec6aa604 1543 return (1);
jmitc91516 0:9140ec6aa604 1544 }
jmitc91516 0:9140ec6aa604 1545
jmitc91516 0:9140ec6aa604 1546 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1547 GuiConst_INT8U GuiLib_ScrollBox_Redraw(
jmitc91516 0:9140ec6aa604 1548 GuiConst_INT8U ScrollBoxIndex)
jmitc91516 0:9140ec6aa604 1549 {
jmitc91516 0:9140ec6aa604 1550 GuiConst_INT16S N, ScrollStartLine, ScrollStopLine;
jmitc91516 0:9140ec6aa604 1551 GuiLib_ItemRec RemCurItem;
jmitc91516 0:9140ec6aa604 1552 #ifndef GuiConst_SCROLLITEM_BAR_NONE
jmitc91516 0:9140ec6aa604 1553 #define GuiLib_SCROLL_REDRAW_VAR
jmitc91516 0:9140ec6aa604 1554 #else
jmitc91516 0:9140ec6aa604 1555 #ifndef GuiConst_SCROLLITEM_INDICATOR_NONE
jmitc91516 0:9140ec6aa604 1556 #define GuiLib_SCROLL_REDRAW_VAR
jmitc91516 0:9140ec6aa604 1557 #endif
jmitc91516 0:9140ec6aa604 1558 #endif
jmitc91516 0:9140ec6aa604 1559 #ifdef GuiLib_SCROLL_REDRAW_VAR
jmitc91516 0:9140ec6aa604 1560 GuiLib_StructPtr StructToCall;
jmitc91516 0:9140ec6aa604 1561 GuiConst_INT16U StructToCallIndex;
jmitc91516 0:9140ec6aa604 1562 GuiConst_INT16S SX1, SY1;
jmitc91516 0:9140ec6aa604 1563 GuiConst_INT16S X1, Y1;
jmitc91516 0:9140ec6aa604 1564 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1565 GuiConst_INT16S SX2, SY2;
jmitc91516 0:9140ec6aa604 1566 GuiConst_INT16S X2, Y2;
jmitc91516 0:9140ec6aa604 1567 GuiConst_INT16S RemClippingX1, RemClippingY1, RemClippingX2, RemClippingY2;
jmitc91516 0:9140ec6aa604 1568 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1569 #endif // GuiLib_SCROLL_REDRAW_VAR
jmitc91516 0:9140ec6aa604 1570 #ifndef GuiConst_SCROLLITEM_BAR_NONE
jmitc91516 0:9140ec6aa604 1571 GuiConst_INT16S BarMarkerY;
jmitc91516 0:9140ec6aa604 1572 GuiConst_INT16S BarMarkerHeight;
jmitc91516 0:9140ec6aa604 1573 GuiConst_INT16S BarMarkerMovementDY;
jmitc91516 0:9140ec6aa604 1574 GuiConst_INT32S N1, N2;
jmitc91516 0:9140ec6aa604 1575 #endif // GuiConst_SCROLLITEM_BAR_NONE
jmitc91516 0:9140ec6aa604 1576 GuiConst_INT32S BackColor;
jmitc91516 0:9140ec6aa604 1577
jmitc91516 0:9140ec6aa604 1578 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 1579 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 1580 return (0);
jmitc91516 0:9140ec6aa604 1581
jmitc91516 0:9140ec6aa604 1582 memcpy(&RemCurItem, &sgl.CurItem, sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 1583
jmitc91516 0:9140ec6aa604 1584 sgl.GlobalScrollBoxIndex = ScrollBoxIndex;
jmitc91516 0:9140ec6aa604 1585
jmitc91516 0:9140ec6aa604 1586 ScrollStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine;
jmitc91516 0:9140ec6aa604 1587 ScrollStopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine +
jmitc91516 0:9140ec6aa604 1588 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines - 1;
jmitc91516 0:9140ec6aa604 1589 if (sgl.ScrollBoxesAry[ScrollBoxIndex].LastScrollTopLine ==
jmitc91516 0:9140ec6aa604 1590 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine)
jmitc91516 0:9140ec6aa604 1591 {
jmitc91516 0:9140ec6aa604 1592 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine == -1) ||
jmitc91516 0:9140ec6aa604 1593 (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] == -1))
jmitc91516 0:9140ec6aa604 1594 {
jmitc91516 0:9140ec6aa604 1595 if (sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine !=
jmitc91516 0:9140ec6aa604 1596 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0])
jmitc91516 0:9140ec6aa604 1597 {
jmitc91516 0:9140ec6aa604 1598 if (sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine == -1)
jmitc91516 0:9140ec6aa604 1599 {
jmitc91516 0:9140ec6aa604 1600 ScrollStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0];
jmitc91516 0:9140ec6aa604 1601 ScrollStopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0];
jmitc91516 0:9140ec6aa604 1602 }
jmitc91516 0:9140ec6aa604 1603 else
jmitc91516 0:9140ec6aa604 1604 {
jmitc91516 0:9140ec6aa604 1605 ScrollStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine;
jmitc91516 0:9140ec6aa604 1606 ScrollStopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine;
jmitc91516 0:9140ec6aa604 1607 }
jmitc91516 0:9140ec6aa604 1608 }
jmitc91516 0:9140ec6aa604 1609 }
jmitc91516 0:9140ec6aa604 1610 else if (sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine <
jmitc91516 0:9140ec6aa604 1611 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0])
jmitc91516 0:9140ec6aa604 1612 {
jmitc91516 0:9140ec6aa604 1613 ScrollStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine;
jmitc91516 0:9140ec6aa604 1614 if (ScrollStartLine < sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine)
jmitc91516 0:9140ec6aa604 1615 ScrollStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine;
jmitc91516 0:9140ec6aa604 1616 ScrollStopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0];
jmitc91516 0:9140ec6aa604 1617 }
jmitc91516 0:9140ec6aa604 1618 else if (sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine >
jmitc91516 0:9140ec6aa604 1619 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0])
jmitc91516 0:9140ec6aa604 1620 {
jmitc91516 0:9140ec6aa604 1621 ScrollStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0];
jmitc91516 0:9140ec6aa604 1622 ScrollStopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine;
jmitc91516 0:9140ec6aa604 1623 GuiLib_LIMIT_MAX(ScrollStartLine,
jmitc91516 0:9140ec6aa604 1624 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine +
jmitc91516 0:9140ec6aa604 1625 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines - 1);
jmitc91516 0:9140ec6aa604 1626 }
jmitc91516 0:9140ec6aa604 1627 }
jmitc91516 0:9140ec6aa604 1628
jmitc91516 0:9140ec6aa604 1629 if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollLineDataFunc != 0)
jmitc91516 0:9140ec6aa604 1630 for (N = ScrollStartLine; N <= ScrollStopLine; N++)
jmitc91516 0:9140ec6aa604 1631 ScrollBox_DrawScrollLine(ScrollBoxIndex, N);
jmitc91516 0:9140ec6aa604 1632
jmitc91516 0:9140ec6aa604 1633 sgl.ScrollBoxesAry[ScrollBoxIndex].LastScrollTopLine =
jmitc91516 0:9140ec6aa604 1634 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine;
jmitc91516 0:9140ec6aa604 1635 sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine =
jmitc91516 0:9140ec6aa604 1636 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0];
jmitc91516 0:9140ec6aa604 1637
jmitc91516 0:9140ec6aa604 1638 #ifndef GuiConst_SCROLLITEM_BAR_NONE
jmitc91516 0:9140ec6aa604 1639 if (sgl.ScrollBoxesAry[ScrollBoxIndex].BarType != GuiLib_MARKER_NONE)
jmitc91516 0:9140ec6aa604 1640 {
jmitc91516 0:9140ec6aa604 1641 SX1 = sgl.ScrollBoxesAry[ScrollBoxIndex].BarPositionX;
jmitc91516 0:9140ec6aa604 1642 SY1 = sgl.ScrollBoxesAry[ScrollBoxIndex].BarPositionY;
jmitc91516 0:9140ec6aa604 1643 X1 = SX1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerLeftOffset;
jmitc91516 0:9140ec6aa604 1644 Y1 = SY1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerTopOffset;
jmitc91516 0:9140ec6aa604 1645 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1646 SX2 = SX1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeX - 1;
jmitc91516 0:9140ec6aa604 1647 SY2 = SY1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeY - 1;
jmitc91516 0:9140ec6aa604 1648 X2 = SX2 - sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerRightOffset;
jmitc91516 0:9140ec6aa604 1649 Y2 = SY2 - sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBottomOffset;
jmitc91516 0:9140ec6aa604 1650 RemClippingX1 = sgl.CurItem.ClipRectX1;
jmitc91516 0:9140ec6aa604 1651 RemClippingY1 = sgl.CurItem.ClipRectY1;
jmitc91516 0:9140ec6aa604 1652 RemClippingX2 = sgl.CurItem.ClipRectX2;
jmitc91516 0:9140ec6aa604 1653 RemClippingY2 = sgl.CurItem.ClipRectY2;
jmitc91516 0:9140ec6aa604 1654 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX1, SX1, SX2);
jmitc91516 0:9140ec6aa604 1655 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY1, SY1, SY2);
jmitc91516 0:9140ec6aa604 1656 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX2, SX1, SX2);
jmitc91516 0:9140ec6aa604 1657 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY2, SY1, SY2);
jmitc91516 0:9140ec6aa604 1658 GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1,
jmitc91516 0:9140ec6aa604 1659 sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2);
jmitc91516 0:9140ec6aa604 1660 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1661
jmitc91516 0:9140ec6aa604 1662 StructToCallIndex = sgl.ScrollBoxesAry[ScrollBoxIndex].BarStructIndex;
jmitc91516 0:9140ec6aa604 1663 if (StructToCallIndex != 0xFFFF)
jmitc91516 0:9140ec6aa604 1664 {
jmitc91516 0:9140ec6aa604 1665 ScrollBox_ShowBarBlock(
jmitc91516 0:9140ec6aa604 1666 sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor,
jmitc91516 0:9140ec6aa604 1667 sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor,
jmitc91516 0:9140ec6aa604 1668 0,
jmitc91516 0:9140ec6aa604 1669 SX1,
jmitc91516 0:9140ec6aa604 1670 SY1,
jmitc91516 0:9140ec6aa604 1671 sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeX,
jmitc91516 0:9140ec6aa604 1672 sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeY);
jmitc91516 0:9140ec6aa604 1673
jmitc91516 0:9140ec6aa604 1674 sgl.DisplayLevel++;
jmitc91516 0:9140ec6aa604 1675 memcpy(&sgl.CurItem,
jmitc91516 0:9140ec6aa604 1676 &sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxItem,
jmitc91516 0:9140ec6aa604 1677 sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 1678 sgl.CurItem.RX = SX1;
jmitc91516 0:9140ec6aa604 1679 sgl.CurItem.RY = SY1;
jmitc91516 0:9140ec6aa604 1680 StructToCall = (GuiLib_StructPtr)
jmitc91516 0:9140ec6aa604 1681 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 1682 GetRemoteStructData(StructToCallIndex);
jmitc91516 0:9140ec6aa604 1683 #else
jmitc91516 0:9140ec6aa604 1684 (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[StructToCallIndex]);
jmitc91516 0:9140ec6aa604 1685 #endif
jmitc91516 0:9140ec6aa604 1686 DrawStructure(StructToCall, GuiLib_COL_INVERT_OFF);
jmitc91516 0:9140ec6aa604 1687 ResetLayerBufPtr();
jmitc91516 0:9140ec6aa604 1688 sgl.DisplayLevel--;
jmitc91516 0:9140ec6aa604 1689 }
jmitc91516 0:9140ec6aa604 1690 else
jmitc91516 0:9140ec6aa604 1691 ScrollBox_ShowBarBlock(
jmitc91516 0:9140ec6aa604 1692 sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor,
jmitc91516 0:9140ec6aa604 1693 sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor,
jmitc91516 0:9140ec6aa604 1694 sgl.ScrollBoxesAry[ScrollBoxIndex].BarThickness,
jmitc91516 0:9140ec6aa604 1695 SX1,
jmitc91516 0:9140ec6aa604 1696 SY1,
jmitc91516 0:9140ec6aa604 1697 sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeX,
jmitc91516 0:9140ec6aa604 1698 sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeY);
jmitc91516 0:9140ec6aa604 1699
jmitc91516 0:9140ec6aa604 1700 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1701 sgl.CurItem.ClipRectX1 = RemClippingX1;
jmitc91516 0:9140ec6aa604 1702 sgl.CurItem.ClipRectY1 = RemClippingY1;
jmitc91516 0:9140ec6aa604 1703 sgl.CurItem.ClipRectX2 = RemClippingX2;
jmitc91516 0:9140ec6aa604 1704 sgl.CurItem.ClipRectY2 = RemClippingY2;
jmitc91516 0:9140ec6aa604 1705 GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1,
jmitc91516 0:9140ec6aa604 1706 sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2);
jmitc91516 0:9140ec6aa604 1707 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1708
jmitc91516 0:9140ec6aa604 1709 if (sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines >
jmitc91516 0:9140ec6aa604 1710 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines)
jmitc91516 0:9140ec6aa604 1711 {
jmitc91516 0:9140ec6aa604 1712 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1713 RemClippingX1 = sgl.CurItem.ClipRectX1;
jmitc91516 0:9140ec6aa604 1714 RemClippingY1 = sgl.CurItem.ClipRectY1;
jmitc91516 0:9140ec6aa604 1715 RemClippingX2 = sgl.CurItem.ClipRectX2;
jmitc91516 0:9140ec6aa604 1716 RemClippingY2 = sgl.CurItem.ClipRectY2;
jmitc91516 0:9140ec6aa604 1717 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX1, X1, X2);
jmitc91516 0:9140ec6aa604 1718 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY1, Y1, Y2);
jmitc91516 0:9140ec6aa604 1719 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX2, X1, X2);
jmitc91516 0:9140ec6aa604 1720 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY2, Y1, Y2);
jmitc91516 0:9140ec6aa604 1721 GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1,
jmitc91516 0:9140ec6aa604 1722 sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2);
jmitc91516 0:9140ec6aa604 1723 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1724
jmitc91516 0:9140ec6aa604 1725 BarMarkerHeight = 0;
jmitc91516 0:9140ec6aa604 1726 BarMarkerMovementDY = sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeY -
jmitc91516 0:9140ec6aa604 1727 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBottomOffset -
jmitc91516 0:9140ec6aa604 1728 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerTopOffset;
jmitc91516 0:9140ec6aa604 1729
jmitc91516 0:9140ec6aa604 1730 switch (sgl.ScrollBoxesAry[ScrollBoxIndex].BarType)
jmitc91516 0:9140ec6aa604 1731 {
jmitc91516 0:9140ec6aa604 1732 case GuiLib_MARKER_ICON:
jmitc91516 0:9140ec6aa604 1733 sgl.CurFont = (GuiLib_FontRecPtr)ReadWord(GuiFont_FontList[
jmitc91516 0:9140ec6aa604 1734 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerIconFont]);
jmitc91516 0:9140ec6aa604 1735 BarMarkerHeight = sgl.CurFont->YSize;
jmitc91516 0:9140ec6aa604 1736 break;
jmitc91516 0:9140ec6aa604 1737
jmitc91516 0:9140ec6aa604 1738 case GuiLib_MARKER_BITMAP:
jmitc91516 0:9140ec6aa604 1739 BarMarkerHeight =
jmitc91516 0:9140ec6aa604 1740 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapHeight;
jmitc91516 0:9140ec6aa604 1741 break;
jmitc91516 0:9140ec6aa604 1742
jmitc91516 0:9140ec6aa604 1743 case GuiLib_MARKER_FIXED_BLOCK:
jmitc91516 0:9140ec6aa604 1744 BarMarkerHeight =
jmitc91516 0:9140ec6aa604 1745 sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeX -
jmitc91516 0:9140ec6aa604 1746 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerLeftOffset -
jmitc91516 0:9140ec6aa604 1747 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerRightOffset;
jmitc91516 0:9140ec6aa604 1748 break;
jmitc91516 0:9140ec6aa604 1749
jmitc91516 0:9140ec6aa604 1750 case GuiLib_MARKER_VARIABLE_BLOCK:
jmitc91516 0:9140ec6aa604 1751 BarMarkerHeight =
jmitc91516 0:9140ec6aa604 1752 (((10 * BarMarkerMovementDY *
jmitc91516 0:9140ec6aa604 1753 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines) + 5) /
jmitc91516 0:9140ec6aa604 1754 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines) / 10;
jmitc91516 0:9140ec6aa604 1755 GuiLib_LIMIT_MIN(BarMarkerHeight, 4);
jmitc91516 0:9140ec6aa604 1756 break;
jmitc91516 0:9140ec6aa604 1757 }
jmitc91516 0:9140ec6aa604 1758
jmitc91516 0:9140ec6aa604 1759 N1 = sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines -
jmitc91516 0:9140ec6aa604 1760 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines;
jmitc91516 0:9140ec6aa604 1761 N2 = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine;
jmitc91516 0:9140ec6aa604 1762 GuiLib_LIMIT_MINMAX(N2, 0, N1);
jmitc91516 0:9140ec6aa604 1763 BarMarkerY = (((10 * (BarMarkerMovementDY - BarMarkerHeight) *
jmitc91516 0:9140ec6aa604 1764 N2) + 5) / N1) / 10;
jmitc91516 0:9140ec6aa604 1765
jmitc91516 0:9140ec6aa604 1766 switch (sgl.ScrollBoxesAry[ScrollBoxIndex].BarType)
jmitc91516 0:9140ec6aa604 1767 {
jmitc91516 0:9140ec6aa604 1768 case GuiLib_MARKER_ICON:
jmitc91516 0:9140ec6aa604 1769 sgl.CurItem.X1 = X1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerIconOffsetX;
jmitc91516 0:9140ec6aa604 1770 sgl.CurItem.Y1 = Y1 + BarMarkerY +
jmitc91516 0:9140ec6aa604 1771 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerIconOffsetY +
jmitc91516 0:9140ec6aa604 1772 sgl.CurFont->BaseLine;
jmitc91516 0:9140ec6aa604 1773 sgl.CurItem.TextPar[0].FontIndex =
jmitc91516 0:9140ec6aa604 1774 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerIconFont;
jmitc91516 0:9140ec6aa604 1775 sgl.CurItem.TextPar[0].Alignment = GuiLib_ALIGN_LEFT;
jmitc91516 0:9140ec6aa604 1776 sgl.CurItem.TextPar[0].Ps = GuiLib_PS_OFF;
jmitc91516 0:9140ec6aa604 1777 sgl.CurItem.TextPar[0].BitFlags = 0;
jmitc91516 0:9140ec6aa604 1778 sgl.CurItem.TextPar[0].BackBoxSizeX = 0;
jmitc91516 0:9140ec6aa604 1779 sgl.CurItem.TextPar[0].BackBorderPixels = 0;
jmitc91516 0:9140ec6aa604 1780 DrawText(sgl.ScrollBoxesAry[ScrollBoxIndex].BarIconPtr, 1, 0,
jmitc91516 0:9140ec6aa604 1781 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor,
jmitc91516 0:9140ec6aa604 1782 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor,
jmitc91516 0:9140ec6aa604 1783 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerTransparent);
jmitc91516 0:9140ec6aa604 1784 break;
jmitc91516 0:9140ec6aa604 1785
jmitc91516 0:9140ec6aa604 1786 case GuiLib_MARKER_BITMAP:
jmitc91516 0:9140ec6aa604 1787 if (sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIsTransparent)
jmitc91516 0:9140ec6aa604 1788 BackColor =
jmitc91516 0:9140ec6aa604 1789 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapTranspColor;
jmitc91516 0:9140ec6aa604 1790 else
jmitc91516 0:9140ec6aa604 1791 BackColor = -1;
jmitc91516 0:9140ec6aa604 1792 GuiLib_ShowBitmap(sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIndex,
jmitc91516 0:9140ec6aa604 1793 X1, Y1 + BarMarkerY, BackColor);
jmitc91516 0:9140ec6aa604 1794 break;
jmitc91516 0:9140ec6aa604 1795
jmitc91516 0:9140ec6aa604 1796 case GuiLib_MARKER_FIXED_BLOCK:
jmitc91516 0:9140ec6aa604 1797 case GuiLib_MARKER_VARIABLE_BLOCK:
jmitc91516 0:9140ec6aa604 1798 if (sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerTransparent)
jmitc91516 0:9140ec6aa604 1799 GuiLib_Box(X1, Y1 + BarMarkerY,
jmitc91516 0:9140ec6aa604 1800 X1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeX -
jmitc91516 0:9140ec6aa604 1801 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerLeftOffset -
jmitc91516 0:9140ec6aa604 1802 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerRightOffset - 1,
jmitc91516 0:9140ec6aa604 1803 Y1 + BarMarkerY + BarMarkerHeight - 1,
jmitc91516 0:9140ec6aa604 1804 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor);
jmitc91516 0:9140ec6aa604 1805 else
jmitc91516 0:9140ec6aa604 1806 GuiLib_BorderBox(X1, Y1 + BarMarkerY,
jmitc91516 0:9140ec6aa604 1807 X1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeX -
jmitc91516 0:9140ec6aa604 1808 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerLeftOffset -
jmitc91516 0:9140ec6aa604 1809 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerRightOffset - 1,
jmitc91516 0:9140ec6aa604 1810 Y1 + BarMarkerY + BarMarkerHeight - 1,
jmitc91516 0:9140ec6aa604 1811 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor,
jmitc91516 0:9140ec6aa604 1812 sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor);
jmitc91516 0:9140ec6aa604 1813 break;
jmitc91516 0:9140ec6aa604 1814 }
jmitc91516 0:9140ec6aa604 1815
jmitc91516 0:9140ec6aa604 1816 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1817 sgl.CurItem.ClipRectX1 = RemClippingX1;
jmitc91516 0:9140ec6aa604 1818 sgl.CurItem.ClipRectY1 = RemClippingY1;
jmitc91516 0:9140ec6aa604 1819 sgl.CurItem.ClipRectX2 = RemClippingX2;
jmitc91516 0:9140ec6aa604 1820 sgl.CurItem.ClipRectY2 = RemClippingY2;
jmitc91516 0:9140ec6aa604 1821 GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1,
jmitc91516 0:9140ec6aa604 1822 sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2);
jmitc91516 0:9140ec6aa604 1823 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1824 }
jmitc91516 0:9140ec6aa604 1825 }
jmitc91516 0:9140ec6aa604 1826 #endif
jmitc91516 0:9140ec6aa604 1827
jmitc91516 0:9140ec6aa604 1828 #ifndef GuiConst_SCROLLITEM_INDICATOR_NONE
jmitc91516 0:9140ec6aa604 1829 if (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorType != GuiLib_INDICATOR_NONE)
jmitc91516 0:9140ec6aa604 1830 {
jmitc91516 0:9140ec6aa604 1831 SX1 = sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorPositionX;
jmitc91516 0:9140ec6aa604 1832 SY1 = sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorPositionY;
jmitc91516 0:9140ec6aa604 1833 X1 = SX1 + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerLeftOffset;
jmitc91516 0:9140ec6aa604 1834 Y1 = SY1 + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerTopOffset;
jmitc91516 0:9140ec6aa604 1835 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1836 SX2 = SX1 + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeX - 1;
jmitc91516 0:9140ec6aa604 1837 SY2 = SY1 + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeY - 1;
jmitc91516 0:9140ec6aa604 1838 X2 = SX2 - sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerRightOffset;
jmitc91516 0:9140ec6aa604 1839 Y2 = SY2 - sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBottomOffset;
jmitc91516 0:9140ec6aa604 1840 RemClippingX1 = sgl.CurItem.ClipRectX1;
jmitc91516 0:9140ec6aa604 1841 RemClippingY1 = sgl.CurItem.ClipRectY1;
jmitc91516 0:9140ec6aa604 1842 RemClippingX2 = sgl.CurItem.ClipRectX2;
jmitc91516 0:9140ec6aa604 1843 RemClippingY2 = sgl.CurItem.ClipRectY2;
jmitc91516 0:9140ec6aa604 1844 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX1, SX1, SX2);
jmitc91516 0:9140ec6aa604 1845 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY1, SY1, SY2);
jmitc91516 0:9140ec6aa604 1846 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX2, SX1, SX2);
jmitc91516 0:9140ec6aa604 1847 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY2, SY1, SY2);
jmitc91516 0:9140ec6aa604 1848 GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1,
jmitc91516 0:9140ec6aa604 1849 sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2);
jmitc91516 0:9140ec6aa604 1850 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1851
jmitc91516 0:9140ec6aa604 1852 StructToCallIndex = sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorStructIndex;
jmitc91516 0:9140ec6aa604 1853 if (StructToCallIndex != 0xFFFF)
jmitc91516 0:9140ec6aa604 1854 {
jmitc91516 0:9140ec6aa604 1855 ScrollBox_ShowBarBlock(
jmitc91516 0:9140ec6aa604 1856 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor,
jmitc91516 0:9140ec6aa604 1857 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor,
jmitc91516 0:9140ec6aa604 1858 0,
jmitc91516 0:9140ec6aa604 1859 SX1,
jmitc91516 0:9140ec6aa604 1860 SY1,
jmitc91516 0:9140ec6aa604 1861 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeX,
jmitc91516 0:9140ec6aa604 1862 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeY);
jmitc91516 0:9140ec6aa604 1863
jmitc91516 0:9140ec6aa604 1864 sgl.DisplayLevel++;
jmitc91516 0:9140ec6aa604 1865 memcpy(&sgl.CurItem,
jmitc91516 0:9140ec6aa604 1866 &sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxItem,
jmitc91516 0:9140ec6aa604 1867 sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 1868 sgl.CurItem.RX = SX1;
jmitc91516 0:9140ec6aa604 1869 sgl.CurItem.RY = SY1;
jmitc91516 0:9140ec6aa604 1870 StructToCall = (GuiLib_StructPtr)
jmitc91516 0:9140ec6aa604 1871 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 1872 GetRemoteStructData(StructToCallIndex);
jmitc91516 0:9140ec6aa604 1873 #else
jmitc91516 0:9140ec6aa604 1874 (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[StructToCallIndex]);
jmitc91516 0:9140ec6aa604 1875 #endif
jmitc91516 0:9140ec6aa604 1876 DrawStructure(StructToCall, GuiLib_COL_INVERT_OFF);
jmitc91516 0:9140ec6aa604 1877 ResetLayerBufPtr();
jmitc91516 0:9140ec6aa604 1878 sgl.DisplayLevel--;
jmitc91516 0:9140ec6aa604 1879 }
jmitc91516 0:9140ec6aa604 1880 else
jmitc91516 0:9140ec6aa604 1881 ScrollBox_ShowBarBlock(
jmitc91516 0:9140ec6aa604 1882 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor,
jmitc91516 0:9140ec6aa604 1883 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor,
jmitc91516 0:9140ec6aa604 1884 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorThickness,
jmitc91516 0:9140ec6aa604 1885 SX1,
jmitc91516 0:9140ec6aa604 1886 SY1,
jmitc91516 0:9140ec6aa604 1887 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeX,
jmitc91516 0:9140ec6aa604 1888 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeY);
jmitc91516 0:9140ec6aa604 1889
jmitc91516 0:9140ec6aa604 1890 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1891 sgl.CurItem.ClipRectX1 = RemClippingX1;
jmitc91516 0:9140ec6aa604 1892 sgl.CurItem.ClipRectY1 = RemClippingY1;
jmitc91516 0:9140ec6aa604 1893 sgl.CurItem.ClipRectX2 = RemClippingX2;
jmitc91516 0:9140ec6aa604 1894 sgl.CurItem.ClipRectY2 = RemClippingY2;
jmitc91516 0:9140ec6aa604 1895 GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1,
jmitc91516 0:9140ec6aa604 1896 sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2);
jmitc91516 0:9140ec6aa604 1897 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1898
jmitc91516 0:9140ec6aa604 1899 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorLine >= 0) &&
jmitc91516 0:9140ec6aa604 1900 (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorLine >=
jmitc91516 0:9140ec6aa604 1901 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine) &&
jmitc91516 0:9140ec6aa604 1902 (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorLine <
jmitc91516 0:9140ec6aa604 1903 (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine +
jmitc91516 0:9140ec6aa604 1904 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines)))
jmitc91516 0:9140ec6aa604 1905 {
jmitc91516 0:9140ec6aa604 1906 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1907 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX1, X1, X2);
jmitc91516 0:9140ec6aa604 1908 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY1, Y1, Y2);
jmitc91516 0:9140ec6aa604 1909 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX2, X1, X2);
jmitc91516 0:9140ec6aa604 1910 GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY2, Y1, Y2);
jmitc91516 0:9140ec6aa604 1911 GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1,
jmitc91516 0:9140ec6aa604 1912 sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2);
jmitc91516 0:9140ec6aa604 1913 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1914
jmitc91516 0:9140ec6aa604 1915 switch (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorType)
jmitc91516 0:9140ec6aa604 1916 {
jmitc91516 0:9140ec6aa604 1917 case GuiLib_MARKER_ICON:
jmitc91516 0:9140ec6aa604 1918 sgl.CurFont = (GuiLib_FontRecPtr)ReadWord(GuiFont_FontList[
jmitc91516 0:9140ec6aa604 1919 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerIconFont]);
jmitc91516 0:9140ec6aa604 1920 sgl.CurItem.X1 =
jmitc91516 0:9140ec6aa604 1921 X1 + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerIconOffsetX;
jmitc91516 0:9140ec6aa604 1922 sgl.CurItem.Y1 =
jmitc91516 0:9140ec6aa604 1923 Y1 + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerIconOffsetY +
jmitc91516 0:9140ec6aa604 1924 sgl.CurFont->BaseLine +
jmitc91516 0:9140ec6aa604 1925 sgl.ScrollBoxesAry[ScrollBoxIndex].LineVerticalOffset *
jmitc91516 0:9140ec6aa604 1926 (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorLine -
jmitc91516 0:9140ec6aa604 1927 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine);
jmitc91516 0:9140ec6aa604 1928 sgl.CurItem.TextPar[0].FontIndex =
jmitc91516 0:9140ec6aa604 1929 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerIconFont;
jmitc91516 0:9140ec6aa604 1930 sgl.CurItem.TextPar[0].Alignment = GuiLib_ALIGN_LEFT;
jmitc91516 0:9140ec6aa604 1931 sgl.CurItem.TextPar[0].Ps = GuiLib_PS_OFF;
jmitc91516 0:9140ec6aa604 1932 sgl.CurItem.TextPar[0].BitFlags = 0;
jmitc91516 0:9140ec6aa604 1933 sgl.CurItem.TextPar[0].BackBoxSizeX = 0;
jmitc91516 0:9140ec6aa604 1934 sgl.CurItem.TextPar[0].BackBorderPixels = 0;
jmitc91516 0:9140ec6aa604 1935 DrawText(sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorIconPtr, 1, 0,
jmitc91516 0:9140ec6aa604 1936 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor,
jmitc91516 0:9140ec6aa604 1937 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor,
jmitc91516 0:9140ec6aa604 1938 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerTransparent);
jmitc91516 0:9140ec6aa604 1939 break;
jmitc91516 0:9140ec6aa604 1940
jmitc91516 0:9140ec6aa604 1941 case GuiLib_MARKER_BITMAP:
jmitc91516 0:9140ec6aa604 1942 if (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapIsTransparent)
jmitc91516 0:9140ec6aa604 1943 BackColor =
jmitc91516 0:9140ec6aa604 1944 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapTranspColor;
jmitc91516 0:9140ec6aa604 1945 else
jmitc91516 0:9140ec6aa604 1946 BackColor = -1;
jmitc91516 0:9140ec6aa604 1947 GuiLib_ShowBitmap(
jmitc91516 0:9140ec6aa604 1948 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapIndex,
jmitc91516 0:9140ec6aa604 1949 X1, Y1 + sgl.ScrollBoxesAry[ScrollBoxIndex].LineVerticalOffset *
jmitc91516 0:9140ec6aa604 1950 (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorLine -
jmitc91516 0:9140ec6aa604 1951 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine), BackColor);
jmitc91516 0:9140ec6aa604 1952 break;
jmitc91516 0:9140ec6aa604 1953 }
jmitc91516 0:9140ec6aa604 1954 }
jmitc91516 0:9140ec6aa604 1955 }
jmitc91516 0:9140ec6aa604 1956 #endif // GuiConst_SCROLLITEM_INDICATOR_NONE
jmitc91516 0:9140ec6aa604 1957
jmitc91516 0:9140ec6aa604 1958 memcpy(&sgl.CurItem, &RemCurItem, sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 1959
jmitc91516 0:9140ec6aa604 1960 return (1);
jmitc91516 0:9140ec6aa604 1961 }
jmitc91516 0:9140ec6aa604 1962
jmitc91516 0:9140ec6aa604 1963 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1964 GuiConst_INT8U GuiLib_ScrollBox_RedrawLine(
jmitc91516 0:9140ec6aa604 1965 GuiConst_INT8U ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 1966 GuiConst_INT16U ScrollLine)
jmitc91516 0:9140ec6aa604 1967 {
jmitc91516 0:9140ec6aa604 1968 GuiLib_ItemRec RemCurItem;
jmitc91516 0:9140ec6aa604 1969
jmitc91516 0:9140ec6aa604 1970 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 1971 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED) ||
jmitc91516 0:9140ec6aa604 1972 (ScrollLine > (sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1)) ||
jmitc91516 0:9140ec6aa604 1973 (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollLineDataFunc == 0))
jmitc91516 0:9140ec6aa604 1974 return (0);
jmitc91516 0:9140ec6aa604 1975
jmitc91516 0:9140ec6aa604 1976 memcpy(&RemCurItem, &sgl.CurItem, sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 1977 sgl.GlobalScrollBoxIndex = ScrollBoxIndex;
jmitc91516 0:9140ec6aa604 1978
jmitc91516 0:9140ec6aa604 1979 ScrollBox_DrawScrollLine(ScrollBoxIndex, ScrollLine);
jmitc91516 0:9140ec6aa604 1980
jmitc91516 0:9140ec6aa604 1981 memcpy(&sgl.CurItem, &RemCurItem, sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 1982
jmitc91516 0:9140ec6aa604 1983 return (1);
jmitc91516 0:9140ec6aa604 1984 }
jmitc91516 0:9140ec6aa604 1985
jmitc91516 0:9140ec6aa604 1986 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1987 GuiConst_INT8U GuiLib_ScrollBox_Close(
jmitc91516 0:9140ec6aa604 1988 GuiConst_INT8U ScrollBoxIndex)
jmitc91516 0:9140ec6aa604 1989 {
jmitc91516 0:9140ec6aa604 1990 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 1991 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 1992 return (0);
jmitc91516 0:9140ec6aa604 1993
jmitc91516 0:9140ec6aa604 1994 sgl.ScrollBoxesAry[ScrollBoxIndex].InUse = GuiLib_SCROLL_STRUCTURE_READ;
jmitc91516 0:9140ec6aa604 1995
jmitc91516 0:9140ec6aa604 1996 return (1);
jmitc91516 0:9140ec6aa604 1997 }
jmitc91516 0:9140ec6aa604 1998
jmitc91516 0:9140ec6aa604 1999 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2000 GuiConst_INT8U GuiLib_ScrollBox_Down(
jmitc91516 0:9140ec6aa604 2001 GuiConst_INT8U ScrollBoxIndex)
jmitc91516 0:9140ec6aa604 2002 {
jmitc91516 0:9140ec6aa604 2003 GuiConst_INT16U ScrollBottomLine;
jmitc91516 0:9140ec6aa604 2004 GuiConst_INT16S RemScrollTopLine;
jmitc91516 0:9140ec6aa604 2005 GuiConst_INT16S RemMarkerStartLine;
jmitc91516 0:9140ec6aa604 2006
jmitc91516 0:9140ec6aa604 2007 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 2008 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 2009 return (0);
jmitc91516 0:9140ec6aa604 2010
jmitc91516 0:9140ec6aa604 2011 RemScrollTopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine;
jmitc91516 0:9140ec6aa604 2012 RemMarkerStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0];
jmitc91516 0:9140ec6aa604 2013
jmitc91516 0:9140ec6aa604 2014 ScrollBottomLine = (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine +
jmitc91516 0:9140ec6aa604 2015 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines - 1);
jmitc91516 0:9140ec6aa604 2016
jmitc91516 0:9140ec6aa604 2017 if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxType)
jmitc91516 0:9140ec6aa604 2018 {
jmitc91516 0:9140ec6aa604 2019 if (ScrollBottomLine >= (sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1))
jmitc91516 0:9140ec6aa604 2020 {
jmitc91516 0:9140ec6aa604 2021 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 1)
jmitc91516 0:9140ec6aa604 2022 #ifdef GuiConst_SCROLL_MODE_WRAP_AROUND
jmitc91516 0:9140ec6aa604 2023 || (sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 2)
jmitc91516 0:9140ec6aa604 2024 #endif
jmitc91516 0:9140ec6aa604 2025 )
jmitc91516 0:9140ec6aa604 2026 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = 0;
jmitc91516 0:9140ec6aa604 2027 }
jmitc91516 0:9140ec6aa604 2028 else
jmitc91516 0:9140ec6aa604 2029 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine++;
jmitc91516 0:9140ec6aa604 2030 }
jmitc91516 0:9140ec6aa604 2031 else if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] >= 0)
jmitc91516 0:9140ec6aa604 2032 {
jmitc91516 0:9140ec6aa604 2033 if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0)
jmitc91516 0:9140ec6aa604 2034 {
jmitc91516 0:9140ec6aa604 2035 if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] ==
jmitc91516 0:9140ec6aa604 2036 (sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1))
jmitc91516 0:9140ec6aa604 2037 {
jmitc91516 0:9140ec6aa604 2038 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 1)
jmitc91516 0:9140ec6aa604 2039 #ifdef GuiConst_SCROLL_MODE_WRAP_AROUND
jmitc91516 0:9140ec6aa604 2040 || (sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 2)
jmitc91516 0:9140ec6aa604 2041 #endif
jmitc91516 0:9140ec6aa604 2042 )
jmitc91516 0:9140ec6aa604 2043 {
jmitc91516 0:9140ec6aa604 2044 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = 0;
jmitc91516 0:9140ec6aa604 2045 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] = 0;
jmitc91516 0:9140ec6aa604 2046 }
jmitc91516 0:9140ec6aa604 2047 }
jmitc91516 0:9140ec6aa604 2048 else if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] <
jmitc91516 0:9140ec6aa604 2049 ScrollBottomLine - sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs)
jmitc91516 0:9140ec6aa604 2050 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]++;
jmitc91516 0:9140ec6aa604 2051 else
jmitc91516 0:9140ec6aa604 2052 {
jmitc91516 0:9140ec6aa604 2053 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine++;
jmitc91516 0:9140ec6aa604 2054 GuiLib_LIMIT_MAX(sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine,
jmitc91516 0:9140ec6aa604 2055 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines -
jmitc91516 0:9140ec6aa604 2056 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines);
jmitc91516 0:9140ec6aa604 2057 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]++;
jmitc91516 0:9140ec6aa604 2058 }
jmitc91516 0:9140ec6aa604 2059 }
jmitc91516 0:9140ec6aa604 2060 else
jmitc91516 0:9140ec6aa604 2061 {
jmitc91516 0:9140ec6aa604 2062 if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] ==
jmitc91516 0:9140ec6aa604 2063 (sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1))
jmitc91516 0:9140ec6aa604 2064 {
jmitc91516 0:9140ec6aa604 2065 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 1)
jmitc91516 0:9140ec6aa604 2066 #ifdef GuiConst_SCROLL_MODE_WRAP_AROUND
jmitc91516 0:9140ec6aa604 2067 || (sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 2)
jmitc91516 0:9140ec6aa604 2068 #endif
jmitc91516 0:9140ec6aa604 2069 )
jmitc91516 0:9140ec6aa604 2070 {
jmitc91516 0:9140ec6aa604 2071 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine =
jmitc91516 0:9140ec6aa604 2072 -sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs;
jmitc91516 0:9140ec6aa604 2073 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] = 0;
jmitc91516 0:9140ec6aa604 2074 }
jmitc91516 0:9140ec6aa604 2075 }
jmitc91516 0:9140ec6aa604 2076 else
jmitc91516 0:9140ec6aa604 2077 {
jmitc91516 0:9140ec6aa604 2078 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine++;
jmitc91516 0:9140ec6aa604 2079 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]++;
jmitc91516 0:9140ec6aa604 2080 }
jmitc91516 0:9140ec6aa604 2081 }
jmitc91516 0:9140ec6aa604 2082 }
jmitc91516 0:9140ec6aa604 2083
jmitc91516 0:9140ec6aa604 2084 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine != RemScrollTopLine) ||
jmitc91516 0:9140ec6aa604 2085 (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] != RemMarkerStartLine))
jmitc91516 0:9140ec6aa604 2086 {
jmitc91516 0:9140ec6aa604 2087 GuiLib_ScrollBox_Redraw(ScrollBoxIndex);
jmitc91516 0:9140ec6aa604 2088 return (1);
jmitc91516 0:9140ec6aa604 2089 }
jmitc91516 0:9140ec6aa604 2090 else
jmitc91516 0:9140ec6aa604 2091 return (0);
jmitc91516 0:9140ec6aa604 2092 }
jmitc91516 0:9140ec6aa604 2093
jmitc91516 0:9140ec6aa604 2094 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2095 GuiConst_INT8U GuiLib_ScrollBox_Up(
jmitc91516 0:9140ec6aa604 2096 GuiConst_INT8U ScrollBoxIndex)
jmitc91516 0:9140ec6aa604 2097 {
jmitc91516 0:9140ec6aa604 2098 GuiConst_INT16S RemScrollTopLine;
jmitc91516 0:9140ec6aa604 2099 GuiConst_INT16S RemMarkerStartLine;
jmitc91516 0:9140ec6aa604 2100
jmitc91516 0:9140ec6aa604 2101 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 2102 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 2103 return (0);
jmitc91516 0:9140ec6aa604 2104
jmitc91516 0:9140ec6aa604 2105 RemScrollTopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine;
jmitc91516 0:9140ec6aa604 2106 RemMarkerStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0];
jmitc91516 0:9140ec6aa604 2107
jmitc91516 0:9140ec6aa604 2108 if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxType)
jmitc91516 0:9140ec6aa604 2109 {
jmitc91516 0:9140ec6aa604 2110 if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine == 0)
jmitc91516 0:9140ec6aa604 2111 {
jmitc91516 0:9140ec6aa604 2112 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 1)
jmitc91516 0:9140ec6aa604 2113 #ifdef GuiConst_SCROLL_MODE_WRAP_AROUND
jmitc91516 0:9140ec6aa604 2114 || (sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 2)
jmitc91516 0:9140ec6aa604 2115 #endif
jmitc91516 0:9140ec6aa604 2116 )
jmitc91516 0:9140ec6aa604 2117 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine =
jmitc91516 0:9140ec6aa604 2118 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines -
jmitc91516 0:9140ec6aa604 2119 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines;
jmitc91516 0:9140ec6aa604 2120 GuiLib_LIMIT_MIN(sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine, 0);
jmitc91516 0:9140ec6aa604 2121 }
jmitc91516 0:9140ec6aa604 2122 else
jmitc91516 0:9140ec6aa604 2123 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine--;
jmitc91516 0:9140ec6aa604 2124 }
jmitc91516 0:9140ec6aa604 2125 else if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] >= 0)
jmitc91516 0:9140ec6aa604 2126 {
jmitc91516 0:9140ec6aa604 2127 if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0)
jmitc91516 0:9140ec6aa604 2128 {
jmitc91516 0:9140ec6aa604 2129 if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] == 0)
jmitc91516 0:9140ec6aa604 2130 {
jmitc91516 0:9140ec6aa604 2131 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 1)
jmitc91516 0:9140ec6aa604 2132 #ifdef GuiConst_SCROLL_MODE_WRAP_AROUND
jmitc91516 0:9140ec6aa604 2133 || (sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 2)
jmitc91516 0:9140ec6aa604 2134 #endif
jmitc91516 0:9140ec6aa604 2135 )
jmitc91516 0:9140ec6aa604 2136 {
jmitc91516 0:9140ec6aa604 2137 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine =
jmitc91516 0:9140ec6aa604 2138 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines -
jmitc91516 0:9140ec6aa604 2139 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines;
jmitc91516 0:9140ec6aa604 2140 GuiLib_LIMIT_MIN(sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine, 0);
jmitc91516 0:9140ec6aa604 2141 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] =
jmitc91516 0:9140ec6aa604 2142 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1;
jmitc91516 0:9140ec6aa604 2143 }
jmitc91516 0:9140ec6aa604 2144 }
jmitc91516 0:9140ec6aa604 2145 else if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] >
jmitc91516 0:9140ec6aa604 2146 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine +
jmitc91516 0:9140ec6aa604 2147 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs)
jmitc91516 0:9140ec6aa604 2148 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]--;
jmitc91516 0:9140ec6aa604 2149 else
jmitc91516 0:9140ec6aa604 2150 {
jmitc91516 0:9140ec6aa604 2151 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine--;
jmitc91516 0:9140ec6aa604 2152 GuiLib_LIMIT_MIN(sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine, 0);
jmitc91516 0:9140ec6aa604 2153 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]--;
jmitc91516 0:9140ec6aa604 2154 }
jmitc91516 0:9140ec6aa604 2155 }
jmitc91516 0:9140ec6aa604 2156 else
jmitc91516 0:9140ec6aa604 2157 {
jmitc91516 0:9140ec6aa604 2158 if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] == 0)
jmitc91516 0:9140ec6aa604 2159 {
jmitc91516 0:9140ec6aa604 2160 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 1)
jmitc91516 0:9140ec6aa604 2161 #ifdef GuiConst_SCROLL_MODE_WRAP_AROUND
jmitc91516 0:9140ec6aa604 2162 || (sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 2)
jmitc91516 0:9140ec6aa604 2163 #endif
jmitc91516 0:9140ec6aa604 2164 )
jmitc91516 0:9140ec6aa604 2165 {
jmitc91516 0:9140ec6aa604 2166 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine =
jmitc91516 0:9140ec6aa604 2167 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1 -
jmitc91516 0:9140ec6aa604 2168 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs;
jmitc91516 0:9140ec6aa604 2169 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] =
jmitc91516 0:9140ec6aa604 2170 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1;
jmitc91516 0:9140ec6aa604 2171 }
jmitc91516 0:9140ec6aa604 2172 }
jmitc91516 0:9140ec6aa604 2173 else
jmitc91516 0:9140ec6aa604 2174 {
jmitc91516 0:9140ec6aa604 2175 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine--;
jmitc91516 0:9140ec6aa604 2176 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]--;
jmitc91516 0:9140ec6aa604 2177 }
jmitc91516 0:9140ec6aa604 2178 }
jmitc91516 0:9140ec6aa604 2179 }
jmitc91516 0:9140ec6aa604 2180
jmitc91516 0:9140ec6aa604 2181 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine != RemScrollTopLine) ||
jmitc91516 0:9140ec6aa604 2182 (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] != RemMarkerStartLine))
jmitc91516 0:9140ec6aa604 2183 {
jmitc91516 0:9140ec6aa604 2184 GuiLib_ScrollBox_Redraw(ScrollBoxIndex);
jmitc91516 0:9140ec6aa604 2185 return (1);
jmitc91516 0:9140ec6aa604 2186 }
jmitc91516 0:9140ec6aa604 2187 else
jmitc91516 0:9140ec6aa604 2188 return (0);
jmitc91516 0:9140ec6aa604 2189 }
jmitc91516 0:9140ec6aa604 2190
jmitc91516 0:9140ec6aa604 2191 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2192 GuiConst_INT8U GuiLib_ScrollBox_Home(
jmitc91516 0:9140ec6aa604 2193 GuiConst_INT8U ScrollBoxIndex)
jmitc91516 0:9140ec6aa604 2194 {
jmitc91516 0:9140ec6aa604 2195 GuiConst_INT16S RemScrollTopLine;
jmitc91516 0:9140ec6aa604 2196 GuiConst_INT16S RemMarkerStartLine;
jmitc91516 0:9140ec6aa604 2197
jmitc91516 0:9140ec6aa604 2198 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 2199 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 2200 return (0);
jmitc91516 0:9140ec6aa604 2201
jmitc91516 0:9140ec6aa604 2202 RemScrollTopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine;
jmitc91516 0:9140ec6aa604 2203 RemMarkerStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0];
jmitc91516 0:9140ec6aa604 2204
jmitc91516 0:9140ec6aa604 2205 if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxType)
jmitc91516 0:9140ec6aa604 2206 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = 0;
jmitc91516 0:9140ec6aa604 2207 else
jmitc91516 0:9140ec6aa604 2208 {
jmitc91516 0:9140ec6aa604 2209 if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0)
jmitc91516 0:9140ec6aa604 2210 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = 0;
jmitc91516 0:9140ec6aa604 2211 else
jmitc91516 0:9140ec6aa604 2212 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine =
jmitc91516 0:9140ec6aa604 2213 -sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs;
jmitc91516 0:9140ec6aa604 2214 if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] >= 0)
jmitc91516 0:9140ec6aa604 2215 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] = 0;
jmitc91516 0:9140ec6aa604 2216 }
jmitc91516 0:9140ec6aa604 2217
jmitc91516 0:9140ec6aa604 2218 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine != RemScrollTopLine) ||
jmitc91516 0:9140ec6aa604 2219 (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] != RemMarkerStartLine))
jmitc91516 0:9140ec6aa604 2220 {
jmitc91516 0:9140ec6aa604 2221 GuiLib_ScrollBox_Redraw(ScrollBoxIndex);
jmitc91516 0:9140ec6aa604 2222 return (1);
jmitc91516 0:9140ec6aa604 2223 }
jmitc91516 0:9140ec6aa604 2224 else
jmitc91516 0:9140ec6aa604 2225 return (0);
jmitc91516 0:9140ec6aa604 2226 }
jmitc91516 0:9140ec6aa604 2227
jmitc91516 0:9140ec6aa604 2228 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2229 GuiConst_INT8U GuiLib_ScrollBox_End(
jmitc91516 0:9140ec6aa604 2230 GuiConst_INT8U ScrollBoxIndex)
jmitc91516 0:9140ec6aa604 2231 {
jmitc91516 0:9140ec6aa604 2232 GuiConst_INT16S RemScrollTopLine;
jmitc91516 0:9140ec6aa604 2233 GuiConst_INT16S RemMarkerStartLine;
jmitc91516 0:9140ec6aa604 2234
jmitc91516 0:9140ec6aa604 2235 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 2236 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 2237 return (0);
jmitc91516 0:9140ec6aa604 2238
jmitc91516 0:9140ec6aa604 2239 RemScrollTopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine;
jmitc91516 0:9140ec6aa604 2240 RemMarkerStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0];
jmitc91516 0:9140ec6aa604 2241
jmitc91516 0:9140ec6aa604 2242 if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxType)
jmitc91516 0:9140ec6aa604 2243 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = GuiLib_GET_MAX(
jmitc91516 0:9140ec6aa604 2244 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines -
jmitc91516 0:9140ec6aa604 2245 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines, 0);
jmitc91516 0:9140ec6aa604 2246 else
jmitc91516 0:9140ec6aa604 2247 {
jmitc91516 0:9140ec6aa604 2248 if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0)
jmitc91516 0:9140ec6aa604 2249 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = GuiLib_GET_MAX(
jmitc91516 0:9140ec6aa604 2250 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines -
jmitc91516 0:9140ec6aa604 2251 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines, 0);
jmitc91516 0:9140ec6aa604 2252 else
jmitc91516 0:9140ec6aa604 2253 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine =
jmitc91516 0:9140ec6aa604 2254 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1 -
jmitc91516 0:9140ec6aa604 2255 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs;
jmitc91516 0:9140ec6aa604 2256 if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] >= 0)
jmitc91516 0:9140ec6aa604 2257 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] =
jmitc91516 0:9140ec6aa604 2258 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1;
jmitc91516 0:9140ec6aa604 2259 }
jmitc91516 0:9140ec6aa604 2260
jmitc91516 0:9140ec6aa604 2261 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine != RemScrollTopLine) ||
jmitc91516 0:9140ec6aa604 2262 (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] != RemMarkerStartLine))
jmitc91516 0:9140ec6aa604 2263 {
jmitc91516 0:9140ec6aa604 2264 GuiLib_ScrollBox_Redraw(ScrollBoxIndex);
jmitc91516 0:9140ec6aa604 2265 return (1);
jmitc91516 0:9140ec6aa604 2266 }
jmitc91516 0:9140ec6aa604 2267 else
jmitc91516 0:9140ec6aa604 2268 return (0);
jmitc91516 0:9140ec6aa604 2269 }
jmitc91516 0:9140ec6aa604 2270
jmitc91516 0:9140ec6aa604 2271 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2272 GuiConst_INT8U GuiLib_ScrollBox_To_Line(
jmitc91516 0:9140ec6aa604 2273 GuiConst_INT8U ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 2274 GuiConst_INT16S NewLine)
jmitc91516 0:9140ec6aa604 2275 {
jmitc91516 0:9140ec6aa604 2276 GuiConst_INT16S RemScrollTopLine;
jmitc91516 0:9140ec6aa604 2277 GuiConst_INT16S RemMarkerStartLine;
jmitc91516 0:9140ec6aa604 2278 GuiConst_INT16S TopLine;
jmitc91516 0:9140ec6aa604 2279 GuiConst_INT16S LowerLimtA = 0;
jmitc91516 0:9140ec6aa604 2280
jmitc91516 0:9140ec6aa604 2281 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 2282 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED) ||
jmitc91516 0:9140ec6aa604 2283 (NewLine >= sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines))
jmitc91516 0:9140ec6aa604 2284 return(0);
jmitc91516 0:9140ec6aa604 2285
jmitc91516 0:9140ec6aa604 2286 RemScrollTopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine;
jmitc91516 0:9140ec6aa604 2287 RemMarkerStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0];
jmitc91516 0:9140ec6aa604 2288
jmitc91516 0:9140ec6aa604 2289 if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxType)
jmitc91516 0:9140ec6aa604 2290 {
jmitc91516 0:9140ec6aa604 2291 TopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines -
jmitc91516 0:9140ec6aa604 2292 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines;
jmitc91516 0:9140ec6aa604 2293 GuiLib_LIMIT_MIN(TopLine, 0);
jmitc91516 0:9140ec6aa604 2294 if (NewLine > TopLine)
jmitc91516 0:9140ec6aa604 2295 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = TopLine;
jmitc91516 0:9140ec6aa604 2296 else
jmitc91516 0:9140ec6aa604 2297 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = NewLine;
jmitc91516 0:9140ec6aa604 2298 }
jmitc91516 0:9140ec6aa604 2299 else if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0)
jmitc91516 0:9140ec6aa604 2300 {
jmitc91516 0:9140ec6aa604 2301 if ((NewLine != -1) &&
jmitc91516 0:9140ec6aa604 2302 ((NewLine < sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine) ||
jmitc91516 0:9140ec6aa604 2303 (NewLine >= (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine +
jmitc91516 0:9140ec6aa604 2304 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines))))
jmitc91516 0:9140ec6aa604 2305 {
jmitc91516 0:9140ec6aa604 2306 if (NewLine > (sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines -
jmitc91516 0:9140ec6aa604 2307 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines +
jmitc91516 0:9140ec6aa604 2308 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs))
jmitc91516 0:9140ec6aa604 2309 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine =
jmitc91516 0:9140ec6aa604 2310 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines -
jmitc91516 0:9140ec6aa604 2311 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines;
jmitc91516 0:9140ec6aa604 2312 else
jmitc91516 0:9140ec6aa604 2313 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine =
jmitc91516 0:9140ec6aa604 2314 NewLine - sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs;
jmitc91516 0:9140ec6aa604 2315
jmitc91516 0:9140ec6aa604 2316 GuiLib_LIMIT_MINMAX(sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine,
jmitc91516 0:9140ec6aa604 2317 NewLine - sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines + 1,
jmitc91516 0:9140ec6aa604 2318 NewLine + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines - 1);
jmitc91516 0:9140ec6aa604 2319 GuiLib_LIMIT_MINMAX(sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine, LowerLimtA,
jmitc91516 0:9140ec6aa604 2320 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines -
jmitc91516 0:9140ec6aa604 2321 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines);
jmitc91516 0:9140ec6aa604 2322 }
jmitc91516 0:9140ec6aa604 2323 }
jmitc91516 0:9140ec6aa604 2324 else
jmitc91516 0:9140ec6aa604 2325 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine =
jmitc91516 0:9140ec6aa604 2326 NewLine - sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs;
jmitc91516 0:9140ec6aa604 2327 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] = NewLine;
jmitc91516 0:9140ec6aa604 2328
jmitc91516 0:9140ec6aa604 2329 if ((sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine != RemScrollTopLine) ||
jmitc91516 0:9140ec6aa604 2330 (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] != RemMarkerStartLine))
jmitc91516 0:9140ec6aa604 2331 {
jmitc91516 0:9140ec6aa604 2332 GuiLib_ScrollBox_Redraw(ScrollBoxIndex);
jmitc91516 0:9140ec6aa604 2333 return (1);
jmitc91516 0:9140ec6aa604 2334 }
jmitc91516 0:9140ec6aa604 2335 else
jmitc91516 0:9140ec6aa604 2336 return (0);
jmitc91516 0:9140ec6aa604 2337 }
jmitc91516 0:9140ec6aa604 2338
jmitc91516 0:9140ec6aa604 2339 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2340 GuiConst_INT8U GuiLib_ScrollBox_SetLineMarker(
jmitc91516 0:9140ec6aa604 2341 GuiConst_INT8U ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 2342 GuiConst_INT16U ScrollLineMarkerIndex,
jmitc91516 0:9140ec6aa604 2343 GuiConst_INT16S StartLine,
jmitc91516 0:9140ec6aa604 2344 GuiConst_INT16U Size)
jmitc91516 0:9140ec6aa604 2345 {
jmitc91516 0:9140ec6aa604 2346 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 2347 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED) ||
jmitc91516 0:9140ec6aa604 2348 (ScrollLineMarkerIndex >= GuiConst_SCROLLITEM_MARKERS_MAX) ||
jmitc91516 0:9140ec6aa604 2349 (StartLine >= sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines))
jmitc91516 0:9140ec6aa604 2350 return (0);
jmitc91516 0:9140ec6aa604 2351
jmitc91516 0:9140ec6aa604 2352 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[ScrollLineMarkerIndex] =
jmitc91516 0:9140ec6aa604 2353 GuiLib_GET_MINMAX(StartLine, -1,
jmitc91516 0:9140ec6aa604 2354 (GuiConst_INT16S)sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1);
jmitc91516 0:9140ec6aa604 2355 if ((ScrollLineMarkerIndex == 0) && (Size > 1))
jmitc91516 0:9140ec6aa604 2356 Size = 1;
jmitc91516 0:9140ec6aa604 2357 sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerSize[ScrollLineMarkerIndex] = Size;
jmitc91516 0:9140ec6aa604 2358 if (ScrollLineMarkerIndex == 0)
jmitc91516 0:9140ec6aa604 2359 ScrollBox_SetTopLine(ScrollBoxIndex);
jmitc91516 0:9140ec6aa604 2360
jmitc91516 0:9140ec6aa604 2361 return (1);
jmitc91516 0:9140ec6aa604 2362 }
jmitc91516 0:9140ec6aa604 2363
jmitc91516 0:9140ec6aa604 2364 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2365 GuiConst_INT16S GuiLib_ScrollBox_GetActiveLine(
jmitc91516 0:9140ec6aa604 2366 GuiConst_INT8U ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 2367 GuiConst_INT16U ScrollLineMarkerIndex)
jmitc91516 0:9140ec6aa604 2368 {
jmitc91516 0:9140ec6aa604 2369 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 2370 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED) ||
jmitc91516 0:9140ec6aa604 2371 (ScrollLineMarkerIndex >= GuiConst_SCROLLITEM_MARKERS_MAX))
jmitc91516 0:9140ec6aa604 2372 return (-1);
jmitc91516 0:9140ec6aa604 2373
jmitc91516 0:9140ec6aa604 2374 return (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[ScrollLineMarkerIndex]);
jmitc91516 0:9140ec6aa604 2375 }
jmitc91516 0:9140ec6aa604 2376
jmitc91516 0:9140ec6aa604 2377 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2378 GuiConst_INT16S GuiLib_ScrollBox_GetActiveLineCount(
jmitc91516 0:9140ec6aa604 2379 GuiConst_INT8U ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 2380 GuiConst_INT16U ScrollLineMarkerIndex)
jmitc91516 0:9140ec6aa604 2381 {
jmitc91516 0:9140ec6aa604 2382 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 2383 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED) ||
jmitc91516 0:9140ec6aa604 2384 (ScrollLineMarkerIndex >= GuiConst_SCROLLITEM_MARKERS_MAX))
jmitc91516 0:9140ec6aa604 2385 return (-1);
jmitc91516 0:9140ec6aa604 2386
jmitc91516 0:9140ec6aa604 2387 return (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerSize[ScrollLineMarkerIndex]);
jmitc91516 0:9140ec6aa604 2388 }
jmitc91516 0:9140ec6aa604 2389
jmitc91516 0:9140ec6aa604 2390 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2391 GuiConst_INT8U GuiLib_ScrollBox_SetIndicator(
jmitc91516 0:9140ec6aa604 2392 GuiConst_INT8U ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 2393 GuiConst_INT16S StartLine)
jmitc91516 0:9140ec6aa604 2394 {
jmitc91516 0:9140ec6aa604 2395 #ifdef GuiConst_SCROLLITEM_INDICATOR_NONE
jmitc91516 0:9140ec6aa604 2396 gl.Dummy1_8U = ScrollBoxIndex; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 2397 gl.Dummy1_16S = StartLine; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 2398 return (0);
jmitc91516 0:9140ec6aa604 2399 #else
jmitc91516 0:9140ec6aa604 2400 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 2401 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED) ||
jmitc91516 0:9140ec6aa604 2402 (StartLine >= sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines))
jmitc91516 0:9140ec6aa604 2403 return (0);
jmitc91516 0:9140ec6aa604 2404
jmitc91516 0:9140ec6aa604 2405 sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorLine = GuiLib_GET_MINMAX(
jmitc91516 0:9140ec6aa604 2406 StartLine, -1,
jmitc91516 0:9140ec6aa604 2407 (GuiConst_INT16S)sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1);
jmitc91516 0:9140ec6aa604 2408
jmitc91516 0:9140ec6aa604 2409 return (1);
jmitc91516 0:9140ec6aa604 2410 #endif
jmitc91516 0:9140ec6aa604 2411 }
jmitc91516 0:9140ec6aa604 2412
jmitc91516 0:9140ec6aa604 2413 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2414 GuiConst_INT8U GuiLib_ScrollBox_SetTopLine(
jmitc91516 0:9140ec6aa604 2415 GuiConst_INT8U ScrollBoxIndex,
jmitc91516 0:9140ec6aa604 2416 GuiConst_INT16S TopLine)
jmitc91516 0:9140ec6aa604 2417 {
jmitc91516 0:9140ec6aa604 2418 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 2419 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED) ||
jmitc91516 0:9140ec6aa604 2420 (TopLine >= sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines))
jmitc91516 0:9140ec6aa604 2421 return (0);
jmitc91516 0:9140ec6aa604 2422
jmitc91516 0:9140ec6aa604 2423 if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0)
jmitc91516 0:9140ec6aa604 2424 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine =
jmitc91516 0:9140ec6aa604 2425 GuiLib_GET_MINMAX(TopLine, 0,
jmitc91516 0:9140ec6aa604 2426 sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines -
jmitc91516 0:9140ec6aa604 2427 sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines);
jmitc91516 0:9140ec6aa604 2428
jmitc91516 0:9140ec6aa604 2429 return (1);
jmitc91516 0:9140ec6aa604 2430 }
jmitc91516 0:9140ec6aa604 2431
jmitc91516 0:9140ec6aa604 2432 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2433 GuiConst_INT16S GuiLib_ScrollBox_GetTopLine(
jmitc91516 0:9140ec6aa604 2434 GuiConst_INT8U ScrollBoxIndex)
jmitc91516 0:9140ec6aa604 2435 {
jmitc91516 0:9140ec6aa604 2436 if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) ||
jmitc91516 0:9140ec6aa604 2437 (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 2438 return (-1);
jmitc91516 0:9140ec6aa604 2439
jmitc91516 0:9140ec6aa604 2440 return (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine);
jmitc91516 0:9140ec6aa604 2441 }
jmitc91516 0:9140ec6aa604 2442 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2443 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2444 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2445 #endif // GuiConst_ITEM_SCROLLBOX_INUSE
jmitc91516 0:9140ec6aa604 2446
jmitc91516 0:9140ec6aa604 2447 #ifdef GuiConst_ITEM_GRAPH_INUSE
jmitc91516 0:9140ec6aa604 2448 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2449 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2450 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2451 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2452 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2453 static void Graph_SetClipping(
jmitc91516 0:9140ec6aa604 2454 GuiConst_INT8U GraphIndex)
jmitc91516 0:9140ec6aa604 2455 {
jmitc91516 0:9140ec6aa604 2456 GuiLib_SetClipping(sgl.GraphAry[GraphIndex].GraphItem.ClipRectX1,
jmitc91516 0:9140ec6aa604 2457 sgl.GraphAry[GraphIndex].GraphItem.ClipRectY1,
jmitc91516 0:9140ec6aa604 2458 sgl.GraphAry[GraphIndex].GraphItem.ClipRectX2,
jmitc91516 0:9140ec6aa604 2459 sgl.GraphAry[GraphIndex].GraphItem.ClipRectY2);
jmitc91516 0:9140ec6aa604 2460 }
jmitc91516 0:9140ec6aa604 2461
jmitc91516 0:9140ec6aa604 2462 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2463 static void Graph_ResetClipping(void)
jmitc91516 0:9140ec6aa604 2464 {
jmitc91516 0:9140ec6aa604 2465 GuiLib_ResetClipping();
jmitc91516 0:9140ec6aa604 2466 }
jmitc91516 0:9140ec6aa604 2467 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2468
jmitc91516 0:9140ec6aa604 2469 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2470 static void Graph_CalcScaleX(
jmitc91516 0:9140ec6aa604 2471 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 2472 GuiConst_INT8U AxisIndex)
jmitc91516 0:9140ec6aa604 2473 {
jmitc91516 0:9140ec6aa604 2474 GuiConst_INT32S D1,D2;
jmitc91516 0:9140ec6aa604 2475
jmitc91516 0:9140ec6aa604 2476 D1 = (sgl.GraphAry[GraphIndex].GraphItem.X2 -
jmitc91516 0:9140ec6aa604 2477 sgl.GraphAry[GraphIndex].GraphItem.X1 -
jmitc91516 0:9140ec6aa604 2478 sgl.GraphAry[GraphIndex].OriginOffsetX);
jmitc91516 0:9140ec6aa604 2479 D1 = D1 * 10000;
jmitc91516 0:9140ec6aa604 2480 D2 = (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].NumbersMaxValue -
jmitc91516 0:9140ec6aa604 2481 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].NumbersMinValue);
jmitc91516 0:9140ec6aa604 2482 D1 = D1/D2;
jmitc91516 0:9140ec6aa604 2483 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Scale = D1;
jmitc91516 0:9140ec6aa604 2484 }
jmitc91516 0:9140ec6aa604 2485
jmitc91516 0:9140ec6aa604 2486 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2487 static void Graph_CalcScaleY(
jmitc91516 0:9140ec6aa604 2488 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 2489 GuiConst_INT8U AxisIndex)
jmitc91516 0:9140ec6aa604 2490 {
jmitc91516 0:9140ec6aa604 2491 GuiConst_INT32S D1,D2;
jmitc91516 0:9140ec6aa604 2492
jmitc91516 0:9140ec6aa604 2493 D1 = (sgl.GraphAry[GraphIndex].GraphItem.Y2 -
jmitc91516 0:9140ec6aa604 2494 sgl.GraphAry[GraphIndex].GraphItem.Y1-
jmitc91516 0:9140ec6aa604 2495 sgl.GraphAry[GraphIndex].OriginOffsetY);
jmitc91516 0:9140ec6aa604 2496 D1 = D1 * 10000;
jmitc91516 0:9140ec6aa604 2497 D2 = (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].NumbersMaxValue -
jmitc91516 0:9140ec6aa604 2498 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].NumbersMinValue);
jmitc91516 0:9140ec6aa604 2499 D1 = D1/D2;
jmitc91516 0:9140ec6aa604 2500 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Scale= D1;
jmitc91516 0:9140ec6aa604 2501 }
jmitc91516 0:9140ec6aa604 2502
jmitc91516 0:9140ec6aa604 2503 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2504 static GuiConst_INT32S Graph_CalcNumbersMaxValue(
jmitc91516 0:9140ec6aa604 2505 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 2506 GuiConst_INT8U AxisIndex,
jmitc91516 0:9140ec6aa604 2507 GuiConst_INT8U AxisType)
jmitc91516 0:9140ec6aa604 2508 {
jmitc91516 0:9140ec6aa604 2509 GuiConst_INT32S MV;
jmitc91516 0:9140ec6aa604 2510
jmitc91516 0:9140ec6aa604 2511 MV = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][AxisType].NumbersMaxValue;
jmitc91516 0:9140ec6aa604 2512 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][AxisType].TicksMinor)
jmitc91516 0:9140ec6aa604 2513 MV -= sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][AxisType].NumbersAtEnd *
jmitc91516 0:9140ec6aa604 2514 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][AxisType].NumbersStepMinor;
jmitc91516 0:9140ec6aa604 2515 else if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][AxisType].TicksMajor)
jmitc91516 0:9140ec6aa604 2516 MV -= sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][AxisType].NumbersAtEnd *
jmitc91516 0:9140ec6aa604 2517 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][AxisType].NumbersStepMajor;
jmitc91516 0:9140ec6aa604 2518 return(MV);
jmitc91516 0:9140ec6aa604 2519 }
jmitc91516 0:9140ec6aa604 2520
jmitc91516 0:9140ec6aa604 2521 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2522 static void Graph_DrawXAxis(
jmitc91516 0:9140ec6aa604 2523 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 2524 GuiConst_INT8U AxisIndex)
jmitc91516 0:9140ec6aa604 2525 {
jmitc91516 0:9140ec6aa604 2526 GuiConst_INT16S X, Y;
jmitc91516 0:9140ec6aa604 2527 GuiConst_INT16S DX, DY;
jmitc91516 0:9140ec6aa604 2528 GuiConst_INT32S TX, TY;
jmitc91516 0:9140ec6aa604 2529 #ifdef GuiConst_FLOAT_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2530 double TDX;
jmitc91516 0:9140ec6aa604 2531 #endif
jmitc91516 0:9140ec6aa604 2532 GuiConst_INT32S F;
jmitc91516 0:9140ec6aa604 2533 GuiConst_INT16S HW;
jmitc91516 0:9140ec6aa604 2534 GuiConst_INT32S MV;
jmitc91516 0:9140ec6aa604 2535 GuiConst_INT16U StrLen;
jmitc91516 0:9140ec6aa604 2536 GuiConst_INT16U I;
jmitc91516 0:9140ec6aa604 2537 GuiConst_INT8U Align;
jmitc91516 0:9140ec6aa604 2538
jmitc91516 0:9140ec6aa604 2539 Y = sgl.GraphAry[GraphIndex].OrigoY +
jmitc91516 0:9140ec6aa604 2540 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Offset;
jmitc91516 0:9140ec6aa604 2541
jmitc91516 0:9140ec6aa604 2542 MV = Graph_CalcNumbersMaxValue(GraphIndex, AxisIndex, GuiLib_GRAPHAXIS_X);
jmitc91516 0:9140ec6aa604 2543
jmitc91516 0:9140ec6aa604 2544 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Line)
jmitc91516 0:9140ec6aa604 2545 {
jmitc91516 0:9140ec6aa604 2546 X = sgl.GraphAry[GraphIndex].GraphItem.X2 -
jmitc91516 0:9140ec6aa604 2547 sgl.GraphAry[GraphIndex].GraphItem.X1 + 1;
jmitc91516 0:9140ec6aa604 2548 for (I = 0; I < sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y]; I++)
jmitc91516 0:9140ec6aa604 2549 if (sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].Offset < X)
jmitc91516 0:9140ec6aa604 2550 X = sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].Offset;
jmitc91516 0:9140ec6aa604 2551 X += sgl.GraphAry[GraphIndex].OriginOffsetX;
jmitc91516 0:9140ec6aa604 2552 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2553 LineNegative)
jmitc91516 0:9140ec6aa604 2554 GuiLib_FillBox(sgl.GraphAry[GraphIndex].GraphItem.X1,
jmitc91516 0:9140ec6aa604 2555 Y,
jmitc91516 0:9140ec6aa604 2556 sgl.GraphAry[GraphIndex].GraphItem.X1 + X - 1,
jmitc91516 0:9140ec6aa604 2557 Y,
jmitc91516 0:9140ec6aa604 2558 sgl.GraphAry[GraphIndex].ForeColor);
jmitc91516 0:9140ec6aa604 2559 if ((sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y] > 1) &&
jmitc91516 0:9140ec6aa604 2560 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2561 LineBetweenAxes)
jmitc91516 0:9140ec6aa604 2562 GuiLib_FillBox(sgl.GraphAry[GraphIndex].GraphItem.X1 + X - 1,
jmitc91516 0:9140ec6aa604 2563 Y,
jmitc91516 0:9140ec6aa604 2564 sgl.GraphAry[GraphIndex].GraphItem.X1 +
jmitc91516 0:9140ec6aa604 2565 sgl.GraphAry[GraphIndex].OriginOffsetX,
jmitc91516 0:9140ec6aa604 2566 Y,
jmitc91516 0:9140ec6aa604 2567 sgl.GraphAry[GraphIndex].ForeColor);
jmitc91516 0:9140ec6aa604 2568 GuiLib_FillBox(sgl.GraphAry[GraphIndex].GraphItem.X1 +
jmitc91516 0:9140ec6aa604 2569 sgl.GraphAry[GraphIndex].OriginOffsetX,
jmitc91516 0:9140ec6aa604 2570 Y,
jmitc91516 0:9140ec6aa604 2571 sgl.GraphAry[GraphIndex].GraphItem.X2,
jmitc91516 0:9140ec6aa604 2572 Y,
jmitc91516 0:9140ec6aa604 2573 sgl.GraphAry[GraphIndex].ForeColor);
jmitc91516 0:9140ec6aa604 2574 }
jmitc91516 0:9140ec6aa604 2575
jmitc91516 0:9140ec6aa604 2576 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Arrow)
jmitc91516 0:9140ec6aa604 2577 {
jmitc91516 0:9140ec6aa604 2578 DX = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2579 ArrowLength;
jmitc91516 0:9140ec6aa604 2580 HW = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2581 ArrowWidth / 2;
jmitc91516 0:9140ec6aa604 2582 for (DY = -HW; DY <= HW; DY++)
jmitc91516 0:9140ec6aa604 2583 GuiLib_Line(sgl.GraphAry[GraphIndex].GraphItem.X2 - DX,
jmitc91516 0:9140ec6aa604 2584 Y + DY,
jmitc91516 0:9140ec6aa604 2585 sgl.GraphAry[GraphIndex].GraphItem.X2,
jmitc91516 0:9140ec6aa604 2586 Y,
jmitc91516 0:9140ec6aa604 2587 sgl.GraphAry[GraphIndex].ForeColor);
jmitc91516 0:9140ec6aa604 2588 }
jmitc91516 0:9140ec6aa604 2589
jmitc91516 0:9140ec6aa604 2590 Graph_CalcScaleX(GraphIndex, AxisIndex);
jmitc91516 0:9140ec6aa604 2591
jmitc91516 0:9140ec6aa604 2592 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].TicksMajor)
jmitc91516 0:9140ec6aa604 2593 {
jmitc91516 0:9140ec6aa604 2594 HW = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2595 TicksMajorWidth / 2;
jmitc91516 0:9140ec6aa604 2596 TX = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2597 NumbersMinValue;
jmitc91516 0:9140ec6aa604 2598 F = TX % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2599 NumbersStepMajor;
jmitc91516 0:9140ec6aa604 2600 if (F != 0)
jmitc91516 0:9140ec6aa604 2601 {
jmitc91516 0:9140ec6aa604 2602 TX -= F;
jmitc91516 0:9140ec6aa604 2603 if (TX < sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2604 NumbersMinValue)
jmitc91516 0:9140ec6aa604 2605 TX += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2606 NumbersStepMajor;
jmitc91516 0:9140ec6aa604 2607 }
jmitc91516 0:9140ec6aa604 2608 while (TX <= MV)
jmitc91516 0:9140ec6aa604 2609 {
jmitc91516 0:9140ec6aa604 2610 DX = sgl.GraphAry[GraphIndex].OrigoX + ((TX -
jmitc91516 0:9140ec6aa604 2611 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2612 NumbersMinValue) *
jmitc91516 0:9140ec6aa604 2613 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Scale) /
jmitc91516 0:9140ec6aa604 2614 10000;
jmitc91516 0:9140ec6aa604 2615 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2616 NumbersAtOrigo ||
jmitc91516 0:9140ec6aa604 2617 (TX != sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2618 NumbersMinValue))
jmitc91516 0:9140ec6aa604 2619 GuiLib_FillBox(
jmitc91516 0:9140ec6aa604 2620 DX - HW,
jmitc91516 0:9140ec6aa604 2621 Y,
jmitc91516 0:9140ec6aa604 2622 DX - HW +
jmitc91516 0:9140ec6aa604 2623 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2624 TicksMajorWidth - 1,
jmitc91516 0:9140ec6aa604 2625 Y + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2626 TicksMajorLength - 1,
jmitc91516 0:9140ec6aa604 2627 sgl.GraphAry[GraphIndex].ForeColor);
jmitc91516 0:9140ec6aa604 2628 TX += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2629 NumbersStepMajor;
jmitc91516 0:9140ec6aa604 2630 }
jmitc91516 0:9140ec6aa604 2631 }
jmitc91516 0:9140ec6aa604 2632
jmitc91516 0:9140ec6aa604 2633 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].TicksMinor)
jmitc91516 0:9140ec6aa604 2634 {
jmitc91516 0:9140ec6aa604 2635 HW = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2636 TicksMinorWidth / 2;
jmitc91516 0:9140ec6aa604 2637 TX = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2638 NumbersMinValue;
jmitc91516 0:9140ec6aa604 2639 F = TX % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2640 NumbersStepMinor;
jmitc91516 0:9140ec6aa604 2641 if (F != 0)
jmitc91516 0:9140ec6aa604 2642 {
jmitc91516 0:9140ec6aa604 2643 TX -= F;
jmitc91516 0:9140ec6aa604 2644 if (TX < sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2645 NumbersMinValue)
jmitc91516 0:9140ec6aa604 2646 TX += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2647 NumbersStepMinor;
jmitc91516 0:9140ec6aa604 2648 }
jmitc91516 0:9140ec6aa604 2649 while (TX <= MV)
jmitc91516 0:9140ec6aa604 2650 {
jmitc91516 0:9140ec6aa604 2651 DX = sgl.GraphAry[GraphIndex].OrigoX + ((TX -
jmitc91516 0:9140ec6aa604 2652 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2653 NumbersMinValue) *
jmitc91516 0:9140ec6aa604 2654 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Scale) /
jmitc91516 0:9140ec6aa604 2655 10000;
jmitc91516 0:9140ec6aa604 2656 if ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2657 NumbersAtOrigo ||
jmitc91516 0:9140ec6aa604 2658 (TX != sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2659 NumbersMinValue)) &&
jmitc91516 0:9140ec6aa604 2660 ((!sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2661 TicksMajor) ||
jmitc91516 0:9140ec6aa604 2662 (TX % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2663 NumbersStepMajor != 0)))
jmitc91516 0:9140ec6aa604 2664 GuiLib_FillBox(
jmitc91516 0:9140ec6aa604 2665 DX - HW,
jmitc91516 0:9140ec6aa604 2666 Y,
jmitc91516 0:9140ec6aa604 2667 DX - HW +
jmitc91516 0:9140ec6aa604 2668 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2669 TicksMinorWidth - 1,
jmitc91516 0:9140ec6aa604 2670 Y + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2671 TicksMinorLength - 1,
jmitc91516 0:9140ec6aa604 2672 sgl.GraphAry[GraphIndex].ForeColor);
jmitc91516 0:9140ec6aa604 2673 TX += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2674 NumbersStepMinor;
jmitc91516 0:9140ec6aa604 2675 }
jmitc91516 0:9140ec6aa604 2676 }
jmitc91516 0:9140ec6aa604 2677
jmitc91516 0:9140ec6aa604 2678 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Numbers)
jmitc91516 0:9140ec6aa604 2679 {
jmitc91516 0:9140ec6aa604 2680 memcpy(&sgl.CurItem, &sgl.GraphAry[GraphIndex].GraphItem, sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 2681
jmitc91516 0:9140ec6aa604 2682 DY = Y;
jmitc91516 0:9140ec6aa604 2683 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2684 TicksMajor)
jmitc91516 0:9140ec6aa604 2685 DY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2686 TicksMajorLength;
jmitc91516 0:9140ec6aa604 2687 SetCurFont(sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].FontIndex);
jmitc91516 0:9140ec6aa604 2688 DY += ReadByte(sgl.CurFont->BaseLine);
jmitc91516 0:9140ec6aa604 2689 DY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2690 NumbersOffset;
jmitc91516 0:9140ec6aa604 2691
jmitc91516 0:9140ec6aa604 2692 TX = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2693 NumbersMinValue;
jmitc91516 0:9140ec6aa604 2694 F = TX % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2695 NumbersStepMajor;
jmitc91516 0:9140ec6aa604 2696 if (F != 0)
jmitc91516 0:9140ec6aa604 2697 {
jmitc91516 0:9140ec6aa604 2698 TX -= F;
jmitc91516 0:9140ec6aa604 2699 if (TX < sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2700 NumbersMinValue)
jmitc91516 0:9140ec6aa604 2701 TX += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2702 NumbersStepMajor;
jmitc91516 0:9140ec6aa604 2703 }
jmitc91516 0:9140ec6aa604 2704 switch (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].FormatAlignment)
jmitc91516 0:9140ec6aa604 2705 {
jmitc91516 0:9140ec6aa604 2706 case GuiLib_FORMAT_ALIGNMENT_LEFT:
jmitc91516 0:9140ec6aa604 2707 Align = GuiLib_ALIGN_LEFT;
jmitc91516 0:9140ec6aa604 2708 break;
jmitc91516 0:9140ec6aa604 2709 case GuiLib_FORMAT_ALIGNMENT_CENTER:
jmitc91516 0:9140ec6aa604 2710 Align = GuiLib_ALIGN_CENTER;
jmitc91516 0:9140ec6aa604 2711 break;
jmitc91516 0:9140ec6aa604 2712 case GuiLib_FORMAT_ALIGNMENT_RIGHT:
jmitc91516 0:9140ec6aa604 2713 Align = GuiLib_ALIGN_RIGHT;
jmitc91516 0:9140ec6aa604 2714 break;
jmitc91516 0:9140ec6aa604 2715 }
jmitc91516 0:9140ec6aa604 2716 while (TX <= MV)
jmitc91516 0:9140ec6aa604 2717 {
jmitc91516 0:9140ec6aa604 2718 DX = sgl.GraphAry[GraphIndex].OrigoX + ((TX -
jmitc91516 0:9140ec6aa604 2719 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2720 NumbersMinValue) *
jmitc91516 0:9140ec6aa604 2721 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Scale) /
jmitc91516 0:9140ec6aa604 2722 10000;
jmitc91516 0:9140ec6aa604 2723 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2724 NumbersAtOrigo ||
jmitc91516 0:9140ec6aa604 2725 (TX != sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2726 NumbersMinValue))
jmitc91516 0:9140ec6aa604 2727 {
jmitc91516 0:9140ec6aa604 2728 #ifdef GuiConst_FLOAT_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2729 TDX = TX;
jmitc91516 0:9140ec6aa604 2730 #endif
jmitc91516 0:9140ec6aa604 2731 GuiLib_DrawVar(
jmitc91516 0:9140ec6aa604 2732 DX,
jmitc91516 0:9140ec6aa604 2733 DY,
jmitc91516 0:9140ec6aa604 2734 sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].FontIndex,
jmitc91516 0:9140ec6aa604 2735 #ifdef GuiConst_FLOAT_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2736 &TDX,
jmitc91516 0:9140ec6aa604 2737 GuiLib_VAR_DOUBLE,
jmitc91516 0:9140ec6aa604 2738 #else
jmitc91516 0:9140ec6aa604 2739 &TX,
jmitc91516 0:9140ec6aa604 2740 GuiLib_VAR_SIGNED_LONG,
jmitc91516 0:9140ec6aa604 2741 #endif
jmitc91516 0:9140ec6aa604 2742 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].FormatFormat,
jmitc91516 0:9140ec6aa604 2743 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].FormatFieldWidth,
jmitc91516 0:9140ec6aa604 2744 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].FormatAlignment,
jmitc91516 0:9140ec6aa604 2745 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].FormatDecimals,
jmitc91516 0:9140ec6aa604 2746 ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2747 BitFlags & GuiLib_BITFLAG_FORMATSHOWSIGN) > 0),
jmitc91516 0:9140ec6aa604 2748 ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2749 BitFlags & GuiLib_BITFLAG_FORMATZEROPADDING) > 0),
jmitc91516 0:9140ec6aa604 2750 ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2751 BitFlags & GuiLib_BITFLAG_FORMATTRAILINGZEROS) > 0),
jmitc91516 0:9140ec6aa604 2752 ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2753 BitFlags & GuiLib_BITFLAG_FORMATTHOUSANDSSEP) > 0),
jmitc91516 0:9140ec6aa604 2754 Align,
jmitc91516 0:9140ec6aa604 2755 sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].Ps,
jmitc91516 0:9140ec6aa604 2756 1, // Transparent
jmitc91516 0:9140ec6aa604 2757 ((sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].BitFlags &
jmitc91516 0:9140ec6aa604 2758 GuiLib_BITFLAG_UNDERLINE) > 0),
jmitc91516 0:9140ec6aa604 2759 0,
jmitc91516 0:9140ec6aa604 2760 0,
jmitc91516 0:9140ec6aa604 2761 0,
jmitc91516 0:9140ec6aa604 2762 0,
jmitc91516 0:9140ec6aa604 2763 sgl.GraphAry[GraphIndex].GraphItem.ForeColor,
jmitc91516 0:9140ec6aa604 2764 sgl.GraphAry[GraphIndex].GraphItem.BackColor);
jmitc91516 0:9140ec6aa604 2765 }
jmitc91516 0:9140ec6aa604 2766 TX += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 2767 NumbersStepMajor;
jmitc91516 0:9140ec6aa604 2768 }
jmitc91516 0:9140ec6aa604 2769 }
jmitc91516 0:9140ec6aa604 2770 }
jmitc91516 0:9140ec6aa604 2771
jmitc91516 0:9140ec6aa604 2772 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2773 static void Graph_DrawYAxis(
jmitc91516 0:9140ec6aa604 2774 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 2775 GuiConst_INT8U AxisIndex)
jmitc91516 0:9140ec6aa604 2776 {
jmitc91516 0:9140ec6aa604 2777 GuiConst_INT16S X, Y;
jmitc91516 0:9140ec6aa604 2778 GuiConst_INT16S DX, DY;
jmitc91516 0:9140ec6aa604 2779 GuiConst_INT32S TX, TY;
jmitc91516 0:9140ec6aa604 2780 #ifdef GuiConst_FLOAT_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2781 double TDY;
jmitc91516 0:9140ec6aa604 2782 #endif
jmitc91516 0:9140ec6aa604 2783 GuiConst_INT32S F;
jmitc91516 0:9140ec6aa604 2784 GuiConst_INT16S HW;
jmitc91516 0:9140ec6aa604 2785 GuiConst_INT32S MV;
jmitc91516 0:9140ec6aa604 2786 GuiConst_INT16U StrLen;
jmitc91516 0:9140ec6aa604 2787 GuiConst_INT16U I;
jmitc91516 0:9140ec6aa604 2788 GuiConst_INT8U Align;
jmitc91516 0:9140ec6aa604 2789
jmitc91516 0:9140ec6aa604 2790 X = sgl.GraphAry[GraphIndex].OrigoX +
jmitc91516 0:9140ec6aa604 2791 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Offset;
jmitc91516 0:9140ec6aa604 2792
jmitc91516 0:9140ec6aa604 2793 MV = Graph_CalcNumbersMaxValue(GraphIndex, AxisIndex, GuiLib_GRAPHAXIS_Y);
jmitc91516 0:9140ec6aa604 2794
jmitc91516 0:9140ec6aa604 2795 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Line)
jmitc91516 0:9140ec6aa604 2796 {
jmitc91516 0:9140ec6aa604 2797 Y = 0;
jmitc91516 0:9140ec6aa604 2798 for (I = 0; I < sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X]; I++)
jmitc91516 0:9140ec6aa604 2799 if (sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].Offset > Y)
jmitc91516 0:9140ec6aa604 2800 Y = sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].Offset;
jmitc91516 0:9140ec6aa604 2801 Y = sgl.GraphAry[GraphIndex].OriginOffsetY - Y;
jmitc91516 0:9140ec6aa604 2802 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2803 LineNegative)
jmitc91516 0:9140ec6aa604 2804 GuiLib_FillBox(X,
jmitc91516 0:9140ec6aa604 2805 sgl.GraphAry[GraphIndex].GraphItem.Y2 - Y,
jmitc91516 0:9140ec6aa604 2806 X,
jmitc91516 0:9140ec6aa604 2807 sgl.GraphAry[GraphIndex].GraphItem.Y2,
jmitc91516 0:9140ec6aa604 2808 sgl.GraphAry[GraphIndex].ForeColor);
jmitc91516 0:9140ec6aa604 2809 if ((sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X] > 1) &&
jmitc91516 0:9140ec6aa604 2810 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2811 LineBetweenAxes)
jmitc91516 0:9140ec6aa604 2812 GuiLib_FillBox(X,
jmitc91516 0:9140ec6aa604 2813 sgl.GraphAry[GraphIndex].GraphItem.Y2 -
jmitc91516 0:9140ec6aa604 2814 sgl.GraphAry[GraphIndex].OriginOffsetY,
jmitc91516 0:9140ec6aa604 2815 X,
jmitc91516 0:9140ec6aa604 2816 sgl.GraphAry[GraphIndex].GraphItem.Y2 - Y,
jmitc91516 0:9140ec6aa604 2817 sgl.GraphAry[GraphIndex].ForeColor);
jmitc91516 0:9140ec6aa604 2818 GuiLib_FillBox(X,
jmitc91516 0:9140ec6aa604 2819 sgl.GraphAry[GraphIndex].GraphItem.Y1,
jmitc91516 0:9140ec6aa604 2820 X,
jmitc91516 0:9140ec6aa604 2821 sgl.GraphAry[GraphIndex].GraphItem.Y2 -
jmitc91516 0:9140ec6aa604 2822 sgl.GraphAry[GraphIndex].OriginOffsetY,
jmitc91516 0:9140ec6aa604 2823 sgl.GraphAry[GraphIndex].ForeColor);
jmitc91516 0:9140ec6aa604 2824 }
jmitc91516 0:9140ec6aa604 2825
jmitc91516 0:9140ec6aa604 2826 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Arrow)
jmitc91516 0:9140ec6aa604 2827 {
jmitc91516 0:9140ec6aa604 2828 DY = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2829 ArrowLength;
jmitc91516 0:9140ec6aa604 2830 HW = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2831 ArrowWidth / 2;
jmitc91516 0:9140ec6aa604 2832 for (DX = -HW; DX <= HW; DX++)
jmitc91516 0:9140ec6aa604 2833 GuiLib_Line(X - DX,
jmitc91516 0:9140ec6aa604 2834 sgl.GraphAry[GraphIndex].GraphItem.Y1 + DY,
jmitc91516 0:9140ec6aa604 2835 X,
jmitc91516 0:9140ec6aa604 2836 sgl.GraphAry[GraphIndex].GraphItem.Y1,
jmitc91516 0:9140ec6aa604 2837 sgl.GraphAry[GraphIndex].ForeColor);
jmitc91516 0:9140ec6aa604 2838 }
jmitc91516 0:9140ec6aa604 2839
jmitc91516 0:9140ec6aa604 2840 Graph_CalcScaleY(GraphIndex, AxisIndex);
jmitc91516 0:9140ec6aa604 2841
jmitc91516 0:9140ec6aa604 2842 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].TicksMajor)
jmitc91516 0:9140ec6aa604 2843 {
jmitc91516 0:9140ec6aa604 2844 HW = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2845 TicksMajorWidth / 2;
jmitc91516 0:9140ec6aa604 2846 TY = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2847 NumbersMinValue;
jmitc91516 0:9140ec6aa604 2848 F = TY % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2849 NumbersStepMajor;
jmitc91516 0:9140ec6aa604 2850 if (F != 0)
jmitc91516 0:9140ec6aa604 2851 {
jmitc91516 0:9140ec6aa604 2852 TY -= F;
jmitc91516 0:9140ec6aa604 2853 if (TY < sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2854 NumbersMinValue)
jmitc91516 0:9140ec6aa604 2855 TY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2856 NumbersStepMajor;
jmitc91516 0:9140ec6aa604 2857 }
jmitc91516 0:9140ec6aa604 2858 while (TY <= MV)
jmitc91516 0:9140ec6aa604 2859 {
jmitc91516 0:9140ec6aa604 2860 DY = sgl.GraphAry[GraphIndex].OrigoY - ((TY -
jmitc91516 0:9140ec6aa604 2861 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2862 NumbersMinValue) *
jmitc91516 0:9140ec6aa604 2863 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Scale) /
jmitc91516 0:9140ec6aa604 2864 10000;
jmitc91516 0:9140ec6aa604 2865 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2866 NumbersAtOrigo ||
jmitc91516 0:9140ec6aa604 2867 (TY != sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2868 NumbersMinValue))
jmitc91516 0:9140ec6aa604 2869 GuiLib_FillBox(
jmitc91516 0:9140ec6aa604 2870 X - sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2871 TicksMajorLength + 1,
jmitc91516 0:9140ec6aa604 2872 DY - HW,
jmitc91516 0:9140ec6aa604 2873 X,
jmitc91516 0:9140ec6aa604 2874 DY - HW +
jmitc91516 0:9140ec6aa604 2875 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2876 TicksMajorWidth - 1,
jmitc91516 0:9140ec6aa604 2877 sgl.GraphAry[GraphIndex].ForeColor);
jmitc91516 0:9140ec6aa604 2878 TY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2879 NumbersStepMajor;
jmitc91516 0:9140ec6aa604 2880 }
jmitc91516 0:9140ec6aa604 2881 }
jmitc91516 0:9140ec6aa604 2882
jmitc91516 0:9140ec6aa604 2883 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].TicksMinor)
jmitc91516 0:9140ec6aa604 2884 {
jmitc91516 0:9140ec6aa604 2885 HW = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2886 TicksMinorWidth / 2;
jmitc91516 0:9140ec6aa604 2887 TY = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2888 NumbersMinValue;
jmitc91516 0:9140ec6aa604 2889 F = TY % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2890 NumbersStepMinor;
jmitc91516 0:9140ec6aa604 2891 if (F != 0)
jmitc91516 0:9140ec6aa604 2892 {
jmitc91516 0:9140ec6aa604 2893 TY -= F;
jmitc91516 0:9140ec6aa604 2894 if (TY < sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2895 NumbersMinValue)
jmitc91516 0:9140ec6aa604 2896 TY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2897 NumbersStepMinor;
jmitc91516 0:9140ec6aa604 2898 }
jmitc91516 0:9140ec6aa604 2899 while (TY <= MV)
jmitc91516 0:9140ec6aa604 2900 {
jmitc91516 0:9140ec6aa604 2901 DY = sgl.GraphAry[GraphIndex].OrigoY - ((TY -
jmitc91516 0:9140ec6aa604 2902 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2903 NumbersMinValue) *
jmitc91516 0:9140ec6aa604 2904 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Scale) /
jmitc91516 0:9140ec6aa604 2905 10000;
jmitc91516 0:9140ec6aa604 2906 if ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2907 NumbersAtOrigo ||
jmitc91516 0:9140ec6aa604 2908 (TY != sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2909 NumbersMinValue)) &&
jmitc91516 0:9140ec6aa604 2910 ((!sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2911 TicksMajor) ||
jmitc91516 0:9140ec6aa604 2912 (TY % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2913 NumbersStepMajor != 0)))
jmitc91516 0:9140ec6aa604 2914 GuiLib_FillBox(
jmitc91516 0:9140ec6aa604 2915 X - sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2916 TicksMinorLength + 1,
jmitc91516 0:9140ec6aa604 2917 DY - HW,
jmitc91516 0:9140ec6aa604 2918 X,
jmitc91516 0:9140ec6aa604 2919 DY - HW +
jmitc91516 0:9140ec6aa604 2920 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2921 TicksMinorWidth - 1,
jmitc91516 0:9140ec6aa604 2922 sgl.GraphAry[GraphIndex].ForeColor);
jmitc91516 0:9140ec6aa604 2923 TY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2924 NumbersStepMinor;
jmitc91516 0:9140ec6aa604 2925 }
jmitc91516 0:9140ec6aa604 2926 }
jmitc91516 0:9140ec6aa604 2927
jmitc91516 0:9140ec6aa604 2928 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Numbers)
jmitc91516 0:9140ec6aa604 2929 {
jmitc91516 0:9140ec6aa604 2930 memcpy(&sgl.CurItem, &sgl.GraphAry[GraphIndex].GraphItem, sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 2931
jmitc91516 0:9140ec6aa604 2932 SetCurFont(sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].FontIndex);
jmitc91516 0:9140ec6aa604 2933
jmitc91516 0:9140ec6aa604 2934 sgl.CurItem.TextPar[0].BitFlags =
jmitc91516 0:9140ec6aa604 2935 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].BitFlags;
jmitc91516 0:9140ec6aa604 2936 sgl.CurItem.FormatFieldWidth =
jmitc91516 0:9140ec6aa604 2937 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatFieldWidth;
jmitc91516 0:9140ec6aa604 2938 sgl.CurItem.FormatDecimals =
jmitc91516 0:9140ec6aa604 2939 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatDecimals;
jmitc91516 0:9140ec6aa604 2940 sgl.CurItem.FormatAlignment =
jmitc91516 0:9140ec6aa604 2941 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatAlignment;
jmitc91516 0:9140ec6aa604 2942 sgl.CurItem.FormatFormat =
jmitc91516 0:9140ec6aa604 2943 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatFormat;
jmitc91516 0:9140ec6aa604 2944
jmitc91516 0:9140ec6aa604 2945 DX = X;
jmitc91516 0:9140ec6aa604 2946 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2947 TicksMajor)
jmitc91516 0:9140ec6aa604 2948 DX -= sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2949 TicksMajorLength;
jmitc91516 0:9140ec6aa604 2950 DX -= sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2951 NumbersOffset;
jmitc91516 0:9140ec6aa604 2952
jmitc91516 0:9140ec6aa604 2953 TY = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2954 NumbersMinValue;
jmitc91516 0:9140ec6aa604 2955 F = TY % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2956 NumbersStepMajor;
jmitc91516 0:9140ec6aa604 2957 if (F != 0)
jmitc91516 0:9140ec6aa604 2958 {
jmitc91516 0:9140ec6aa604 2959 TY -= F;
jmitc91516 0:9140ec6aa604 2960 if (TY < sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2961 NumbersMinValue)
jmitc91516 0:9140ec6aa604 2962 TY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2963 NumbersStepMajor;
jmitc91516 0:9140ec6aa604 2964 }
jmitc91516 0:9140ec6aa604 2965 switch (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatAlignment)
jmitc91516 0:9140ec6aa604 2966 {
jmitc91516 0:9140ec6aa604 2967 case GuiLib_FORMAT_ALIGNMENT_LEFT:
jmitc91516 0:9140ec6aa604 2968 Align = GuiLib_ALIGN_LEFT;
jmitc91516 0:9140ec6aa604 2969 break;
jmitc91516 0:9140ec6aa604 2970 case GuiLib_FORMAT_ALIGNMENT_CENTER:
jmitc91516 0:9140ec6aa604 2971 Align = GuiLib_ALIGN_CENTER;
jmitc91516 0:9140ec6aa604 2972 break;
jmitc91516 0:9140ec6aa604 2973 case GuiLib_FORMAT_ALIGNMENT_RIGHT:
jmitc91516 0:9140ec6aa604 2974 Align = GuiLib_ALIGN_RIGHT;
jmitc91516 0:9140ec6aa604 2975 break;
jmitc91516 0:9140ec6aa604 2976 }
jmitc91516 0:9140ec6aa604 2977 while (TY <= MV)
jmitc91516 0:9140ec6aa604 2978 {
jmitc91516 0:9140ec6aa604 2979 DY = sgl.GraphAry[GraphIndex].OrigoY - ((TY -
jmitc91516 0:9140ec6aa604 2980 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2981 NumbersMinValue) *
jmitc91516 0:9140ec6aa604 2982 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Scale) /
jmitc91516 0:9140ec6aa604 2983 10000;
jmitc91516 0:9140ec6aa604 2984 if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2985 NumbersAtOrigo ||
jmitc91516 0:9140ec6aa604 2986 (TY != sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 2987 NumbersMinValue))
jmitc91516 0:9140ec6aa604 2988 {
jmitc91516 0:9140ec6aa604 2989 #ifdef GuiConst_FLOAT_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2990 TDY = TY;
jmitc91516 0:9140ec6aa604 2991 #endif
jmitc91516 0:9140ec6aa604 2992 GuiLib_DrawVar(
jmitc91516 0:9140ec6aa604 2993 DX,
jmitc91516 0:9140ec6aa604 2994 DY + GuiLib_FONT_MID_Y(ReadByte(sgl.CurFont->BaseLine),
jmitc91516 0:9140ec6aa604 2995 ReadByte(sgl.CurFont->TopLine)),
jmitc91516 0:9140ec6aa604 2996 sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].FontIndex,
jmitc91516 0:9140ec6aa604 2997 #ifdef GuiConst_FLOAT_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2998 &TDY,
jmitc91516 0:9140ec6aa604 2999 GuiLib_VAR_DOUBLE,
jmitc91516 0:9140ec6aa604 3000 #else
jmitc91516 0:9140ec6aa604 3001 &TY,
jmitc91516 0:9140ec6aa604 3002 GuiLib_VAR_SIGNED_LONG,
jmitc91516 0:9140ec6aa604 3003 #endif
jmitc91516 0:9140ec6aa604 3004 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatFormat,
jmitc91516 0:9140ec6aa604 3005 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatFieldWidth,
jmitc91516 0:9140ec6aa604 3006 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatAlignment,
jmitc91516 0:9140ec6aa604 3007 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatDecimals,
jmitc91516 0:9140ec6aa604 3008 ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 3009 BitFlags & GuiLib_BITFLAG_FORMATSHOWSIGN) > 0),
jmitc91516 0:9140ec6aa604 3010 ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 3011 BitFlags & GuiLib_BITFLAG_FORMATZEROPADDING) > 0),
jmitc91516 0:9140ec6aa604 3012 ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 3013 BitFlags & GuiLib_BITFLAG_FORMATTRAILINGZEROS) > 0),
jmitc91516 0:9140ec6aa604 3014 ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 3015 BitFlags & GuiLib_BITFLAG_FORMATTHOUSANDSSEP) > 0),
jmitc91516 0:9140ec6aa604 3016 Align,
jmitc91516 0:9140ec6aa604 3017 sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].Ps,
jmitc91516 0:9140ec6aa604 3018 1, // Transparent
jmitc91516 0:9140ec6aa604 3019 ((sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].BitFlags &
jmitc91516 0:9140ec6aa604 3020 GuiLib_BITFLAG_UNDERLINE) > 0),
jmitc91516 0:9140ec6aa604 3021 0,
jmitc91516 0:9140ec6aa604 3022 0,
jmitc91516 0:9140ec6aa604 3023 0,
jmitc91516 0:9140ec6aa604 3024 0,
jmitc91516 0:9140ec6aa604 3025 sgl.GraphAry[GraphIndex].GraphItem.ForeColor,
jmitc91516 0:9140ec6aa604 3026 sgl.GraphAry[GraphIndex].GraphItem.BackColor);
jmitc91516 0:9140ec6aa604 3027 }
jmitc91516 0:9140ec6aa604 3028 TY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 3029 NumbersStepMajor;
jmitc91516 0:9140ec6aa604 3030 }
jmitc91516 0:9140ec6aa604 3031 }
jmitc91516 0:9140ec6aa604 3032 }
jmitc91516 0:9140ec6aa604 3033
jmitc91516 0:9140ec6aa604 3034 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3035 static void Graph_DrawDataPoint(
jmitc91516 0:9140ec6aa604 3036 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3037 GuiConst_INT8U DataSetIndex,
jmitc91516 0:9140ec6aa604 3038 GuiConst_INT16U DataIndex,
jmitc91516 0:9140ec6aa604 3039 GuiConst_INT16S X,
jmitc91516 0:9140ec6aa604 3040 GuiConst_INT16S Y,
jmitc91516 0:9140ec6aa604 3041 GuiConst_INT16S LastX,
jmitc91516 0:9140ec6aa604 3042 GuiConst_INT16S LastY)
jmitc91516 0:9140ec6aa604 3043 {
jmitc91516 0:9140ec6aa604 3044 GuiConst_INT16S DX1, DY1;
jmitc91516 0:9140ec6aa604 3045 GuiConst_INT16S DX2, DY2;
jmitc91516 0:9140ec6aa604 3046 GuiConst_INT16S HW;
jmitc91516 0:9140ec6aa604 3047 GuiConst_INT16S AY;
jmitc91516 0:9140ec6aa604 3048
jmitc91516 0:9140ec6aa604 3049 switch (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Representation)
jmitc91516 0:9140ec6aa604 3050 {
jmitc91516 0:9140ec6aa604 3051 case GuiLib_GRAPH_DATATYPE_DOT:
jmitc91516 0:9140ec6aa604 3052 if (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Thickness == 0)
jmitc91516 0:9140ec6aa604 3053 GuiLib_Circle(
jmitc91516 0:9140ec6aa604 3054 X, Y,
jmitc91516 0:9140ec6aa604 3055 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width,
jmitc91516 0:9140ec6aa604 3056 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].BackColor,
jmitc91516 0:9140ec6aa604 3057 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].BackColor);
jmitc91516 0:9140ec6aa604 3058 else if (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].
jmitc91516 0:9140ec6aa604 3059 Thickness == 1)
jmitc91516 0:9140ec6aa604 3060 GuiLib_Circle(
jmitc91516 0:9140ec6aa604 3061 X, Y,
jmitc91516 0:9140ec6aa604 3062 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width,
jmitc91516 0:9140ec6aa604 3063 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor,
jmitc91516 0:9140ec6aa604 3064 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].BackColor);
jmitc91516 0:9140ec6aa604 3065 else
jmitc91516 0:9140ec6aa604 3066 {
jmitc91516 0:9140ec6aa604 3067 GuiLib_Circle(
jmitc91516 0:9140ec6aa604 3068 X, Y,
jmitc91516 0:9140ec6aa604 3069 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width,
jmitc91516 0:9140ec6aa604 3070 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor,
jmitc91516 0:9140ec6aa604 3071 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor);
jmitc91516 0:9140ec6aa604 3072 GuiLib_Circle(
jmitc91516 0:9140ec6aa604 3073 X, Y,
jmitc91516 0:9140ec6aa604 3074 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width-
jmitc91516 0:9140ec6aa604 3075 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Thickness,
jmitc91516 0:9140ec6aa604 3076 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].BackColor,
jmitc91516 0:9140ec6aa604 3077 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].BackColor);
jmitc91516 0:9140ec6aa604 3078 }
jmitc91516 0:9140ec6aa604 3079 break;
jmitc91516 0:9140ec6aa604 3080
jmitc91516 0:9140ec6aa604 3081 case GuiLib_GRAPH_DATATYPE_LINE:
jmitc91516 0:9140ec6aa604 3082 if (DataIndex ==
jmitc91516 0:9140ec6aa604 3083 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataFirst)
jmitc91516 0:9140ec6aa604 3084 GuiLib_Dot(
jmitc91516 0:9140ec6aa604 3085 X, Y,
jmitc91516 0:9140ec6aa604 3086 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor);
jmitc91516 0:9140ec6aa604 3087 else
jmitc91516 0:9140ec6aa604 3088 GuiLib_Line(
jmitc91516 0:9140ec6aa604 3089 LastX, LastY,
jmitc91516 0:9140ec6aa604 3090 X, Y,
jmitc91516 0:9140ec6aa604 3091 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor);
jmitc91516 0:9140ec6aa604 3092 break;
jmitc91516 0:9140ec6aa604 3093
jmitc91516 0:9140ec6aa604 3094 case GuiLib_GRAPH_DATATYPE_BAR:
jmitc91516 0:9140ec6aa604 3095 AY = sgl.GraphAry[GraphIndex].OrigoY +
jmitc91516 0:9140ec6aa604 3096 sgl.GraphAry[GraphIndex].GraphAxes[0][GuiLib_GRAPHAXIS_X].Offset;
jmitc91516 0:9140ec6aa604 3097 DX2 = X + (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width / 2);
jmitc91516 0:9140ec6aa604 3098 DX1 = DX2 - sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width + 1;
jmitc91516 0:9140ec6aa604 3099 if (DX1 > DX2)
jmitc91516 0:9140ec6aa604 3100 DX1 = DX2;
jmitc91516 0:9140ec6aa604 3101 DY1 = AY;
jmitc91516 0:9140ec6aa604 3102 DY2 = Y;
jmitc91516 0:9140ec6aa604 3103 if (Y < AY)
jmitc91516 0:9140ec6aa604 3104 DY1--;
jmitc91516 0:9140ec6aa604 3105 if (Y != AY)
jmitc91516 0:9140ec6aa604 3106 {
jmitc91516 0:9140ec6aa604 3107 if (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Thickness == 0)
jmitc91516 0:9140ec6aa604 3108 {
jmitc91516 0:9140ec6aa604 3109 if (!sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].
jmitc91516 0:9140ec6aa604 3110 BackColorTransparent)
jmitc91516 0:9140ec6aa604 3111 GuiLib_FillBox(
jmitc91516 0:9140ec6aa604 3112 DX1, DY1,
jmitc91516 0:9140ec6aa604 3113 DX2, DY2,
jmitc91516 0:9140ec6aa604 3114 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].BackColor);
jmitc91516 0:9140ec6aa604 3115 }
jmitc91516 0:9140ec6aa604 3116 else
jmitc91516 0:9140ec6aa604 3117 {
jmitc91516 0:9140ec6aa604 3118 OrderCoord(&DX1, &DX2);
jmitc91516 0:9140ec6aa604 3119 OrderCoord(&DY1, &DY2);
jmitc91516 0:9140ec6aa604 3120 DrawBorderBox(
jmitc91516 0:9140ec6aa604 3121 DX1, DY1,
jmitc91516 0:9140ec6aa604 3122 DX2, DY2,
jmitc91516 0:9140ec6aa604 3123 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor,
jmitc91516 0:9140ec6aa604 3124 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].BackColor,
jmitc91516 0:9140ec6aa604 3125 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].
jmitc91516 0:9140ec6aa604 3126 BackColorTransparent,
jmitc91516 0:9140ec6aa604 3127 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Thickness);
jmitc91516 0:9140ec6aa604 3128 }
jmitc91516 0:9140ec6aa604 3129 }
jmitc91516 0:9140ec6aa604 3130 break;
jmitc91516 0:9140ec6aa604 3131
jmitc91516 0:9140ec6aa604 3132 case GuiLib_GRAPH_DATATYPE_CROSS:
jmitc91516 0:9140ec6aa604 3133 HW = sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width;
jmitc91516 0:9140ec6aa604 3134 DX1 = X - HW;
jmitc91516 0:9140ec6aa604 3135 DY1 = Y - HW;
jmitc91516 0:9140ec6aa604 3136 DX2 = X + HW;
jmitc91516 0:9140ec6aa604 3137 DY2 = Y + HW;
jmitc91516 0:9140ec6aa604 3138 GuiLib_Line(
jmitc91516 0:9140ec6aa604 3139 DX1, Y,
jmitc91516 0:9140ec6aa604 3140 DX2, Y,
jmitc91516 0:9140ec6aa604 3141 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor);
jmitc91516 0:9140ec6aa604 3142 GuiLib_Line(
jmitc91516 0:9140ec6aa604 3143 X, DY1,
jmitc91516 0:9140ec6aa604 3144 X, DY2,
jmitc91516 0:9140ec6aa604 3145 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor);
jmitc91516 0:9140ec6aa604 3146 break;
jmitc91516 0:9140ec6aa604 3147
jmitc91516 0:9140ec6aa604 3148 case GuiLib_GRAPH_DATATYPE_X:
jmitc91516 0:9140ec6aa604 3149 HW = sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width;
jmitc91516 0:9140ec6aa604 3150 DX1 = X - HW;
jmitc91516 0:9140ec6aa604 3151 DY1 = Y - HW;
jmitc91516 0:9140ec6aa604 3152 DX2 = X + HW;
jmitc91516 0:9140ec6aa604 3153 DY2 = Y + HW;
jmitc91516 0:9140ec6aa604 3154 GuiLib_Line(
jmitc91516 0:9140ec6aa604 3155 DX1, DY1,
jmitc91516 0:9140ec6aa604 3156 DX2, DY2,
jmitc91516 0:9140ec6aa604 3157 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor);
jmitc91516 0:9140ec6aa604 3158 GuiLib_Line(
jmitc91516 0:9140ec6aa604 3159 DX1, DY2,
jmitc91516 0:9140ec6aa604 3160 DX2, DY1,
jmitc91516 0:9140ec6aa604 3161 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor);
jmitc91516 0:9140ec6aa604 3162 break;
jmitc91516 0:9140ec6aa604 3163 }
jmitc91516 0:9140ec6aa604 3164 }
jmitc91516 0:9140ec6aa604 3165
jmitc91516 0:9140ec6aa604 3166 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3167 static void Graph_DrawDataSet(
jmitc91516 0:9140ec6aa604 3168 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3169 GuiConst_INT8U DataSetIndex)
jmitc91516 0:9140ec6aa604 3170 {
jmitc91516 0:9140ec6aa604 3171 GuiConst_INT16S DX = 0, DY = 0;
jmitc91516 0:9140ec6aa604 3172 GuiConst_INT16S LastDX, LastDY;
jmitc91516 0:9140ec6aa604 3173 GuiConst_INT32S TX, TY;
jmitc91516 0:9140ec6aa604 3174 GuiConst_INT16U DataIndex;
jmitc91516 0:9140ec6aa604 3175 GuiConst_INT16U DataCount;
jmitc91516 0:9140ec6aa604 3176
jmitc91516 0:9140ec6aa604 3177 Graph_CalcScaleX(GraphIndex,
jmitc91516 0:9140ec6aa604 3178 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX);
jmitc91516 0:9140ec6aa604 3179 Graph_CalcScaleY(GraphIndex,
jmitc91516 0:9140ec6aa604 3180 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY);
jmitc91516 0:9140ec6aa604 3181
jmitc91516 0:9140ec6aa604 3182 DataIndex = sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataFirst;
jmitc91516 0:9140ec6aa604 3183 for (DataCount = 1;
jmitc91516 0:9140ec6aa604 3184 DataCount <= sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount;
jmitc91516 0:9140ec6aa604 3185 DataCount++)
jmitc91516 0:9140ec6aa604 3186 {
jmitc91516 0:9140ec6aa604 3187 TX =
jmitc91516 0:9140ec6aa604 3188 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[DataIndex].X;
jmitc91516 0:9140ec6aa604 3189 TY =
jmitc91516 0:9140ec6aa604 3190 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[DataIndex].Y;
jmitc91516 0:9140ec6aa604 3191
jmitc91516 0:9140ec6aa604 3192 LastDX = DX;
jmitc91516 0:9140ec6aa604 3193 LastDY = DY;
jmitc91516 0:9140ec6aa604 3194 DX = sgl.GraphAry[GraphIndex].OrigoX + ((TX -
jmitc91516 0:9140ec6aa604 3195 sgl.GraphAry[GraphIndex].GraphAxes[
jmitc91516 0:9140ec6aa604 3196 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX]
jmitc91516 0:9140ec6aa604 3197 [GuiLib_GRAPHAXIS_X].NumbersMinValue) *
jmitc91516 0:9140ec6aa604 3198 sgl.GraphAry[GraphIndex].GraphAxes[
jmitc91516 0:9140ec6aa604 3199 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX]
jmitc91516 0:9140ec6aa604 3200 [GuiLib_GRAPHAXIS_X].Scale) / 10000;
jmitc91516 0:9140ec6aa604 3201 DY = sgl.GraphAry[GraphIndex].OrigoY - ((TY -
jmitc91516 0:9140ec6aa604 3202 sgl.GraphAry[GraphIndex].GraphAxes[
jmitc91516 0:9140ec6aa604 3203 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY]
jmitc91516 0:9140ec6aa604 3204 [GuiLib_GRAPHAXIS_Y].NumbersMinValue) *
jmitc91516 0:9140ec6aa604 3205 sgl.GraphAry[GraphIndex].GraphAxes[
jmitc91516 0:9140ec6aa604 3206 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY]
jmitc91516 0:9140ec6aa604 3207 [GuiLib_GRAPHAXIS_Y].Scale) / 10000;
jmitc91516 0:9140ec6aa604 3208
jmitc91516 0:9140ec6aa604 3209 Graph_DrawDataPoint(
jmitc91516 0:9140ec6aa604 3210 GraphIndex,
jmitc91516 0:9140ec6aa604 3211 DataSetIndex,
jmitc91516 0:9140ec6aa604 3212 DataIndex,
jmitc91516 0:9140ec6aa604 3213 DX, DY,
jmitc91516 0:9140ec6aa604 3214 LastDX, LastDY);
jmitc91516 0:9140ec6aa604 3215
jmitc91516 0:9140ec6aa604 3216 if (DataIndex >= sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount)
jmitc91516 0:9140ec6aa604 3217 DataIndex = 0;
jmitc91516 0:9140ec6aa604 3218 else
jmitc91516 0:9140ec6aa604 3219 DataIndex++;
jmitc91516 0:9140ec6aa604 3220 }
jmitc91516 0:9140ec6aa604 3221 }
jmitc91516 0:9140ec6aa604 3222
jmitc91516 0:9140ec6aa604 3223 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3224 GuiConst_INT8U GuiLib_Graph_Close(
jmitc91516 0:9140ec6aa604 3225 GuiConst_INT8U GraphIndex)
jmitc91516 0:9140ec6aa604 3226 {
jmitc91516 0:9140ec6aa604 3227 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3228 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3229 return (0);
jmitc91516 0:9140ec6aa604 3230
jmitc91516 0:9140ec6aa604 3231 sgl.GraphAry[GraphIndex].InUse = GuiLib_GRAPH_STRUCTURE_UNDEF;
jmitc91516 0:9140ec6aa604 3232 sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X] = 0;
jmitc91516 0:9140ec6aa604 3233 sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y] = 0;
jmitc91516 0:9140ec6aa604 3234 sgl.GraphAry[GraphIndex].GraphDataSetCnt = 0;
jmitc91516 0:9140ec6aa604 3235
jmitc91516 0:9140ec6aa604 3236 return (1);
jmitc91516 0:9140ec6aa604 3237 }
jmitc91516 0:9140ec6aa604 3238
jmitc91516 0:9140ec6aa604 3239 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3240 GuiConst_INT8U GuiLib_Graph_AddDataSet(
jmitc91516 0:9140ec6aa604 3241 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3242 GuiConst_INT8U DataSetIndex,
jmitc91516 0:9140ec6aa604 3243 GuiConst_INT8U XAxisIndex,
jmitc91516 0:9140ec6aa604 3244 GuiConst_INT8U YAxisIndex,
jmitc91516 0:9140ec6aa604 3245 GuiLib_GraphDataPoint *DataPtr,
jmitc91516 0:9140ec6aa604 3246 GuiConst_INT16U DataSize,
jmitc91516 0:9140ec6aa604 3247 GuiConst_INT16U DataCount,
jmitc91516 0:9140ec6aa604 3248 GuiConst_INT16U DataFirst)
jmitc91516 0:9140ec6aa604 3249 {
jmitc91516 0:9140ec6aa604 3250 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3251 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3252 return (0);
jmitc91516 0:9140ec6aa604 3253 if ((DataSetIndex >= GuiConst_GRAPH_DATASETS_MAX) ||
jmitc91516 0:9140ec6aa604 3254 (DataSetIndex >= sgl.GraphAry[GraphIndex].GraphDataSetCnt))
jmitc91516 0:9140ec6aa604 3255 return (0);
jmitc91516 0:9140ec6aa604 3256 if (DataCount > DataSize)
jmitc91516 0:9140ec6aa604 3257 return (0);
jmitc91516 0:9140ec6aa604 3258 if (DataFirst >= DataSize)
jmitc91516 0:9140ec6aa604 3259 return (0);
jmitc91516 0:9140ec6aa604 3260
jmitc91516 0:9140ec6aa604 3261 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr = DataPtr;
jmitc91516 0:9140ec6aa604 3262 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataSize = DataSize;
jmitc91516 0:9140ec6aa604 3263 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataFirst = DataFirst;
jmitc91516 0:9140ec6aa604 3264 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount = DataCount;
jmitc91516 0:9140ec6aa604 3265 if ((XAxisIndex >= GuiConst_GRAPH_AXES_MAX) ||
jmitc91516 0:9140ec6aa604 3266 (XAxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X]))
jmitc91516 0:9140ec6aa604 3267 XAxisIndex = 0;
jmitc91516 0:9140ec6aa604 3268 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX = XAxisIndex;
jmitc91516 0:9140ec6aa604 3269 if ((YAxisIndex >= GuiConst_GRAPH_AXES_MAX) ||
jmitc91516 0:9140ec6aa604 3270 (YAxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y]))
jmitc91516 0:9140ec6aa604 3271 YAxisIndex = 0;
jmitc91516 0:9140ec6aa604 3272 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY = YAxisIndex;
jmitc91516 0:9140ec6aa604 3273
jmitc91516 0:9140ec6aa604 3274 return (1);
jmitc91516 0:9140ec6aa604 3275 }
jmitc91516 0:9140ec6aa604 3276
jmitc91516 0:9140ec6aa604 3277 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3278 GuiConst_INT8U GuiLib_Graph_RemoveDataSet(
jmitc91516 0:9140ec6aa604 3279 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3280 GuiConst_INT8U DataSetIndex)
jmitc91516 0:9140ec6aa604 3281 {
jmitc91516 0:9140ec6aa604 3282 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3283 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3284 return (0);
jmitc91516 0:9140ec6aa604 3285 if ((DataSetIndex >= GuiConst_GRAPH_DATASETS_MAX) ||
jmitc91516 0:9140ec6aa604 3286 (DataSetIndex >= sgl.GraphAry[GraphIndex].GraphDataSetCnt))
jmitc91516 0:9140ec6aa604 3287 return (0);
jmitc91516 0:9140ec6aa604 3288
jmitc91516 0:9140ec6aa604 3289 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount = 0;
jmitc91516 0:9140ec6aa604 3290 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataSize = 0;
jmitc91516 0:9140ec6aa604 3291
jmitc91516 0:9140ec6aa604 3292 return (1);
jmitc91516 0:9140ec6aa604 3293 }
jmitc91516 0:9140ec6aa604 3294
jmitc91516 0:9140ec6aa604 3295 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3296 GuiConst_INT8U GuiLib_Graph_AddDataPoint(
jmitc91516 0:9140ec6aa604 3297 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3298 GuiConst_INT8U DataSetIndex,
jmitc91516 0:9140ec6aa604 3299 GuiConst_INT32S X,
jmitc91516 0:9140ec6aa604 3300 GuiConst_INT32S Y)
jmitc91516 0:9140ec6aa604 3301 {
jmitc91516 0:9140ec6aa604 3302 GuiConst_INT16U I;
jmitc91516 0:9140ec6aa604 3303
jmitc91516 0:9140ec6aa604 3304 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3305 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3306 return (0);
jmitc91516 0:9140ec6aa604 3307 if ((DataSetIndex >= GuiConst_GRAPH_DATASETS_MAX) ||
jmitc91516 0:9140ec6aa604 3308 (DataSetIndex >= sgl.GraphAry[GraphIndex].GraphDataSetCnt))
jmitc91516 0:9140ec6aa604 3309 return (0);
jmitc91516 0:9140ec6aa604 3310 if (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount >=
jmitc91516 0:9140ec6aa604 3311 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataSize)
jmitc91516 0:9140ec6aa604 3312 return (0);
jmitc91516 0:9140ec6aa604 3313
jmitc91516 0:9140ec6aa604 3314 I = (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataFirst +
jmitc91516 0:9140ec6aa604 3315 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount) %
jmitc91516 0:9140ec6aa604 3316 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataSize;
jmitc91516 0:9140ec6aa604 3317 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount++;
jmitc91516 0:9140ec6aa604 3318
jmitc91516 0:9140ec6aa604 3319 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[I].X = X;
jmitc91516 0:9140ec6aa604 3320 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[I].Y = Y;
jmitc91516 0:9140ec6aa604 3321
jmitc91516 0:9140ec6aa604 3322 return (1);
jmitc91516 0:9140ec6aa604 3323 }
jmitc91516 0:9140ec6aa604 3324
jmitc91516 0:9140ec6aa604 3325 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3326 GuiConst_INT8U GuiLib_Graph_ShowDataSet(
jmitc91516 0:9140ec6aa604 3327 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3328 GuiConst_INT8U DataSetIndex)
jmitc91516 0:9140ec6aa604 3329 {
jmitc91516 0:9140ec6aa604 3330 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3331 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3332 return (0);
jmitc91516 0:9140ec6aa604 3333 if ((DataSetIndex >= GuiConst_GRAPH_DATASETS_MAX) ||
jmitc91516 0:9140ec6aa604 3334 (DataSetIndex >= sgl.GraphAry[GraphIndex].GraphDataSetCnt))
jmitc91516 0:9140ec6aa604 3335 return (0);
jmitc91516 0:9140ec6aa604 3336
jmitc91516 0:9140ec6aa604 3337 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Visible = 1;
jmitc91516 0:9140ec6aa604 3338
jmitc91516 0:9140ec6aa604 3339 return (1);
jmitc91516 0:9140ec6aa604 3340 }
jmitc91516 0:9140ec6aa604 3341
jmitc91516 0:9140ec6aa604 3342 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3343 GuiConst_INT8U GuiLib_Graph_HideDataSet(
jmitc91516 0:9140ec6aa604 3344 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3345 GuiConst_INT8U DataSetIndex)
jmitc91516 0:9140ec6aa604 3346 {
jmitc91516 0:9140ec6aa604 3347 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3348 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3349 return (0);
jmitc91516 0:9140ec6aa604 3350 if ((DataSetIndex >= GuiConst_GRAPH_DATASETS_MAX) ||
jmitc91516 0:9140ec6aa604 3351 (DataSetIndex >= sgl.GraphAry[GraphIndex].GraphDataSetCnt))
jmitc91516 0:9140ec6aa604 3352 return (0);
jmitc91516 0:9140ec6aa604 3353
jmitc91516 0:9140ec6aa604 3354 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Visible = 0;
jmitc91516 0:9140ec6aa604 3355
jmitc91516 0:9140ec6aa604 3356 return (1);
jmitc91516 0:9140ec6aa604 3357 }
jmitc91516 0:9140ec6aa604 3358
jmitc91516 0:9140ec6aa604 3359 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3360 GuiConst_INT8U GuiLib_Graph_ShowXAxis(
jmitc91516 0:9140ec6aa604 3361 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3362 GuiConst_INT8U AxisIndex)
jmitc91516 0:9140ec6aa604 3363 {
jmitc91516 0:9140ec6aa604 3364 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3365 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3366 return (0);
jmitc91516 0:9140ec6aa604 3367 if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) ||
jmitc91516 0:9140ec6aa604 3368 (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X]))
jmitc91516 0:9140ec6aa604 3369 return (0);
jmitc91516 0:9140ec6aa604 3370
jmitc91516 0:9140ec6aa604 3371 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Visible = 1;
jmitc91516 0:9140ec6aa604 3372
jmitc91516 0:9140ec6aa604 3373 return (1);
jmitc91516 0:9140ec6aa604 3374 }
jmitc91516 0:9140ec6aa604 3375
jmitc91516 0:9140ec6aa604 3376 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3377 GuiConst_INT8U GuiLib_Graph_HideXAxis(
jmitc91516 0:9140ec6aa604 3378 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3379 GuiConst_INT8U AxisIndex)
jmitc91516 0:9140ec6aa604 3380 {
jmitc91516 0:9140ec6aa604 3381 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3382 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3383 return (0);
jmitc91516 0:9140ec6aa604 3384 if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) ||
jmitc91516 0:9140ec6aa604 3385 (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X]))
jmitc91516 0:9140ec6aa604 3386 return (0);
jmitc91516 0:9140ec6aa604 3387
jmitc91516 0:9140ec6aa604 3388 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Visible = 0;
jmitc91516 0:9140ec6aa604 3389
jmitc91516 0:9140ec6aa604 3390 return (1);
jmitc91516 0:9140ec6aa604 3391 }
jmitc91516 0:9140ec6aa604 3392
jmitc91516 0:9140ec6aa604 3393 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3394 GuiConst_INT8U GuiLib_Graph_ShowYAxis(
jmitc91516 0:9140ec6aa604 3395 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3396 GuiConst_INT8U AxisIndex)
jmitc91516 0:9140ec6aa604 3397 {
jmitc91516 0:9140ec6aa604 3398 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3399 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3400 return (0);
jmitc91516 0:9140ec6aa604 3401 if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) ||
jmitc91516 0:9140ec6aa604 3402 (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y]))
jmitc91516 0:9140ec6aa604 3403 return (0);
jmitc91516 0:9140ec6aa604 3404
jmitc91516 0:9140ec6aa604 3405 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Visible = 1;
jmitc91516 0:9140ec6aa604 3406
jmitc91516 0:9140ec6aa604 3407 return (1);
jmitc91516 0:9140ec6aa604 3408 }
jmitc91516 0:9140ec6aa604 3409
jmitc91516 0:9140ec6aa604 3410 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3411 GuiConst_INT8U GuiLib_Graph_HideYAxis(
jmitc91516 0:9140ec6aa604 3412 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3413 GuiConst_INT8U AxisIndex)
jmitc91516 0:9140ec6aa604 3414 {
jmitc91516 0:9140ec6aa604 3415 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3416 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3417 return (0);
jmitc91516 0:9140ec6aa604 3418 if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) ||
jmitc91516 0:9140ec6aa604 3419 (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y]))
jmitc91516 0:9140ec6aa604 3420 return (0);
jmitc91516 0:9140ec6aa604 3421
jmitc91516 0:9140ec6aa604 3422 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Visible = 0;
jmitc91516 0:9140ec6aa604 3423
jmitc91516 0:9140ec6aa604 3424 return (1);
jmitc91516 0:9140ec6aa604 3425 }
jmitc91516 0:9140ec6aa604 3426
jmitc91516 0:9140ec6aa604 3427 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3428 GuiConst_INT8U GuiLib_Graph_SetXAxisRange(
jmitc91516 0:9140ec6aa604 3429 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3430 GuiConst_INT8U AxisIndex,
jmitc91516 0:9140ec6aa604 3431 GuiConst_INT32S MinValue,
jmitc91516 0:9140ec6aa604 3432 GuiConst_INT32S MaxValue)
jmitc91516 0:9140ec6aa604 3433 {
jmitc91516 0:9140ec6aa604 3434 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3435 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3436 return (0);
jmitc91516 0:9140ec6aa604 3437 if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) ||
jmitc91516 0:9140ec6aa604 3438 (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X]))
jmitc91516 0:9140ec6aa604 3439 return (0);
jmitc91516 0:9140ec6aa604 3440
jmitc91516 0:9140ec6aa604 3441 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 3442 NumbersMinValue = MinValue;
jmitc91516 0:9140ec6aa604 3443 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].
jmitc91516 0:9140ec6aa604 3444 NumbersMaxValue = MaxValue;
jmitc91516 0:9140ec6aa604 3445
jmitc91516 0:9140ec6aa604 3446 return (1);
jmitc91516 0:9140ec6aa604 3447 }
jmitc91516 0:9140ec6aa604 3448
jmitc91516 0:9140ec6aa604 3449 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3450 GuiConst_INT8U GuiLib_Graph_SetYAxisRange(
jmitc91516 0:9140ec6aa604 3451 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3452 GuiConst_INT8U AxisIndex,
jmitc91516 0:9140ec6aa604 3453 GuiConst_INT32S MinValue,
jmitc91516 0:9140ec6aa604 3454 GuiConst_INT32S MaxValue)
jmitc91516 0:9140ec6aa604 3455 {
jmitc91516 0:9140ec6aa604 3456 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3457 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3458 return (0);
jmitc91516 0:9140ec6aa604 3459 if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) ||
jmitc91516 0:9140ec6aa604 3460 (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y]))
jmitc91516 0:9140ec6aa604 3461 return (0);
jmitc91516 0:9140ec6aa604 3462
jmitc91516 0:9140ec6aa604 3463 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 3464 NumbersMinValue = MinValue;
jmitc91516 0:9140ec6aa604 3465 sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].
jmitc91516 0:9140ec6aa604 3466 NumbersMaxValue = MaxValue;
jmitc91516 0:9140ec6aa604 3467
jmitc91516 0:9140ec6aa604 3468 return (1);
jmitc91516 0:9140ec6aa604 3469 }
jmitc91516 0:9140ec6aa604 3470
jmitc91516 0:9140ec6aa604 3471 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3472 GuiConst_INT8U GuiLib_Graph_ResetXAxisOrigin(
jmitc91516 0:9140ec6aa604 3473 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3474 GuiConst_INT8S AxisIndex)
jmitc91516 0:9140ec6aa604 3475 {
jmitc91516 0:9140ec6aa604 3476 GuiConst_INT8U AxisIndex1,AxisIndex2;
jmitc91516 0:9140ec6aa604 3477 GuiConst_INT8U I;
jmitc91516 0:9140ec6aa604 3478
jmitc91516 0:9140ec6aa604 3479 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3480 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3481 return (0);
jmitc91516 0:9140ec6aa604 3482 if (AxisIndex == -1)
jmitc91516 0:9140ec6aa604 3483 {
jmitc91516 0:9140ec6aa604 3484 AxisIndex1 = 0;
jmitc91516 0:9140ec6aa604 3485 AxisIndex2 = sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X] - 1;
jmitc91516 0:9140ec6aa604 3486 }
jmitc91516 0:9140ec6aa604 3487 else if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) ||
jmitc91516 0:9140ec6aa604 3488 (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X]))
jmitc91516 0:9140ec6aa604 3489 return (0);
jmitc91516 0:9140ec6aa604 3490 else
jmitc91516 0:9140ec6aa604 3491 {
jmitc91516 0:9140ec6aa604 3492 AxisIndex1 = AxisIndex;
jmitc91516 0:9140ec6aa604 3493 AxisIndex2 = AxisIndex;
jmitc91516 0:9140ec6aa604 3494 }
jmitc91516 0:9140ec6aa604 3495
jmitc91516 0:9140ec6aa604 3496 for (I = AxisIndex1; I <= AxisIndex2; I++)
jmitc91516 0:9140ec6aa604 3497 {
jmitc91516 0:9140ec6aa604 3498 sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].NumbersMinValue =
jmitc91516 0:9140ec6aa604 3499 sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].NumbersMinValueOrg;
jmitc91516 0:9140ec6aa604 3500 sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].NumbersMaxValue =
jmitc91516 0:9140ec6aa604 3501 sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].NumbersMaxValueOrg;
jmitc91516 0:9140ec6aa604 3502 }
jmitc91516 0:9140ec6aa604 3503
jmitc91516 0:9140ec6aa604 3504 return (1);
jmitc91516 0:9140ec6aa604 3505 }
jmitc91516 0:9140ec6aa604 3506
jmitc91516 0:9140ec6aa604 3507 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3508 GuiConst_INT8U GuiLib_Graph_OffsetXAxisOrigin(
jmitc91516 0:9140ec6aa604 3509 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3510 GuiConst_INT8S AxisIndex,
jmitc91516 0:9140ec6aa604 3511 GuiConst_INT32S Offset)
jmitc91516 0:9140ec6aa604 3512 {
jmitc91516 0:9140ec6aa604 3513 GuiConst_INT8U AxisIndex1,AxisIndex2;
jmitc91516 0:9140ec6aa604 3514 GuiConst_INT8U I;
jmitc91516 0:9140ec6aa604 3515
jmitc91516 0:9140ec6aa604 3516 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3517 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3518 return (0);
jmitc91516 0:9140ec6aa604 3519 if (AxisIndex == -1)
jmitc91516 0:9140ec6aa604 3520 {
jmitc91516 0:9140ec6aa604 3521 AxisIndex1 = 0;
jmitc91516 0:9140ec6aa604 3522 AxisIndex2 = sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X] - 1;
jmitc91516 0:9140ec6aa604 3523 }
jmitc91516 0:9140ec6aa604 3524 else if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) ||
jmitc91516 0:9140ec6aa604 3525 (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X]))
jmitc91516 0:9140ec6aa604 3526 return (0);
jmitc91516 0:9140ec6aa604 3527 else
jmitc91516 0:9140ec6aa604 3528 {
jmitc91516 0:9140ec6aa604 3529 AxisIndex1 = AxisIndex;
jmitc91516 0:9140ec6aa604 3530 AxisIndex2 = AxisIndex;
jmitc91516 0:9140ec6aa604 3531 }
jmitc91516 0:9140ec6aa604 3532
jmitc91516 0:9140ec6aa604 3533 for (I = AxisIndex1; I <= AxisIndex2; I++)
jmitc91516 0:9140ec6aa604 3534 {
jmitc91516 0:9140ec6aa604 3535 sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].NumbersMinValue += Offset;
jmitc91516 0:9140ec6aa604 3536 sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].NumbersMaxValue += Offset;
jmitc91516 0:9140ec6aa604 3537 }
jmitc91516 0:9140ec6aa604 3538
jmitc91516 0:9140ec6aa604 3539 return (1);
jmitc91516 0:9140ec6aa604 3540 }
jmitc91516 0:9140ec6aa604 3541
jmitc91516 0:9140ec6aa604 3542 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3543 GuiConst_INT8U GuiLib_Graph_ResetYAxisOrigin(
jmitc91516 0:9140ec6aa604 3544 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3545 GuiConst_INT8S AxisIndex)
jmitc91516 0:9140ec6aa604 3546 {
jmitc91516 0:9140ec6aa604 3547 GuiConst_INT8U AxisIndex1,AxisIndex2;
jmitc91516 0:9140ec6aa604 3548 GuiConst_INT8U I;
jmitc91516 0:9140ec6aa604 3549
jmitc91516 0:9140ec6aa604 3550 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3551 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3552 return (0);
jmitc91516 0:9140ec6aa604 3553 if (AxisIndex == -1)
jmitc91516 0:9140ec6aa604 3554 {
jmitc91516 0:9140ec6aa604 3555 AxisIndex1 = 0;
jmitc91516 0:9140ec6aa604 3556 AxisIndex2 = sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y] - 1;
jmitc91516 0:9140ec6aa604 3557 }
jmitc91516 0:9140ec6aa604 3558 else if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) ||
jmitc91516 0:9140ec6aa604 3559 (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y]))
jmitc91516 0:9140ec6aa604 3560 return (0);
jmitc91516 0:9140ec6aa604 3561 else
jmitc91516 0:9140ec6aa604 3562 {
jmitc91516 0:9140ec6aa604 3563 AxisIndex1 = AxisIndex;
jmitc91516 0:9140ec6aa604 3564 AxisIndex2 = AxisIndex;
jmitc91516 0:9140ec6aa604 3565 }
jmitc91516 0:9140ec6aa604 3566
jmitc91516 0:9140ec6aa604 3567 for (I = AxisIndex1; I <= AxisIndex2; I++)
jmitc91516 0:9140ec6aa604 3568 {
jmitc91516 0:9140ec6aa604 3569 sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].NumbersMinValue =
jmitc91516 0:9140ec6aa604 3570 sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].NumbersMinValueOrg;
jmitc91516 0:9140ec6aa604 3571 sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].NumbersMaxValue =
jmitc91516 0:9140ec6aa604 3572 sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].NumbersMaxValueOrg;
jmitc91516 0:9140ec6aa604 3573 }
jmitc91516 0:9140ec6aa604 3574
jmitc91516 0:9140ec6aa604 3575 return (1);
jmitc91516 0:9140ec6aa604 3576 }
jmitc91516 0:9140ec6aa604 3577
jmitc91516 0:9140ec6aa604 3578 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3579 GuiConst_INT8U GuiLib_Graph_OffsetYAxisOrigin(
jmitc91516 0:9140ec6aa604 3580 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3581 GuiConst_INT8S AxisIndex,
jmitc91516 0:9140ec6aa604 3582 GuiConst_INT32S Offset)
jmitc91516 0:9140ec6aa604 3583 {
jmitc91516 0:9140ec6aa604 3584 GuiConst_INT8U AxisIndex1,AxisIndex2;
jmitc91516 0:9140ec6aa604 3585 GuiConst_INT8U I;
jmitc91516 0:9140ec6aa604 3586
jmitc91516 0:9140ec6aa604 3587 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3588 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3589 return (0);
jmitc91516 0:9140ec6aa604 3590 if (AxisIndex == -1)
jmitc91516 0:9140ec6aa604 3591 {
jmitc91516 0:9140ec6aa604 3592 AxisIndex1 = 0;
jmitc91516 0:9140ec6aa604 3593 AxisIndex2 = sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y] - 1;
jmitc91516 0:9140ec6aa604 3594 }
jmitc91516 0:9140ec6aa604 3595 else if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) ||
jmitc91516 0:9140ec6aa604 3596 (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y]))
jmitc91516 0:9140ec6aa604 3597 return (0);
jmitc91516 0:9140ec6aa604 3598 else
jmitc91516 0:9140ec6aa604 3599 {
jmitc91516 0:9140ec6aa604 3600 AxisIndex1 = AxisIndex;
jmitc91516 0:9140ec6aa604 3601 AxisIndex2 = AxisIndex;
jmitc91516 0:9140ec6aa604 3602 }
jmitc91516 0:9140ec6aa604 3603
jmitc91516 0:9140ec6aa604 3604 for (I = AxisIndex1; I <= AxisIndex2; I++)
jmitc91516 0:9140ec6aa604 3605 {
jmitc91516 0:9140ec6aa604 3606 sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].NumbersMinValue += Offset;
jmitc91516 0:9140ec6aa604 3607 sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].NumbersMaxValue += Offset;
jmitc91516 0:9140ec6aa604 3608 }
jmitc91516 0:9140ec6aa604 3609
jmitc91516 0:9140ec6aa604 3610 return (1);
jmitc91516 0:9140ec6aa604 3611 }
jmitc91516 0:9140ec6aa604 3612
jmitc91516 0:9140ec6aa604 3613 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3614 GuiConst_INT8U GuiLib_Graph_Redraw(
jmitc91516 0:9140ec6aa604 3615 GuiConst_INT8U GraphIndex)
jmitc91516 0:9140ec6aa604 3616 {
jmitc91516 0:9140ec6aa604 3617 GuiConst_INT16S I;
jmitc91516 0:9140ec6aa604 3618
jmitc91516 0:9140ec6aa604 3619 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3620 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3621 return (0);
jmitc91516 0:9140ec6aa604 3622
jmitc91516 0:9140ec6aa604 3623 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 3624 Graph_SetClipping(GraphIndex);
jmitc91516 0:9140ec6aa604 3625 #endif
jmitc91516 0:9140ec6aa604 3626
jmitc91516 0:9140ec6aa604 3627 GuiLib_Graph_DrawAxes(GraphIndex);
jmitc91516 0:9140ec6aa604 3628
jmitc91516 0:9140ec6aa604 3629 for (I = sgl.GraphAry[GraphIndex].GraphDataSetCnt - 1; I >= 0; I--)
jmitc91516 0:9140ec6aa604 3630 GuiLib_Graph_DrawDataSet(GraphIndex, I);
jmitc91516 0:9140ec6aa604 3631
jmitc91516 0:9140ec6aa604 3632 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 3633 Graph_ResetClipping();
jmitc91516 0:9140ec6aa604 3634 #endif
jmitc91516 0:9140ec6aa604 3635
jmitc91516 0:9140ec6aa604 3636 return (1);
jmitc91516 0:9140ec6aa604 3637 }
jmitc91516 0:9140ec6aa604 3638
jmitc91516 0:9140ec6aa604 3639 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3640 GuiConst_INT8U GuiLib_Graph_DrawAxes(
jmitc91516 0:9140ec6aa604 3641 GuiConst_INT8U GraphIndex)
jmitc91516 0:9140ec6aa604 3642 {
jmitc91516 0:9140ec6aa604 3643 GuiConst_INT16S I;
jmitc91516 0:9140ec6aa604 3644
jmitc91516 0:9140ec6aa604 3645 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3646 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3647 return (0);
jmitc91516 0:9140ec6aa604 3648
jmitc91516 0:9140ec6aa604 3649 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 3650 Graph_SetClipping(GraphIndex);
jmitc91516 0:9140ec6aa604 3651 #endif
jmitc91516 0:9140ec6aa604 3652
jmitc91516 0:9140ec6aa604 3653 if (!(sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].BitFlags &
jmitc91516 0:9140ec6aa604 3654 GuiLib_BITFLAG_TRANSPARENT))
jmitc91516 0:9140ec6aa604 3655 GuiLib_FillBox(sgl.GraphAry[GraphIndex].GraphItem.X1,
jmitc91516 0:9140ec6aa604 3656 sgl.GraphAry[GraphIndex].GraphItem.Y1,
jmitc91516 0:9140ec6aa604 3657 sgl.GraphAry[GraphIndex].GraphItem.X2,
jmitc91516 0:9140ec6aa604 3658 sgl.GraphAry[GraphIndex].GraphItem.Y2,
jmitc91516 0:9140ec6aa604 3659 sgl.GraphAry[GraphIndex].GraphItem.BackColor);
jmitc91516 0:9140ec6aa604 3660
jmitc91516 0:9140ec6aa604 3661 for (I = sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X] - 1;
jmitc91516 0:9140ec6aa604 3662 I >= 0; I--)
jmitc91516 0:9140ec6aa604 3663 if (sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].Visible)
jmitc91516 0:9140ec6aa604 3664 Graph_DrawXAxis(GraphIndex, I);
jmitc91516 0:9140ec6aa604 3665
jmitc91516 0:9140ec6aa604 3666 for (I = sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y] - 1;
jmitc91516 0:9140ec6aa604 3667 I >= 0; I--)
jmitc91516 0:9140ec6aa604 3668 if (sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].Visible)
jmitc91516 0:9140ec6aa604 3669 Graph_DrawYAxis(GraphIndex, I);
jmitc91516 0:9140ec6aa604 3670
jmitc91516 0:9140ec6aa604 3671 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 3672 Graph_ResetClipping();
jmitc91516 0:9140ec6aa604 3673 #endif
jmitc91516 0:9140ec6aa604 3674
jmitc91516 0:9140ec6aa604 3675 return (1);
jmitc91516 0:9140ec6aa604 3676 }
jmitc91516 0:9140ec6aa604 3677
jmitc91516 0:9140ec6aa604 3678 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3679 GuiConst_INT8U GuiLib_Graph_DrawDataSet(
jmitc91516 0:9140ec6aa604 3680 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3681 GuiConst_INT8U DataSetIndex)
jmitc91516 0:9140ec6aa604 3682 {
jmitc91516 0:9140ec6aa604 3683 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3684 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3685 return (0);
jmitc91516 0:9140ec6aa604 3686 if ((DataSetIndex >= GuiConst_GRAPH_DATASETS_MAX) ||
jmitc91516 0:9140ec6aa604 3687 (DataSetIndex >= sgl.GraphAry[GraphIndex].GraphDataSetCnt))
jmitc91516 0:9140ec6aa604 3688 return (0);
jmitc91516 0:9140ec6aa604 3689 if (!sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Visible)
jmitc91516 0:9140ec6aa604 3690 return (0);
jmitc91516 0:9140ec6aa604 3691 if (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataSize == 0)
jmitc91516 0:9140ec6aa604 3692 return (0);
jmitc91516 0:9140ec6aa604 3693
jmitc91516 0:9140ec6aa604 3694 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 3695 Graph_SetClipping(GraphIndex);
jmitc91516 0:9140ec6aa604 3696 #endif
jmitc91516 0:9140ec6aa604 3697
jmitc91516 0:9140ec6aa604 3698 Graph_DrawDataSet(GraphIndex, DataSetIndex);
jmitc91516 0:9140ec6aa604 3699
jmitc91516 0:9140ec6aa604 3700 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 3701 Graph_ResetClipping();
jmitc91516 0:9140ec6aa604 3702 #endif
jmitc91516 0:9140ec6aa604 3703
jmitc91516 0:9140ec6aa604 3704 return (1);
jmitc91516 0:9140ec6aa604 3705 }
jmitc91516 0:9140ec6aa604 3706
jmitc91516 0:9140ec6aa604 3707 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3708 GuiConst_INT8U GuiLib_Graph_DrawDataPoint(
jmitc91516 0:9140ec6aa604 3709 GuiConst_INT8U GraphIndex,
jmitc91516 0:9140ec6aa604 3710 GuiConst_INT8U DataSetIndex,
jmitc91516 0:9140ec6aa604 3711 GuiConst_INT16U DataIndex)
jmitc91516 0:9140ec6aa604 3712 {
jmitc91516 0:9140ec6aa604 3713 GuiConst_INT16S Y;
jmitc91516 0:9140ec6aa604 3714 GuiConst_INT16S DX, DY;
jmitc91516 0:9140ec6aa604 3715 GuiConst_INT16S LastDX, LastDY;
jmitc91516 0:9140ec6aa604 3716 GuiConst_INT32S TX, TY;
jmitc91516 0:9140ec6aa604 3717
jmitc91516 0:9140ec6aa604 3718 if ((GraphIndex >= GuiConst_GRAPH_MAX) ||
jmitc91516 0:9140ec6aa604 3719 (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED))
jmitc91516 0:9140ec6aa604 3720 return (0);
jmitc91516 0:9140ec6aa604 3721 if ((DataSetIndex >= GuiConst_GRAPH_DATASETS_MAX) ||
jmitc91516 0:9140ec6aa604 3722 (DataSetIndex >= sgl.GraphAry[GraphIndex].GraphDataSetCnt))
jmitc91516 0:9140ec6aa604 3723 return (0);
jmitc91516 0:9140ec6aa604 3724 if (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataSize == 0)
jmitc91516 0:9140ec6aa604 3725 return (0);
jmitc91516 0:9140ec6aa604 3726 if (!sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Visible)
jmitc91516 0:9140ec6aa604 3727 return (0);
jmitc91516 0:9140ec6aa604 3728 if (DataIndex >= sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount)
jmitc91516 0:9140ec6aa604 3729 return (0);
jmitc91516 0:9140ec6aa604 3730
jmitc91516 0:9140ec6aa604 3731 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 3732 Graph_SetClipping(GraphIndex);
jmitc91516 0:9140ec6aa604 3733 #endif
jmitc91516 0:9140ec6aa604 3734
jmitc91516 0:9140ec6aa604 3735 Graph_CalcScaleX(GraphIndex,
jmitc91516 0:9140ec6aa604 3736 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX);
jmitc91516 0:9140ec6aa604 3737 Graph_CalcScaleY(GraphIndex,
jmitc91516 0:9140ec6aa604 3738 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY);
jmitc91516 0:9140ec6aa604 3739
jmitc91516 0:9140ec6aa604 3740 TX = sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[DataIndex].X;
jmitc91516 0:9140ec6aa604 3741 TY = sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[DataIndex].Y;
jmitc91516 0:9140ec6aa604 3742 DX = sgl.GraphAry[GraphIndex].OrigoX + ((TX -
jmitc91516 0:9140ec6aa604 3743 sgl.GraphAry[GraphIndex].GraphAxes[
jmitc91516 0:9140ec6aa604 3744 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX]
jmitc91516 0:9140ec6aa604 3745 [GuiLib_GRAPHAXIS_X].NumbersMinValue) *
jmitc91516 0:9140ec6aa604 3746 sgl.GraphAry[GraphIndex].GraphAxes[
jmitc91516 0:9140ec6aa604 3747 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX]
jmitc91516 0:9140ec6aa604 3748 [GuiLib_GRAPHAXIS_X].Scale) / 10000;
jmitc91516 0:9140ec6aa604 3749 DY = sgl.GraphAry[GraphIndex].OrigoY - ((TY -
jmitc91516 0:9140ec6aa604 3750 sgl.GraphAry[GraphIndex].GraphAxes[
jmitc91516 0:9140ec6aa604 3751 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY]
jmitc91516 0:9140ec6aa604 3752 [GuiLib_GRAPHAXIS_Y].NumbersMinValue) *
jmitc91516 0:9140ec6aa604 3753 sgl.GraphAry[GraphIndex].GraphAxes[
jmitc91516 0:9140ec6aa604 3754 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY]
jmitc91516 0:9140ec6aa604 3755 [GuiLib_GRAPHAXIS_Y].Scale) / 10000;
jmitc91516 0:9140ec6aa604 3756 if (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Representation ==
jmitc91516 0:9140ec6aa604 3757 GuiLib_GRAPH_DATATYPE_LINE)
jmitc91516 0:9140ec6aa604 3758 {
jmitc91516 0:9140ec6aa604 3759 if (DataIndex == 0)
jmitc91516 0:9140ec6aa604 3760 DataIndex = sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount - 1;
jmitc91516 0:9140ec6aa604 3761 else
jmitc91516 0:9140ec6aa604 3762 DataIndex--;
jmitc91516 0:9140ec6aa604 3763
jmitc91516 0:9140ec6aa604 3764 TX =
jmitc91516 0:9140ec6aa604 3765 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[DataIndex].X;
jmitc91516 0:9140ec6aa604 3766 TY =
jmitc91516 0:9140ec6aa604 3767 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[DataIndex].Y;
jmitc91516 0:9140ec6aa604 3768 LastDX = sgl.GraphAry[GraphIndex].OrigoX + ((TX -
jmitc91516 0:9140ec6aa604 3769 sgl.GraphAry[GraphIndex].GraphAxes[
jmitc91516 0:9140ec6aa604 3770 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX]
jmitc91516 0:9140ec6aa604 3771 [GuiLib_GRAPHAXIS_X].NumbersMinValue) *
jmitc91516 0:9140ec6aa604 3772 sgl.GraphAry[GraphIndex].GraphAxes[
jmitc91516 0:9140ec6aa604 3773 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX]
jmitc91516 0:9140ec6aa604 3774 [GuiLib_GRAPHAXIS_X].Scale) / 10000;
jmitc91516 0:9140ec6aa604 3775 LastDY = sgl.GraphAry[GraphIndex].OrigoY - ((TY -
jmitc91516 0:9140ec6aa604 3776 sgl.GraphAry[GraphIndex].GraphAxes[
jmitc91516 0:9140ec6aa604 3777 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY]
jmitc91516 0:9140ec6aa604 3778 [GuiLib_GRAPHAXIS_Y].NumbersMinValue) *
jmitc91516 0:9140ec6aa604 3779 sgl.GraphAry[GraphIndex].GraphAxes[
jmitc91516 0:9140ec6aa604 3780 sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY]
jmitc91516 0:9140ec6aa604 3781 [GuiLib_GRAPHAXIS_Y].Scale) / 10000;
jmitc91516 0:9140ec6aa604 3782 }
jmitc91516 0:9140ec6aa604 3783 else
jmitc91516 0:9140ec6aa604 3784 {
jmitc91516 0:9140ec6aa604 3785 LastDX = DX;
jmitc91516 0:9140ec6aa604 3786 LastDY = DY;
jmitc91516 0:9140ec6aa604 3787 }
jmitc91516 0:9140ec6aa604 3788
jmitc91516 0:9140ec6aa604 3789 Graph_DrawDataPoint(
jmitc91516 0:9140ec6aa604 3790 GraphIndex,
jmitc91516 0:9140ec6aa604 3791 DataSetIndex,
jmitc91516 0:9140ec6aa604 3792 DataIndex,
jmitc91516 0:9140ec6aa604 3793 DX, DY,
jmitc91516 0:9140ec6aa604 3794 LastDX, LastDY);
jmitc91516 0:9140ec6aa604 3795
jmitc91516 0:9140ec6aa604 3796 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 3797 Graph_ResetClipping();
jmitc91516 0:9140ec6aa604 3798 #endif
jmitc91516 0:9140ec6aa604 3799
jmitc91516 0:9140ec6aa604 3800 return (1);
jmitc91516 0:9140ec6aa604 3801 }
jmitc91516 0:9140ec6aa604 3802 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3803 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3804 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3805 #endif // GuiConst_ITEM_GRAPH_INUSE
jmitc91516 0:9140ec6aa604 3806
jmitc91516 0:9140ec6aa604 3807 #ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE
jmitc91516 0:9140ec6aa604 3808 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3809 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3810 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3811 static GuiConst_INT16S IndexOfGraphicsLayer(
jmitc91516 0:9140ec6aa604 3812 GuiConst_INT16S GraphicsLayerIndex)
jmitc91516 0:9140ec6aa604 3813 {
jmitc91516 0:9140ec6aa604 3814 GuiConst_INT16S I;
jmitc91516 0:9140ec6aa604 3815
jmitc91516 0:9140ec6aa604 3816 if (GraphicsLayerIndex == GuiLib_GRAPHICS_LAYER_BASE)
jmitc91516 0:9140ec6aa604 3817 return(GuiLib_GRAPHICS_LAYER_BASE);
jmitc91516 0:9140ec6aa604 3818 else if (GraphicsLayerIndex == GuiLib_GRAPHICS_LAYER_PREVIOUS)
jmitc91516 0:9140ec6aa604 3819 {
jmitc91516 0:9140ec6aa604 3820 if (sgl.GraphicsLayerLifoCnt <= 1)
jmitc91516 0:9140ec6aa604 3821 return(GuiLib_GRAPHICS_LAYER_BASE);
jmitc91516 0:9140ec6aa604 3822 else
jmitc91516 0:9140ec6aa604 3823 return(sgl.GraphicsLayerLifo[sgl.GraphicsLayerLifoCnt - 2]);
jmitc91516 0:9140ec6aa604 3824 }
jmitc91516 0:9140ec6aa604 3825 else if (GraphicsLayerIndex == GuiLib_GRAPHICS_LAYER_CURRENT)
jmitc91516 0:9140ec6aa604 3826 {
jmitc91516 0:9140ec6aa604 3827 if (sgl.GraphicsLayerLifoCnt > 0)
jmitc91516 0:9140ec6aa604 3828 return(sgl.GraphicsLayerLifo[sgl.GraphicsLayerLifoCnt - 1]);
jmitc91516 0:9140ec6aa604 3829 else
jmitc91516 0:9140ec6aa604 3830 return(GuiLib_GRAPHICS_LAYER_BASE);
jmitc91516 0:9140ec6aa604 3831 }
jmitc91516 0:9140ec6aa604 3832 else if (GraphicsLayerIndex < 0)
jmitc91516 0:9140ec6aa604 3833 return(GuiLib_GRAPHICS_LAYER_BASE);
jmitc91516 0:9140ec6aa604 3834 else if (sgl.GraphicsLayerLifoCnt <= 1)
jmitc91516 0:9140ec6aa604 3835 return(GuiLib_GRAPHICS_LAYER_BASE);
jmitc91516 0:9140ec6aa604 3836 for (I = 0; I < sgl.GraphicsLayerLifoCnt; I++)
jmitc91516 0:9140ec6aa604 3837 if (sgl.GraphicsLayerLifo[I] == GraphicsLayerIndex)
jmitc91516 0:9140ec6aa604 3838 return(GraphicsLayerIndex);
jmitc91516 0:9140ec6aa604 3839 return(GuiLib_GRAPHICS_LAYER_BASE);
jmitc91516 0:9140ec6aa604 3840 }
jmitc91516 0:9140ec6aa604 3841
jmitc91516 0:9140ec6aa604 3842 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3843 static GuiConst_INT8U GraphicsLayer_Push(
jmitc91516 0:9140ec6aa604 3844 GuiConst_INT8U GraphicsLayerIndex)
jmitc91516 0:9140ec6aa604 3845 {
jmitc91516 0:9140ec6aa604 3846 GuiConst_INT16S I;
jmitc91516 0:9140ec6aa604 3847
jmitc91516 0:9140ec6aa604 3848 if (GraphicsLayerIndex >= GuiConst_GRAPHICS_LAYER_MAX)
jmitc91516 0:9140ec6aa604 3849 return(0);
jmitc91516 0:9140ec6aa604 3850 if (sgl.GraphicsLayerList[GraphicsLayerIndex].InUse != GuiLib_GRAPHICS_LAYER_USED)
jmitc91516 0:9140ec6aa604 3851 return(0);
jmitc91516 0:9140ec6aa604 3852 if (sgl.GraphicsLayerLifoCnt == GuiConst_GRAPHICS_LAYER_MAX)
jmitc91516 0:9140ec6aa604 3853 return(0);
jmitc91516 0:9140ec6aa604 3854 for (I = 0; I < sgl.GraphicsLayerLifoCnt; I++)
jmitc91516 0:9140ec6aa604 3855 if (sgl.GraphicsLayerLifo[I] == GraphicsLayerIndex)
jmitc91516 0:9140ec6aa604 3856 return(0);
jmitc91516 0:9140ec6aa604 3857
jmitc91516 0:9140ec6aa604 3858 sgl.GraphicsLayerLifo[sgl.GraphicsLayerLifoCnt] = GraphicsLayerIndex;
jmitc91516 0:9140ec6aa604 3859 sgl.GraphicsLayerLifoCnt++;
jmitc91516 0:9140ec6aa604 3860 sgl.GraphicsLayerList[GraphicsLayerIndex].BaseAddress =
jmitc91516 0:9140ec6aa604 3861 &sgl.LayerBuf[(GuiConst_INT32U)ReadWord(
jmitc91516 0:9140ec6aa604 3862 GuiStruct_GraphicsLayerOfs[GraphicsLayerIndex])];
jmitc91516 0:9140ec6aa604 3863
jmitc91516 0:9140ec6aa604 3864 sgl.CurLayerBufPtr = sgl.GraphicsLayerList[GraphicsLayerIndex].BaseAddress;
jmitc91516 0:9140ec6aa604 3865 sgl.CurLayerLineSize = sgl.GraphicsLayerList[GraphicsLayerIndex].LineSize;
jmitc91516 0:9140ec6aa604 3866 sgl.CurLayerWidth = sgl.GraphicsLayerList[GraphicsLayerIndex].Width;
jmitc91516 0:9140ec6aa604 3867 sgl.CurLayerHeight = sgl.GraphicsLayerList[GraphicsLayerIndex].Height;
jmitc91516 0:9140ec6aa604 3868 sgl.CurLayerBytes =
jmitc91516 0:9140ec6aa604 3869 sgl.GraphicsLayerList[GraphicsLayerIndex].Height *
jmitc91516 0:9140ec6aa604 3870 sgl.GraphicsLayerList[GraphicsLayerIndex].LineSize;
jmitc91516 0:9140ec6aa604 3871 sgl.BaseLayerDrawing = 0;
jmitc91516 0:9140ec6aa604 3872
jmitc91516 0:9140ec6aa604 3873 return(1);
jmitc91516 0:9140ec6aa604 3874 }
jmitc91516 0:9140ec6aa604 3875
jmitc91516 0:9140ec6aa604 3876 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3877 static GuiConst_INT8U GraphicsLayer_Pop(
jmitc91516 0:9140ec6aa604 3878 GuiConst_INT16S GraphicsLayerIndex)
jmitc91516 0:9140ec6aa604 3879 {
jmitc91516 0:9140ec6aa604 3880 GuiConst_INT16S I;
jmitc91516 0:9140ec6aa604 3881
jmitc91516 0:9140ec6aa604 3882 if (GraphicsLayerIndex == GuiLib_GRAPHICS_LAYER_BASE)
jmitc91516 0:9140ec6aa604 3883 sgl.GraphicsLayerLifoCnt = 0;
jmitc91516 0:9140ec6aa604 3884 else if ((GraphicsLayerIndex == GuiLib_GRAPHICS_LAYER_PREVIOUS) &&
jmitc91516 0:9140ec6aa604 3885 (sgl.GraphicsLayerLifoCnt > 0))
jmitc91516 0:9140ec6aa604 3886 {
jmitc91516 0:9140ec6aa604 3887 sgl.GraphicsLayerLifoCnt--;
jmitc91516 0:9140ec6aa604 3888 GraphicsLayerIndex = sgl.GraphicsLayerLifo[sgl.GraphicsLayerLifoCnt - 1];
jmitc91516 0:9140ec6aa604 3889 }
jmitc91516 0:9140ec6aa604 3890 else if (GraphicsLayerIndex < 0)
jmitc91516 0:9140ec6aa604 3891 return(0);
jmitc91516 0:9140ec6aa604 3892 else if (sgl.GraphicsLayerLifoCnt <= 1)
jmitc91516 0:9140ec6aa604 3893 return(0);
jmitc91516 0:9140ec6aa604 3894 else
jmitc91516 0:9140ec6aa604 3895 {
jmitc91516 0:9140ec6aa604 3896 for (I = sgl.GraphicsLayerLifoCnt - 2; I >= 0; I--)
jmitc91516 0:9140ec6aa604 3897 if (sgl.GraphicsLayerLifo[I] == GraphicsLayerIndex)
jmitc91516 0:9140ec6aa604 3898 {
jmitc91516 0:9140ec6aa604 3899 sgl.GraphicsLayerLifoCnt = I + 1;
jmitc91516 0:9140ec6aa604 3900 break;
jmitc91516 0:9140ec6aa604 3901 }
jmitc91516 0:9140ec6aa604 3902 if (I == -1)
jmitc91516 0:9140ec6aa604 3903 return(0);
jmitc91516 0:9140ec6aa604 3904 }
jmitc91516 0:9140ec6aa604 3905
jmitc91516 0:9140ec6aa604 3906 if (sgl.GraphicsLayerLifoCnt == 0)
jmitc91516 0:9140ec6aa604 3907 ResetLayerBufPtr();
jmitc91516 0:9140ec6aa604 3908 else
jmitc91516 0:9140ec6aa604 3909 {
jmitc91516 0:9140ec6aa604 3910 sgl.CurLayerBufPtr = sgl.GraphicsLayerList[GraphicsLayerIndex].BaseAddress;
jmitc91516 0:9140ec6aa604 3911 sgl.CurLayerLineSize = sgl.GraphicsLayerList[GraphicsLayerIndex].LineSize;
jmitc91516 0:9140ec6aa604 3912 sgl.CurLayerWidth = sgl.GraphicsLayerList[GraphicsLayerIndex].Width;
jmitc91516 0:9140ec6aa604 3913 sgl.CurLayerHeight = sgl.GraphicsLayerList[GraphicsLayerIndex].Height;
jmitc91516 0:9140ec6aa604 3914 sgl.CurLayerBytes =
jmitc91516 0:9140ec6aa604 3915 sgl.GraphicsLayerList[GraphicsLayerIndex].Height *
jmitc91516 0:9140ec6aa604 3916 sgl.GraphicsLayerList[GraphicsLayerIndex].LineSize;
jmitc91516 0:9140ec6aa604 3917 sgl.BaseLayerDrawing = 0;
jmitc91516 0:9140ec6aa604 3918 }
jmitc91516 0:9140ec6aa604 3919
jmitc91516 0:9140ec6aa604 3920 return(1);
jmitc91516 0:9140ec6aa604 3921 }
jmitc91516 0:9140ec6aa604 3922
jmitc91516 0:9140ec6aa604 3923 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3924 static void GraphicsLayer_Copy(
jmitc91516 0:9140ec6aa604 3925 GuiConst_INT8U *DestAddress,
jmitc91516 0:9140ec6aa604 3926 GuiConst_INT16U DestLineSize,
jmitc91516 0:9140ec6aa604 3927 GuiConst_INT16S DestX,
jmitc91516 0:9140ec6aa604 3928 GuiConst_INT16S DestY,
jmitc91516 0:9140ec6aa604 3929 GuiConst_INT8U *SourceAddress,
jmitc91516 0:9140ec6aa604 3930 GuiConst_INT16U SourceLineSize,
jmitc91516 0:9140ec6aa604 3931 GuiConst_INT16S SourceX,
jmitc91516 0:9140ec6aa604 3932 GuiConst_INT16S SourceY,
jmitc91516 0:9140ec6aa604 3933 GuiConst_INT16U Width,
jmitc91516 0:9140ec6aa604 3934 GuiConst_INT16U Height)
jmitc91516 0:9140ec6aa604 3935 {
jmitc91516 0:9140ec6aa604 3936 GuiConst_INT16S LineSize;
jmitc91516 0:9140ec6aa604 3937
jmitc91516 0:9140ec6aa604 3938 SourceAddress +=
jmitc91516 0:9140ec6aa604 3939 SourceY * SourceLineSize + GuiConst_PIXEL_BYTE_SIZE * SourceX;
jmitc91516 0:9140ec6aa604 3940 DestAddress += DestY * DestLineSize + GuiConst_PIXEL_BYTE_SIZE * DestX;
jmitc91516 0:9140ec6aa604 3941 LineSize = GuiConst_PIXEL_BYTE_SIZE * Width;
jmitc91516 0:9140ec6aa604 3942 while (Height > 0)
jmitc91516 0:9140ec6aa604 3943 {
jmitc91516 0:9140ec6aa604 3944 memcpy(DestAddress, SourceAddress, LineSize);
jmitc91516 0:9140ec6aa604 3945 SourceAddress += SourceLineSize;
jmitc91516 0:9140ec6aa604 3946 DestAddress += DestLineSize;
jmitc91516 0:9140ec6aa604 3947 Height--;
jmitc91516 0:9140ec6aa604 3948 }
jmitc91516 0:9140ec6aa604 3949 }
jmitc91516 0:9140ec6aa604 3950
jmitc91516 0:9140ec6aa604 3951 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3952 GuiConst_INT8U GuiLib_GraphicsFilter_Init(
jmitc91516 0:9140ec6aa604 3953 GuiConst_INT8U GraphicsFilterIndex,
jmitc91516 0:9140ec6aa604 3954 void (*FilterFuncPtr)
jmitc91516 0:9140ec6aa604 3955 (GuiConst_INT8U *DestAddress,
jmitc91516 0:9140ec6aa604 3956 GuiConst_INT16U DestLineSize,
jmitc91516 0:9140ec6aa604 3957 GuiConst_INT8U *SourceAddress,
jmitc91516 0:9140ec6aa604 3958 GuiConst_INT16U SourceLineSize,
jmitc91516 0:9140ec6aa604 3959 GuiConst_INT16U Width,
jmitc91516 0:9140ec6aa604 3960 GuiConst_INT16U Height,
jmitc91516 0:9140ec6aa604 3961 GuiConst_INT32S FilterPars[10]))
jmitc91516 0:9140ec6aa604 3962 {
jmitc91516 0:9140ec6aa604 3963 if (GraphicsFilterIndex >= GuiConst_GRAPHICS_FILTER_MAX)
jmitc91516 0:9140ec6aa604 3964 return (0);
jmitc91516 0:9140ec6aa604 3965
jmitc91516 0:9140ec6aa604 3966 sgl.GraphicsFilterList[GraphicsFilterIndex].GraphicsFilterFunc = FilterFuncPtr;
jmitc91516 0:9140ec6aa604 3967
jmitc91516 0:9140ec6aa604 3968 return (1);
jmitc91516 0:9140ec6aa604 3969 }
jmitc91516 0:9140ec6aa604 3970 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3971 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3972 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3973 #endif // GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE
jmitc91516 0:9140ec6aa604 3974
jmitc91516 0:9140ec6aa604 3975 #ifdef GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 3976 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3977 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3978 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3979 GuiConst_INT16S *TextBox_Scroll_GetPosRec(GuiConst_INT8U TextBoxIndex)
jmitc91516 0:9140ec6aa604 3980 {
jmitc91516 0:9140ec6aa604 3981 GuiConst_INT16S I;
jmitc91516 0:9140ec6aa604 3982 GuiConst_INT16S *result = NULL;
jmitc91516 0:9140ec6aa604 3983
jmitc91516 0:9140ec6aa604 3984 for (I=0;I<GuiConst_TEXTBOX_FIELDS_MAX;I++)
jmitc91516 0:9140ec6aa604 3985 {
jmitc91516 0:9140ec6aa604 3986 if (sgl.TextBoxScrollPositions[I].index == TextBoxIndex)
jmitc91516 0:9140ec6aa604 3987 {
jmitc91516 0:9140ec6aa604 3988 result = &sgl.TextBoxScrollPositions[I].pos;
jmitc91516 0:9140ec6aa604 3989 break;
jmitc91516 0:9140ec6aa604 3990 }
jmitc91516 0:9140ec6aa604 3991 }
jmitc91516 0:9140ec6aa604 3992
jmitc91516 0:9140ec6aa604 3993 return result;
jmitc91516 0:9140ec6aa604 3994 }
jmitc91516 0:9140ec6aa604 3995 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3996 static GuiConst_INT16S TextBox_Scroll_CalcEndPos(
jmitc91516 0:9140ec6aa604 3997 GuiLib_ItemRec PrefixLocate *TextBoxItem,
jmitc91516 0:9140ec6aa604 3998 GuiConst_INT8U PerLine)
jmitc91516 0:9140ec6aa604 3999 {
jmitc91516 0:9140ec6aa604 4000 GuiConst_INT16S H;
jmitc91516 0:9140ec6aa604 4001
jmitc91516 0:9140ec6aa604 4002 H = TextBoxItem->Y2 -
jmitc91516 0:9140ec6aa604 4003 TextBoxItem->Y1 + 1;
jmitc91516 0:9140ec6aa604 4004 if (PerLine)
jmitc91516 0:9140ec6aa604 4005 return (TextBoxItem->CompPars.CompTextBox.LineDist *
jmitc91516 0:9140ec6aa604 4006 (TextBoxItem->CompPars.CompTextBox.Lines -
jmitc91516 0:9140ec6aa604 4007 (H / TextBoxItem->CompPars.CompTextBox.LineDist)));
jmitc91516 0:9140ec6aa604 4008 else
jmitc91516 0:9140ec6aa604 4009 return (TextBoxItem->CompPars.CompTextBox.Lines *
jmitc91516 0:9140ec6aa604 4010 TextBoxItem->CompPars.CompTextBox.LineDist - H);
jmitc91516 0:9140ec6aa604 4011 }
jmitc91516 0:9140ec6aa604 4012 #endif // GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 4013
jmitc91516 0:9140ec6aa604 4014 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4015 static GuiConst_INT8U TextBox_Scroll_To(
jmitc91516 0:9140ec6aa604 4016 GuiConst_INT8U TextBoxIndex,
jmitc91516 0:9140ec6aa604 4017 GuiConst_INT16S NewPos,
jmitc91516 0:9140ec6aa604 4018 GuiConst_INT8U PerLine,
jmitc91516 0:9140ec6aa604 4019 GuiConst_INT8U AbsoluteMove)
jmitc91516 0:9140ec6aa604 4020 {
jmitc91516 0:9140ec6aa604 4021 #ifdef GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 4022 GuiLib_ItemRec PrefixLocate *TextBoxItem;
jmitc91516 0:9140ec6aa604 4023 GuiConst_INT16S TextBox;
jmitc91516 0:9140ec6aa604 4024 GuiConst_INT16S PrefixLocate *ScrollPos;
jmitc91516 0:9140ec6aa604 4025
jmitc91516 0:9140ec6aa604 4026 TextBox = AutoRedraw_GetTextBox(TextBoxIndex, -1);
jmitc91516 0:9140ec6aa604 4027
jmitc91516 0:9140ec6aa604 4028 if (TextBox == -1)
jmitc91516 0:9140ec6aa604 4029 return (0);
jmitc91516 0:9140ec6aa604 4030
jmitc91516 0:9140ec6aa604 4031 TextBoxItem = AutoRedraw_GetItem(TextBox);
jmitc91516 0:9140ec6aa604 4032
jmitc91516 0:9140ec6aa604 4033 if (TextBoxItem == NULL)
jmitc91516 0:9140ec6aa604 4034 return (0);
jmitc91516 0:9140ec6aa604 4035 else
jmitc91516 0:9140ec6aa604 4036 {
jmitc91516 0:9140ec6aa604 4037 ScrollPos = TextBox_Scroll_GetPosRec(TextBoxIndex);
jmitc91516 0:9140ec6aa604 4038
jmitc91516 0:9140ec6aa604 4039 if (ScrollPos == NULL)
jmitc91516 0:9140ec6aa604 4040 return (0);
jmitc91516 0:9140ec6aa604 4041
jmitc91516 0:9140ec6aa604 4042 if (PerLine)
jmitc91516 0:9140ec6aa604 4043 NewPos *= TextBoxItem->CompPars.CompTextBox.LineDist;
jmitc91516 0:9140ec6aa604 4044
jmitc91516 0:9140ec6aa604 4045 switch (AbsoluteMove)
jmitc91516 0:9140ec6aa604 4046 {
jmitc91516 0:9140ec6aa604 4047 case 0:
jmitc91516 0:9140ec6aa604 4048 *ScrollPos += NewPos;
jmitc91516 0:9140ec6aa604 4049 break;
jmitc91516 0:9140ec6aa604 4050
jmitc91516 0:9140ec6aa604 4051 case 1:
jmitc91516 0:9140ec6aa604 4052 *ScrollPos = NewPos;
jmitc91516 0:9140ec6aa604 4053 break;
jmitc91516 0:9140ec6aa604 4054
jmitc91516 0:9140ec6aa604 4055 case 2:
jmitc91516 0:9140ec6aa604 4056 *ScrollPos = TextBox_Scroll_CalcEndPos(TextBoxItem, PerLine);
jmitc91516 0:9140ec6aa604 4057 break;
jmitc91516 0:9140ec6aa604 4058 }
jmitc91516 0:9140ec6aa604 4059
jmitc91516 0:9140ec6aa604 4060 TextBoxItem->CompPars.CompTextBox.ScrollPos = *ScrollPos;
jmitc91516 0:9140ec6aa604 4061
jmitc91516 0:9140ec6aa604 4062 memcpy(&sgl.CurItem, TextBoxItem, sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 4063
jmitc91516 0:9140ec6aa604 4064 GuiDisplay_Lock();
jmitc91516 0:9140ec6aa604 4065
jmitc91516 0:9140ec6aa604 4066 sgl.DisplayLevel = 0;
jmitc91516 0:9140ec6aa604 4067 sgl.SwapColors = 0;
jmitc91516 0:9140ec6aa604 4068 DrawItem(GuiLib_COL_INVERT_OFF);
jmitc91516 0:9140ec6aa604 4069
jmitc91516 0:9140ec6aa604 4070 GuiDisplay_Unlock();
jmitc91516 0:9140ec6aa604 4071 return (1);
jmitc91516 0:9140ec6aa604 4072 }
jmitc91516 0:9140ec6aa604 4073 #else
jmitc91516 0:9140ec6aa604 4074 gl.Dummy1_8U = TextBoxIndex; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 4075 gl.Dummy1_16S = NewPos; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 4076 gl.Dummy2_8U = PerLine; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 4077 gl.Dummy3_8U = AbsoluteMove; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 4078 return (0);
jmitc91516 0:9140ec6aa604 4079 #endif
jmitc91516 0:9140ec6aa604 4080 }
jmitc91516 0:9140ec6aa604 4081
jmitc91516 0:9140ec6aa604 4082 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4083 GuiConst_INT8U GuiLib_TextBox_Scroll_Up(
jmitc91516 0:9140ec6aa604 4084 GuiConst_INT8U TextBoxIndex)
jmitc91516 0:9140ec6aa604 4085 {
jmitc91516 0:9140ec6aa604 4086 return (TextBox_Scroll_To(TextBoxIndex, -1, 1, 0));
jmitc91516 0:9140ec6aa604 4087 }
jmitc91516 0:9140ec6aa604 4088
jmitc91516 0:9140ec6aa604 4089 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4090 GuiConst_INT8U GuiLib_TextBox_Scroll_Down(
jmitc91516 0:9140ec6aa604 4091 GuiConst_INT8U TextBoxIndex)
jmitc91516 0:9140ec6aa604 4092 {
jmitc91516 0:9140ec6aa604 4093 return (TextBox_Scroll_To(TextBoxIndex, 1, 1, 0));
jmitc91516 0:9140ec6aa604 4094 }
jmitc91516 0:9140ec6aa604 4095
jmitc91516 0:9140ec6aa604 4096 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4097 GuiConst_INT8U GuiLib_TextBox_Scroll_Home(
jmitc91516 0:9140ec6aa604 4098 GuiConst_INT8U TextBoxIndex)
jmitc91516 0:9140ec6aa604 4099 {
jmitc91516 0:9140ec6aa604 4100 return (TextBox_Scroll_To(TextBoxIndex, 0, 1, 1));
jmitc91516 0:9140ec6aa604 4101 }
jmitc91516 0:9140ec6aa604 4102
jmitc91516 0:9140ec6aa604 4103 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4104 GuiConst_INT8U GuiLib_TextBox_Scroll_End(
jmitc91516 0:9140ec6aa604 4105 GuiConst_INT8U TextBoxIndex)
jmitc91516 0:9140ec6aa604 4106 {
jmitc91516 0:9140ec6aa604 4107 return (TextBox_Scroll_To(TextBoxIndex, 0, 1, 2));
jmitc91516 0:9140ec6aa604 4108 }
jmitc91516 0:9140ec6aa604 4109
jmitc91516 0:9140ec6aa604 4110 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4111 GuiConst_INT8U GuiLib_TextBox_Scroll_To_Line(
jmitc91516 0:9140ec6aa604 4112 GuiConst_INT8U TextBoxIndex,
jmitc91516 0:9140ec6aa604 4113 GuiConst_INT16S NewLine)
jmitc91516 0:9140ec6aa604 4114 {
jmitc91516 0:9140ec6aa604 4115 return (TextBox_Scroll_To(TextBoxIndex, NewLine, 1, 1));
jmitc91516 0:9140ec6aa604 4116 }
jmitc91516 0:9140ec6aa604 4117
jmitc91516 0:9140ec6aa604 4118 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4119 GuiConst_INT8U GuiLib_TextBox_Scroll_Up_Pixel(
jmitc91516 0:9140ec6aa604 4120 GuiConst_INT8U TextBoxIndex)
jmitc91516 0:9140ec6aa604 4121 {
jmitc91516 0:9140ec6aa604 4122 return (TextBox_Scroll_To(TextBoxIndex, -1, 0, 0));
jmitc91516 0:9140ec6aa604 4123 }
jmitc91516 0:9140ec6aa604 4124
jmitc91516 0:9140ec6aa604 4125 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4126 GuiConst_INT8U GuiLib_TextBox_Scroll_Down_Pixel(
jmitc91516 0:9140ec6aa604 4127 GuiConst_INT8U TextBoxIndex)
jmitc91516 0:9140ec6aa604 4128 {
jmitc91516 0:9140ec6aa604 4129 return (TextBox_Scroll_To(TextBoxIndex, 1, 0, 0));
jmitc91516 0:9140ec6aa604 4130 }
jmitc91516 0:9140ec6aa604 4131
jmitc91516 0:9140ec6aa604 4132 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4133 GuiConst_INT8U GuiLib_TextBox_Scroll_Home_Pixel(
jmitc91516 0:9140ec6aa604 4134 GuiConst_INT8U TextBoxIndex)
jmitc91516 0:9140ec6aa604 4135 {
jmitc91516 0:9140ec6aa604 4136 return (TextBox_Scroll_To(TextBoxIndex, 0, 0, 1));
jmitc91516 0:9140ec6aa604 4137 }
jmitc91516 0:9140ec6aa604 4138
jmitc91516 0:9140ec6aa604 4139 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4140 GuiConst_INT8U GuiLib_TextBox_Scroll_End_Pixel(
jmitc91516 0:9140ec6aa604 4141 GuiConst_INT8U TextBoxIndex)
jmitc91516 0:9140ec6aa604 4142 {
jmitc91516 0:9140ec6aa604 4143 return (TextBox_Scroll_To(TextBoxIndex, 0, 0, 2));
jmitc91516 0:9140ec6aa604 4144 }
jmitc91516 0:9140ec6aa604 4145
jmitc91516 0:9140ec6aa604 4146 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4147 GuiConst_INT8U GuiLib_TextBox_Scroll_To_PixelLine(
jmitc91516 0:9140ec6aa604 4148 GuiConst_INT8U TextBoxIndex,
jmitc91516 0:9140ec6aa604 4149 GuiConst_INT16S NewPixelLine)
jmitc91516 0:9140ec6aa604 4150 {
jmitc91516 0:9140ec6aa604 4151 return (TextBox_Scroll_To(TextBoxIndex, NewPixelLine, 0, 1));
jmitc91516 0:9140ec6aa604 4152 }
jmitc91516 0:9140ec6aa604 4153
jmitc91516 0:9140ec6aa604 4154 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4155 static GuiConst_INT8U TextBox_Scroll_Get_Pos(
jmitc91516 0:9140ec6aa604 4156 GuiConst_INT8U TextBoxIndex,
jmitc91516 0:9140ec6aa604 4157 GuiConst_INT8U PerLine)
jmitc91516 0:9140ec6aa604 4158 {
jmitc91516 0:9140ec6aa604 4159 #ifdef GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 4160 GuiConst_INT16S P;
jmitc91516 0:9140ec6aa604 4161 GuiLib_ItemRec PrefixLocate*TextBoxItem;
jmitc91516 0:9140ec6aa604 4162 GuiConst_INT16S TextBox;
jmitc91516 0:9140ec6aa604 4163 GuiConst_INT16S PrefixLocate *ScrollPos;
jmitc91516 0:9140ec6aa604 4164
jmitc91516 0:9140ec6aa604 4165 TextBox = AutoRedraw_GetTextBox(TextBoxIndex, -1);
jmitc91516 0:9140ec6aa604 4166
jmitc91516 0:9140ec6aa604 4167 if (TextBox == -1)
jmitc91516 0:9140ec6aa604 4168 return (GuiLib_TEXTBOX_SCROLL_ILLEGAL_NDX);
jmitc91516 0:9140ec6aa604 4169
jmitc91516 0:9140ec6aa604 4170 TextBoxItem = AutoRedraw_GetItem(TextBox);
jmitc91516 0:9140ec6aa604 4171
jmitc91516 0:9140ec6aa604 4172 if (TextBoxItem == NULL)
jmitc91516 0:9140ec6aa604 4173 return (GuiLib_TEXTBOX_SCROLL_ILLEGAL_NDX);
jmitc91516 0:9140ec6aa604 4174
jmitc91516 0:9140ec6aa604 4175 ScrollPos = TextBox_Scroll_GetPosRec(TextBoxIndex);
jmitc91516 0:9140ec6aa604 4176
jmitc91516 0:9140ec6aa604 4177 if (ScrollPos == NULL)
jmitc91516 0:9140ec6aa604 4178 return (GuiLib_TEXTBOX_SCROLL_ILLEGAL_NDX);
jmitc91516 0:9140ec6aa604 4179
jmitc91516 0:9140ec6aa604 4180 P = TextBox_Scroll_CalcEndPos(TextBoxItem, PerLine);
jmitc91516 0:9140ec6aa604 4181 if (*ScrollPos == 0)
jmitc91516 0:9140ec6aa604 4182 return (GuiLib_TEXTBOX_SCROLL_AT_HOME);
jmitc91516 0:9140ec6aa604 4183 else if (*ScrollPos == P)
jmitc91516 0:9140ec6aa604 4184 return (GuiLib_TEXTBOX_SCROLL_AT_END);
jmitc91516 0:9140ec6aa604 4185 else if (*ScrollPos < 0)
jmitc91516 0:9140ec6aa604 4186 return (GuiLib_TEXTBOX_SCROLL_ABOVE_HOME);
jmitc91516 0:9140ec6aa604 4187 else if (*ScrollPos > P)
jmitc91516 0:9140ec6aa604 4188 return (GuiLib_TEXTBOX_SCROLL_BELOW_END);
jmitc91516 0:9140ec6aa604 4189 else
jmitc91516 0:9140ec6aa604 4190 return (GuiLib_TEXTBOX_SCROLL_INSIDE_BLOCK);
jmitc91516 0:9140ec6aa604 4191
jmitc91516 0:9140ec6aa604 4192 #else
jmitc91516 0:9140ec6aa604 4193 gl.Dummy1_8U = TextBoxIndex; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 4194 gl.Dummy2_8U = PerLine; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 4195 return (GuiLib_TEXTBOX_SCROLL_ILLEGAL_NDX);
jmitc91516 0:9140ec6aa604 4196 #endif
jmitc91516 0:9140ec6aa604 4197 }
jmitc91516 0:9140ec6aa604 4198
jmitc91516 0:9140ec6aa604 4199 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4200 GuiConst_INT8U GuiLib_TextBox_Scroll_Get_Pos(
jmitc91516 0:9140ec6aa604 4201 GuiConst_INT8U TextBoxIndex)
jmitc91516 0:9140ec6aa604 4202 {
jmitc91516 0:9140ec6aa604 4203 return (TextBox_Scroll_Get_Pos(TextBoxIndex, 1));
jmitc91516 0:9140ec6aa604 4204 }
jmitc91516 0:9140ec6aa604 4205
jmitc91516 0:9140ec6aa604 4206 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4207 GuiConst_INT8U GuiLib_TextBox_Scroll_Get_Pos_Pixel(
jmitc91516 0:9140ec6aa604 4208 GuiConst_INT8U TextBoxIndex)
jmitc91516 0:9140ec6aa604 4209 {
jmitc91516 0:9140ec6aa604 4210 return (TextBox_Scroll_Get_Pos(TextBoxIndex, 0));
jmitc91516 0:9140ec6aa604 4211 }
jmitc91516 0:9140ec6aa604 4212
jmitc91516 0:9140ec6aa604 4213 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4214 GuiConst_INT8U GuiLib_TextBox_Scroll_FitsInside(
jmitc91516 0:9140ec6aa604 4215 GuiConst_INT8U TextBoxIndex)
jmitc91516 0:9140ec6aa604 4216 {
jmitc91516 0:9140ec6aa604 4217 #ifdef GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 4218 GuiLib_ItemRec PrefixLocate *TextBoxItem;
jmitc91516 0:9140ec6aa604 4219 GuiConst_INT16S TextBox;
jmitc91516 0:9140ec6aa604 4220 GuiConst_INT16S PrefixLocate *ScrollPos;
jmitc91516 0:9140ec6aa604 4221
jmitc91516 0:9140ec6aa604 4222 TextBox = AutoRedraw_GetTextBox(TextBoxIndex, -1);
jmitc91516 0:9140ec6aa604 4223
jmitc91516 0:9140ec6aa604 4224 if (TextBox == -1)
jmitc91516 0:9140ec6aa604 4225 return (0);
jmitc91516 0:9140ec6aa604 4226
jmitc91516 0:9140ec6aa604 4227 TextBoxItem = AutoRedraw_GetItem(TextBox);
jmitc91516 0:9140ec6aa604 4228
jmitc91516 0:9140ec6aa604 4229 if (TextBoxItem == NULL)
jmitc91516 0:9140ec6aa604 4230 return (0);
jmitc91516 0:9140ec6aa604 4231
jmitc91516 0:9140ec6aa604 4232 return (TextBox_Scroll_CalcEndPos(TextBoxItem, 0) < 0);
jmitc91516 0:9140ec6aa604 4233 #else
jmitc91516 0:9140ec6aa604 4234 gl.Dummy1_8U = TextBoxIndex; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 4235 return (0);
jmitc91516 0:9140ec6aa604 4236 #endif
jmitc91516 0:9140ec6aa604 4237 }
jmitc91516 0:9140ec6aa604 4238 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4239 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4240 GuiConst_INTCOLOR GuiLib_SetButtonDisabledColor(GuiConst_INTCOLOR PixelColor)
jmitc91516 0:9140ec6aa604 4241 {
jmitc91516 0:9140ec6aa604 4242 #ifdef GuiConst_ITEM_BUTTON_INUSE
jmitc91516 0:9140ec6aa604 4243 sgl.ButtonColorOverride = GuiLib_TRUE;
jmitc91516 0:9140ec6aa604 4244 sgl.DisabledButtonColor = PixelColor;
jmitc91516 0:9140ec6aa604 4245 #endif
jmitc91516 0:9140ec6aa604 4246
jmitc91516 0:9140ec6aa604 4247 return PixelColor;
jmitc91516 0:9140ec6aa604 4248 }
jmitc91516 0:9140ec6aa604 4249 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4250