Subversion Repositories Kolibri OS

Rev

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