Rev 2461 | Rev 2499 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2461 | Rev 2470 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
5 | ;; ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | $Revision: 2461 $ |
8 | $Revision: 2470 $ |
9 | 9 | ||
10 | ; // Alver 22.06.2008 // { |
10 | ; // Alver 22.06.2008 // { |
11 | align 4 |
11 | align 4 |
Line 210... | Line 210... | ||
210 | ; ebx = bottom Y |
210 | ; ebx = bottom Y |
211 | ; edx ->tickinfo |
211 | ; edx ->tickinfo |
212 | ; edi = color 0x0RRGGBB |
212 | ; edi = color 0x0RRGGBB |
213 | ; ebp = font's header |
213 | ; ebp = font's header |
214 | pushad |
214 | pushad |
215 | xor ecx, ecx |
- | |
216 | mov dx, word[edx] |
215 | mov dx, word[edx] |
217 | mov cl, dl |
216 | movzx ecx, dl |
218 | test dl, 0xE0 ; ticks #32..255 |
217 | test dl, 0xE0 ; ticks #32..255 |
219 | jz .lntick.short |
218 | jz .lntick.short |
220 | cmp dl, 0xE0 |
219 | cmp dl, 0xE0 |
221 | jae .lntick.long |
220 | jae .lntick.long |
222 | cmp dl, 0xC0 |
221 | cmp dl, 0xC0 |
223 | jae .cstick |
222 | jae .cstick |
224 | .gptick: |
223 | .gptick: |
225 | push edx |
224 | push edx |
226 | mov cl, dh |
225 | mov cl, dh |
227 | shr cl, 3 ; orig.# |
226 | shr cl, 3 ; number of origin |
228 | mov edx, [ebp+8] ; orig. table |
227 | mov edx, [ebp+8] ; orig. table |
229 | mov ch, byte[edx+ecx] ; orig. coords |
228 | mov ch, byte[edx+ecx] ; orig. coords |
230 | pop edx |
229 | pop edx |
231 | mov cl, dh |
230 | mov cl, dh |
232 | and cl, 7 ; three rotation bits |
231 | and cl, 7 ; three rotation bits |
233 | and edx, 0xFF ; dl = gptick# |
232 | movzx edx, dl ; dl = gptick# |
234 | sub dl, 32 |
233 | sub dl, 32 |
235 | cmp dl, (sdsh_data.v5-sdsh_data.v1) |
234 | cmp dl, (sdsh_data.v5-sdsh_data.v1) |
236 | jae .gptick.2 |
235 | jae .gptick.2 |
- | 236 | ||
237 | .gptick.1: |
237 | .gptick.1: |
238 | mov esi, sdsh_data.tick_table |
238 | ; 1-byte tickgroups .v1-v4: |
239 | add esi, edx ; 1-byte tickgroups .v1-v4: |
239 | lea esi, [sdsh_data.v1+edx] |
240 | inc dh |
240 | inc dh |
241 | sub dl, 2 ; .v1 : 2 ticks only (#32, 33) |
241 | sub dl, 2 ; .v1 : 2 ticks only (#32, 33) |
242 | jae @f |
242 | jae .gptick.1v2v4 |
243 | mov dl, dh |
243 | mov dl, dh |
- | 244 | mov dh, ch |
|
- | 245 | jmp .draw |
|
- | 246 | ||
- | 247 | .gptick.1v2v4: |
|
- | 248 | ; 1-byte tickgroups .v2-v4 : 8 ticks each |
|
- | 249 | inc dh |
|
- | 250 | shr dl, 3 |
|
244 | jmp .gptick.done |
251 | jmp .gptick.done |
245 | @@: inc dh |
252 | |
246 | shr dl, 3 ; tickgroups .v2-v4 : 8 ticks each |
- | |
247 | add dl, dh |
- | |
248 | jmp .gptick.done |
- | |
249 | .gptick.2: |
253 | .gptick.2: |
- | 254 | ; 2-byte tickgroups .v5-v8: 8 ticks each |
|
250 | sub dl, (sdsh_data.v5-sdsh_data.v1) |
255 | sub dl, (sdsh_data.v5-sdsh_data.v1) |
251 | cmp dl, (sdsh_data.v9-sdsh_data.v5) |
256 | cmp dl, (sdsh_data.v9-sdsh_data.v5) |
252 | jae .gptick.3 |
257 | jae .gptick.3 |
253 | mov esi, sdsh_data.v5 |
258 | lea esi, [sdsh_data.v5 + edx*2] |
254 | lea esi, [esi+edx*2] ; 2-byte tickgroups .v5-v8: 8 ticks each |
- | |
255 | mov dh, 5 |
259 | mov dh, 5 |
256 | shr dl, 3 |
260 | shr dl, 3 |
257 | add dl, dh |
- | |
258 | jmp .gptick.done |
261 | jmp .gptick.done |
- | 262 | ||
259 | .gptick.3: |
263 | .gptick.3: |
- | 264 | ; 3-byte tickgroups .v9-12: 4 ticks each |
|
260 | sub dl, (sdsh_data.v9-sdsh_data.v5) |
265 | sub dl, (sdsh_data.v9-sdsh_data.v5) |
261 | cmp dl, (sdsh_data.v13-sdsh_data.v9) |
266 | cmp dl, (sdsh_data.v13-sdsh_data.v9) |
262 | jae .gptick.4 |
267 | jae .gptick.4 |
263 | mov esi, sdsh_data.v9 |
268 | lea esi, [sdsh_data.v9 + edx*2 + edx] |
264 | lea esi,[esi+edx*2] |
- | |
265 | add esi, edx ; 3-byte tickgroups .v9-12: 4 ticks each |
- | |
266 | mov dh, 9 |
269 | mov dh, 9 |
267 | shr dl, 2 |
270 | shr dl, 2 |
268 | add dl, dh |
- | |
269 | jmp .gptick.done |
271 | jmp .gptick.done |
- | 272 | ||
270 | .gptick.4: |
273 | .gptick.4: |
- | 274 | ; 4-byte tickgroups .v13-16: 4 ticks each |
|
271 | sub dl, (sdsh_data.v13-sdsh_data.v9) |
275 | sub dl, (sdsh_data.v13-sdsh_data.v9) |
272 | cmp dl, 16 |
276 | cmp dl, 16 |
273 | jae .exit |
277 | jae .exit |
274 | mov esi, sdsh_data.v13 |
278 | lea esi, [sdsh_data.v13 + edx*4] |
275 | lea esi,[esi+edx*4] ; 4-byte tickgroups .v13-16: 4 ticks each |
- | |
276 | mov dh, 13 |
279 | mov dh, 13 |
277 | shr dl, 2 |
280 | shr dl, 2 |
278 | add dl, dh |
281 | |
279 | .gptick.done: |
282 | .gptick.done: |
- | 283 | add dl, dh |
|
280 | mov dh, ch ; dh = orig.XY; dl = numvert |
284 | mov dh, ch ; dh = orig.XY; dl = numvert |
281 | jmp .draw ; cl = rotation |
285 | jmp .draw ; cl = rotation; esi-> tickfield |
Line 282... | Line 286... | ||
282 | 286 | ||
283 | .cstick: |
287 | .cstick: |
284 | and cl, 4 |
288 | and cl, 4 |
285 | shr cl, 2 ; only one rotational bit |
289 | shr cl, 2 ; only one rotational bit |
286 | and dl, 3 |
- | |
287 | inc dl |
- | |
288 | dec dl |
290 | and dl, 3 |
289 | jz .cstick.0 |
291 | jz .cstick.0 |
290 | dec dl |
292 | dec dl |
291 | jnz @f |
293 | jnz @f |
292 | mov dl, 6 |
294 | mov dl, 6 |
293 | jz .cstick.1 |
295 | jz .cstick.1 ; 8-pix square outline |
294 | @@: dec dl |
296 | @@: dec dl |
295 | jz .cstick.2 |
297 | jz .cstick.2 |
296 | .cstick.3: |
298 | .cstick.3: |
297 | mov esi, sdsh_data.cs3 ; 12pix-ring |
299 | mov esi, sdsh_data.cs3 ; 12pix-ring |
298 | mov dl, 10 |
300 | mov dl, 10 |
299 | jmp .draw |
301 | jmp .draw |
300 | .cstick.2: |
302 | .cstick.2: |
301 | mov dl, 7 |
303 | mov dl, 7 ; 9-pix filled square |
302 | .cstick.1: |
304 | .cstick.1: |
303 | mov esi, sdsh_data.cs2 ; the square |
305 | mov esi, sdsh_data.cs2 ; the square tickfield |
304 | jmp .draw |
306 | jmp .draw |
305 | .cstick.0: |
307 | .cstick.0: |
306 | mov esi, sdsh_data.cs0 ; 4pix-square |
308 | mov esi, sdsh_data.cs0 ; 4pix-square |
307 | mov dl, 3 |
309 | mov dl, 2 |
Line 308... | Line 310... | ||
308 | jmp .draw |
310 | jmp .draw |
309 | 311 | ||
310 | .ritick: |
312 | .ritick: |
311 | test dl, 1 |
313 | test dl, 1 |
312 | jnz .ritick.1 |
314 | jnz .ritick.1 |
313 | .ritick.0: |
315 | .ritick.0: |
314 | mov cl, dh ; y |
316 | movzx ecx, dh ; y |
315 | and cl, 0x0F |
317 | and cl, 0x0F |
316 | sub ebx, ecx |
318 | sub ebx, ecx |
317 | mov cl, dh |
319 | mov cl, dh |
318 | shr cl, 4 ; x |
320 | shr cl, 4 ; x |
319 | add eax, ecx |
321 | add eax, ecx |
320 | call ch_putpixel |
322 | call ch_putpixel |
321 | jmp .exit |
323 | jmp .exit |
322 | .ritick.1: |
324 | .ritick.1: |
323 | mov esi, sdsh_data.ri1 ; 8pix-ring |
- | |
324 | mov dl, 4 |
325 | mov esi, sdsh_data.ri1 ; 8pix-ring |
Line 325... | Line 326... | ||
325 | xor cl, cl |
326 | mov dl, 6 |
326 | jmp .draw |
327 | jmp .draw |
327 | 328 | ||
Line 336... | Line 337... | ||
336 | .lntick.both: |
337 | .lntick.both: |
337 | sub dl, 2 ; num_vertice = num_points - 2 |
338 | sub dl, 2 ; num_vertice = num_points - 2 |
338 | and cl, 0x18 ; two (lower) rotation bits |
339 | and cl, 0x18 ; two (lower) rotation bits |
339 | shr cl, 3 |
340 | shr cl, 3 |
340 | mov esi, sdsh_data.blank |
341 | mov esi, sdsh_data.blank |
- | 342 | ||
341 | .draw: |
343 | .draw: |
342 | ; cl = rot; dl = numvert; dh = orig.xy |
344 | ; cl = rot; dl = numvert; dh = orig.xy |
343 | push ecx |
345 | push ecx |
344 | mov cl, dh ; y |
346 | movzx ecx, dh ; y |
345 | and cl, 0x0F |
347 | and cl, 0x0F |
346 | sub ebx, ecx |
348 | sub ebx, ecx |
347 | mov cl, dh |
349 | mov cl, dh |
348 | shr cl, 4 ; x |
350 | shr cl, 4 ; x |
349 | add eax, ecx |
351 | add eax, ecx |