Single Photo displayed on LPC4088

Dependencies:   DMBasicGUI DMSupport

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

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmitc91516 0:9140ec6aa604 1 /* ************************************************************************ */
jmitc91516 0:9140ec6aa604 2 /* */
jmitc91516 0:9140ec6aa604 3 /* (C)2004-2015 IBIS Solutions ApS */
jmitc91516 0:9140ec6aa604 4 /* sales@easyGUI.com */
jmitc91516 0:9140ec6aa604 5 /* www.easyGUI.com */
jmitc91516 0:9140ec6aa604 6 /* */
jmitc91516 0:9140ec6aa604 7 /* v6.0.9.005 */
jmitc91516 0:9140ec6aa604 8 /* */
jmitc91516 0:9140ec6aa604 9 /* ************************************************************************ */
jmitc91516 0:9140ec6aa604 10
jmitc91516 0:9140ec6aa604 11
jmitc91516 0:9140ec6aa604 12
jmitc91516 0:9140ec6aa604 13 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 14
jmitc91516 0:9140ec6aa604 15 #include "GuiConst.h"
jmitc91516 0:9140ec6aa604 16 #include "GuiLib.h"
jmitc91516 0:9140ec6aa604 17 #include "GuiLibStruct.h"
jmitc91516 0:9140ec6aa604 18 #ifdef GuiConst_VNC_REMOTE_SUPPORT_ON
jmitc91516 0:9140ec6aa604 19 #include "GuiVnc.h"
jmitc91516 0:9140ec6aa604 20 #endif
jmitc91516 0:9140ec6aa604 21 #include <string.h>
jmitc91516 0:9140ec6aa604 22 #include <stdlib.h>
jmitc91516 0:9140ec6aa604 23
jmitc91516 0:9140ec6aa604 24 #ifndef GuiConst_PC_V6_0_9
jmitc91516 0:9140ec6aa604 25 If your compiler sees this text you are using a wrong version of the easyGUI
jmitc91516 0:9140ec6aa604 26 library. Version numbers of the easyGUI PC application and c library must match.
jmitc91516 0:9140ec6aa604 27 Only exception is GuiDisplay.c/h (your display driver), which can be kept from
jmitc91516 0:9140ec6aa604 28 version to version.
jmitc91516 0:9140ec6aa604 29 #endif
jmitc91516 0:9140ec6aa604 30
jmitc91516 0:9140ec6aa604 31 #define WANT_DOUBLE_BUFFERING // Also in GuiGraph16.h, GuiDisplay.c - *** all three must match ***
jmitc91516 0:9140ec6aa604 32
jmitc91516 0:9140ec6aa604 33
jmitc91516 0:9140ec6aa604 34 #define GuiLib_CHR_PSLEFT_OFS 0
jmitc91516 0:9140ec6aa604 35 #define GuiLib_CHR_PSRIGHT_OFS 5
jmitc91516 0:9140ec6aa604 36 #define GuiLib_CHR_XLEFT_OFS 10
jmitc91516 0:9140ec6aa604 37 #define GuiLib_CHR_XWIDTH_OFS 11
jmitc91516 0:9140ec6aa604 38 #define GuiLib_CHR_YTOP_OFS 12
jmitc91516 0:9140ec6aa604 39 #define GuiLib_CHR_YHEIGHT_OFS 13
jmitc91516 0:9140ec6aa604 40 #define GuiLib_CHR_LINECTRL_OFS 14
jmitc91516 0:9140ec6aa604 41 #define GuiLib_CHR_PS_TOP_OFS 0
jmitc91516 0:9140ec6aa604 42 #define GuiLib_CHR_PS_MID_OFS 1
jmitc91516 0:9140ec6aa604 43 #define GuiLib_CHR_PS_MIDBASE_OFS 2
jmitc91516 0:9140ec6aa604 44 #define GuiLib_CHR_PS_BASE_OFS 3
jmitc91516 0:9140ec6aa604 45 #define GuiLib_CHR_PS_BOTTOM_OFS 4
jmitc91516 0:9140ec6aa604 46
jmitc91516 0:9140ec6aa604 47
jmitc91516 0:9140ec6aa604 48
jmitc91516 0:9140ec6aa604 49 #ifdef GuiConst_ARAB_CHARS_INUSE
jmitc91516 0:9140ec6aa604 50 #define GuiLib_ARAB_LIGATURES_CNT 4
jmitc91516 0:9140ec6aa604 51 const GuiConst_INT16U GuiLib_ARAB_LIGATURES[GuiLib_ARAB_LIGATURES_CNT][3] =
jmitc91516 0:9140ec6aa604 52 {{0x0644, 0x0622, 0xFEF5},
jmitc91516 0:9140ec6aa604 53 {0x0644, 0x0623, 0xFEF7},
jmitc91516 0:9140ec6aa604 54 {0x0644, 0x0625, 0xFEF9},
jmitc91516 0:9140ec6aa604 55 {0x0644, 0x0627, 0xFEFB}};
jmitc91516 0:9140ec6aa604 56
jmitc91516 0:9140ec6aa604 57 #define GuiLib_ARAB_CHAR_PRI_MIN 0x0622
jmitc91516 0:9140ec6aa604 58 #define GuiLib_ARAB_CHAR_PRI_MAX 0x06D6
jmitc91516 0:9140ec6aa604 59 #define GuiLib_ARAB_CHAR_SEC_MIN 0xFB50
jmitc91516 0:9140ec6aa604 60 #define GuiLib_ARAB_CHAR_SEC_MAX 0xFEF4
jmitc91516 0:9140ec6aa604 61 #define GuiLib_ARAB_CHAR_TYPE_ISO 0
jmitc91516 0:9140ec6aa604 62 #define GuiLib_ARAB_CHAR_TYPE_FIN 1
jmitc91516 0:9140ec6aa604 63 #define GuiLib_ARAB_CHAR_TYPE_INI 2
jmitc91516 0:9140ec6aa604 64 #define GuiLib_ARAB_CHAR_TYPE_MED 3
jmitc91516 0:9140ec6aa604 65 #define GuiLib_ARAB_CHAR_ISOFIN 0x02
jmitc91516 0:9140ec6aa604 66 #define GuiLib_ARAB_CHAR_ISOFININIMED 0x04
jmitc91516 0:9140ec6aa604 67 #define GuiLib_ARAB_CHAR_DIACRITIC 0x0A
jmitc91516 0:9140ec6aa604 68 #define GuiLib_ARAB_CHAR_CONVERT_CNT 83
jmitc91516 0:9140ec6aa604 69
jmitc91516 0:9140ec6aa604 70 const GuiConst_INT16U GuiLib_ARAB_CHAR_CONVERT[GuiLib_ARAB_CHAR_CONVERT_CNT][3] =
jmitc91516 0:9140ec6aa604 71 {{0x0622, 0xFE81, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 72 {0x0623, 0xFE83, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 73 {0x0624, 0xFE85, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 74 {0x0625, 0xFE87, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 75 {0x0626, 0xFE89, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 76 {0x0627, 0xFE8D, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 77 {0x0628, 0xFE8F, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 78 {0x0629, 0xFE93, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 79 {0x062A, 0xFE95, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 80 {0x062B, 0xFE99, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 81 {0x062C, 0xFE9D, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 82 {0x062D, 0xFEA1, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 83 {0x062E, 0xFEA5, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 84 {0x062F, 0xFEA9, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 85 {0x0630, 0xFEAB, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 86 {0x0631, 0xFEAD, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 87 {0x0632, 0xFEAF, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 88 {0x0633, 0xFEB1, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 89 {0x0634, 0xFEB5, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 90 {0x0635, 0xFEB9, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 91 {0x0636, 0xFEBD, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 92 {0x0637, 0xFEC1, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 93 {0x0638, 0xFEC5, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 94 {0x0639, 0xFEC9, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 95 {0x063A, 0xFECD, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 96 {0x0641, 0xFED1, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 97 {0x0642, 0xFED5, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 98 {0x0643, 0xFED9, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 99 {0x0644, 0xFEDD, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 100 {0x0645, 0xFEE1, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 101 {0x0646, 0xFEE5, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 102 {0x0647, 0xFEE9, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 103 {0x0648, 0xFEED, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 104 {0x0649, 0xFEEF, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 105 {0x064A, 0xFEF1, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 106 {0x064E, 0xFE76, GuiLib_ARAB_CHAR_DIACRITIC},
jmitc91516 0:9140ec6aa604 107 {0x064F, 0xFE78, GuiLib_ARAB_CHAR_DIACRITIC},
jmitc91516 0:9140ec6aa604 108 {0x0650, 0xFE7A, GuiLib_ARAB_CHAR_DIACRITIC},
jmitc91516 0:9140ec6aa604 109 {0x0651, 0xFE7C, GuiLib_ARAB_CHAR_DIACRITIC},
jmitc91516 0:9140ec6aa604 110 {0x0652, 0xFE7E, GuiLib_ARAB_CHAR_DIACRITIC},
jmitc91516 0:9140ec6aa604 111 {0x0671, 0xFB50, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 112 {0x0679, 0xFB66, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 113 {0x067A, 0xFB5E, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 114 {0x067B, 0xFB52, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 115 {0x067E, 0xFB56, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 116 {0x067F, 0xFB62, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 117 {0x0680, 0xFB5A, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 118 {0x0683, 0xFB76, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 119 {0x0684, 0xFB72, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 120 {0x0686, 0xFB7A, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 121 {0x0687, 0xFB7E, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 122 {0x0688, 0xFB88, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 123 {0x068C, 0xFB84, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 124 {0x068D, 0xFB82, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 125 {0x068E, 0xFB86, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 126 {0x0691, 0xFB8C, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 127 {0x0698, 0xFB8A, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 128 {0x06A4, 0xFB6A, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 129 {0x06A6, 0xFB6E, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 130 {0x06A9, 0xFB8E, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 131 {0x06AD, 0xFBD3, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 132 {0x06AF, 0xFB92, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 133 {0x06B1, 0xFB9A, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 134 {0x06B3, 0xFB96, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 135 {0x06BA, 0xFB9E, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 136 {0x06BB, 0xFBA0, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 137 {0x06BE, 0xFBAA, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 138 {0x06C0, 0xFBA4, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 139 {0x06C1, 0xFBA6, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 140 {0x06C5, 0xFBE0, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 141 {0x06C6, 0xFBD9, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 142 {0x06C7, 0xFBD7, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 143 {0x06C8, 0xFBDB, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 144 {0x06C9, 0xFBE2, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 145 {0x06CB, 0xFBDE, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 146 {0x06CC, 0xFBFC, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 147 {0x06D0, 0xFBE4, GuiLib_ARAB_CHAR_ISOFININIMED},
jmitc91516 0:9140ec6aa604 148 {0x06D2, 0xFBAE, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 149 {0x06D3, 0xFBB0, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 150 { 0, 0xFEF5, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 151 { 0, 0xFEF7, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 152 { 0, 0xFEF9, GuiLib_ARAB_CHAR_ISOFIN},
jmitc91516 0:9140ec6aa604 153 { 0, 0xFEFB, GuiLib_ARAB_CHAR_ISOFIN}};
jmitc91516 0:9140ec6aa604 154 #endif
jmitc91516 0:9140ec6aa604 155
jmitc91516 0:9140ec6aa604 156 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 157 //----------------------X-----------------------
jmitc91516 0:9140ec6aa604 158
jmitc91516 0:9140ec6aa604 159 GuiLib_DisplayLineRec GuiLib_DisplayRepaint[GuiConst_BYTE_LINES];
jmitc91516 0:9140ec6aa604 160 #ifdef GuiConst_VNC_REMOTE_SUPPORT_ON
jmitc91516 0:9140ec6aa604 161 GuiLib_DisplayLineRec GuiLib_VncRepaint[GuiConst_BYTE_LINES];
jmitc91516 0:9140ec6aa604 162 #endif // GuiConst_VNC_REMOTE_SUPPORT_ON
jmitc91516 0:9140ec6aa604 163
jmitc91516 0:9140ec6aa604 164 #ifdef GuiConst_REMOTE_DATA
jmitc91516 0:9140ec6aa604 165 void (*GuiLib_RemoteDataReadBlock) (
jmitc91516 0:9140ec6aa604 166 GuiConst_INT32U SourceOffset,
jmitc91516 0:9140ec6aa604 167 GuiConst_INT32U SourceSize,
jmitc91516 0:9140ec6aa604 168 GuiConst_INT8U * TargetAddr);
jmitc91516 0:9140ec6aa604 169 #endif // GuiConst_REMOTE_DATA
jmitc91516 0:9140ec6aa604 170 #ifdef GuiConst_REMOTE_TEXT_DATA
jmitc91516 0:9140ec6aa604 171 void (*GuiLib_RemoteTextReadBlock) (
jmitc91516 0:9140ec6aa604 172 GuiConst_INT32U SourceOffset,
jmitc91516 0:9140ec6aa604 173 GuiConst_INT32U SourceSize,
jmitc91516 0:9140ec6aa604 174 void * TargetAddr);
jmitc91516 0:9140ec6aa604 175 #endif // GuiConst_REMOTE_TEXT_DATA
jmitc91516 0:9140ec6aa604 176
jmitc91516 0:9140ec6aa604 177 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 178 GuiConst_INT16S GuiLib_ActiveCursorFieldNo;
jmitc91516 0:9140ec6aa604 179 #endif
jmitc91516 0:9140ec6aa604 180 #ifdef GuiConst_ALLOW_UPSIDEDOWN_AT_RUNTIME
jmitc91516 0:9140ec6aa604 181 GuiConst_INT8U GuiLib_DisplayUpsideDown;
jmitc91516 0:9140ec6aa604 182 #endif
jmitc91516 0:9140ec6aa604 183
jmitc91516 0:9140ec6aa604 184 GuiConst_INT16S GuiLib_CurStructureNdx;
jmitc91516 0:9140ec6aa604 185 GuiConst_INT16S GuiLib_LanguageIndex;
jmitc91516 0:9140ec6aa604 186
jmitc91516 0:9140ec6aa604 187 PrefixLocate GuiLib_GLOBAL gl;
jmitc91516 0:9140ec6aa604 188 static PrefixLocate GuiLib_STATIC sgl;
jmitc91516 0:9140ec6aa604 189
jmitc91516 0:9140ec6aa604 190
jmitc91516 0:9140ec6aa604 191 //==============================================================================
jmitc91516 0:9140ec6aa604 192 #ifdef GuiConst_ALLOW_UPSIDEDOWN_AT_RUNTIME
jmitc91516 0:9140ec6aa604 193 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 194 { \
jmitc91516 0:9140ec6aa604 195 if (GuiLib_DisplayUpsideDown) \
jmitc91516 0:9140ec6aa604 196 { \
jmitc91516 0:9140ec6aa604 197 X = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoX - X; \
jmitc91516 0:9140ec6aa604 198 Y = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoY - Y; \
jmitc91516 0:9140ec6aa604 199 } \
jmitc91516 0:9140ec6aa604 200 else \
jmitc91516 0:9140ec6aa604 201 { \
jmitc91516 0:9140ec6aa604 202 X = sgl.CoordOrigoX + X; \
jmitc91516 0:9140ec6aa604 203 Y = sgl.CoordOrigoY + Y; \
jmitc91516 0:9140ec6aa604 204 } \
jmitc91516 0:9140ec6aa604 205 }
jmitc91516 0:9140ec6aa604 206
jmitc91516 0:9140ec6aa604 207 #define GuiLib_MIRROR_BITS(B) \
jmitc91516 0:9140ec6aa604 208 { \
jmitc91516 0:9140ec6aa604 209 B = (((B & 0x80) >> 7) | ((B & 0x40) >> 5) | \
jmitc91516 0:9140ec6aa604 210 ((B & 0x20) >> 3) | ((B & 0x10) >> 1) | \
jmitc91516 0:9140ec6aa604 211 ((B & 0x08) << 1) | ((B & 0x04) << 3) | \
jmitc91516 0:9140ec6aa604 212 ((B & 0x02) << 5) | ((B & 0x01) << 7)); \
jmitc91516 0:9140ec6aa604 213 }
jmitc91516 0:9140ec6aa604 214 #else
jmitc91516 0:9140ec6aa604 215 #ifdef GuiConst_ROTATED_OFF
jmitc91516 0:9140ec6aa604 216 #ifdef GuiConst_MIRRORED_HORIZONTALLY
jmitc91516 0:9140ec6aa604 217 #ifdef GuiConst_MIRRORED_VERTICALLY
jmitc91516 0:9140ec6aa604 218 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 219 { \
jmitc91516 0:9140ec6aa604 220 X = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoX - X; \
jmitc91516 0:9140ec6aa604 221 Y = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoY - Y; \
jmitc91516 0:9140ec6aa604 222 }
jmitc91516 0:9140ec6aa604 223 #else
jmitc91516 0:9140ec6aa604 224 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 225 { \
jmitc91516 0:9140ec6aa604 226 X = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoX - X; \
jmitc91516 0:9140ec6aa604 227 Y = sgl.CoordOrigoY + Y; \
jmitc91516 0:9140ec6aa604 228 }
jmitc91516 0:9140ec6aa604 229 #endif
jmitc91516 0:9140ec6aa604 230 #else
jmitc91516 0:9140ec6aa604 231 #ifdef GuiConst_MIRRORED_VERTICALLY
jmitc91516 0:9140ec6aa604 232 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 233 { \
jmitc91516 0:9140ec6aa604 234 X = sgl.CoordOrigoX + X; \
jmitc91516 0:9140ec6aa604 235 Y = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoY - Y; \
jmitc91516 0:9140ec6aa604 236 }
jmitc91516 0:9140ec6aa604 237 #else
jmitc91516 0:9140ec6aa604 238 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 239 { \
jmitc91516 0:9140ec6aa604 240 X = sgl.CoordOrigoX + X; \
jmitc91516 0:9140ec6aa604 241 Y = sgl.CoordOrigoY + Y; \
jmitc91516 0:9140ec6aa604 242 }
jmitc91516 0:9140ec6aa604 243 #endif
jmitc91516 0:9140ec6aa604 244 #endif
jmitc91516 0:9140ec6aa604 245 #endif
jmitc91516 0:9140ec6aa604 246 #ifdef GuiConst_ROTATED_90DEGREE_RIGHT
jmitc91516 0:9140ec6aa604 247 #ifdef GuiConst_MIRRORED_HORIZONTALLY
jmitc91516 0:9140ec6aa604 248 #ifdef GuiConst_MIRRORED_VERTICALLY
jmitc91516 0:9140ec6aa604 249 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 250 { \
jmitc91516 0:9140ec6aa604 251 X = sgl.CoordOrigoX + X; \
jmitc91516 0:9140ec6aa604 252 Y = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoY - Y; \
jmitc91516 0:9140ec6aa604 253 SwapCoord(&X, &Y); \
jmitc91516 0:9140ec6aa604 254 }
jmitc91516 0:9140ec6aa604 255 #else
jmitc91516 0:9140ec6aa604 256 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 257 { \
jmitc91516 0:9140ec6aa604 258 X = sgl.CoordOrigoX + X; \
jmitc91516 0:9140ec6aa604 259 Y = sgl.CoordOrigoY + Y; \
jmitc91516 0:9140ec6aa604 260 SwapCoord(&X, &Y); \
jmitc91516 0:9140ec6aa604 261 }
jmitc91516 0:9140ec6aa604 262 #endif
jmitc91516 0:9140ec6aa604 263 #else
jmitc91516 0:9140ec6aa604 264 #ifdef GuiConst_MIRRORED_VERTICALLY
jmitc91516 0:9140ec6aa604 265 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 266 { \
jmitc91516 0:9140ec6aa604 267 X = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoX - X; \
jmitc91516 0:9140ec6aa604 268 Y = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoY - Y; \
jmitc91516 0:9140ec6aa604 269 SwapCoord(&X, &Y); \
jmitc91516 0:9140ec6aa604 270 }
jmitc91516 0:9140ec6aa604 271 #else
jmitc91516 0:9140ec6aa604 272 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 273 { \
jmitc91516 0:9140ec6aa604 274 X = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoX - X; \
jmitc91516 0:9140ec6aa604 275 Y = sgl.CoordOrigoY + Y; \
jmitc91516 0:9140ec6aa604 276 SwapCoord(&X, &Y); \
jmitc91516 0:9140ec6aa604 277 }
jmitc91516 0:9140ec6aa604 278 #endif
jmitc91516 0:9140ec6aa604 279 #endif
jmitc91516 0:9140ec6aa604 280 #endif
jmitc91516 0:9140ec6aa604 281 #ifdef GuiConst_ROTATED_UPSIDEDOWN
jmitc91516 0:9140ec6aa604 282 #ifdef GuiConst_MIRRORED_HORIZONTALLY
jmitc91516 0:9140ec6aa604 283 #ifdef GuiConst_MIRRORED_VERTICALLY
jmitc91516 0:9140ec6aa604 284 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 285 { \
jmitc91516 0:9140ec6aa604 286 X = sgl.CoordOrigoX + X; \
jmitc91516 0:9140ec6aa604 287 Y = sgl.CoordOrigoY + Y; \
jmitc91516 0:9140ec6aa604 288 }
jmitc91516 0:9140ec6aa604 289 #else
jmitc91516 0:9140ec6aa604 290 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 291 { \
jmitc91516 0:9140ec6aa604 292 X = sgl.CoordOrigoX + X; \
jmitc91516 0:9140ec6aa604 293 Y = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoY - Y; \
jmitc91516 0:9140ec6aa604 294 }
jmitc91516 0:9140ec6aa604 295 #endif
jmitc91516 0:9140ec6aa604 296 #else
jmitc91516 0:9140ec6aa604 297 #ifdef GuiConst_MIRRORED_VERTICALLY
jmitc91516 0:9140ec6aa604 298 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 299 { \
jmitc91516 0:9140ec6aa604 300 X = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoX - X; \
jmitc91516 0:9140ec6aa604 301 Y = sgl.CoordOrigoY + Y; \
jmitc91516 0:9140ec6aa604 302 }
jmitc91516 0:9140ec6aa604 303 #else
jmitc91516 0:9140ec6aa604 304 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 305 { \
jmitc91516 0:9140ec6aa604 306 X = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoX - X; \
jmitc91516 0:9140ec6aa604 307 Y = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoY - Y; \
jmitc91516 0:9140ec6aa604 308 }
jmitc91516 0:9140ec6aa604 309 #endif
jmitc91516 0:9140ec6aa604 310 #endif
jmitc91516 0:9140ec6aa604 311 #endif
jmitc91516 0:9140ec6aa604 312 #ifdef GuiConst_ROTATED_90DEGREE_LEFT
jmitc91516 0:9140ec6aa604 313 #ifdef GuiConst_MIRRORED_HORIZONTALLY
jmitc91516 0:9140ec6aa604 314 #ifdef GuiConst_MIRRORED_VERTICALLY
jmitc91516 0:9140ec6aa604 315 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 316 { \
jmitc91516 0:9140ec6aa604 317 X = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoX - X; \
jmitc91516 0:9140ec6aa604 318 Y = sgl.CoordOrigoY + Y; \
jmitc91516 0:9140ec6aa604 319 SwapCoord(&X, &Y); \
jmitc91516 0:9140ec6aa604 320 }
jmitc91516 0:9140ec6aa604 321 #else
jmitc91516 0:9140ec6aa604 322 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 323 { \
jmitc91516 0:9140ec6aa604 324 X = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoX - X; \
jmitc91516 0:9140ec6aa604 325 Y = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoY - Y; \
jmitc91516 0:9140ec6aa604 326 SwapCoord(&X, &Y); \
jmitc91516 0:9140ec6aa604 327 }
jmitc91516 0:9140ec6aa604 328 #endif
jmitc91516 0:9140ec6aa604 329 #else
jmitc91516 0:9140ec6aa604 330 #ifdef GuiConst_MIRRORED_VERTICALLY
jmitc91516 0:9140ec6aa604 331 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 332 { \
jmitc91516 0:9140ec6aa604 333 X = sgl.CoordOrigoX + X; \
jmitc91516 0:9140ec6aa604 334 Y = sgl.CoordOrigoY + Y; \
jmitc91516 0:9140ec6aa604 335 SwapCoord(&X, &Y); \
jmitc91516 0:9140ec6aa604 336 }
jmitc91516 0:9140ec6aa604 337 #else
jmitc91516 0:9140ec6aa604 338 #define GuiLib_COORD_ADJUST(X, Y) \
jmitc91516 0:9140ec6aa604 339 { \
jmitc91516 0:9140ec6aa604 340 X = sgl.CoordOrigoX + X; \
jmitc91516 0:9140ec6aa604 341 Y = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoY - Y; \
jmitc91516 0:9140ec6aa604 342 SwapCoord(&X, &Y); \
jmitc91516 0:9140ec6aa604 343 }
jmitc91516 0:9140ec6aa604 344 #endif
jmitc91516 0:9140ec6aa604 345 #endif
jmitc91516 0:9140ec6aa604 346 #endif
jmitc91516 0:9140ec6aa604 347 #endif
jmitc91516 0:9140ec6aa604 348
jmitc91516 0:9140ec6aa604 349 #define GuiLib_FONT_MID_Y(BaseLine, TopLine) ((BaseLine - TopLine + 1) / 2)
jmitc91516 0:9140ec6aa604 350
jmitc91516 0:9140ec6aa604 351 #ifdef GuiConst_COLOR_DEPTH_1
jmitc91516 0:9140ec6aa604 352 #define GuiLib_COLOR_ADJUST(C) C &= 0x01;
jmitc91516 0:9140ec6aa604 353 #endif
jmitc91516 0:9140ec6aa604 354 #ifdef GuiConst_COLOR_DEPTH_2
jmitc91516 0:9140ec6aa604 355 #define GuiLib_COLOR_ADJUST(C) C &= 0x03;
jmitc91516 0:9140ec6aa604 356 #endif
jmitc91516 0:9140ec6aa604 357 #ifdef GuiConst_COLOR_DEPTH_4
jmitc91516 0:9140ec6aa604 358 #define GuiLib_COLOR_ADJUST(C) C &= 0x0F;
jmitc91516 0:9140ec6aa604 359 #endif
jmitc91516 0:9140ec6aa604 360 #ifdef GuiConst_COLOR_DEPTH_5
jmitc91516 0:9140ec6aa604 361 #define GuiLib_COLOR_ADJUST(C) C = (C & 0x1F) << 3;
jmitc91516 0:9140ec6aa604 362 #endif
jmitc91516 0:9140ec6aa604 363 #ifndef GuiLib_COLOR_ADJUST
jmitc91516 0:9140ec6aa604 364 #define GuiLib_COLOR_ADJUST_TRANSP(C)
jmitc91516 0:9140ec6aa604 365 #define GuiLib_COLOR_ADJUST(C)
jmitc91516 0:9140ec6aa604 366 #else
jmitc91516 0:9140ec6aa604 367 #define GuiLib_COLOR_ADJUST_TRANSP(C) if (C != -1) GuiLib_COLOR_ADJUST(C)
jmitc91516 0:9140ec6aa604 368 #endif
jmitc91516 0:9140ec6aa604 369 //----------------------X-----------------------
jmitc91516 0:9140ec6aa604 370 #define GuiLib_GET_MIN(A, B) ((A) > (B) ? (B) : (A))
jmitc91516 0:9140ec6aa604 371 #define GuiLib_GET_MAX(A, B) ((A) > (B) ? (A) : (B))
jmitc91516 0:9140ec6aa604 372 #define GuiLib_GET_MINMAX(X, A, B) ((X) > (A) ? (GuiLib_GET_MIN(X,B)) : (A))
jmitc91516 0:9140ec6aa604 373 #define GuiLib_LIMIT_MIN(X, A) if (X < A) X = A
jmitc91516 0:9140ec6aa604 374 #define GuiLib_LIMIT_MAX(X, B) if (X > B) X = B
jmitc91516 0:9140ec6aa604 375 #define GuiLib_LIMIT_MINMAX(X, A, B) \
jmitc91516 0:9140ec6aa604 376 { \
jmitc91516 0:9140ec6aa604 377 if (X < A) \
jmitc91516 0:9140ec6aa604 378 X = A; \
jmitc91516 0:9140ec6aa604 379 else if ((B < A) && (X > A)) \
jmitc91516 0:9140ec6aa604 380 X = A; \
jmitc91516 0:9140ec6aa604 381 else if ((B >= A) && (X > B)) \
jmitc91516 0:9140ec6aa604 382 X = B; \
jmitc91516 0:9140ec6aa604 383 }
jmitc91516 0:9140ec6aa604 384
jmitc91516 0:9140ec6aa604 385 //==============================================================================
jmitc91516 0:9140ec6aa604 386
jmitc91516 0:9140ec6aa604 387 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 388 static GuiConst_INT16S CopyBytes(GuiConst_INT8U *dst, GuiConst_INT8U *src, GuiConst_INT32S size)
jmitc91516 0:9140ec6aa604 389 {
jmitc91516 0:9140ec6aa604 390 GuiConst_INT32S i;
jmitc91516 0:9140ec6aa604 391 GuiConst_INT8U *d, *s;
jmitc91516 0:9140ec6aa604 392
jmitc91516 0:9140ec6aa604 393 if (size < 0)
jmitc91516 0:9140ec6aa604 394 return -1;
jmitc91516 0:9140ec6aa604 395
jmitc91516 0:9140ec6aa604 396 if (size > GuiConst_DISPLAY_BYTES)
jmitc91516 0:9140ec6aa604 397 return -1;
jmitc91516 0:9140ec6aa604 398
jmitc91516 0:9140ec6aa604 399 d = (GuiConst_INT8U *)dst;
jmitc91516 0:9140ec6aa604 400 s = (GuiConst_INT8U *)src;
jmitc91516 0:9140ec6aa604 401
jmitc91516 0:9140ec6aa604 402 for (i=0;i<size;i++)
jmitc91516 0:9140ec6aa604 403 *d++ = *s++;
jmitc91516 0:9140ec6aa604 404
jmitc91516 0:9140ec6aa604 405 return 0;
jmitc91516 0:9140ec6aa604 406 }
jmitc91516 0:9140ec6aa604 407 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 408 static void SwapCoord(
jmitc91516 0:9140ec6aa604 409 GuiConst_INT16S * X1,
jmitc91516 0:9140ec6aa604 410 GuiConst_INT16S * X2)
jmitc91516 0:9140ec6aa604 411 {
jmitc91516 0:9140ec6aa604 412 GuiConst_INT16S Tmp;
jmitc91516 0:9140ec6aa604 413
jmitc91516 0:9140ec6aa604 414 Tmp = *X1;
jmitc91516 0:9140ec6aa604 415 *X1 = *X2;
jmitc91516 0:9140ec6aa604 416 *X2 = Tmp;
jmitc91516 0:9140ec6aa604 417 }
jmitc91516 0:9140ec6aa604 418
jmitc91516 0:9140ec6aa604 419 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 420 static GuiConst_INT8U OrderCoord(
jmitc91516 0:9140ec6aa604 421 GuiConst_INT16S * X1,
jmitc91516 0:9140ec6aa604 422 GuiConst_INT16S * X2)
jmitc91516 0:9140ec6aa604 423 {
jmitc91516 0:9140ec6aa604 424 if (*X1 > *X2)
jmitc91516 0:9140ec6aa604 425 {
jmitc91516 0:9140ec6aa604 426 SwapCoord (X1, X2);
jmitc91516 0:9140ec6aa604 427 return (1);
jmitc91516 0:9140ec6aa604 428 }
jmitc91516 0:9140ec6aa604 429 else
jmitc91516 0:9140ec6aa604 430 return (0);
jmitc91516 0:9140ec6aa604 431 }
jmitc91516 0:9140ec6aa604 432
jmitc91516 0:9140ec6aa604 433 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 434 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 435 static GuiConst_INT8U CheckRect(
jmitc91516 0:9140ec6aa604 436 GuiConst_INT16S * X1,
jmitc91516 0:9140ec6aa604 437 GuiConst_INT16S * Y1,
jmitc91516 0:9140ec6aa604 438 GuiConst_INT16S * X2,
jmitc91516 0:9140ec6aa604 439 GuiConst_INT16S * Y2)
jmitc91516 0:9140ec6aa604 440 {
jmitc91516 0:9140ec6aa604 441 if (sgl.ClippingTotal ||
jmitc91516 0:9140ec6aa604 442 (*X1 > sgl.ClippingX2) || (*X2 < sgl.ClippingX1) ||
jmitc91516 0:9140ec6aa604 443 (*Y1 > sgl.ClippingY2) || (*Y2 < sgl.ClippingY1))
jmitc91516 0:9140ec6aa604 444 return (0);
jmitc91516 0:9140ec6aa604 445 else
jmitc91516 0:9140ec6aa604 446 {
jmitc91516 0:9140ec6aa604 447 if (*X1 < sgl.ClippingX1)
jmitc91516 0:9140ec6aa604 448 *X1 = sgl.ClippingX1;
jmitc91516 0:9140ec6aa604 449 if (*X2 > sgl.ClippingX2)
jmitc91516 0:9140ec6aa604 450 *X2 = sgl.ClippingX2;
jmitc91516 0:9140ec6aa604 451 if (*Y1 < sgl.ClippingY1)
jmitc91516 0:9140ec6aa604 452 *Y1 = sgl.ClippingY1;
jmitc91516 0:9140ec6aa604 453 if (*Y2 > sgl.ClippingY2)
jmitc91516 0:9140ec6aa604 454 *Y2 = sgl.ClippingY2;
jmitc91516 0:9140ec6aa604 455 return (1);
jmitc91516 0:9140ec6aa604 456 }
jmitc91516 0:9140ec6aa604 457 }
jmitc91516 0:9140ec6aa604 458 #endif
jmitc91516 0:9140ec6aa604 459
jmitc91516 0:9140ec6aa604 460 //==============================================================================
jmitc91516 0:9140ec6aa604 461
jmitc91516 0:9140ec6aa604 462 #ifdef GuiConst_COLOR_DEPTH_1
jmitc91516 0:9140ec6aa604 463 #ifdef GuiConst_BYTE_HORIZONTAL
jmitc91516 0:9140ec6aa604 464 #include "GuiGraph1H.c"
jmitc91516 0:9140ec6aa604 465 #else
jmitc91516 0:9140ec6aa604 466 #include "GuiGraph1V.c"
jmitc91516 0:9140ec6aa604 467 #endif
jmitc91516 0:9140ec6aa604 468 #endif
jmitc91516 0:9140ec6aa604 469 #ifdef GuiConst_COLOR_DEPTH_2
jmitc91516 0:9140ec6aa604 470 #ifdef GuiConst_BYTE_HORIZONTAL
jmitc91516 0:9140ec6aa604 471 #ifdef GuiConst_COLOR_PLANES_2
jmitc91516 0:9140ec6aa604 472 #include "GuiGraph2H2P.c"
jmitc91516 0:9140ec6aa604 473 #else
jmitc91516 0:9140ec6aa604 474 #include "GuiGraph2H.c"
jmitc91516 0:9140ec6aa604 475 #endif
jmitc91516 0:9140ec6aa604 476 #else
jmitc91516 0:9140ec6aa604 477 #ifdef GuiConst_COLOR_PLANES_2
jmitc91516 0:9140ec6aa604 478 #include "GuiGraph2V2P.c"
jmitc91516 0:9140ec6aa604 479 #else
jmitc91516 0:9140ec6aa604 480 #include "GuiGraph2V.c"
jmitc91516 0:9140ec6aa604 481 #endif
jmitc91516 0:9140ec6aa604 482 #endif
jmitc91516 0:9140ec6aa604 483 #endif
jmitc91516 0:9140ec6aa604 484 #ifdef GuiConst_COLOR_DEPTH_4
jmitc91516 0:9140ec6aa604 485 #ifdef GuiConst_BYTE_HORIZONTAL
jmitc91516 0:9140ec6aa604 486 #include "GuiGraph4H.c"
jmitc91516 0:9140ec6aa604 487 #else
jmitc91516 0:9140ec6aa604 488 #include "GuiGraph4V.c"
jmitc91516 0:9140ec6aa604 489 #endif
jmitc91516 0:9140ec6aa604 490 #endif
jmitc91516 0:9140ec6aa604 491 #ifdef GuiConst_COLOR_DEPTH_5
jmitc91516 0:9140ec6aa604 492 #include "GuiGraph5.c"
jmitc91516 0:9140ec6aa604 493 #endif
jmitc91516 0:9140ec6aa604 494 #ifdef GuiConst_COLOR_DEPTH_8
jmitc91516 0:9140ec6aa604 495 #include "GuiGraph8.c"
jmitc91516 0:9140ec6aa604 496 #endif
jmitc91516 0:9140ec6aa604 497 #ifdef GuiConst_COLOR_DEPTH_12
jmitc91516 0:9140ec6aa604 498 #include "GuiGraph16.c"
jmitc91516 0:9140ec6aa604 499 #endif
jmitc91516 0:9140ec6aa604 500 #ifdef GuiConst_COLOR_DEPTH_15
jmitc91516 0:9140ec6aa604 501 #include "GuiGraph16.c"
jmitc91516 0:9140ec6aa604 502 #endif
jmitc91516 0:9140ec6aa604 503 #ifdef GuiConst_COLOR_DEPTH_16
jmitc91516 0:9140ec6aa604 504 #include "GuiGraph16.h"
jmitc91516 0:9140ec6aa604 505 #endif
jmitc91516 0:9140ec6aa604 506 #ifdef GuiConst_COLOR_DEPTH_18
jmitc91516 0:9140ec6aa604 507 #include "GuiGraph24.c"
jmitc91516 0:9140ec6aa604 508 #endif
jmitc91516 0:9140ec6aa604 509 #ifdef GuiConst_COLOR_DEPTH_24
jmitc91516 0:9140ec6aa604 510 #include "GuiGraph24.h"
jmitc91516 0:9140ec6aa604 511 #endif
jmitc91516 0:9140ec6aa604 512 #ifdef GuiConst_COLOR_DEPTH_32
jmitc91516 0:9140ec6aa604 513 #include "GuiGraph32.c"
jmitc91516 0:9140ec6aa604 514 #endif
jmitc91516 0:9140ec6aa604 515
jmitc91516 0:9140ec6aa604 516 #include "GuiGraph.h"
jmitc91516 0:9140ec6aa604 517 #ifdef GuiConst_ADV_GRAPHICS_ON
jmitc91516 0:9140ec6aa604 518 //#include "GuiGraphAdv.c"
jmitc91516 0:9140ec6aa604 519 #endif
jmitc91516 0:9140ec6aa604 520
jmitc91516 0:9140ec6aa604 521 //==============================================================================
jmitc91516 0:9140ec6aa604 522 static void DrawStructure(GuiLib_StructPtr Structure, GuiConst_INT8U ColorInvert) PrefixReentrant;
jmitc91516 0:9140ec6aa604 523
jmitc91516 0:9140ec6aa604 524 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 525 static void DrawCursorItem(GuiConst_INT8U CursorVisible);
jmitc91516 0:9140ec6aa604 526 #endif
jmitc91516 0:9140ec6aa604 527
jmitc91516 0:9140ec6aa604 528 #ifdef GuiConst_ITEM_SCROLLBOX_INUSE
jmitc91516 0:9140ec6aa604 529 static void ScrollBox_DrawScrollLine(GuiConst_INT8U ScrollBoxIndex, GuiConst_INT16S LineNdx);
jmitc91516 0:9140ec6aa604 530 #endif
jmitc91516 0:9140ec6aa604 531
jmitc91516 0:9140ec6aa604 532 #ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE
jmitc91516 0:9140ec6aa604 533 static GuiConst_INT16S IndexOfGraphicsLayer(GuiConst_INT16S GraphicsLayerIndex);
jmitc91516 0:9140ec6aa604 534 static GuiConst_INT8U GraphicsLayer_Push(GuiConst_INT8U GraphicsLayerIndex);
jmitc91516 0:9140ec6aa604 535 static GuiConst_INT8U GraphicsLayer_Pop(GuiConst_INT16S GraphicsLayerIndex);
jmitc91516 0:9140ec6aa604 536 static void GraphicsLayer_Copy(
jmitc91516 0:9140ec6aa604 537 GuiConst_INT8U *DestAddress,
jmitc91516 0:9140ec6aa604 538 GuiConst_INT16U DestLineSize,
jmitc91516 0:9140ec6aa604 539 GuiConst_INT16S DestX,
jmitc91516 0:9140ec6aa604 540 GuiConst_INT16S DestY,
jmitc91516 0:9140ec6aa604 541 GuiConst_INT8U *SourceAddress,
jmitc91516 0:9140ec6aa604 542 GuiConst_INT16U SourceLineSize,
jmitc91516 0:9140ec6aa604 543 GuiConst_INT16S SourceX,
jmitc91516 0:9140ec6aa604 544 GuiConst_INT16S SourceY,
jmitc91516 0:9140ec6aa604 545 GuiConst_INT16U Width,
jmitc91516 0:9140ec6aa604 546 GuiConst_INT16U Height);
jmitc91516 0:9140ec6aa604 547 #endif
jmitc91516 0:9140ec6aa604 548
jmitc91516 0:9140ec6aa604 549 //==============================================================================
jmitc91516 0:9140ec6aa604 550
jmitc91516 0:9140ec6aa604 551 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 552 static void ResetLayerBufPtr(void)
jmitc91516 0:9140ec6aa604 553 {
jmitc91516 0:9140ec6aa604 554 #ifdef GuiConst_DISPLAY_BUFFER_EASYGUI
jmitc91516 0:9140ec6aa604 555 #ifdef GuiLib_COLOR_UNIT_16
jmitc91516 0:9140ec6aa604 556 sgl.CurLayerBufPtr = &(GuiLib_DisplayBuf.Bytes[0][0]);
jmitc91516 0:9140ec6aa604 557 #else
jmitc91516 0:9140ec6aa604 558 #ifdef GuiConst_COLOR_DEPTH_2
jmitc91516 0:9140ec6aa604 559 #ifdef GuiConst_BYTE_HORIZONTAL
jmitc91516 0:9140ec6aa604 560 #ifdef GuiConst_COLOR_PLANES_2
jmitc91516 0:9140ec6aa604 561 sgl.CurLayerBufPtr = &(GuiLib_DisplayBuf[0][0][0]);
jmitc91516 0:9140ec6aa604 562 #else
jmitc91516 0:9140ec6aa604 563 sgl.CurLayerBufPtr = &(GuiLib_DisplayBuf[0][0]);
jmitc91516 0:9140ec6aa604 564 #endif
jmitc91516 0:9140ec6aa604 565 #else // GuiConst_BYTE_HORIZONTAL
jmitc91516 0:9140ec6aa604 566 #ifdef GuiConst_COLOR_PLANES_2
jmitc91516 0:9140ec6aa604 567 sgl.CurLayerBufPtr = &(GuiLib_DisplayBuf[0][0][0]);
jmitc91516 0:9140ec6aa604 568 #else
jmitc91516 0:9140ec6aa604 569 sgl.CurLayerBufPtr = &(GuiLib_DisplayBuf[0][0]);
jmitc91516 0:9140ec6aa604 570 #endif
jmitc91516 0:9140ec6aa604 571 #endif // GuiConst_BYTE_HORIZONTAL
jmitc91516 0:9140ec6aa604 572 #else // GuiConst_COLOR_DEPTH_2
jmitc91516 0:9140ec6aa604 573 sgl.CurLayerBufPtr = &(GuiLib_DisplayBuf[0][0]);
jmitc91516 0:9140ec6aa604 574 #endif // GuiConst_COLOR_DEPTH_2
jmitc91516 0:9140ec6aa604 575 #endif // GuiLib_COLOR_UNIT_16
jmitc91516 0:9140ec6aa604 576 #else // GuiConst_DISPLAY_BUFFER_EASYGUI
jmitc91516 0:9140ec6aa604 577 sgl.CurLayerBufPtr = 0;
jmitc91516 0:9140ec6aa604 578 #endif // GuiConst_DISPLAY_BUFFER_EASYGUI
jmitc91516 0:9140ec6aa604 579
jmitc91516 0:9140ec6aa604 580 sgl.CurLayerLineSize = GuiConst_BYTES_PR_LINE;
jmitc91516 0:9140ec6aa604 581 sgl.CurLayerWidth = GuiConst_DISPLAY_WIDTH_HW;
jmitc91516 0:9140ec6aa604 582 sgl.CurLayerHeight = GuiConst_DISPLAY_HEIGHT_HW;
jmitc91516 0:9140ec6aa604 583 sgl.CurLayerBytes = GuiConst_DISPLAY_BYTES;
jmitc91516 0:9140ec6aa604 584 sgl.BaseLayerDrawing = 1;
jmitc91516 0:9140ec6aa604 585 }
jmitc91516 0:9140ec6aa604 586
jmitc91516 0:9140ec6aa604 587 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 588 void GuiLib_Init(void)
jmitc91516 0:9140ec6aa604 589 {
jmitc91516 0:9140ec6aa604 590 sgl.RefreshClock = 0;
jmitc91516 0:9140ec6aa604 591
jmitc91516 0:9140ec6aa604 592 ResetLayerBufPtr();
jmitc91516 0:9140ec6aa604 593
jmitc91516 0:9140ec6aa604 594 AutoRedraw_Init();
jmitc91516 0:9140ec6aa604 595
jmitc91516 0:9140ec6aa604 596 #ifdef GuiConst_DISPLAY_ACTIVE_AREA
jmitc91516 0:9140ec6aa604 597 #ifdef GuiConst_DISPLAY_ACTIVE_AREA_COO_REL
jmitc91516 0:9140ec6aa604 598 sgl.DisplayOrigoX = GuiConst_DISPLAY_ACTIVE_AREA_X1;
jmitc91516 0:9140ec6aa604 599 sgl.DisplayOrigoY = GuiConst_DISPLAY_ACTIVE_AREA_Y1;
jmitc91516 0:9140ec6aa604 600 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 601 sgl.DisplayActiveAreaX1 = 0;
jmitc91516 0:9140ec6aa604 602 sgl.DisplayActiveAreaY1 = 0;
jmitc91516 0:9140ec6aa604 603 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 604 #ifdef GuiConst_DISPLAY_ACTIVE_AREA_CLIPPING
jmitc91516 0:9140ec6aa604 605 sgl.DisplayActiveAreaX2 =
jmitc91516 0:9140ec6aa604 606 GuiConst_DISPLAY_ACTIVE_AREA_X2 - GuiConst_DISPLAY_ACTIVE_AREA_X1;
jmitc91516 0:9140ec6aa604 607 sgl.DisplayActiveAreaY2 =
jmitc91516 0:9140ec6aa604 608 GuiConst_DISPLAY_ACTIVE_AREA_Y2 - GuiConst_DISPLAY_ACTIVE_AREA_Y1;
jmitc91516 0:9140ec6aa604 609 #else // GuiConst_DISPLAY_ACTIVE_AREA_CLIPPING
jmitc91516 0:9140ec6aa604 610 sgl.DisplayActiveAreaX2 =
jmitc91516 0:9140ec6aa604 611 GuiConst_DISPLAY_WIDTH - GuiConst_DISPLAY_ACTIVE_AREA_X1 - 1;
jmitc91516 0:9140ec6aa604 612 sgl.DisplayActiveAreaY2 =
jmitc91516 0:9140ec6aa604 613 GuiConst_DISPLAY_HEIGHT - GuiConst_DISPLAY_ACTIVE_AREA_Y1 - 1;
jmitc91516 0:9140ec6aa604 614 #endif // GuiConst_DISPLAY_ACTIVE_AREA_CLIPPING
jmitc91516 0:9140ec6aa604 615 #else // GuiConst_DISPLAY_ACTIVE_AREA_COO_REL
jmitc91516 0:9140ec6aa604 616 sgl.DisplayOrigoX = 0;
jmitc91516 0:9140ec6aa604 617 sgl.DisplayOrigoY = 0;
jmitc91516 0:9140ec6aa604 618 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 619 #ifdef GuiConst_DISPLAY_ACTIVE_AREA_CLIPPING
jmitc91516 0:9140ec6aa604 620 sgl.DisplayActiveAreaX1 = GuiConst_DISPLAY_ACTIVE_AREA_X1;
jmitc91516 0:9140ec6aa604 621 sgl.DisplayActiveAreaY1 = GuiConst_DISPLAY_ACTIVE_AREA_Y1;
jmitc91516 0:9140ec6aa604 622 sgl.DisplayActiveAreaX2 = GuiConst_DISPLAY_ACTIVE_AREA_X2;
jmitc91516 0:9140ec6aa604 623 sgl.DisplayActiveAreaY2 = GuiConst_DISPLAY_ACTIVE_AREA_Y2;
jmitc91516 0:9140ec6aa604 624 #else // GuiConst_DISPLAY_ACTIVE_AREA_CLIPPING
jmitc91516 0:9140ec6aa604 625 sgl.DisplayActiveAreaX1 = 0;
jmitc91516 0:9140ec6aa604 626 sgl.DisplayActiveAreaY1 = 0;
jmitc91516 0:9140ec6aa604 627 sgl.DisplayActiveAreaX2 = GuiConst_DISPLAY_WIDTH - 1;
jmitc91516 0:9140ec6aa604 628 sgl.DisplayActiveAreaY2 = GuiConst_DISPLAY_HEIGHT - 1;
jmitc91516 0:9140ec6aa604 629 #endif // GuiConst_DISPLAY_ACTIVE_AREA_CLIPPING
jmitc91516 0:9140ec6aa604 630 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 631 #endif // GuiConst_DISPLAY_ACTIVE_AREA_COO_REL
jmitc91516 0:9140ec6aa604 632 #else // GuiConst_DISPLAY_ACTIVE_AREA
jmitc91516 0:9140ec6aa604 633 sgl.DisplayOrigoX = 0;
jmitc91516 0:9140ec6aa604 634 sgl.DisplayOrigoY = 0;
jmitc91516 0:9140ec6aa604 635 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 636 sgl.DisplayActiveAreaX1 = 0;
jmitc91516 0:9140ec6aa604 637 sgl.DisplayActiveAreaY1 = 0;
jmitc91516 0:9140ec6aa604 638 sgl.DisplayActiveAreaX2 = GuiConst_DISPLAY_WIDTH - 1;
jmitc91516 0:9140ec6aa604 639 sgl.DisplayActiveAreaY2 = GuiConst_DISPLAY_HEIGHT - 1;
jmitc91516 0:9140ec6aa604 640 #endif // GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 641 #endif // GuiConst_DISPLAY_ACTIVE_AREA
jmitc91516 0:9140ec6aa604 642
jmitc91516 0:9140ec6aa604 643 #ifdef GuiConst_ADV_GRAPHICS_ON
jmitc91516 0:9140ec6aa604 644 // GuiLib_AG_Init();
jmitc91516 0:9140ec6aa604 645 #endif
jmitc91516 0:9140ec6aa604 646
jmitc91516 0:9140ec6aa604 647 GuiDisplay_Init();
jmitc91516 0:9140ec6aa604 648
jmitc91516 0:9140ec6aa604 649 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 650 GuiLib_ResetClipping();
jmitc91516 0:9140ec6aa604 651 #endif
jmitc91516 0:9140ec6aa604 652 GuiLib_ResetDisplayRepaint();
jmitc91516 0:9140ec6aa604 653 GuiLib_Clear();
jmitc91516 0:9140ec6aa604 654
jmitc91516 0:9140ec6aa604 655 sgl.DisplayWriting = 1;
jmitc91516 0:9140ec6aa604 656 sgl.InitialDrawing = 0;
jmitc91516 0:9140ec6aa604 657 sgl.TopLevelStructure = 0;
jmitc91516 0:9140ec6aa604 658 sgl.SwapColors = 0;
jmitc91516 0:9140ec6aa604 659 GuiLib_SetLanguage(0);
jmitc91516 0:9140ec6aa604 660 #ifdef GuiConst_BLINK_SUPPORT_ON
jmitc91516 0:9140ec6aa604 661 sgl.BlinkBoxRate = 0;
jmitc91516 0:9140ec6aa604 662 #endif
jmitc91516 0:9140ec6aa604 663 sgl.InvertBoxOn = 0;
jmitc91516 0:9140ec6aa604 664 sgl.DrawingLevel = 0;
jmitc91516 0:9140ec6aa604 665 GuiLib_CurStructureNdx = -1;
jmitc91516 0:9140ec6aa604 666 #ifdef GuiConst_ITEM_TOUCHAREA_INUSE
jmitc91516 0:9140ec6aa604 667 GuiLib_TouchAdjustReset();
jmitc91516 0:9140ec6aa604 668 #endif
jmitc91516 0:9140ec6aa604 669 #ifdef GuiConst_ITEM_BUTTON_INUSE
jmitc91516 0:9140ec6aa604 670 sgl.ButtonColorOverride = GuiLib_FALSE;
jmitc91516 0:9140ec6aa604 671 sgl.DisabledButtonColor = 0;
jmitc91516 0:9140ec6aa604 672 #endif
jmitc91516 0:9140ec6aa604 673 #ifdef GuiConst_REMOTE_DATA
jmitc91516 0:9140ec6aa604 674 GuiLib_RemoteDataReadBlock = 0;
jmitc91516 0:9140ec6aa604 675 #ifdef GuiConst_REMOTE_TEXT_DATA
jmitc91516 0:9140ec6aa604 676 GuiLib_RemoteTextReadBlock = 0;
jmitc91516 0:9140ec6aa604 677 sgl.CurRemoteText = -1;
jmitc91516 0:9140ec6aa604 678 sgl.RemoteTextTableOfs = -1;
jmitc91516 0:9140ec6aa604 679 #endif
jmitc91516 0:9140ec6aa604 680 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 681 sgl.CurRemoteFont = -1;
jmitc91516 0:9140ec6aa604 682 #endif
jmitc91516 0:9140ec6aa604 683 #ifdef GuiConst_REMOTE_BITMAP_DATA
jmitc91516 0:9140ec6aa604 684 sgl.CurRemoteBitmap = -1;
jmitc91516 0:9140ec6aa604 685 #endif
jmitc91516 0:9140ec6aa604 686 #endif
jmitc91516 0:9140ec6aa604 687
jmitc91516 0:9140ec6aa604 688 #ifdef GuiConst_VNC_REMOTE_SUPPORT_ON
jmitc91516 0:9140ec6aa604 689 GuiVnc_Init();
jmitc91516 0:9140ec6aa604 690 #endif
jmitc91516 0:9140ec6aa604 691 }
jmitc91516 0:9140ec6aa604 692
jmitc91516 0:9140ec6aa604 693 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 694 void GuiLib_Clear(void)
jmitc91516 0:9140ec6aa604 695 {
jmitc91516 0:9140ec6aa604 696 GuiConst_INT16S I;
jmitc91516 0:9140ec6aa604 697 #ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE
jmitc91516 0:9140ec6aa604 698 GuiConst_INT16S N;
jmitc91516 0:9140ec6aa604 699 #endif
jmitc91516 0:9140ec6aa604 700
jmitc91516 0:9140ec6aa604 701 GuiLib_ClearDisplay();
jmitc91516 0:9140ec6aa604 702
jmitc91516 0:9140ec6aa604 703 GuiLib_CurStructureNdx = -1;
jmitc91516 0:9140ec6aa604 704
jmitc91516 0:9140ec6aa604 705 AutoRedraw_Destroy();
jmitc91516 0:9140ec6aa604 706
jmitc91516 0:9140ec6aa604 707 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 708 sgl.CursorInUse = 0;
jmitc91516 0:9140ec6aa604 709 GuiLib_ActiveCursorFieldNo = -1;
jmitc91516 0:9140ec6aa604 710 #endif
jmitc91516 0:9140ec6aa604 711 #ifdef GuiConst_BLINK_SUPPORT_ON
jmitc91516 0:9140ec6aa604 712 #ifndef GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 713 for (I = 0; I < GuiConst_BLINK_FIELDS_MAX; I++)
jmitc91516 0:9140ec6aa604 714 {
jmitc91516 0:9140ec6aa604 715 sgl.BlinkTextItems[I].InUse = 0;
jmitc91516 0:9140ec6aa604 716 sgl.BlinkTextItems[I].Active = 0;
jmitc91516 0:9140ec6aa604 717 }
jmitc91516 0:9140ec6aa604 718 #endif
jmitc91516 0:9140ec6aa604 719 #endif
jmitc91516 0:9140ec6aa604 720 #ifdef GuiConst_ITEM_TOUCHAREA_INUSE
jmitc91516 0:9140ec6aa604 721 sgl.TouchAreaCnt = 0;
jmitc91516 0:9140ec6aa604 722 #endif
jmitc91516 0:9140ec6aa604 723
jmitc91516 0:9140ec6aa604 724 #ifdef GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 725 for (I = 0; I < GuiConst_TEXTBOX_FIELDS_MAX; I++)
jmitc91516 0:9140ec6aa604 726 sgl.TextBoxScrollPositions[I].index = -1;
jmitc91516 0:9140ec6aa604 727 #endif
jmitc91516 0:9140ec6aa604 728
jmitc91516 0:9140ec6aa604 729 sgl.LayerOrigoX = 0;
jmitc91516 0:9140ec6aa604 730 sgl.LayerOrigoY = 0;
jmitc91516 0:9140ec6aa604 731
jmitc91516 0:9140ec6aa604 732 sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX;
jmitc91516 0:9140ec6aa604 733 sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY;
jmitc91516 0:9140ec6aa604 734
jmitc91516 0:9140ec6aa604 735 #ifdef GuiConst_ITEM_SCROLLBOX_INUSE
jmitc91516 0:9140ec6aa604 736 sgl.NextScrollLineReading = 0;
jmitc91516 0:9140ec6aa604 737 sgl.GlobalScrollBoxIndex = 0;
jmitc91516 0:9140ec6aa604 738 for (I = 0; I < GuiConst_SCROLLITEM_BOXES_MAX; I++)
jmitc91516 0:9140ec6aa604 739 {
jmitc91516 0:9140ec6aa604 740 sgl.ScrollBoxesAry[I].X1 = 0;
jmitc91516 0:9140ec6aa604 741 sgl.ScrollBoxesAry[I].Y1 = 0;
jmitc91516 0:9140ec6aa604 742 sgl.ScrollBoxesAry[I].InUse = GuiLib_SCROLL_STRUCTURE_UNDEF;
jmitc91516 0:9140ec6aa604 743 sgl.ScrollBoxesAry[I].ScrollTopLine = 0;
jmitc91516 0:9140ec6aa604 744 sgl.ScrollBoxesAry[I].LastScrollTopLine = 0;
jmitc91516 0:9140ec6aa604 745 sgl.ScrollBoxesAry[I].LastMarkerLine = 0;
jmitc91516 0:9140ec6aa604 746 sgl.ScrollBoxesAry[I].ScrollActiveLine = 0;
jmitc91516 0:9140ec6aa604 747 sgl.ScrollBoxesAry[I].NumberOfLines = 0;
jmitc91516 0:9140ec6aa604 748 }
jmitc91516 0:9140ec6aa604 749 #endif
jmitc91516 0:9140ec6aa604 750
jmitc91516 0:9140ec6aa604 751 #ifdef GuiConst_ITEM_GRAPH_INUSE
jmitc91516 0:9140ec6aa604 752 sgl.GlobalGraphIndex = 0;
jmitc91516 0:9140ec6aa604 753 for (I = 0; I < GuiConst_GRAPH_MAX; I++)
jmitc91516 0:9140ec6aa604 754 {
jmitc91516 0:9140ec6aa604 755 sgl.GraphAry[I].InUse = GuiLib_GRAPH_STRUCTURE_UNDEF;
jmitc91516 0:9140ec6aa604 756 sgl.GraphAry[I].GraphAxesCnt[GuiLib_GRAPHAXIS_X] = 0;
jmitc91516 0:9140ec6aa604 757 sgl.GraphAry[I].GraphAxesCnt[GuiLib_GRAPHAXIS_Y] = 0;
jmitc91516 0:9140ec6aa604 758 sgl.GraphAry[I].GraphDataSetCnt = 0;
jmitc91516 0:9140ec6aa604 759 }
jmitc91516 0:9140ec6aa604 760 #endif
jmitc91516 0:9140ec6aa604 761
jmitc91516 0:9140ec6aa604 762 #ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE
jmitc91516 0:9140ec6aa604 763 GraphicsLayer_Pop(GuiLib_GRAPHICS_LAYER_BASE);
jmitc91516 0:9140ec6aa604 764 for (I = 0; I < GuiConst_GRAPHICS_LAYER_MAX; I++)
jmitc91516 0:9140ec6aa604 765 sgl.GraphicsLayerLifo[I] = -1;
jmitc91516 0:9140ec6aa604 766 sgl.GraphicsLayerLifoCnt = 0;
jmitc91516 0:9140ec6aa604 767 sgl.GlobalGraphicsLayerIndex = 0;
jmitc91516 0:9140ec6aa604 768 for (I = 0; I < GuiConst_GRAPHICS_LAYER_MAX; I++)
jmitc91516 0:9140ec6aa604 769 {
jmitc91516 0:9140ec6aa604 770 sgl.GraphicsLayerList[I].InUse = GuiLib_GRAPHICS_LAYER_UNDEF;
jmitc91516 0:9140ec6aa604 771 sgl.GraphicsLayerList[I].SizeMode = 0;
jmitc91516 0:9140ec6aa604 772 sgl.GraphicsLayerList[I].InitMode = 0;
jmitc91516 0:9140ec6aa604 773 }
jmitc91516 0:9140ec6aa604 774 sgl.GlobalGraphicsFilterIndex = 0;
jmitc91516 0:9140ec6aa604 775 for (I = 0; I < GuiConst_GRAPHICS_FILTER_MAX; I++)
jmitc91516 0:9140ec6aa604 776 {
jmitc91516 0:9140ec6aa604 777 sgl.GraphicsFilterList[I].InUse = GuiLib_GRAPHICS_FILTER_UNDEF;
jmitc91516 0:9140ec6aa604 778 sgl.GraphicsFilterList[I].GraphicsFilterFunc = 0;
jmitc91516 0:9140ec6aa604 779 sgl.GraphicsFilterList[I].SourceLayerIndexNo = GuiLib_GRAPHICS_LAYER_BASE;
jmitc91516 0:9140ec6aa604 780 sgl.GraphicsFilterList[I].DestLayerIndexNo = GuiLib_GRAPHICS_LAYER_BASE;
jmitc91516 0:9140ec6aa604 781 sgl.GraphicsFilterList[I].ContAtLayerIndexNo = GuiLib_GRAPHICS_LAYER_BASE;
jmitc91516 0:9140ec6aa604 782 for (N = 0; N <= 9; N++)
jmitc91516 0:9140ec6aa604 783 {
jmitc91516 0:9140ec6aa604 784 sgl.GraphicsFilterList[I].ParVarType[N] = 0;
jmitc91516 0:9140ec6aa604 785 sgl.GraphicsFilterList[I].ParVarPtr[N] = 0;
jmitc91516 0:9140ec6aa604 786 sgl.GraphicsFilterList[I].ParValueNum[N] = 0;
jmitc91516 0:9140ec6aa604 787 }
jmitc91516 0:9140ec6aa604 788 }
jmitc91516 0:9140ec6aa604 789 #endif
jmitc91516 0:9140ec6aa604 790
jmitc91516 0:9140ec6aa604 791 #ifdef GuiConst_BITMAP_SUPPORT_ON
jmitc91516 0:9140ec6aa604 792 sgl.GlobalBackgrBitmapIndex = 0;
jmitc91516 0:9140ec6aa604 793 for (I = 0; I < GuiConst_MAX_BACKGROUND_BITMAPS; I++)
jmitc91516 0:9140ec6aa604 794 {
jmitc91516 0:9140ec6aa604 795 sgl.BackgrBitmapAry[I].InUse = 0;
jmitc91516 0:9140ec6aa604 796 sgl.BackgrBitmapAry[I].Index = 0;
jmitc91516 0:9140ec6aa604 797 sgl.BackgrBitmapAry[I].X = 0;
jmitc91516 0:9140ec6aa604 798 sgl.BackgrBitmapAry[I].Y = 0;
jmitc91516 0:9140ec6aa604 799 }
jmitc91516 0:9140ec6aa604 800 #endif
jmitc91516 0:9140ec6aa604 801
jmitc91516 0:9140ec6aa604 802 GuiLib_ClearPositionCallbacks();
jmitc91516 0:9140ec6aa604 803 }
jmitc91516 0:9140ec6aa604 804
jmitc91516 0:9140ec6aa604 805 // Groupstart CHARS
jmitc91516 0:9140ec6aa604 806
jmitc91516 0:9140ec6aa604 807 #ifdef GuiConst_CHARMODE_UNICODE
jmitc91516 0:9140ec6aa604 808 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 809 GuiConst_INT16U GuiLib_UnicodeStrLen(
jmitc91516 0:9140ec6aa604 810 GuiConst_TEXT PrefixLocate *S)
jmitc91516 0:9140ec6aa604 811 {
jmitc91516 0:9140ec6aa604 812 GuiConst_INT16U StrLen;
jmitc91516 0:9140ec6aa604 813
jmitc91516 0:9140ec6aa604 814 StrLen = 0;
jmitc91516 0:9140ec6aa604 815 while (*S != 0)
jmitc91516 0:9140ec6aa604 816 {
jmitc91516 0:9140ec6aa604 817 StrLen++;
jmitc91516 0:9140ec6aa604 818 S++;
jmitc91516 0:9140ec6aa604 819 }
jmitc91516 0:9140ec6aa604 820 return (StrLen);
jmitc91516 0:9140ec6aa604 821 }
jmitc91516 0:9140ec6aa604 822
jmitc91516 0:9140ec6aa604 823 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 824 void GuiLib_StrAnsiToUnicode(
jmitc91516 0:9140ec6aa604 825 GuiConst_TEXT PrefixLocate *S2,
jmitc91516 0:9140ec6aa604 826 GuiConst_CHAR PrefixLocate *S1)
jmitc91516 0:9140ec6aa604 827 {
jmitc91516 0:9140ec6aa604 828 do
jmitc91516 0:9140ec6aa604 829 {
jmitc91516 0:9140ec6aa604 830 *S2 = (GuiConst_TEXT)(*S1);
jmitc91516 0:9140ec6aa604 831 *S2 &= 0x00ff;
jmitc91516 0:9140ec6aa604 832 if (*S1 == 0)
jmitc91516 0:9140ec6aa604 833 return;
jmitc91516 0:9140ec6aa604 834 S1++;
jmitc91516 0:9140ec6aa604 835 S2++;
jmitc91516 0:9140ec6aa604 836 }
jmitc91516 0:9140ec6aa604 837 while (1);
jmitc91516 0:9140ec6aa604 838 }
jmitc91516 0:9140ec6aa604 839
jmitc91516 0:9140ec6aa604 840 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 841 GuiConst_INT16S GuiLib_UnicodeStrCmp(
jmitc91516 0:9140ec6aa604 842 GuiConst_TEXT PrefixLocate *S1,
jmitc91516 0:9140ec6aa604 843 GuiConst_TEXT PrefixLocate *S2)
jmitc91516 0:9140ec6aa604 844 {
jmitc91516 0:9140ec6aa604 845 do
jmitc91516 0:9140ec6aa604 846 {
jmitc91516 0:9140ec6aa604 847 if ((*S1 == 0) && (*S2 == 0))
jmitc91516 0:9140ec6aa604 848 return (0);
jmitc91516 0:9140ec6aa604 849
jmitc91516 0:9140ec6aa604 850 else if (*S1 == 0)
jmitc91516 0:9140ec6aa604 851 return (-1);
jmitc91516 0:9140ec6aa604 852 else if (*S2 == 0)
jmitc91516 0:9140ec6aa604 853 return (1);
jmitc91516 0:9140ec6aa604 854 else if (*S1 < *S2)
jmitc91516 0:9140ec6aa604 855 return (-1);
jmitc91516 0:9140ec6aa604 856 else if (*S1 > *S2)
jmitc91516 0:9140ec6aa604 857 return (1);
jmitc91516 0:9140ec6aa604 858 S1++;
jmitc91516 0:9140ec6aa604 859 S2++;
jmitc91516 0:9140ec6aa604 860 }
jmitc91516 0:9140ec6aa604 861 while (1);
jmitc91516 0:9140ec6aa604 862 }
jmitc91516 0:9140ec6aa604 863
jmitc91516 0:9140ec6aa604 864 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 865 GuiConst_INT16S GuiLib_UnicodeStrNCmp(
jmitc91516 0:9140ec6aa604 866 GuiConst_TEXT PrefixLocate *S1,
jmitc91516 0:9140ec6aa604 867 GuiConst_TEXT PrefixLocate *S2,
jmitc91516 0:9140ec6aa604 868 GuiConst_INT16U StrLen)
jmitc91516 0:9140ec6aa604 869 {
jmitc91516 0:9140ec6aa604 870 while (StrLen > 0)
jmitc91516 0:9140ec6aa604 871 {
jmitc91516 0:9140ec6aa604 872 if ((*S1 == 0) && (*S2 == 0))
jmitc91516 0:9140ec6aa604 873 return (0);
jmitc91516 0:9140ec6aa604 874 else if (*S1 == 0)
jmitc91516 0:9140ec6aa604 875 return (-1);
jmitc91516 0:9140ec6aa604 876 else if (*S2 == 0)
jmitc91516 0:9140ec6aa604 877 return (1);
jmitc91516 0:9140ec6aa604 878 else if (*S1 < *S2)
jmitc91516 0:9140ec6aa604 879 return (-1);
jmitc91516 0:9140ec6aa604 880 else if (*S1 > *S2)
jmitc91516 0:9140ec6aa604 881 return (1);
jmitc91516 0:9140ec6aa604 882 S1++;
jmitc91516 0:9140ec6aa604 883 S2++;
jmitc91516 0:9140ec6aa604 884 StrLen--;
jmitc91516 0:9140ec6aa604 885 }
jmitc91516 0:9140ec6aa604 886 return (0);
jmitc91516 0:9140ec6aa604 887 }
jmitc91516 0:9140ec6aa604 888
jmitc91516 0:9140ec6aa604 889 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 890 void GuiLib_UnicodeStrCpy(
jmitc91516 0:9140ec6aa604 891 GuiConst_TEXT PrefixLocate *S2,
jmitc91516 0:9140ec6aa604 892 GuiConst_TEXT PrefixLocate *S1)
jmitc91516 0:9140ec6aa604 893 {
jmitc91516 0:9140ec6aa604 894 do
jmitc91516 0:9140ec6aa604 895 {
jmitc91516 0:9140ec6aa604 896 *S2 = *S1;
jmitc91516 0:9140ec6aa604 897 if (*S1 == 0)
jmitc91516 0:9140ec6aa604 898 return;
jmitc91516 0:9140ec6aa604 899 S1++;
jmitc91516 0:9140ec6aa604 900 S2++;
jmitc91516 0:9140ec6aa604 901 }
jmitc91516 0:9140ec6aa604 902 while (1);
jmitc91516 0:9140ec6aa604 903 }
jmitc91516 0:9140ec6aa604 904
jmitc91516 0:9140ec6aa604 905 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 906 void GuiLib_UnicodeStrNCpy(
jmitc91516 0:9140ec6aa604 907 GuiConst_TEXT PrefixLocate *S2,
jmitc91516 0:9140ec6aa604 908 GuiConst_TEXT PrefixLocate *S1,
jmitc91516 0:9140ec6aa604 909 GuiConst_INT16U StrLen)
jmitc91516 0:9140ec6aa604 910 {
jmitc91516 0:9140ec6aa604 911 while (StrLen > 0)
jmitc91516 0:9140ec6aa604 912 {
jmitc91516 0:9140ec6aa604 913 *S2 = *S1;
jmitc91516 0:9140ec6aa604 914 if (*S1 != 0)
jmitc91516 0:9140ec6aa604 915 S1++;
jmitc91516 0:9140ec6aa604 916 S2++;
jmitc91516 0:9140ec6aa604 917 StrLen--;
jmitc91516 0:9140ec6aa604 918 }
jmitc91516 0:9140ec6aa604 919 }
jmitc91516 0:9140ec6aa604 920 #endif // GuiConst_CHARMODE_UNICODE
jmitc91516 0:9140ec6aa604 921
jmitc91516 0:9140ec6aa604 922 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 923 static void ConvertIntToStr(
jmitc91516 0:9140ec6aa604 924 GuiConst_INT32U num,
jmitc91516 0:9140ec6aa604 925 GuiConst_CHAR PrefixLocate *string,
jmitc91516 0:9140ec6aa604 926 GuiConst_INT32U base)
jmitc91516 0:9140ec6aa604 927 {
jmitc91516 0:9140ec6aa604 928 #define BUFFER_SIZE 11
jmitc91516 0:9140ec6aa604 929
jmitc91516 0:9140ec6aa604 930 GuiConst_INT8U digits[16] =
jmitc91516 0:9140ec6aa604 931 { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70 };
jmitc91516 0:9140ec6aa604 932 GuiConst_CHAR buffer[BUFFER_SIZE];
jmitc91516 0:9140ec6aa604 933 GuiConst_INT8U bufferLen;
jmitc91516 0:9140ec6aa604 934 GuiConst_INT8U i;
jmitc91516 0:9140ec6aa604 935
jmitc91516 0:9140ec6aa604 936 bufferLen = 0;
jmitc91516 0:9140ec6aa604 937 do
jmitc91516 0:9140ec6aa604 938 {
jmitc91516 0:9140ec6aa604 939 i = num % base;
jmitc91516 0:9140ec6aa604 940 buffer[bufferLen++] = digits[i];
jmitc91516 0:9140ec6aa604 941 num /= base;
jmitc91516 0:9140ec6aa604 942 }
jmitc91516 0:9140ec6aa604 943 while ((num != 0) && (bufferLen < BUFFER_SIZE));
jmitc91516 0:9140ec6aa604 944
jmitc91516 0:9140ec6aa604 945 if (bufferLen <= GuiConst_MAX_VARNUM_TEXT_LEN)
jmitc91516 0:9140ec6aa604 946 while (bufferLen-- > 0)
jmitc91516 0:9140ec6aa604 947 *string++ = buffer[bufferLen];
jmitc91516 0:9140ec6aa604 948
jmitc91516 0:9140ec6aa604 949 *string = '\0';
jmitc91516 0:9140ec6aa604 950 }
jmitc91516 0:9140ec6aa604 951
jmitc91516 0:9140ec6aa604 952 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 953 static GuiConst_INT16S CharDist(
jmitc91516 0:9140ec6aa604 954 GuiConst_INT16U ChPos1,
jmitc91516 0:9140ec6aa604 955 GuiConst_INT16U ChPos2,
jmitc91516 0:9140ec6aa604 956 GuiConst_INT8U Ps)
jmitc91516 0:9140ec6aa604 957 {
jmitc91516 0:9140ec6aa604 958 GuiConst_INT16S Result, D;
jmitc91516 0:9140ec6aa604 959 #ifndef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 960 GuiConst_INT8U PrefixRom *Ps1;
jmitc91516 0:9140ec6aa604 961 GuiConst_INT8U PrefixRom *Ps2;
jmitc91516 0:9140ec6aa604 962 #endif
jmitc91516 0:9140ec6aa604 963 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 964 GuiConst_INT8U CharHeader1[GuiLib_CHR_LINECTRL_OFS];
jmitc91516 0:9140ec6aa604 965 GuiConst_INT8U CharHeader2[GuiLib_CHR_LINECTRL_OFS];
jmitc91516 0:9140ec6aa604 966 #endif
jmitc91516 0:9140ec6aa604 967
jmitc91516 0:9140ec6aa604 968 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 969 if (Ps == GuiLib_PS_OFF)
jmitc91516 0:9140ec6aa604 970 return (sgl.CurFont->XSize);
jmitc91516 0:9140ec6aa604 971 else if ((Ps == GuiLib_PS_ON) || (Ps == GuiLib_PS_NUM))
jmitc91516 0:9140ec6aa604 972 {
jmitc91516 0:9140ec6aa604 973 GuiLib_RemoteDataReadBlock(
jmitc91516 0:9140ec6aa604 974 (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[ChPos1]],
jmitc91516 0:9140ec6aa604 975 GuiLib_CHR_LINECTRL_OFS, CharHeader1);
jmitc91516 0:9140ec6aa604 976 GuiLib_RemoteDataReadBlock(
jmitc91516 0:9140ec6aa604 977 (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[ChPos2]],
jmitc91516 0:9140ec6aa604 978 GuiLib_CHR_LINECTRL_OFS, CharHeader2);
jmitc91516 0:9140ec6aa604 979 if ((Ps == GuiLib_PS_ON) || (sgl.TextPsMode[ChPos1] && sgl.TextPsMode[ChPos2]))
jmitc91516 0:9140ec6aa604 980 {
jmitc91516 0:9140ec6aa604 981 Result = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_TOP_OFS] -
jmitc91516 0:9140ec6aa604 982 CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_TOP_OFS];
jmitc91516 0:9140ec6aa604 983 D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_MID_OFS] -
jmitc91516 0:9140ec6aa604 984 CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_MID_OFS];
jmitc91516 0:9140ec6aa604 985 if (D > Result)
jmitc91516 0:9140ec6aa604 986 Result = D;
jmitc91516 0:9140ec6aa604 987 D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_MIDBASE_OFS] -
jmitc91516 0:9140ec6aa604 988 CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_MIDBASE_OFS];
jmitc91516 0:9140ec6aa604 989 if (D > Result)
jmitc91516 0:9140ec6aa604 990 Result = D;
jmitc91516 0:9140ec6aa604 991 D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_BASE_OFS] -
jmitc91516 0:9140ec6aa604 992 CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_BASE_OFS];
jmitc91516 0:9140ec6aa604 993 if (D > Result)
jmitc91516 0:9140ec6aa604 994 Result = D;
jmitc91516 0:9140ec6aa604 995 D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_BOTTOM_OFS] -
jmitc91516 0:9140ec6aa604 996 CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_BOTTOM_OFS];
jmitc91516 0:9140ec6aa604 997 if (D > Result)
jmitc91516 0:9140ec6aa604 998 Result = D;
jmitc91516 0:9140ec6aa604 999 return (Result + sgl.CurFont->PsSpace + 1);
jmitc91516 0:9140ec6aa604 1000 }
jmitc91516 0:9140ec6aa604 1001 else if (sgl.TextPsMode[ChPos1])
jmitc91516 0:9140ec6aa604 1002 {
jmitc91516 0:9140ec6aa604 1003 Result = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_TOP_OFS];
jmitc91516 0:9140ec6aa604 1004 D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_MID_OFS];
jmitc91516 0:9140ec6aa604 1005 if (D > Result)
jmitc91516 0:9140ec6aa604 1006 Result = D;
jmitc91516 0:9140ec6aa604 1007 D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_MIDBASE_OFS];
jmitc91516 0:9140ec6aa604 1008 if (D > Result)
jmitc91516 0:9140ec6aa604 1009 Result = D;
jmitc91516 0:9140ec6aa604 1010 D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_BASE_OFS];
jmitc91516 0:9140ec6aa604 1011 if (D > Result)
jmitc91516 0:9140ec6aa604 1012 Result = D;
jmitc91516 0:9140ec6aa604 1013 D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_BOTTOM_OFS];
jmitc91516 0:9140ec6aa604 1014 if (D > Result)
jmitc91516 0:9140ec6aa604 1015 Result = D;
jmitc91516 0:9140ec6aa604 1016 return (Result + sgl.CurFont->PsSpace + 1);
jmitc91516 0:9140ec6aa604 1017 }
jmitc91516 0:9140ec6aa604 1018 else if (sgl.TextPsMode[ChPos2])
jmitc91516 0:9140ec6aa604 1019 {
jmitc91516 0:9140ec6aa604 1020 Result = CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_TOP_OFS];
jmitc91516 0:9140ec6aa604 1021 D = CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_MID_OFS];
jmitc91516 0:9140ec6aa604 1022 if (D < Result)
jmitc91516 0:9140ec6aa604 1023 Result = D;
jmitc91516 0:9140ec6aa604 1024 D = CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_MIDBASE_OFS];
jmitc91516 0:9140ec6aa604 1025 if (D < Result)
jmitc91516 0:9140ec6aa604 1026 Result = D;
jmitc91516 0:9140ec6aa604 1027 D = CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_BASE_OFS];
jmitc91516 0:9140ec6aa604 1028 if (D < Result)
jmitc91516 0:9140ec6aa604 1029 Result = D;
jmitc91516 0:9140ec6aa604 1030 D = CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_BOTTOM_OFS];
jmitc91516 0:9140ec6aa604 1031 if (D < Result)
jmitc91516 0:9140ec6aa604 1032 Result = D;
jmitc91516 0:9140ec6aa604 1033 return (sgl.CurFont->PsNumWidth - Result + sgl.CurFont->PsSpace);
jmitc91516 0:9140ec6aa604 1034 }
jmitc91516 0:9140ec6aa604 1035 else
jmitc91516 0:9140ec6aa604 1036 return (sgl.CurFont->PsNumWidth + sgl.CurFont->PsSpace);
jmitc91516 0:9140ec6aa604 1037 }
jmitc91516 0:9140ec6aa604 1038 else
jmitc91516 0:9140ec6aa604 1039 return (0);
jmitc91516 0:9140ec6aa604 1040 #else
jmitc91516 0:9140ec6aa604 1041 if (Ps == GuiLib_PS_OFF)
jmitc91516 0:9140ec6aa604 1042 return (ReadByte(sgl.CurFont->XSize));
jmitc91516 0:9140ec6aa604 1043 else if ((Ps == GuiLib_PS_ON) || (Ps == GuiLib_PS_NUM))
jmitc91516 0:9140ec6aa604 1044 {
jmitc91516 0:9140ec6aa604 1045 if ((Ps == GuiLib_PS_ON) || (sgl.TextPsMode[ChPos1] && sgl.TextPsMode[ChPos2]))
jmitc91516 0:9140ec6aa604 1046 {
jmitc91516 0:9140ec6aa604 1047 Ps1 = sgl.TextCharPtrAry[ChPos1] + GuiLib_CHR_PSRIGHT_OFS;
jmitc91516 0:9140ec6aa604 1048 Ps2 = sgl.TextCharPtrAry[ChPos2] + GuiLib_CHR_PSLEFT_OFS;
jmitc91516 0:9140ec6aa604 1049 Result = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_TOP_OFS)) -
jmitc91516 0:9140ec6aa604 1050 (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_TOP_OFS));
jmitc91516 0:9140ec6aa604 1051 D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_MID_OFS)) -
jmitc91516 0:9140ec6aa604 1052 (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_MID_OFS));
jmitc91516 0:9140ec6aa604 1053 if (D > Result)
jmitc91516 0:9140ec6aa604 1054 Result = D;
jmitc91516 0:9140ec6aa604 1055 D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_MIDBASE_OFS)) -
jmitc91516 0:9140ec6aa604 1056 (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_MIDBASE_OFS));
jmitc91516 0:9140ec6aa604 1057 if (D > Result)
jmitc91516 0:9140ec6aa604 1058 Result = D;
jmitc91516 0:9140ec6aa604 1059 D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_BASE_OFS)) -
jmitc91516 0:9140ec6aa604 1060 (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_BASE_OFS));
jmitc91516 0:9140ec6aa604 1061 if (D > Result)
jmitc91516 0:9140ec6aa604 1062 Result = D;
jmitc91516 0:9140ec6aa604 1063 D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_BOTTOM_OFS)) -
jmitc91516 0:9140ec6aa604 1064 (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_BOTTOM_OFS));
jmitc91516 0:9140ec6aa604 1065 if (D > Result)
jmitc91516 0:9140ec6aa604 1066 Result = D;
jmitc91516 0:9140ec6aa604 1067 return (Result + ReadByte(sgl.CurFont->PsSpace) + 1);
jmitc91516 0:9140ec6aa604 1068 }
jmitc91516 0:9140ec6aa604 1069 else if (sgl.TextPsMode[ChPos1])
jmitc91516 0:9140ec6aa604 1070 {
jmitc91516 0:9140ec6aa604 1071 Ps1 = sgl.TextCharPtrAry[ChPos1] + GuiLib_CHR_PSRIGHT_OFS;
jmitc91516 0:9140ec6aa604 1072 Result = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_TOP_OFS));
jmitc91516 0:9140ec6aa604 1073 D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_MID_OFS));
jmitc91516 0:9140ec6aa604 1074 if (D > Result)
jmitc91516 0:9140ec6aa604 1075 Result = D;
jmitc91516 0:9140ec6aa604 1076 D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_MIDBASE_OFS));
jmitc91516 0:9140ec6aa604 1077 if (D > Result)
jmitc91516 0:9140ec6aa604 1078 Result = D;
jmitc91516 0:9140ec6aa604 1079 D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_BASE_OFS));
jmitc91516 0:9140ec6aa604 1080 if (D > Result)
jmitc91516 0:9140ec6aa604 1081 Result = D;
jmitc91516 0:9140ec6aa604 1082 D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_BOTTOM_OFS));
jmitc91516 0:9140ec6aa604 1083 if (D > Result)
jmitc91516 0:9140ec6aa604 1084 Result = D;
jmitc91516 0:9140ec6aa604 1085 return (Result + ReadByte(sgl.CurFont->PsSpace) + 1);
jmitc91516 0:9140ec6aa604 1086 }
jmitc91516 0:9140ec6aa604 1087 else if (sgl.TextPsMode[ChPos2])
jmitc91516 0:9140ec6aa604 1088 {
jmitc91516 0:9140ec6aa604 1089 Ps2 = sgl.TextCharPtrAry[ChPos2] + GuiLib_CHR_PSLEFT_OFS;
jmitc91516 0:9140ec6aa604 1090 Result = (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_TOP_OFS));
jmitc91516 0:9140ec6aa604 1091 D = (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_MID_OFS));
jmitc91516 0:9140ec6aa604 1092 if (D < Result)
jmitc91516 0:9140ec6aa604 1093 Result = D;
jmitc91516 0:9140ec6aa604 1094 D = (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_MIDBASE_OFS));
jmitc91516 0:9140ec6aa604 1095 if (D < Result)
jmitc91516 0:9140ec6aa604 1096 Result = D;
jmitc91516 0:9140ec6aa604 1097 D = (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_BASE_OFS));
jmitc91516 0:9140ec6aa604 1098 if (D < Result)
jmitc91516 0:9140ec6aa604 1099 Result = D;
jmitc91516 0:9140ec6aa604 1100 D = (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_BOTTOM_OFS));
jmitc91516 0:9140ec6aa604 1101 if (D < Result)
jmitc91516 0:9140ec6aa604 1102 Result = D;
jmitc91516 0:9140ec6aa604 1103 return (ReadByte(sgl.CurFont->PsNumWidth) - Result +
jmitc91516 0:9140ec6aa604 1104 ReadByte(sgl.CurFont->PsSpace));
jmitc91516 0:9140ec6aa604 1105 }
jmitc91516 0:9140ec6aa604 1106 else
jmitc91516 0:9140ec6aa604 1107 return (ReadByte(sgl.CurFont->PsNumWidth) +
jmitc91516 0:9140ec6aa604 1108 ReadByte(sgl.CurFont->PsSpace));
jmitc91516 0:9140ec6aa604 1109 }
jmitc91516 0:9140ec6aa604 1110 else
jmitc91516 0:9140ec6aa604 1111 return (0);
jmitc91516 0:9140ec6aa604 1112 #endif
jmitc91516 0:9140ec6aa604 1113 }
jmitc91516 0:9140ec6aa604 1114
jmitc91516 0:9140ec6aa604 1115 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1116 static GuiConst_INT16S TextPixelLength(
jmitc91516 0:9140ec6aa604 1117 GuiConst_INT8U Ps,
jmitc91516 0:9140ec6aa604 1118 GuiConst_INT16U CharCnt,
jmitc91516 0:9140ec6aa604 1119 GuiConst_INT16S *TextXOfs)
jmitc91516 0:9140ec6aa604 1120 {
jmitc91516 0:9140ec6aa604 1121 GuiConst_INT16U P;
jmitc91516 0:9140ec6aa604 1122 GuiConst_INT16S L;
jmitc91516 0:9140ec6aa604 1123 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 1124 GuiConst_INT8U CharHeader1[GuiLib_CHR_LINECTRL_OFS + 1];
jmitc91516 0:9140ec6aa604 1125 GuiConst_INT8U CharHeader2[GuiLib_CHR_LINECTRL_OFS + 1];
jmitc91516 0:9140ec6aa604 1126 #endif
jmitc91516 0:9140ec6aa604 1127
jmitc91516 0:9140ec6aa604 1128 if (CharCnt == 0)
jmitc91516 0:9140ec6aa604 1129 return (0);
jmitc91516 0:9140ec6aa604 1130 else
jmitc91516 0:9140ec6aa604 1131 {
jmitc91516 0:9140ec6aa604 1132 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 1133 GuiLib_RemoteDataReadBlock(
jmitc91516 0:9140ec6aa604 1134 (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[0]],
jmitc91516 0:9140ec6aa604 1135 GuiLib_CHR_LINECTRL_OFS + 1, CharHeader1);
jmitc91516 0:9140ec6aa604 1136 GuiLib_RemoteDataReadBlock(
jmitc91516 0:9140ec6aa604 1137 (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[CharCnt - 1]],
jmitc91516 0:9140ec6aa604 1138 GuiLib_CHR_LINECTRL_OFS + 1, CharHeader2);
jmitc91516 0:9140ec6aa604 1139 #endif
jmitc91516 0:9140ec6aa604 1140
jmitc91516 0:9140ec6aa604 1141 if (sgl.TextPsMode[0])
jmitc91516 0:9140ec6aa604 1142 {
jmitc91516 0:9140ec6aa604 1143 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 1144 if (CharHeader1[GuiLib_CHR_LINECTRL_OFS] & 0x01)
jmitc91516 0:9140ec6aa604 1145 L = -(GuiConst_INT16S)CharHeader1[GuiLib_CHR_PSLEFT_OFS];
jmitc91516 0:9140ec6aa604 1146 else
jmitc91516 0:9140ec6aa604 1147 L = -(GuiConst_INT16S)CharHeader1[GuiLib_CHR_XLEFT_OFS];
jmitc91516 0:9140ec6aa604 1148 #else
jmitc91516 0:9140ec6aa604 1149 if (ReadBytePtr(sgl.TextCharPtrAry[0] + GuiLib_CHR_LINECTRL_OFS) & 0x01)
jmitc91516 0:9140ec6aa604 1150 L = -(GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[0] +
jmitc91516 0:9140ec6aa604 1151 GuiLib_CHR_PSLEFT_OFS));
jmitc91516 0:9140ec6aa604 1152 else
jmitc91516 0:9140ec6aa604 1153 L = -(GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[0] +
jmitc91516 0:9140ec6aa604 1154 GuiLib_CHR_XLEFT_OFS));
jmitc91516 0:9140ec6aa604 1155 #endif
jmitc91516 0:9140ec6aa604 1156 }
jmitc91516 0:9140ec6aa604 1157 else
jmitc91516 0:9140ec6aa604 1158 L = 0;
jmitc91516 0:9140ec6aa604 1159
jmitc91516 0:9140ec6aa604 1160 if (TextXOfs != NULL)
jmitc91516 0:9140ec6aa604 1161 TextXOfs[0] = L;
jmitc91516 0:9140ec6aa604 1162
jmitc91516 0:9140ec6aa604 1163 for (P = 0; P < CharCnt - 1; P++)
jmitc91516 0:9140ec6aa604 1164 {
jmitc91516 0:9140ec6aa604 1165 L += CharDist (P, P + 1, Ps);
jmitc91516 0:9140ec6aa604 1166 if (TextXOfs != NULL)
jmitc91516 0:9140ec6aa604 1167 TextXOfs[P + 1] = L;
jmitc91516 0:9140ec6aa604 1168 }
jmitc91516 0:9140ec6aa604 1169
jmitc91516 0:9140ec6aa604 1170 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 1171 if (sgl.TextPsMode[CharCnt - 1])
jmitc91516 0:9140ec6aa604 1172 {
jmitc91516 0:9140ec6aa604 1173 if (CharHeader2[GuiLib_CHR_LINECTRL_OFS] & 0x01)
jmitc91516 0:9140ec6aa604 1174 L += (GuiConst_INT16S)CharHeader2[GuiLib_CHR_PSRIGHT_OFS] + 1;
jmitc91516 0:9140ec6aa604 1175 else
jmitc91516 0:9140ec6aa604 1176 L += (GuiConst_INT16S)CharHeader2[GuiLib_CHR_XLEFT_OFS] +
jmitc91516 0:9140ec6aa604 1177 (GuiConst_INT16S)CharHeader2[GuiLib_CHR_XWIDTH_OFS];
jmitc91516 0:9140ec6aa604 1178 }
jmitc91516 0:9140ec6aa604 1179 else if (Ps == GuiLib_PS_NUM)
jmitc91516 0:9140ec6aa604 1180 {
jmitc91516 0:9140ec6aa604 1181 if (CharHeader2[GuiLib_CHR_LINECTRL_OFS] & 0x01)
jmitc91516 0:9140ec6aa604 1182 L += (GuiConst_INT16S)CharHeader2[GuiLib_CHR_PSRIGHT_OFS] + 1;
jmitc91516 0:9140ec6aa604 1183 else
jmitc91516 0:9140ec6aa604 1184 L += sgl.CurFont->PsNumWidth + sgl.CurFont->PsSpace;
jmitc91516 0:9140ec6aa604 1185 }
jmitc91516 0:9140ec6aa604 1186 else
jmitc91516 0:9140ec6aa604 1187 L += sgl.CurFont->XSize;
jmitc91516 0:9140ec6aa604 1188 #else
jmitc91516 0:9140ec6aa604 1189 if (sgl.TextPsMode[CharCnt - 1])
jmitc91516 0:9140ec6aa604 1190 {
jmitc91516 0:9140ec6aa604 1191 if (ReadBytePtr(sgl.TextCharPtrAry[CharCnt - 1] + GuiLib_CHR_LINECTRL_OFS) & 0x01)
jmitc91516 0:9140ec6aa604 1192 L += (GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[CharCnt - 1] +
jmitc91516 0:9140ec6aa604 1193 GuiLib_CHR_PSRIGHT_OFS)) + 1;
jmitc91516 0:9140ec6aa604 1194 else
jmitc91516 0:9140ec6aa604 1195 L += ReadBytePtr(sgl.TextCharPtrAry[CharCnt - 1] + GuiLib_CHR_XLEFT_OFS) +
jmitc91516 0:9140ec6aa604 1196 ReadBytePtr(sgl.TextCharPtrAry[CharCnt - 1] + GuiLib_CHR_XWIDTH_OFS);
jmitc91516 0:9140ec6aa604 1197 }
jmitc91516 0:9140ec6aa604 1198 else if (Ps == GuiLib_PS_NUM)
jmitc91516 0:9140ec6aa604 1199 {
jmitc91516 0:9140ec6aa604 1200 if (ReadBytePtr(sgl.TextCharPtrAry[CharCnt - 1] +
jmitc91516 0:9140ec6aa604 1201 GuiLib_CHR_LINECTRL_OFS) & 0x01)
jmitc91516 0:9140ec6aa604 1202 L += (GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[CharCnt - 1] +
jmitc91516 0:9140ec6aa604 1203 GuiLib_CHR_PSRIGHT_OFS)) + 1;
jmitc91516 0:9140ec6aa604 1204 else
jmitc91516 0:9140ec6aa604 1205 L += ReadByte(sgl.CurFont->PsNumWidth) +
jmitc91516 0:9140ec6aa604 1206 ReadByte(sgl.CurFont->PsSpace);
jmitc91516 0:9140ec6aa604 1207 }
jmitc91516 0:9140ec6aa604 1208 else
jmitc91516 0:9140ec6aa604 1209 L += ReadByte(sgl.CurFont->XSize);
jmitc91516 0:9140ec6aa604 1210 #endif
jmitc91516 0:9140ec6aa604 1211 if (TextXOfs != NULL)
jmitc91516 0:9140ec6aa604 1212 TextXOfs[CharCnt] = L;
jmitc91516 0:9140ec6aa604 1213 return (L);
jmitc91516 0:9140ec6aa604 1214 }
jmitc91516 0:9140ec6aa604 1215 }
jmitc91516 0:9140ec6aa604 1216
jmitc91516 0:9140ec6aa604 1217 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1218 static GuiConst_INT16U CalcCharsWidth(
jmitc91516 0:9140ec6aa604 1219 GuiConst_INT16U CharPos1,
jmitc91516 0:9140ec6aa604 1220 GuiConst_INT16U CharPos2,
jmitc91516 0:9140ec6aa604 1221 GuiConst_INT16S *TextXOfs,
jmitc91516 0:9140ec6aa604 1222 GuiConst_INT16S *pXStart,
jmitc91516 0:9140ec6aa604 1223 GuiConst_INT16S *pXEnd)
jmitc91516 0:9140ec6aa604 1224 {
jmitc91516 0:9140ec6aa604 1225 GuiConst_INT16S X1;
jmitc91516 0:9140ec6aa604 1226 GuiConst_INT16S X2;
jmitc91516 0:9140ec6aa604 1227
jmitc91516 0:9140ec6aa604 1228 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 1229 GuiConst_INT8U CharHeader1[GuiLib_CHR_LINECTRL_OFS+1];
jmitc91516 0:9140ec6aa604 1230 GuiConst_INT8U CharHeader2[GuiLib_CHR_LINECTRL_OFS+1];
jmitc91516 0:9140ec6aa604 1231
jmitc91516 0:9140ec6aa604 1232 GuiLib_RemoteDataReadBlock(
jmitc91516 0:9140ec6aa604 1233 (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[CharPos1]],
jmitc91516 0:9140ec6aa604 1234 GuiLib_CHR_LINECTRL_OFS+1, CharHeader1);
jmitc91516 0:9140ec6aa604 1235 GuiLib_RemoteDataReadBlock(
jmitc91516 0:9140ec6aa604 1236 (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[CharPos2]],
jmitc91516 0:9140ec6aa604 1237 GuiLib_CHR_LINECTRL_OFS+1, CharHeader2);
jmitc91516 0:9140ec6aa604 1238
jmitc91516 0:9140ec6aa604 1239 if (sgl.TextPsMode[CharPos1])
jmitc91516 0:9140ec6aa604 1240 {
jmitc91516 0:9140ec6aa604 1241 if (CharHeader1[GuiLib_CHR_LINECTRL_OFS] & 0x01)
jmitc91516 0:9140ec6aa604 1242 X1 = TextXOfs[CharPos1] +
jmitc91516 0:9140ec6aa604 1243 (GuiConst_INT16S)CharHeader1[GuiLib_CHR_PSLEFT_OFS];
jmitc91516 0:9140ec6aa604 1244 else
jmitc91516 0:9140ec6aa604 1245 X1 = TextXOfs[CharPos1] +
jmitc91516 0:9140ec6aa604 1246 (GuiConst_INT16S)CharHeader1[GuiLib_CHR_XLEFT_OFS];
jmitc91516 0:9140ec6aa604 1247 }
jmitc91516 0:9140ec6aa604 1248 else
jmitc91516 0:9140ec6aa604 1249 X1 = TextXOfs[CharPos1];
jmitc91516 0:9140ec6aa604 1250 if (sgl.TextPsMode[CharPos2])
jmitc91516 0:9140ec6aa604 1251 {
jmitc91516 0:9140ec6aa604 1252 if (CharHeader2[GuiLib_CHR_LINECTRL_OFS] & 0x01)
jmitc91516 0:9140ec6aa604 1253 X2 = TextXOfs[CharPos2] +
jmitc91516 0:9140ec6aa604 1254 (GuiConst_INT16S)CharHeader2[GuiLib_CHR_PSRIGHT_OFS];
jmitc91516 0:9140ec6aa604 1255 else
jmitc91516 0:9140ec6aa604 1256 X2 = TextXOfs[CharPos2] +
jmitc91516 0:9140ec6aa604 1257 (GuiConst_INT16S)CharHeader1[GuiLib_CHR_XLEFT_OFS] +
jmitc91516 0:9140ec6aa604 1258 (GuiConst_INT16S)CharHeader2[GuiLib_CHR_XWIDTH_OFS] - 1;
jmitc91516 0:9140ec6aa604 1259 }
jmitc91516 0:9140ec6aa604 1260 else
jmitc91516 0:9140ec6aa604 1261 X2 = TextXOfs[CharPos2] + sgl.CurFont->XSize - 1;
jmitc91516 0:9140ec6aa604 1262 #else
jmitc91516 0:9140ec6aa604 1263 if (sgl.TextPsMode[CharPos1])
jmitc91516 0:9140ec6aa604 1264 {
jmitc91516 0:9140ec6aa604 1265 if (ReadBytePtr(sgl.TextCharPtrAry[CharPos1] +
jmitc91516 0:9140ec6aa604 1266 GuiLib_CHR_LINECTRL_OFS) & 0x01)
jmitc91516 0:9140ec6aa604 1267 X1 = TextXOfs[CharPos1] +
jmitc91516 0:9140ec6aa604 1268 (GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[CharPos1] +
jmitc91516 0:9140ec6aa604 1269 GuiLib_CHR_PSLEFT_OFS));
jmitc91516 0:9140ec6aa604 1270 else
jmitc91516 0:9140ec6aa604 1271 X1 = TextXOfs[CharPos1] +
jmitc91516 0:9140ec6aa604 1272 (GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[CharPos1] +
jmitc91516 0:9140ec6aa604 1273 GuiLib_CHR_XLEFT_OFS));
jmitc91516 0:9140ec6aa604 1274 }
jmitc91516 0:9140ec6aa604 1275 else
jmitc91516 0:9140ec6aa604 1276 X1 = TextXOfs[CharPos1];
jmitc91516 0:9140ec6aa604 1277 if (sgl.TextPsMode[CharPos2])
jmitc91516 0:9140ec6aa604 1278 {
jmitc91516 0:9140ec6aa604 1279 if (ReadBytePtr(sgl.TextCharPtrAry[CharPos2] +
jmitc91516 0:9140ec6aa604 1280 GuiLib_CHR_LINECTRL_OFS) & 0x01)
jmitc91516 0:9140ec6aa604 1281 X2 = TextXOfs[CharPos2] +
jmitc91516 0:9140ec6aa604 1282 (GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[CharPos2] +
jmitc91516 0:9140ec6aa604 1283 GuiLib_CHR_PSRIGHT_OFS));
jmitc91516 0:9140ec6aa604 1284 else
jmitc91516 0:9140ec6aa604 1285 X2 = TextXOfs[CharPos2] +
jmitc91516 0:9140ec6aa604 1286 (GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[CharPos2] +
jmitc91516 0:9140ec6aa604 1287 GuiLib_CHR_XLEFT_OFS)) +
jmitc91516 0:9140ec6aa604 1288 (GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[CharPos2] +
jmitc91516 0:9140ec6aa604 1289 GuiLib_CHR_XWIDTH_OFS)) - 1;
jmitc91516 0:9140ec6aa604 1290 }
jmitc91516 0:9140ec6aa604 1291 else
jmitc91516 0:9140ec6aa604 1292 X2 = TextXOfs[CharPos2] + sgl.CurFont->XSize - 1;
jmitc91516 0:9140ec6aa604 1293 #endif
jmitc91516 0:9140ec6aa604 1294
jmitc91516 0:9140ec6aa604 1295 *pXStart = X1;
jmitc91516 0:9140ec6aa604 1296 *pXEnd = X2;
jmitc91516 0:9140ec6aa604 1297 return(X2 - X1 + 1);
jmitc91516 0:9140ec6aa604 1298 }
jmitc91516 0:9140ec6aa604 1299
jmitc91516 0:9140ec6aa604 1300 #ifdef GuiConst_CHARMODE_UNICODE
jmitc91516 0:9140ec6aa604 1301 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1302 static GuiConst_INT32U GetCharNdx(
jmitc91516 0:9140ec6aa604 1303 GuiLib_FontRecPtr Font,
jmitc91516 0:9140ec6aa604 1304 GuiConst_INT16U CharCode)
jmitc91516 0:9140ec6aa604 1305 {
jmitc91516 0:9140ec6aa604 1306 GuiConst_INT32U CharNdx,CharNdx1,CharNdx2;
jmitc91516 0:9140ec6aa604 1307 GuiConst_INT32U ReturnValue;
jmitc91516 0:9140ec6aa604 1308
jmitc91516 0:9140ec6aa604 1309 CharNdx1 = ReadWord(Font->FirstCharNdx) + 1;
jmitc91516 0:9140ec6aa604 1310 CharNdx2 = CharNdx1 + ReadWord(Font->CharCount) - 1;
jmitc91516 0:9140ec6aa604 1311
jmitc91516 0:9140ec6aa604 1312 ReturnValue = 0;
jmitc91516 0:9140ec6aa604 1313
jmitc91516 0:9140ec6aa604 1314 do
jmitc91516 0:9140ec6aa604 1315 {
jmitc91516 0:9140ec6aa604 1316 CharNdx = CharNdx1 + ((CharNdx2 - CharNdx1) >> 1);
jmitc91516 0:9140ec6aa604 1317
jmitc91516 0:9140ec6aa604 1318 if (ReadWord(GuiFont_ChUnicodeList[CharNdx]) == CharCode)
jmitc91516 0:9140ec6aa604 1319 {
jmitc91516 0:9140ec6aa604 1320 ReturnValue = CharNdx;
jmitc91516 0:9140ec6aa604 1321 break;
jmitc91516 0:9140ec6aa604 1322 }
jmitc91516 0:9140ec6aa604 1323
jmitc91516 0:9140ec6aa604 1324 if (CharNdx1 == CharNdx2)
jmitc91516 0:9140ec6aa604 1325 {
jmitc91516 0:9140ec6aa604 1326 ReturnValue = ReadWord(Font->FirstCharNdx);
jmitc91516 0:9140ec6aa604 1327 break;
jmitc91516 0:9140ec6aa604 1328 }
jmitc91516 0:9140ec6aa604 1329
jmitc91516 0:9140ec6aa604 1330 if (ReadWord(GuiFont_ChUnicodeList[CharNdx]) > CharCode)
jmitc91516 0:9140ec6aa604 1331 CharNdx2 = CharNdx - 1;
jmitc91516 0:9140ec6aa604 1332 else
jmitc91516 0:9140ec6aa604 1333 CharNdx1 = CharNdx + 1;
jmitc91516 0:9140ec6aa604 1334
jmitc91516 0:9140ec6aa604 1335 if (CharNdx1 > CharNdx2)
jmitc91516 0:9140ec6aa604 1336 {
jmitc91516 0:9140ec6aa604 1337 ReturnValue = ReadWord(Font->FirstCharNdx);
jmitc91516 0:9140ec6aa604 1338 break;
jmitc91516 0:9140ec6aa604 1339 }
jmitc91516 0:9140ec6aa604 1340 }
jmitc91516 0:9140ec6aa604 1341 while (1);
jmitc91516 0:9140ec6aa604 1342
jmitc91516 0:9140ec6aa604 1343 return ReturnValue;
jmitc91516 0:9140ec6aa604 1344 }
jmitc91516 0:9140ec6aa604 1345 #endif
jmitc91516 0:9140ec6aa604 1346
jmitc91516 0:9140ec6aa604 1347 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1348 static void PrepareText(
jmitc91516 0:9140ec6aa604 1349 GuiConst_TEXT PrefixGeneric *CharPtr,
jmitc91516 0:9140ec6aa604 1350 GuiConst_INT16U CharCnt,
jmitc91516 0:9140ec6aa604 1351 GuiConst_INT8U TextNdx)
jmitc91516 0:9140ec6aa604 1352 {
jmitc91516 0:9140ec6aa604 1353 GuiConst_INT16S P;
jmitc91516 0:9140ec6aa604 1354 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 1355 GuiConst_INT8U CharCode;
jmitc91516 0:9140ec6aa604 1356 #else
jmitc91516 0:9140ec6aa604 1357 GuiConst_INT16U CharCode;
jmitc91516 0:9140ec6aa604 1358 GuiConst_INT16U CharNdx;
jmitc91516 0:9140ec6aa604 1359 #endif
jmitc91516 0:9140ec6aa604 1360
jmitc91516 0:9140ec6aa604 1361 if (CharCnt > GuiConst_MAX_TEXT_LEN)
jmitc91516 0:9140ec6aa604 1362 CharCnt = GuiConst_MAX_TEXT_LEN;
jmitc91516 0:9140ec6aa604 1363
jmitc91516 0:9140ec6aa604 1364 for (P = 0; P < CharCnt; P++)
jmitc91516 0:9140ec6aa604 1365 {
jmitc91516 0:9140ec6aa604 1366 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 1367
jmitc91516 0:9140ec6aa604 1368 #ifdef GuiConst_AVRGCC_COMPILER
jmitc91516 0:9140ec6aa604 1369 if (displayVarNow)
jmitc91516 0:9140ec6aa604 1370 CharCode = (unsigned GuiConst_CHAR) *CharPtr;
jmitc91516 0:9140ec6aa604 1371 else
jmitc91516 0:9140ec6aa604 1372 CharCode = (unsigned GuiConst_CHAR) ReadBytePtr(CharPtr);
jmitc91516 0:9140ec6aa604 1373 #else
jmitc91516 0:9140ec6aa604 1374 #ifdef GuiConst_ICC_COMPILER
jmitc91516 0:9140ec6aa604 1375 if (displayVarNow)
jmitc91516 0:9140ec6aa604 1376 CharCode = (unsigned GuiConst_CHAR) *CharPtr;
jmitc91516 0:9140ec6aa604 1377 else
jmitc91516 0:9140ec6aa604 1378 CharCode = *((GuiConst_INT8U PrefixRom *)CharPtr);
jmitc91516 0:9140ec6aa604 1379 #else
jmitc91516 0:9140ec6aa604 1380 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 1381 if (displayVarNow)
jmitc91516 0:9140ec6aa604 1382 CharCode = (unsigned GuiConst_CHAR) *CharPtr;
jmitc91516 0:9140ec6aa604 1383 else
jmitc91516 0:9140ec6aa604 1384 CharCode = *((GuiConst_INT8U PrefixRom *)CharPtr);
jmitc91516 0:9140ec6aa604 1385 #else
jmitc91516 0:9140ec6aa604 1386 #ifdef GuiConst_RENESAS_COMPILER_FAR
jmitc91516 0:9140ec6aa604 1387 if (displayVarNow)
jmitc91516 0:9140ec6aa604 1388 CharCode = (unsigned GuiConst_CHAR) *CharPtr;
jmitc91516 0:9140ec6aa604 1389 else
jmitc91516 0:9140ec6aa604 1390 CharCode = *((GuiConst_INT8U PrefixRom *)CharPtr);
jmitc91516 0:9140ec6aa604 1391 #else
jmitc91516 0:9140ec6aa604 1392 CharCode = (unsigned GuiConst_TEXT) *CharPtr;
jmitc91516 0:9140ec6aa604 1393 #endif // GuiConst_RENESAS_COMPILER_FAR
jmitc91516 0:9140ec6aa604 1394 #endif // GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 1395 #endif // GuiConst_ICC_COMPILER
jmitc91516 0:9140ec6aa604 1396 #endif // GuiConst_AVRGCC_COMPILER
jmitc91516 0:9140ec6aa604 1397
jmitc91516 0:9140ec6aa604 1398 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 1399 if ((CharCode < sgl.CurFont->FirstChar) ||
jmitc91516 0:9140ec6aa604 1400 (CharCode > sgl.CurFont->LastChar))
jmitc91516 0:9140ec6aa604 1401 sgl.TextCharNdx[P] = sgl.CurFont->IllegalCharNdx;
jmitc91516 0:9140ec6aa604 1402 else
jmitc91516 0:9140ec6aa604 1403 {
jmitc91516 0:9140ec6aa604 1404 sgl.TextCharNdx[P] =
jmitc91516 0:9140ec6aa604 1405 sgl.CurFont->FirstCharNdx + (GuiConst_INT16U)CharCode -
jmitc91516 0:9140ec6aa604 1406 (GuiConst_INT16U)sgl.CurFont->FirstChar;
jmitc91516 0:9140ec6aa604 1407
jmitc91516 0:9140ec6aa604 1408 if ((GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[P] + 1] -
jmitc91516 0:9140ec6aa604 1409 (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[P]] == 0)
jmitc91516 0:9140ec6aa604 1410 sgl.TextCharNdx[P] = sgl.CurFont->IllegalCharNdx;
jmitc91516 0:9140ec6aa604 1411 }
jmitc91516 0:9140ec6aa604 1412 #else // GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 1413 if ((CharCode < ReadByte(sgl.CurFont->FirstChar)) ||
jmitc91516 0:9140ec6aa604 1414 (CharCode > ReadByte(sgl.CurFont->LastChar)))
jmitc91516 0:9140ec6aa604 1415 sgl.TextCharPtrAry[P] = (GuiConst_INT8U*)ReadWord(
jmitc91516 0:9140ec6aa604 1416 GuiFont_ChPtrList[ReadWord(sgl.CurFont->IllegalCharNdx)]);
jmitc91516 0:9140ec6aa604 1417 else
jmitc91516 0:9140ec6aa604 1418 sgl.TextCharPtrAry[P] = (GuiConst_INT8U*)ReadWord(
jmitc91516 0:9140ec6aa604 1419 GuiFont_ChPtrList[ReadWord(sgl.CurFont->FirstCharNdx) +
jmitc91516 0:9140ec6aa604 1420 (GuiConst_INT16U)CharCode -
jmitc91516 0:9140ec6aa604 1421 (GuiConst_INT16U)ReadByte(sgl.CurFont->FirstChar)]);
jmitc91516 0:9140ec6aa604 1422 #endif // GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 1423
jmitc91516 0:9140ec6aa604 1424 if (sgl.CurItem.TextPar[TextNdx].Ps == GuiLib_PS_ON)
jmitc91516 0:9140ec6aa604 1425 sgl.TextPsMode[P] = 1;
jmitc91516 0:9140ec6aa604 1426 else if (sgl.CurItem.TextPar[TextNdx].Ps == GuiLib_PS_NUM)
jmitc91516 0:9140ec6aa604 1427 {
jmitc91516 0:9140ec6aa604 1428 if (((CharCode >= '0') && (CharCode <= '9')) ||
jmitc91516 0:9140ec6aa604 1429 (CharCode == ' ') || (CharCode == '+') || (CharCode == '-') ||
jmitc91516 0:9140ec6aa604 1430 (CharCode == '*') || (CharCode == '/') || (CharCode == '='))
jmitc91516 0:9140ec6aa604 1431 sgl.TextPsMode[P] = 0;
jmitc91516 0:9140ec6aa604 1432 else
jmitc91516 0:9140ec6aa604 1433 sgl.TextPsMode[P] = 1;
jmitc91516 0:9140ec6aa604 1434 }
jmitc91516 0:9140ec6aa604 1435 else
jmitc91516 0:9140ec6aa604 1436 sgl.TextPsMode[P] = 0;
jmitc91516 0:9140ec6aa604 1437
jmitc91516 0:9140ec6aa604 1438 #else // GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 1439 CharCode = *((PrefixLocate GuiConst_INT16U*)CharPtr);
jmitc91516 0:9140ec6aa604 1440 CharNdx = GetCharNdx(sgl.CurFont, CharCode);
jmitc91516 0:9140ec6aa604 1441
jmitc91516 0:9140ec6aa604 1442 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 1443 sgl.TextCharNdx[P] = CharNdx;
jmitc91516 0:9140ec6aa604 1444 #else
jmitc91516 0:9140ec6aa604 1445 sgl.TextCharPtrAry[P] =
jmitc91516 0:9140ec6aa604 1446 (GuiConst_INT8U PrefixRom *)ReadWord(GuiFont_ChPtrList[CharNdx]);
jmitc91516 0:9140ec6aa604 1447 #endif
jmitc91516 0:9140ec6aa604 1448
jmitc91516 0:9140ec6aa604 1449 if (sgl.CurItem.TextPar[TextNdx].Ps == GuiLib_PS_ON)
jmitc91516 0:9140ec6aa604 1450 sgl.TextPsMode[P] = 1;
jmitc91516 0:9140ec6aa604 1451 else if ((sgl.CurItem.TextPar[TextNdx].Ps == GuiLib_PS_NUM) && (CharNdx > 0))
jmitc91516 0:9140ec6aa604 1452 {
jmitc91516 0:9140ec6aa604 1453 if (((CharCode >= '0') && (CharCode <= '9')) ||
jmitc91516 0:9140ec6aa604 1454 (CharCode == ' ') || (CharCode == '+') || (CharCode == '-') ||
jmitc91516 0:9140ec6aa604 1455 (CharCode == '*') || (CharCode == '/') || (CharCode == '='))
jmitc91516 0:9140ec6aa604 1456 sgl.TextPsMode[P] = 0;
jmitc91516 0:9140ec6aa604 1457 else
jmitc91516 0:9140ec6aa604 1458 sgl.TextPsMode[P] = 1;
jmitc91516 0:9140ec6aa604 1459 }
jmitc91516 0:9140ec6aa604 1460 else
jmitc91516 0:9140ec6aa604 1461 sgl.TextPsMode[P] = 0;
jmitc91516 0:9140ec6aa604 1462 #endif // GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 1463 CharPtr++;
jmitc91516 0:9140ec6aa604 1464 }
jmitc91516 0:9140ec6aa604 1465 }
jmitc91516 0:9140ec6aa604 1466
jmitc91516 0:9140ec6aa604 1467 #ifdef GuiConst_ARAB_CHARS_INUSE
jmitc91516 0:9140ec6aa604 1468 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1469 static GuiConst_INT16U ArabicCorrection(
jmitc91516 0:9140ec6aa604 1470 GuiConst_TEXT PrefixGeneric *CharPtr,
jmitc91516 0:9140ec6aa604 1471 GuiConst_INT16U CharCnt,
jmitc91516 0:9140ec6aa604 1472 GuiConst_INT8U RightToLeftWriting)
jmitc91516 0:9140ec6aa604 1473 {
jmitc91516 0:9140ec6aa604 1474 GuiConst_INT16S I, J, P;
jmitc91516 0:9140ec6aa604 1475 GuiConst_INT16U CharCode;
jmitc91516 0:9140ec6aa604 1476 GuiConst_INT16U CharCode2;
jmitc91516 0:9140ec6aa604 1477 GuiConst_TEXT PrefixLocate *CharPtr2;
jmitc91516 0:9140ec6aa604 1478 GuiConst_TEXT PrefixLocate *CharPtrA;
jmitc91516 0:9140ec6aa604 1479 GuiConst_TEXT PrefixLocate *CharPtrB;
jmitc91516 0:9140ec6aa604 1480
jmitc91516 0:9140ec6aa604 1481 if (!RightToLeftWriting)
jmitc91516 0:9140ec6aa604 1482 return CharCnt;
jmitc91516 0:9140ec6aa604 1483
jmitc91516 0:9140ec6aa604 1484 CharPtr2 = CharPtr;
jmitc91516 0:9140ec6aa604 1485
jmitc91516 0:9140ec6aa604 1486 for (P = 0; P < CharCnt; P++)
jmitc91516 0:9140ec6aa604 1487 {
jmitc91516 0:9140ec6aa604 1488 CharCode = *((GuiConst_INT16U*)CharPtr);
jmitc91516 0:9140ec6aa604 1489 switch (CharCode)
jmitc91516 0:9140ec6aa604 1490 {
jmitc91516 0:9140ec6aa604 1491 case 40:
jmitc91516 0:9140ec6aa604 1492 *((GuiConst_INT16U*)CharPtr) = 41;
jmitc91516 0:9140ec6aa604 1493 break;
jmitc91516 0:9140ec6aa604 1494 case 41:
jmitc91516 0:9140ec6aa604 1495 *((GuiConst_INT16U*)CharPtr) = 40;
jmitc91516 0:9140ec6aa604 1496 break;
jmitc91516 0:9140ec6aa604 1497
jmitc91516 0:9140ec6aa604 1498 case 91:
jmitc91516 0:9140ec6aa604 1499 *((GuiConst_INT16U*)CharPtr) = 93;
jmitc91516 0:9140ec6aa604 1500 break;
jmitc91516 0:9140ec6aa604 1501 case 93:
jmitc91516 0:9140ec6aa604 1502 *((GuiConst_INT16U*)CharPtr) = 91;
jmitc91516 0:9140ec6aa604 1503 break;
jmitc91516 0:9140ec6aa604 1504
jmitc91516 0:9140ec6aa604 1505 case 123:
jmitc91516 0:9140ec6aa604 1506 *((GuiConst_INT16U*)CharPtr) = 125;
jmitc91516 0:9140ec6aa604 1507 break;
jmitc91516 0:9140ec6aa604 1508 case 125:
jmitc91516 0:9140ec6aa604 1509 *((GuiConst_INT16U*)CharPtr) = 123;
jmitc91516 0:9140ec6aa604 1510 break;
jmitc91516 0:9140ec6aa604 1511 }
jmitc91516 0:9140ec6aa604 1512
jmitc91516 0:9140ec6aa604 1513 CharPtr++;
jmitc91516 0:9140ec6aa604 1514 }
jmitc91516 0:9140ec6aa604 1515
jmitc91516 0:9140ec6aa604 1516 P = 0;
jmitc91516 0:9140ec6aa604 1517 CharPtr = CharPtr2;
jmitc91516 0:9140ec6aa604 1518 do
jmitc91516 0:9140ec6aa604 1519 {
jmitc91516 0:9140ec6aa604 1520 CharCode = *((GuiConst_INT16U*)CharPtr);
jmitc91516 0:9140ec6aa604 1521 CharPtrA = CharPtr;
jmitc91516 0:9140ec6aa604 1522 CharPtr++;
jmitc91516 0:9140ec6aa604 1523 CharCode2 = *((GuiConst_INT16U*)CharPtr);
jmitc91516 0:9140ec6aa604 1524
jmitc91516 0:9140ec6aa604 1525 for (I = 0; I < GuiLib_ARAB_LIGATURES_CNT; I++)
jmitc91516 0:9140ec6aa604 1526 if ((CharCode == GuiLib_ARAB_LIGATURES[I][0]) &&
jmitc91516 0:9140ec6aa604 1527 (CharCode2 == GuiLib_ARAB_LIGATURES[I][1]))
jmitc91516 0:9140ec6aa604 1528 {
jmitc91516 0:9140ec6aa604 1529 *((GuiConst_INT16U*)CharPtrA) = GuiLib_ARAB_LIGATURES[I][2];
jmitc91516 0:9140ec6aa604 1530 CharPtrA = CharPtr;
jmitc91516 0:9140ec6aa604 1531 CharPtrB = CharPtrA;
jmitc91516 0:9140ec6aa604 1532 CharPtrB++;
jmitc91516 0:9140ec6aa604 1533 CharCnt--;
jmitc91516 0:9140ec6aa604 1534 for (J = P + 1; J < CharCnt; J++)
jmitc91516 0:9140ec6aa604 1535 {
jmitc91516 0:9140ec6aa604 1536 *((GuiConst_INT16U*)CharPtrA) = *((GuiConst_INT16U*)CharPtrB);
jmitc91516 0:9140ec6aa604 1537 CharPtrA++;
jmitc91516 0:9140ec6aa604 1538 CharPtrB++;
jmitc91516 0:9140ec6aa604 1539 }
jmitc91516 0:9140ec6aa604 1540 *((GuiConst_INT16U*)CharPtrA) = 0;
jmitc91516 0:9140ec6aa604 1541 break;
jmitc91516 0:9140ec6aa604 1542 }
jmitc91516 0:9140ec6aa604 1543
jmitc91516 0:9140ec6aa604 1544 P++;
jmitc91516 0:9140ec6aa604 1545 }
jmitc91516 0:9140ec6aa604 1546 while (P < CharCnt - 1);
jmitc91516 0:9140ec6aa604 1547
jmitc91516 0:9140ec6aa604 1548 CharPtr = CharPtr2;
jmitc91516 0:9140ec6aa604 1549 for (P = 0; P < CharCnt; P++)
jmitc91516 0:9140ec6aa604 1550 {
jmitc91516 0:9140ec6aa604 1551 CharCode = *((GuiConst_INT16U*)CharPtr);
jmitc91516 0:9140ec6aa604 1552
jmitc91516 0:9140ec6aa604 1553 for (I = 0; I < GuiLib_ARAB_CHAR_CONVERT_CNT; I++)
jmitc91516 0:9140ec6aa604 1554 if ((CharCode == GuiLib_ARAB_CHAR_CONVERT[I][0]) && (CharCode > 0))
jmitc91516 0:9140ec6aa604 1555 {
jmitc91516 0:9140ec6aa604 1556 *((GuiConst_INT16U*)CharPtr) = GuiLib_ARAB_CHAR_CONVERT[I][1];
jmitc91516 0:9140ec6aa604 1557 break;
jmitc91516 0:9140ec6aa604 1558 }
jmitc91516 0:9140ec6aa604 1559
jmitc91516 0:9140ec6aa604 1560 CharPtr++;
jmitc91516 0:9140ec6aa604 1561 }
jmitc91516 0:9140ec6aa604 1562
jmitc91516 0:9140ec6aa604 1563 gl.ArabicCharJoiningModeIndex[0] = -1;
jmitc91516 0:9140ec6aa604 1564 CharPtr = CharPtr2;
jmitc91516 0:9140ec6aa604 1565 for (P = 0; P < CharCnt; P++)
jmitc91516 0:9140ec6aa604 1566 {
jmitc91516 0:9140ec6aa604 1567 CharCode = *((GuiConst_INT16U*)CharPtr);
jmitc91516 0:9140ec6aa604 1568
jmitc91516 0:9140ec6aa604 1569 gl.ArabicCharJoiningModeIndex[P + 1] = -1;
jmitc91516 0:9140ec6aa604 1570 for (I = 0; I < GuiLib_ARAB_CHAR_CONVERT_CNT; I++)
jmitc91516 0:9140ec6aa604 1571 if ((CharCode >= GuiLib_ARAB_CHAR_CONVERT[I][1]) &&
jmitc91516 0:9140ec6aa604 1572 (CharCode <= GuiLib_ARAB_CHAR_CONVERT[I][1] +
jmitc91516 0:9140ec6aa604 1573 (GuiLib_ARAB_CHAR_CONVERT[I][2] & 7) - 1))
jmitc91516 0:9140ec6aa604 1574 {
jmitc91516 0:9140ec6aa604 1575 gl.ArabicCharJoiningModeIndex[P + 1] = I;
jmitc91516 0:9140ec6aa604 1576 break;
jmitc91516 0:9140ec6aa604 1577 }
jmitc91516 0:9140ec6aa604 1578
jmitc91516 0:9140ec6aa604 1579 CharPtr++;
jmitc91516 0:9140ec6aa604 1580 }
jmitc91516 0:9140ec6aa604 1581 gl.ArabicCharJoiningModeIndex[CharCnt + 1] = -1;
jmitc91516 0:9140ec6aa604 1582
jmitc91516 0:9140ec6aa604 1583 for (P = 0; P < CharCnt + 2; P++)
jmitc91516 0:9140ec6aa604 1584 {
jmitc91516 0:9140ec6aa604 1585 if (gl.ArabicCharJoiningModeIndex[P] == -1)
jmitc91516 0:9140ec6aa604 1586 gl.ArabicCharJoiningMode[P] = GuiLib_ARAB_CHAR_TYPE_ISO;
jmitc91516 0:9140ec6aa604 1587 else
jmitc91516 0:9140ec6aa604 1588 gl.ArabicCharJoiningMode[P] =
jmitc91516 0:9140ec6aa604 1589 GuiLib_ARAB_CHAR_CONVERT[gl.ArabicCharJoiningModeIndex[P]][2];
jmitc91516 0:9140ec6aa604 1590 }
jmitc91516 0:9140ec6aa604 1591
jmitc91516 0:9140ec6aa604 1592 CharPtr = CharPtr2;
jmitc91516 0:9140ec6aa604 1593 for (P = 0; P < CharCnt; P++)
jmitc91516 0:9140ec6aa604 1594 {
jmitc91516 0:9140ec6aa604 1595 CharCode = *((GuiConst_INT16U*)CharPtr);
jmitc91516 0:9140ec6aa604 1596
jmitc91516 0:9140ec6aa604 1597 I = P;
jmitc91516 0:9140ec6aa604 1598 while (gl.ArabicCharJoiningMode[I] == GuiLib_ARAB_CHAR_DIACRITIC)
jmitc91516 0:9140ec6aa604 1599 I--;
jmitc91516 0:9140ec6aa604 1600 gl.ArabicCharJoiningModeBefore = gl.ArabicCharJoiningMode[I];
jmitc91516 0:9140ec6aa604 1601 I = P + 2;
jmitc91516 0:9140ec6aa604 1602 while (gl.ArabicCharJoiningMode[I] == GuiLib_ARAB_CHAR_DIACRITIC)
jmitc91516 0:9140ec6aa604 1603 I++;
jmitc91516 0:9140ec6aa604 1604 gl.ArabicCharJoiningModeAfter = gl.ArabicCharJoiningMode[I];
jmitc91516 0:9140ec6aa604 1605
jmitc91516 0:9140ec6aa604 1606 switch (gl.ArabicCharJoiningMode[P + 1])
jmitc91516 0:9140ec6aa604 1607 {
jmitc91516 0:9140ec6aa604 1608 case GuiLib_ARAB_CHAR_ISOFIN:
jmitc91516 0:9140ec6aa604 1609 if (gl.ArabicCharJoiningModeBefore == GuiLib_ARAB_CHAR_ISOFININIMED)
jmitc91516 0:9140ec6aa604 1610 *((GuiConst_INT16U*)CharPtr) =
jmitc91516 0:9140ec6aa604 1611 GuiLib_ARAB_CHAR_CONVERT[gl.ArabicCharJoiningModeIndex[P + 1]][1] +
jmitc91516 0:9140ec6aa604 1612 GuiLib_ARAB_CHAR_TYPE_FIN;
jmitc91516 0:9140ec6aa604 1613 break;
jmitc91516 0:9140ec6aa604 1614
jmitc91516 0:9140ec6aa604 1615 case GuiLib_ARAB_CHAR_ISOFININIMED:
jmitc91516 0:9140ec6aa604 1616 if ((gl.ArabicCharJoiningModeAfter == GuiLib_ARAB_CHAR_ISOFIN) ||
jmitc91516 0:9140ec6aa604 1617 (gl.ArabicCharJoiningModeAfter == GuiLib_ARAB_CHAR_ISOFININIMED))
jmitc91516 0:9140ec6aa604 1618 {
jmitc91516 0:9140ec6aa604 1619 if (gl.ArabicCharJoiningModeBefore == GuiLib_ARAB_CHAR_ISOFININIMED)
jmitc91516 0:9140ec6aa604 1620 *((GuiConst_INT16U*)CharPtr) =
jmitc91516 0:9140ec6aa604 1621 GuiLib_ARAB_CHAR_CONVERT[gl.ArabicCharJoiningModeIndex[P + 1]][1] +
jmitc91516 0:9140ec6aa604 1622 GuiLib_ARAB_CHAR_TYPE_MED;
jmitc91516 0:9140ec6aa604 1623 else
jmitc91516 0:9140ec6aa604 1624 *((GuiConst_INT16U*)CharPtr) =
jmitc91516 0:9140ec6aa604 1625 GuiLib_ARAB_CHAR_CONVERT[gl.ArabicCharJoiningModeIndex[P + 1]][1] +
jmitc91516 0:9140ec6aa604 1626 GuiLib_ARAB_CHAR_TYPE_INI;
jmitc91516 0:9140ec6aa604 1627 }
jmitc91516 0:9140ec6aa604 1628 else if (gl.ArabicCharJoiningModeBefore == GuiLib_ARAB_CHAR_ISOFININIMED)
jmitc91516 0:9140ec6aa604 1629 *((GuiConst_INT16U*)CharPtr) =
jmitc91516 0:9140ec6aa604 1630 GuiLib_ARAB_CHAR_CONVERT[gl.ArabicCharJoiningModeIndex[P + 1]][1] +
jmitc91516 0:9140ec6aa604 1631 GuiLib_ARAB_CHAR_TYPE_FIN;
jmitc91516 0:9140ec6aa604 1632 break;
jmitc91516 0:9140ec6aa604 1633
jmitc91516 0:9140ec6aa604 1634 case GuiLib_ARAB_CHAR_DIACRITIC:
jmitc91516 0:9140ec6aa604 1635 if (((gl.ArabicCharJoiningMode[P + 2] == GuiLib_ARAB_CHAR_ISOFIN) ||
jmitc91516 0:9140ec6aa604 1636 (gl.ArabicCharJoiningMode[P + 2] == GuiLib_ARAB_CHAR_ISOFININIMED)) &&
jmitc91516 0:9140ec6aa604 1637 (gl.ArabicCharJoiningMode[P] == GuiLib_ARAB_CHAR_ISOFININIMED))
jmitc91516 0:9140ec6aa604 1638 *((GuiConst_INT16U*)CharPtr) =
jmitc91516 0:9140ec6aa604 1639 GuiLib_ARAB_CHAR_CONVERT[gl.ArabicCharJoiningModeIndex[P + 1]][1] + 1;
jmitc91516 0:9140ec6aa604 1640 break;
jmitc91516 0:9140ec6aa604 1641 }
jmitc91516 0:9140ec6aa604 1642
jmitc91516 0:9140ec6aa604 1643 CharPtr++;
jmitc91516 0:9140ec6aa604 1644 }
jmitc91516 0:9140ec6aa604 1645
jmitc91516 0:9140ec6aa604 1646 return (CharCnt);
jmitc91516 0:9140ec6aa604 1647 }
jmitc91516 0:9140ec6aa604 1648 #endif
jmitc91516 0:9140ec6aa604 1649
jmitc91516 0:9140ec6aa604 1650 // Groupend CHARS
jmitc91516 0:9140ec6aa604 1651 // Groupstart DRAW
jmitc91516 0:9140ec6aa604 1652
jmitc91516 0:9140ec6aa604 1653 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1654 static void ResetDrawLimits(void)
jmitc91516 0:9140ec6aa604 1655 {
jmitc91516 0:9140ec6aa604 1656 gl.Drawn = 0;
jmitc91516 0:9140ec6aa604 1657 gl.DrawnX1 = 0x7FFF;
jmitc91516 0:9140ec6aa604 1658 gl.DrawnY1 = 0x7FFF;
jmitc91516 0:9140ec6aa604 1659 gl.DrawnX2 = 0x8000;
jmitc91516 0:9140ec6aa604 1660 gl.DrawnY2 = 0x8000;
jmitc91516 0:9140ec6aa604 1661 }
jmitc91516 0:9140ec6aa604 1662
jmitc91516 0:9140ec6aa604 1663 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1664 static void UpdateDrawLimits(
jmitc91516 0:9140ec6aa604 1665 GuiConst_INT16S X1,
jmitc91516 0:9140ec6aa604 1666 GuiConst_INT16S Y1,
jmitc91516 0:9140ec6aa604 1667 GuiConst_INT16S X2,
jmitc91516 0:9140ec6aa604 1668 GuiConst_INT16S Y2)
jmitc91516 0:9140ec6aa604 1669 {
jmitc91516 0:9140ec6aa604 1670 sgl.CurItem.Drawn = 1;
jmitc91516 0:9140ec6aa604 1671 sgl.CurItem.DrawnX1 = X1;
jmitc91516 0:9140ec6aa604 1672 sgl.CurItem.DrawnY1 = Y1;
jmitc91516 0:9140ec6aa604 1673 sgl.CurItem.DrawnX2 = X2;
jmitc91516 0:9140ec6aa604 1674 sgl.CurItem.DrawnY2 = Y2;
jmitc91516 0:9140ec6aa604 1675
jmitc91516 0:9140ec6aa604 1676 gl.Drawn = 1;
jmitc91516 0:9140ec6aa604 1677 gl.DrawnX1 = GuiLib_GET_MIN(gl.DrawnX1, X1);
jmitc91516 0:9140ec6aa604 1678 gl.DrawnY1 = GuiLib_GET_MIN(gl.DrawnY1, Y1);
jmitc91516 0:9140ec6aa604 1679 gl.DrawnX2 = GuiLib_GET_MAX(gl.DrawnX2, X2);
jmitc91516 0:9140ec6aa604 1680 gl.DrawnY2 = GuiLib_GET_MAX(gl.DrawnY2, Y2);
jmitc91516 0:9140ec6aa604 1681 }
jmitc91516 0:9140ec6aa604 1682
jmitc91516 0:9140ec6aa604 1683 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1684 static void DrawBorderBox(
jmitc91516 0:9140ec6aa604 1685 GuiConst_INT16S X1,
jmitc91516 0:9140ec6aa604 1686 GuiConst_INT16S Y1,
jmitc91516 0:9140ec6aa604 1687 GuiConst_INT16S X2,
jmitc91516 0:9140ec6aa604 1688 GuiConst_INT16S Y2,
jmitc91516 0:9140ec6aa604 1689 GuiConst_INTCOLOR BorderColor,
jmitc91516 0:9140ec6aa604 1690 GuiConst_INTCOLOR FillColor,
jmitc91516 0:9140ec6aa604 1691 GuiConst_INT8U FillTransparent,
jmitc91516 0:9140ec6aa604 1692 GuiConst_INT16U BorderThickness)
jmitc91516 0:9140ec6aa604 1693 {
jmitc91516 0:9140ec6aa604 1694 if (BorderThickness == 1)
jmitc91516 0:9140ec6aa604 1695 GuiLib_Box(X1, Y1, X2, Y2, BorderColor);
jmitc91516 0:9140ec6aa604 1696 else
jmitc91516 0:9140ec6aa604 1697 {
jmitc91516 0:9140ec6aa604 1698 GuiLib_FillBox(X1, Y1, X1 + BorderThickness - 1, Y2, BorderColor);
jmitc91516 0:9140ec6aa604 1699 GuiLib_FillBox(X2 - BorderThickness + 1, Y1, X2, Y2, BorderColor);
jmitc91516 0:9140ec6aa604 1700 GuiLib_FillBox(X1, Y1, X2, Y1 + BorderThickness - 1, BorderColor);
jmitc91516 0:9140ec6aa604 1701 GuiLib_FillBox(X1, Y2 - BorderThickness + 1, X2, Y2, BorderColor);
jmitc91516 0:9140ec6aa604 1702 }
jmitc91516 0:9140ec6aa604 1703 if ((!FillTransparent) &&
jmitc91516 0:9140ec6aa604 1704 (X2 - X1 >= 2 * BorderThickness) &&
jmitc91516 0:9140ec6aa604 1705 (Y2 - Y1 >= 2 * BorderThickness))
jmitc91516 0:9140ec6aa604 1706 GuiLib_FillBox(X1 + BorderThickness,
jmitc91516 0:9140ec6aa604 1707 Y1 + BorderThickness,
jmitc91516 0:9140ec6aa604 1708 X2 - BorderThickness,
jmitc91516 0:9140ec6aa604 1709 Y2 - BorderThickness,
jmitc91516 0:9140ec6aa604 1710 FillColor);
jmitc91516 0:9140ec6aa604 1711 }
jmitc91516 0:9140ec6aa604 1712
jmitc91516 0:9140ec6aa604 1713 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1714 static void SetBackColorBox(
jmitc91516 0:9140ec6aa604 1715 GuiConst_INT16S X1,
jmitc91516 0:9140ec6aa604 1716 GuiConst_INT16S Y1,
jmitc91516 0:9140ec6aa604 1717 GuiConst_INT16S X2,
jmitc91516 0:9140ec6aa604 1718 GuiConst_INT16S Y2,
jmitc91516 0:9140ec6aa604 1719 GuiConst_INT8U TextNdx)
jmitc91516 0:9140ec6aa604 1720 {
jmitc91516 0:9140ec6aa604 1721 sgl.BbX1 = X1;
jmitc91516 0:9140ec6aa604 1722 sgl.BbY1 = Y1;
jmitc91516 0:9140ec6aa604 1723 sgl.BbX2 = X2;
jmitc91516 0:9140ec6aa604 1724 sgl.BbY2 = Y2;
jmitc91516 0:9140ec6aa604 1725
jmitc91516 0:9140ec6aa604 1726 if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_LEFT) != 0)
jmitc91516 0:9140ec6aa604 1727 sgl.BbX1--;
jmitc91516 0:9140ec6aa604 1728 if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_RIGHT) != 0)
jmitc91516 0:9140ec6aa604 1729 sgl.BbX2++;
jmitc91516 0:9140ec6aa604 1730 if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_TOP) != 0)
jmitc91516 0:9140ec6aa604 1731 sgl.BbY1--;
jmitc91516 0:9140ec6aa604 1732 if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_BOTTOM) != 0)
jmitc91516 0:9140ec6aa604 1733 sgl.BbY2++;
jmitc91516 0:9140ec6aa604 1734 }
jmitc91516 0:9140ec6aa604 1735
jmitc91516 0:9140ec6aa604 1736 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1737 static void SetBackBox(
jmitc91516 0:9140ec6aa604 1738 GuiConst_INT8U TextNdx)
jmitc91516 0:9140ec6aa604 1739 {
jmitc91516 0:9140ec6aa604 1740 GuiConst_INT16S L;
jmitc91516 0:9140ec6aa604 1741
jmitc91516 0:9140ec6aa604 1742 L = sgl.CurItem.TextPar[TextNdx].BackBoxSizeX;
jmitc91516 0:9140ec6aa604 1743 sgl.BbX1 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 1744 sgl.BbX2 = sgl.CurItem.X1 + L - 1;
jmitc91516 0:9140ec6aa604 1745
jmitc91516 0:9140ec6aa604 1746 if (sgl.CurItem.TextPar[TextNdx].Alignment == GuiLib_ALIGN_CENTER)
jmitc91516 0:9140ec6aa604 1747 {
jmitc91516 0:9140ec6aa604 1748 sgl.BbX1 -= L / 2;
jmitc91516 0:9140ec6aa604 1749 sgl.BbX2 -= L / 2;
jmitc91516 0:9140ec6aa604 1750 }
jmitc91516 0:9140ec6aa604 1751 else if (sgl.CurItem.TextPar[TextNdx].Alignment == GuiLib_ALIGN_RIGHT)
jmitc91516 0:9140ec6aa604 1752 {
jmitc91516 0:9140ec6aa604 1753 sgl.BbX1 -= L - 1;
jmitc91516 0:9140ec6aa604 1754 sgl.BbX2 -= L - 1;
jmitc91516 0:9140ec6aa604 1755 }
jmitc91516 0:9140ec6aa604 1756
jmitc91516 0:9140ec6aa604 1757 if (sgl.CurItem.TextPar[TextNdx].BackBoxSizeY1 > 0)
jmitc91516 0:9140ec6aa604 1758 sgl.BbY1 = sgl.CurItem.Y1 - sgl.CurItem.TextPar[TextNdx].BackBoxSizeY1;
jmitc91516 0:9140ec6aa604 1759 else
jmitc91516 0:9140ec6aa604 1760 sgl.BbY1 = sgl.CurItem.Y1 - ReadByte(sgl.CurFont->BaseLine);
jmitc91516 0:9140ec6aa604 1761 if (sgl.CurItem.TextPar[TextNdx].BackBoxSizeY2 > 0)
jmitc91516 0:9140ec6aa604 1762 sgl.BbY2 = sgl.CurItem.Y1 + sgl.CurItem.TextPar[TextNdx].BackBoxSizeY2;
jmitc91516 0:9140ec6aa604 1763 else
jmitc91516 0:9140ec6aa604 1764 sgl.BbY2 = sgl.CurItem.Y1 - ReadByte(sgl.CurFont->BaseLine) +
jmitc91516 0:9140ec6aa604 1765 ReadByte(sgl.CurFont->YSize) - 1;
jmitc91516 0:9140ec6aa604 1766
jmitc91516 0:9140ec6aa604 1767 if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_LEFT) != 0)
jmitc91516 0:9140ec6aa604 1768 sgl.BbX1--;
jmitc91516 0:9140ec6aa604 1769 if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_RIGHT) != 0)
jmitc91516 0:9140ec6aa604 1770 sgl.BbX2++;
jmitc91516 0:9140ec6aa604 1771 if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_TOP) != 0)
jmitc91516 0:9140ec6aa604 1772 sgl.BbY1--;
jmitc91516 0:9140ec6aa604 1773 if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_BOTTOM) != 0)
jmitc91516 0:9140ec6aa604 1774 sgl.BbY2++;
jmitc91516 0:9140ec6aa604 1775 }
jmitc91516 0:9140ec6aa604 1776
jmitc91516 0:9140ec6aa604 1777 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1778 static void DrawBackBox(
jmitc91516 0:9140ec6aa604 1779 GuiConst_INTCOLOR BoxColor,
jmitc91516 0:9140ec6aa604 1780 GuiConst_INT8U Transparent,
jmitc91516 0:9140ec6aa604 1781 GuiConst_INT8U TextNdx)
jmitc91516 0:9140ec6aa604 1782 {
jmitc91516 0:9140ec6aa604 1783 SetBackBox(TextNdx);
jmitc91516 0:9140ec6aa604 1784
jmitc91516 0:9140ec6aa604 1785 if (!Transparent)
jmitc91516 0:9140ec6aa604 1786 GuiLib_FillBox(sgl.BbX1, sgl.BbY1, sgl.BbX2, sgl.BbY2, BoxColor);
jmitc91516 0:9140ec6aa604 1787 }
jmitc91516 0:9140ec6aa604 1788
jmitc91516 0:9140ec6aa604 1789 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1790 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 1791 #ifdef GuiConst_ICC_COMPILER
jmitc91516 0:9140ec6aa604 1792 #define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 1793 DrawText((GuiConst_TEXT *)ChPtr, \
jmitc91516 0:9140ec6aa604 1794 ChCnt, \
jmitc91516 0:9140ec6aa604 1795 TxtNdx, \
jmitc91516 0:9140ec6aa604 1796 FColor, \
jmitc91516 0:9140ec6aa604 1797 BColor, \
jmitc91516 0:9140ec6aa604 1798 Transparent);
jmitc91516 0:9140ec6aa604 1799 #else
jmitc91516 0:9140ec6aa604 1800 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 1801 #define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 1802 DrawText((GuiConst_TEXT *)ChPtr, \
jmitc91516 0:9140ec6aa604 1803 ChCnt, \
jmitc91516 0:9140ec6aa604 1804 TxtNdx, \
jmitc91516 0:9140ec6aa604 1805 FColor, \
jmitc91516 0:9140ec6aa604 1806 BColor, \
jmitc91516 0:9140ec6aa604 1807 Transparent);
jmitc91516 0:9140ec6aa604 1808 #else
jmitc91516 0:9140ec6aa604 1809 #ifdef GuiConst_RENESAS_COMPILER_FAR
jmitc91516 0:9140ec6aa604 1810 #define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 1811 DrawText((GuiConst_TEXT PrefixLocate *)ChPtr, \
jmitc91516 0:9140ec6aa604 1812 ChCnt, \
jmitc91516 0:9140ec6aa604 1813 TxtNdx, \
jmitc91516 0:9140ec6aa604 1814 FColor, \
jmitc91516 0:9140ec6aa604 1815 BColor, \
jmitc91516 0:9140ec6aa604 1816 Transparent);
jmitc91516 0:9140ec6aa604 1817 #else
jmitc91516 0:9140ec6aa604 1818 #define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 1819 DrawText((GuiConst_TEXT PrefixRom *)ChPtr, \
jmitc91516 0:9140ec6aa604 1820 ChCnt, \
jmitc91516 0:9140ec6aa604 1821 TxtNdx, \
jmitc91516 0:9140ec6aa604 1822 FColor, \
jmitc91516 0:9140ec6aa604 1823 BColor, \
jmitc91516 0:9140ec6aa604 1824 Transparent);
jmitc91516 0:9140ec6aa604 1825 #endif
jmitc91516 0:9140ec6aa604 1826 #endif
jmitc91516 0:9140ec6aa604 1827 #endif
jmitc91516 0:9140ec6aa604 1828 #else
jmitc91516 0:9140ec6aa604 1829 #ifdef GuiConst_ICC_COMPILER
jmitc91516 0:9140ec6aa604 1830 #define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 1831 ExtractUnicodeString((GuiConst_INT8U *)ChPtr, ChCnt); \
jmitc91516 0:9140ec6aa604 1832 DrawText((GuiConst_TEXT *)&sgl.UnicodeTextBuf, \
jmitc91516 0:9140ec6aa604 1833 ChCnt, \
jmitc91516 0:9140ec6aa604 1834 TxtNdx, \
jmitc91516 0:9140ec6aa604 1835 FColor, \
jmitc91516 0:9140ec6aa604 1836 BColor, \
jmitc91516 0:9140ec6aa604 1837 Transparent);
jmitc91516 0:9140ec6aa604 1838 #else
jmitc91516 0:9140ec6aa604 1839 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 1840 #define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 1841 ExtractUnicodeString((GuiConst_INT8U *)ChPtr, ChCnt); \
jmitc91516 0:9140ec6aa604 1842 DrawText((GuiConst_TEXT *)sgl.UnicodeTextBuf, \
jmitc91516 0:9140ec6aa604 1843 ChCnt, \
jmitc91516 0:9140ec6aa604 1844 TxtNdx, \
jmitc91516 0:9140ec6aa604 1845 FColor, \
jmitc91516 0:9140ec6aa604 1846 BColor, \
jmitc91516 0:9140ec6aa604 1847 Transparent);
jmitc91516 0:9140ec6aa604 1848 #else
jmitc91516 0:9140ec6aa604 1849 #ifdef GuiConst_RENESAS_COMPILER_FAR
jmitc91516 0:9140ec6aa604 1850 #define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 1851 ExtractUnicodeString((GuiConst_INT8U PrefixLocate *)ChPtr, ChCnt); \
jmitc91516 0:9140ec6aa604 1852 DrawText((GuiConst_TEXT PrefixLocate *)sgl.UnicodeTextBuf, \
jmitc91516 0:9140ec6aa604 1853 ChCnt, \
jmitc91516 0:9140ec6aa604 1854 TxtNdx, \
jmitc91516 0:9140ec6aa604 1855 FColor, \
jmitc91516 0:9140ec6aa604 1856 BColor, \
jmitc91516 0:9140ec6aa604 1857 Transparent);
jmitc91516 0:9140ec6aa604 1858 #else
jmitc91516 0:9140ec6aa604 1859 #define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 1860 ExtractUnicodeString((GuiConst_INT8U PrefixRom *)ChPtr, ChCnt); \
jmitc91516 0:9140ec6aa604 1861 DrawText((GuiConst_TEXT *)&sgl.UnicodeTextBuf, \
jmitc91516 0:9140ec6aa604 1862 ChCnt, \
jmitc91516 0:9140ec6aa604 1863 TxtNdx, \
jmitc91516 0:9140ec6aa604 1864 FColor, \
jmitc91516 0:9140ec6aa604 1865 BColor, \
jmitc91516 0:9140ec6aa604 1866 Transparent);
jmitc91516 0:9140ec6aa604 1867 #endif
jmitc91516 0:9140ec6aa604 1868 #endif
jmitc91516 0:9140ec6aa604 1869 #endif
jmitc91516 0:9140ec6aa604 1870 #endif
jmitc91516 0:9140ec6aa604 1871
jmitc91516 0:9140ec6aa604 1872 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 1873 static void DrawText(
jmitc91516 0:9140ec6aa604 1874 GuiConst_TEXT PrefixGeneric *CharPtr,
jmitc91516 0:9140ec6aa604 1875 GuiConst_INT16U CharCount,
jmitc91516 0:9140ec6aa604 1876 GuiConst_INT8U TextNdx,
jmitc91516 0:9140ec6aa604 1877 GuiConst_INTCOLOR ForeColor,
jmitc91516 0:9140ec6aa604 1878 GuiConst_INTCOLOR BackColor,
jmitc91516 0:9140ec6aa604 1879 GuiConst_INT8U Transparent)
jmitc91516 0:9140ec6aa604 1880 {
jmitc91516 0:9140ec6aa604 1881 GuiConst_INT16S P, N;
jmitc91516 0:9140ec6aa604 1882 GuiConst_INT16U CharCnt;
jmitc91516 0:9140ec6aa604 1883 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 1884 GuiConst_INT32U PrefixRom TempOfs;
jmitc91516 0:9140ec6aa604 1885 #else
jmitc91516 0:9140ec6aa604 1886 GuiConst_INT8U PrefixRom * TempPtr;
jmitc91516 0:9140ec6aa604 1887 #endif
jmitc91516 0:9140ec6aa604 1888 GuiConst_INT8U TempPsMode;
jmitc91516 0:9140ec6aa604 1889 GuiConst_INT16S TextPixelLen;
jmitc91516 0:9140ec6aa604 1890 GuiConst_INT16S X1, Y1, X2, Y2;
jmitc91516 0:9140ec6aa604 1891 GuiConst_INT16S TextXOfs[GuiConst_MAX_TEXT_LEN + 2];
jmitc91516 0:9140ec6aa604 1892
jmitc91516 0:9140ec6aa604 1893 #ifdef GuiConst_ARAB_CHARS_INUSE
jmitc91516 0:9140ec6aa604 1894 CharCnt = ArabicCorrection(CharPtr,
jmitc91516 0:9140ec6aa604 1895 CharCount,
jmitc91516 0:9140ec6aa604 1896 (sgl.CurItem.TextPar[TextNdx].BitFlags &
jmitc91516 0:9140ec6aa604 1897 GuiLib_BITFLAG_REVERSEWRITING) > 0);
jmitc91516 0:9140ec6aa604 1898 #else
jmitc91516 0:9140ec6aa604 1899 CharCnt = CharCount;
jmitc91516 0:9140ec6aa604 1900 #endif
jmitc91516 0:9140ec6aa604 1901 PrepareText(CharPtr, CharCnt, TextNdx);
jmitc91516 0:9140ec6aa604 1902
jmitc91516 0:9140ec6aa604 1903 if (sgl.CurItem.TextPar[TextNdx].BitFlags & GuiLib_BITFLAG_REVERSEWRITING)
jmitc91516 0:9140ec6aa604 1904 {
jmitc91516 0:9140ec6aa604 1905 for (N = 0; N < CharCnt / 2; N++)
jmitc91516 0:9140ec6aa604 1906 {
jmitc91516 0:9140ec6aa604 1907 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 1908 TempOfs = sgl.TextCharNdx[N];
jmitc91516 0:9140ec6aa604 1909 sgl.TextCharNdx[N] = sgl.TextCharNdx[CharCnt - 1 - N];
jmitc91516 0:9140ec6aa604 1910 sgl.TextCharNdx[CharCnt - 1 - N] = TempOfs;
jmitc91516 0:9140ec6aa604 1911 #else
jmitc91516 0:9140ec6aa604 1912 TempPtr = sgl.TextCharPtrAry[N];
jmitc91516 0:9140ec6aa604 1913 sgl.TextCharPtrAry[N] =
jmitc91516 0:9140ec6aa604 1914 (GuiConst_INT8U PrefixRom *)sgl.TextCharPtrAry[CharCnt - 1 - N];
jmitc91516 0:9140ec6aa604 1915 sgl.TextCharPtrAry[CharCnt - 1 - N] = (GuiConst_INT8U PrefixRom *)TempPtr;
jmitc91516 0:9140ec6aa604 1916 #endif
jmitc91516 0:9140ec6aa604 1917 TempPsMode = sgl.TextPsMode[N];
jmitc91516 0:9140ec6aa604 1918 sgl.TextPsMode[N] = sgl.TextPsMode[CharCnt - 1 - N];
jmitc91516 0:9140ec6aa604 1919 sgl.TextPsMode[CharCnt - 1 - N] = TempPsMode;
jmitc91516 0:9140ec6aa604 1920 }
jmitc91516 0:9140ec6aa604 1921 }
jmitc91516 0:9140ec6aa604 1922
jmitc91516 0:9140ec6aa604 1923 TextPixelLen = TextPixelLength(sgl.CurItem.TextPar[TextNdx].Ps,
jmitc91516 0:9140ec6aa604 1924 CharCnt,
jmitc91516 0:9140ec6aa604 1925 TextXOfs);
jmitc91516 0:9140ec6aa604 1926
jmitc91516 0:9140ec6aa604 1927 X1 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 1928 switch (sgl.CurItem.TextPar[TextNdx].Alignment)
jmitc91516 0:9140ec6aa604 1929 {
jmitc91516 0:9140ec6aa604 1930 case GuiLib_ALIGN_CENTER:
jmitc91516 0:9140ec6aa604 1931 if (CharCnt > 0)
jmitc91516 0:9140ec6aa604 1932 X1 -= TextPixelLen / 2;
jmitc91516 0:9140ec6aa604 1933 break;
jmitc91516 0:9140ec6aa604 1934
jmitc91516 0:9140ec6aa604 1935 case GuiLib_ALIGN_RIGHT:
jmitc91516 0:9140ec6aa604 1936 X1 -= TextPixelLen - 1;
jmitc91516 0:9140ec6aa604 1937 break;
jmitc91516 0:9140ec6aa604 1938 }
jmitc91516 0:9140ec6aa604 1939 Y1 = sgl.CurItem.Y1 - ReadByte(sgl.CurFont->BaseLine);
jmitc91516 0:9140ec6aa604 1940 X2 = X1 + TextPixelLen - 1;
jmitc91516 0:9140ec6aa604 1941 Y2 = Y1 + ReadByte(sgl.CurFont->YSize) - 1;
jmitc91516 0:9140ec6aa604 1942
jmitc91516 0:9140ec6aa604 1943 sgl.FontWriteX1 = X1;
jmitc91516 0:9140ec6aa604 1944 sgl.FontWriteY1 = Y1;
jmitc91516 0:9140ec6aa604 1945 sgl.FontWriteX2 = X2;
jmitc91516 0:9140ec6aa604 1946 sgl.FontWriteY2 = Y2;
jmitc91516 0:9140ec6aa604 1947
jmitc91516 0:9140ec6aa604 1948 if (sgl.DisplayWriting)
jmitc91516 0:9140ec6aa604 1949 {
jmitc91516 0:9140ec6aa604 1950 if (CharCnt > 0)
jmitc91516 0:9140ec6aa604 1951 {
jmitc91516 0:9140ec6aa604 1952 if ((Transparent == 0) && (sgl.CurItem.TextPar[TextNdx].BackBoxSizeX == 0))
jmitc91516 0:9140ec6aa604 1953 {
jmitc91516 0:9140ec6aa604 1954 SetBackColorBox(X1, Y1, X2, Y2, TextNdx);
jmitc91516 0:9140ec6aa604 1955 GuiLib_FillBox(sgl.BbX1, sgl.BbY1, sgl.BbX2, sgl.BbY2, BackColor);
jmitc91516 0:9140ec6aa604 1956 }
jmitc91516 0:9140ec6aa604 1957
jmitc91516 0:9140ec6aa604 1958 for (P = 0; P < CharCnt; P++)
jmitc91516 0:9140ec6aa604 1959 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 1960 DrawChar(X1 + TextXOfs[P], Y1, sgl.CurFont, sgl.TextCharNdx[P], ForeColor, (Transparent == 2));
jmitc91516 0:9140ec6aa604 1961 #else
jmitc91516 0:9140ec6aa604 1962 DrawChar(X1 + TextXOfs[P], Y1, sgl.CurFont, sgl.TextCharPtrAry[P], ForeColor, (Transparent == 2));
jmitc91516 0:9140ec6aa604 1963 #endif
jmitc91516 0:9140ec6aa604 1964 }
jmitc91516 0:9140ec6aa604 1965
jmitc91516 0:9140ec6aa604 1966 if ((sgl.CurItem.TextPar[TextNdx].BitFlags & GuiLib_BITFLAG_UNDERLINE) &&
jmitc91516 0:9140ec6aa604 1967 (CharCnt > 0))
jmitc91516 0:9140ec6aa604 1968 GuiLib_FillBox(X1, Y1 + ReadByte(sgl.CurFont->Underline1), X2,
jmitc91516 0:9140ec6aa604 1969 Y1 + ReadByte(sgl.CurFont->Underline2), ForeColor);
jmitc91516 0:9140ec6aa604 1970
jmitc91516 0:9140ec6aa604 1971 GuiLib_MarkDisplayBoxRepaint(X1, Y1, X2, Y2);
jmitc91516 0:9140ec6aa604 1972
jmitc91516 0:9140ec6aa604 1973 #ifdef GuiConst_BLINK_SUPPORT_ON
jmitc91516 0:9140ec6aa604 1974 #ifndef GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 1975 if ((sgl.CurItem.TextPar[TextNdx].BitFlags & GuiLib_BITFLAG_BLINKTEXTFIELD) &&
jmitc91516 0:9140ec6aa604 1976 (sgl.CurItem.BlinkFieldNo < GuiConst_BLINK_FIELDS_MAX))
jmitc91516 0:9140ec6aa604 1977 {
jmitc91516 0:9140ec6aa604 1978 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].InUse = 1;
jmitc91516 0:9140ec6aa604 1979 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].BlinkBoxInverted = 0;
jmitc91516 0:9140ec6aa604 1980 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].ItemType = sgl.CurItem.ItemType;
jmitc91516 0:9140ec6aa604 1981 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].CharCnt = CharCnt;
jmitc91516 0:9140ec6aa604 1982 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].TextPar = sgl.CurItem.TextPar[TextNdx];
jmitc91516 0:9140ec6aa604 1983 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].FormatFieldWidth =
jmitc91516 0:9140ec6aa604 1984 sgl.CurItem.FormatFieldWidth;
jmitc91516 0:9140ec6aa604 1985 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].FormatDecimals =
jmitc91516 0:9140ec6aa604 1986 sgl.CurItem.FormatDecimals;
jmitc91516 0:9140ec6aa604 1987 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].FormatAlignment =
jmitc91516 0:9140ec6aa604 1988 sgl.CurItem.FormatAlignment;
jmitc91516 0:9140ec6aa604 1989 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].FormatFormat = sgl.CurItem.FormatFormat;
jmitc91516 0:9140ec6aa604 1990 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].VarType = sgl.CurItem.VarType;
jmitc91516 0:9140ec6aa604 1991 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].XSize =
jmitc91516 0:9140ec6aa604 1992 ReadByte(sgl.CurFont->XSize);
jmitc91516 0:9140ec6aa604 1993 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].PsNumWidth =
jmitc91516 0:9140ec6aa604 1994 ReadByte(sgl.CurFont->PsNumWidth);
jmitc91516 0:9140ec6aa604 1995 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].PsSpace =
jmitc91516 0:9140ec6aa604 1996 ReadByte(sgl.CurFont->PsSpace);
jmitc91516 0:9140ec6aa604 1997 if (sgl.CurItem.ItemType == GuiLib_ITEM_TEXT)
jmitc91516 0:9140ec6aa604 1998 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].TextPtr =
jmitc91516 0:9140ec6aa604 1999 sgl.CurItem.TextPtr[TextNdx];
jmitc91516 0:9140ec6aa604 2000 else
jmitc91516 0:9140ec6aa604 2001 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].TextPtr =
jmitc91516 0:9140ec6aa604 2002 (GuiConst_TEXT*)sgl.CurItem.VarPtr;
jmitc91516 0:9140ec6aa604 2003 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].X1 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 2004 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].X2 = sgl.CurItem.X2;
jmitc91516 0:9140ec6aa604 2005 if (sgl.CurItem.TextPar[TextNdx].BackBoxSizeX > 0)
jmitc91516 0:9140ec6aa604 2006 {
jmitc91516 0:9140ec6aa604 2007 if (sgl.CurItem.TextPar[TextNdx].BackBoxSizeY1 > 0)
jmitc91516 0:9140ec6aa604 2008 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].Y1 =
jmitc91516 0:9140ec6aa604 2009 sgl.CurItem.Y1 - sgl.CurItem.TextPar[TextNdx].BackBoxSizeY1;
jmitc91516 0:9140ec6aa604 2010 else
jmitc91516 0:9140ec6aa604 2011 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].Y1 =
jmitc91516 0:9140ec6aa604 2012 sgl.CurItem.Y1 - ReadByte(sgl.CurFont->BaseLine);
jmitc91516 0:9140ec6aa604 2013 if (sgl.CurItem.TextPar[TextNdx].BackBoxSizeY1 > 0)
jmitc91516 0:9140ec6aa604 2014 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].Y2 =
jmitc91516 0:9140ec6aa604 2015 sgl.CurItem.Y1 + sgl.CurItem.TextPar[TextNdx].BackBoxSizeY2;
jmitc91516 0:9140ec6aa604 2016 else
jmitc91516 0:9140ec6aa604 2017 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].Y2 =
jmitc91516 0:9140ec6aa604 2018 sgl.CurItem.Y1 - ReadByte(sgl.CurFont->BaseLine) +
jmitc91516 0:9140ec6aa604 2019 ReadByte(sgl.CurFont->YSize) - 1;
jmitc91516 0:9140ec6aa604 2020 }
jmitc91516 0:9140ec6aa604 2021 else
jmitc91516 0:9140ec6aa604 2022 {
jmitc91516 0:9140ec6aa604 2023 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].Y1 = Y1;
jmitc91516 0:9140ec6aa604 2024 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].Y2 = Y2;
jmitc91516 0:9140ec6aa604 2025 }
jmitc91516 0:9140ec6aa604 2026 }
jmitc91516 0:9140ec6aa604 2027 #endif
jmitc91516 0:9140ec6aa604 2028 #endif
jmitc91516 0:9140ec6aa604 2029 }
jmitc91516 0:9140ec6aa604 2030 }
jmitc91516 0:9140ec6aa604 2031
jmitc91516 0:9140ec6aa604 2032 #ifdef GuiConst_ITEM_TEXTBLOCK_INUSE
jmitc91516 0:9140ec6aa604 2033
jmitc91516 0:9140ec6aa604 2034 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2035 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 2036 #ifdef GuiConst_ICC_COMPILER
jmitc91516 0:9140ec6aa604 2037 #define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 2038 DrawTextBlock((GuiConst_TEXT *)ChPtr, \
jmitc91516 0:9140ec6aa604 2039 ChCnt, \
jmitc91516 0:9140ec6aa604 2040 TxtNdx, \
jmitc91516 0:9140ec6aa604 2041 FColor, \
jmitc91516 0:9140ec6aa604 2042 BColor, \
jmitc91516 0:9140ec6aa604 2043 Transparent);
jmitc91516 0:9140ec6aa604 2044 #else
jmitc91516 0:9140ec6aa604 2045 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 2046 #define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 2047 DrawTextBlock((GuiConst_TEXT *)ChPtr, \
jmitc91516 0:9140ec6aa604 2048 ChCnt, \
jmitc91516 0:9140ec6aa604 2049 TxtNdx, \
jmitc91516 0:9140ec6aa604 2050 FColor, \
jmitc91516 0:9140ec6aa604 2051 BColor, \
jmitc91516 0:9140ec6aa604 2052 Transparent);
jmitc91516 0:9140ec6aa604 2053 #else
jmitc91516 0:9140ec6aa604 2054 #ifdef GuiConst_RENESAS_COMPILER_FAR
jmitc91516 0:9140ec6aa604 2055 #define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 2056 DrawTextBlock((GuiConst_TEXT PrefixLocate *)ChPtr, \
jmitc91516 0:9140ec6aa604 2057 ChCnt, \
jmitc91516 0:9140ec6aa604 2058 TxtNdx, \
jmitc91516 0:9140ec6aa604 2059 FColor, \
jmitc91516 0:9140ec6aa604 2060 BColor, \
jmitc91516 0:9140ec6aa604 2061 Transparent);
jmitc91516 0:9140ec6aa604 2062 #else
jmitc91516 0:9140ec6aa604 2063 #define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 2064 DrawTextBlock((GuiConst_TEXT PrefixRom *)ChPtr, \
jmitc91516 0:9140ec6aa604 2065 ChCnt, \
jmitc91516 0:9140ec6aa604 2066 TxtNdx, \
jmitc91516 0:9140ec6aa604 2067 FColor, \
jmitc91516 0:9140ec6aa604 2068 BColor, \
jmitc91516 0:9140ec6aa604 2069 Transparent);
jmitc91516 0:9140ec6aa604 2070 #endif
jmitc91516 0:9140ec6aa604 2071 #endif
jmitc91516 0:9140ec6aa604 2072 #endif
jmitc91516 0:9140ec6aa604 2073 #else
jmitc91516 0:9140ec6aa604 2074 #ifdef GuiConst_ICC_COMPILER
jmitc91516 0:9140ec6aa604 2075 #define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 2076 ExtractUnicodeString((GuiConst_INT8U *)ChPtr, ChCnt); \
jmitc91516 0:9140ec6aa604 2077 DrawTextBlock((GuiConst_TEXT *)&sgl.UnicodeTextBuf, \
jmitc91516 0:9140ec6aa604 2078 ChCnt, \
jmitc91516 0:9140ec6aa604 2079 TxtNdx, \
jmitc91516 0:9140ec6aa604 2080 FColor, \
jmitc91516 0:9140ec6aa604 2081 BColor, \
jmitc91516 0:9140ec6aa604 2082 Transparent);
jmitc91516 0:9140ec6aa604 2083 #else
jmitc91516 0:9140ec6aa604 2084 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 2085 #define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 2086 ExtractUnicodeString((GuiConst_INT8U *)ChPtr, ChCnt); \
jmitc91516 0:9140ec6aa604 2087 DrawTextBlock((GuiConst_TEXT *)sgl.UnicodeTextBuf, \
jmitc91516 0:9140ec6aa604 2088 ChCnt, \
jmitc91516 0:9140ec6aa604 2089 TxtNdx, \
jmitc91516 0:9140ec6aa604 2090 FColor, \
jmitc91516 0:9140ec6aa604 2091 BColor, \
jmitc91516 0:9140ec6aa604 2092 Transparent);
jmitc91516 0:9140ec6aa604 2093 #else
jmitc91516 0:9140ec6aa604 2094 #ifdef GuiConst_RENESAS_COMPILER_FAR
jmitc91516 0:9140ec6aa604 2095 #define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 2096 ExtractUnicodeString((GuiConst_INT8U PrefixLocate *)ChPtr, ChCnt); \
jmitc91516 0:9140ec6aa604 2097 DrawTextBlock((GuiConst_TEXT PrefixLocate *)sgl.UnicodeTextBuf, \
jmitc91516 0:9140ec6aa604 2098 ChCnt, \
jmitc91516 0:9140ec6aa604 2099 TxtNdx, \
jmitc91516 0:9140ec6aa604 2100 FColor, \
jmitc91516 0:9140ec6aa604 2101 BColor, \
jmitc91516 0:9140ec6aa604 2102 Transparent);
jmitc91516 0:9140ec6aa604 2103 #else
jmitc91516 0:9140ec6aa604 2104 #define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \
jmitc91516 0:9140ec6aa604 2105 ExtractUnicodeString((GuiConst_INT8U PrefixRom *)ChPtr, ChCnt); \
jmitc91516 0:9140ec6aa604 2106 DrawTextBlock((GuiConst_TEXT *)&sgl.UnicodeTextBuf, \
jmitc91516 0:9140ec6aa604 2107 ChCnt, \
jmitc91516 0:9140ec6aa604 2108 TxtNdx, \
jmitc91516 0:9140ec6aa604 2109 FColor, \
jmitc91516 0:9140ec6aa604 2110 BColor, \
jmitc91516 0:9140ec6aa604 2111 Transparent);
jmitc91516 0:9140ec6aa604 2112 #endif
jmitc91516 0:9140ec6aa604 2113 #endif
jmitc91516 0:9140ec6aa604 2114 #endif
jmitc91516 0:9140ec6aa604 2115 #endif
jmitc91516 0:9140ec6aa604 2116
jmitc91516 0:9140ec6aa604 2117 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2118 static void DrawTextBlock(
jmitc91516 0:9140ec6aa604 2119 GuiConst_TEXT PrefixGeneric *CharPtr,
jmitc91516 0:9140ec6aa604 2120 GuiConst_INT16U CharCnt,
jmitc91516 0:9140ec6aa604 2121 GuiConst_INT8U TextNdx,
jmitc91516 0:9140ec6aa604 2122 GuiConst_INTCOLOR ForeColor,
jmitc91516 0:9140ec6aa604 2123 GuiConst_INTCOLOR BackColor,
jmitc91516 0:9140ec6aa604 2124 GuiConst_INT8U Transparent)
jmitc91516 0:9140ec6aa604 2125 {
jmitc91516 0:9140ec6aa604 2126 GuiConst_INT16S X1, Y1, X2, Y2;
jmitc91516 0:9140ec6aa604 2127 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2128 GuiConst_INT16S CX1, CX2;
jmitc91516 0:9140ec6aa604 2129 #endif
jmitc91516 0:9140ec6aa604 2130 GuiConst_INT16S CY1, CY2;
jmitc91516 0:9140ec6aa604 2131 GuiConst_INT16S TextXOfs[GuiConst_MAX_TEXT_LEN + 2];
jmitc91516 0:9140ec6aa604 2132 GuiConst_INT16S TextCharLineStart[GuiConst_MAX_PARAGRAPH_LINE_CNT + 1];
jmitc91516 0:9140ec6aa604 2133 GuiConst_INT16S TextCharLineEnd[GuiConst_MAX_PARAGRAPH_LINE_CNT + 1];
jmitc91516 0:9140ec6aa604 2134 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2135 GuiConst_INT16S RemClipX1, RemClipY1, RemClipX2, RemClipY2;
jmitc91516 0:9140ec6aa604 2136 #endif
jmitc91516 0:9140ec6aa604 2137 #ifdef GuiConst_BLINK_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2138 #ifndef GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 2139 GuiConst_INT16S BlinkNo;
jmitc91516 0:9140ec6aa604 2140 #endif
jmitc91516 0:9140ec6aa604 2141 #endif
jmitc91516 0:9140ec6aa604 2142 GuiConst_INT16S PixWidth;
jmitc91516 0:9140ec6aa604 2143 GuiConst_INT16S N, P, M, F;
jmitc91516 0:9140ec6aa604 2144 GuiConst_INT16S LineLen;
jmitc91516 0:9140ec6aa604 2145 GuiConst_INT16S LineCnt;
jmitc91516 0:9140ec6aa604 2146 GuiConst_INT16S LineCnt2;
jmitc91516 0:9140ec6aa604 2147 GuiConst_INT16S BlindLinesAtTop;
jmitc91516 0:9140ec6aa604 2148 GuiConst_INT16S XPos, YPos;
jmitc91516 0:9140ec6aa604 2149 GuiConst_INT16S XStart, XEnd;
jmitc91516 0:9140ec6aa604 2150 GuiConst_INT8U TempPsMode;
jmitc91516 0:9140ec6aa604 2151 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 2152 GuiConst_INT32U PrefixRom TempOfs;
jmitc91516 0:9140ec6aa604 2153 GuiConst_INT8U CharHeader1[GuiLib_CHR_LINECTRL_OFS];
jmitc91516 0:9140ec6aa604 2154 GuiConst_INT8U CharHeader2[GuiLib_CHR_LINECTRL_OFS];
jmitc91516 0:9140ec6aa604 2155 #else
jmitc91516 0:9140ec6aa604 2156 GuiConst_INT8U PrefixRom * TempPtr;
jmitc91516 0:9140ec6aa604 2157 #endif
jmitc91516 0:9140ec6aa604 2158
jmitc91516 0:9140ec6aa604 2159 X1 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 2160 Y1 = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 2161 X2 = sgl.CurItem.X2;
jmitc91516 0:9140ec6aa604 2162 Y2 = sgl.CurItem.Y2;
jmitc91516 0:9140ec6aa604 2163 sgl.FontWriteX1 = X1;
jmitc91516 0:9140ec6aa604 2164 sgl.FontWriteY1 = Y1;
jmitc91516 0:9140ec6aa604 2165 sgl.FontWriteX2 = X2;
jmitc91516 0:9140ec6aa604 2166 sgl.FontWriteY2 = Y2;
jmitc91516 0:9140ec6aa604 2167
jmitc91516 0:9140ec6aa604 2168 PixWidth = 0;
jmitc91516 0:9140ec6aa604 2169
jmitc91516 0:9140ec6aa604 2170 if (sgl.DisplayWriting)
jmitc91516 0:9140ec6aa604 2171 {
jmitc91516 0:9140ec6aa604 2172 if (!Transparent && (sgl.CurItem.TextPar[TextNdx].BackBoxSizeX == 0))
jmitc91516 0:9140ec6aa604 2173 {
jmitc91516 0:9140ec6aa604 2174 SetBackColorBox(X1, Y1, X2, Y2, TextNdx);
jmitc91516 0:9140ec6aa604 2175 GuiLib_FillBox(sgl.BbX1, sgl.BbY1, sgl.BbX2, sgl.BbY2, BackColor);
jmitc91516 0:9140ec6aa604 2176 }
jmitc91516 0:9140ec6aa604 2177
jmitc91516 0:9140ec6aa604 2178 if (sgl.CurItem.CompPars.CompTextBox.LineDistRelToFont)
jmitc91516 0:9140ec6aa604 2179 {
jmitc91516 0:9140ec6aa604 2180 sgl.CurItem.CompPars.CompTextBox.LineDist +=sgl.CurFont->YSize;
jmitc91516 0:9140ec6aa604 2181 sgl.CurItem.CompPars.CompTextBox.LineDistRelToFont = 0;
jmitc91516 0:9140ec6aa604 2182 }
jmitc91516 0:9140ec6aa604 2183
jmitc91516 0:9140ec6aa604 2184 LineCnt = 0;
jmitc91516 0:9140ec6aa604 2185 #ifdef GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 2186 sgl.CurItem.CompPars.CompTextBox.Lines = 1;
jmitc91516 0:9140ec6aa604 2187 #endif
jmitc91516 0:9140ec6aa604 2188 if (CharCnt > 0)
jmitc91516 0:9140ec6aa604 2189 {
jmitc91516 0:9140ec6aa604 2190 PixWidth = X2 - X1 + 1;
jmitc91516 0:9140ec6aa604 2191
jmitc91516 0:9140ec6aa604 2192 #ifdef GuiConst_ARAB_CHARS_INUSE
jmitc91516 0:9140ec6aa604 2193 CharCnt =
jmitc91516 0:9140ec6aa604 2194 ArabicCorrection(CharPtr,
jmitc91516 0:9140ec6aa604 2195 CharCnt,
jmitc91516 0:9140ec6aa604 2196 (sgl.CurItem.TextPar[TextNdx].BitFlags &
jmitc91516 0:9140ec6aa604 2197 GuiLib_BITFLAG_REVERSEWRITING) > 0);
jmitc91516 0:9140ec6aa604 2198 #endif
jmitc91516 0:9140ec6aa604 2199 PrepareText(CharPtr, CharCnt, TextNdx);
jmitc91516 0:9140ec6aa604 2200 TextPixelLength(sgl.CurItem.TextPar[TextNdx].Ps,
jmitc91516 0:9140ec6aa604 2201 CharCnt,
jmitc91516 0:9140ec6aa604 2202 TextXOfs);
jmitc91516 0:9140ec6aa604 2203
jmitc91516 0:9140ec6aa604 2204 TextCharLineStart[0] = 0;
jmitc91516 0:9140ec6aa604 2205 TextCharLineEnd[0] = -1;
jmitc91516 0:9140ec6aa604 2206 #ifdef GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 2207 if (sgl.CurItem.CompPars.CompTextBox.ScrollIndex == 0xFF)
jmitc91516 0:9140ec6aa604 2208 BlindLinesAtTop = 0;
jmitc91516 0:9140ec6aa604 2209 else
jmitc91516 0:9140ec6aa604 2210 BlindLinesAtTop = sgl.CurItem.CompPars.CompTextBox.ScrollPos /
jmitc91516 0:9140ec6aa604 2211 sgl.CurItem.CompPars.CompTextBox.LineDist;
jmitc91516 0:9140ec6aa604 2212 #else
jmitc91516 0:9140ec6aa604 2213 BlindLinesAtTop = 0;
jmitc91516 0:9140ec6aa604 2214 #endif
jmitc91516 0:9140ec6aa604 2215 LineCnt = 1 - BlindLinesAtTop;
jmitc91516 0:9140ec6aa604 2216 if (LineCnt >= 1)
jmitc91516 0:9140ec6aa604 2217 LineCnt = 1;
jmitc91516 0:9140ec6aa604 2218 LineCnt2 = 1;
jmitc91516 0:9140ec6aa604 2219 P = 0;
jmitc91516 0:9140ec6aa604 2220 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 2221 GuiLib_RemoteDataReadBlock(
jmitc91516 0:9140ec6aa604 2222 (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[
jmitc91516 0:9140ec6aa604 2223 sgl.TextCharNdx[TextCharLineStart[LineCnt2 - 1]]],
jmitc91516 0:9140ec6aa604 2224 GuiLib_CHR_LINECTRL_OFS,
jmitc91516 0:9140ec6aa604 2225 CharHeader2);
jmitc91516 0:9140ec6aa604 2226 #endif
jmitc91516 0:9140ec6aa604 2227 while (P < CharCnt)
jmitc91516 0:9140ec6aa604 2228 {
jmitc91516 0:9140ec6aa604 2229 while ((P < CharCnt - 1) &&
jmitc91516 0:9140ec6aa604 2230 !((ReadBytePtr(CharPtr + P) == GuiLib_LINEFEED) ||
jmitc91516 0:9140ec6aa604 2231 ((ReadBytePtr(CharPtr + P) != ' ') &&
jmitc91516 0:9140ec6aa604 2232 (ReadBytePtr(CharPtr + P + 1) == ' ')) ||
jmitc91516 0:9140ec6aa604 2233 ((ReadBytePtr(CharPtr + P) == '-') &&
jmitc91516 0:9140ec6aa604 2234 (ReadBytePtr(CharPtr + P + 1) != ' '))))
jmitc91516 0:9140ec6aa604 2235 P++;
jmitc91516 0:9140ec6aa604 2236
jmitc91516 0:9140ec6aa604 2237 F = 0;
jmitc91516 0:9140ec6aa604 2238
jmitc91516 0:9140ec6aa604 2239 if (CalcCharsWidth(TextCharLineStart[LineCnt2 - 1], P,
jmitc91516 0:9140ec6aa604 2240 TextXOfs, &XStart, &XEnd) > PixWidth)
jmitc91516 0:9140ec6aa604 2241 {
jmitc91516 0:9140ec6aa604 2242 if (TextCharLineEnd[LineCnt2 - 1] == -1)
jmitc91516 0:9140ec6aa604 2243 {
jmitc91516 0:9140ec6aa604 2244 if (ReadBytePtr(CharPtr + P) == GuiLib_LINEFEED)
jmitc91516 0:9140ec6aa604 2245 {
jmitc91516 0:9140ec6aa604 2246 TextCharLineEnd[LineCnt2 - 1] = P - 1;
jmitc91516 0:9140ec6aa604 2247 F = 1;
jmitc91516 0:9140ec6aa604 2248 }
jmitc91516 0:9140ec6aa604 2249 else
jmitc91516 0:9140ec6aa604 2250 TextCharLineEnd[LineCnt2 - 1] = P;
jmitc91516 0:9140ec6aa604 2251
jmitc91516 0:9140ec6aa604 2252 TextCharLineStart[LineCnt2] = P + 1;
jmitc91516 0:9140ec6aa604 2253 TextCharLineEnd[LineCnt2] = -1;
jmitc91516 0:9140ec6aa604 2254 }
jmitc91516 0:9140ec6aa604 2255 else
jmitc91516 0:9140ec6aa604 2256 {
jmitc91516 0:9140ec6aa604 2257 TextCharLineStart[LineCnt2] = TextCharLineEnd[LineCnt2 - 1] + 1;
jmitc91516 0:9140ec6aa604 2258 while ((TextCharLineStart[LineCnt2] < P) &&
jmitc91516 0:9140ec6aa604 2259 (ReadBytePtr(CharPtr + TextCharLineStart[LineCnt2]) == ' '))
jmitc91516 0:9140ec6aa604 2260 TextCharLineStart[LineCnt2]++;
jmitc91516 0:9140ec6aa604 2261 TextCharLineEnd[LineCnt2] = P;
jmitc91516 0:9140ec6aa604 2262 }
jmitc91516 0:9140ec6aa604 2263 if (LineCnt >= GuiConst_MAX_PARAGRAPH_LINE_CNT)
jmitc91516 0:9140ec6aa604 2264 {
jmitc91516 0:9140ec6aa604 2265 P = CharCnt;
jmitc91516 0:9140ec6aa604 2266 break;
jmitc91516 0:9140ec6aa604 2267 }
jmitc91516 0:9140ec6aa604 2268 LineCnt++;
jmitc91516 0:9140ec6aa604 2269 if (LineCnt > 1)
jmitc91516 0:9140ec6aa604 2270 LineCnt2 = LineCnt;
jmitc91516 0:9140ec6aa604 2271 else
jmitc91516 0:9140ec6aa604 2272 {
jmitc91516 0:9140ec6aa604 2273 TextCharLineStart[LineCnt2 - 1] = TextCharLineStart[LineCnt2];
jmitc91516 0:9140ec6aa604 2274 TextCharLineEnd[LineCnt2 - 1] = TextCharLineEnd[LineCnt2];
jmitc91516 0:9140ec6aa604 2275 }
jmitc91516 0:9140ec6aa604 2276 #ifdef GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 2277 sgl.CurItem.CompPars.CompTextBox.Lines++;
jmitc91516 0:9140ec6aa604 2278 #endif
jmitc91516 0:9140ec6aa604 2279 }
jmitc91516 0:9140ec6aa604 2280 else
jmitc91516 0:9140ec6aa604 2281 TextCharLineEnd[LineCnt2 - 1] = P;
jmitc91516 0:9140ec6aa604 2282
jmitc91516 0:9140ec6aa604 2283 if ((ReadBytePtr(CharPtr + P) == GuiLib_LINEFEED) &&
jmitc91516 0:9140ec6aa604 2284 (F == 0))
jmitc91516 0:9140ec6aa604 2285 {
jmitc91516 0:9140ec6aa604 2286 TextCharLineEnd[LineCnt2 - 1] = P - 1;
jmitc91516 0:9140ec6aa604 2287 TextCharLineStart[LineCnt2] = P + 1;
jmitc91516 0:9140ec6aa604 2288 TextCharLineEnd[LineCnt2] = -1;
jmitc91516 0:9140ec6aa604 2289
jmitc91516 0:9140ec6aa604 2290 if (LineCnt >= GuiConst_MAX_PARAGRAPH_LINE_CNT)
jmitc91516 0:9140ec6aa604 2291 {
jmitc91516 0:9140ec6aa604 2292 P = CharCnt;
jmitc91516 0:9140ec6aa604 2293 break;
jmitc91516 0:9140ec6aa604 2294 }
jmitc91516 0:9140ec6aa604 2295 LineCnt++;
jmitc91516 0:9140ec6aa604 2296 if (LineCnt > 1)
jmitc91516 0:9140ec6aa604 2297 LineCnt2 = LineCnt;
jmitc91516 0:9140ec6aa604 2298 else
jmitc91516 0:9140ec6aa604 2299 {
jmitc91516 0:9140ec6aa604 2300 TextCharLineStart[LineCnt2 - 1] = TextCharLineStart[LineCnt2];
jmitc91516 0:9140ec6aa604 2301 TextCharLineEnd[LineCnt2 - 1] = TextCharLineEnd[LineCnt2];
jmitc91516 0:9140ec6aa604 2302 }
jmitc91516 0:9140ec6aa604 2303 #ifdef GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 2304 sgl.CurItem.CompPars.CompTextBox.Lines++;
jmitc91516 0:9140ec6aa604 2305 #endif
jmitc91516 0:9140ec6aa604 2306 }
jmitc91516 0:9140ec6aa604 2307
jmitc91516 0:9140ec6aa604 2308 P++;
jmitc91516 0:9140ec6aa604 2309 }
jmitc91516 0:9140ec6aa604 2310 }
jmitc91516 0:9140ec6aa604 2311
jmitc91516 0:9140ec6aa604 2312 if (LineCnt >= 1)
jmitc91516 0:9140ec6aa604 2313 {
jmitc91516 0:9140ec6aa604 2314 if (sgl.CurItem.TextPar[TextNdx].BitFlags & GuiLib_BITFLAG_REVERSEWRITING)
jmitc91516 0:9140ec6aa604 2315 {
jmitc91516 0:9140ec6aa604 2316 for (M = 0; M < LineCnt ; M++)
jmitc91516 0:9140ec6aa604 2317 {
jmitc91516 0:9140ec6aa604 2318 for (P = TextCharLineStart[M]; P <= (TextCharLineStart[M] +
jmitc91516 0:9140ec6aa604 2319 ((TextCharLineEnd[M] - TextCharLineStart[M] + 1) / 2) - 1); P++)
jmitc91516 0:9140ec6aa604 2320 {
jmitc91516 0:9140ec6aa604 2321 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 2322 TempOfs = sgl.TextCharNdx[P];
jmitc91516 0:9140ec6aa604 2323 sgl.TextCharNdx[P] =
jmitc91516 0:9140ec6aa604 2324 sgl.TextCharNdx[TextCharLineEnd[M] - (P - TextCharLineStart[M])];
jmitc91516 0:9140ec6aa604 2325 sgl.TextCharNdx[TextCharLineEnd[M] - (P - TextCharLineStart[M])] =
jmitc91516 0:9140ec6aa604 2326 TempOfs;
jmitc91516 0:9140ec6aa604 2327 #else
jmitc91516 0:9140ec6aa604 2328 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 2329 TempPtr = &sgl.TextCharPtrAry[P];
jmitc91516 0:9140ec6aa604 2330 #else
jmitc91516 0:9140ec6aa604 2331 TempPtr = sgl.TextCharPtrAry[P];
jmitc91516 0:9140ec6aa604 2332 #endif
jmitc91516 0:9140ec6aa604 2333 sgl.TextCharPtrAry[P] = (GuiConst_INT8U PrefixRom *)
jmitc91516 0:9140ec6aa604 2334 sgl.TextCharPtrAry[TextCharLineEnd[M] - (P - TextCharLineStart[M])];
jmitc91516 0:9140ec6aa604 2335 sgl.TextCharPtrAry[TextCharLineEnd[M] - (P - TextCharLineStart[M])] =
jmitc91516 0:9140ec6aa604 2336 (GuiConst_INT8U PrefixRom *)TempPtr;
jmitc91516 0:9140ec6aa604 2337 #endif
jmitc91516 0:9140ec6aa604 2338 TempPsMode = sgl.TextPsMode[P];
jmitc91516 0:9140ec6aa604 2339 sgl.TextPsMode[P] =
jmitc91516 0:9140ec6aa604 2340 sgl.TextPsMode[TextCharLineEnd[M] - (P - TextCharLineStart[M])];
jmitc91516 0:9140ec6aa604 2341 sgl.TextPsMode[TextCharLineEnd[M] - (P - TextCharLineStart[M])] =
jmitc91516 0:9140ec6aa604 2342 TempPsMode;
jmitc91516 0:9140ec6aa604 2343 }
jmitc91516 0:9140ec6aa604 2344 }
jmitc91516 0:9140ec6aa604 2345 TextPixelLength(sgl.CurItem.TextPar[TextNdx].Ps,
jmitc91516 0:9140ec6aa604 2346 CharCnt,
jmitc91516 0:9140ec6aa604 2347 TextXOfs);
jmitc91516 0:9140ec6aa604 2348 }
jmitc91516 0:9140ec6aa604 2349
jmitc91516 0:9140ec6aa604 2350 CY1 = Y1;
jmitc91516 0:9140ec6aa604 2351 CY2 = Y2;
jmitc91516 0:9140ec6aa604 2352 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2353 CX1 = X1;
jmitc91516 0:9140ec6aa604 2354 CX2 = X2;
jmitc91516 0:9140ec6aa604 2355 RemClipX1 = sgl.CurItem.ClipRectX1;
jmitc91516 0:9140ec6aa604 2356 RemClipY1 = sgl.CurItem.ClipRectY1;
jmitc91516 0:9140ec6aa604 2357 RemClipX2 = sgl.CurItem.ClipRectX2;
jmitc91516 0:9140ec6aa604 2358 RemClipY2 = sgl.CurItem.ClipRectY2;
jmitc91516 0:9140ec6aa604 2359 if (RemClipX1 > CX1)
jmitc91516 0:9140ec6aa604 2360 CX1 = RemClipX1;
jmitc91516 0:9140ec6aa604 2361 if (RemClipY1 > CY1)
jmitc91516 0:9140ec6aa604 2362 CY1 = RemClipY1;
jmitc91516 0:9140ec6aa604 2363 if (RemClipX2 < CX2)
jmitc91516 0:9140ec6aa604 2364 CX2 = RemClipX2;
jmitc91516 0:9140ec6aa604 2365 if (RemClipY2 < CY2)
jmitc91516 0:9140ec6aa604 2366 CY2 = RemClipY2;
jmitc91516 0:9140ec6aa604 2367 GuiLib_SetClipping(CX1, CY1, CX2, CY2);
jmitc91516 0:9140ec6aa604 2368 #endif
jmitc91516 0:9140ec6aa604 2369
jmitc91516 0:9140ec6aa604 2370 #ifdef GuiConst_BLINK_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2371 #ifndef GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 2372 if ((sgl.CurItem.TextPar[TextNdx].BitFlags & GuiLib_BITFLAG_BLINKTEXTFIELD) &&
jmitc91516 0:9140ec6aa604 2373 (sgl.CurItem.BlinkFieldNo < GuiConst_BLINK_FIELDS_MAX))
jmitc91516 0:9140ec6aa604 2374 {
jmitc91516 0:9140ec6aa604 2375 BlinkNo = sgl.CurItem.BlinkFieldNo;
jmitc91516 0:9140ec6aa604 2376 sgl.BlinkTextItems[BlinkNo].InUse = 1;
jmitc91516 0:9140ec6aa604 2377 sgl.BlinkTextItems[BlinkNo].ItemType = sgl.CurItem.ItemType;
jmitc91516 0:9140ec6aa604 2378 sgl.BlinkTextItems[BlinkNo].VarType = sgl.CurItem.VarType;
jmitc91516 0:9140ec6aa604 2379 sgl.BlinkTextItems[BlinkNo].CharCnt = CharCnt;
jmitc91516 0:9140ec6aa604 2380 sgl.BlinkTextItems[BlinkNo].TextPar = sgl.CurItem.TextPar[TextNdx];
jmitc91516 0:9140ec6aa604 2381 sgl.BlinkTextItems[BlinkNo].XSize = sgl.CurFont->XSize;
jmitc91516 0:9140ec6aa604 2382 sgl.BlinkTextItems[BlinkNo].YSize = sgl.CurFont->YSize;
jmitc91516 0:9140ec6aa604 2383 sgl.BlinkTextItems[BlinkNo].PsNumWidth = sgl.CurFont->PsNumWidth;
jmitc91516 0:9140ec6aa604 2384 sgl.BlinkTextItems[BlinkNo].PsSpace = sgl.CurFont->PsSpace;
jmitc91516 0:9140ec6aa604 2385 if (sgl.CurItem.ItemType == GuiLib_ITEM_TEXTBLOCK)
jmitc91516 0:9140ec6aa604 2386 sgl.BlinkTextItems[BlinkNo].TextPtr = sgl.CurItem.TextPtr[TextNdx];
jmitc91516 0:9140ec6aa604 2387 else
jmitc91516 0:9140ec6aa604 2388 sgl.BlinkTextItems[BlinkNo].TextPtr = (GuiConst_TEXT*)sgl.CurItem.VarPtr;
jmitc91516 0:9140ec6aa604 2389 sgl.BlinkTextItems[BlinkNo].X1 = X1;
jmitc91516 0:9140ec6aa604 2390 sgl.BlinkTextItems[BlinkNo].X2 = X2;
jmitc91516 0:9140ec6aa604 2391 sgl.BlinkTextItems[BlinkNo].Y1 = Y1;
jmitc91516 0:9140ec6aa604 2392 sgl.BlinkTextItems[BlinkNo].Y2 = Y2;
jmitc91516 0:9140ec6aa604 2393 sgl.BlinkTextItems[BlinkNo].LineCnt = LineCnt;
jmitc91516 0:9140ec6aa604 2394 sgl.BlinkTextItems[BlinkNo].TextBoxLineDist =
jmitc91516 0:9140ec6aa604 2395 sgl.CurItem.CompPars.CompTextBox.LineDist;
jmitc91516 0:9140ec6aa604 2396 sgl.BlinkTextItems[BlinkNo].BlindLinesAtTop = BlindLinesAtTop;
jmitc91516 0:9140ec6aa604 2397 sgl.BlinkTextItems[BlinkNo].FormatFieldWidth = sgl.CurItem.FormatFieldWidth;
jmitc91516 0:9140ec6aa604 2398 sgl.BlinkTextItems[BlinkNo].FormatDecimals = sgl.CurItem.FormatDecimals;
jmitc91516 0:9140ec6aa604 2399 sgl.BlinkTextItems[BlinkNo].FormatAlignment = sgl.CurItem.FormatAlignment;
jmitc91516 0:9140ec6aa604 2400 sgl.BlinkTextItems[BlinkNo].FormatFormat = sgl.CurItem.FormatFormat;
jmitc91516 0:9140ec6aa604 2401 sgl.BlinkTextItems[BlinkNo].TextBoxHorzAlignment =
jmitc91516 0:9140ec6aa604 2402 sgl.CurItem.CompPars.CompTextBox.HorzAlignment;
jmitc91516 0:9140ec6aa604 2403 sgl.BlinkTextItems[BlinkNo].TextBoxVertAlignment =
jmitc91516 0:9140ec6aa604 2404 sgl.CurItem.CompPars.CompTextBox.VertAlignment;
jmitc91516 0:9140ec6aa604 2405 #ifdef GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 2406 sgl.BlinkTextItems[BlinkNo].TextBoxScrollPos =
jmitc91516 0:9140ec6aa604 2407 sgl.CurItem.CompPars.CompTextBox.ScrollPos;
jmitc91516 0:9140ec6aa604 2408 #endif
jmitc91516 0:9140ec6aa604 2409 }
jmitc91516 0:9140ec6aa604 2410 else
jmitc91516 0:9140ec6aa604 2411 BlinkNo = -1;
jmitc91516 0:9140ec6aa604 2412 #endif
jmitc91516 0:9140ec6aa604 2413 #endif
jmitc91516 0:9140ec6aa604 2414
jmitc91516 0:9140ec6aa604 2415 YPos = Y1;
jmitc91516 0:9140ec6aa604 2416 #ifdef GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 2417 if (BlindLinesAtTop < 0)
jmitc91516 0:9140ec6aa604 2418 BlindLinesAtTop = 0;
jmitc91516 0:9140ec6aa604 2419 YPos -= sgl.CurItem.CompPars.CompTextBox.ScrollPos -
jmitc91516 0:9140ec6aa604 2420 (sgl.CurItem.CompPars.CompTextBox.LineDist * BlindLinesAtTop);
jmitc91516 0:9140ec6aa604 2421 #endif
jmitc91516 0:9140ec6aa604 2422
jmitc91516 0:9140ec6aa604 2423 N = ReadByte(sgl.CurFont->YSize) +
jmitc91516 0:9140ec6aa604 2424 (LineCnt - 1) * sgl.CurItem.CompPars.CompTextBox.LineDist;
jmitc91516 0:9140ec6aa604 2425 switch (sgl.CurItem.CompPars.CompTextBox.VertAlignment)
jmitc91516 0:9140ec6aa604 2426 {
jmitc91516 0:9140ec6aa604 2427 case GuiLib_ALIGN_CENTER:
jmitc91516 0:9140ec6aa604 2428 YPos += (Y2 - Y1 + 1 - N) / 2;
jmitc91516 0:9140ec6aa604 2429 break;
jmitc91516 0:9140ec6aa604 2430
jmitc91516 0:9140ec6aa604 2431 case GuiLib_ALIGN_RIGHT:
jmitc91516 0:9140ec6aa604 2432 YPos += Y2 - Y1 + 1 - N;
jmitc91516 0:9140ec6aa604 2433 break;
jmitc91516 0:9140ec6aa604 2434 }
jmitc91516 0:9140ec6aa604 2435
jmitc91516 0:9140ec6aa604 2436 for (N = 0; N < LineCnt; N++)
jmitc91516 0:9140ec6aa604 2437 {
jmitc91516 0:9140ec6aa604 2438 if (TextCharLineEnd[N] >= TextCharLineStart[N])
jmitc91516 0:9140ec6aa604 2439 {
jmitc91516 0:9140ec6aa604 2440 XPos = X1;
jmitc91516 0:9140ec6aa604 2441
jmitc91516 0:9140ec6aa604 2442 LineLen = CalcCharsWidth(TextCharLineStart[N],
jmitc91516 0:9140ec6aa604 2443 TextCharLineEnd[N],
jmitc91516 0:9140ec6aa604 2444 TextXOfs,
jmitc91516 0:9140ec6aa604 2445 &XStart,
jmitc91516 0:9140ec6aa604 2446 &XEnd);
jmitc91516 0:9140ec6aa604 2447 switch (sgl.CurItem.CompPars.CompTextBox.HorzAlignment)
jmitc91516 0:9140ec6aa604 2448 {
jmitc91516 0:9140ec6aa604 2449 case GuiLib_ALIGN_CENTER:
jmitc91516 0:9140ec6aa604 2450 XPos += (PixWidth - LineLen) / 2;
jmitc91516 0:9140ec6aa604 2451 break;
jmitc91516 0:9140ec6aa604 2452
jmitc91516 0:9140ec6aa604 2453 case GuiLib_ALIGN_RIGHT:
jmitc91516 0:9140ec6aa604 2454 XPos += PixWidth - LineLen;
jmitc91516 0:9140ec6aa604 2455 break;
jmitc91516 0:9140ec6aa604 2456 }
jmitc91516 0:9140ec6aa604 2457
jmitc91516 0:9140ec6aa604 2458 if (sgl.CurItem.TextPar[TextNdx].BitFlags & GuiLib_BITFLAG_UNDERLINE)
jmitc91516 0:9140ec6aa604 2459 GuiLib_FillBox(XPos, YPos + ReadByte(sgl.CurFont->Underline1),
jmitc91516 0:9140ec6aa604 2460 XPos + LineLen - 1, YPos + ReadByte(sgl.CurFont->Underline2),
jmitc91516 0:9140ec6aa604 2461 ForeColor);
jmitc91516 0:9140ec6aa604 2462
jmitc91516 0:9140ec6aa604 2463 XPos -= XStart;
jmitc91516 0:9140ec6aa604 2464 if ((YPos + sgl.CurFont->YSize >= CY1) && (YPos <= CY2))
jmitc91516 0:9140ec6aa604 2465 for (P = TextCharLineStart[N]; P <= TextCharLineEnd[N]; P++)
jmitc91516 0:9140ec6aa604 2466 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 2467 DrawChar(
jmitc91516 0:9140ec6aa604 2468 XPos + TextXOfs[P], YPos, sgl.CurFont, sgl.TextCharNdx[P], ForeColor, 0);
jmitc91516 0:9140ec6aa604 2469 #else
jmitc91516 0:9140ec6aa604 2470 DrawChar(XPos + TextXOfs[P], YPos, sgl.CurFont, sgl.TextCharPtrAry[P],
jmitc91516 0:9140ec6aa604 2471 ForeColor, 0);
jmitc91516 0:9140ec6aa604 2472 #endif
jmitc91516 0:9140ec6aa604 2473 }
jmitc91516 0:9140ec6aa604 2474 YPos += sgl.CurItem.CompPars.CompTextBox.LineDist;
jmitc91516 0:9140ec6aa604 2475 }
jmitc91516 0:9140ec6aa604 2476
jmitc91516 0:9140ec6aa604 2477 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2478 GuiLib_SetClipping(RemClipX1, RemClipY1, RemClipX2, RemClipY2);
jmitc91516 0:9140ec6aa604 2479 #endif
jmitc91516 0:9140ec6aa604 2480 }
jmitc91516 0:9140ec6aa604 2481 GuiLib_MarkDisplayBoxRepaint(X1, Y1, X2, Y2);
jmitc91516 0:9140ec6aa604 2482 }
jmitc91516 0:9140ec6aa604 2483 }
jmitc91516 0:9140ec6aa604 2484 #endif
jmitc91516 0:9140ec6aa604 2485 // Groupend DRAW
jmitc91516 0:9140ec6aa604 2486
jmitc91516 0:9140ec6aa604 2487 #ifdef GuiConst_FLOAT_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2488 static float Floor(float X)
jmitc91516 0:9140ec6aa604 2489 {
jmitc91516 0:9140ec6aa604 2490 GuiConst_INT32S I;
jmitc91516 0:9140ec6aa604 2491
jmitc91516 0:9140ec6aa604 2492 I = X - 2;
jmitc91516 0:9140ec6aa604 2493 while(++I <= X - 1);
jmitc91516 0:9140ec6aa604 2494 return I;
jmitc91516 0:9140ec6aa604 2495 }
jmitc91516 0:9140ec6aa604 2496 #endif
jmitc91516 0:9140ec6aa604 2497
jmitc91516 0:9140ec6aa604 2498 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2499 static GuiConst_INT32S ReadVar(
jmitc91516 0:9140ec6aa604 2500 void PrefixLocate *VarPtr,
jmitc91516 0:9140ec6aa604 2501 GuiConst_INT8U VarType)
jmitc91516 0:9140ec6aa604 2502 {
jmitc91516 0:9140ec6aa604 2503 #ifdef GuiConst_FLOAT_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2504 GuiConst_INT32S tmp;
jmitc91516 0:9140ec6aa604 2505 GuiConst_INT8U i;
jmitc91516 0:9140ec6aa604 2506 double dfactor;
jmitc91516 0:9140ec6aa604 2507 double dx;
jmitc91516 0:9140ec6aa604 2508 float ffactor;
jmitc91516 0:9140ec6aa604 2509 float fx;
jmitc91516 0:9140ec6aa604 2510 #endif
jmitc91516 0:9140ec6aa604 2511
jmitc91516 0:9140ec6aa604 2512 if (VarPtr == 0)
jmitc91516 0:9140ec6aa604 2513 return (0);
jmitc91516 0:9140ec6aa604 2514 else
jmitc91516 0:9140ec6aa604 2515 {
jmitc91516 0:9140ec6aa604 2516 if (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP)
jmitc91516 0:9140ec6aa604 2517 {
jmitc91516 0:9140ec6aa604 2518 #ifdef GuiConst_FLOAT_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2519 if ((VarType == GuiLib_VAR_FLOAT) || (VarType == GuiLib_VAR_DOUBLE))
jmitc91516 0:9140ec6aa604 2520 sgl.VarExponent = 0;
jmitc91516 0:9140ec6aa604 2521 else
jmitc91516 0:9140ec6aa604 2522 #endif
jmitc91516 0:9140ec6aa604 2523 sgl.CurItem.FormatFormat = GuiLib_FORMAT_DEC;
jmitc91516 0:9140ec6aa604 2524 }
jmitc91516 0:9140ec6aa604 2525 switch (VarType)
jmitc91516 0:9140ec6aa604 2526 {
jmitc91516 0:9140ec6aa604 2527 case GuiLib_VAR_BOOL:
jmitc91516 0:9140ec6aa604 2528 if (*(GuiConst_INT8U PrefixLocate *) VarPtr == 0)
jmitc91516 0:9140ec6aa604 2529 return (0);
jmitc91516 0:9140ec6aa604 2530 else
jmitc91516 0:9140ec6aa604 2531 return (1);
jmitc91516 0:9140ec6aa604 2532
jmitc91516 0:9140ec6aa604 2533 case GuiLib_VAR_UNSIGNED_CHAR:
jmitc91516 0:9140ec6aa604 2534 return (*(GuiConst_INT8U PrefixLocate *) VarPtr);
jmitc91516 0:9140ec6aa604 2535
jmitc91516 0:9140ec6aa604 2536 case GuiLib_VAR_SIGNED_CHAR:
jmitc91516 0:9140ec6aa604 2537 return (*(GuiConst_INT8S PrefixLocate *) VarPtr);
jmitc91516 0:9140ec6aa604 2538
jmitc91516 0:9140ec6aa604 2539 case GuiLib_VAR_UNSIGNED_INT:
jmitc91516 0:9140ec6aa604 2540 return (*(GuiConst_INT16U PrefixLocate *) VarPtr);
jmitc91516 0:9140ec6aa604 2541
jmitc91516 0:9140ec6aa604 2542 case GuiLib_VAR_SIGNED_INT:
jmitc91516 0:9140ec6aa604 2543 return (*(GuiConst_INT16S PrefixLocate *) VarPtr);
jmitc91516 0:9140ec6aa604 2544
jmitc91516 0:9140ec6aa604 2545 case GuiLib_VAR_UNSIGNED_LONG:
jmitc91516 0:9140ec6aa604 2546 return (*(GuiConst_INT32U PrefixLocate *) VarPtr);
jmitc91516 0:9140ec6aa604 2547
jmitc91516 0:9140ec6aa604 2548 case GuiLib_VAR_SIGNED_LONG:
jmitc91516 0:9140ec6aa604 2549 return (*(GuiConst_INT32S PrefixLocate *) VarPtr);
jmitc91516 0:9140ec6aa604 2550
jmitc91516 0:9140ec6aa604 2551 case GuiLib_VAR_COLOR:
jmitc91516 0:9140ec6aa604 2552 return (*(GuiConst_INTCOLOR PrefixLocate *) VarPtr);
jmitc91516 0:9140ec6aa604 2553
jmitc91516 0:9140ec6aa604 2554 case GuiLib_VAR_FLOAT:
jmitc91516 0:9140ec6aa604 2555 #ifdef GuiConst_FLOAT_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2556 fx = *(float PrefixLocate *) VarPtr;
jmitc91516 0:9140ec6aa604 2557 if (fx < 0)
jmitc91516 0:9140ec6aa604 2558 fx = -fx;
jmitc91516 0:9140ec6aa604 2559 if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP) && (fx != 0))
jmitc91516 0:9140ec6aa604 2560 {
jmitc91516 0:9140ec6aa604 2561 while (Floor(fx + 0.5) > 10)
jmitc91516 0:9140ec6aa604 2562 {
jmitc91516 0:9140ec6aa604 2563 fx /= 10;
jmitc91516 0:9140ec6aa604 2564 sgl.VarExponent++;
jmitc91516 0:9140ec6aa604 2565 }
jmitc91516 0:9140ec6aa604 2566 while (Floor(fx) < 1)
jmitc91516 0:9140ec6aa604 2567 {
jmitc91516 0:9140ec6aa604 2568 fx *= 10;
jmitc91516 0:9140ec6aa604 2569 sgl.VarExponent--;
jmitc91516 0:9140ec6aa604 2570 }
jmitc91516 0:9140ec6aa604 2571 }
jmitc91516 0:9140ec6aa604 2572 if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_DEC) ||
jmitc91516 0:9140ec6aa604 2573 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP))
jmitc91516 0:9140ec6aa604 2574 {
jmitc91516 0:9140ec6aa604 2575 ffactor=1.0;
jmitc91516 0:9140ec6aa604 2576 for (i = 0; i < sgl.CurItem.FormatDecimals ; i++)
jmitc91516 0:9140ec6aa604 2577 ffactor *= 10.0;
jmitc91516 0:9140ec6aa604 2578 tmp = (GuiConst_INT32S) (fx * ffactor);
jmitc91516 0:9140ec6aa604 2579 ffactor *= 100.0;
jmitc91516 0:9140ec6aa604 2580 if (((GuiConst_INT32S) (fx * ffactor) - (tmp * 100)) >= 45)
jmitc91516 0:9140ec6aa604 2581 tmp++;
jmitc91516 0:9140ec6aa604 2582 if (*(float PrefixLocate *) VarPtr < 0)
jmitc91516 0:9140ec6aa604 2583 tmp = -tmp;
jmitc91516 0:9140ec6aa604 2584 }
jmitc91516 0:9140ec6aa604 2585 else
jmitc91516 0:9140ec6aa604 2586 tmp = (GuiConst_INT32S) *(float PrefixLocate *) VarPtr;
jmitc91516 0:9140ec6aa604 2587 return (tmp);
jmitc91516 0:9140ec6aa604 2588 #else
jmitc91516 0:9140ec6aa604 2589 return (0);
jmitc91516 0:9140ec6aa604 2590 #endif
jmitc91516 0:9140ec6aa604 2591
jmitc91516 0:9140ec6aa604 2592 case GuiLib_VAR_DOUBLE:
jmitc91516 0:9140ec6aa604 2593 #ifdef GuiConst_FLOAT_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2594 dx = *(double PrefixLocate *) VarPtr;
jmitc91516 0:9140ec6aa604 2595 if (dx < 0)
jmitc91516 0:9140ec6aa604 2596 dx = -dx;
jmitc91516 0:9140ec6aa604 2597 if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP) && (dx != 0))
jmitc91516 0:9140ec6aa604 2598 {
jmitc91516 0:9140ec6aa604 2599 while (dx > 10)
jmitc91516 0:9140ec6aa604 2600 {
jmitc91516 0:9140ec6aa604 2601 dx /= 10;
jmitc91516 0:9140ec6aa604 2602 sgl.VarExponent++;
jmitc91516 0:9140ec6aa604 2603 }
jmitc91516 0:9140ec6aa604 2604 while (dx < 1)
jmitc91516 0:9140ec6aa604 2605 {
jmitc91516 0:9140ec6aa604 2606 dx *= 10;
jmitc91516 0:9140ec6aa604 2607 sgl.VarExponent--;
jmitc91516 0:9140ec6aa604 2608 }
jmitc91516 0:9140ec6aa604 2609 }
jmitc91516 0:9140ec6aa604 2610 if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_DEC) ||
jmitc91516 0:9140ec6aa604 2611 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP))
jmitc91516 0:9140ec6aa604 2612 {
jmitc91516 0:9140ec6aa604 2613 dfactor=1.0;
jmitc91516 0:9140ec6aa604 2614 for (i = 0; i < sgl.CurItem.FormatDecimals ; i++)
jmitc91516 0:9140ec6aa604 2615 dfactor *= 10.0;
jmitc91516 0:9140ec6aa604 2616 tmp = (GuiConst_INT32S) (dx * dfactor);
jmitc91516 0:9140ec6aa604 2617 dfactor *= 100.0;
jmitc91516 0:9140ec6aa604 2618 if (((GuiConst_INT32S) (dx * dfactor) - (tmp * 100)) >= 45)
jmitc91516 0:9140ec6aa604 2619 tmp++;
jmitc91516 0:9140ec6aa604 2620 if (*(double PrefixLocate *) VarPtr < 0)
jmitc91516 0:9140ec6aa604 2621 tmp = -tmp;
jmitc91516 0:9140ec6aa604 2622 }
jmitc91516 0:9140ec6aa604 2623 else
jmitc91516 0:9140ec6aa604 2624 tmp = (GuiConst_INT32S) dx;
jmitc91516 0:9140ec6aa604 2625 return (tmp);
jmitc91516 0:9140ec6aa604 2626 #else
jmitc91516 0:9140ec6aa604 2627 return (0);
jmitc91516 0:9140ec6aa604 2628 #endif
jmitc91516 0:9140ec6aa604 2629
jmitc91516 0:9140ec6aa604 2630 default:
jmitc91516 0:9140ec6aa604 2631 return (0);
jmitc91516 0:9140ec6aa604 2632 }
jmitc91516 0:9140ec6aa604 2633 }
jmitc91516 0:9140ec6aa604 2634 }
jmitc91516 0:9140ec6aa604 2635
jmitc91516 0:9140ec6aa604 2636 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 2637 static GuiConst_INT8U DataNumStr(
jmitc91516 0:9140ec6aa604 2638 GuiConst_INT32S DataValue,
jmitc91516 0:9140ec6aa604 2639 GuiConst_INT8U VarType,
jmitc91516 0:9140ec6aa604 2640 GuiConst_INT8U TextNdx)
jmitc91516 0:9140ec6aa604 2641 {
jmitc91516 0:9140ec6aa604 2642 GuiConst_CHAR *S1;
jmitc91516 0:9140ec6aa604 2643 GuiConst_INT8U StrLen, L;
jmitc91516 0:9140ec6aa604 2644 GuiConst_INT16S I, N, P;
jmitc91516 0:9140ec6aa604 2645 GuiConst_INT8U Offset;
jmitc91516 0:9140ec6aa604 2646 GuiConst_INT8U Sign;
jmitc91516 0:9140ec6aa604 2647 GuiConst_INT8U ShowSign;
jmitc91516 0:9140ec6aa604 2648 GuiConst_INT8U ZeroPadding;
jmitc91516 0:9140ec6aa604 2649 GuiConst_INT8U TrailingZeros;
jmitc91516 0:9140ec6aa604 2650 GuiConst_INT8U ThousandsSeparator;
jmitc91516 0:9140ec6aa604 2651 GuiConst_INT8U Time;
jmitc91516 0:9140ec6aa604 2652 GuiConst_INT16S TT1, TT2, TT3;
jmitc91516 0:9140ec6aa604 2653 GuiConst_INT8U am;
jmitc91516 0:9140ec6aa604 2654 GuiConst_INT8U DecimalsPos;
jmitc91516 0:9140ec6aa604 2655 #ifdef GuiConst_FLOAT_SUPPORT_ON
jmitc91516 0:9140ec6aa604 2656 GuiConst_CHAR ExponentStr[5];
jmitc91516 0:9140ec6aa604 2657 #endif
jmitc91516 0:9140ec6aa604 2658
jmitc91516 0:9140ec6aa604 2659 sgl.VarNumTextStr[0] = 0;
jmitc91516 0:9140ec6aa604 2660 am = 0;
jmitc91516 0:9140ec6aa604 2661
jmitc91516 0:9140ec6aa604 2662 Sign = 0;
jmitc91516 0:9140ec6aa604 2663 switch (VarType)
jmitc91516 0:9140ec6aa604 2664 {
jmitc91516 0:9140ec6aa604 2665 case GuiLib_VAR_BOOL:
jmitc91516 0:9140ec6aa604 2666 case GuiLib_VAR_UNSIGNED_CHAR:
jmitc91516 0:9140ec6aa604 2667 if (DataValue > 255)
jmitc91516 0:9140ec6aa604 2668 DataValue = 255;
jmitc91516 0:9140ec6aa604 2669 else if (DataValue < 0)
jmitc91516 0:9140ec6aa604 2670 DataValue = 0;
jmitc91516 0:9140ec6aa604 2671 break;
jmitc91516 0:9140ec6aa604 2672
jmitc91516 0:9140ec6aa604 2673 case GuiLib_VAR_SIGNED_CHAR:
jmitc91516 0:9140ec6aa604 2674 if (DataValue > 127)
jmitc91516 0:9140ec6aa604 2675 DataValue = 127;
jmitc91516 0:9140ec6aa604 2676 else if (DataValue < -128)
jmitc91516 0:9140ec6aa604 2677 DataValue = -128;
jmitc91516 0:9140ec6aa604 2678 if (DataValue < 0)
jmitc91516 0:9140ec6aa604 2679 Sign = 1;
jmitc91516 0:9140ec6aa604 2680 break;
jmitc91516 0:9140ec6aa604 2681
jmitc91516 0:9140ec6aa604 2682 case GuiLib_VAR_UNSIGNED_INT:
jmitc91516 0:9140ec6aa604 2683 if (DataValue > 65535)
jmitc91516 0:9140ec6aa604 2684 DataValue = 65535;
jmitc91516 0:9140ec6aa604 2685 else if (DataValue < 0)
jmitc91516 0:9140ec6aa604 2686 DataValue = 0;
jmitc91516 0:9140ec6aa604 2687 break;
jmitc91516 0:9140ec6aa604 2688
jmitc91516 0:9140ec6aa604 2689 case GuiLib_VAR_SIGNED_INT:
jmitc91516 0:9140ec6aa604 2690 if (DataValue > 32767)
jmitc91516 0:9140ec6aa604 2691 DataValue = 32767;
jmitc91516 0:9140ec6aa604 2692 else if (DataValue < -32768)
jmitc91516 0:9140ec6aa604 2693 DataValue = -32768;
jmitc91516 0:9140ec6aa604 2694 if (DataValue < 0)
jmitc91516 0:9140ec6aa604 2695 Sign = 1;
jmitc91516 0:9140ec6aa604 2696 break;
jmitc91516 0:9140ec6aa604 2697
jmitc91516 0:9140ec6aa604 2698 case GuiLib_VAR_SIGNED_LONG:
jmitc91516 0:9140ec6aa604 2699 case GuiLib_VAR_FLOAT:
jmitc91516 0:9140ec6aa604 2700 case GuiLib_VAR_DOUBLE:
jmitc91516 0:9140ec6aa604 2701 if (DataValue < 0)
jmitc91516 0:9140ec6aa604 2702 Sign = 1;
jmitc91516 0:9140ec6aa604 2703 break;
jmitc91516 0:9140ec6aa604 2704
jmitc91516 0:9140ec6aa604 2705 case GuiLib_VAR_COLOR:
jmitc91516 0:9140ec6aa604 2706 if (DataValue < 0)
jmitc91516 0:9140ec6aa604 2707 DataValue = 0;
jmitc91516 0:9140ec6aa604 2708 #if GuiConst_PIXEL_BYTE_SIZE == 1
jmitc91516 0:9140ec6aa604 2709 if (DataValue > 255)
jmitc91516 0:9140ec6aa604 2710 DataValue = 255;
jmitc91516 0:9140ec6aa604 2711 #elif GuiConst_PIXEL_BYTE_SIZE == 2
jmitc91516 0:9140ec6aa604 2712 if (DataValue > 65535)
jmitc91516 0:9140ec6aa604 2713 DataValue = 65535;
jmitc91516 0:9140ec6aa604 2714 #elif GuiConst_PIXEL_BYTE_SIZE == 3
jmitc91516 0:9140ec6aa604 2715 if (DataValue > 16777215)
jmitc91516 0:9140ec6aa604 2716 DataValue = 16777215;
jmitc91516 0:9140ec6aa604 2717 #endif
jmitc91516 0:9140ec6aa604 2718 break;
jmitc91516 0:9140ec6aa604 2719 }
jmitc91516 0:9140ec6aa604 2720
jmitc91516 0:9140ec6aa604 2721 if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_DEC) ||
jmitc91516 0:9140ec6aa604 2722 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP))
jmitc91516 0:9140ec6aa604 2723 DecimalsPos = sgl.CurItem.FormatDecimals;
jmitc91516 0:9140ec6aa604 2724 else
jmitc91516 0:9140ec6aa604 2725 DecimalsPos = 0;
jmitc91516 0:9140ec6aa604 2726 Time = ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_MMSS) ||
jmitc91516 0:9140ec6aa604 2727 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMM_24) ||
jmitc91516 0:9140ec6aa604 2728 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_24) ||
jmitc91516 0:9140ec6aa604 2729 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMM_12_ampm) ||
jmitc91516 0:9140ec6aa604 2730 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_ampm) ||
jmitc91516 0:9140ec6aa604 2731 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMM_12_AMPM) ||
jmitc91516 0:9140ec6aa604 2732 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_AMPM));
jmitc91516 0:9140ec6aa604 2733 if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_DEC) ||
jmitc91516 0:9140ec6aa604 2734 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP))
jmitc91516 0:9140ec6aa604 2735 ShowSign = ((sgl.CurItem.TextPar[TextNdx].BitFlags &
jmitc91516 0:9140ec6aa604 2736 GuiLib_BITFLAG_FORMATSHOWSIGN) > 0);
jmitc91516 0:9140ec6aa604 2737 else
jmitc91516 0:9140ec6aa604 2738 {
jmitc91516 0:9140ec6aa604 2739 Sign = 0;
jmitc91516 0:9140ec6aa604 2740 ShowSign = 0;
jmitc91516 0:9140ec6aa604 2741 }
jmitc91516 0:9140ec6aa604 2742 if (sgl.CurItem.FormatAlignment == GuiLib_FORMAT_ALIGNMENT_RIGHT)
jmitc91516 0:9140ec6aa604 2743 ZeroPadding = ((sgl.CurItem.TextPar[TextNdx].BitFlags &
jmitc91516 0:9140ec6aa604 2744 GuiLib_BITFLAG_FORMATZEROPADDING) > 0);
jmitc91516 0:9140ec6aa604 2745 else
jmitc91516 0:9140ec6aa604 2746 ZeroPadding = 0;
jmitc91516 0:9140ec6aa604 2747 if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_DEC) ||
jmitc91516 0:9140ec6aa604 2748 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP))
jmitc91516 0:9140ec6aa604 2749 TrailingZeros = ((sgl.CurItem.TextPar[TextNdx].BitFlags &
jmitc91516 0:9140ec6aa604 2750 GuiLib_BITFLAG_FORMATTRAILINGZEROS) > 0);
jmitc91516 0:9140ec6aa604 2751 else
jmitc91516 0:9140ec6aa604 2752 TrailingZeros = 0;
jmitc91516 0:9140ec6aa604 2753 if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_DEC) ||
jmitc91516 0:9140ec6aa604 2754 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_HEX_POSTFIX_H) ||
jmitc91516 0:9140ec6aa604 2755 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_HEX_PREFIX_0X) ||
jmitc91516 0:9140ec6aa604 2756 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_HEX_CLEAN))
jmitc91516 0:9140ec6aa604 2757 ThousandsSeparator = ((sgl.CurItem.TextPar[TextNdx].BitFlags &
jmitc91516 0:9140ec6aa604 2758 GuiLib_BITFLAG_FORMATTHOUSANDSSEP) > 0);
jmitc91516 0:9140ec6aa604 2759 else
jmitc91516 0:9140ec6aa604 2760 ThousandsSeparator = 0;
jmitc91516 0:9140ec6aa604 2761
jmitc91516 0:9140ec6aa604 2762 if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_DEC) ||
jmitc91516 0:9140ec6aa604 2763 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP))
jmitc91516 0:9140ec6aa604 2764 {
jmitc91516 0:9140ec6aa604 2765 if (Sign)
jmitc91516 0:9140ec6aa604 2766 ConvertIntToStr(-DataValue, sgl.VarNumTextStr, 10);
jmitc91516 0:9140ec6aa604 2767 else
jmitc91516 0:9140ec6aa604 2768 ConvertIntToStr(DataValue, sgl.VarNumTextStr, 10);
jmitc91516 0:9140ec6aa604 2769 }
jmitc91516 0:9140ec6aa604 2770
jmitc91516 0:9140ec6aa604 2771 else if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_HEX_POSTFIX_H) ||
jmitc91516 0:9140ec6aa604 2772 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_HEX_PREFIX_0X) ||
jmitc91516 0:9140ec6aa604 2773 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_HEX_CLEAN))
jmitc91516 0:9140ec6aa604 2774 {
jmitc91516 0:9140ec6aa604 2775 ConvertIntToStr(DataValue, sgl.VarNumTextStr, 16);
jmitc91516 0:9140ec6aa604 2776 S1 = sgl.VarNumTextStr;
jmitc91516 0:9140ec6aa604 2777 StrLen = 0;
jmitc91516 0:9140ec6aa604 2778 while (*S1 != 0)
jmitc91516 0:9140ec6aa604 2779 {
jmitc91516 0:9140ec6aa604 2780 if ((*S1 >= 'a') && (*S1 <= 'f'))
jmitc91516 0:9140ec6aa604 2781 *S1 -= 32;
jmitc91516 0:9140ec6aa604 2782 S1++;
jmitc91516 0:9140ec6aa604 2783 StrLen++;
jmitc91516 0:9140ec6aa604 2784 }
jmitc91516 0:9140ec6aa604 2785 if (DataValue < 0)
jmitc91516 0:9140ec6aa604 2786 {
jmitc91516 0:9140ec6aa604 2787 while ((StrLen > 1) && (StrLen >= sgl.CurItem.FormatFieldWidth))
jmitc91516 0:9140ec6aa604 2788 {
jmitc91516 0:9140ec6aa604 2789 if (sgl.VarNumTextStr[0] == 'F')
jmitc91516 0:9140ec6aa604 2790 {
jmitc91516 0:9140ec6aa604 2791 for (N = 0; N < StrLen; N++)
jmitc91516 0:9140ec6aa604 2792 sgl.VarNumTextStr[N] = sgl.VarNumTextStr[N + 1];
jmitc91516 0:9140ec6aa604 2793 sgl.VarNumTextStr[StrLen] = 0;
jmitc91516 0:9140ec6aa604 2794 StrLen--;
jmitc91516 0:9140ec6aa604 2795 }
jmitc91516 0:9140ec6aa604 2796 else
jmitc91516 0:9140ec6aa604 2797 break;
jmitc91516 0:9140ec6aa604 2798 }
jmitc91516 0:9140ec6aa604 2799
jmitc91516 0:9140ec6aa604 2800 }
jmitc91516 0:9140ec6aa604 2801 if (StrLen >= GuiConst_MAX_VARNUM_TEXT_LEN)
jmitc91516 0:9140ec6aa604 2802 return (0);
jmitc91516 0:9140ec6aa604 2803
jmitc91516 0:9140ec6aa604 2804 switch (sgl.CurItem.FormatFormat)
jmitc91516 0:9140ec6aa604 2805 {
jmitc91516 0:9140ec6aa604 2806 case GuiLib_FORMAT_HEX_POSTFIX_H:
jmitc91516 0:9140ec6aa604 2807 if (StrLen < GuiConst_MAX_VARNUM_TEXT_LEN - 1)
jmitc91516 0:9140ec6aa604 2808 {
jmitc91516 0:9140ec6aa604 2809 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 2810 strcatf(sgl.VarNumTextStr, "h");
jmitc91516 0:9140ec6aa604 2811 #else
jmitc91516 0:9140ec6aa604 2812 strcat(sgl.VarNumTextStr, "h");
jmitc91516 0:9140ec6aa604 2813 #endif
jmitc91516 0:9140ec6aa604 2814 }
jmitc91516 0:9140ec6aa604 2815 break;
jmitc91516 0:9140ec6aa604 2816 case GuiLib_FORMAT_HEX_PREFIX_0X:
jmitc91516 0:9140ec6aa604 2817 if (StrLen < GuiConst_MAX_VARNUM_TEXT_LEN - 2)
jmitc91516 0:9140ec6aa604 2818 {
jmitc91516 0:9140ec6aa604 2819 for (N = StrLen - 1; N >= 0; N--)
jmitc91516 0:9140ec6aa604 2820 sgl.VarNumTextStr[N + 2] = sgl.VarNumTextStr[N];
jmitc91516 0:9140ec6aa604 2821 sgl.VarNumTextStr[0] = '0';
jmitc91516 0:9140ec6aa604 2822 sgl.VarNumTextStr[1] = 'x';
jmitc91516 0:9140ec6aa604 2823 }
jmitc91516 0:9140ec6aa604 2824 break;
jmitc91516 0:9140ec6aa604 2825 }
jmitc91516 0:9140ec6aa604 2826 }
jmitc91516 0:9140ec6aa604 2827
jmitc91516 0:9140ec6aa604 2828 else if (Time)
jmitc91516 0:9140ec6aa604 2829 {
jmitc91516 0:9140ec6aa604 2830 if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_24) ||
jmitc91516 0:9140ec6aa604 2831 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_ampm) ||
jmitc91516 0:9140ec6aa604 2832 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_AMPM))
jmitc91516 0:9140ec6aa604 2833 {
jmitc91516 0:9140ec6aa604 2834 DataValue %= 360000;
jmitc91516 0:9140ec6aa604 2835 TT1 = DataValue / 3600;
jmitc91516 0:9140ec6aa604 2836 TT2 = (DataValue % 3600) / 60;
jmitc91516 0:9140ec6aa604 2837 TT3 = DataValue % 60;
jmitc91516 0:9140ec6aa604 2838 }
jmitc91516 0:9140ec6aa604 2839 else
jmitc91516 0:9140ec6aa604 2840 {
jmitc91516 0:9140ec6aa604 2841 DataValue %= 6000;
jmitc91516 0:9140ec6aa604 2842 TT1 = DataValue / 60;
jmitc91516 0:9140ec6aa604 2843 TT2 = DataValue % 60;
jmitc91516 0:9140ec6aa604 2844 TT3 = -1;
jmitc91516 0:9140ec6aa604 2845 }
jmitc91516 0:9140ec6aa604 2846
jmitc91516 0:9140ec6aa604 2847 if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMM_12_ampm) ||
jmitc91516 0:9140ec6aa604 2848 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_ampm) ||
jmitc91516 0:9140ec6aa604 2849 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMM_12_AMPM) ||
jmitc91516 0:9140ec6aa604 2850 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_AMPM))
jmitc91516 0:9140ec6aa604 2851 {
jmitc91516 0:9140ec6aa604 2852 am = ((TT1%24) < 12);
jmitc91516 0:9140ec6aa604 2853 TT1 %= 12;
jmitc91516 0:9140ec6aa604 2854 if (TT1 == 0)
jmitc91516 0:9140ec6aa604 2855 TT1 = 12;
jmitc91516 0:9140ec6aa604 2856 }
jmitc91516 0:9140ec6aa604 2857 else
jmitc91516 0:9140ec6aa604 2858 am = 0; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 2859
jmitc91516 0:9140ec6aa604 2860 if (ZeroPadding && (TT1 < 10))
jmitc91516 0:9140ec6aa604 2861 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 2862 strcatf(sgl.VarNumTextStr, "0");
jmitc91516 0:9140ec6aa604 2863 #else
jmitc91516 0:9140ec6aa604 2864 strcat(sgl.VarNumTextStr, "0");
jmitc91516 0:9140ec6aa604 2865 #endif
jmitc91516 0:9140ec6aa604 2866 ConvertIntToStr(TT1, sgl.VarNumTextStr + strlen(sgl.VarNumTextStr), 10);
jmitc91516 0:9140ec6aa604 2867
jmitc91516 0:9140ec6aa604 2868 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 2869 strcatf(sgl.VarNumTextStr, ":");
jmitc91516 0:9140ec6aa604 2870 #else
jmitc91516 0:9140ec6aa604 2871 strcat(sgl.VarNumTextStr, ":");
jmitc91516 0:9140ec6aa604 2872 #endif
jmitc91516 0:9140ec6aa604 2873
jmitc91516 0:9140ec6aa604 2874 if (TT2 < 10)
jmitc91516 0:9140ec6aa604 2875 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 2876 strcatf(sgl.VarNumTextStr, "0");
jmitc91516 0:9140ec6aa604 2877 #else
jmitc91516 0:9140ec6aa604 2878 strcat(sgl.VarNumTextStr, "0");
jmitc91516 0:9140ec6aa604 2879 #endif
jmitc91516 0:9140ec6aa604 2880 ConvertIntToStr(TT2, sgl.VarNumTextStr + strlen(sgl.VarNumTextStr), 10);
jmitc91516 0:9140ec6aa604 2881
jmitc91516 0:9140ec6aa604 2882 if (TT3 >= 0)
jmitc91516 0:9140ec6aa604 2883 {
jmitc91516 0:9140ec6aa604 2884 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 2885 strcatf(sgl.VarNumTextStr, ":");
jmitc91516 0:9140ec6aa604 2886 #else
jmitc91516 0:9140ec6aa604 2887 strcat(sgl.VarNumTextStr, ":");
jmitc91516 0:9140ec6aa604 2888 #endif
jmitc91516 0:9140ec6aa604 2889
jmitc91516 0:9140ec6aa604 2890 if (TT3 < 10)
jmitc91516 0:9140ec6aa604 2891 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 2892 strcatf(sgl.VarNumTextStr, "0");
jmitc91516 0:9140ec6aa604 2893 #else
jmitc91516 0:9140ec6aa604 2894 strcat(sgl.VarNumTextStr, "0");
jmitc91516 0:9140ec6aa604 2895 #endif
jmitc91516 0:9140ec6aa604 2896 ConvertIntToStr(TT3, sgl.VarNumTextStr + strlen(sgl.VarNumTextStr), 10);
jmitc91516 0:9140ec6aa604 2897 }
jmitc91516 0:9140ec6aa604 2898
jmitc91516 0:9140ec6aa604 2899 if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMM_12_ampm) ||
jmitc91516 0:9140ec6aa604 2900 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_ampm))
jmitc91516 0:9140ec6aa604 2901 {
jmitc91516 0:9140ec6aa604 2902 if (am)
jmitc91516 0:9140ec6aa604 2903 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 2904 strcatf(sgl.VarNumTextStr, "am");
jmitc91516 0:9140ec6aa604 2905 #else
jmitc91516 0:9140ec6aa604 2906 strcat(sgl.VarNumTextStr, "am");
jmitc91516 0:9140ec6aa604 2907 #endif
jmitc91516 0:9140ec6aa604 2908 else
jmitc91516 0:9140ec6aa604 2909 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 2910 strcatf(sgl.VarNumTextStr, "pm");
jmitc91516 0:9140ec6aa604 2911 #else
jmitc91516 0:9140ec6aa604 2912 strcat(sgl.VarNumTextStr, "pm");
jmitc91516 0:9140ec6aa604 2913 #endif
jmitc91516 0:9140ec6aa604 2914 }
jmitc91516 0:9140ec6aa604 2915 else if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMM_12_AMPM) ||
jmitc91516 0:9140ec6aa604 2916 (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_AMPM))
jmitc91516 0:9140ec6aa604 2917 {
jmitc91516 0:9140ec6aa604 2918 if (am)
jmitc91516 0:9140ec6aa604 2919 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 2920 strcatf(sgl.VarNumTextStr, "AM");
jmitc91516 0:9140ec6aa604 2921 #else
jmitc91516 0:9140ec6aa604 2922 strcat(sgl.VarNumTextStr, "AM");
jmitc91516 0:9140ec6aa604 2923 #endif
jmitc91516 0:9140ec6aa604 2924 else
jmitc91516 0:9140ec6aa604 2925 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 2926 strcatf(sgl.VarNumTextStr, "PM");
jmitc91516 0:9140ec6aa604 2927 #else
jmitc91516 0:9140ec6aa604 2928 strcat(sgl.VarNumTextStr, "PM");
jmitc91516 0:9140ec6aa604 2929 #endif
jmitc91516 0:9140ec6aa604 2930 }
jmitc91516 0:9140ec6aa604 2931 }
jmitc91516 0:9140ec6aa604 2932 else
jmitc91516 0:9140ec6aa604 2933 return (0);
jmitc91516 0:9140ec6aa604 2934
jmitc91516 0:9140ec6aa604 2935 StrLen = 0;
jmitc91516 0:9140ec6aa604 2936 S1 = sgl.VarNumTextStr;
jmitc91516 0:9140ec6aa604 2937 while (*S1 != 0)
jmitc91516 0:9140ec6aa604 2938 {
jmitc91516 0:9140ec6aa604 2939 StrLen++;
jmitc91516 0:9140ec6aa604 2940 S1++;
jmitc91516 0:9140ec6aa604 2941 }
jmitc91516 0:9140ec6aa604 2942
jmitc91516 0:9140ec6aa604 2943 if (DecimalsPos > 0)
jmitc91516 0:9140ec6aa604 2944 {
jmitc91516 0:9140ec6aa604 2945 L = DecimalsPos + 1;
jmitc91516 0:9140ec6aa604 2946 if (StrLen < L)
jmitc91516 0:9140ec6aa604 2947 {
jmitc91516 0:9140ec6aa604 2948 if (L > GuiConst_MAX_VARNUM_TEXT_LEN)
jmitc91516 0:9140ec6aa604 2949 return (0);
jmitc91516 0:9140ec6aa604 2950 for (N = 1; N <= StrLen; N++)
jmitc91516 0:9140ec6aa604 2951 sgl.VarNumTextStr[L - N] = sgl.VarNumTextStr[StrLen - N];
jmitc91516 0:9140ec6aa604 2952 for (N = 0; N < L - StrLen; N++)
jmitc91516 0:9140ec6aa604 2953 sgl.VarNumTextStr[N] = '0';
jmitc91516 0:9140ec6aa604 2954
jmitc91516 0:9140ec6aa604 2955 StrLen = L;
jmitc91516 0:9140ec6aa604 2956 }
jmitc91516 0:9140ec6aa604 2957
jmitc91516 0:9140ec6aa604 2958 if ((!TrailingZeros) && (!Time) && (VarType != GuiLib_VAR_BOOL))
jmitc91516 0:9140ec6aa604 2959 {
jmitc91516 0:9140ec6aa604 2960 L = StrLen;
jmitc91516 0:9140ec6aa604 2961 for (N = L - 1; N > L - sgl.CurItem.FormatDecimals; N--)
jmitc91516 0:9140ec6aa604 2962 if (sgl.VarNumTextStr[N] == '0')
jmitc91516 0:9140ec6aa604 2963 {
jmitc91516 0:9140ec6aa604 2964 DecimalsPos--;
jmitc91516 0:9140ec6aa604 2965 StrLen--;
jmitc91516 0:9140ec6aa604 2966 }
jmitc91516 0:9140ec6aa604 2967 else
jmitc91516 0:9140ec6aa604 2968 break;
jmitc91516 0:9140ec6aa604 2969 }
jmitc91516 0:9140ec6aa604 2970
jmitc91516 0:9140ec6aa604 2971 if (StrLen >= GuiConst_MAX_VARNUM_TEXT_LEN)
jmitc91516 0:9140ec6aa604 2972 return (0);
jmitc91516 0:9140ec6aa604 2973 P = StrLen - DecimalsPos;
jmitc91516 0:9140ec6aa604 2974 for (N = StrLen; N > P; N--)
jmitc91516 0:9140ec6aa604 2975 sgl.VarNumTextStr[N] = sgl.VarNumTextStr[N - 1];
jmitc91516 0:9140ec6aa604 2976 if (ReadByte(GuiFont_DecimalChar[GuiLib_LanguageIndex]) == GuiLib_DECIMAL_PERIOD)
jmitc91516 0:9140ec6aa604 2977 sgl.VarNumTextStr[P] = '.';
jmitc91516 0:9140ec6aa604 2978 else
jmitc91516 0:9140ec6aa604 2979 sgl.VarNumTextStr[P] = ',';
jmitc91516 0:9140ec6aa604 2980 StrLen++;
jmitc91516 0:9140ec6aa604 2981 sgl.VarNumTextStr[StrLen] = 0;
jmitc91516 0:9140ec6aa604 2982 }
jmitc91516 0:9140ec6aa604 2983 else
jmitc91516 0:9140ec6aa604 2984 P = StrLen;
jmitc91516 0:9140ec6aa604 2985
jmitc91516 0:9140ec6aa604 2986 if (ThousandsSeparator)
jmitc91516 0:9140ec6aa604 2987 {
jmitc91516 0:9140ec6aa604 2988 I = 0;
jmitc91516 0:9140ec6aa604 2989 while (P > 0)
jmitc91516 0:9140ec6aa604 2990 {
jmitc91516 0:9140ec6aa604 2991 if ((I > 0) && (I % 3 ==0 ))
jmitc91516 0:9140ec6aa604 2992 {
jmitc91516 0:9140ec6aa604 2993 for (N = StrLen; N > P; N--)
jmitc91516 0:9140ec6aa604 2994 sgl.VarNumTextStr[N] = sgl.VarNumTextStr[N - 1];
jmitc91516 0:9140ec6aa604 2995 if (ReadByte(GuiFont_DecimalChar[GuiLib_LanguageIndex]) == GuiLib_DECIMAL_PERIOD)
jmitc91516 0:9140ec6aa604 2996 sgl.VarNumTextStr[P] = ',';
jmitc91516 0:9140ec6aa604 2997 else
jmitc91516 0:9140ec6aa604 2998 sgl.VarNumTextStr[P] = '.';
jmitc91516 0:9140ec6aa604 2999 StrLen++;
jmitc91516 0:9140ec6aa604 3000 if (StrLen >= GuiConst_MAX_VARNUM_TEXT_LEN)
jmitc91516 0:9140ec6aa604 3001 return (0);
jmitc91516 0:9140ec6aa604 3002 sgl.VarNumTextStr[StrLen] = 0;
jmitc91516 0:9140ec6aa604 3003 }
jmitc91516 0:9140ec6aa604 3004 I++;
jmitc91516 0:9140ec6aa604 3005 P--;
jmitc91516 0:9140ec6aa604 3006 }
jmitc91516 0:9140ec6aa604 3007 }
jmitc91516 0:9140ec6aa604 3008
jmitc91516 0:9140ec6aa604 3009 if (Sign || ShowSign)
jmitc91516 0:9140ec6aa604 3010 {
jmitc91516 0:9140ec6aa604 3011 if (StrLen > GuiConst_MAX_VARNUM_TEXT_LEN)
jmitc91516 0:9140ec6aa604 3012 return (0);
jmitc91516 0:9140ec6aa604 3013 for (N = StrLen; N >= 1; N--)
jmitc91516 0:9140ec6aa604 3014 sgl.VarNumTextStr[N] = sgl.VarNumTextStr[N - 1];
jmitc91516 0:9140ec6aa604 3015 if (Sign)
jmitc91516 0:9140ec6aa604 3016 sgl.VarNumTextStr[0] = '-';
jmitc91516 0:9140ec6aa604 3017 else
jmitc91516 0:9140ec6aa604 3018 sgl.VarNumTextStr[0] = '+';
jmitc91516 0:9140ec6aa604 3019 StrLen++;
jmitc91516 0:9140ec6aa604 3020 sgl.VarNumTextStr[StrLen] = 0;
jmitc91516 0:9140ec6aa604 3021 }
jmitc91516 0:9140ec6aa604 3022
jmitc91516 0:9140ec6aa604 3023 #ifdef GuiConst_FLOAT_SUPPORT_ON
jmitc91516 0:9140ec6aa604 3024 if (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP)
jmitc91516 0:9140ec6aa604 3025 {
jmitc91516 0:9140ec6aa604 3026 N = sgl.VarExponent;
jmitc91516 0:9140ec6aa604 3027 if (N < 0)
jmitc91516 0:9140ec6aa604 3028 N = -N;
jmitc91516 0:9140ec6aa604 3029 ConvertIntToStr(N, ExponentStr, 10);
jmitc91516 0:9140ec6aa604 3030 S1 = ExponentStr;
jmitc91516 0:9140ec6aa604 3031 N = 0;
jmitc91516 0:9140ec6aa604 3032 while (*S1 != 0)
jmitc91516 0:9140ec6aa604 3033 {
jmitc91516 0:9140ec6aa604 3034 S1++;
jmitc91516 0:9140ec6aa604 3035 N++;
jmitc91516 0:9140ec6aa604 3036 }
jmitc91516 0:9140ec6aa604 3037 if (N == 1)
jmitc91516 0:9140ec6aa604 3038 I = 2;
jmitc91516 0:9140ec6aa604 3039 else
jmitc91516 0:9140ec6aa604 3040 I = N;
jmitc91516 0:9140ec6aa604 3041 if (StrLen + 2 + I >= GuiConst_MAX_VARNUM_TEXT_LEN)
jmitc91516 0:9140ec6aa604 3042 return (0);
jmitc91516 0:9140ec6aa604 3043 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 3044 strcatf(sgl.VarNumTextStr, "E");
jmitc91516 0:9140ec6aa604 3045 #else
jmitc91516 0:9140ec6aa604 3046 strcat(sgl.VarNumTextStr, "E");
jmitc91516 0:9140ec6aa604 3047 #endif
jmitc91516 0:9140ec6aa604 3048 StrLen++;
jmitc91516 0:9140ec6aa604 3049 if (sgl.VarExponent >= 0)
jmitc91516 0:9140ec6aa604 3050 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 3051 strcatf(sgl.VarNumTextStr, "+");
jmitc91516 0:9140ec6aa604 3052 #else
jmitc91516 0:9140ec6aa604 3053 strcat(sgl.VarNumTextStr, "+");
jmitc91516 0:9140ec6aa604 3054 #endif
jmitc91516 0:9140ec6aa604 3055 else
jmitc91516 0:9140ec6aa604 3056 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 3057 strcatf(sgl.VarNumTextStr, "-");
jmitc91516 0:9140ec6aa604 3058 #else
jmitc91516 0:9140ec6aa604 3059 strcat(sgl.VarNumTextStr, "-");
jmitc91516 0:9140ec6aa604 3060 #endif
jmitc91516 0:9140ec6aa604 3061 StrLen++;
jmitc91516 0:9140ec6aa604 3062 if (N == 1)
jmitc91516 0:9140ec6aa604 3063 {
jmitc91516 0:9140ec6aa604 3064 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 3065 strcatf(sgl.VarNumTextStr, "0");
jmitc91516 0:9140ec6aa604 3066 #else
jmitc91516 0:9140ec6aa604 3067 strcat(sgl.VarNumTextStr, "0");
jmitc91516 0:9140ec6aa604 3068 #endif
jmitc91516 0:9140ec6aa604 3069 StrLen++;
jmitc91516 0:9140ec6aa604 3070 }
jmitc91516 0:9140ec6aa604 3071 strcat(sgl.VarNumTextStr, ExponentStr);
jmitc91516 0:9140ec6aa604 3072 StrLen += N;
jmitc91516 0:9140ec6aa604 3073 }
jmitc91516 0:9140ec6aa604 3074 #endif
jmitc91516 0:9140ec6aa604 3075
jmitc91516 0:9140ec6aa604 3076 if (sgl.CurItem.FormatFieldWidth > 0)
jmitc91516 0:9140ec6aa604 3077 {
jmitc91516 0:9140ec6aa604 3078 if (StrLen > sgl.CurItem.FormatFieldWidth)
jmitc91516 0:9140ec6aa604 3079 {
jmitc91516 0:9140ec6aa604 3080 for (N = 0; N < sgl.CurItem.FormatFieldWidth; N++)
jmitc91516 0:9140ec6aa604 3081 sgl.VarNumTextStr[N] = '-';
jmitc91516 0:9140ec6aa604 3082 }
jmitc91516 0:9140ec6aa604 3083 else
jmitc91516 0:9140ec6aa604 3084 {
jmitc91516 0:9140ec6aa604 3085 if (sgl.CurItem.FormatFieldWidth > GuiConst_MAX_VARNUM_TEXT_LEN)
jmitc91516 0:9140ec6aa604 3086 return (0);
jmitc91516 0:9140ec6aa604 3087 if (ZeroPadding && (!Time))
jmitc91516 0:9140ec6aa604 3088 {
jmitc91516 0:9140ec6aa604 3089 if ((sgl.VarNumTextStr[0] == '-') || (sgl.VarNumTextStr[0] == '+'))
jmitc91516 0:9140ec6aa604 3090 Offset = 1;
jmitc91516 0:9140ec6aa604 3091 else
jmitc91516 0:9140ec6aa604 3092 Offset = 0;
jmitc91516 0:9140ec6aa604 3093 for (N = 1; N <= StrLen - Offset; N++)
jmitc91516 0:9140ec6aa604 3094 sgl.VarNumTextStr[sgl.CurItem.FormatFieldWidth - N] =
jmitc91516 0:9140ec6aa604 3095 sgl.VarNumTextStr[StrLen - N];
jmitc91516 0:9140ec6aa604 3096 for (N = 0; N < sgl.CurItem.FormatFieldWidth - StrLen; N++)
jmitc91516 0:9140ec6aa604 3097 sgl.VarNumTextStr[N + Offset] = '0';
jmitc91516 0:9140ec6aa604 3098 }
jmitc91516 0:9140ec6aa604 3099 else if (sgl.CurItem.FormatAlignment == GuiLib_FORMAT_ALIGNMENT_LEFT)
jmitc91516 0:9140ec6aa604 3100 {
jmitc91516 0:9140ec6aa604 3101 for (N = StrLen; N < sgl.CurItem.FormatFieldWidth; N++)
jmitc91516 0:9140ec6aa604 3102 sgl.VarNumTextStr[N] = ' ';
jmitc91516 0:9140ec6aa604 3103 }
jmitc91516 0:9140ec6aa604 3104 else if (sgl.CurItem.FormatAlignment == GuiLib_FORMAT_ALIGNMENT_CENTER)
jmitc91516 0:9140ec6aa604 3105 {
jmitc91516 0:9140ec6aa604 3106 Offset = (sgl.CurItem.FormatFieldWidth - StrLen) / 2;
jmitc91516 0:9140ec6aa604 3107 if (Offset > 0)
jmitc91516 0:9140ec6aa604 3108 {
jmitc91516 0:9140ec6aa604 3109 for (N = StrLen - 1; N >= 0; N--)
jmitc91516 0:9140ec6aa604 3110 sgl.VarNumTextStr[N + Offset] = sgl.VarNumTextStr[N];
jmitc91516 0:9140ec6aa604 3111 for (N = 0; N < Offset; N++)
jmitc91516 0:9140ec6aa604 3112 sgl.VarNumTextStr[N] = ' ';
jmitc91516 0:9140ec6aa604 3113 }
jmitc91516 0:9140ec6aa604 3114 Offset = sgl.CurItem.FormatFieldWidth - StrLen - Offset;
jmitc91516 0:9140ec6aa604 3115 if (Offset > 0)
jmitc91516 0:9140ec6aa604 3116 for (N = sgl.CurItem.FormatFieldWidth - Offset;
jmitc91516 0:9140ec6aa604 3117 N < sgl.CurItem.FormatFieldWidth; N++)
jmitc91516 0:9140ec6aa604 3118 sgl.VarNumTextStr[N] = ' ';
jmitc91516 0:9140ec6aa604 3119 }
jmitc91516 0:9140ec6aa604 3120 else if (sgl.CurItem.FormatAlignment == GuiLib_FORMAT_ALIGNMENT_RIGHT)
jmitc91516 0:9140ec6aa604 3121 {
jmitc91516 0:9140ec6aa604 3122 for (N = 1; N <= StrLen; N++)
jmitc91516 0:9140ec6aa604 3123 sgl.VarNumTextStr[sgl.CurItem.FormatFieldWidth - N] =
jmitc91516 0:9140ec6aa604 3124 sgl.VarNumTextStr[StrLen - N];
jmitc91516 0:9140ec6aa604 3125 for (N = 0; N < sgl.CurItem.FormatFieldWidth - StrLen; N++)
jmitc91516 0:9140ec6aa604 3126 sgl.VarNumTextStr[N] = ' ';
jmitc91516 0:9140ec6aa604 3127 }
jmitc91516 0:9140ec6aa604 3128 }
jmitc91516 0:9140ec6aa604 3129 sgl.VarNumTextStr[sgl.CurItem.FormatFieldWidth] = 0;
jmitc91516 0:9140ec6aa604 3130 return (sgl.CurItem.FormatFieldWidth);
jmitc91516 0:9140ec6aa604 3131 }
jmitc91516 0:9140ec6aa604 3132 else
jmitc91516 0:9140ec6aa604 3133 {
jmitc91516 0:9140ec6aa604 3134 sgl.VarNumTextStr[StrLen] = 0;
jmitc91516 0:9140ec6aa604 3135 return (StrLen);
jmitc91516 0:9140ec6aa604 3136 }
jmitc91516 0:9140ec6aa604 3137 }
jmitc91516 0:9140ec6aa604 3138
jmitc91516 0:9140ec6aa604 3139 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 3140 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3141 static GuiLib_StructPtr GetRemoteStructData(
jmitc91516 0:9140ec6aa604 3142 GuiConst_INT32S StructIndex)
jmitc91516 0:9140ec6aa604 3143 {
jmitc91516 0:9140ec6aa604 3144 sgl.RemoteStructOffset =
jmitc91516 0:9140ec6aa604 3145 (GuiConst_INT32U PrefixRom)GuiStruct_StructPtrList[StructIndex];
jmitc91516 0:9140ec6aa604 3146 GuiLib_RemoteDataReadBlock(
jmitc91516 0:9140ec6aa604 3147 sgl.RemoteStructOffset,
jmitc91516 0:9140ec6aa604 3148 1,
jmitc91516 0:9140ec6aa604 3149 sgl.GuiLib_RemoteStructBuffer);
jmitc91516 0:9140ec6aa604 3150 sgl.RemoteStructOffset++;
jmitc91516 0:9140ec6aa604 3151 return((GuiLib_StructPtr)&sgl.GuiLib_RemoteStructBuffer[0]);
jmitc91516 0:9140ec6aa604 3152 }
jmitc91516 0:9140ec6aa604 3153
jmitc91516 0:9140ec6aa604 3154 #ifdef GuiConst_REMOTE_TEXT_DATA
jmitc91516 0:9140ec6aa604 3155 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3156 static GuiConst_INT16U GetRemoteText(
jmitc91516 0:9140ec6aa604 3157 GuiConst_INT16U TextIndex)
jmitc91516 0:9140ec6aa604 3158 {
jmitc91516 0:9140ec6aa604 3159 GuiConst_INT32S TextOfs;
jmitc91516 0:9140ec6aa604 3160
jmitc91516 0:9140ec6aa604 3161 if (TextIndex != sgl.CurRemoteText)
jmitc91516 0:9140ec6aa604 3162 {
jmitc91516 0:9140ec6aa604 3163 if (sgl.RemoteTextTableOfs == -1)
jmitc91516 0:9140ec6aa604 3164 GuiLib_RemoteTextReadBlock(4, 4, &sgl.RemoteTextTableOfs);
jmitc91516 0:9140ec6aa604 3165
jmitc91516 0:9140ec6aa604 3166 GuiLib_RemoteTextReadBlock(sgl.RemoteTextTableOfs + 6 * TextIndex, 4, &TextOfs);
jmitc91516 0:9140ec6aa604 3167 GuiLib_RemoteTextReadBlock(
jmitc91516 0:9140ec6aa604 3168 sgl.RemoteTextTableOfs + 6 * TextIndex + 4, 2, &sgl.RemoteTextLen);
jmitc91516 0:9140ec6aa604 3169
jmitc91516 0:9140ec6aa604 3170 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 3171 GuiLib_RemoteTextReadBlock(TextOfs, sgl.RemoteTextLen, sgl.GuiLib_RemoteTextBuffer);
jmitc91516 0:9140ec6aa604 3172 #else
jmitc91516 0:9140ec6aa604 3173 GuiLib_RemoteTextReadBlock(TextOfs, 2 * sgl.RemoteTextLen, sgl.GuiLib_RemoteTextBuffer);
jmitc91516 0:9140ec6aa604 3174 #endif
jmitc91516 0:9140ec6aa604 3175 sgl.CurRemoteText = TextIndex;
jmitc91516 0:9140ec6aa604 3176 }
jmitc91516 0:9140ec6aa604 3177 return(sgl.RemoteTextLen);
jmitc91516 0:9140ec6aa604 3178 }
jmitc91516 0:9140ec6aa604 3179 #endif
jmitc91516 0:9140ec6aa604 3180
jmitc91516 0:9140ec6aa604 3181 #endif
jmitc91516 0:9140ec6aa604 3182
jmitc91516 0:9140ec6aa604 3183 #ifdef GuiConst_CHARMODE_UNICODE
jmitc91516 0:9140ec6aa604 3184 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3185 static void ExtractUnicodeString(
jmitc91516 0:9140ec6aa604 3186 GuiConst_INT8U PrefixLocate *ItemTextPtr,
jmitc91516 0:9140ec6aa604 3187 GuiConst_INT16U TextLength)
jmitc91516 0:9140ec6aa604 3188 {
jmitc91516 0:9140ec6aa604 3189 GuiConst_INT16U P;
jmitc91516 0:9140ec6aa604 3190
jmitc91516 0:9140ec6aa604 3191 for (P = 0; P < TextLength; P++)
jmitc91516 0:9140ec6aa604 3192 sgl.UnicodeTextBuf[P] = GetItemWord(&ItemTextPtr);
jmitc91516 0:9140ec6aa604 3193 sgl.UnicodeTextBuf[TextLength] = 0;
jmitc91516 0:9140ec6aa604 3194 }
jmitc91516 0:9140ec6aa604 3195 #endif
jmitc91516 0:9140ec6aa604 3196
jmitc91516 0:9140ec6aa604 3197 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3198 static void SetCurFont(
jmitc91516 0:9140ec6aa604 3199 GuiConst_INT8U FontIndex)
jmitc91516 0:9140ec6aa604 3200 {
jmitc91516 0:9140ec6aa604 3201 if (FontIndex >= GuiFont_FontCnt)
jmitc91516 0:9140ec6aa604 3202 sgl.CurFont = (GuiLib_FontRecPtr)ReadWord(GuiFont_FontList[0]);
jmitc91516 0:9140ec6aa604 3203 else
jmitc91516 0:9140ec6aa604 3204 sgl.CurFont = (GuiLib_FontRecPtr)ReadWord(GuiFont_FontList[FontIndex]);
jmitc91516 0:9140ec6aa604 3205 }
jmitc91516 0:9140ec6aa604 3206
jmitc91516 0:9140ec6aa604 3207 #ifdef GuiConst_BITMAP_SUPPORT_ON
jmitc91516 0:9140ec6aa604 3208 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3209 static void UpdateBackgroundBitmap(void)
jmitc91516 0:9140ec6aa604 3210 {
jmitc91516 0:9140ec6aa604 3211 GuiConst_INT8U BackgroundOn;
jmitc91516 0:9140ec6aa604 3212 GuiConst_INT16U BackgroundX1, BackgroundY1, BackgroundX2, BackgroundY2;
jmitc91516 0:9140ec6aa604 3213 GuiConst_INT16S N;
jmitc91516 0:9140ec6aa604 3214
jmitc91516 0:9140ec6aa604 3215 for (N = 0; N < GuiConst_MAX_BACKGROUND_BITMAPS; N++)
jmitc91516 0:9140ec6aa604 3216 if (sgl.BackgrBitmapAry[N].InUse)
jmitc91516 0:9140ec6aa604 3217 {
jmitc91516 0:9140ec6aa604 3218 BackgroundOn = 0;
jmitc91516 0:9140ec6aa604 3219 switch (sgl.CurItem.ItemType)
jmitc91516 0:9140ec6aa604 3220 {
jmitc91516 0:9140ec6aa604 3221 case GuiLib_ITEM_TEXT:
jmitc91516 0:9140ec6aa604 3222 case GuiLib_ITEM_VAR:
jmitc91516 0:9140ec6aa604 3223 BackgroundOn = 1;
jmitc91516 0:9140ec6aa604 3224 if (sgl.CurItem.TextPar[0].BackBoxSizeX == 0)
jmitc91516 0:9140ec6aa604 3225 {
jmitc91516 0:9140ec6aa604 3226 BackgroundX1 = sgl.CurItem.DrawnX1;
jmitc91516 0:9140ec6aa604 3227 BackgroundY1 = sgl.CurItem.DrawnY1;
jmitc91516 0:9140ec6aa604 3228 BackgroundX2 = sgl.CurItem.DrawnX2;
jmitc91516 0:9140ec6aa604 3229 BackgroundY2 = sgl.CurItem.DrawnY2;
jmitc91516 0:9140ec6aa604 3230 }
jmitc91516 0:9140ec6aa604 3231 else
jmitc91516 0:9140ec6aa604 3232 {
jmitc91516 0:9140ec6aa604 3233 SetCurFont(sgl.CurItem.TextPar[0].FontIndex);
jmitc91516 0:9140ec6aa604 3234 SetBackBox(0);
jmitc91516 0:9140ec6aa604 3235 BackgroundX1 = sgl.BbX1;
jmitc91516 0:9140ec6aa604 3236 BackgroundY1 = sgl.BbY1;
jmitc91516 0:9140ec6aa604 3237 BackgroundX2 = sgl.BbX2;
jmitc91516 0:9140ec6aa604 3238 BackgroundY2 = sgl.BbY2;
jmitc91516 0:9140ec6aa604 3239 }
jmitc91516 0:9140ec6aa604 3240 break;
jmitc91516 0:9140ec6aa604 3241
jmitc91516 0:9140ec6aa604 3242 case GuiLib_ITEM_STRUCTURE:
jmitc91516 0:9140ec6aa604 3243 case GuiLib_ITEM_STRUCTARRAY:
jmitc91516 0:9140ec6aa604 3244 case GuiLib_ITEM_STRUCTCOND:
jmitc91516 0:9140ec6aa604 3245 if (sgl.CurItem.Drawn)
jmitc91516 0:9140ec6aa604 3246 {
jmitc91516 0:9140ec6aa604 3247 BackgroundOn = 1;
jmitc91516 0:9140ec6aa604 3248 BackgroundX1 = sgl.CurItem.DrawnX1;
jmitc91516 0:9140ec6aa604 3249 BackgroundY1 = sgl.CurItem.DrawnY1;
jmitc91516 0:9140ec6aa604 3250 BackgroundX2 = sgl.CurItem.DrawnX2;
jmitc91516 0:9140ec6aa604 3251 BackgroundY2 = sgl.CurItem.DrawnY2;
jmitc91516 0:9140ec6aa604 3252 }
jmitc91516 0:9140ec6aa604 3253 break;
jmitc91516 0:9140ec6aa604 3254
jmitc91516 0:9140ec6aa604 3255 case GuiLib_ITEM_TEXTBLOCK:
jmitc91516 0:9140ec6aa604 3256 case GuiLib_ITEM_VARBLOCK:
jmitc91516 0:9140ec6aa604 3257 case GuiLib_ITEM_CHECKBOX:
jmitc91516 0:9140ec6aa604 3258 case GuiLib_ITEM_BUTTON:
jmitc91516 0:9140ec6aa604 3259 case GuiLib_ITEM_EDITBOX:
jmitc91516 0:9140ec6aa604 3260 case GuiLib_ITEM_PANEL:
jmitc91516 0:9140ec6aa604 3261 case GuiLib_ITEM_MEMO:
jmitc91516 0:9140ec6aa604 3262 case GuiLib_ITEM_LISTBOX:
jmitc91516 0:9140ec6aa604 3263 case GuiLib_ITEM_COMBOBOX:
jmitc91516 0:9140ec6aa604 3264 case GuiLib_ITEM_SCROLLBOX:
jmitc91516 0:9140ec6aa604 3265 case GuiLib_ITEM_SCROLLAREA:
jmitc91516 0:9140ec6aa604 3266 case GuiLib_ITEM_PROGRESSBAR:
jmitc91516 0:9140ec6aa604 3267 if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_TRANSPARENT)
jmitc91516 0:9140ec6aa604 3268 {
jmitc91516 0:9140ec6aa604 3269 BackgroundOn = 1;
jmitc91516 0:9140ec6aa604 3270 SetBackColorBox(sgl.CurItem.X1, sgl.CurItem.Y1,
jmitc91516 0:9140ec6aa604 3271 sgl.CurItem.X2, sgl.CurItem.Y2,
jmitc91516 0:9140ec6aa604 3272 0);
jmitc91516 0:9140ec6aa604 3273 BackgroundX1 = sgl.BbX1;
jmitc91516 0:9140ec6aa604 3274 BackgroundY1 = sgl.BbY1;
jmitc91516 0:9140ec6aa604 3275 BackgroundX2 = sgl.BbX2;
jmitc91516 0:9140ec6aa604 3276 BackgroundY2 = sgl.BbY2;
jmitc91516 0:9140ec6aa604 3277 }
jmitc91516 0:9140ec6aa604 3278 break;
jmitc91516 0:9140ec6aa604 3279 #ifdef GuiConst_ITEM_RADIOBUTTON_INUSE
jmitc91516 0:9140ec6aa604 3280 case GuiLib_ITEM_RADIOBUTTON:
jmitc91516 0:9140ec6aa604 3281 if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_TRANSPARENT)
jmitc91516 0:9140ec6aa604 3282 {
jmitc91516 0:9140ec6aa604 3283 BackgroundOn = 1;
jmitc91516 0:9140ec6aa604 3284 SetBackColorBox(sgl.CurItem.X1,
jmitc91516 0:9140ec6aa604 3285 sgl.CurItem.Y1,
jmitc91516 0:9140ec6aa604 3286 sgl.CurItem.X2,
jmitc91516 0:9140ec6aa604 3287 sgl.CurItem.Y2 +
jmitc91516 0:9140ec6aa604 3288 (sgl.CurItem.CompPars.CompRadioButton.Count - 1) *
jmitc91516 0:9140ec6aa604 3289 sgl.CurItem.CompPars.CompRadioButton.InterDistance,
jmitc91516 0:9140ec6aa604 3290 0);
jmitc91516 0:9140ec6aa604 3291 BackgroundX1 = sgl.BbX1;
jmitc91516 0:9140ec6aa604 3292 BackgroundY1 = sgl.BbY1;
jmitc91516 0:9140ec6aa604 3293 BackgroundX2 = sgl.BbX2;
jmitc91516 0:9140ec6aa604 3294 BackgroundY2 = sgl.BbY2;
jmitc91516 0:9140ec6aa604 3295 }
jmitc91516 0:9140ec6aa604 3296 break;
jmitc91516 0:9140ec6aa604 3297 #endif
jmitc91516 0:9140ec6aa604 3298 }
jmitc91516 0:9140ec6aa604 3299 if (BackgroundOn)
jmitc91516 0:9140ec6aa604 3300 GuiLib_ShowBitmapArea(sgl.BackgrBitmapAry[N].Index,
jmitc91516 0:9140ec6aa604 3301 sgl.BackgrBitmapAry[N].X, sgl.BackgrBitmapAry[N].Y,
jmitc91516 0:9140ec6aa604 3302 BackgroundX1, BackgroundY1, BackgroundX2, BackgroundY2, -1);
jmitc91516 0:9140ec6aa604 3303 }
jmitc91516 0:9140ec6aa604 3304 }
jmitc91516 0:9140ec6aa604 3305 #endif
jmitc91516 0:9140ec6aa604 3306
jmitc91516 0:9140ec6aa604 3307 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 3308 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3309 static void StartClipping(
jmitc91516 0:9140ec6aa604 3310 GuiConst_INT8U Clipping)
jmitc91516 0:9140ec6aa604 3311 {
jmitc91516 0:9140ec6aa604 3312 #ifdef GuiConst_REL_COORD_ORIGO_INUSE
jmitc91516 0:9140ec6aa604 3313 sgl.CurItem.ClipRectX1 += sgl.CoordOrigoX;
jmitc91516 0:9140ec6aa604 3314 sgl.CurItem.ClipRectY1 += sgl.CoordOrigoY;
jmitc91516 0:9140ec6aa604 3315 sgl.CurItem.ClipRectX2 += sgl.CoordOrigoX;
jmitc91516 0:9140ec6aa604 3316 sgl.CurItem.ClipRectY2 += sgl.CoordOrigoY;
jmitc91516 0:9140ec6aa604 3317 #endif
jmitc91516 0:9140ec6aa604 3318 if (Clipping)
jmitc91516 0:9140ec6aa604 3319 {
jmitc91516 0:9140ec6aa604 3320 OrderCoord(&sgl.CurItem.ClipRectX1, &sgl.CurItem.ClipRectX2);
jmitc91516 0:9140ec6aa604 3321 OrderCoord(&sgl.CurItem.ClipRectY1, &sgl.CurItem.ClipRectY2);
jmitc91516 0:9140ec6aa604 3322 if (sgl.CurItem.ClipRectX1 < sgl.ActiveAreaX1)
jmitc91516 0:9140ec6aa604 3323 sgl.CurItem.ClipRectX1 = sgl.ActiveAreaX1;
jmitc91516 0:9140ec6aa604 3324 if (sgl.CurItem.ClipRectY1 < sgl.ActiveAreaY1)
jmitc91516 0:9140ec6aa604 3325 sgl.CurItem.ClipRectY1 = sgl.ActiveAreaY1;
jmitc91516 0:9140ec6aa604 3326 if (sgl.CurItem.ClipRectX2 > sgl.ActiveAreaX2)
jmitc91516 0:9140ec6aa604 3327 sgl.CurItem.ClipRectX2 = sgl.ActiveAreaX2;
jmitc91516 0:9140ec6aa604 3328 if (sgl.CurItem.ClipRectY2 > sgl.ActiveAreaY2)
jmitc91516 0:9140ec6aa604 3329 sgl.CurItem.ClipRectY2 = sgl.ActiveAreaY2;
jmitc91516 0:9140ec6aa604 3330 }
jmitc91516 0:9140ec6aa604 3331 else
jmitc91516 0:9140ec6aa604 3332 {
jmitc91516 0:9140ec6aa604 3333 sgl.CurItem.ClipRectX1 = sgl.ActiveAreaX1;
jmitc91516 0:9140ec6aa604 3334 sgl.CurItem.ClipRectY1 = sgl.ActiveAreaY1;
jmitc91516 0:9140ec6aa604 3335 sgl.CurItem.ClipRectX2 = sgl.ActiveAreaX2;
jmitc91516 0:9140ec6aa604 3336 sgl.CurItem.ClipRectY2 = sgl.ActiveAreaY2;
jmitc91516 0:9140ec6aa604 3337 }
jmitc91516 0:9140ec6aa604 3338 #ifdef GuiConst_REL_COORD_ORIGO_INUSE
jmitc91516 0:9140ec6aa604 3339 sgl.CurItem.ClipRectX1 -= sgl.CoordOrigoX;
jmitc91516 0:9140ec6aa604 3340 sgl.CurItem.ClipRectY1 -= sgl.CoordOrigoY;
jmitc91516 0:9140ec6aa604 3341 sgl.CurItem.ClipRectX2 -= sgl.CoordOrigoX;
jmitc91516 0:9140ec6aa604 3342 sgl.CurItem.ClipRectY2 -= sgl.CoordOrigoY;
jmitc91516 0:9140ec6aa604 3343 #endif
jmitc91516 0:9140ec6aa604 3344 GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1,
jmitc91516 0:9140ec6aa604 3345 sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2);
jmitc91516 0:9140ec6aa604 3346 }
jmitc91516 0:9140ec6aa604 3347 #endif
jmitc91516 0:9140ec6aa604 3348
jmitc91516 0:9140ec6aa604 3349 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3350 static void PrepareInternalStruct(void)
jmitc91516 0:9140ec6aa604 3351 {
jmitc91516 0:9140ec6aa604 3352 sgl.Memory.X[GuiLib_MEMORY_CNT] = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3353 sgl.Memory.Y[GuiLib_MEMORY_CNT] = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3354 }
jmitc91516 0:9140ec6aa604 3355
jmitc91516 0:9140ec6aa604 3356 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3357 static void DrawSubStruct(
jmitc91516 0:9140ec6aa604 3358 GuiConst_INT16U SubStructIndex,
jmitc91516 0:9140ec6aa604 3359 GuiConst_INT8U ColorInvert,
jmitc91516 0:9140ec6aa604 3360 GuiConst_INT8U SubInt)
jmitc91516 0:9140ec6aa604 3361 {
jmitc91516 0:9140ec6aa604 3362 GuiLib_ItemRec RemCurItem;
jmitc91516 0:9140ec6aa604 3363 GuiLib_StructPtr StructToCall;
jmitc91516 0:9140ec6aa604 3364 GuiConst_INT8U RemBackBox;
jmitc91516 0:9140ec6aa604 3365 GuiConst_INT16S RemBbX1, RemBbX2;
jmitc91516 0:9140ec6aa604 3366 GuiConst_INT16S RemBbY1, RemBbY2;
jmitc91516 0:9140ec6aa604 3367 GuiConst_INT8U RemDrawn;
jmitc91516 0:9140ec6aa604 3368 GuiConst_INT16S RemDrawnX1, RemDrawnY1, RemDrawnX2, RemDrawnY2;
jmitc91516 0:9140ec6aa604 3369 GuiConst_INT16S RemAutoRedrawSaveIndex;
jmitc91516 0:9140ec6aa604 3370 GuiConst_INT16S RemAutoRedrawParent;
jmitc91516 0:9140ec6aa604 3371 GuiConst_INT16S RemAutoRedrawLatest;
jmitc91516 0:9140ec6aa604 3372 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 3373 GuiConst_INT32U RemRemoteStructOffset;
jmitc91516 0:9140ec6aa604 3374 #endif
jmitc91516 0:9140ec6aa604 3375
jmitc91516 0:9140ec6aa604 3376 if (SubStructIndex != 0xFFFF)
jmitc91516 0:9140ec6aa604 3377 {
jmitc91516 0:9140ec6aa604 3378 RemAutoRedrawParent = sgl.AutoRedrawParent;
jmitc91516 0:9140ec6aa604 3379 RemAutoRedrawLatest = sgl.AutoRedrawLatest;
jmitc91516 0:9140ec6aa604 3380
jmitc91516 0:9140ec6aa604 3381 sgl.AutoRedrawParent = sgl.AutoRedrawLatest;
jmitc91516 0:9140ec6aa604 3382
jmitc91516 0:9140ec6aa604 3383 if (SubInt)
jmitc91516 0:9140ec6aa604 3384 memcpy(&RemCurItem, &sgl.CurItem, sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 3385
jmitc91516 0:9140ec6aa604 3386 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 3387 RemRemoteStructOffset = sgl.RemoteStructOffset;
jmitc91516 0:9140ec6aa604 3388 #endif
jmitc91516 0:9140ec6aa604 3389 RemBackBox = (sgl.CurItem.TextPar[0].BackBoxSizeX);
jmitc91516 0:9140ec6aa604 3390 RemBbX1 = sgl.BbX1;
jmitc91516 0:9140ec6aa604 3391 RemBbX2 = sgl.BbX2;
jmitc91516 0:9140ec6aa604 3392 RemBbY1 = sgl.BbY1;
jmitc91516 0:9140ec6aa604 3393 RemBbY2 = sgl.BbY2;
jmitc91516 0:9140ec6aa604 3394 RemDrawn = gl.Drawn;
jmitc91516 0:9140ec6aa604 3395 RemDrawnX1 = gl.DrawnX1;
jmitc91516 0:9140ec6aa604 3396 RemDrawnY1 = gl.DrawnY1;
jmitc91516 0:9140ec6aa604 3397 RemDrawnX2 = gl.DrawnX2;
jmitc91516 0:9140ec6aa604 3398 RemDrawnY2 = gl.DrawnY2;
jmitc91516 0:9140ec6aa604 3399 ResetDrawLimits();
jmitc91516 0:9140ec6aa604 3400 RemAutoRedrawSaveIndex = sgl.AutoRedrawSaveIndex;
jmitc91516 0:9140ec6aa604 3401
jmitc91516 0:9140ec6aa604 3402 sgl.DisplayLevel++;
jmitc91516 0:9140ec6aa604 3403 StructToCall =
jmitc91516 0:9140ec6aa604 3404 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 3405 GetRemoteStructData(SubStructIndex);
jmitc91516 0:9140ec6aa604 3406 #else
jmitc91516 0:9140ec6aa604 3407 (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[SubStructIndex]);
jmitc91516 0:9140ec6aa604 3408 #endif
jmitc91516 0:9140ec6aa604 3409 DrawStructure(StructToCall, ColorInvert);
jmitc91516 0:9140ec6aa604 3410 sgl.DisplayLevel--;
jmitc91516 0:9140ec6aa604 3411
jmitc91516 0:9140ec6aa604 3412 if (RemBackBox)
jmitc91516 0:9140ec6aa604 3413 {
jmitc91516 0:9140ec6aa604 3414 sgl.CurItem.Drawn = 1;
jmitc91516 0:9140ec6aa604 3415 sgl.CurItem.DrawnX1 = RemBbX1;
jmitc91516 0:9140ec6aa604 3416 sgl.CurItem.DrawnY1 = RemBbY1;
jmitc91516 0:9140ec6aa604 3417 sgl.CurItem.DrawnX2 = RemBbX2;
jmitc91516 0:9140ec6aa604 3418 sgl.CurItem.DrawnY2 = RemBbY2;
jmitc91516 0:9140ec6aa604 3419
jmitc91516 0:9140ec6aa604 3420 gl.DrawnX1 = GuiLib_GET_MIN(sgl.BbX1, RemDrawnX1);
jmitc91516 0:9140ec6aa604 3421 gl.DrawnY1 = GuiLib_GET_MIN(sgl.BbY1, RemDrawnY1);
jmitc91516 0:9140ec6aa604 3422 gl.DrawnX2 = GuiLib_GET_MAX(sgl.BbX2, RemDrawnX2);
jmitc91516 0:9140ec6aa604 3423 gl.DrawnY2 = GuiLib_GET_MAX(sgl.BbY2, RemDrawnY2);
jmitc91516 0:9140ec6aa604 3424 }
jmitc91516 0:9140ec6aa604 3425 else if (gl.Drawn)
jmitc91516 0:9140ec6aa604 3426 {
jmitc91516 0:9140ec6aa604 3427 sgl.CurItem.Drawn = 1;
jmitc91516 0:9140ec6aa604 3428 sgl.CurItem.DrawnX1 = gl.DrawnX1;
jmitc91516 0:9140ec6aa604 3429 sgl.CurItem.DrawnY1 = gl.DrawnY1;
jmitc91516 0:9140ec6aa604 3430 sgl.CurItem.DrawnX2 = gl.DrawnX2;
jmitc91516 0:9140ec6aa604 3431 sgl.CurItem.DrawnY2 = gl.DrawnY2;
jmitc91516 0:9140ec6aa604 3432
jmitc91516 0:9140ec6aa604 3433 gl.DrawnX1 = GuiLib_GET_MIN(gl.DrawnX1, RemDrawnX1);
jmitc91516 0:9140ec6aa604 3434 gl.DrawnY1 = GuiLib_GET_MIN(gl.DrawnY1, RemDrawnY1);
jmitc91516 0:9140ec6aa604 3435 gl.DrawnX2 = GuiLib_GET_MAX(gl.DrawnX2, RemDrawnX2);
jmitc91516 0:9140ec6aa604 3436 gl.DrawnY2 = GuiLib_GET_MAX(gl.DrawnY2, RemDrawnY2);
jmitc91516 0:9140ec6aa604 3437 }
jmitc91516 0:9140ec6aa604 3438 else
jmitc91516 0:9140ec6aa604 3439 {
jmitc91516 0:9140ec6aa604 3440 gl.Drawn = RemDrawn;
jmitc91516 0:9140ec6aa604 3441 gl.DrawnX1 = RemDrawnX1;
jmitc91516 0:9140ec6aa604 3442 gl.DrawnY1 = RemDrawnY1;
jmitc91516 0:9140ec6aa604 3443 gl.DrawnX2 = RemDrawnX2;
jmitc91516 0:9140ec6aa604 3444 gl.DrawnY2 = RemDrawnY2;
jmitc91516 0:9140ec6aa604 3445 }
jmitc91516 0:9140ec6aa604 3446 sgl.AutoRedrawSaveIndex = RemAutoRedrawSaveIndex;
jmitc91516 0:9140ec6aa604 3447
jmitc91516 0:9140ec6aa604 3448 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 3449 sgl.RemoteStructOffset = RemRemoteStructOffset;
jmitc91516 0:9140ec6aa604 3450 #endif
jmitc91516 0:9140ec6aa604 3451
jmitc91516 0:9140ec6aa604 3452 if (SubInt)
jmitc91516 0:9140ec6aa604 3453 memcpy(&sgl.CurItem, &RemCurItem, sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 3454
jmitc91516 0:9140ec6aa604 3455 sgl.AutoRedrawLatest = RemAutoRedrawLatest;
jmitc91516 0:9140ec6aa604 3456 sgl.AutoRedrawParent = RemAutoRedrawParent;
jmitc91516 0:9140ec6aa604 3457 }
jmitc91516 0:9140ec6aa604 3458 }
jmitc91516 0:9140ec6aa604 3459
jmitc91516 0:9140ec6aa604 3460 #include "GuiItems.h"
jmitc91516 0:9140ec6aa604 3461
jmitc91516 0:9140ec6aa604 3462 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3463 static void DrawStructure(
jmitc91516 0:9140ec6aa604 3464 GuiLib_StructPtr Structure,
jmitc91516 0:9140ec6aa604 3465 GuiConst_INT8U ColorInvert) PrefixReentrant
jmitc91516 0:9140ec6aa604 3466 {
jmitc91516 0:9140ec6aa604 3467 GuiConst_INT16S ItemNdx;
jmitc91516 0:9140ec6aa604 3468 GuiConst_INT16S X, RemAutoRedrawLatest;
jmitc91516 0:9140ec6aa604 3469 void PrefixLocate *XVarPtr;
jmitc91516 0:9140ec6aa604 3470 void PrefixLocate *YVarPtr;
jmitc91516 0:9140ec6aa604 3471 GuiConst_INT8U ItemCnt;
jmitc91516 0:9140ec6aa604 3472 GuiConst_INT8U PrefixLocate *LocalItemDataPtr;
jmitc91516 0:9140ec6aa604 3473 #ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE
jmitc91516 0:9140ec6aa604 3474 GuiConst_INT16S I;
jmitc91516 0:9140ec6aa604 3475 #endif
jmitc91516 0:9140ec6aa604 3476 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 3477 GuiConst_INT8U ItemSizeBuf[2];
jmitc91516 0:9140ec6aa604 3478 GuiConst_INT16U ItemSize;
jmitc91516 0:9140ec6aa604 3479 #endif
jmitc91516 0:9140ec6aa604 3480
jmitc91516 0:9140ec6aa604 3481 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 3482 LocalItemDataPtr = sgl.GuiLib_RemoteStructBuffer;
jmitc91516 0:9140ec6aa604 3483 #else
jmitc91516 0:9140ec6aa604 3484 LocalItemDataPtr = (GuiConst_INT8U PrefixLocate *)Structure;
jmitc91516 0:9140ec6aa604 3485 #endif
jmitc91516 0:9140ec6aa604 3486 ItemCnt = GetItemByte(&LocalItemDataPtr);
jmitc91516 0:9140ec6aa604 3487
jmitc91516 0:9140ec6aa604 3488 for (ItemNdx = 0; ItemNdx < ItemCnt; ItemNdx++)
jmitc91516 0:9140ec6aa604 3489 {
jmitc91516 0:9140ec6aa604 3490 RemAutoRedrawLatest = sgl.AutoRedrawLatest;
jmitc91516 0:9140ec6aa604 3491
jmitc91516 0:9140ec6aa604 3492 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 3493 GuiLib_RemoteDataReadBlock(
jmitc91516 0:9140ec6aa604 3494 sgl.RemoteStructOffset,
jmitc91516 0:9140ec6aa604 3495 2,
jmitc91516 0:9140ec6aa604 3496 (GuiConst_INT8U*)&ItemSizeBuf);
jmitc91516 0:9140ec6aa604 3497 ItemSize = (256 * (GuiConst_INT16U)ItemSizeBuf[1]) + ItemSizeBuf[0];
jmitc91516 0:9140ec6aa604 3498 sgl.RemoteStructOffset += 2;
jmitc91516 0:9140ec6aa604 3499 GuiLib_RemoteDataReadBlock(
jmitc91516 0:9140ec6aa604 3500 sgl.RemoteStructOffset,
jmitc91516 0:9140ec6aa604 3501 ItemSize,
jmitc91516 0:9140ec6aa604 3502 sgl.GuiLib_RemoteItemBuffer);
jmitc91516 0:9140ec6aa604 3503 sgl.RemoteStructOffset += ItemSize;
jmitc91516 0:9140ec6aa604 3504 LocalItemDataPtr = &sgl.GuiLib_RemoteItemBuffer[0];
jmitc91516 0:9140ec6aa604 3505 #endif
jmitc91516 0:9140ec6aa604 3506
jmitc91516 0:9140ec6aa604 3507 sgl.ItemDataPtr = LocalItemDataPtr;
jmitc91516 0:9140ec6aa604 3508 ReadItem(GuiLib_LanguageIndex);
jmitc91516 0:9140ec6aa604 3509 LocalItemDataPtr = sgl.ItemDataPtr;
jmitc91516 0:9140ec6aa604 3510
jmitc91516 0:9140ec6aa604 3511 if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_CLEARAREA +
jmitc91516 0:9140ec6aa604 3512 GuiLib_ITEMBIT_TEXT +
jmitc91516 0:9140ec6aa604 3513 GuiLib_ITEMBIT_TEXTBLOCK +
jmitc91516 0:9140ec6aa604 3514 GuiLib_ITEMBIT_DOT +
jmitc91516 0:9140ec6aa604 3515 GuiLib_ITEMBIT_LINE +
jmitc91516 0:9140ec6aa604 3516 GuiLib_ITEMBIT_FRAME +
jmitc91516 0:9140ec6aa604 3517 GuiLib_ITEMBIT_BLOCK +
jmitc91516 0:9140ec6aa604 3518 GuiLib_ITEMBIT_CIRCLE +
jmitc91516 0:9140ec6aa604 3519 GuiLib_ITEMBIT_ELLIPSE +
jmitc91516 0:9140ec6aa604 3520 GuiLib_ITEMBIT_BITMAP +
jmitc91516 0:9140ec6aa604 3521 GuiLib_ITEMBIT_BACKGROUND +
jmitc91516 0:9140ec6aa604 3522 GuiLib_ITEMBIT_STRUCTURE +
jmitc91516 0:9140ec6aa604 3523 GuiLib_ITEMBIT_STRUCTARRAY +
jmitc91516 0:9140ec6aa604 3524 GuiLib_ITEMBIT_ACTIVEAREA +
jmitc91516 0:9140ec6aa604 3525 GuiLib_ITEMBIT_CLIPRECT +
jmitc91516 0:9140ec6aa604 3526 GuiLib_ITEMBIT_VAR +
jmitc91516 0:9140ec6aa604 3527 GuiLib_ITEMBIT_VARBLOCK +
jmitc91516 0:9140ec6aa604 3528 GuiLib_ITEMBIT_TOUCHAREA +
jmitc91516 0:9140ec6aa604 3529 GuiLib_ITEMBIT_SCROLLBOX +
jmitc91516 0:9140ec6aa604 3530 GuiLib_ITEMBIT_GRAPH +
jmitc91516 0:9140ec6aa604 3531 GuiLib_ITEMBIT_GRAPHICSLAYER)) ||
jmitc91516 0:9140ec6aa604 3532 (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME +
jmitc91516 0:9140ec6aa604 3533 GuiLib_ITEMBIT_ROUNDEDBLOCK +
jmitc91516 0:9140ec6aa604 3534 GuiLib_ITEMBIT_QUARTERCIRCLE +
jmitc91516 0:9140ec6aa604 3535 GuiLib_ITEMBIT_QUARTERELLIPSE +
jmitc91516 0:9140ec6aa604 3536 GuiLib_ITEMBIT_CHECKBOX +
jmitc91516 0:9140ec6aa604 3537 GuiLib_ITEMBIT_RADIOBUTTON +
jmitc91516 0:9140ec6aa604 3538 GuiLib_ITEMBIT_BUTTON +
jmitc91516 0:9140ec6aa604 3539 GuiLib_ITEMBIT_EDITBOX +
jmitc91516 0:9140ec6aa604 3540 GuiLib_ITEMBIT_PANEL +
jmitc91516 0:9140ec6aa604 3541 GuiLib_ITEMBIT_MEMO +
jmitc91516 0:9140ec6aa604 3542 GuiLib_ITEMBIT_LISTBOX +
jmitc91516 0:9140ec6aa604 3543 GuiLib_ITEMBIT_COMBOBOX +
jmitc91516 0:9140ec6aa604 3544 GuiLib_ITEMBIT_SCROLLAREA +
jmitc91516 0:9140ec6aa604 3545 GuiLib_ITEMBIT_PROGRESSBAR +
jmitc91516 0:9140ec6aa604 3546 GuiLib_ITEMBIT_STRUCTCOND +
jmitc91516 0:9140ec6aa604 3547 GuiLib_ITEMBIT_POSCALLBACK)))
jmitc91516 0:9140ec6aa604 3548 {
jmitc91516 0:9140ec6aa604 3549 if (sgl.CommonByte2 & 0x10)
jmitc91516 0:9140ec6aa604 3550 {
jmitc91516 0:9140ec6aa604 3551 XVarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[sgl.X1VarIdx]);
jmitc91516 0:9140ec6aa604 3552 sgl.X1VarType = ReadByte(GuiStruct_VarTypeList[sgl.X1VarIdx]);
jmitc91516 0:9140ec6aa604 3553 }
jmitc91516 0:9140ec6aa604 3554 else
jmitc91516 0:9140ec6aa604 3555 XVarPtr = 0;
jmitc91516 0:9140ec6aa604 3556 if (XVarPtr != 0)
jmitc91516 0:9140ec6aa604 3557 sgl.ItemX1 += ReadVar(XVarPtr, sgl.X1VarType);
jmitc91516 0:9140ec6aa604 3558 if (sgl.X1MemoryRead > 0)
jmitc91516 0:9140ec6aa604 3559 sgl.ItemX1 += sgl.Memory.X[sgl.X1MemoryRead - 1];
jmitc91516 0:9140ec6aa604 3560 if (sgl.X1Mode == GuiLib_COOR_REL)
jmitc91516 0:9140ec6aa604 3561 sgl.ItemX1 += sgl.CurItem.RX;
jmitc91516 0:9140ec6aa604 3562 else if (sgl.X1Mode == GuiLib_COOR_REL_1)
jmitc91516 0:9140ec6aa604 3563 sgl.ItemX1 += sgl.CurItem.RX1;
jmitc91516 0:9140ec6aa604 3564 else if (sgl.X1Mode == GuiLib_COOR_REL_2)
jmitc91516 0:9140ec6aa604 3565 sgl.ItemX1 += sgl.CurItem.RX2;
jmitc91516 0:9140ec6aa604 3566 if (sgl.X1MemoryWrite > 0)
jmitc91516 0:9140ec6aa604 3567 sgl.Memory.X[sgl.X1MemoryWrite - 1] = sgl.ItemX1;
jmitc91516 0:9140ec6aa604 3568 sgl.CurItem.X1 = sgl.ItemX1;
jmitc91516 0:9140ec6aa604 3569
jmitc91516 0:9140ec6aa604 3570 if (sgl.CommonByte2 & 0x20)
jmitc91516 0:9140ec6aa604 3571 {
jmitc91516 0:9140ec6aa604 3572 YVarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[sgl.Y1VarIdx]);
jmitc91516 0:9140ec6aa604 3573 sgl.Y1VarType = ReadByte(GuiStruct_VarTypeList[sgl.Y1VarIdx]);
jmitc91516 0:9140ec6aa604 3574 }
jmitc91516 0:9140ec6aa604 3575 else
jmitc91516 0:9140ec6aa604 3576 YVarPtr = 0;
jmitc91516 0:9140ec6aa604 3577 if (YVarPtr != 0)
jmitc91516 0:9140ec6aa604 3578 sgl.ItemY1 += ReadVar(YVarPtr, sgl.Y1VarType);
jmitc91516 0:9140ec6aa604 3579 if (sgl.Y1MemoryRead > 0)
jmitc91516 0:9140ec6aa604 3580 sgl.ItemY1 += sgl.Memory.Y[sgl.Y1MemoryRead - 1];
jmitc91516 0:9140ec6aa604 3581 if (sgl.Y1Mode == GuiLib_COOR_REL)
jmitc91516 0:9140ec6aa604 3582 sgl.ItemY1 += sgl.CurItem.RY;
jmitc91516 0:9140ec6aa604 3583 else if (sgl.Y1Mode == GuiLib_COOR_REL_1)
jmitc91516 0:9140ec6aa604 3584 sgl.ItemY1 += sgl.CurItem.RY1;
jmitc91516 0:9140ec6aa604 3585 else if (sgl.Y1Mode == GuiLib_COOR_REL_2)
jmitc91516 0:9140ec6aa604 3586 sgl.ItemY1 += sgl.CurItem.RY2;
jmitc91516 0:9140ec6aa604 3587 if (sgl.Y1MemoryWrite > 0)
jmitc91516 0:9140ec6aa604 3588 sgl.Memory.Y[sgl.Y1MemoryWrite - 1] = sgl.ItemY1;
jmitc91516 0:9140ec6aa604 3589 sgl.CurItem.Y1 = sgl.ItemY1;
jmitc91516 0:9140ec6aa604 3590
jmitc91516 0:9140ec6aa604 3591 sgl.CurItem.RX = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3592 sgl.CurItem.RY = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3593 }
jmitc91516 0:9140ec6aa604 3594
jmitc91516 0:9140ec6aa604 3595 #ifdef GuiConst_ITEM_SCROLLBOX_INUSE
jmitc91516 0:9140ec6aa604 3596 if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_SCROLLBOX)
jmitc91516 0:9140ec6aa604 3597 {
jmitc91516 0:9140ec6aa604 3598 sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].X1 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3599 sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].Y1 = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3600 sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].BackColor = sgl.CurItem.BackColor;
jmitc91516 0:9140ec6aa604 3601
jmitc91516 0:9140ec6aa604 3602 #ifndef GuiConst_SCROLLITEM_BAR_NONE
jmitc91516 0:9140ec6aa604 3603 if ((sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].BarMode & 0x03) ==
jmitc91516 0:9140ec6aa604 3604 GuiLib_COOR_REL)
jmitc91516 0:9140ec6aa604 3605 sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].BarPositionX += sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3606 if (((sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].BarMode >> 2) & 0x03) ==
jmitc91516 0:9140ec6aa604 3607 GuiLib_COOR_REL)
jmitc91516 0:9140ec6aa604 3608 sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].BarPositionY += sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3609 #endif
jmitc91516 0:9140ec6aa604 3610 #ifndef GuiConst_SCROLLITEM_INDICATOR_NONE
jmitc91516 0:9140ec6aa604 3611 if ((sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].IndicatorMode & 0x03) ==
jmitc91516 0:9140ec6aa604 3612 GuiLib_COOR_REL)
jmitc91516 0:9140ec6aa604 3613 sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].IndicatorPositionX += sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3614 if (((sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].IndicatorMode >> 2) & 0x03) ==
jmitc91516 0:9140ec6aa604 3615 GuiLib_COOR_REL)
jmitc91516 0:9140ec6aa604 3616 sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].IndicatorPositionY += sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3617 #endif
jmitc91516 0:9140ec6aa604 3618 }
jmitc91516 0:9140ec6aa604 3619 #endif
jmitc91516 0:9140ec6aa604 3620
jmitc91516 0:9140ec6aa604 3621 if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_CLEARAREA +
jmitc91516 0:9140ec6aa604 3622 GuiLib_ITEMBIT_TEXTBLOCK +
jmitc91516 0:9140ec6aa604 3623 GuiLib_ITEMBIT_VARBLOCK +
jmitc91516 0:9140ec6aa604 3624 GuiLib_ITEMBIT_LINE +
jmitc91516 0:9140ec6aa604 3625 GuiLib_ITEMBIT_FRAME +
jmitc91516 0:9140ec6aa604 3626 GuiLib_ITEMBIT_BLOCK +
jmitc91516 0:9140ec6aa604 3627 GuiLib_ITEMBIT_BITMAP +
jmitc91516 0:9140ec6aa604 3628 GuiLib_ITEMBIT_BACKGROUND +
jmitc91516 0:9140ec6aa604 3629 GuiLib_ITEMBIT_ACTIVEAREA +
jmitc91516 0:9140ec6aa604 3630 GuiLib_ITEMBIT_CLIPRECT +
jmitc91516 0:9140ec6aa604 3631 GuiLib_ITEMBIT_TOUCHAREA +
jmitc91516 0:9140ec6aa604 3632 GuiLib_ITEMBIT_GRAPH +
jmitc91516 0:9140ec6aa604 3633 GuiLib_ITEMBIT_GRAPHICSLAYER)) ||
jmitc91516 0:9140ec6aa604 3634 (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME +
jmitc91516 0:9140ec6aa604 3635 GuiLib_ITEMBIT_ROUNDEDBLOCK +
jmitc91516 0:9140ec6aa604 3636 GuiLib_ITEMBIT_BUTTON +
jmitc91516 0:9140ec6aa604 3637 GuiLib_ITEMBIT_EDITBOX +
jmitc91516 0:9140ec6aa604 3638 GuiLib_ITEMBIT_PANEL +
jmitc91516 0:9140ec6aa604 3639 GuiLib_ITEMBIT_MEMO +
jmitc91516 0:9140ec6aa604 3640 GuiLib_ITEMBIT_LISTBOX +
jmitc91516 0:9140ec6aa604 3641 GuiLib_ITEMBIT_COMBOBOX +
jmitc91516 0:9140ec6aa604 3642 GuiLib_ITEMBIT_SCROLLAREA +
jmitc91516 0:9140ec6aa604 3643 GuiLib_ITEMBIT_PROGRESSBAR)))
jmitc91516 0:9140ec6aa604 3644 {
jmitc91516 0:9140ec6aa604 3645 if (sgl.CommonByte2 & 0x40)
jmitc91516 0:9140ec6aa604 3646 {
jmitc91516 0:9140ec6aa604 3647 XVarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[sgl.X2VarIdx]);
jmitc91516 0:9140ec6aa604 3648 sgl.X2VarType = ReadByte(GuiStruct_VarTypeList[sgl.X2VarIdx]);
jmitc91516 0:9140ec6aa604 3649 }
jmitc91516 0:9140ec6aa604 3650 else
jmitc91516 0:9140ec6aa604 3651 XVarPtr = 0;
jmitc91516 0:9140ec6aa604 3652 if (XVarPtr != 0)
jmitc91516 0:9140ec6aa604 3653 sgl.ItemX2 += ReadVar(XVarPtr, sgl.X2VarType);
jmitc91516 0:9140ec6aa604 3654 if (sgl.X2MemoryRead > 0)
jmitc91516 0:9140ec6aa604 3655 sgl.ItemX2 += sgl.Memory.X[sgl.X2MemoryRead - 1];
jmitc91516 0:9140ec6aa604 3656 if (sgl.X2Mode == GuiLib_COOR_REL)
jmitc91516 0:9140ec6aa604 3657 sgl.ItemX2 += sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3658 else if (sgl.X2Mode == GuiLib_COOR_REL_1)
jmitc91516 0:9140ec6aa604 3659 sgl.ItemX2 += sgl.CurItem.RX1;
jmitc91516 0:9140ec6aa604 3660 else if (sgl.X2Mode == GuiLib_COOR_REL_2)
jmitc91516 0:9140ec6aa604 3661 sgl.ItemX2 += sgl.CurItem.RX2;
jmitc91516 0:9140ec6aa604 3662 if (sgl.X2MemoryWrite > 0)
jmitc91516 0:9140ec6aa604 3663 sgl.Memory.X[sgl.X2MemoryWrite - 1] = sgl.ItemX2;
jmitc91516 0:9140ec6aa604 3664 sgl.CurItem.X2 = sgl.ItemX2;
jmitc91516 0:9140ec6aa604 3665
jmitc91516 0:9140ec6aa604 3666 if (sgl.CommonByte2 & 0x80)
jmitc91516 0:9140ec6aa604 3667 {
jmitc91516 0:9140ec6aa604 3668 YVarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[sgl.Y2VarIdx]);
jmitc91516 0:9140ec6aa604 3669 sgl.Y2VarType = ReadByte(GuiStruct_VarTypeList[sgl.Y2VarIdx]);
jmitc91516 0:9140ec6aa604 3670 }
jmitc91516 0:9140ec6aa604 3671 else
jmitc91516 0:9140ec6aa604 3672 YVarPtr = 0;
jmitc91516 0:9140ec6aa604 3673 if (YVarPtr != 0)
jmitc91516 0:9140ec6aa604 3674 sgl.ItemY2 += ReadVar(YVarPtr, sgl.Y2VarType);
jmitc91516 0:9140ec6aa604 3675 if (sgl.Y2MemoryRead > 0)
jmitc91516 0:9140ec6aa604 3676 sgl.ItemY2 += sgl.Memory.Y[sgl.Y2MemoryRead - 1];
jmitc91516 0:9140ec6aa604 3677 if (sgl.Y2Mode == GuiLib_COOR_REL)
jmitc91516 0:9140ec6aa604 3678 sgl.ItemY2 += sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3679 else if (sgl.Y2Mode == GuiLib_COOR_REL_1)
jmitc91516 0:9140ec6aa604 3680 sgl.ItemY2 += sgl.CurItem.RY1;
jmitc91516 0:9140ec6aa604 3681 else if (sgl.Y2Mode == GuiLib_COOR_REL_2)
jmitc91516 0:9140ec6aa604 3682 sgl.ItemY2 += sgl.CurItem.RY2;
jmitc91516 0:9140ec6aa604 3683 if (sgl.Y2MemoryWrite > 0)
jmitc91516 0:9140ec6aa604 3684 sgl.Memory.Y[sgl.Y2MemoryWrite - 1] = sgl.ItemY2;
jmitc91516 0:9140ec6aa604 3685 sgl.CurItem.Y2 = sgl.ItemY2;
jmitc91516 0:9140ec6aa604 3686 }
jmitc91516 0:9140ec6aa604 3687 #ifdef GuiConst_ITEM_CHECKBOX_INUSE
jmitc91516 0:9140ec6aa604 3688 else if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_CHECKBOX)
jmitc91516 0:9140ec6aa604 3689 {
jmitc91516 0:9140ec6aa604 3690 switch (sgl.CurItem.CompPars.CompCheckBox.Style)
jmitc91516 0:9140ec6aa604 3691 {
jmitc91516 0:9140ec6aa604 3692 case GuiLib_CHECKBOX_FLAT:
jmitc91516 0:9140ec6aa604 3693 case GuiLib_CHECKBOX_3D:
jmitc91516 0:9140ec6aa604 3694 case GuiLib_CHECKBOX_NONE:
jmitc91516 0:9140ec6aa604 3695 sgl.CurItem.X2 = sgl.CurItem.X1 +
jmitc91516 0:9140ec6aa604 3696 sgl.CurItem.CompPars.CompCheckBox.Size - 1;
jmitc91516 0:9140ec6aa604 3697 sgl.CurItem.Y2 = sgl.CurItem.Y1 +
jmitc91516 0:9140ec6aa604 3698 sgl.CurItem.CompPars.CompCheckBox.Size - 1;
jmitc91516 0:9140ec6aa604 3699 break;
jmitc91516 0:9140ec6aa604 3700 case GuiLib_CHECKBOX_ICON:
jmitc91516 0:9140ec6aa604 3701 sgl.CurItem.X2 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3702 sgl.CurItem.Y2 = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3703 break;
jmitc91516 0:9140ec6aa604 3704 case GuiLib_CHECKBOX_BITMAP:
jmitc91516 0:9140ec6aa604 3705 sgl.CurItem.X2 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3706 sgl.CurItem.Y2 = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3707 break;
jmitc91516 0:9140ec6aa604 3708 }
jmitc91516 0:9140ec6aa604 3709 }
jmitc91516 0:9140ec6aa604 3710 #endif
jmitc91516 0:9140ec6aa604 3711 #ifdef GuiConst_ITEM_RADIOBUTTON_INUSE
jmitc91516 0:9140ec6aa604 3712 else if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_RADIOBUTTON)
jmitc91516 0:9140ec6aa604 3713 {
jmitc91516 0:9140ec6aa604 3714 switch (sgl.CurItem.CompPars.CompRadioButton.Style)
jmitc91516 0:9140ec6aa604 3715 {
jmitc91516 0:9140ec6aa604 3716 case GuiLib_RADIOBUTTON_FLAT:
jmitc91516 0:9140ec6aa604 3717 case GuiLib_RADIOBUTTON_3D:
jmitc91516 0:9140ec6aa604 3718 sgl.CurItem.X2 = sgl.CurItem.X1 +
jmitc91516 0:9140ec6aa604 3719 2 * sgl.CurItem.CompPars.CompRadioButton.Size;
jmitc91516 0:9140ec6aa604 3720 sgl.CurItem.Y2 = sgl.CurItem.Y1 +
jmitc91516 0:9140ec6aa604 3721 2 * sgl.CurItem.CompPars.CompRadioButton.Size;
jmitc91516 0:9140ec6aa604 3722 break;
jmitc91516 0:9140ec6aa604 3723 case GuiLib_RADIOBUTTON_ICON:
jmitc91516 0:9140ec6aa604 3724 sgl.CurItem.X2 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3725 sgl.CurItem.Y2 = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3726 break;
jmitc91516 0:9140ec6aa604 3727 case GuiLib_RADIOBUTTON_BITMAP:
jmitc91516 0:9140ec6aa604 3728 sgl.CurItem.X2 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3729 sgl.CurItem.Y2 = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3730 break;
jmitc91516 0:9140ec6aa604 3731 }
jmitc91516 0:9140ec6aa604 3732 }
jmitc91516 0:9140ec6aa604 3733 #endif
jmitc91516 0:9140ec6aa604 3734 #ifdef GuiConst_ITEM_BUTTON_INUSE
jmitc91516 0:9140ec6aa604 3735 else if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_BUTTON)
jmitc91516 0:9140ec6aa604 3736 {
jmitc91516 0:9140ec6aa604 3737 sgl.CurItem.X2 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3738 sgl.CurItem.Y2 = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3739 }
jmitc91516 0:9140ec6aa604 3740 #endif
jmitc91516 0:9140ec6aa604 3741
jmitc91516 0:9140ec6aa604 3742 if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_CIRCLE +
jmitc91516 0:9140ec6aa604 3743 GuiLib_ITEMBIT_ELLIPSE)) ||
jmitc91516 0:9140ec6aa604 3744 (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME +
jmitc91516 0:9140ec6aa604 3745 GuiLib_ITEMBIT_ROUNDEDBLOCK +
jmitc91516 0:9140ec6aa604 3746 GuiLib_ITEMBIT_QUARTERCIRCLE +
jmitc91516 0:9140ec6aa604 3747 GuiLib_ITEMBIT_QUARTERELLIPSE +
jmitc91516 0:9140ec6aa604 3748 GuiLib_ITEMBIT_BUTTON +
jmitc91516 0:9140ec6aa604 3749 GuiLib_ITEMBIT_PANEL)))
jmitc91516 0:9140ec6aa604 3750 {
jmitc91516 0:9140ec6aa604 3751 if (sgl.CommonByte6 & 0x40)
jmitc91516 0:9140ec6aa604 3752 {
jmitc91516 0:9140ec6aa604 3753 XVarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[sgl.R1VarIdx]);
jmitc91516 0:9140ec6aa604 3754 sgl.R1VarType = ReadByte(GuiStruct_VarTypeList[sgl.R1VarIdx]);
jmitc91516 0:9140ec6aa604 3755 }
jmitc91516 0:9140ec6aa604 3756 else
jmitc91516 0:9140ec6aa604 3757 XVarPtr = 0;
jmitc91516 0:9140ec6aa604 3758 if (XVarPtr != 0)
jmitc91516 0:9140ec6aa604 3759 sgl.ItemR1 += ReadVar(XVarPtr, sgl.R1VarType);
jmitc91516 0:9140ec6aa604 3760 if (sgl.R1MemoryRead > 0)
jmitc91516 0:9140ec6aa604 3761 sgl.ItemR1 += sgl.Memory.X[sgl.R1MemoryRead - 1];
jmitc91516 0:9140ec6aa604 3762 if (sgl.R1Mode == GuiLib_COOR_REL)
jmitc91516 0:9140ec6aa604 3763 sgl.ItemR1 += sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3764 else if (sgl.R1Mode == GuiLib_COOR_REL_1)
jmitc91516 0:9140ec6aa604 3765 sgl.ItemR1 += sgl.CurItem.RX1;
jmitc91516 0:9140ec6aa604 3766 else if (sgl.R1Mode == GuiLib_COOR_REL_2)
jmitc91516 0:9140ec6aa604 3767 sgl.ItemR1 += sgl.CurItem.RX2;
jmitc91516 0:9140ec6aa604 3768 if (sgl.R1MemoryWrite > 0)
jmitc91516 0:9140ec6aa604 3769 sgl.Memory.X[sgl.R1MemoryWrite - 1] = sgl.ItemR1;
jmitc91516 0:9140ec6aa604 3770 sgl.CurItem.R1 = sgl.ItemR1;
jmitc91516 0:9140ec6aa604 3771 }
jmitc91516 0:9140ec6aa604 3772
jmitc91516 0:9140ec6aa604 3773 if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_ELLIPSE)) ||
jmitc91516 0:9140ec6aa604 3774 (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_QUARTERELLIPSE)))
jmitc91516 0:9140ec6aa604 3775 {
jmitc91516 0:9140ec6aa604 3776 if (sgl.CommonByte6 & 0x80)
jmitc91516 0:9140ec6aa604 3777 {
jmitc91516 0:9140ec6aa604 3778 YVarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[sgl.R2VarIdx]);
jmitc91516 0:9140ec6aa604 3779 sgl.R2VarType = ReadByte(GuiStruct_VarTypeList[sgl.R2VarIdx]);
jmitc91516 0:9140ec6aa604 3780 }
jmitc91516 0:9140ec6aa604 3781 else
jmitc91516 0:9140ec6aa604 3782 YVarPtr = 0;
jmitc91516 0:9140ec6aa604 3783 if (YVarPtr != 0)
jmitc91516 0:9140ec6aa604 3784 sgl.ItemR2 += ReadVar(YVarPtr, sgl.R2VarType);
jmitc91516 0:9140ec6aa604 3785 if (sgl.R2MemoryRead > 0)
jmitc91516 0:9140ec6aa604 3786 sgl.ItemR2 += sgl.Memory.Y[sgl.R2MemoryRead - 1];
jmitc91516 0:9140ec6aa604 3787 if (sgl.R2Mode == GuiLib_COOR_REL)
jmitc91516 0:9140ec6aa604 3788 sgl.ItemR2 += sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3789 else if (sgl.R2Mode == GuiLib_COOR_REL_1)
jmitc91516 0:9140ec6aa604 3790 sgl.ItemR2 += sgl.CurItem.RY1;
jmitc91516 0:9140ec6aa604 3791 else if (sgl.R2Mode == GuiLib_COOR_REL_2)
jmitc91516 0:9140ec6aa604 3792 sgl.ItemR2 += sgl.CurItem.RY2;
jmitc91516 0:9140ec6aa604 3793 if (sgl.R2MemoryWrite > 0)
jmitc91516 0:9140ec6aa604 3794 sgl.Memory.Y[sgl.R2MemoryWrite - 1] = sgl.ItemR2;
jmitc91516 0:9140ec6aa604 3795 sgl.CurItem.R2 = sgl.ItemR2;
jmitc91516 0:9140ec6aa604 3796 }
jmitc91516 0:9140ec6aa604 3797
jmitc91516 0:9140ec6aa604 3798 if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_CLEARAREA +
jmitc91516 0:9140ec6aa604 3799 GuiLib_ITEMBIT_TEXTBLOCK +
jmitc91516 0:9140ec6aa604 3800 GuiLib_ITEMBIT_VARBLOCK +
jmitc91516 0:9140ec6aa604 3801 GuiLib_ITEMBIT_LINE +
jmitc91516 0:9140ec6aa604 3802 GuiLib_ITEMBIT_FRAME +
jmitc91516 0:9140ec6aa604 3803 GuiLib_ITEMBIT_BLOCK +
jmitc91516 0:9140ec6aa604 3804 GuiLib_ITEMBIT_BITMAP +
jmitc91516 0:9140ec6aa604 3805 GuiLib_ITEMBIT_BACKGROUND +
jmitc91516 0:9140ec6aa604 3806 GuiLib_ITEMBIT_ACTIVEAREA +
jmitc91516 0:9140ec6aa604 3807 GuiLib_ITEMBIT_CLIPRECT +
jmitc91516 0:9140ec6aa604 3808 GuiLib_ITEMBIT_TOUCHAREA +
jmitc91516 0:9140ec6aa604 3809 GuiLib_ITEMBIT_GRAPH +
jmitc91516 0:9140ec6aa604 3810 GuiLib_ITEMBIT_GRAPHICSLAYER)) ||
jmitc91516 0:9140ec6aa604 3811 (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME +
jmitc91516 0:9140ec6aa604 3812 GuiLib_ITEMBIT_ROUNDEDBLOCK +
jmitc91516 0:9140ec6aa604 3813 GuiLib_ITEMBIT_CHECKBOX +
jmitc91516 0:9140ec6aa604 3814 GuiLib_ITEMBIT_RADIOBUTTON +
jmitc91516 0:9140ec6aa604 3815 GuiLib_ITEMBIT_BUTTON +
jmitc91516 0:9140ec6aa604 3816 GuiLib_ITEMBIT_EDITBOX +
jmitc91516 0:9140ec6aa604 3817 GuiLib_ITEMBIT_PANEL +
jmitc91516 0:9140ec6aa604 3818 GuiLib_ITEMBIT_MEMO +
jmitc91516 0:9140ec6aa604 3819 GuiLib_ITEMBIT_LISTBOX +
jmitc91516 0:9140ec6aa604 3820 GuiLib_ITEMBIT_COMBOBOX +
jmitc91516 0:9140ec6aa604 3821 GuiLib_ITEMBIT_SCROLLAREA +
jmitc91516 0:9140ec6aa604 3822 GuiLib_ITEMBIT_PROGRESSBAR)))
jmitc91516 0:9140ec6aa604 3823 {
jmitc91516 0:9140ec6aa604 3824 X = sgl.CurItem.X2 - sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3825 if (sgl.CurItem.TextPar[0].Alignment == GuiLib_ALIGN_CENTER)
jmitc91516 0:9140ec6aa604 3826 {
jmitc91516 0:9140ec6aa604 3827 sgl.CurItem.X1 -= X / 2;
jmitc91516 0:9140ec6aa604 3828 sgl.CurItem.X2 -= X / 2;
jmitc91516 0:9140ec6aa604 3829 }
jmitc91516 0:9140ec6aa604 3830 else if (sgl.CurItem.TextPar[0].Alignment == GuiLib_ALIGN_RIGHT)
jmitc91516 0:9140ec6aa604 3831 {
jmitc91516 0:9140ec6aa604 3832 sgl.CurItem.X1 -= X;
jmitc91516 0:9140ec6aa604 3833 sgl.CurItem.X2 -= X;
jmitc91516 0:9140ec6aa604 3834 }
jmitc91516 0:9140ec6aa604 3835 }
jmitc91516 0:9140ec6aa604 3836 else if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_CIRCLE +
jmitc91516 0:9140ec6aa604 3837 GuiLib_ITEMBIT_ELLIPSE)) ||
jmitc91516 0:9140ec6aa604 3838 (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_QUARTERCIRCLE +
jmitc91516 0:9140ec6aa604 3839 GuiLib_ITEMBIT_QUARTERELLIPSE)))
jmitc91516 0:9140ec6aa604 3840 {
jmitc91516 0:9140ec6aa604 3841 if (sgl.CurItem.TextPar[0].Alignment == GuiLib_ALIGN_CENTER)
jmitc91516 0:9140ec6aa604 3842 sgl.CurItem.X1 -= sgl.CurItem.R1;
jmitc91516 0:9140ec6aa604 3843 else if (sgl.CurItem.TextPar[0].Alignment == GuiLib_ALIGN_RIGHT)
jmitc91516 0:9140ec6aa604 3844 sgl.CurItem.X1 -= 2 * sgl.CurItem.R1;
jmitc91516 0:9140ec6aa604 3845 }
jmitc91516 0:9140ec6aa604 3846
jmitc91516 0:9140ec6aa604 3847 #ifdef GuiConst_ITEM_SCROLLBOX_INUSE
jmitc91516 0:9140ec6aa604 3848 if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_SCROLLBOX)
jmitc91516 0:9140ec6aa604 3849 memcpy(&sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].ScrollBoxItem, &sgl.CurItem,
jmitc91516 0:9140ec6aa604 3850 sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 3851 #endif
jmitc91516 0:9140ec6aa604 3852
jmitc91516 0:9140ec6aa604 3853 #ifdef GuiConst_ITEM_GRAPH_INUSE
jmitc91516 0:9140ec6aa604 3854 if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_GRAPH)
jmitc91516 0:9140ec6aa604 3855 {
jmitc91516 0:9140ec6aa604 3856 memcpy(&sgl.GraphAry[sgl.GlobalGraphIndex].GraphItem, &sgl.CurItem,
jmitc91516 0:9140ec6aa604 3857 sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 3858 OrderCoord(&sgl.GraphAry[sgl.GlobalGraphIndex].GraphItem.X1,
jmitc91516 0:9140ec6aa604 3859 &sgl.GraphAry[sgl.GlobalGraphIndex].GraphItem.X2);
jmitc91516 0:9140ec6aa604 3860 OrderCoord(&sgl.GraphAry[sgl.GlobalGraphIndex].GraphItem.Y1,
jmitc91516 0:9140ec6aa604 3861 &sgl.GraphAry[sgl.GlobalGraphIndex].GraphItem.Y2);
jmitc91516 0:9140ec6aa604 3862 sgl.GraphAry[sgl.GlobalGraphIndex].OrigoX =
jmitc91516 0:9140ec6aa604 3863 sgl.GraphAry[sgl.GlobalGraphIndex].GraphItem.X1 +
jmitc91516 0:9140ec6aa604 3864 sgl.GraphAry[sgl.GlobalGraphIndex].OriginOffsetX;
jmitc91516 0:9140ec6aa604 3865 sgl.GraphAry[sgl.GlobalGraphIndex].OrigoY =
jmitc91516 0:9140ec6aa604 3866 sgl.GraphAry[sgl.GlobalGraphIndex].GraphItem.Y2 -
jmitc91516 0:9140ec6aa604 3867 sgl.GraphAry[sgl.GlobalGraphIndex].OriginOffsetY;
jmitc91516 0:9140ec6aa604 3868 }
jmitc91516 0:9140ec6aa604 3869 #endif
jmitc91516 0:9140ec6aa604 3870
jmitc91516 0:9140ec6aa604 3871 #ifdef GuiConst_ITEM_SCROLLBOX_INUSE
jmitc91516 0:9140ec6aa604 3872 if (sgl.NextScrollLineReading)
jmitc91516 0:9140ec6aa604 3873 sgl.DisplayWriting = 0;
jmitc91516 0:9140ec6aa604 3874 else
jmitc91516 0:9140ec6aa604 3875 #endif
jmitc91516 0:9140ec6aa604 3876 sgl.DisplayWriting = 1;
jmitc91516 0:9140ec6aa604 3877 DrawItem(ColorInvert);
jmitc91516 0:9140ec6aa604 3878
jmitc91516 0:9140ec6aa604 3879 sgl.DisplayWriting = 1;
jmitc91516 0:9140ec6aa604 3880
jmitc91516 0:9140ec6aa604 3881 switch (sgl.CurItem.ItemType)
jmitc91516 0:9140ec6aa604 3882 {
jmitc91516 0:9140ec6aa604 3883 case GuiLib_ITEM_TEXT:
jmitc91516 0:9140ec6aa604 3884 case GuiLib_ITEM_VAR:
jmitc91516 0:9140ec6aa604 3885 sgl.CurItem.RX1 = sgl.FontWriteX1;
jmitc91516 0:9140ec6aa604 3886 sgl.CurItem.RY1 = sgl.FontWriteY1;
jmitc91516 0:9140ec6aa604 3887 sgl.CurItem.RX2 = sgl.FontWriteX2 + 1;
jmitc91516 0:9140ec6aa604 3888 sgl.CurItem.RY2 = sgl.FontWriteY2;
jmitc91516 0:9140ec6aa604 3889 break;
jmitc91516 0:9140ec6aa604 3890 case GuiLib_ITEM_DOT:
jmitc91516 0:9140ec6aa604 3891 sgl.CurItem.RX1 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3892 sgl.CurItem.RY1 = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3893 sgl.CurItem.RX2 = sgl.CurItem.X1 + 1;
jmitc91516 0:9140ec6aa604 3894 sgl.CurItem.RY2 = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3895 break;
jmitc91516 0:9140ec6aa604 3896 case GuiLib_ITEM_CIRCLE:
jmitc91516 0:9140ec6aa604 3897 case GuiLib_ITEM_QUARTERCIRCLE:
jmitc91516 0:9140ec6aa604 3898 sgl.CurItem.RX1 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3899 sgl.CurItem.RY1 = sgl.CurItem.Y1 - sgl.CurItem.R1;
jmitc91516 0:9140ec6aa604 3900 sgl.CurItem.RX2 = sgl.CurItem.X1 + (2 * sgl.CurItem.R1) + 1;
jmitc91516 0:9140ec6aa604 3901 sgl.CurItem.RY2 = sgl.CurItem.Y1 + sgl.CurItem.R1;
jmitc91516 0:9140ec6aa604 3902 break;
jmitc91516 0:9140ec6aa604 3903 case GuiLib_ITEM_ELLIPSE:
jmitc91516 0:9140ec6aa604 3904 case GuiLib_ITEM_QUARTERELLIPSE:
jmitc91516 0:9140ec6aa604 3905 sgl.CurItem.RX1 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3906 sgl.CurItem.RY1 = sgl.CurItem.Y1 - sgl.CurItem.R2;
jmitc91516 0:9140ec6aa604 3907 sgl.CurItem.RX2 = sgl.CurItem.X1 + (2 * sgl.CurItem.R1) + 1;
jmitc91516 0:9140ec6aa604 3908 sgl.CurItem.RY2 = sgl.CurItem.Y1 + sgl.CurItem.R2;
jmitc91516 0:9140ec6aa604 3909 break;
jmitc91516 0:9140ec6aa604 3910 case GuiLib_ITEM_CLEARAREA:
jmitc91516 0:9140ec6aa604 3911 case GuiLib_ITEM_LINE:
jmitc91516 0:9140ec6aa604 3912 case GuiLib_ITEM_FRAME:
jmitc91516 0:9140ec6aa604 3913 case GuiLib_ITEM_ROUNDEDFRAME:
jmitc91516 0:9140ec6aa604 3914 case GuiLib_ITEM_BLOCK:
jmitc91516 0:9140ec6aa604 3915 case GuiLib_ITEM_ROUNDEDBLOCK:
jmitc91516 0:9140ec6aa604 3916 case GuiLib_ITEM_BITMAP:
jmitc91516 0:9140ec6aa604 3917 case GuiLib_ITEM_BACKGROUND:
jmitc91516 0:9140ec6aa604 3918 case GuiLib_ITEM_ACTIVEAREA:
jmitc91516 0:9140ec6aa604 3919 case GuiLib_ITEM_CLIPRECT:
jmitc91516 0:9140ec6aa604 3920 case GuiLib_ITEM_TEXTBLOCK:
jmitc91516 0:9140ec6aa604 3921 case GuiLib_ITEM_VARBLOCK:
jmitc91516 0:9140ec6aa604 3922 case GuiLib_ITEM_CHECKBOX:
jmitc91516 0:9140ec6aa604 3923 case GuiLib_ITEM_BUTTON:
jmitc91516 0:9140ec6aa604 3924 case GuiLib_ITEM_EDITBOX:
jmitc91516 0:9140ec6aa604 3925 case GuiLib_ITEM_PANEL:
jmitc91516 0:9140ec6aa604 3926 case GuiLib_ITEM_MEMO:
jmitc91516 0:9140ec6aa604 3927 case GuiLib_ITEM_LISTBOX:
jmitc91516 0:9140ec6aa604 3928 case GuiLib_ITEM_COMBOBOX:
jmitc91516 0:9140ec6aa604 3929 case GuiLib_ITEM_SCROLLAREA:
jmitc91516 0:9140ec6aa604 3930 case GuiLib_ITEM_PROGRESSBAR:
jmitc91516 0:9140ec6aa604 3931 case GuiLib_ITEM_TOUCHAREA:
jmitc91516 0:9140ec6aa604 3932 case GuiLib_ITEM_SCROLLBOX:
jmitc91516 0:9140ec6aa604 3933 case GuiLib_ITEM_GRAPH:
jmitc91516 0:9140ec6aa604 3934 case GuiLib_ITEM_GRAPHICSLAYER:
jmitc91516 0:9140ec6aa604 3935 sgl.CurItem.RX1 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3936 sgl.CurItem.RY1 = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3937 sgl.CurItem.RX2 = sgl.CurItem.X2 + 1;
jmitc91516 0:9140ec6aa604 3938 sgl.CurItem.RY2 = sgl.CurItem.Y2;
jmitc91516 0:9140ec6aa604 3939 break;
jmitc91516 0:9140ec6aa604 3940 case GuiLib_ITEM_POSCALLBACK:
jmitc91516 0:9140ec6aa604 3941 sgl.CurItem.RX1 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3942 sgl.CurItem.RY1 = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3943 sgl.CurItem.RX2 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3944 sgl.CurItem.RY2 = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3945 break;
jmitc91516 0:9140ec6aa604 3946 #ifdef GuiConst_ITEM_RADIOBUTTON_INUSE
jmitc91516 0:9140ec6aa604 3947 case GuiLib_ITEM_RADIOBUTTON:
jmitc91516 0:9140ec6aa604 3948 sgl.CurItem.RX1 = sgl.CurItem.X1;
jmitc91516 0:9140ec6aa604 3949 sgl.CurItem.RY1 = sgl.CurItem.Y1;
jmitc91516 0:9140ec6aa604 3950 sgl.CurItem.RX2 = sgl.CurItem.X2 + 1;
jmitc91516 0:9140ec6aa604 3951 sgl.CurItem.RY2 = sgl.CurItem.Y2 +
jmitc91516 0:9140ec6aa604 3952 (sgl.CurItem.CompPars.CompRadioButton.Count - 1) *
jmitc91516 0:9140ec6aa604 3953 sgl.CurItem.CompPars.CompRadioButton.InterDistance;
jmitc91516 0:9140ec6aa604 3954 break;
jmitc91516 0:9140ec6aa604 3955 #endif
jmitc91516 0:9140ec6aa604 3956 }
jmitc91516 0:9140ec6aa604 3957
jmitc91516 0:9140ec6aa604 3958 sgl.AutoRedrawLatest = RemAutoRedrawLatest;
jmitc91516 0:9140ec6aa604 3959 }
jmitc91516 0:9140ec6aa604 3960 }
jmitc91516 0:9140ec6aa604 3961
jmitc91516 0:9140ec6aa604 3962 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 3963 void GuiLib_ShowScreen(
jmitc91516 0:9140ec6aa604 3964 const GuiConst_INT16U StructureNdx,
jmitc91516 0:9140ec6aa604 3965 GuiConst_INT16S CursorFieldToShow,
jmitc91516 0:9140ec6aa604 3966 GuiConst_INT8U ResetAutoRedraw)
jmitc91516 0:9140ec6aa604 3967 {
jmitc91516 0:9140ec6aa604 3968 #ifdef GuiConst_ITEM_SCROLLBOX_INUSE
jmitc91516 0:9140ec6aa604 3969 GuiConst_INT16S M;
jmitc91516 0:9140ec6aa604 3970 #endif
jmitc91516 0:9140ec6aa604 3971 GuiConst_INT16S N;
jmitc91516 0:9140ec6aa604 3972 GuiLib_StructPtr StructureToCall;
jmitc91516 0:9140ec6aa604 3973
jmitc91516 0:9140ec6aa604 3974 GuiDisplay_Lock();
jmitc91516 0:9140ec6aa604 3975
jmitc91516 0:9140ec6aa604 3976 GuiLib_CurStructureNdx = StructureNdx;
jmitc91516 0:9140ec6aa604 3977 StructureToCall =
jmitc91516 0:9140ec6aa604 3978 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 3979 GetRemoteStructData(StructureNdx);
jmitc91516 0:9140ec6aa604 3980 #else
jmitc91516 0:9140ec6aa604 3981 (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[StructureNdx]);
jmitc91516 0:9140ec6aa604 3982 #endif
jmitc91516 0:9140ec6aa604 3983
jmitc91516 0:9140ec6aa604 3984 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 3985 sgl.CursorFieldFound = -1;
jmitc91516 0:9140ec6aa604 3986 sgl.CursorActiveFieldFound = 0;
jmitc91516 0:9140ec6aa604 3987 GuiLib_ActiveCursorFieldNo = CursorFieldToShow;
jmitc91516 0:9140ec6aa604 3988 sgl.CursorInUse = (GuiLib_ActiveCursorFieldNo >= 0);
jmitc91516 0:9140ec6aa604 3989 #else
jmitc91516 0:9140ec6aa604 3990 gl.Dummy1_16S = CursorFieldToShow; // To avoid compiler warning
jmitc91516 0:9140ec6aa604 3991 #endif
jmitc91516 0:9140ec6aa604 3992
jmitc91516 0:9140ec6aa604 3993 if ((GuiLib_StructPtr)StructureToCall != 0)
jmitc91516 0:9140ec6aa604 3994 {
jmitc91516 0:9140ec6aa604 3995 sgl.CurItem.X1 = 0;
jmitc91516 0:9140ec6aa604 3996 sgl.CurItem.Y1 = 0;
jmitc91516 0:9140ec6aa604 3997 sgl.CurItem.X2 = 0;
jmitc91516 0:9140ec6aa604 3998 sgl.CurItem.Y2 = 0;
jmitc91516 0:9140ec6aa604 3999 sgl.CurItem.R1 = 0;
jmitc91516 0:9140ec6aa604 4000 sgl.CurItem.R2 = 0;
jmitc91516 0:9140ec6aa604 4001
jmitc91516 0:9140ec6aa604 4002 sgl.CurItem.RX = 0;
jmitc91516 0:9140ec6aa604 4003 sgl.CurItem.RY = 0;
jmitc91516 0:9140ec6aa604 4004 sgl.CurItem.RX1 = 0;
jmitc91516 0:9140ec6aa604 4005 sgl.CurItem.RY1 = 0;
jmitc91516 0:9140ec6aa604 4006 sgl.CurItem.RX2 = 0;
jmitc91516 0:9140ec6aa604 4007 sgl.CurItem.RY2 = 0;
jmitc91516 0:9140ec6aa604 4008
jmitc91516 0:9140ec6aa604 4009 for (N = 0; N < 2 * GuiLib_MEMORY_CNT; N++)
jmitc91516 0:9140ec6aa604 4010 {
jmitc91516 0:9140ec6aa604 4011 sgl.Memory.X[N] = 0;
jmitc91516 0:9140ec6aa604 4012 sgl.Memory.Y[N] = 0;
jmitc91516 0:9140ec6aa604 4013 }
jmitc91516 0:9140ec6aa604 4014 for (N = 0; N < GuiLib_MEMORY_CNT; N++)
jmitc91516 0:9140ec6aa604 4015 sgl.Memory.C[N] = 0;
jmitc91516 0:9140ec6aa604 4016 sgl.ThicknessMemory = 1;
jmitc91516 0:9140ec6aa604 4017
jmitc91516 0:9140ec6aa604 4018 sgl.CurItem.ForeColor = GuiConst_PIXEL_ON;
jmitc91516 0:9140ec6aa604 4019 sgl.CurItem.BackColor = GuiConst_PIXEL_OFF;
jmitc91516 0:9140ec6aa604 4020 sgl.CurItem.BarForeColor = GuiConst_PIXEL_OFF;
jmitc91516 0:9140ec6aa604 4021 sgl.CurItem.BarBackColor = GuiConst_PIXEL_ON;
jmitc91516 0:9140ec6aa604 4022 sgl.CurItem.ForeColorIndex = 0xFFFF;
jmitc91516 0:9140ec6aa604 4023 sgl.CurItem.BackColorIndex = 0xFFFF;
jmitc91516 0:9140ec6aa604 4024 sgl.CurItem.BarForeColorIndex = 0xFFFF;
jmitc91516 0:9140ec6aa604 4025 sgl.CurItem.BarBackColorIndex = 0xFFFF;
jmitc91516 0:9140ec6aa604 4026
jmitc91516 0:9140ec6aa604 4027
jmitc91516 0:9140ec6aa604 4028 for (N = 0; N < 3; N++)
jmitc91516 0:9140ec6aa604 4029 {
jmitc91516 0:9140ec6aa604 4030 sgl.CurItem.TextPar[N].BitFlags = GuiLib_BITFLAG_TRANSPARENT;
jmitc91516 0:9140ec6aa604 4031 sgl.CurItem.TextPar[N].Alignment = GuiLib_ALIGN_LEFT;
jmitc91516 0:9140ec6aa604 4032 sgl.CurItem.TextPar[N].BackBoxSizeX = 0;
jmitc91516 0:9140ec6aa604 4033 sgl.CurItem.TextPar[N].FontIndex = 0;
jmitc91516 0:9140ec6aa604 4034 sgl.CurItem.TextPar[N].Ps = GuiLib_PS_ON;
jmitc91516 0:9140ec6aa604 4035 }
jmitc91516 0:9140ec6aa604 4036
jmitc91516 0:9140ec6aa604 4037 sgl.CurItem.FormatFieldWidth = 10;
jmitc91516 0:9140ec6aa604 4038 sgl.CurItem.FormatDecimals = 0;
jmitc91516 0:9140ec6aa604 4039 sgl.CurItem.FormatAlignment = GuiLib_FORMAT_ALIGNMENT_RIGHT;
jmitc91516 0:9140ec6aa604 4040 sgl.CurItem.FormatFormat = GuiLib_FORMAT_DEC;
jmitc91516 0:9140ec6aa604 4041
jmitc91516 0:9140ec6aa604 4042 #ifdef GuiConst_BLINK_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4043 #ifndef GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 4044 for (N = 0; N < GuiConst_BLINK_FIELDS_MAX; N++)
jmitc91516 0:9140ec6aa604 4045 {
jmitc91516 0:9140ec6aa604 4046 sgl.BlinkTextItems[N].InUse = 0;
jmitc91516 0:9140ec6aa604 4047 sgl.BlinkTextItems[N].Active = 0;
jmitc91516 0:9140ec6aa604 4048 }
jmitc91516 0:9140ec6aa604 4049 #endif
jmitc91516 0:9140ec6aa604 4050 #endif
jmitc91516 0:9140ec6aa604 4051
jmitc91516 0:9140ec6aa604 4052 #ifdef GuiConst_ITEM_TOUCHAREA_INUSE
jmitc91516 0:9140ec6aa604 4053 sgl.TouchAreaCnt = 0;
jmitc91516 0:9140ec6aa604 4054 #endif
jmitc91516 0:9140ec6aa604 4055
jmitc91516 0:9140ec6aa604 4056 #ifdef GuiConst_ITEM_SCROLLBOX_INUSE
jmitc91516 0:9140ec6aa604 4057 for (M = 0; M < GuiConst_SCROLLITEM_BOXES_MAX; M++)
jmitc91516 0:9140ec6aa604 4058 {
jmitc91516 0:9140ec6aa604 4059 sgl.ScrollBoxesAry[M].InUse = GuiLib_SCROLL_STRUCTURE_UNDEF;
jmitc91516 0:9140ec6aa604 4060 for (N = 0; N < GuiConst_SCROLLITEM_MARKERS_MAX; N++)
jmitc91516 0:9140ec6aa604 4061 {
jmitc91516 0:9140ec6aa604 4062 sgl.ScrollBoxesAry[M].MarkerColor[N] = GuiConst_PIXEL_ON;
jmitc91516 0:9140ec6aa604 4063 sgl.ScrollBoxesAry[M].MarkerColorTransparent[N] = 1;
jmitc91516 0:9140ec6aa604 4064 }
jmitc91516 0:9140ec6aa604 4065 }
jmitc91516 0:9140ec6aa604 4066 #endif
jmitc91516 0:9140ec6aa604 4067
jmitc91516 0:9140ec6aa604 4068 #ifdef GuiConst_ITEM_GRAPH_INUSE
jmitc91516 0:9140ec6aa604 4069 for (N = 0; N < GuiConst_GRAPH_MAX; N++)
jmitc91516 0:9140ec6aa604 4070 sgl.GraphAry[N].InUse = GuiLib_GRAPH_STRUCTURE_UNDEF;
jmitc91516 0:9140ec6aa604 4071 #endif
jmitc91516 0:9140ec6aa604 4072
jmitc91516 0:9140ec6aa604 4073 sgl.BaseLayerDrawing = 1;
jmitc91516 0:9140ec6aa604 4074 #ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE
jmitc91516 0:9140ec6aa604 4075 GraphicsLayer_Pop(GuiLib_GRAPHICS_LAYER_BASE);
jmitc91516 0:9140ec6aa604 4076 for (N = 0; N < GuiConst_GRAPHICS_LAYER_MAX; N++)
jmitc91516 0:9140ec6aa604 4077 {
jmitc91516 0:9140ec6aa604 4078 sgl.GraphicsLayerList[N].InUse = GuiLib_GRAPHICS_LAYER_UNDEF;
jmitc91516 0:9140ec6aa604 4079 sgl.GraphicsFilterList[N].InUse = GuiLib_GRAPHICS_FILTER_UNDEF;
jmitc91516 0:9140ec6aa604 4080 }
jmitc91516 0:9140ec6aa604 4081 #endif
jmitc91516 0:9140ec6aa604 4082
jmitc91516 0:9140ec6aa604 4083 #ifdef GuiConst_BITMAP_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4084 sgl.GlobalBackgrBitmapIndex = 0;
jmitc91516 0:9140ec6aa604 4085 for (N = 0; N < GuiConst_MAX_BACKGROUND_BITMAPS; N++)
jmitc91516 0:9140ec6aa604 4086 sgl.BackgrBitmapAry[N].InUse = 0;
jmitc91516 0:9140ec6aa604 4087 #endif
jmitc91516 0:9140ec6aa604 4088
jmitc91516 0:9140ec6aa604 4089 if (ResetAutoRedraw)
jmitc91516 0:9140ec6aa604 4090 AutoRedraw_Destroy();
jmitc91516 0:9140ec6aa604 4091 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4092 else
jmitc91516 0:9140ec6aa604 4093 AutoRedraw_ResetCursor();
jmitc91516 0:9140ec6aa604 4094 #endif
jmitc91516 0:9140ec6aa604 4095
jmitc91516 0:9140ec6aa604 4096 sgl.DrawingLevel = 0;
jmitc91516 0:9140ec6aa604 4097 sgl.TopLevelStructure = 0;
jmitc91516 0:9140ec6aa604 4098
jmitc91516 0:9140ec6aa604 4099 #ifdef GuiConst_TEXTBOX_FIELDS_ON
jmitc91516 0:9140ec6aa604 4100 sgl.CurItem.CompPars.CompTextBox.ScrollIndex = 0;
jmitc91516 0:9140ec6aa604 4101 sgl.CurItem.CompPars.CompTextBox.ScrollPos = 0;
jmitc91516 0:9140ec6aa604 4102 for (N = 0; N < GuiConst_TEXTBOX_FIELDS_MAX; N++)
jmitc91516 0:9140ec6aa604 4103 sgl.TextBoxScrollPositions[N].index = -1;
jmitc91516 0:9140ec6aa604 4104 #endif
jmitc91516 0:9140ec6aa604 4105
jmitc91516 0:9140ec6aa604 4106 sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX;
jmitc91516 0:9140ec6aa604 4107 sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY;
jmitc91516 0:9140ec6aa604 4108 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4109 sgl.CurItem.ClipRectX1 = sgl.DisplayActiveAreaX1;
jmitc91516 0:9140ec6aa604 4110 sgl.CurItem.ClipRectY1 = sgl.DisplayActiveAreaY1;
jmitc91516 0:9140ec6aa604 4111 sgl.CurItem.ClipRectX2 = sgl.DisplayActiveAreaX2;
jmitc91516 0:9140ec6aa604 4112 sgl.CurItem.ClipRectY2 = sgl.DisplayActiveAreaY2;
jmitc91516 0:9140ec6aa604 4113 sgl.ActiveAreaX1 = sgl.DisplayActiveAreaX1;
jmitc91516 0:9140ec6aa604 4114 sgl.ActiveAreaY1 = sgl.DisplayActiveAreaY1;
jmitc91516 0:9140ec6aa604 4115 sgl.ActiveAreaX2 = sgl.DisplayActiveAreaX2;
jmitc91516 0:9140ec6aa604 4116 sgl.ActiveAreaY2 = sgl.DisplayActiveAreaY2;
jmitc91516 0:9140ec6aa604 4117 if (sgl.DisplayWriting)
jmitc91516 0:9140ec6aa604 4118 {
jmitc91516 0:9140ec6aa604 4119 if ((sgl.DisplayActiveAreaX1 != 0) || (sgl.DisplayActiveAreaY1 != 0) ||
jmitc91516 0:9140ec6aa604 4120 (sgl.DisplayActiveAreaX2 != GuiConst_DISPLAY_WIDTH - 1) ||
jmitc91516 0:9140ec6aa604 4121 (sgl.DisplayActiveAreaY2 != GuiConst_DISPLAY_HEIGHT - 1))
jmitc91516 0:9140ec6aa604 4122 GuiLib_SetClipping(sgl.DisplayActiveAreaX1, sgl.DisplayActiveAreaY1,
jmitc91516 0:9140ec6aa604 4123 sgl.DisplayActiveAreaX2, sgl.DisplayActiveAreaY2);
jmitc91516 0:9140ec6aa604 4124 else
jmitc91516 0:9140ec6aa604 4125 GuiLib_ResetClipping();
jmitc91516 0:9140ec6aa604 4126 }
jmitc91516 0:9140ec6aa604 4127 #endif
jmitc91516 0:9140ec6aa604 4128 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4129 sgl.CurItem.CursorFieldLevel = 0;
jmitc91516 0:9140ec6aa604 4130 #endif
jmitc91516 0:9140ec6aa604 4131 sgl.DisplayLevel = 0;
jmitc91516 0:9140ec6aa604 4132 sgl.InitialDrawing = 1;
jmitc91516 0:9140ec6aa604 4133 sgl.SwapColors = 0;
jmitc91516 0:9140ec6aa604 4134 DrawStructure((GuiLib_StructPtr) StructureToCall,
jmitc91516 0:9140ec6aa604 4135 GuiLib_COL_INVERT_IF_CURSOR);
jmitc91516 0:9140ec6aa604 4136 ResetLayerBufPtr();
jmitc91516 0:9140ec6aa604 4137 sgl.InitialDrawing = 0;
jmitc91516 0:9140ec6aa604 4138 sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX;
jmitc91516 0:9140ec6aa604 4139 sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY;
jmitc91516 0:9140ec6aa604 4140
jmitc91516 0:9140ec6aa604 4141 #ifdef GuiConst_CLIPPING_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4142 if (sgl.DisplayWriting)
jmitc91516 0:9140ec6aa604 4143 GuiLib_ResetClipping();
jmitc91516 0:9140ec6aa604 4144 #endif
jmitc91516 0:9140ec6aa604 4145 }
jmitc91516 0:9140ec6aa604 4146
jmitc91516 0:9140ec6aa604 4147 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4148 if (sgl.CursorFieldFound == -1)
jmitc91516 0:9140ec6aa604 4149 {
jmitc91516 0:9140ec6aa604 4150 sgl.CursorInUse = 0;
jmitc91516 0:9140ec6aa604 4151 GuiLib_ActiveCursorFieldNo = -1;
jmitc91516 0:9140ec6aa604 4152 }
jmitc91516 0:9140ec6aa604 4153 else if (sgl.CursorInUse)
jmitc91516 0:9140ec6aa604 4154 {
jmitc91516 0:9140ec6aa604 4155 if (sgl.CursorActiveFieldFound == 0)
jmitc91516 0:9140ec6aa604 4156 {
jmitc91516 0:9140ec6aa604 4157 GuiLib_ActiveCursorFieldNo = sgl.CursorFieldFound;
jmitc91516 0:9140ec6aa604 4158
jmitc91516 0:9140ec6aa604 4159 DrawCursorItem(1);
jmitc91516 0:9140ec6aa604 4160 }
jmitc91516 0:9140ec6aa604 4161 }
jmitc91516 0:9140ec6aa604 4162 #endif
jmitc91516 0:9140ec6aa604 4163
jmitc91516 0:9140ec6aa604 4164 #ifdef GuiConst_BLINK_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4165 sgl.BlinkBoxInverted = 0;
jmitc91516 0:9140ec6aa604 4166 #endif
jmitc91516 0:9140ec6aa604 4167
jmitc91516 0:9140ec6aa604 4168 GuiDisplay_Unlock();
jmitc91516 0:9140ec6aa604 4169 }
jmitc91516 0:9140ec6aa604 4170
jmitc91516 0:9140ec6aa604 4171 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4172 GuiConst_INT16S CheckLanguageIndex(
jmitc91516 0:9140ec6aa604 4173 GuiConst_INT16S LanguageIndex)
jmitc91516 0:9140ec6aa604 4174 {
jmitc91516 0:9140ec6aa604 4175 if ((LanguageIndex < 0) || (LanguageIndex > GuiConst_LANGUAGE_CNT - 1))
jmitc91516 0:9140ec6aa604 4176 LanguageIndex = 0;
jmitc91516 0:9140ec6aa604 4177
jmitc91516 0:9140ec6aa604 4178 #ifdef GuiConst_LANGUAGE_SOME_ACTIVE
jmitc91516 0:9140ec6aa604 4179 if (!ReadByte(GuiFont_LanguageActive[LanguageIndex]))
jmitc91516 0:9140ec6aa604 4180 LanguageIndex = GuiConst_LANGUAGE_FIRST;
jmitc91516 0:9140ec6aa604 4181 #endif
jmitc91516 0:9140ec6aa604 4182
jmitc91516 0:9140ec6aa604 4183 return(LanguageIndex);
jmitc91516 0:9140ec6aa604 4184 }
jmitc91516 0:9140ec6aa604 4185
jmitc91516 0:9140ec6aa604 4186 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4187 GuiConst_TEXT PrefixLocate *GuiLib_GetTextLanguagePtr(
jmitc91516 0:9140ec6aa604 4188 const GuiConst_INT16U StructureNdx,
jmitc91516 0:9140ec6aa604 4189 GuiConst_INT16U TextNo,
jmitc91516 0:9140ec6aa604 4190 GuiConst_INT16S LanguageIndex)
jmitc91516 0:9140ec6aa604 4191 {
jmitc91516 0:9140ec6aa604 4192 GuiConst_INT16U I;
jmitc91516 0:9140ec6aa604 4193 GuiConst_INT16S ItemNdx;
jmitc91516 0:9140ec6aa604 4194 GuiConst_INT8U ItemCnt;
jmitc91516 0:9140ec6aa604 4195 GuiLib_StructPtr StructureToCall;
jmitc91516 0:9140ec6aa604 4196 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 4197 GuiConst_INT8U ItemSizeBuf[2];
jmitc91516 0:9140ec6aa604 4198 GuiConst_INT16U ItemSize;
jmitc91516 0:9140ec6aa604 4199 #endif
jmitc91516 0:9140ec6aa604 4200
jmitc91516 0:9140ec6aa604 4201 StructureToCall =
jmitc91516 0:9140ec6aa604 4202 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 4203 GetRemoteStructData(StructureNdx);
jmitc91516 0:9140ec6aa604 4204 #else
jmitc91516 0:9140ec6aa604 4205 (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[StructureNdx]);
jmitc91516 0:9140ec6aa604 4206 #endif
jmitc91516 0:9140ec6aa604 4207
jmitc91516 0:9140ec6aa604 4208 if (StructureToCall != 0)
jmitc91516 0:9140ec6aa604 4209 {
jmitc91516 0:9140ec6aa604 4210 LanguageIndex = CheckLanguageIndex(LanguageIndex);
jmitc91516 0:9140ec6aa604 4211
jmitc91516 0:9140ec6aa604 4212 sgl.ItemDataPtr = (GuiConst_INT8U PrefixLocate *)StructureToCall;
jmitc91516 0:9140ec6aa604 4213 ItemCnt = GetItemByte(&sgl.ItemDataPtr);
jmitc91516 0:9140ec6aa604 4214
jmitc91516 0:9140ec6aa604 4215 I = 0;
jmitc91516 0:9140ec6aa604 4216 for (ItemNdx = 0; ItemNdx < ItemCnt; ItemNdx++)
jmitc91516 0:9140ec6aa604 4217 {
jmitc91516 0:9140ec6aa604 4218 #ifdef GuiConst_REMOTE_STRUCT_DATA
jmitc91516 0:9140ec6aa604 4219 GuiLib_RemoteDataReadBlock(
jmitc91516 0:9140ec6aa604 4220 sgl.RemoteStructOffset,
jmitc91516 0:9140ec6aa604 4221 2,
jmitc91516 0:9140ec6aa604 4222 (GuiConst_INT8U*)&ItemSizeBuf);
jmitc91516 0:9140ec6aa604 4223 ItemSize = (256 * (GuiConst_INT16U)ItemSizeBuf[1]) + ItemSizeBuf[0];
jmitc91516 0:9140ec6aa604 4224 sgl.RemoteStructOffset += 2;
jmitc91516 0:9140ec6aa604 4225 GuiLib_RemoteDataReadBlock(
jmitc91516 0:9140ec6aa604 4226 sgl.RemoteStructOffset,
jmitc91516 0:9140ec6aa604 4227 ItemSize,
jmitc91516 0:9140ec6aa604 4228 sgl.GuiLib_RemoteItemBuffer);
jmitc91516 0:9140ec6aa604 4229 sgl.RemoteStructOffset += ItemSize;
jmitc91516 0:9140ec6aa604 4230 sgl.ItemDataPtr = &sgl.GuiLib_RemoteItemBuffer[0];
jmitc91516 0:9140ec6aa604 4231 #endif
jmitc91516 0:9140ec6aa604 4232
jmitc91516 0:9140ec6aa604 4233 ReadItem(LanguageIndex);
jmitc91516 0:9140ec6aa604 4234
jmitc91516 0:9140ec6aa604 4235 if ((sgl.CurItem.ItemType == GuiLib_ITEM_TEXT) ||
jmitc91516 0:9140ec6aa604 4236 (sgl.CurItem.ItemType == GuiLib_ITEM_TEXTBLOCK))
jmitc91516 0:9140ec6aa604 4237 {
jmitc91516 0:9140ec6aa604 4238 if (I == TextNo)
jmitc91516 0:9140ec6aa604 4239 {
jmitc91516 0:9140ec6aa604 4240 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 4241 return (GuiConst_TEXT PrefixLocate *) sgl.CurItem.TextPtr[0];
jmitc91516 0:9140ec6aa604 4242 #else
jmitc91516 0:9140ec6aa604 4243 #ifdef GuiConst_ICC_COMPILER
jmitc91516 0:9140ec6aa604 4244 ExtractUnicodeString((GuiConst_INT8U *)sgl.CurItem.TextPtr[0],
jmitc91516 0:9140ec6aa604 4245 sgl.CurItem.TextLength[0]);
jmitc91516 0:9140ec6aa604 4246 #else
jmitc91516 0:9140ec6aa604 4247 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 4248 ExtractUnicodeString((GuiConst_INT8U *)sgl.CurItem.TextPtr[0],
jmitc91516 0:9140ec6aa604 4249 sgl.CurItem.TextLength[0]);
jmitc91516 0:9140ec6aa604 4250 #else
jmitc91516 0:9140ec6aa604 4251 ExtractUnicodeString((GuiConst_INT8U PrefixRom *)sgl.CurItem.TextPtr[0],
jmitc91516 0:9140ec6aa604 4252 sgl.CurItem.TextLength[0]);
jmitc91516 0:9140ec6aa604 4253 #endif
jmitc91516 0:9140ec6aa604 4254 #endif
jmitc91516 0:9140ec6aa604 4255
jmitc91516 0:9140ec6aa604 4256 return (sgl.UnicodeTextBuf);
jmitc91516 0:9140ec6aa604 4257 #endif
jmitc91516 0:9140ec6aa604 4258 }
jmitc91516 0:9140ec6aa604 4259 I++;
jmitc91516 0:9140ec6aa604 4260 }
jmitc91516 0:9140ec6aa604 4261 }
jmitc91516 0:9140ec6aa604 4262 }
jmitc91516 0:9140ec6aa604 4263
jmitc91516 0:9140ec6aa604 4264 return (0);
jmitc91516 0:9140ec6aa604 4265 }
jmitc91516 0:9140ec6aa604 4266
jmitc91516 0:9140ec6aa604 4267 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4268 GuiConst_TEXT PrefixLocate *GuiLib_GetTextPtr(
jmitc91516 0:9140ec6aa604 4269 const GuiConst_INT16U StructureNdx,
jmitc91516 0:9140ec6aa604 4270 GuiConst_INT16U TextNo)
jmitc91516 0:9140ec6aa604 4271 {
jmitc91516 0:9140ec6aa604 4272 return (GuiLib_GetTextLanguagePtr(StructureNdx, TextNo, GuiLib_LanguageIndex));
jmitc91516 0:9140ec6aa604 4273 }
jmitc91516 0:9140ec6aa604 4274
jmitc91516 0:9140ec6aa604 4275 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4276 GuiConst_INT16U GuiLib_GetTextWidth(
jmitc91516 0:9140ec6aa604 4277 GuiConst_TEXT PrefixLocate *String,
jmitc91516 0:9140ec6aa604 4278 GuiLib_FontRecConstPtr Font,
jmitc91516 0:9140ec6aa604 4279 GuiConst_INT8U PsWriting)
jmitc91516 0:9140ec6aa604 4280 {
jmitc91516 0:9140ec6aa604 4281 GuiLib_ItemRec TextData;
jmitc91516 0:9140ec6aa604 4282 GuiConst_INT16U CharCnt;
jmitc91516 0:9140ec6aa604 4283
jmitc91516 0:9140ec6aa604 4284 if ((String[0] != 0) && (Font != 0))
jmitc91516 0:9140ec6aa604 4285 {
jmitc91516 0:9140ec6aa604 4286 TextData.TextPar[0].Ps = PsWriting;
jmitc91516 0:9140ec6aa604 4287 sgl.CurItem.TextPar[0].Ps = TextData.TextPar[0].Ps;
jmitc91516 0:9140ec6aa604 4288 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 4289 CharCnt = strlen(String);
jmitc91516 0:9140ec6aa604 4290 #else
jmitc91516 0:9140ec6aa604 4291 CharCnt = GuiLib_UnicodeStrLen(String);
jmitc91516 0:9140ec6aa604 4292 #endif
jmitc91516 0:9140ec6aa604 4293 sgl.CurFont = (GuiLib_FontRecPtr)Font;
jmitc91516 0:9140ec6aa604 4294 #ifdef GuiConst_DISP_VAR_NOW
jmitc91516 0:9140ec6aa604 4295 displayVarNow = 1;
jmitc91516 0:9140ec6aa604 4296 #endif
jmitc91516 0:9140ec6aa604 4297
jmitc91516 0:9140ec6aa604 4298 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 4299 PrepareText((GuiConst_TEXT *)String, CharCnt, 0);
jmitc91516 0:9140ec6aa604 4300 #else
jmitc91516 0:9140ec6aa604 4301 #ifdef GuiConst_RENESAS_COMPILER_FAR
jmitc91516 0:9140ec6aa604 4302 PrepareText((GuiConst_TEXT PrefixGeneric *)String, CharCnt, 0);
jmitc91516 0:9140ec6aa604 4303 #else
jmitc91516 0:9140ec6aa604 4304 PrepareText(String, CharCnt, 0);
jmitc91516 0:9140ec6aa604 4305 #endif
jmitc91516 0:9140ec6aa604 4306 #endif
jmitc91516 0:9140ec6aa604 4307 #ifdef GuiConst_DISP_VAR_NOW
jmitc91516 0:9140ec6aa604 4308 displayVarNow = 0;
jmitc91516 0:9140ec6aa604 4309 #endif
jmitc91516 0:9140ec6aa604 4310
jmitc91516 0:9140ec6aa604 4311 return (TextPixelLength(TextData.TextPar[0].Ps, CharCnt, 0));
jmitc91516 0:9140ec6aa604 4312 }
jmitc91516 0:9140ec6aa604 4313
jmitc91516 0:9140ec6aa604 4314 return (0);
jmitc91516 0:9140ec6aa604 4315 }
jmitc91516 0:9140ec6aa604 4316
jmitc91516 0:9140ec6aa604 4317 //---------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4318 static GuiConst_TEXT GetCharCode(
jmitc91516 0:9140ec6aa604 4319 GuiConst_TEXT PrefixRom * CharPtr,
jmitc91516 0:9140ec6aa604 4320 GuiConst_INT16U CharCnt,
jmitc91516 0:9140ec6aa604 4321 GuiConst_INT16U CharNo,
jmitc91516 0:9140ec6aa604 4322 GuiConst_INT16U OmitCtrlCode)
jmitc91516 0:9140ec6aa604 4323 {
jmitc91516 0:9140ec6aa604 4324 GuiConst_INT16U P;
jmitc91516 0:9140ec6aa604 4325 GuiConst_TEXT CharCode, PreviousCharCode;
jmitc91516 0:9140ec6aa604 4326
jmitc91516 0:9140ec6aa604 4327 if (CharCnt > GuiConst_MAX_TEXT_LEN)
jmitc91516 0:9140ec6aa604 4328 CharCnt = GuiConst_MAX_TEXT_LEN;
jmitc91516 0:9140ec6aa604 4329
jmitc91516 0:9140ec6aa604 4330 if (CharNo > CharCnt)
jmitc91516 0:9140ec6aa604 4331 return 0;
jmitc91516 0:9140ec6aa604 4332
jmitc91516 0:9140ec6aa604 4333 if (CharCnt > GuiConst_MAX_TEXT_LEN)
jmitc91516 0:9140ec6aa604 4334 CharCnt = GuiConst_MAX_TEXT_LEN;
jmitc91516 0:9140ec6aa604 4335
jmitc91516 0:9140ec6aa604 4336 if (OmitCtrlCode)
jmitc91516 0:9140ec6aa604 4337 {
jmitc91516 0:9140ec6aa604 4338 for (P = 0; P < CharNo + 1; P++)
jmitc91516 0:9140ec6aa604 4339 {
jmitc91516 0:9140ec6aa604 4340 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 4341 #ifdef GuiConst_AVRGCC_COMPILER
jmitc91516 0:9140ec6aa604 4342 CharCode = (unsigned GuiConst_CHAR) ReadBytePtr(CharPtr);
jmitc91516 0:9140ec6aa604 4343 #else
jmitc91516 0:9140ec6aa604 4344 #ifdef GuiConst_ICC_COMPILER
jmitc91516 0:9140ec6aa604 4345 CharCode = *((GuiConst_INT8U PrefixRom *)CharPtr);
jmitc91516 0:9140ec6aa604 4346 #else
jmitc91516 0:9140ec6aa604 4347 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 4348 CharCode = *((GuiConst_INT8U PrefixRom *)CharPtr);
jmitc91516 0:9140ec6aa604 4349 #else
jmitc91516 0:9140ec6aa604 4350 CharCode = (unsigned GuiConst_TEXT) *CharPtr;
jmitc91516 0:9140ec6aa604 4351 #endif
jmitc91516 0:9140ec6aa604 4352 #endif
jmitc91516 0:9140ec6aa604 4353 #endif
jmitc91516 0:9140ec6aa604 4354 #else
jmitc91516 0:9140ec6aa604 4355 CharCode = *((GuiConst_INT16U PrefixLocate *)CharPtr);
jmitc91516 0:9140ec6aa604 4356 #endif
jmitc91516 0:9140ec6aa604 4357
jmitc91516 0:9140ec6aa604 4358 if (P)
jmitc91516 0:9140ec6aa604 4359 {
jmitc91516 0:9140ec6aa604 4360 if ((CharCode == GuiLib_LINEFEED) ||
jmitc91516 0:9140ec6aa604 4361 ((CharCode == ' ') && (PreviousCharCode == ' ')) ||
jmitc91516 0:9140ec6aa604 4362 ((CharCode == ' ') && (PreviousCharCode == '-')))
jmitc91516 0:9140ec6aa604 4363 CharNo++;
jmitc91516 0:9140ec6aa604 4364 }
jmitc91516 0:9140ec6aa604 4365 PreviousCharCode = CharCode;
jmitc91516 0:9140ec6aa604 4366
jmitc91516 0:9140ec6aa604 4367 CharPtr++;
jmitc91516 0:9140ec6aa604 4368 }
jmitc91516 0:9140ec6aa604 4369 }
jmitc91516 0:9140ec6aa604 4370 else
jmitc91516 0:9140ec6aa604 4371 {
jmitc91516 0:9140ec6aa604 4372 CharPtr += CharNo;
jmitc91516 0:9140ec6aa604 4373
jmitc91516 0:9140ec6aa604 4374 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 4375 #ifdef GuiConst_AVRGCC_COMPILER
jmitc91516 0:9140ec6aa604 4376 CharCode = (unsigned GuiConst_CHAR) ReadBytePtr(CharPtr);
jmitc91516 0:9140ec6aa604 4377 #else
jmitc91516 0:9140ec6aa604 4378 #ifdef GuiConst_ICC_COMPILER
jmitc91516 0:9140ec6aa604 4379 CharCode = *((GuiConst_INT8U PrefixRom *)CharPtr);
jmitc91516 0:9140ec6aa604 4380 #else
jmitc91516 0:9140ec6aa604 4381 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 4382 CharCode = *((GuiConst_INT8U PrefixRom *)CharPtr);
jmitc91516 0:9140ec6aa604 4383 #else
jmitc91516 0:9140ec6aa604 4384 CharCode = (unsigned GuiConst_TEXT) *CharPtr;
jmitc91516 0:9140ec6aa604 4385 #endif
jmitc91516 0:9140ec6aa604 4386 #endif
jmitc91516 0:9140ec6aa604 4387 #endif
jmitc91516 0:9140ec6aa604 4388 #else
jmitc91516 0:9140ec6aa604 4389 CharCode = *((GuiConst_INT16U PrefixLocate *)CharPtr);
jmitc91516 0:9140ec6aa604 4390 #endif
jmitc91516 0:9140ec6aa604 4391 }
jmitc91516 0:9140ec6aa604 4392
jmitc91516 0:9140ec6aa604 4393 return (GuiConst_TEXT)CharCode;
jmitc91516 0:9140ec6aa604 4394 }
jmitc91516 0:9140ec6aa604 4395
jmitc91516 0:9140ec6aa604 4396 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4397 GuiConst_TEXT GuiLib_GetCharCode(
jmitc91516 0:9140ec6aa604 4398 const GuiConst_INT16U StructureNdx,
jmitc91516 0:9140ec6aa604 4399 GuiConst_INT16U TextNo,
jmitc91516 0:9140ec6aa604 4400 GuiConst_INT16U CharNo,
jmitc91516 0:9140ec6aa604 4401 GuiConst_INT16U OmitCtrlCode)
jmitc91516 0:9140ec6aa604 4402 {
jmitc91516 0:9140ec6aa604 4403 GuiConst_TEXT PrefixRom * CharPtr;
jmitc91516 0:9140ec6aa604 4404
jmitc91516 0:9140ec6aa604 4405 CharPtr = GuiLib_GetTextPtr(StructureNdx, TextNo);
jmitc91516 0:9140ec6aa604 4406
jmitc91516 0:9140ec6aa604 4407 if (CharPtr == 0) return 0;
jmitc91516 0:9140ec6aa604 4408
jmitc91516 0:9140ec6aa604 4409 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 4410 return GetCharCode(CharPtr,
jmitc91516 0:9140ec6aa604 4411 strlen(CharPtr),
jmitc91516 0:9140ec6aa604 4412 CharNo,
jmitc91516 0:9140ec6aa604 4413 OmitCtrlCode);
jmitc91516 0:9140ec6aa604 4414 #else
jmitc91516 0:9140ec6aa604 4415 return GetCharCode(CharPtr,
jmitc91516 0:9140ec6aa604 4416 GuiLib_UnicodeStrLen(CharPtr),
jmitc91516 0:9140ec6aa604 4417 CharNo,
jmitc91516 0:9140ec6aa604 4418 OmitCtrlCode);
jmitc91516 0:9140ec6aa604 4419 #endif
jmitc91516 0:9140ec6aa604 4420 }
jmitc91516 0:9140ec6aa604 4421
jmitc91516 0:9140ec6aa604 4422 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4423 #ifdef GuiConst_BLINK_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4424 GuiConst_TEXT GuiLib_GetBlinkingCharCode(
jmitc91516 0:9140ec6aa604 4425 GuiConst_INT16U BlinkFieldNo,
jmitc91516 0:9140ec6aa604 4426 GuiConst_INT16U CharNo,
jmitc91516 0:9140ec6aa604 4427 GuiConst_INT16U OmitCtrlCode)
jmitc91516 0:9140ec6aa604 4428 {
jmitc91516 0:9140ec6aa604 4429 #ifndef GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 4430 GuiConst_INT16U StrLen;
jmitc91516 0:9140ec6aa604 4431
jmitc91516 0:9140ec6aa604 4432 if (BlinkFieldNo >= GuiConst_BLINK_FIELDS_MAX)
jmitc91516 0:9140ec6aa604 4433 return 0;
jmitc91516 0:9140ec6aa604 4434
jmitc91516 0:9140ec6aa604 4435 if (sgl.BlinkTextItems[BlinkFieldNo].InUse)
jmitc91516 0:9140ec6aa604 4436 {
jmitc91516 0:9140ec6aa604 4437 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 4438 StrLen = strlen((GuiConst_TEXT*)sgl.BlinkTextItems[BlinkFieldNo].TextPtr);
jmitc91516 0:9140ec6aa604 4439 #else
jmitc91516 0:9140ec6aa604 4440 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 4441 StrLen = GuiLib_UnicodeStrLen(
jmitc91516 0:9140ec6aa604 4442 (GuiConst_TEXT*)sgl.BlinkTextItems[BlinkFieldNo].TextPtr);
jmitc91516 0:9140ec6aa604 4443 #else
jmitc91516 0:9140ec6aa604 4444 StrLen = GuiLib_UnicodeStrLen((GuiConst_TEXT*)sgl.BlinkTextItems[BlinkFieldNo].TextPtr);
jmitc91516 0:9140ec6aa604 4445 #endif
jmitc91516 0:9140ec6aa604 4446 #endif
jmitc91516 0:9140ec6aa604 4447
jmitc91516 0:9140ec6aa604 4448 return GetCharCode((GuiConst_TEXT PrefixRom *)sgl.BlinkTextItems[BlinkFieldNo].TextPtr,
jmitc91516 0:9140ec6aa604 4449 StrLen,
jmitc91516 0:9140ec6aa604 4450 CharNo,
jmitc91516 0:9140ec6aa604 4451 OmitCtrlCode);
jmitc91516 0:9140ec6aa604 4452 }
jmitc91516 0:9140ec6aa604 4453 else
jmitc91516 0:9140ec6aa604 4454 #endif
jmitc91516 0:9140ec6aa604 4455 return 0;
jmitc91516 0:9140ec6aa604 4456 }
jmitc91516 0:9140ec6aa604 4457 #endif
jmitc91516 0:9140ec6aa604 4458
jmitc91516 0:9140ec6aa604 4459 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4460 void GuiLib_SetLanguage(
jmitc91516 0:9140ec6aa604 4461 GuiConst_INT16S NewLanguage)
jmitc91516 0:9140ec6aa604 4462 {
jmitc91516 0:9140ec6aa604 4463 GuiLib_LanguageIndex = CheckLanguageIndex(NewLanguage);
jmitc91516 0:9140ec6aa604 4464 }
jmitc91516 0:9140ec6aa604 4465
jmitc91516 0:9140ec6aa604 4466 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4467 static void InvertBox(void)
jmitc91516 0:9140ec6aa604 4468 {
jmitc91516 0:9140ec6aa604 4469 if (sgl.DisplayWriting)
jmitc91516 0:9140ec6aa604 4470 GuiLib_InvertBox(sgl.InvertBoxX1, sgl.InvertBoxY1, sgl.InvertBoxX2, sgl.InvertBoxY2);
jmitc91516 0:9140ec6aa604 4471 sgl.InvertBoxOn = !sgl.InvertBoxOn;
jmitc91516 0:9140ec6aa604 4472 }
jmitc91516 0:9140ec6aa604 4473
jmitc91516 0:9140ec6aa604 4474 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4475 void GuiLib_InvertBoxStart(
jmitc91516 0:9140ec6aa604 4476 GuiConst_INT16S X1,
jmitc91516 0:9140ec6aa604 4477 GuiConst_INT16S Y1,
jmitc91516 0:9140ec6aa604 4478 GuiConst_INT16S X2,
jmitc91516 0:9140ec6aa604 4479 GuiConst_INT16S Y2)
jmitc91516 0:9140ec6aa604 4480 {
jmitc91516 0:9140ec6aa604 4481 GuiLib_InvertBoxStop();
jmitc91516 0:9140ec6aa604 4482 sgl.InvertBoxX1 = X1;
jmitc91516 0:9140ec6aa604 4483 sgl.InvertBoxY1 = Y1;
jmitc91516 0:9140ec6aa604 4484 sgl.InvertBoxX2 = X2;
jmitc91516 0:9140ec6aa604 4485 sgl.InvertBoxY2 = Y2;
jmitc91516 0:9140ec6aa604 4486 InvertBox();
jmitc91516 0:9140ec6aa604 4487 }
jmitc91516 0:9140ec6aa604 4488
jmitc91516 0:9140ec6aa604 4489 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4490 void GuiLib_InvertBoxStop(void)
jmitc91516 0:9140ec6aa604 4491 {
jmitc91516 0:9140ec6aa604 4492 if (sgl.InvertBoxOn)
jmitc91516 0:9140ec6aa604 4493 InvertBox();
jmitc91516 0:9140ec6aa604 4494 }
jmitc91516 0:9140ec6aa604 4495
jmitc91516 0:9140ec6aa604 4496 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4497 void GuiLib_Refresh(void)
jmitc91516 0:9140ec6aa604 4498 {
jmitc91516 0:9140ec6aa604 4499 #ifdef WANT_DOUBLE_BUFFERING // Otherwise we are writing direct to the display - no need for this code
jmitc91516 0:9140ec6aa604 4500 GuiConst_INT16S N, L;
jmitc91516 0:9140ec6aa604 4501 GuiConst_INT8U RedrawBottomLevel;
jmitc91516 0:9140ec6aa604 4502 ItemMemory RemMemory;
jmitc91516 0:9140ec6aa604 4503 GuiConst_INT8U ColorInvert;
jmitc91516 0:9140ec6aa604 4504
jmitc91516 0:9140ec6aa604 4505 GuiDisplay_Lock();
jmitc91516 0:9140ec6aa604 4506
jmitc91516 0:9140ec6aa604 4507 sgl.RefreshClock++;
jmitc91516 0:9140ec6aa604 4508
jmitc91516 0:9140ec6aa604 4509 RedrawBottomLevel = 0;
jmitc91516 0:9140ec6aa604 4510
jmitc91516 0:9140ec6aa604 4511 N = AutoRedraw_Reset();
jmitc91516 0:9140ec6aa604 4512
jmitc91516 0:9140ec6aa604 4513 memcpy(&RemMemory, &sgl.Memory, sizeof(ItemMemory));
jmitc91516 0:9140ec6aa604 4514
jmitc91516 0:9140ec6aa604 4515 while (N != -1)
jmitc91516 0:9140ec6aa604 4516 {
jmitc91516 0:9140ec6aa604 4517 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4518 if (!AutoRedraw_IsOnlyCursor(N))
jmitc91516 0:9140ec6aa604 4519 #endif
jmitc91516 0:9140ec6aa604 4520 {
jmitc91516 0:9140ec6aa604 4521 if (AutoRedraw_VarChanged(N) != 0)
jmitc91516 0:9140ec6aa604 4522 {
jmitc91516 0:9140ec6aa604 4523 memcpy(&sgl.CurItem, AutoRedraw_GetItem(N), sizeof(GuiLib_ItemRec));
jmitc91516 0:9140ec6aa604 4524 memcpy(&sgl.Memory, AutoRedraw_GetItemMemory(N), sizeof(ItemMemory));
jmitc91516 0:9140ec6aa604 4525
jmitc91516 0:9140ec6aa604 4526 AutoRedraw_UpdateVar(N);
jmitc91516 0:9140ec6aa604 4527
jmitc91516 0:9140ec6aa604 4528 ColorInvert = GuiLib_COL_INVERT_IF_CURSOR;
jmitc91516 0:9140ec6aa604 4529
jmitc91516 0:9140ec6aa604 4530 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4531 if (AutoRedraw_CheckCursorInheritance(N) == 0)
jmitc91516 0:9140ec6aa604 4532 ColorInvert = GuiLib_COL_INVERT_ON;
jmitc91516 0:9140ec6aa604 4533 #endif
jmitc91516 0:9140ec6aa604 4534
jmitc91516 0:9140ec6aa604 4535 L = AutoRedraw_GetLevel(N);
jmitc91516 0:9140ec6aa604 4536
jmitc91516 0:9140ec6aa604 4537 if (AutoRedraw_ItemIsStruct(N))
jmitc91516 0:9140ec6aa604 4538 {
jmitc91516 0:9140ec6aa604 4539 N = AutoRedraw_DeleteStruct(N);
jmitc91516 0:9140ec6aa604 4540 sgl.AutoRedrawUpdate = GuiLib_TRUE;
jmitc91516 0:9140ec6aa604 4541 if (sgl.AutoRedrawInsertPoint >= 0)
jmitc91516 0:9140ec6aa604 4542 N = AutoRedraw_GetNext(N);
jmitc91516 0:9140ec6aa604 4543 }
jmitc91516 0:9140ec6aa604 4544 else
jmitc91516 0:9140ec6aa604 4545 {
jmitc91516 0:9140ec6aa604 4546 sgl.AutoRedrawUpdate = GuiLib_FALSE;
jmitc91516 0:9140ec6aa604 4547 N = AutoRedraw_GetNext(N);
jmitc91516 0:9140ec6aa604 4548 }
jmitc91516 0:9140ec6aa604 4549
jmitc91516 0:9140ec6aa604 4550 #ifdef GuiConst_BITMAP_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4551 UpdateBackgroundBitmap();
jmitc91516 0:9140ec6aa604 4552 #endif
jmitc91516 0:9140ec6aa604 4553
jmitc91516 0:9140ec6aa604 4554 sgl.DisplayLevel = 0;
jmitc91516 0:9140ec6aa604 4555 sgl.SwapColors = 0;
jmitc91516 0:9140ec6aa604 4556
jmitc91516 0:9140ec6aa604 4557 #ifdef GuiConst_BLINK_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4558 #ifndef GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 4559 if ((sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_BLINKTEXTFIELD) &&
jmitc91516 0:9140ec6aa604 4560 (sgl.CurItem.BlinkFieldNo < GuiConst_BLINK_FIELDS_MAX) &&
jmitc91516 0:9140ec6aa604 4561 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].InUse &&
jmitc91516 0:9140ec6aa604 4562 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].Active &&
jmitc91516 0:9140ec6aa604 4563 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].BlinkBoxInverted)
jmitc91516 0:9140ec6aa604 4564 GuiLib_InvertBox(sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].BlinkBoxX1,
jmitc91516 0:9140ec6aa604 4565 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].BlinkBoxY1,
jmitc91516 0:9140ec6aa604 4566 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].BlinkBoxX2,
jmitc91516 0:9140ec6aa604 4567 sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].BlinkBoxY2);
jmitc91516 0:9140ec6aa604 4568 #endif
jmitc91516 0:9140ec6aa604 4569 #endif
jmitc91516 0:9140ec6aa604 4570
jmitc91516 0:9140ec6aa604 4571 DrawItem(ColorInvert);
jmitc91516 0:9140ec6aa604 4572
jmitc91516 0:9140ec6aa604 4573 if (L == 0)
jmitc91516 0:9140ec6aa604 4574 RedrawBottomLevel = 1;
jmitc91516 0:9140ec6aa604 4575
jmitc91516 0:9140ec6aa604 4576 sgl.AutoRedrawUpdate = GuiLib_FALSE;
jmitc91516 0:9140ec6aa604 4577 }
jmitc91516 0:9140ec6aa604 4578 else
jmitc91516 0:9140ec6aa604 4579 N = AutoRedraw_GetNext(N);
jmitc91516 0:9140ec6aa604 4580 }
jmitc91516 0:9140ec6aa604 4581 #ifdef GuiConst_CURSOR_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4582 else
jmitc91516 0:9140ec6aa604 4583 N = AutoRedraw_GetNext(N);
jmitc91516 0:9140ec6aa604 4584 #endif
jmitc91516 0:9140ec6aa604 4585 }
jmitc91516 0:9140ec6aa604 4586
jmitc91516 0:9140ec6aa604 4587 memcpy(&sgl.Memory, &RemMemory, sizeof(ItemMemory));
jmitc91516 0:9140ec6aa604 4588
jmitc91516 0:9140ec6aa604 4589
jmitc91516 0:9140ec6aa604 4590 if ((sgl.DrawingLevel > 0) && RedrawBottomLevel && (sgl.TopLevelStructure != 0))
jmitc91516 0:9140ec6aa604 4591 {
jmitc91516 0:9140ec6aa604 4592 sgl.DisplayLevel = 0;
jmitc91516 0:9140ec6aa604 4593 sgl.SwapColors = 0;
jmitc91516 0:9140ec6aa604 4594 DrawStructure(sgl.TopLevelStructure, GuiLib_COL_INVERT_IF_CURSOR);
jmitc91516 0:9140ec6aa604 4595 ResetLayerBufPtr();
jmitc91516 0:9140ec6aa604 4596 }
jmitc91516 0:9140ec6aa604 4597
jmitc91516 0:9140ec6aa604 4598 #ifdef GuiConst_BLINK_SUPPORT_ON
jmitc91516 0:9140ec6aa604 4599 #ifndef GuiConst_BLINK_FIELDS_OFF
jmitc91516 0:9140ec6aa604 4600 for (N = 0; N < GuiConst_BLINK_FIELDS_MAX; N++)
jmitc91516 0:9140ec6aa604 4601 if (sgl.BlinkTextItems[N].InUse &&
jmitc91516 0:9140ec6aa604 4602 sgl.BlinkTextItems[N].Active)
jmitc91516 0:9140ec6aa604 4603 {
jmitc91516 0:9140ec6aa604 4604 if (sgl.BlinkTextItems[N].BlinkBoxInverted !=
jmitc91516 0:9140ec6aa604 4605 sgl.BlinkTextItems[N].BlinkBoxLast)
jmitc91516 0:9140ec6aa604 4606 {
jmitc91516 0:9140ec6aa604 4607 GuiLib_InvertBox(sgl.BlinkTextItems[N].BlinkBoxX1,
jmitc91516 0:9140ec6aa604 4608 sgl.BlinkTextItems[N].BlinkBoxY1,
jmitc91516 0:9140ec6aa604 4609 sgl.BlinkTextItems[N].BlinkBoxX2,
jmitc91516 0:9140ec6aa604 4610 sgl.BlinkTextItems[N].BlinkBoxY2);
jmitc91516 0:9140ec6aa604 4611 sgl.BlinkTextItems[N].BlinkBoxInverted =
jmitc91516 0:9140ec6aa604 4612 sgl.BlinkTextItems[N].BlinkBoxLast;
jmitc91516 0:9140ec6aa604 4613 }
jmitc91516 0:9140ec6aa604 4614 if (sgl.BlinkTextItems[N].BlinkBoxState < 255)
jmitc91516 0:9140ec6aa604 4615 {
jmitc91516 0:9140ec6aa604 4616 sgl.BlinkTextItems[N].BlinkBoxState--;
jmitc91516 0:9140ec6aa604 4617 if (sgl.BlinkTextItems[N].BlinkBoxState == 0)
jmitc91516 0:9140ec6aa604 4618 {
jmitc91516 0:9140ec6aa604 4619 sgl.BlinkTextItems[N].BlinkBoxState = sgl.BlinkTextItems[N].BlinkBoxRate;
jmitc91516 0:9140ec6aa604 4620 if (sgl.DisplayWriting)
jmitc91516 0:9140ec6aa604 4621 {
jmitc91516 0:9140ec6aa604 4622 GuiLib_InvertBox(sgl.BlinkTextItems[N].BlinkBoxX1,
jmitc91516 0:9140ec6aa604 4623 sgl.BlinkTextItems[N].BlinkBoxY1,
jmitc91516 0:9140ec6aa604 4624 sgl.BlinkTextItems[N].BlinkBoxX2,
jmitc91516 0:9140ec6aa604 4625 sgl.BlinkTextItems[N].BlinkBoxY2);
jmitc91516 0:9140ec6aa604 4626 sgl.BlinkTextItems[N].BlinkBoxInverted =
jmitc91516 0:9140ec6aa604 4627 !sgl.BlinkTextItems[N].BlinkBoxInverted;
jmitc91516 0:9140ec6aa604 4628 sgl.BlinkTextItems[N].BlinkBoxLast =
jmitc91516 0:9140ec6aa604 4629 sgl.BlinkTextItems[N].BlinkBoxInverted;
jmitc91516 0:9140ec6aa604 4630 }
jmitc91516 0:9140ec6aa604 4631 }
jmitc91516 0:9140ec6aa604 4632 }
jmitc91516 0:9140ec6aa604 4633 }
jmitc91516 0:9140ec6aa604 4634 if (sgl.BlinkBoxRate)
jmitc91516 0:9140ec6aa604 4635 {
jmitc91516 0:9140ec6aa604 4636 if (sgl.BlinkBoxState < 255)
jmitc91516 0:9140ec6aa604 4637 sgl.BlinkBoxState--;
jmitc91516 0:9140ec6aa604 4638 if (sgl.BlinkBoxState == 0)
jmitc91516 0:9140ec6aa604 4639 {
jmitc91516 0:9140ec6aa604 4640 sgl.BlinkBoxState = sgl.BlinkBoxRate;
jmitc91516 0:9140ec6aa604 4641 BlinkBox();
jmitc91516 0:9140ec6aa604 4642 }
jmitc91516 0:9140ec6aa604 4643 }
jmitc91516 0:9140ec6aa604 4644 #endif
jmitc91516 0:9140ec6aa604 4645 #endif
jmitc91516 0:9140ec6aa604 4646
jmitc91516 0:9140ec6aa604 4647 GuiDisplay_Unlock();
jmitc91516 0:9140ec6aa604 4648
jmitc91516 0:9140ec6aa604 4649 GuiDisplay_Refresh();
jmitc91516 0:9140ec6aa604 4650 #endif // WANT_DOUBLE_BUFFERING
jmitc91516 0:9140ec6aa604 4651 }
jmitc91516 0:9140ec6aa604 4652
jmitc91516 0:9140ec6aa604 4653 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4654 void GuiLib_DrawChar(
jmitc91516 0:9140ec6aa604 4655 GuiConst_INT16S X,
jmitc91516 0:9140ec6aa604 4656 GuiConst_INT16S Y,
jmitc91516 0:9140ec6aa604 4657 GuiConst_INT16U FontNo,
jmitc91516 0:9140ec6aa604 4658 GuiConst_TEXT Character,
jmitc91516 0:9140ec6aa604 4659 GuiConst_INTCOLOR Color)
jmitc91516 0:9140ec6aa604 4660 {
jmitc91516 0:9140ec6aa604 4661 GuiLib_FontRecPtr Font;
jmitc91516 0:9140ec6aa604 4662 #ifndef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 4663 GuiConst_INT8U PrefixRom *CharPtr;
jmitc91516 0:9140ec6aa604 4664 #endif
jmitc91516 0:9140ec6aa604 4665 GuiConst_INT16S X1,Y1,X2,Y2;
jmitc91516 0:9140ec6aa604 4666 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 4667 GuiConst_INT32U CharNdx;
jmitc91516 0:9140ec6aa604 4668 #else
jmitc91516 0:9140ec6aa604 4669 #ifdef GuiConst_CHARMODE_UNICODE
jmitc91516 0:9140ec6aa604 4670 GuiConst_INT32U CharNdx;
jmitc91516 0:9140ec6aa604 4671 #endif
jmitc91516 0:9140ec6aa604 4672 #endif
jmitc91516 0:9140ec6aa604 4673
jmitc91516 0:9140ec6aa604 4674 Font = (GuiLib_FontRecPtr) ReadWord(GuiFont_FontList[FontNo]);
jmitc91516 0:9140ec6aa604 4675
jmitc91516 0:9140ec6aa604 4676 Y -= ReadByte(Font->BaseLine);
jmitc91516 0:9140ec6aa604 4677
jmitc91516 0:9140ec6aa604 4678 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 4679 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 4680 if ((Character < Font->FirstChar) || (Character > Font->LastChar))
jmitc91516 0:9140ec6aa604 4681 CharNdx =
jmitc91516 0:9140ec6aa604 4682 (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[Font->IllegalCharNdx];
jmitc91516 0:9140ec6aa604 4683 else
jmitc91516 0:9140ec6aa604 4684 CharNdx =
jmitc91516 0:9140ec6aa604 4685 (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[Font->FirstCharNdx +
jmitc91516 0:9140ec6aa604 4686 (GuiConst_INT16U)Character - (GuiConst_INT16U)Font->FirstChar];
jmitc91516 0:9140ec6aa604 4687 DrawChar(X, Y, Font, CharNdx, Color, 0);
jmitc91516 0:9140ec6aa604 4688 #else
jmitc91516 0:9140ec6aa604 4689 if ((Character < ReadByte(Font->FirstChar)) ||
jmitc91516 0:9140ec6aa604 4690 (Character > ReadByte(Font->LastChar)))
jmitc91516 0:9140ec6aa604 4691 CharPtr = (GuiConst_INT8U PrefixRom *)ReadWord(
jmitc91516 0:9140ec6aa604 4692 GuiFont_ChPtrList[ReadWord(Font->IllegalCharNdx)]);
jmitc91516 0:9140ec6aa604 4693 else
jmitc91516 0:9140ec6aa604 4694 CharPtr = (GuiConst_INT8U PrefixRom *)ReadWord(
jmitc91516 0:9140ec6aa604 4695 GuiFont_ChPtrList[ReadWord(Font->FirstCharNdx) +
jmitc91516 0:9140ec6aa604 4696 (GuiConst_INT16U)Character -
jmitc91516 0:9140ec6aa604 4697 (GuiConst_INT16U)ReadByte(Font->FirstChar)]);
jmitc91516 0:9140ec6aa604 4698 DrawChar(X, Y, Font, CharPtr, Color, 0);
jmitc91516 0:9140ec6aa604 4699 #endif
jmitc91516 0:9140ec6aa604 4700 #else
jmitc91516 0:9140ec6aa604 4701 CharNdx = GetCharNdx(Font, Character);
jmitc91516 0:9140ec6aa604 4702 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 4703 DrawChar(X, Y, Font, CharNdx, Color, 0);
jmitc91516 0:9140ec6aa604 4704 #else
jmitc91516 0:9140ec6aa604 4705 CharPtr = (GuiConst_INT8U PrefixRom *)ReadWord(GuiFont_ChPtrList[CharNdx]);
jmitc91516 0:9140ec6aa604 4706 DrawChar(X, Y, Font, CharPtr, Color, 0);
jmitc91516 0:9140ec6aa604 4707 #endif
jmitc91516 0:9140ec6aa604 4708 #endif
jmitc91516 0:9140ec6aa604 4709
jmitc91516 0:9140ec6aa604 4710 #ifdef GuiConst_REMOTE_FONT_DATA
jmitc91516 0:9140ec6aa604 4711 X1 = X + sgl.GuiLib_RemoteFontBuffer[GuiLib_CHR_XLEFT_OFS];
jmitc91516 0:9140ec6aa604 4712 X2 = X1 + sgl.GuiLib_RemoteFontBuffer[GuiLib_CHR_XWIDTH_OFS] - 1;
jmitc91516 0:9140ec6aa604 4713 Y1 = Y + sgl.GuiLib_RemoteFontBuffer[GuiLib_CHR_YTOP_OFS];
jmitc91516 0:9140ec6aa604 4714 Y2 = Y1 + sgl.GuiLib_RemoteFontBuffer[GuiLib_CHR_YHEIGHT_OFS] - 1;
jmitc91516 0:9140ec6aa604 4715 #else
jmitc91516 0:9140ec6aa604 4716 X1 = X + ReadBytePtr(CharPtr + GuiLib_CHR_XLEFT_OFS);
jmitc91516 0:9140ec6aa604 4717 X2 = X1 + ReadBytePtr(CharPtr + GuiLib_CHR_XWIDTH_OFS) - 1;
jmitc91516 0:9140ec6aa604 4718 Y1 = Y + ReadBytePtr(CharPtr + GuiLib_CHR_YTOP_OFS);
jmitc91516 0:9140ec6aa604 4719 Y2 = Y1 + ReadBytePtr(CharPtr + GuiLib_CHR_YHEIGHT_OFS) - 1;
jmitc91516 0:9140ec6aa604 4720 #endif
jmitc91516 0:9140ec6aa604 4721
jmitc91516 0:9140ec6aa604 4722 GuiLib_MarkDisplayBoxRepaint(X1,Y1,X2,Y2);
jmitc91516 0:9140ec6aa604 4723 }
jmitc91516 0:9140ec6aa604 4724
jmitc91516 0:9140ec6aa604 4725 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4726 void GuiLib_DrawStr(
jmitc91516 0:9140ec6aa604 4727 GuiConst_INT16S X,
jmitc91516 0:9140ec6aa604 4728 GuiConst_INT16S Y,
jmitc91516 0:9140ec6aa604 4729 GuiConst_INT16U FontNo,
jmitc91516 0:9140ec6aa604 4730 GuiConst_TEXT *String,
jmitc91516 0:9140ec6aa604 4731 GuiConst_INT8U Alignment,
jmitc91516 0:9140ec6aa604 4732 GuiConst_INT8U PsWriting,
jmitc91516 0:9140ec6aa604 4733 GuiConst_INT8U Transparent,
jmitc91516 0:9140ec6aa604 4734 GuiConst_INT8U Underlining,
jmitc91516 0:9140ec6aa604 4735 GuiConst_INT16S BackBoxSizeX,
jmitc91516 0:9140ec6aa604 4736 GuiConst_INT16S BackBoxSizeY1,
jmitc91516 0:9140ec6aa604 4737 GuiConst_INT16S BackBoxSizeY2,
jmitc91516 0:9140ec6aa604 4738 GuiConst_INT8U BackBorderPixels,
jmitc91516 0:9140ec6aa604 4739 GuiConst_INTCOLOR ForeColor,
jmitc91516 0:9140ec6aa604 4740 GuiConst_INTCOLOR BackColor)
jmitc91516 0:9140ec6aa604 4741 {
jmitc91516 0:9140ec6aa604 4742 if (FontNo >= GuiFont_FontCnt)
jmitc91516 0:9140ec6aa604 4743 return;
jmitc91516 0:9140ec6aa604 4744 if (*String == 0)
jmitc91516 0:9140ec6aa604 4745 return;
jmitc91516 0:9140ec6aa604 4746
jmitc91516 0:9140ec6aa604 4747 SetCurFont(FontNo);
jmitc91516 0:9140ec6aa604 4748
jmitc91516 0:9140ec6aa604 4749 #ifdef GuiConst_AVRGCC_COMPILER
jmitc91516 0:9140ec6aa604 4750 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 4751 sgl.CurItem.TextPtr[0] = (GuiConst_INT8U *)String;
jmitc91516 0:9140ec6aa604 4752 #else
jmitc91516 0:9140ec6aa604 4753 sgl.CurItem.TextPtr[0] = (GuiConst_INT16U *)String;
jmitc91516 0:9140ec6aa604 4754 #endif
jmitc91516 0:9140ec6aa604 4755 #else
jmitc91516 0:9140ec6aa604 4756 #ifdef GuiConst_ICC_COMPILER
jmitc91516 0:9140ec6aa604 4757 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 4758 sgl.CurItem.TextPtr[0] = (GuiConst_INT8U *)String;
jmitc91516 0:9140ec6aa604 4759 #else
jmitc91516 0:9140ec6aa604 4760 sgl.CurItem.TextPtr[0] = (GuiConst_INT16U *)String;
jmitc91516 0:9140ec6aa604 4761 #endif
jmitc91516 0:9140ec6aa604 4762 #else
jmitc91516 0:9140ec6aa604 4763 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 4764 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 4765 sgl.CurItem.TextPtr[0] = (GuiConst_INT8U *)String;
jmitc91516 0:9140ec6aa604 4766 #else
jmitc91516 0:9140ec6aa604 4767 sgl.CurItem.TextPtr[0] = (GuiConst_INT16U *)String;
jmitc91516 0:9140ec6aa604 4768 #endif
jmitc91516 0:9140ec6aa604 4769 #else
jmitc91516 0:9140ec6aa604 4770 #ifdef GuiConst_RENESAS_COMPILER_FAR
jmitc91516 0:9140ec6aa604 4771 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 4772 sgl.CurItem.TextPtr[0] = (GuiConst_INT8U PrefixLocate *)String;
jmitc91516 0:9140ec6aa604 4773 #else
jmitc91516 0:9140ec6aa604 4774 sgl.CurItem.TextPtr[0] = (GuiConst_INT16U PrefixLocate *)String;
jmitc91516 0:9140ec6aa604 4775 #endif
jmitc91516 0:9140ec6aa604 4776 #else
jmitc91516 0:9140ec6aa604 4777 sgl.CurItem.TextPtr[0] = String;
jmitc91516 0:9140ec6aa604 4778 #endif
jmitc91516 0:9140ec6aa604 4779 #endif
jmitc91516 0:9140ec6aa604 4780 #endif
jmitc91516 0:9140ec6aa604 4781 #endif
jmitc91516 0:9140ec6aa604 4782
jmitc91516 0:9140ec6aa604 4783 sgl.CurItem.TextLength[0] = 0;
jmitc91516 0:9140ec6aa604 4784 while (*String != 0)
jmitc91516 0:9140ec6aa604 4785 {
jmitc91516 0:9140ec6aa604 4786 sgl.CurItem.TextLength[0]++;
jmitc91516 0:9140ec6aa604 4787 String++;
jmitc91516 0:9140ec6aa604 4788 }
jmitc91516 0:9140ec6aa604 4789 sgl.CurItem.X1 = X;
jmitc91516 0:9140ec6aa604 4790 sgl.CurItem.Y1 = Y;
jmitc91516 0:9140ec6aa604 4791 sgl.CurItem.TextPar[0].FontIndex = FontNo;
jmitc91516 0:9140ec6aa604 4792 sgl.CurItem.TextPar[0].Alignment = Alignment;
jmitc91516 0:9140ec6aa604 4793 sgl.CurItem.TextPar[0].Ps = PsWriting;
jmitc91516 0:9140ec6aa604 4794 sgl.CurItem.TextPar[0].BitFlags = 0;
jmitc91516 0:9140ec6aa604 4795 if (Underlining)
jmitc91516 0:9140ec6aa604 4796 sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_UNDERLINE;
jmitc91516 0:9140ec6aa604 4797 sgl.CurItem.TextPar[0].BackBoxSizeX = BackBoxSizeX;
jmitc91516 0:9140ec6aa604 4798 sgl.CurItem.TextPar[0].BackBoxSizeY1 = BackBoxSizeY1;
jmitc91516 0:9140ec6aa604 4799 sgl.CurItem.TextPar[0].BackBoxSizeY2 = BackBoxSizeY2;
jmitc91516 0:9140ec6aa604 4800 sgl.CurItem.TextPar[0].BackBorderPixels = BackBorderPixels;
jmitc91516 0:9140ec6aa604 4801 if (sgl.CurItem.TextPar[0].BackBoxSizeX > 0)
jmitc91516 0:9140ec6aa604 4802 DrawBackBox(BackColor, Transparent, 0);
jmitc91516 0:9140ec6aa604 4803
jmitc91516 0:9140ec6aa604 4804 #ifdef GuiConst_DISP_VAR_NOW
jmitc91516 0:9140ec6aa604 4805 displayVarNow = 1;
jmitc91516 0:9140ec6aa604 4806 #endif
jmitc91516 0:9140ec6aa604 4807
jmitc91516 0:9140ec6aa604 4808 DrawText(sgl.CurItem.TextPtr[0],
jmitc91516 0:9140ec6aa604 4809 sgl.CurItem.TextLength[0],
jmitc91516 0:9140ec6aa604 4810 0,
jmitc91516 0:9140ec6aa604 4811 ForeColor,
jmitc91516 0:9140ec6aa604 4812 BackColor,
jmitc91516 0:9140ec6aa604 4813 Transparent);
jmitc91516 0:9140ec6aa604 4814
jmitc91516 0:9140ec6aa604 4815 #ifdef GuiConst_DISP_VAR_NOW
jmitc91516 0:9140ec6aa604 4816 displayVarNow = 0;
jmitc91516 0:9140ec6aa604 4817 #endif
jmitc91516 0:9140ec6aa604 4818 }
jmitc91516 0:9140ec6aa604 4819
jmitc91516 0:9140ec6aa604 4820 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4821 void GuiLib_DrawVar(
jmitc91516 0:9140ec6aa604 4822 GuiConst_INT16S X,
jmitc91516 0:9140ec6aa604 4823 GuiConst_INT16S Y,
jmitc91516 0:9140ec6aa604 4824 GuiConst_INT16U FontNo,
jmitc91516 0:9140ec6aa604 4825 void PrefixLocate *VarPtr,
jmitc91516 0:9140ec6aa604 4826 GuiConst_INT8U VarType,
jmitc91516 0:9140ec6aa604 4827 GuiConst_INT8U FormatterFormat,
jmitc91516 0:9140ec6aa604 4828 GuiConst_INT8U FormatterFieldWidth,
jmitc91516 0:9140ec6aa604 4829 GuiConst_INT8U FormatterAlignment,
jmitc91516 0:9140ec6aa604 4830 GuiConst_INT8U FormatterDecimals,
jmitc91516 0:9140ec6aa604 4831 GuiConst_INT8U FormatterShowSign,
jmitc91516 0:9140ec6aa604 4832 GuiConst_INT8U FormatterZeroPadding,
jmitc91516 0:9140ec6aa604 4833 GuiConst_INT8U FormatterTrailingZeros,
jmitc91516 0:9140ec6aa604 4834 GuiConst_INT8U FormatterThousandsSeparator,
jmitc91516 0:9140ec6aa604 4835 GuiConst_INT8U Alignment,
jmitc91516 0:9140ec6aa604 4836 GuiConst_INT8U PsWriting,
jmitc91516 0:9140ec6aa604 4837 GuiConst_INT8U Transparent,
jmitc91516 0:9140ec6aa604 4838 GuiConst_INT8U Underlining,
jmitc91516 0:9140ec6aa604 4839 GuiConst_INT16S BackBoxSizeX,
jmitc91516 0:9140ec6aa604 4840 GuiConst_INT16S BackBoxSizeY1,
jmitc91516 0:9140ec6aa604 4841 GuiConst_INT16S BackBoxSizeY2,
jmitc91516 0:9140ec6aa604 4842 GuiConst_INT8U BackBorderPixels,
jmitc91516 0:9140ec6aa604 4843 GuiConst_INTCOLOR ForeColor,
jmitc91516 0:9140ec6aa604 4844 GuiConst_INTCOLOR BackColor)
jmitc91516 0:9140ec6aa604 4845 {
jmitc91516 0:9140ec6aa604 4846 GuiConst_INT32S VarValue;
jmitc91516 0:9140ec6aa604 4847 GuiConst_INT16U StrLen;
jmitc91516 0:9140ec6aa604 4848 #ifndef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 4849 GuiConst_INT16U P;
jmitc91516 0:9140ec6aa604 4850 #endif
jmitc91516 0:9140ec6aa604 4851 GuiConst_TEXT PrefixGeneric *CharPtr;
jmitc91516 0:9140ec6aa604 4852
jmitc91516 0:9140ec6aa604 4853 if (FontNo >= GuiFont_FontCnt)
jmitc91516 0:9140ec6aa604 4854 return;
jmitc91516 0:9140ec6aa604 4855
jmitc91516 0:9140ec6aa604 4856 SetCurFont(FontNo);
jmitc91516 0:9140ec6aa604 4857
jmitc91516 0:9140ec6aa604 4858 sgl.CurItem.VarPtr = VarPtr;
jmitc91516 0:9140ec6aa604 4859 sgl.CurItem.VarType = VarType;
jmitc91516 0:9140ec6aa604 4860 sgl.CurItem.FormatFormat = FormatterFormat;
jmitc91516 0:9140ec6aa604 4861 sgl.CurItem.FormatFieldWidth = FormatterFieldWidth;
jmitc91516 0:9140ec6aa604 4862 sgl.CurItem.FormatAlignment = FormatterAlignment;
jmitc91516 0:9140ec6aa604 4863 sgl.CurItem.FormatDecimals = FormatterDecimals;
jmitc91516 0:9140ec6aa604 4864 sgl.CurItem.TextPar[0].BitFlags = 0;
jmitc91516 0:9140ec6aa604 4865 if (FormatterShowSign)
jmitc91516 0:9140ec6aa604 4866 sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATSHOWSIGN;
jmitc91516 0:9140ec6aa604 4867 if (FormatterZeroPadding)
jmitc91516 0:9140ec6aa604 4868 sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATZEROPADDING;
jmitc91516 0:9140ec6aa604 4869 if (FormatterTrailingZeros)
jmitc91516 0:9140ec6aa604 4870 sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATTRAILINGZEROS;
jmitc91516 0:9140ec6aa604 4871 if (FormatterThousandsSeparator)
jmitc91516 0:9140ec6aa604 4872 sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATTHOUSANDSSEP;
jmitc91516 0:9140ec6aa604 4873 sgl.CurItem.X1 = X;
jmitc91516 0:9140ec6aa604 4874 sgl.CurItem.Y1 = Y;
jmitc91516 0:9140ec6aa604 4875 sgl.CurItem.TextPar[0].FontIndex = FontNo;
jmitc91516 0:9140ec6aa604 4876 sgl.CurItem.TextPar[0].Alignment = Alignment;
jmitc91516 0:9140ec6aa604 4877 sgl.CurItem.TextPar[0].Ps = PsWriting;
jmitc91516 0:9140ec6aa604 4878 if (Underlining)
jmitc91516 0:9140ec6aa604 4879 sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_UNDERLINE;
jmitc91516 0:9140ec6aa604 4880 sgl.CurItem.TextPar[0].BackBoxSizeX = BackBoxSizeX;
jmitc91516 0:9140ec6aa604 4881 sgl.CurItem.TextPar[0].BackBoxSizeY1 = BackBoxSizeY1;
jmitc91516 0:9140ec6aa604 4882 sgl.CurItem.TextPar[0].BackBoxSizeY2 = BackBoxSizeY2;
jmitc91516 0:9140ec6aa604 4883 sgl.CurItem.TextPar[0].BackBorderPixels = BackBorderPixels;
jmitc91516 0:9140ec6aa604 4884 if (sgl.CurItem.TextPar[0].BackBoxSizeX > 0)
jmitc91516 0:9140ec6aa604 4885 DrawBackBox(BackColor, Transparent, 0);
jmitc91516 0:9140ec6aa604 4886
jmitc91516 0:9140ec6aa604 4887 #ifdef GuiConst_DISP_VAR_NOW
jmitc91516 0:9140ec6aa604 4888 displayVarNow = 1;
jmitc91516 0:9140ec6aa604 4889 #endif
jmitc91516 0:9140ec6aa604 4890
jmitc91516 0:9140ec6aa604 4891 if (sgl.CurItem.VarType == GuiLib_VAR_STRING)
jmitc91516 0:9140ec6aa604 4892 {
jmitc91516 0:9140ec6aa604 4893 CharPtr = (GuiConst_TEXT PrefixLocate *)sgl.CurItem.VarPtr;
jmitc91516 0:9140ec6aa604 4894 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 4895 StrLen = strlen(CharPtr);
jmitc91516 0:9140ec6aa604 4896 #else
jmitc91516 0:9140ec6aa604 4897 #ifdef GuiConst_CODEVISION_COMPILER
jmitc91516 0:9140ec6aa604 4898 StrLen = GuiLib_UnicodeStrLen((GuiConst_TEXT*)CharPtr);
jmitc91516 0:9140ec6aa604 4899 #else
jmitc91516 0:9140ec6aa604 4900 StrLen = GuiLib_UnicodeStrLen(CharPtr);
jmitc91516 0:9140ec6aa604 4901 #endif
jmitc91516 0:9140ec6aa604 4902 #endif
jmitc91516 0:9140ec6aa604 4903 }
jmitc91516 0:9140ec6aa604 4904 else
jmitc91516 0:9140ec6aa604 4905 {
jmitc91516 0:9140ec6aa604 4906 VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType);
jmitc91516 0:9140ec6aa604 4907 StrLen = DataNumStr(VarValue, sgl.CurItem.VarType, 0);
jmitc91516 0:9140ec6aa604 4908 #ifdef GuiConst_CHARMODE_ANSI
jmitc91516 0:9140ec6aa604 4909 CharPtr = (GuiConst_TEXT PrefixGeneric *) sgl.VarNumTextStr;
jmitc91516 0:9140ec6aa604 4910 #else
jmitc91516 0:9140ec6aa604 4911 for (P = 0; P <= StrLen; P++)
jmitc91516 0:9140ec6aa604 4912 sgl.VarNumUnicodeTextStr[P] = sgl.VarNumTextStr[P];
jmitc91516 0:9140ec6aa604 4913 CharPtr = (GuiConst_TEXT PrefixGeneric *) sgl.VarNumUnicodeTextStr;
jmitc91516 0:9140ec6aa604 4914 #endif
jmitc91516 0:9140ec6aa604 4915 }
jmitc91516 0:9140ec6aa604 4916
jmitc91516 0:9140ec6aa604 4917 DrawText(CharPtr,
jmitc91516 0:9140ec6aa604 4918 StrLen,
jmitc91516 0:9140ec6aa604 4919 0,
jmitc91516 0:9140ec6aa604 4920 ForeColor,
jmitc91516 0:9140ec6aa604 4921 BackColor,
jmitc91516 0:9140ec6aa604 4922 Transparent);
jmitc91516 0:9140ec6aa604 4923
jmitc91516 0:9140ec6aa604 4924 #ifdef GuiConst_DISP_VAR_NOW
jmitc91516 0:9140ec6aa604 4925 displayVarNow = 0;
jmitc91516 0:9140ec6aa604 4926 #endif
jmitc91516 0:9140ec6aa604 4927 }
jmitc91516 0:9140ec6aa604 4928
jmitc91516 0:9140ec6aa604 4929 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4930 void GuiLib_TestPattern(void)
jmitc91516 0:9140ec6aa604 4931 {
jmitc91516 0:9140ec6aa604 4932 GuiLib_HLine(0, 31, 0, GuiConst_PIXEL_ON);
jmitc91516 0:9140ec6aa604 4933 GuiLib_VLine(0, 1, 31, GuiConst_PIXEL_ON);
jmitc91516 0:9140ec6aa604 4934 GuiLib_HLine(2, 8, 2, GuiConst_PIXEL_ON);
jmitc91516 0:9140ec6aa604 4935 GuiLib_HLine(11, 16, 2, GuiConst_PIXEL_ON);
jmitc91516 0:9140ec6aa604 4936 GuiLib_VLine(4, 4, 10, GuiConst_PIXEL_ON);
jmitc91516 0:9140ec6aa604 4937 GuiLib_VLine(4, 13, 18, GuiConst_PIXEL_ON);
jmitc91516 0:9140ec6aa604 4938 }
jmitc91516 0:9140ec6aa604 4939
jmitc91516 0:9140ec6aa604 4940 #include "GuiComponents.h"
jmitc91516 0:9140ec6aa604 4941
jmitc91516 0:9140ec6aa604 4942 #ifdef GuiConst_REMOTE_DATA
jmitc91516 0:9140ec6aa604 4943 //------------------------------------------------------------------------------
jmitc91516 0:9140ec6aa604 4944 GuiConst_INT8U GuiLib_RemoteCheck(void)
jmitc91516 0:9140ec6aa604 4945 {
jmitc91516 0:9140ec6aa604 4946 union
jmitc91516 0:9140ec6aa604 4947 {
jmitc91516 0:9140ec6aa604 4948 GuiConst_INT8U Bytes[4];
jmitc91516 0:9140ec6aa604 4949 GuiConst_INT32U IdInFile;
jmitc91516 0:9140ec6aa604 4950 } RemoteIdUnion;
jmitc91516 0:9140ec6aa604 4951 GuiConst_INT8U ok;
jmitc91516 0:9140ec6aa604 4952
jmitc91516 0:9140ec6aa604 4953 GuiLib_RemoteDataReadBlock(0, 4, RemoteIdUnion.Bytes);
jmitc91516 0:9140ec6aa604 4954 ok = (RemoteIdUnion.IdInFile == GuiConst_REMOTE_ID);
jmitc91516 0:9140ec6aa604 4955
jmitc91516 0:9140ec6aa604 4956 #ifdef GuiConst_REMOTE_TEXT_DATA
jmitc91516 0:9140ec6aa604 4957 GuiLib_RemoteTextReadBlock(0, 4, RemoteIdUnion.Bytes);
jmitc91516 0:9140ec6aa604 4958 ok = ok && (RemoteIdUnion.IdInFile == GuiConst_REMOTE_ID);
jmitc91516 0:9140ec6aa604 4959 #endif
jmitc91516 0:9140ec6aa604 4960
jmitc91516 0:9140ec6aa604 4961 return (ok);
jmitc91516 0:9140ec6aa604 4962 }
jmitc91516 0:9140ec6aa604 4963 #endif
jmitc91516 0:9140ec6aa604 4964
jmitc91516 0:9140ec6aa604 4965