Rev 5782 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5782 | Rev 5783 | ||
---|---|---|---|
Line 18... | Line 18... | ||
18 | byte TMP_WEIGHT; |
18 | byte TMP_WEIGHT; |
19 | }; |
19 | }; |
20 | :struct FONT |
20 | :struct FONT |
21 | { |
21 | { |
22 | __SIZE size; |
22 | __SIZE size; |
23 | byte width,height,offsetLine,r,g,b,weight,italic; |
23 | byte r,g,b,weight,italic; |
- | 24 | byte width,height; |
|
24 | byte encoding; |
25 | byte encoding; |
25 | dword color; |
26 | dword color; |
26 | dword file_size; |
27 | dword file_size; |
27 | dword buffer; |
28 | dword buffer; |
28 | dword buffer_size; |
29 | dword buffer_size; |
Line 36... | Line 37... | ||
36 | dword prepare(word x,y;dword text1); |
37 | dword prepare(word x,y;dword text1); |
37 | void prepare_buf(word x,y,w,h;dword text1); |
38 | void prepare_buf(word x,y,w,h;dword text1); |
38 | void show(word x,y); |
39 | void show(word x,y); |
39 | byte textcenter(word x,y,w,h;dword txt); |
40 | byte textcenter(word x,y,w,h;dword txt); |
40 | dword getsize(dword text1); |
41 | dword getsize(dword text1); |
41 | dword textarea(word x,y;dword text,c); |
- | |
42 | byte changeSIZE(); |
42 | byte changeSIZE(); |
43 | void PixelRGB(word x,y); |
43 | void PixelRGB(word x,y); |
44 | //dword GetPixel(word x,y); |
44 | //dword GetPixel(word x,y); |
45 | byte no_bg_copy; |
45 | byte no_bg_copy; |
46 | dword bg_color; |
46 | dword bg_color; |
Line 49... | Line 49... | ||
49 | /* |
49 | /* |
50 | :dword FONT::GetPixel(word x,y) |
50 | :dword FONT::GetPixel(word x,y) |
51 | { |
51 | { |
52 | dword tmp = y*size.width*3; |
52 | dword tmp = y*size.width*3; |
53 | tmp += x*3 + buffer; |
53 | tmp += x*3 + buffer; |
54 | r = DSBYTE[tmp]; |
54 | r = DSBYTE[tmp]; tmp++; |
55 | g = DSBYTE[tmp+1]; |
55 | g = DSBYTE[tmp]; tmp++; |
56 | b = DSBYTE[tmp+2]; |
56 | b = DSBYTE[tmp]; |
57 | }*/ |
57 | }*/ |
58 | :void FONT::PixelRGB(dword x,y) |
58 | :void FONT::PixelRGB(dword x,y) |
59 | { |
59 | { |
60 | dword tmp = y*size.width*3; |
60 | $push ebx |
61 | tmp += x*3 + buffer; |
61 | EBX = y*size.width+x*3 + buffer; |
62 | DSBYTE[tmp] = r; |
62 | DSBYTE[EBX] = r; EBX++; |
63 | DSBYTE[tmp+1] = g; |
63 | DSBYTE[EBX] = g; EBX++; |
64 | DSBYTE[tmp+2] = b; |
64 | DSBYTE[EBX] = b; |
- | 65 | $pop ebx |
|
65 | } |
66 | } |
66 | :byte FONT::changeSIZE() |
67 | :byte FONT::changeSIZE() |
67 | { |
68 | { |
68 | dword TMP_DATA; |
69 | dword TMP_DATA; |
69 | dword ofs; |
70 | dword ofs; |
70 | byte s; |
- | |
71 | IF(size.text<9) size.text = 8; |
71 | IF(size.text<9) size.text = 8; |
72 | s = size.text-8; |
- | |
73 | data = begin; |
- | |
74 | TMP_DATA = data; |
72 | TMP_DATA = data = begin; |
75 | TMP_DATA +=s*4; |
73 | TMP_DATA +=size.text-8*4; |
76 | ofs = DSDWORD[TMP_DATA]; |
74 | ofs = DSDWORD[TMP_DATA]; |
77 | IF(ofs==-1)return false; |
75 | IF(ofs==-1)return false; |
78 | data += ofs; |
- | |
79 | data += 156; |
76 | data += ofs + 156; |
80 | TMP_DATA = data; |
77 | TMP_DATA = data; |
81 | file_size = DSDWORD[TMP_DATA]; |
78 | file_size = DSDWORD[TMP_DATA]; |
82 | TMP_DATA += file_size; |
79 | TMP_DATA = data + file_size; |
83 | TMP_DATA--; |
- | |
84 | height = DSBYTE[TMP_DATA]; |
80 | height = DSBYTE[TMP_DATA - 1]; |
85 | TMP_DATA--; |
- | |
86 | width = DSBYTE[TMP_DATA]; |
81 | width = DSBYTE[TMP_DATA - 2]; |
87 | block = math.ceil(height*width/32); |
82 | block = math.ceil(height*width/32); |
88 | return true; |
83 | return true; |
89 | } |
84 | } |
90 | :proc_info Form_SELF_FONTS; |
- | |
91 | :byte FONT::textcenter(word x,y,w,h;dword txt) |
85 | :byte FONT::textcenter(word x,y,w,h;dword txt) |
92 | { |
86 | { |
93 | getsize(txt); |
87 | getsize(txt); |
94 | EDX = w/2; |
88 | EDX = w/2; |
95 | ECX = size.width/2; |
89 | ECX = size.width/2; |
Line 182... | Line 176... | ||
182 | IF(size.offset_x<0)size.offset_x = X; |
176 | IF(size.offset_x<0)size.offset_x = X; |
183 | } |
177 | } |
184 | :dword FONT::prepare(word x,y;dword text1) |
178 | :dword FONT::prepare(word x,y;dword text1) |
185 | { |
179 | { |
186 | signed len=0; |
180 | signed len=0; |
- | 181 | proc_info Form_SELF_FONTS; |
|
187 | dword c; |
182 | dword c; |
188 | c = color; |
183 | c = color; |
189 | IF(!text1)return false; |
184 | IF(!text1)return false; |
190 | IF(size.text)IF(!changeSIZE())return false; |
185 | IF(size.text)IF(!changeSIZE())return false; |
191 | GetProcessInfo(#Form_SELF_FONTS, SelfInfo); |
- | |
192 | IF(y>Form_SELF_FONTS.cheight) return false; |
- | |
193 | IF(x>Form_SELF_FONTS.cwidth) return false; |
186 | AX = c; r = AL; g = AH; c>>=16; AX = c; b = AL; |
194 | AX = c; |
- | |
195 | r = AL; |
- | |
196 | g = AH; |
- | |
197 | c>>=16; |
- | |
198 | AX = c; |
- | |
199 | b = AL; |
- | |
200 | getsize(text1); |
187 | getsize(text1); |
201 | y -= size.offset_y; |
188 | y -= size.offset_y; |
Line 202... | Line 189... | ||
202 | 189 | ||
203 | EDX = size.width*size.height*3; |
190 | EDX = size.width*size.height*3; |
Line 220... | Line 207... | ||
220 | { |
207 | { |
221 | ESDWORD[EDI] = EBX; |
208 | ESDWORD[EDI] = EBX; |
222 | $add edi,3 |
209 | $add edi,3 |
223 | } |
210 | } |
224 | } |
211 | } |
- | 212 | ELSE |
|
- | 213 | { |
|
- | 214 | GetProcessInfo(#Form_SELF_FONTS, SelfInfo); |
|
225 | ELSE CopyScreen(buffer,x+Form_SELF_FONTS.left+5,y+Form_SELF_FONTS.top+GetSkinHeight(),size.width,size.height); |
215 | CopyScreen(buffer,x+Form_SELF_FONTS.left+5,y+Form_SELF_FONTS.top+GetSkinHeight(),size.width,size.height); |
- | 216 | } |
|
226 | len = size.offset_x; |
217 | len = size.offset_x; |
227 | WHILE(DSBYTE[text1]) |
218 | WHILE(DSBYTE[text1]) |
228 | { |
219 | { |
229 | IF(DSBYTE[text1]=='_') len--; |
220 | IF(DSBYTE[text1]=='_') len--; |
230 | len+=symbol(len,DSBYTE[text1]); |
221 | len+=symbol(len,DSBYTE[text1]); |
Line 257... | Line 248... | ||
257 | ShadowImage(i, 1, 1, 2); |
248 | ShadowImage(i, 1, 1, 2); |
258 | ShadowImage(i+3+line_w, 1, 1, 2); |
249 | ShadowImage(i+3+line_w, 1, 1, 2); |
259 | } |
250 | } |
260 | } |
251 | } |
261 | } |
252 | } |
262 | :dword FONT::textarea(word x,y;dword text1,c;byte size) |
- | |
263 | { |
- | |
264 | - | ||
265 | } |
- | |
266 | - | ||
267 | :byte FONT::symbol(signed x;byte s) |
253 | :byte FONT::symbol(signed x;byte s) |
268 | { |
254 | { |
269 | dword xi,yi; |
255 | dword xi,yi; |
270 | dword tmp,_; |
256 | dword tmp,_; |
271 | dword iii; |
257 | dword iii; |
Line 339... | Line 325... | ||
339 | signed len=0; |
325 | signed len=0; |
340 | dword c; |
326 | dword c; |
341 | c = color; |
327 | c = color; |
342 | IF(!text1)return; |
328 | IF(!text1)return; |
343 | IF(size.text)IF(!changeSIZE())return; |
329 | IF(size.text)IF(!changeSIZE())return; |
344 | GetProcessInfo(#Form_SELF_FONTS, SelfInfo); |
- | |
345 | AX = c; r = AL; g = AH; c>>=16; AX = c; b = AL; |
330 | AX = c; r = AL; g = AH; c>>=16; AX = c; b = AL; |
346 | getsize(text1); |
331 | getsize(text1); |
347 | y -= size.offset_y; |
332 | y -= size.offset_y; |
Line 348... | Line 333... | ||
348 | 333 | ||
349 | size.width = w; |
334 | size.width = w; |
350 | size.height = y; |
335 | size.height = h; |
351 | EDX = size.width*size.height*3; |
336 | EDX = size.width*size.height*3; |
352 | IF(!buffer_size) |
337 | IF(!buffer_size) |
353 | { |
338 | { |
354 | buffer_size = EDX; |
339 | buffer_size = EDX; |