Loads bitmaps into QSPI memory for GC500_2_5inch to use.

Dependencies:   DMBasicGUI DMSupport

Committer:
jmitc91516
Date:
Mon Jul 31 15:44:39 2017 +0000
Revision:
0:a5c253316af6
Background and scroll arrow bitmaps added to QSPI memory.

Who changed what in which revision?

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