Subversion Repositories Kolibri OS

Rev

Rev 675 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
648 andrew_pro 1
 
2
sc_check_vertical                     = 00000001b
675 andrew_pro 3
sc_check_horizontal                   = 00000010b
4
sc_check_init_child_buttons           = 00000100b
5
sc_active                             = 00001000b
6
sc_check_3D_type                      = 00010000b
7
sc_scroll_bar_move                    = 00100000b
8
9
 
648 andrew_pro 10
sc_redraw_off                         = 01111111b
11
sc_full_redraw                        = 10101000b
675 andrew_pro 12
sc_scroll_bar_move_off                = 11011111b
648 andrew_pro 13
sc_move_active_off                    = 11010111b
675 andrew_pro 14
648 andrew_pro 15
 
675 andrew_pro 16
sc_first_child_button_pressed_off     = 11111110b
648 andrew_pro 17
sc_second_child_button_pressed        = 00010000b
675 andrew_pro 18
sc_second_child_button_pressed_off    = 11101111b
648 andrew_pro 19
20
 
21
sc_child_button_type                  = 10001000b
675 andrew_pro 22
648 andrew_pro 23
 
24
;******************Crate Scroller*********************
25
;****************************************************
26
;IN
27
;pointer to parend
28
;pointer to Scroller's structure
29
;OUT
30
;pointer to initialized Scroller's structure
31
align 4
32
33
 
34
35
 
706 andrew_pro 36
      push ecx
37
      push edx
38
      push esi
39
      push edi
40
      push ebp
41
648 andrew_pro 42
 
706 andrew_pro 43
      mov eax,[esp+24+8]
44
45
 
648 andrew_pro 46
47
 
48
      call craete_control
49
50
 
51
      mov [eax],dword scroller
52
53
 
54
      mov esi,[PointerToStructureForScroller]
55
      mov edi,eax
56
      add edi,control_header_size
57
      rep movsb
58
59
 
60
61
 
62
      mov cl,byte[ebx]
63
      and cl,sc_check_vertical
64
      jz type_horizontal_scroller
65
66
 
67
      mov esi,16         ;scroller size x
68
      xor edi,edi
69
      mov di,[ebx+5]    ;scroller size y
70
      jmp exit_type_scroller
71
      type_horizontal_scroller:
72
73
 
74
      mov si,[ebx+5]    ;scroller size x
75
      mov edi,16        ;scroller size y
76
      exit_type_scroller:
77
78
 
79
      xor edx,edx
80
      mov cx,[ebx+1]    ;scroller x
81
      mov dx,[ebx+3]    ;scroller y
82
83
 
84
      add ecx,border_width
85
      add edx,[skin_height]
86
      ;copy information to control
87
      mov [eax+24],ecx
88
      mov [eax+28],edx
89
      mov [eax+32],esi
90
      mov [eax+36],edi
91
92
 
706 andrew_pro 93
      pop edi
94
      pop esi
95
      pop edx
96
      pop ecx
97
      pop ebx
98
99
 
648 andrew_pro 100
101
 
102
;*******************Draw Scroller*********************
103
;****************************************************
104
;IN
105
;pointer to control of scroller
106
;message
107
;OUT
108
;not returned value
109
align 4
110
111
 
112
113
 
114
 
115
      mov eax,[esp+8]
116
117
 
118
      mov esi,eax
119
      mov edi,dword Message
120
      mov ecx,4
121
      rep movsd
122
123
 
124
      mov esi,[esp+4]
125
      mov [PointerForScroller],esi
126
      ;copy control to local control
127
      mov edi,dword Scroller
128
      mov ecx,control_header_size+sc_control_data_size
129
      rep movsb
130
131
 
132
 
133
      jne no_redraw_all_scroller
134
135
 
136
      no_redraw_all_scroller:
137
138
 
139
      jne no_keys_scroller
140
141
 
142
      no_keys_scroller:
143
144
 
145
      jne no_pressed_button_scroller
146
147
 
148
      no_pressed_button_scroller:
149
150
 
151
      jne no_mouse_scroller
152
153
 
154
      mov edi,[eax+8]
155
      mov ecx,[eax+12]
156
      mov [Scroller.mouseX],si
157
      mov [Scroller.mouseY],di
158
      mov [ButtonsOfMouse],ecx
159
      no_mouse_scroller:
160
161
 
162
 
163
      jne no_delete_scroller
164
165
 
166
        call free
167
168
 
169
        call free
170
171
 
172
        ;call destroy_control
173
174
 
175
        ;call destroy_control
176
177
 
178
      no_delete_scroller:
179
180
 
181
      mov eax,[PointerForScroller]
182
      mov ebx,[eax+24]           ;x
183
      mov ecx,[eax+28]           ;y
184
      mov edx,[eax+32]           ;size x
185
      mov esi,[eax+36]           ;size y
186
      ;set current coordinats and sizes in scroller
187
      mov [Scroller.x],bx
188
      mov [Scroller.y],cx
189
190
 
191
      mov al,[Scroller.type]
192
      and al,sc_check_vertical
193
      test al,al
194
      jz set_for_horizontal
195
196
 
197
198
 
199
      set_for_horizontal:
200
201
 
202
203
 
204
205
 
206
      xor eax,eax
207
      mov al,[Scroller.type]
208
      and al,sc_check_init_child_buttons
209
      jnz child_buttons_craeted
210
211
 
212
213
 
214
         mov [ChildButton.width],16
215
         mov [ChildButton.height],16
216
         xor ebx,ebx
217
         xor ecx,ecx
218
         mov bx,[Scroller.x]
219
         mov cx,[Scroller.y]
220
         mov [ChildButton.x],bx
221
         mov [ChildButton.y],cx
222
223
 
224
         push [PointerForScroller]
225
226
 
227
228
 
229
230
 
231
         xor ecx,ecx
232
         mov bx,[Scroller.x]
233
         mov cx,[Scroller.y]
234
235
 
236
         mov al,[Scroller.type]
237
         and al,sc_check_vertical
238
         test al,al
239
         jz init_buttons_for_horizontal_scroller
240
241
 
242
 
243
           sub ecx,16
244
245
 
246
 
247
         init_buttons_for_horizontal_scroller:
248
249
 
250
 
251
           sub ebx,16
252
253
 
254
255
 
256
         mov [ChildButton.y],cx
257
258
 
259
         push [PointerForScroller]
260
261
 
262
263
 
264
265
 
266
         mov edi,[PointerForScroller]
267
         add esi,control_header_size
268
         add edi,control_header_size
269
         mov ecx,sc_control_data_size
270
         rep movsb
271
272
 
273
274
 
275
      ;if it is true than change koordinats of child buttons
276
      xor eax,eax
277
      mov al,[Scroller.type]
278
      and al,sc_redraw
279
      test al,al
280
      jz no_change_koordinats_of_child_buttons
281
282
 
283
         xor ecx,ecx
284
         mov bx,[Scroller.x]
285
         mov cx,[Scroller.y]
286
287
 
288
         mov eax,[Scroller.ChildButton1]
289
         mov [eax+24],ebx      ;x
290
         mov [eax+28],ecx      ;y
291
292
 
293
         mov al,[Scroller.type]
294
         and al,sc_check_vertical
295
         test al,al
296
         jz change_koordinats_of_buttons_for_horizontal_scroller
297
298
 
299
           sub ecx,16
300
301
 
302
         change_koordinats_of_buttons_for_horizontal_scroller:
303
304
 
305
           sub ebx,16
306
307
 
308
309
 
310
         mov eax,[Scroller.ChildButton2]
311
         mov [eax+24],ebx      ;x
312
         mov [eax+28],ecx      ;y
313
314
 
315
316
 
317
      xor eax,eax
318
      mov al,[Scroller.type]
319
      and al,sc_check_3D_type
320
      test al,al
321
      jz no_3D_scroller
322
323
 
324
 
325
      mov ebx,0xffffff
326
      mov ecx,16
327
      mov edx,dword pointer
328
      call gradient
329
330
 
331
      and eax,0xffffff
332
      mov [Color],eax
333
334
 
335
      mov ebx,0xffffff
336
      call calculate_average_color
337
      mov [AveregeColor],eax
338
339
 
340
      xor eax,eax
341
      mov al,[Scroller.type]
342
      and al,sc_check_vertical
343
      test al,al
344
      jz no_vertical_scroller_3D
345
346
 
347
      xor ebx,ebx
348
      xor ecx,ecx
349
      xor edx,edx
350
      xor esi,esi
351
      xor edi,edi
352
      mov ax,[Scroller.x]
353
      mov bx,[Scroller.y]
354
      mov cx,16
355
      mov dx,[Scroller.length]
356
      mov si,[Scroller.mouseX]
357
      mov di,[Scroller.mouseY]
358
      add ebx,17
359
      sub edx,17+17
360
      call CheckCrossingBox
361
362
 
363
      jne no_crossing_vertical_scroller_3D
364
365
 
366
      mov esi,dword Scroller
367
      mov edi,[PointerForScroller]
368
      add esi,control_header_size
369
      add edi,control_header_size
370
      mov ecx,sc_control_data_size
371
      rep movsb
372
373
 
374
375
 
376
      xor eax,eax
377
      mov al,[Scroller.type]
378
      and al,sc_active
379
      test al,al
380
      jz no_vertical_scroller_active
381
382
 
383
      xor eax,eax
384
      mov ax,[Scroller.length]
385
      sub eax,16+16
386
      mov [v],eax
387
      fld [Scroller.size]
388
      fild [v]
389
      fmul st0,st1
390
      fistp [Scrollersize]
391
      fstp [v]
392
393
 
394
      jae no_minimum_size_vertical_3D_scroller
395
396
 
397
      no_minimum_size_vertical_3D_scroller:
398
399
 
400
      xor eax,eax
401
      mov ax,[Scroller.length]
402
      sub eax,17+17
403
      sub eax,[Scrollersize]
404
      mov [yo],eax
405
      fld [Scroller.pos]
406
      fild [yo]
407
      fmul st0,st1
408
      fistp [v]
409
      fstp [v2]
410
411
 
412
      mov ax,[Scroller.y]
413
      add ax,17
414
      add eax,[v]
415
      mov [ScrollBar.y],eax
416
417
 
418
      mov eax,[ButtonsOfMouse]
419
      and eax,1b
420
      test al,al
421
      jz no_vertical_scroller_move
422
      ;calculate in pixels length of scroll bar
423
424
 
425
      xor edx,edx
426
      xor ecx,ecx
427
      mov ax,[Scroller.y]
428
      mov cx,[Scroller.length]
429
      mov dx,[Scroller.mouseY]
430
      mov ebx,edx
431
      add ecx,eax
432
      add eax,17
433
      sub ecx,17
434
      mov esi,ecx
435
436
 
437
      jns no_minimum_scroller_y
438
439
 
440
      no_minimum_scroller_y:
441
442
 
443
      jns no_maximum_scroller_y
444
445
 
446
      no_maximum_scroller_y:
447
448
 
449
 
450
      shr eax,1
451
      xor ebx,ebx
452
      mov bx,[Scroller.mouseY]
453
      sub bx,[Scroller.y]
454
      sub ebx,17
455
      xor ecx,ecx
456
      mov cx,[Scroller.y]
457
      add cx,[Scroller.length]
458
      sub cx,17
459
      sub cx,[Scroller.mouseY]
460
461
 
462
      jae no_correct_y
463
       xor edx,edx
464
       mov dx,[Scroller.y]
465
       add dx,17
466
       add edx,eax
467
      no_correct_y:
468
469
 
470
      jae no_correct_y_
471
       xor edx,edx
472
       mov dx,[Scroller.y]
473
       add dx,[Scroller.length]
474
       sub dx,17
475
       sub edx,eax
476
      no_correct_y_:
477
478
 
479
      sub [ScrollBar.y],eax
480
      sub dx,[Scroller.y]
481
      sub edx,17
482
      sub edx,eax
483
      mov [v],edx
484
485
 
486
      xor ebx,ebx
487
      mov bx,[Scroller.length]
488
      sub ebx,17+17
489
      sub ebx,[Scrollersize]
490
      mov [v2],ebx
491
492
 
493
      fild [v]
494
      fdiv st0,st1
495
      fstp [Scroller.pos]
496
      fistp [v2]
497
498
 
499
      or [Scroller.type],sc_scroll_bar_move
500
501
 
502
      mov edi,[PointerForScroller]
503
      add esi,control_header_size
504
      add edi,control_header_size
505
      mov ecx,sc_control_data_size
506
      rep movsb
507
508
 
509
      no_vertical_scroller_move:
510
511
 
512
513
 
514
515
 
516
      mov al,[Scroller.type]
517
      and al,sc_redraw
518
      test al,al
519
      jz no_redraw_all_vertical_scroller
520
521
 
522
      mov esi,dword Scroller
523
      mov edi,[PointerForScroller]
524
      add esi,control_header_size
525
      add edi,control_header_size
526
      mov ecx,sc_control_data_size
527
      rep movsb
528
529
 
530
531
 
532
533
 
534
      mov al,[Scroller.type]
535
      and al,sc_scroll_bar_move
536
      test al,al
537
      jz no_move_vertical_scroller_bar_3D
538
539
 
540
        mov ax,[Scroller.x]
541
        mov ebx,[ScrollBar.y]
542
        mov ecx,[Scrollersize]
543
        call DrawVertical3DScrollBar
544
545
 
546
        mov esi,dword Scroller
547
        mov edi,[PointerForScroller]
548
        add esi,control_header_size
549
        add edi,control_header_size
550
        mov ecx,sc_control_data_size
551
        rep movsb
552
553
 
554
555
 
556
      xor ebx,ebx
557
      xor ecx,ecx
558
      xor edx,edx
559
      xor esi,esi
560
      xor edi,edi
561
      mov ax,[Scroller.x]
562
      mov bx,[Scroller.y]
563
      mov cx,16
564
      mov dx,[Scroller.length]
565
      mov si,[Scroller.mouseX]
566
      mov di,[Scroller.mouseY]
567
      add ebx,17
568
      sub edx,17+17
569
      call CheckCrossingBox
570
571
 
572
      jne no_crossing_vertical_scroller_3D_
573
574
 
575
      mov esi,dword Scroller
576
      mov edi,[PointerForScroller]
577
      add esi,control_header_size
578
      add edi,control_header_size
579
      mov ecx,sc_control_data_size
580
      rep movsb
581
582
 
583
      no_crossing_vertical_scroller_3D_:
584
585
 
586
        mov eax,[ButtonsOfMouse]
587
588
 
589
        test al,al
590
        jnz mouse_button_pressed_vertical
591
592
 
593
          mov esi,dword Scroller
594
          mov edi,[PointerForScroller]
595
          add esi,control_header_size
596
          add edi,control_header_size
597
          mov ecx,sc_control_data_size
598
          rep movsb
599
         mouse_button_pressed_vertical:
600
601
 
602
603
 
604
 
605
      mov al,[Scroller.type]
606
      and al,sc_active
607
      test al,al
608
      jz no_change_vertical_scroller_3D
609
610
 
611
        xor ebx,ebx
612
        mov ax,[Scroller.x]
613
        mov bx,[Scroller.mouseX]
614
615
 
616
        jns no_signum_1
617
        neg eax
618
        no_signum_1:
619
620
 
621
        jle no_change_bits_vertical_scroller_3D
622
623
 
624
        no_change_bits_vertical_scroller_3D:
625
626
 
627
        mov edi,[PointerForScroller]
628
        add esi,control_header_size
629
        add edi,control_header_size
630
        mov ecx,sc_control_data_size
631
        rep movsb
632
633
 
634
635
 
636
637
 
638
639
 
640
      xor eax,eax
641
      mov al,[Scroller.type]
642
      and al,sc_check_horizontal
643
      test al,al
644
      jz no_horizontal_scroller_3D
645
646
 
647
      xor ebx,ebx
648
      xor ecx,ecx
649
      xor edx,edx
650
      xor esi,esi
651
      xor edi,edi
652
      mov ax,[Scroller.x]
653
      mov bx,[Scroller.y]
654
      mov cx,[Scroller.length]
655
      mov dx,16
656
      mov si,[Scroller.mouseX]
657
      mov di,[Scroller.mouseY]
658
      add eax,17
659
      sub ecx,17+17
660
      call CheckCrossingBox
661
662
 
663
      jne no_crossing_horizontal_scroller_3D
664
665
 
666
      mov esi,dword Scroller
667
      mov edi,[PointerForScroller]
668
      add esi,control_header_size
669
      add edi,control_header_size
670
      mov ecx,sc_control_data_size
671
      rep movsb
672
673
 
674
675
 
676
      xor eax,eax
677
      mov al,[Scroller.type]
678
      and al,sc_active
679
      test al,al
680
      jz no_horizontal_scroller_active
681
682
 
683
      xor eax,eax
684
      mov ax,[Scroller.length]
685
      sub eax,16+16
686
      mov [v],eax
687
      fld [Scroller.size]
688
      fild [v]
689
      fmul st0,st1
690
      fistp [Scrollersize]
691
      fstp [v]
692
693
 
694
      jae no_minimum_size_horizontal_3D_scroller
695
696
 
697
      no_minimum_size_horizontal_3D_scroller:
698
699
 
700
      xor eax,eax
701
      mov ax,[Scroller.length]
702
      sub eax,17+17
703
      sub eax,[Scrollersize]
704
      mov [xo],eax
705
      fld [Scroller.pos]
706
      fild [xo]
707
      fmul st0,st1
708
      fistp [v]
709
      fstp [v2]
710
711
 
712
      mov ax,[Scroller.x]
713
      add ax,17
714
      add eax,[v]
715
      mov [ScrollBar.x],eax
716
717
 
718
      mov eax,[ButtonsOfMouse]
719
720
 
721
      test al,al
722
      jz no_horizontal_scroller_move
723
      ;calculate in pixels length of scroll bar
724
725
 
726
      xor edx,edx
727
      xor ecx,ecx
728
      mov ax,[Scroller.x]
729
      mov cx,[Scroller.length]
730
      mov dx,[Scroller.mouseX]
731
      mov ebx,edx
732
      add ecx,eax
733
      add eax,17
734
      sub ecx,17
735
      mov esi,ecx
736
737
 
738
      jns no_minimum_scroller_x_
739
740
 
741
      no_minimum_scroller_x_:
742
743
 
744
      jns no_maximum_scroller_x_
745
746
 
747
      no_maximum_scroller_x_:
748
749
 
750
 
751
      shr eax,1
752
      xor ebx,ebx
753
      mov bx,[Scroller.mouseX]
754
      sub bx,[Scroller.x]
755
      sub ebx,17
756
      xor ecx,ecx
757
      mov cx,[Scroller.x]
758
      add cx,[Scroller.length]
759
      sub cx,17
760
      sub cx,[Scroller.mouseX]
761
762
 
763
      jae no_correct_x_
764
       xor edx,edx
765
       mov dx,[Scroller.x]
766
       add dx,17
767
       add edx,eax
768
      no_correct_x_:
769
770
 
771
      jae no_correct_x__
772
       xor edx,edx
773
       mov dx,[Scroller.x]
774
       add dx,[Scroller.length]
775
       sub dx,17
776
       sub edx,eax
777
      no_correct_x__:
778
779
 
780
      sub [ScrollBar.x],eax
781
      sub dx,[Scroller.x]
782
      sub edx,17
783
      sub edx,eax
784
      mov [v],edx
785
786
 
787
      mov bx,[Scroller.length]
788
      sub ebx,17+17
789
      sub ebx,[Scrollersize]
790
      mov [v2],ebx
791
792
 
793
      fild [v]
794
      fdiv st0,st1
795
      fstp [Scroller.pos]
796
      fistp [v2]
797
798
 
799
      or [Scroller.type],sc_scroll_bar_move
800
801
 
802
      mov edi,[PointerForScroller]
803
      add esi,control_header_size
804
      add edi,control_header_size
805
      mov ecx,sc_control_data_size
806
      rep movsb
807
808
 
809
      no_horizontal_scroller_move:
810
811
 
812
813
 
814
815
 
816
      mov al,[Scroller.type]
817
      and al,sc_redraw
818
      test al,al
819
      jz no_redraw_all_horizontal_scroller
820
821
 
822
      mov esi,dword Scroller
823
      mov edi,[PointerForScroller]
824
      add esi,control_header_size
825
      add edi,control_header_size
826
      mov ecx,sc_control_data_size
827
      rep movsb
828
829
 
830
831
 
832
833
 
834
      mov al,[Scroller.type]
835
      and al,sc_scroll_bar_move
836
      test al,al
837
      jz no_move_horizontal_scroller_bar_3D
838
839
 
840
        mov bx,[Scroller.y]
841
        mov eax,[ScrollBar.x]
842
        mov ecx,[Scrollersize]
843
        call DrawHorizontal3DScrollBar
844
845
 
846
        mov esi,dword Scroller
847
        mov edi,[PointerForScroller]
848
        add esi,control_header_size
849
        add edi,control_header_size
850
        mov ecx,sc_control_data_size
851
        rep movsb
852
853
 
854
855
 
856
      xor ebx,ebx
857
      xor ecx,ecx
858
      xor edx,edx
859
      xor esi,esi
860
      xor edi,edi
861
      mov ax,[Scroller.x]
862
      mov bx,[Scroller.y]
863
      mov dx,16
864
      mov cx,[Scroller.length]
865
      mov si,[Scroller.mouseX]
866
      mov di,[Scroller.mouseY]
867
      add eax,17
868
      sub ecx,17+17
869
      call CheckCrossingBox
870
871
 
872
      jne no_crossing_horizontal_scroller_3D_
873
874
 
875
      mov esi,dword Scroller
876
      mov edi,[PointerForScroller]
877
      add esi,control_header_size
878
      add edi,control_header_size
879
      mov ecx,sc_control_data_size
880
      rep movsb
881
882
 
883
      no_crossing_horizontal_scroller_3D_:
884
885
 
886
        mov eax,[ButtonsOfMouse]
887
888
 
889
        test al,al
890
        jnz mouse_button_pressed_horizontal
891
892
 
893
          mov esi,dword Scroller
894
          mov edi,[PointerForScroller]
895
          add esi,control_header_size
896
          add edi,control_header_size
897
          mov ecx,sc_control_data_size
898
          rep movsb
899
         mouse_button_pressed_horizontal:
900
901
 
902
903
 
904
 
905
      mov al,[Scroller.type]
906
      and al,sc_active
907
      test al,al
908
      jz no_change_horizontal_scroller_3D
909
910
 
911
        xor ebx,ebx
912
        mov ax,[Scroller.y]
913
        mov bx,[Scroller.mouseY]
914
915
 
916
        jns no_signum_1_x
917
        neg eax
918
        no_signum_1_x:
919
920
 
921
        jle no_change_bits_horizontal_scroller_3D
922
923
 
924
        no_change_bits_horizontal_scroller_3D:
925
926
 
927
        mov edi,[PointerForScroller]
928
        add esi,control_header_size
929
        add edi,control_header_size
930
        mov ecx,sc_control_data_size
931
        rep movsb
932
933
 
934
935
 
936
937
 
938
939
 
940
      ;********************2D scrollers*********************
941
      ;****************************************************
942
943
 
944
      mov al,[Scroller.type]
945
      and al,sc_check_3D_type
946
      test al,al
947
      jnz no_2D_scroller
948
949
 
950
      mov ebx,0xffffff
951
      mov ecx,16
952
      mov edx,dword pointer
953
      call gradient
954
955
 
956
      and eax,0xffffff
957
      mov [Color],eax
958
959
 
960
      mov ebx,0xffffff
961
      call calculate_average_color
962
      mov [AveregeColor],eax
963
964
 
965
      xor eax,eax
966
      mov al,[Scroller.type]
967
      and al,sc_check_vertical
968
      test al,al
969
      jz no_vertical_scroller_2D
970
971
 
972
      xor ebx,ebx
973
      xor ecx,ecx
974
      xor edx,edx
975
      xor esi,esi
976
      xor edi,edi
977
      mov ax,[Scroller.x]
978
      mov bx,[Scroller.y]
979
      mov cx,16
980
      mov dx,[Scroller.length]
981
      mov si,[Scroller.mouseX]
982
      mov di,[Scroller.mouseY]
983
      add ebx,17
984
      sub edx,17+17
985
      call CheckCrossingBox
986
987
 
988
      jne no_crossing_vertical_scroller_2D
989
990
 
991
      mov esi,dword Scroller
992
      mov edi,[PointerForScroller]
993
      add esi,control_header_size
994
      add edi,control_header_size
995
      mov ecx,sc_control_data_size
996
      rep movsb
997
998
 
999
1000
 
1001
      xor eax,eax
1002
      mov al,[Scroller.type]
1003
      and al,sc_active
1004
      test al,al
1005
      jz no_vertical_scroller_active_2D
1006
1007
 
1008
      xor eax,eax
1009
      mov ax,[Scroller.length]
1010
      sub eax,16+16
1011
      mov [v],eax
1012
      fld [Scroller.size]
1013
      fild [v]
1014
      fmul st0,st1
1015
      fistp [Scrollersize]
1016
      fstp [v]
1017
1018
 
1019
      jae no_minimum_size_vertical_2D_scroller
1020
1021
 
1022
      no_minimum_size_vertical_2D_scroller:
1023
1024
 
1025
       xor eax,eax
1026
      mov ax,[Scroller.length]
1027
      sub eax,17+17
1028
      sub eax,[Scrollersize]
1029
      mov [yo],eax
1030
      fld [Scroller.pos]
1031
      fild [yo]
1032
      fmul st0,st1
1033
      fistp [v]
1034
      fstp [v2]
1035
1036
 
1037
      mov ax,[Scroller.y]
1038
      add ax,16
1039
      add eax,[v]
1040
      mov [ScrollBar.y],eax
1041
1042
 
1043
      mov eax,[ButtonsOfMouse]
1044
1045
 
1046
      test al,al
1047
      jz no_vertical_scroller_move_2D
1048
      ;calculate in pixels length of scroll bar
1049
1050
 
1051
      xor edx,edx
1052
      xor ecx,ecx
1053
      mov ax,[Scroller.y]
1054
      mov cx,[Scroller.length]
1055
      mov dx,[Scroller.mouseY]
1056
      mov ebx,edx
1057
      add ecx,eax
1058
      add eax,17
1059
      sub ecx,17
1060
      mov esi,ecx
1061
1062
 
1063
      jns no_minimum_scroller_y_2D
1064
1065
 
1066
      no_minimum_scroller_y_2D:
1067
1068
 
1069
      jns no_maximum_scroller_y_2D
1070
1071
 
1072
      no_maximum_scroller_y_2D:
1073
1074
 
1075
 
1076
      shr eax,1
1077
      xor ebx,ebx
1078
      mov bx,[Scroller.mouseY]
1079
      sub bx,[Scroller.y]
1080
      sub ebx,17
1081
      xor ecx,ecx
1082
      mov cx,[Scroller.y]
1083
      add cx,[Scroller.length]
1084
      sub cx,17
1085
      sub cx,[Scroller.mouseY]
1086
1087
 
1088
      jae no_correct_y_2D_
1089
       xor edx,edx
1090
       mov dx,[Scroller.y]
1091
       add dx,16
1092
       add edx,eax
1093
      no_correct_y_2D_:
1094
1095
 
1096
      jae no_correct_y_2D
1097
       xor edx,edx
1098
       mov dx,[Scroller.y]
1099
       add dx,[Scroller.length]
1100
       sub dx,16
1101
       sub edx,eax
1102
      no_correct_y_2D:
1103
1104
 
1105
      sub [ScrollBar.y],eax
1106
      sub dx,[Scroller.y]
1107
      sub edx,16
1108
      sub edx,eax
1109
      mov [v],edx
1110
1111
 
1112
      xor ebx,ebx
1113
      mov bx,[Scroller.length]
1114
      sub ebx,16+16
1115
      sub ebx,[Scrollersize]
1116
      mov [v2],ebx
1117
1118
 
1119
      fild [v]
1120
      fdiv st0,st1
1121
      fstp [Scroller.pos]
1122
      fistp [v2]
1123
1124
 
1125
      or [Scroller.type],sc_scroll_bar_move
1126
1127
 
1128
      mov edi,[PointerForScroller]
1129
      add esi,control_header_size
1130
      add edi,control_header_size
1131
      mov ecx,sc_control_data_size
1132
      rep movsb
1133
1134
 
1135
      no_vertical_scroller_move_2D:
1136
1137
 
1138
1139
 
1140
1141
 
1142
      mov al,[Scroller.type]
1143
      and al,sc_redraw
1144
      test al,al
1145
      jz no_redraw_all_vertical_scroller_2D
1146
1147
 
1148
      mov esi,dword Scroller
1149
      mov edi,[PointerForScroller]
1150
      add esi,control_header_size
1151
      add edi,control_header_size
1152
      mov ecx,sc_control_data_size
1153
      rep movsb
1154
1155
 
1156
1157
 
1158
1159
 
1160
      mov al,[Scroller.type]
1161
      and al,sc_scroll_bar_move
1162
      test al,al
1163
      jz no_move_vertical_scroller_bar_2D
1164
1165
 
1166
        mov ax,[Scroller.x]
1167
        mov ebx,[ScrollBar.y]
1168
        mov ecx,[Scrollersize]
1169
        call DrawVertical2DScrollBar
1170
1171
 
1172
        mov esi,dword Scroller
1173
        mov edi,[PointerForScroller]
1174
        add esi,control_header_size
1175
        add edi,control_header_size
1176
        mov ecx,sc_control_data_size
1177
        rep movsb
1178
1179
 
1180
1181
 
1182
      xor ebx,ebx
1183
      xor ecx,ecx
1184
      xor edx,edx
1185
      xor esi,esi
1186
      xor edi,edi
1187
      mov ax,[Scroller.x]
1188
      mov bx,[Scroller.y]
1189
      mov cx,16
1190
      mov dx,[Scroller.length]
1191
      mov si,[Scroller.mouseX]
1192
      mov di,[Scroller.mouseY]
1193
      add ebx,17
1194
      sub edx,17+17
1195
      call CheckCrossingBox
1196
1197
 
1198
      jne no_crossing_vertical_scroller_2D_
1199
1200
 
1201
      mov esi,dword Scroller
1202
      mov edi,[PointerForScroller]
1203
      add esi,control_header_size
1204
      add edi,control_header_size
1205
      mov ecx,sc_control_data_size
1206
      rep movsb
1207
1208
 
1209
      no_crossing_vertical_scroller_2D_:
1210
1211
 
1212
        mov eax,[ButtonsOfMouse]
1213
1214
 
1215
        test al,al
1216
        jnz mouse_button_pressed_vertical_2D
1217
1218
 
1219
          mov esi,dword Scroller
1220
          mov edi,[PointerForScroller]
1221
          add esi,control_header_size
1222
          add edi,control_header_size
1223
          mov ecx,sc_control_data_size
1224
          rep movsb
1225
         mouse_button_pressed_vertical_2D:
1226
1227
 
1228
1229
 
1230
 
1231
      mov al,[Scroller.type]
1232
      and al,sc_active
1233
      test al,al
1234
      jz no_change_vertical_scroller_2D
1235
1236
 
1237
        xor ebx,ebx
1238
        mov ax,[Scroller.x]
1239
        mov bx,[Scroller.mouseX]
1240
1241
 
1242
        jns no_signum_1_y_2D
1243
        neg eax
1244
        no_signum_1_y_2D:
1245
1246
 
1247
        jle no_change_bits_vertical_scroller_2D
1248
1249
 
1250
        no_change_bits_vertical_scroller_2D:
1251
1252
 
1253
        mov edi,[PointerForScroller]
1254
        add esi,control_header_size
1255
        add edi,control_header_size
1256
        mov ecx,sc_control_data_size
1257
        rep movsb
1258
1259
 
1260
1261
 
1262
1263
 
1264
1265
 
1266
      xor eax,eax
1267
      mov al,[Scroller.type]
1268
      and al,sc_check_horizontal
1269
      test al,al
1270
      jz no_horizontal_scroller_2D
1271
1272
 
1273
      xor ebx,ebx
1274
      xor ecx,ecx
1275
      xor edx,edx
1276
      xor esi,esi
1277
      xor edi,edi
1278
      mov ax,[Scroller.x]
1279
      mov bx,[Scroller.y]
1280
      mov cx,[Scroller.length]
1281
      mov dx,16
1282
      mov si,[Scroller.mouseX]
1283
      mov di,[Scroller.mouseY]
1284
      add eax,17
1285
      sub ecx,17+17
1286
      call CheckCrossingBox
1287
1288
 
1289
      jne no_crossing_horizontal_scroller_2D
1290
1291
 
1292
      mov esi,dword Scroller
1293
      mov edi,[PointerForScroller]
1294
      add esi,control_header_size
1295
      add edi,control_header_size
1296
      mov ecx,sc_control_data_size
1297
      rep movsb
1298
1299
 
1300
1301
 
1302
      xor eax,eax
1303
      mov al,[Scroller.type]
1304
      and al,sc_active
1305
      test al,al
1306
      jz no_horizontal_scroller_active_2D
1307
1308
 
1309
      xor eax,eax
1310
      mov ax,[Scroller.length]
1311
      sub eax,16+16
1312
      mov [v],eax
1313
      fld [Scroller.size]
1314
      fild [v]
1315
      fmul st0,st1
1316
      fistp [Scrollersize]
1317
      fstp [v]
1318
1319
 
1320
      jae no_minimum_size_horizontal_2D_scroller
1321
1322
 
1323
      no_minimum_size_horizontal_2D_scroller:
1324
1325
 
1326
       xor eax,eax
1327
      mov ax,[Scroller.length]
1328
      sub eax,17+17
1329
      sub eax,[Scrollersize]
1330
      mov [yo],eax
1331
      fld [Scroller.pos]
1332
      fild [yo]
1333
      fmul st0,st1
1334
      fistp [v]
1335
      fstp [v2]
1336
1337
 
1338
      mov ax,[Scroller.x]
1339
      add ax,16
1340
      add eax,[v]
1341
      mov [ScrollBar.x],eax
1342
1343
 
1344
      mov eax,[ButtonsOfMouse]
1345
1346
 
1347
      test al,al
1348
      jz no_horizontal_scroller_move_2D
1349
      ;calculate in pixels length of scroll bar
1350
1351
 
1352
      xor edx,edx
1353
      xor ecx,ecx
1354
      mov ax,[Scroller.x]
1355
      mov cx,[Scroller.length]
1356
      mov dx,[Scroller.mouseX]
1357
      mov ebx,edx
1358
      add ecx,eax
1359
      add eax,17
1360
      sub ecx,17
1361
      mov esi,ecx
1362
1363
 
1364
      jns no_minimum_scroller_x_2D
1365
1366
 
1367
      no_minimum_scroller_x_2D:
1368
1369
 
1370
      jns no_maximum_scroller_x_2D
1371
1372
 
1373
      no_maximum_scroller_x_2D:
1374
1375
 
1376
 
1377
      shr eax,1
1378
      xor ebx,ebx
1379
      mov bx,[Scroller.mouseX]
1380
      sub bx,[Scroller.x]
1381
      sub ebx,17
1382
      xor ecx,ecx
1383
      mov cx,[Scroller.x]
1384
      add cx,[Scroller.length]
1385
      sub cx,17
1386
      sub cx,[Scroller.mouseX]
1387
1388
 
1389
      jae no_correct_x_2D
1390
       xor edx,edx
1391
       mov dx,[Scroller.x]
1392
       add dx,16
1393
       add edx,eax
1394
      no_correct_x_2D:
1395
1396
 
1397
      jae no_correct_x__2D
1398
       xor edx,edx
1399
       mov dx,[Scroller.x]
1400
       add dx,[Scroller.length]
1401
       sub dx,16
1402
       sub edx,eax
1403
      no_correct_x__2D:
1404
1405
 
1406
      sub [ScrollBar.x],eax
1407
      sub dx,[Scroller.x]
1408
      sub edx,16
1409
      sub edx,eax
1410
      mov [v],edx
1411
1412
 
1413
      mov bx,[Scroller.length]
1414
      sub ebx,16+16
1415
      sub ebx,[Scrollersize]
1416
      mov [v2],ebx
1417
1418
 
1419
      fild [v]
1420
      fdiv st0,st1
1421
      fstp [Scroller.pos]
1422
      fistp [v2]
1423
1424
 
1425
      or [Scroller.type],sc_scroll_bar_move
1426
1427
 
1428
      mov edi,[PointerForScroller]
1429
      add esi,control_header_size
1430
      add edi,control_header_size
1431
      mov ecx,sc_control_data_size
1432
      rep movsb
1433
1434
 
1435
      no_horizontal_scroller_move_2D:
1436
1437
 
1438
1439
 
1440
1441
 
1442
      mov al,[Scroller.type]
1443
      and al,sc_redraw
1444
      test al,al
1445
      jz no_redraw_all_horizontal_scroller_2D
1446
1447
 
1448
      mov esi,dword Scroller
1449
      mov edi,[PointerForScroller]
1450
      add esi,control_header_size
1451
      add edi,control_header_size
1452
      mov ecx,sc_control_data_size
1453
      rep movsb
1454
1455
 
1456
1457
 
1458
1459
 
1460
      mov al,[Scroller.type]
1461
      and al,sc_scroll_bar_move
1462
      test al,al
1463
      jz no_move_horizontal_scroller_bar_2D
1464
1465
 
1466
        mov bx,[Scroller.y]
1467
        mov eax,[ScrollBar.x]
1468
        mov ecx,[Scrollersize]
1469
        call DrawHorizontal2DScrollBar
1470
1471
 
1472
        mov esi,dword Scroller
1473
        mov edi,[PointerForScroller]
1474
        add esi,control_header_size
1475
        add edi,control_header_size
1476
        mov ecx,sc_control_data_size
1477
        rep movsb
1478
1479
 
1480
1481
 
1482
      xor ebx,ebx
1483
      xor ecx,ecx
1484
      xor edx,edx
1485
      xor esi,esi
1486
      xor edi,edi
1487
      mov ax,[Scroller.x]
1488
      mov bx,[Scroller.y]
1489
      mov dx,16
1490
      mov cx,[Scroller.length]
1491
      mov si,[Scroller.mouseX]
1492
      mov di,[Scroller.mouseY]
1493
      add eax,17
1494
      sub ecx,17+17
1495
      call CheckCrossingBox
1496
1497
 
1498
      jne no_crossing_horizontal_scroller_2D_
1499
1500
 
1501
      mov esi,dword Scroller
1502
      mov edi,[PointerForScroller]
1503
      add esi,control_header_size
1504
      add edi,control_header_size
1505
      mov ecx,sc_control_data_size
1506
      rep movsb
1507
1508
 
1509
      no_crossing_horizontal_scroller_2D_:
1510
1511
 
1512
        mov eax,[ButtonsOfMouse]
1513
1514
 
1515
        test al,al
1516
        jnz mouse_button_pressed_horizontal_2D
1517
1518
 
1519
          mov esi,dword Scroller
1520
          mov edi,[PointerForScroller]
1521
          add esi,control_header_size
1522
          add edi,control_header_size
1523
          mov ecx,sc_control_data_size
1524
          rep movsb
1525
         mouse_button_pressed_horizontal_2D:
1526
1527
 
1528
1529
 
1530
 
1531
      mov al,[Scroller.type]
1532
      and al,sc_active
1533
      test al,al
1534
      jz no_change_horizontal_scroller_2D
1535
1536
 
1537
        xor ebx,ebx
1538
        mov ax,[Scroller.y]
1539
        mov bx,[Scroller.mouseY]
1540
1541
 
1542
        jns no_signum_1_x_2D
1543
        neg eax
1544
        no_signum_1_x_2D:
1545
1546
 
1547
        jle no_change_bits_horizontal_scroller_2D
1548
1549
 
1550
        no_change_bits_horizontal_scroller_2D:
1551
1552
 
1553
        mov edi,[PointerForScroller]
1554
        add esi,control_header_size
1555
        add edi,control_header_size
1556
        mov ecx,sc_control_data_size
1557
        rep movsb
1558
1559
 
1560
1561
 
1562
1563
 
1564
1565
 
1566
      cmp [Message],dword 6
1567
      jne no_send_message_to_child_buttons_of_scroller
1568
1569
 
1570
      mov eax,[Scroller.ChildButton1]
1571
      mov ebx,[eax]
1572
1573
 
1574
      push eax
1575
      call ebx
1576
1577
 
1578
1579
 
1580
      mov bl,[eax+45]
1581
      and bl,bt_crossing
1582
      test bl,bl
1583
      jz no_crossing_first_child_button_of_scroller
1584
1585
 
1586
         mov bl,[eax+45]
1587
         and bl,10b
1588
         test bl,bl
1589
         jz no_crossing_first_child_button_of_scroller
1590
1591
 
1592
         or [Scroller.buttons_flags],10b
1593
1594
 
1595
         xor ebx,ebx
1596
         mov ax,[Scroller.x]
1597
         mov bx,[Scroller.y]
1598
         mov [x],eax
1599
         mov [y],ebx
1600
1601
 
1602
         ;---Checking stcroler to 2D or 3D types
1603
         ;--------------------------------------
1604
         xor eax,eax
1605
         mov al,[Scroller.type]
1606
         and al,sc_check_3D_type
1607
         test al,al
1608
         jnz type_3D_first_child_button_crossing
1609
1610
 
1611
1612
 
1613
           ;---Chcecking scroller to horizontal or vertical types
1614
           ;----------------------------------------------------
1615
1616
 
1617
1618
 
1619
1620
 
1621
1622
 
1623
1624
 
1625
1626
 
1627
1628
 
1629
      no_crossing_first_child_button_of_scroller:
1630
1631
 
1632
1633
 
1634
         mov ax,[Scroller.buttons_flags]
1635
         and ax,10b
1636
         test ax,ax
1637
         jz no_put_first_child_button
1638
1639
 
1640
             ;---Checking stcroler to 2D or 3D types
1641
             ;--------------------------------------
1642
             xor eax,eax
1643
             mov al,[Scroller.type]
1644
             and al,sc_check_3D_type
1645
             test al,al
1646
             jnz type_3D_first_child_button_not_crossing
1647
1648
 
1649
1650
 
1651
                 ;---Chcecking scroller to horizontal or vertical types
1652
                 ;----------------------------------------------------
1653
1654
 
1655
                  mov al,[Scroller.type]
1656
                  and al,sc_check_vertical
1657
                  test al,al
1658
                  jz type_horizontal_first_child_2D_button
1659
1660
 
1661
                     call DrawButtonsOf2DVerticalScroller
1662
1663
 
1664
                  type_horizontal_first_child_2D_button:
1665
1666
 
1667
                     call DrawButtonsOf2DVerticalScroller
1668
1669
 
1670
1671
 
1672
1673
 
1674
1675
 
1676
1677
 
1678
                 ;---Chcecking scroller to horizontal or vertical types
1679
                 ;----------------------------------------------------
1680
1681
 
1682
                  mov al,[Scroller.type]
1683
                  and al,sc_check_vertical
1684
                  test al,al
1685
                  jz type_horizontal_first_child_3D_button
1686
1687
 
1688
                     call DrawButtonsOfVertical3DScroller
1689
1690
 
1691
1692
 
1693
1694
 
1695
                     call DrawButtonsOfHorizontal3DScroller
1696
1697
 
1698
1699
 
1700
1701
 
1702
1703
 
1704
1705
 
1706
      mov eax,[Scroller.ChildButton2]
1707
      mov ebx,[eax]
1708
1709
 
1710
      push eax
1711
      call ebx
1712
1713
 
1714
1715
 
1716
      mov bl,[eax+45]
1717
      and bl,bt_crossing
1718
      test bl,bl
1719
      jz no_crossing_second_child_button_of_scroller
1720
1721
 
1722
         mov bl,[eax+45]
1723
         and bl,10b
1724
         test bl,bl
1725
         jz no_crossing_second_child_button_of_scroller
1726
1727
 
1728
         or [Scroller.buttons_flags],100000b
1729
1730
 
1731
         xor ebx,ebx
1732
         xor ecx,ecx
1733
         mov ax,[Scroller.x]
1734
         mov bx,[Scroller.y]
1735
         mov [x],eax
1736
         mov [y],ebx
1737
1738
 
1739
         sub ecx,16
1740
1741
 
1742
         ;---Chcecking scroller to horizontal or vertical types
1743
         ;----------------------------------------------------
1744
         xor eax,eax
1745
         mov al,[Scroller.type]
1746
         and al,sc_check_vertical
1747
         test al,al
1748
         jz calculate_pos_horizontal_second_child_button
1749
1750
 
1751
1752
 
1753
         calculate_pos_horizontal_second_child_button:
1754
1755
 
1756
1757
 
1758
1759
 
1760
         ;---Checking stcroler to 2D or 3D types
1761
         ;--------------------------------------
1762
         xor eax,eax
1763
         mov al,[Scroller.type]
1764
         and al,sc_check_3D_type
1765
         test al,al
1766
         jnz type_3D_second_child_button_crossing
1767
1768
 
1769
1770
 
1771
           ;---Chcecking scroller to horizontal or vertical types
1772
           ;----------------------------------------------------
1773
1774
 
1775
1776
 
1777
1778
 
1779
1780
 
1781
1782
 
1783
1784
 
1785
1786
 
1787
      no_crossing_second_child_button_of_scroller:
1788
1789
 
1790
1791
 
1792
         mov ax,[Scroller.buttons_flags]
1793
         and ax,100000b
1794
         test ax,ax
1795
         jz no_put_second_child_button
1796
1797
 
1798
             ;---Checking stcroler to 2D or 3D types
1799
             ;--------------------------------------
1800
             xor eax,eax
1801
             mov al,[Scroller.type]
1802
             and al,sc_check_3D_type
1803
             test al,al
1804
             jnz type_3D_second_child_button_not_crossing
1805
1806
 
1807
1808
 
1809
                 ;---Chcecking scroller to horizontal or vertical types
1810
                 ;----------------------------------------------------
1811
1812
 
1813
                  mov al,[Scroller.type]
1814
                  and al,sc_check_vertical
1815
                  test al,al
1816
                  jz type_horizontal_second_child_2D_button
1817
1818
 
1819
                     call DrawButtonsOf2DVerticalScroller
1820
1821
 
1822
                  type_horizontal_second_child_2D_button:
1823
1824
 
1825
                     call DrawButtonsOf2DVerticalScroller
1826
1827
 
1828
1829
 
1830
1831
 
1832
1833
 
1834
1835
 
1836
                 ;---Chcecking scroller to horizontal or vertical types
1837
                 ;----------------------------------------------------
1838
1839
 
1840
                  mov al,[Scroller.type]
1841
                  and al,sc_check_vertical
1842
                  test al,al
1843
                  jz type_horizontal_second_child_3D_button
1844
1845
 
1846
                     call DrawButtonsOfVertical3DScroller
1847
1848
 
1849
1850
 
1851
1852
 
1853
                     call DrawButtonsOfHorizontal3DScroller
1854
1855
 
1856
1857
 
1858
1859
 
1860
1861
 
1862
1863
 
1864
1865
 
1866
1867
 
1868
      mov esi,dword Scroller
1869
      mov edi,[PointerForScroller]
1870
      mov ecx,sc_control_data_size
1871
      add esi,control_header_size
1872
      add edi,control_header_size
1873
      rep movsb
1874
1875
 
1876
1877
 
1878
 
1879
1880
 
1881
1882
 
1883
      mov eax,[x]
1884
      mov ebx,[y]
1885
      mov [Line.x1],eax
1886
      mov [Line.x2],eax
1887
      mov [Line.y1],ebx
1888
      mov [Line.y2],ebx
1889
      add [Line.x2],15
1890
      call DrawLine
1891
1892
 
1893
      mov eax,[x]
1894
      mov ebx,[y]
1895
      mov [Line.x1],eax
1896
      mov [Line.x2],eax
1897
      mov [Line.y1],ebx
1898
      mov [Line.y2],ebx
1899
      add [Line.y2],14
1900
      call DrawLine
1901
1902
 
1903
      ;and eax,0xffffff
1904
      mov [Line.color],0xffffff ;eax
1905
1906
 
1907
      mov eax,[x]
1908
      mov ebx,[y]
1909
      add eax,15
1910
      mov [Line.x1],eax
1911
      mov [Line.x2],eax
1912
      mov [Line.y1],ebx
1913
      mov [Line.y2],ebx
1914
      add [Line.y2],15
1915
      call DrawLine
1916
1917
 
1918
      mov eax,[x]
1919
      mov ebx,[y]
1920
      add ebx,15
1921
      mov [Line.x1],eax
1922
      mov [Line.x2],eax
1923
      mov [Line.y1],ebx
1924
      mov [Line.y2],ebx
1925
      add [Line.x2],15
1926
      call DrawLine
1927
1928
 
1929
1930
 
1931
1932
 
1933
1934
 
1935
      mov eax,[x]
1936
      mov ebx,[y]
1937
      mov [Line.x1],eax
1938
      mov [Line.x2],eax
1939
      mov [Line.y1],ebx
1940
      mov [Line.y2],ebx
1941
      add [Line.x2],16
1942
      call DrawLine
1943
1944
 
1945
      mov eax,[x]
1946
      mov ebx,[y]
1947
      mov [Line.x1],eax
1948
      mov [Line.x2],eax
1949
      mov [Line.y1],ebx
1950
      mov [Line.y2],ebx
1951
      add [Line.y2],16
1952
      call DrawLine
1953
1954
 
1955
      ;and eax,0xffffff
1956
      mov [Line.color],0xffffff ;eax
1957
1958
 
1959
      mov eax,[x]
1960
      mov ebx,[y]
1961
      add eax,16
1962
      mov [Line.x1],eax
1963
      mov [Line.x2],eax
1964
      mov [Line.y1],ebx
1965
      mov [Line.y2],ebx
1966
      add [Line.y2],16
1967
      call DrawLine
1968
1969
 
1970
      mov eax,[x]
1971
      mov ebx,[y]
1972
      add ebx,16
1973
      mov [Line.x1],eax
1974
      mov [Line.x2],eax
1975
      mov [Line.y1],ebx
1976
      mov [Line.y2],ebx
1977
      add [Line.x2],16
1978
      call DrawLine
1979
1980
 
1981
1982
 
1983
1984
 
1985
      mov eax,[Scroller.color1]
1986
      mov ebx,0xffffff
1987
      mov ecx,20
1988
      mov edx,dword colors_table1
1989
      call gradient
1990
1991
 
1992
      mov ebx,[Scroller.color1]
1993
      mov ecx,20
1994
      mov edx,dword colors_table2
1995
      call gradient
1996
1997
 
1998
      xor ebx,ebx
1999
      xor ecx,ecx
2000
      mov eax,13
2001
      mov bx,[Scroller.x]
2002
      mov cx,[Scroller.y]
2003
      shl ebx,16
2004
      shl ecx,16
2005
      add ebx,16
2006
      add ecx,16
2007
      mov edx,[Color]
2008
      and edx,0xffffff
2009
      mcall
2010
2011
 
2012
      and eax,0xffffff
2013
      mov [Line.color],eax
2014
2015
 
2016
      xor eax,eax
2017
      xor ebx,ebx
2018
      mov ax,[Scroller.x]
2019
      mov bx,[Scroller.y]
2020
      mov [Line.x1],eax
2021
      mov [Line.x2],eax
2022
      mov [Line.y1],ebx
2023
      mov [Line.y2],ebx
2024
      add [Line.x2],15
2025
      call DrawLine
2026
2027
 
2028
      xor eax,eax
2029
      xor ebx,ebx
2030
      mov ax,[Scroller.x]
2031
      mov bx,[Scroller.y]
2032
      mov [Line.x1],eax
2033
      mov [Line.x2],eax
2034
      mov [Line.y1],ebx
2035
      mov [Line.y2],ebx
2036
      add [Line.y2],15
2037
      call DrawLine
2038
2039
 
2040
      and eax,0xffffff
2041
      mov [Line.color],eax
2042
2043
 
2044
      xor eax,eax
2045
      xor ebx,ebx
2046
      mov ax,[Scroller.x]
2047
      mov bx,[Scroller.y]
2048
      add eax,15
2049
      mov [Line.x1],eax
2050
      mov [Line.x2],eax
2051
      mov [Line.y1],ebx
2052
      mov [Line.y2],ebx
2053
      add [Line.y2],15
2054
      call DrawLine
2055
2056
 
2057
      xor eax,eax
2058
      xor ebx,ebx
2059
      mov ax,[Scroller.x]
2060
      mov bx,[Scroller.y]
2061
      add ebx,15
2062
      mov [Line.x1],eax
2063
      mov [Line.x2],eax
2064
      mov [Line.y1],ebx
2065
      mov [Line.y2],ebx
2066
      add [Line.x2],14
2067
      call DrawLine
2068
2069
 
2070
2071
 
2072
      xor ebx,ebx
2073
      mov ax,[Scroller.x]
2074
      mov bx,[Scroller.y]
2075
      mov [Line.x1],eax
2076
      mov [Line.x2],eax
2077
      mov [Line.y1],ebx
2078
      mov [Line.y2],ebx
2079
      add [Line.x1],5
2080
      add [Line.x2],9
2081
      add [Line.y1],8
2082
      add [Line.y2],4
2083
      call DrawLine
2084
2085
 
2086
      xor ebx,ebx
2087
      mov ax,[Scroller.x]
2088
      mov bx,[Scroller.y]
2089
      mov [Line.x1],eax
2090
      mov [Line.x2],eax
2091
      mov [Line.y1],ebx
2092
      mov [Line.y2],ebx
2093
      add [Line.x1],6
2094
      add [Line.x2],9
2095
      add [Line.y1],8
2096
      add [Line.y2],5
2097
      call DrawLine
2098
2099
 
2100
      xor ebx,ebx
2101
      mov ax,[Scroller.x]
2102
      mov bx,[Scroller.y]
2103
      mov [Line.x1],eax
2104
      mov [Line.x2],eax
2105
      mov [Line.y1],ebx
2106
      mov [Line.y2],ebx
2107
      add [Line.x1],5
2108
      add [Line.x2],9
2109
      add [Line.y1],8
2110
      add [Line.y2],12
2111
      call DrawLine
2112
2113
 
2114
      xor ebx,ebx
2115
      mov ax,[Scroller.x]
2116
      mov bx,[Scroller.y]
2117
      mov [Line.x1],eax
2118
      mov [Line.x2],eax
2119
      mov [Line.y1],ebx
2120
      mov [Line.y2],ebx
2121
      add [Line.x1],6
2122
      add [Line.x2],9
2123
      add [Line.y1],8
2124
      add [Line.y2],11
2125
      call DrawLine
2126
2127
 
2128
      xor ebx,ebx
2129
      xor ecx,ecx
2130
      mov eax,13
2131
      mov edx,[Color]
2132
      mov bx,[Scroller.x]
2133
      mov cx,[Scroller.y]
2134
      add bx,[Scroller.length]
2135
      sub bx,16
2136
      shl ebx,16
2137
      shl ecx,16
2138
      add ebx,16
2139
      add ecx,16
2140
      and edx,0xffffff
2141
      mcall
2142
2143
 
2144
      and eax,0xffffff
2145
      mov [Line.color],eax
2146
2147
 
2148
      xor eax,eax
2149
      xor ebx,ebx
2150
      mov ax,[Scroller.x]
2151
      mov bx,[Scroller.y]
2152
      add ax,[Scroller.length]
2153
      sub eax,15
2154
      mov [Line.x1],eax
2155
      mov [Line.x2],eax
2156
      mov [Line.y1],ebx
2157
      mov [Line.y2],ebx
2158
      add [Line.x2],15
2159
      call DrawLine
2160
2161
 
2162
      xor eax,eax
2163
      xor ebx,ebx
2164
      mov ax,[Scroller.x]
2165
      mov bx,[Scroller.y]
2166
      add ax,[Scroller.length]
2167
      sub eax,16
2168
      mov [Line.x1],eax
2169
      mov [Line.x2],eax
2170
      mov [Line.y1],ebx
2171
      mov [Line.y2],ebx
2172
      add [Line.y2],15
2173
      call DrawLine
2174
2175
 
2176
      and eax,0xffffff
2177
      mov [Line.color],eax
2178
2179
 
2180
      xor eax,eax
2181
      xor ebx,ebx
2182
      mov ax,[Scroller.x]
2183
      mov bx,[Scroller.y]
2184
      add ax,[Scroller.length]
2185
      mov [Line.x1],eax
2186
      mov [Line.x2],eax
2187
      mov [Line.y1],ebx
2188
      mov [Line.y2],ebx
2189
      add [Line.y2],15
2190
      call DrawLine
2191
2192
 
2193
      xor eax,eax
2194
      xor ebx,ebx
2195
      mov ax,[Scroller.x]
2196
      mov bx,[Scroller.y]
2197
      add ax,[Scroller.length]
2198
      sub eax,15
2199
      add ebx,15
2200
      mov [Line.x1],eax
2201
      mov [Line.x2],eax
2202
      mov [Line.y1],ebx
2203
      mov [Line.y2],ebx
2204
      add [Line.x2],15
2205
      call DrawLine
2206
2207
 
2208
      mov ax,[Scroller.length]
2209
      sub eax,16
2210
      mov [length],eax
2211
2212
 
2213
2214
 
2215
      xor ebx,ebx
2216
      mov ax,[Scroller.x]
2217
      mov bx,[Scroller.y]
2218
      add eax,[length]
2219
      mov [Line.x1],eax
2220
      mov [Line.x2],eax
2221
      mov [Line.y1],ebx
2222
      mov [Line.y2],ebx
2223
      add [Line.x1],12
2224
      add [Line.x2],8
2225
      add [Line.y1],8
2226
      add [Line.y2],4
2227
      call DrawLine
2228
2229
 
2230
      xor ebx,ebx
2231
      mov ax,[Scroller.x]
2232
      mov bx,[Scroller.y]
2233
      add eax,[length]
2234
      mov [Line.x1],eax
2235
      mov [Line.x2],eax
2236
      mov [Line.y1],ebx
2237
      mov [Line.y2],ebx
2238
      add [Line.x1],11
2239
      add [Line.x2],8
2240
      add [Line.y1],8
2241
      add [Line.y2],5
2242
      call DrawLine
2243
2244
 
2245
      xor ebx,ebx
2246
      mov ax,[Scroller.x]
2247
      mov bx,[Scroller.y]
2248
      add eax,[length]
2249
      mov [Line.x1],eax
2250
      mov [Line.x2],eax
2251
      mov [Line.y1],ebx
2252
      mov [Line.y2],ebx
2253
      add [Line.x1],12
2254
      add [Line.x2],8
2255
      add [Line.y1],8
2256
      add [Line.y2],12
2257
      call DrawLine
2258
2259
 
2260
      xor ebx,ebx
2261
      mov ax,[Scroller.x]
2262
      mov bx,[Scroller.y]
2263
      add eax,[length]
2264
      mov [Line.x1],eax
2265
      mov [Line.x2],eax
2266
      mov [Line.y1],ebx
2267
      mov [Line.y2],ebx
2268
      add [Line.x1],11
2269
      add [Line.x2],8
2270
      add [Line.y1],8
2271
      add [Line.y2],11
2272
      call DrawLine
2273
2274
 
2275
2276
 
2277
2278
 
2279
      mov eax,[Scroller.color1]
2280
      mov ebx,0xffffff
2281
      mov ecx,20
2282
      mov edx,dword colors_table1
2283
      call gradient
2284
2285
 
2286
      mov ebx,[Scroller.color1]
2287
      mov ecx,20
2288
      mov edx,dword colors_table2
2289
      call gradient
2290
2291
 
2292
      mov eax,13
2293
      mov edx,[Color]
2294
      xor ebx,ebx
2295
      xor ecx,ecx
2296
      mov bx,[Scroller.x]
2297
      mov cx,[Scroller.y]
2298
      shl ebx,16
2299
      shl ecx,16
2300
      add ebx,16
2301
      add ecx,16
2302
      and edx,0xffffff
2303
      mcall
2304
2305
 
2306
      and eax,0xffffff
2307
      mov [Line.color],eax
2308
2309
 
2310
      xor eax,eax
2311
      xor ebx,ebx
2312
      mov ax,[Scroller.x]
2313
      mov bx,[Scroller.y]
2314
      mov [Line.x1],eax
2315
      mov [Line.x2],eax
2316
      mov [Line.y1],ebx
2317
      mov [Line.y2],ebx
2318
      add [Line.x2],14
2319
      call DrawLine
2320
2321
 
2322
      xor eax,eax
2323
      xor ebx,ebx
2324
      mov ax,[Scroller.x]
2325
      mov bx,[Scroller.y]
2326
      mov [Line.x1],eax
2327
      mov [Line.x2],eax
2328
      mov [Line.y1],ebx
2329
      mov [Line.y2],ebx
2330
      add [Line.y2],14
2331
      call DrawLine
2332
2333
 
2334
      and eax,0xffffff
2335
      mov [Line.color],eax
2336
2337
 
2338
      xor eax,eax
2339
      xor ebx,ebx
2340
      mov ax,[Scroller.x]
2341
      mov bx,[Scroller.y]
2342
      add eax,15
2343
      mov [Line.x1],eax
2344
      mov [Line.x2],eax
2345
      mov [Line.y1],ebx
2346
      mov [Line.y2],ebx
2347
      add [Line.y2],15
2348
      call DrawLine
2349
2350
 
2351
      xor eax,eax
2352
      xor ebx,ebx
2353
      mov ax,[Scroller.x]
2354
      mov bx,[Scroller.y]
2355
      add ebx,15
2356
      mov [Line.x1],eax
2357
      mov [Line.x2],eax
2358
      mov [Line.y1],ebx
2359
      mov [Line.y2],ebx
2360
      add [Line.x2],15
2361
      call DrawLine
2362
2363
 
2364
2365
 
2366
      xor ebx,ebx
2367
      mov ax,[Scroller.x]
2368
      mov bx,[Scroller.y]
2369
      mov [Line.x1],eax
2370
      mov [Line.x2],eax
2371
      mov [Line.y1],ebx
2372
      mov [Line.y2],ebx
2373
      add [Line.x1],4
2374
      add [Line.x2],8
2375
      add [Line.y1],9
2376
      add [Line.y2],5
2377
      call DrawLine
2378
2379
 
2380
      xor ebx,ebx
2381
      mov ax,[Scroller.x]
2382
      mov bx,[Scroller.y]
2383
      mov [Line.x1],eax
2384
      mov [Line.x2],eax
2385
      mov [Line.y1],ebx
2386
      mov [Line.y2],ebx
2387
      add [Line.x1],4
2388
      add [Line.x2],8
2389
      add [Line.y1],10
2390
      add [Line.y2],6
2391
      call DrawLine
2392
2393
 
2394
      xor ebx,ebx
2395
      mov ax,[Scroller.x]
2396
      mov bx,[Scroller.y]
2397
      mov [Line.x1],eax
2398
      mov [Line.x2],eax
2399
      mov [Line.y1],ebx
2400
      mov [Line.y2],ebx
2401
      add [Line.x1],8
2402
      add [Line.x2],12
2403
      add [Line.y1],5
2404
      add [Line.y2],9
2405
      call DrawLine
2406
2407
 
2408
      xor ebx,ebx
2409
      mov ax,[Scroller.x]
2410
      mov bx,[Scroller.y]
2411
      mov [Line.x1],eax
2412
      mov [Line.x2],eax
2413
      mov [Line.y1],ebx
2414
      mov [Line.y2],ebx
2415
      add [Line.x1],8
2416
      add [Line.x2],12
2417
      add [Line.y1],6
2418
      add [Line.y2],10
2419
      call DrawLine
2420
2421
 
2422
      xor ebx,ebx
2423
      xor ecx,ecx
2424
      mov eax,13
2425
      mov edx,[Color]
2426
      and edx,0xffffff
2427
      mov bx,[Scroller.x]
2428
      mov cx,[Scroller.y]
2429
      add cx,[Scroller.length]
2430
      sub cx,16
2431
      shl ebx,16
2432
      shl ecx,16
2433
      add ebx,16
2434
      add ecx,16
2435
      mcall
2436
2437
 
2438
      and eax,0xffffff
2439
      mov [Line.color],eax
2440
2441
 
2442
      xor eax,eax
2443
      xor ebx,ebx
2444
      mov ax,[Scroller.x]
2445
      mov bx,[Scroller.y]
2446
      add bx,[Scroller.length]
2447
      sub ebx,16
2448
      mov [Line.x1],eax
2449
      mov [Line.x2],eax
2450
      mov [Line.y1],ebx
2451
      mov [Line.y2],ebx
2452
      add [Line.x2],15
2453
      call DrawLine
2454
2455
 
2456
      xor eax,eax
2457
      xor ebx,ebx
2458
      mov ax,[Scroller.x]
2459
      mov bx,[Scroller.y]
2460
      add bx,[Scroller.length]
2461
      sub ebx,16
2462
      mov [Line.x1],eax
2463
      mov [Line.x2],eax
2464
      mov [Line.y1],ebx
2465
      mov [Line.y2],ebx
2466
      add [Line.y2],15
2467
      call DrawLine
2468
2469
 
2470
      and eax,0xffffff
2471
      mov [Line.color],eax
2472
2473
 
2474
      xor eax,eax
2475
      xor ebx,ebx
2476
      mov ax,[Scroller.x]
2477
      mov bx,[Scroller.y]
2478
      add bx,[Scroller.length]
2479
      sub ebx,16
2480
      add eax,15
2481
      mov [Line.x1],eax
2482
      mov [Line.x2],eax
2483
      mov [Line.y1],ebx
2484
      mov [Line.y2],ebx
2485
      add [Line.y2],15
2486
      call DrawLine
2487
2488
 
2489
      xor eax,eax
2490
      xor ebx,ebx
2491
      mov ax,[Scroller.x]
2492
      mov bx,[Scroller.y]
2493
      add bx,[Scroller.length]
2494
      mov [Line.x1],eax
2495
      mov [Line.x2],eax
2496
      mov [Line.y1],ebx
2497
      mov [Line.y2],ebx
2498
      add [Line.x2],15
2499
      call DrawLine
2500
2501
 
2502
      mov ax,[Scroller.length]
2503
      sub eax,16
2504
      mov [length],eax
2505
2506
 
2507
2508
 
2509
      xor ebx,ebx
2510
      mov ax,[Scroller.x]
2511
      mov bx,[Scroller.y]
2512
      add ebx,[length]
2513
      mov [Line.x1],eax
2514
      mov [Line.x2],eax
2515
      mov [Line.y1],ebx
2516
      mov [Line.y2],ebx
2517
      add [Line.x1],4
2518
      add [Line.x2],8
2519
      add [Line.y1],7
2520
      add [Line.y2],11
2521
      call DrawLine
2522
2523
 
2524
      xor ebx,ebx
2525
      mov ax,[Scroller.x]
2526
      mov bx,[Scroller.y]
2527
      add ebx,[length]
2528
      mov [Line.x1],eax
2529
      mov [Line.x2],eax
2530
      mov [Line.y1],ebx
2531
      mov [Line.y2],ebx
2532
      add [Line.x1],4
2533
      add [Line.x2],8
2534
      add [Line.y1],6
2535
      add [Line.y2],10
2536
      call DrawLine
2537
2538
 
2539
      xor ebx,ebx
2540
      mov ax,[Scroller.x]
2541
      mov bx,[Scroller.y]
2542
      add ebx,[length]
2543
      mov [Line.x1],eax
2544
      mov [Line.x2],eax
2545
      mov [Line.y1],ebx
2546
      mov [Line.y2],ebx
2547
      add [Line.x1],12
2548
      add [Line.x2],8
2549
      add [Line.y1],7
2550
      add [Line.y2],11
2551
      call DrawLine
2552
2553
 
2554
      xor ebx,ebx
2555
      mov ax,[Scroller.x]
2556
      mov bx,[Scroller.y]
2557
      add ebx,[length]
2558
      mov [Line.x1],eax
2559
      mov [Line.x2],eax
2560
      mov [Line.y1],ebx
2561
      mov [Line.y2],ebx
2562
      add [Line.x1],12
2563
      add [Line.x2],8
2564
      add [Line.y1],6
2565
      add [Line.y2],10
2566
      call DrawLine
2567
2568
 
2569
2570
 
2571
2572
 
2573
      xor eax,eax
2574
      xor ebx,ebx
2575
      mov ax,[Scroller.x]
2576
      mov bx,[Scroller.y]
2577
      mov [Rectangle.x],eax
2578
      mov [Rectangle.y],ebx
2579
      mov [Rectangle.width],16
2580
      mov [Rectangle.height],16
2581
2582
 
2583
      and eax,0xffffff
2584
      mov [Rectangle.color],eax
2585
      call RectangleContour
2586
2587
 
2588
      mov eax,[Scroller.color1]
2589
      mov ebx,dword 0xffffff
2590
      and eax,0xffffff
2591
      xor ecx,ecx
2592
      xor edx,edx
2593
      xor esi,esi
2594
      xor edi,edi
2595
      mov cx,[Scroller.x]
2596
      mov dx,[Scroller.y]
2597
      mov si,(16-1)
2598
      mov di,(16-2)
2599
      add cx,1
2600
      add dx,1
2601
      call rectangle_gradient_up
2602
2603
 
2604
      and eax,0xffffff
2605
      mov [Line.color],eax
2606
2607
 
2608
      xor eax,eax
2609
      xor ebx,ebx
2610
      mov ax,[Scroller.x]
2611
      mov bx,[Scroller.y]
2612
      add eax,1
2613
      add ebx,1
2614
      mov [Line.x1],eax
2615
      mov [Line.x2],eax
2616
      mov [Line.y1],ebx
2617
      mov [Line.y2],ebx
2618
      add [Line.x2],14
2619
      call DrawLine
2620
2621
 
2622
      xor eax,eax
2623
      xor ebx,ebx
2624
      mov ax,[Scroller.x]
2625
      mov bx,[Scroller.y]
2626
      add eax,1
2627
      add ebx,1
2628
      mov [Line.x1],eax
2629
      mov [Line.x2],eax
2630
      mov [Line.y1],ebx
2631
      mov [Line.y2],ebx
2632
      add [Line.y2],14
2633
      call DrawLine
2634
2635
 
2636
      mov [Line.color],eax
2637
2638
 
2639
      xor eax,eax
2640
      xor ebx,ebx
2641
      mov ax,[Scroller.x]
2642
      mov bx,[Scroller.y]
2643
      add eax,16
2644
      mov [Line.x1],eax
2645
      mov [Line.x2],eax
2646
      mov [Line.y1],ebx
2647
      mov [Line.y2],ebx
2648
      add [Line.y1],1
2649
      add [Line.y2],14
2650
      call DrawLine
2651
2652
 
2653
      xor eax,eax
2654
      xor ebx,ebx
2655
      mov ax,[Scroller.x]
2656
      mov bx,[Scroller.y]
2657
      add eax,1
2658
      add ebx,15
2659
      mov [Line.x1],eax
2660
      mov [Line.x2],eax
2661
      mov [Line.y1],ebx
2662
      mov [Line.y2],ebx
2663
      add [Line.x2],14
2664
      call DrawLine
2665
2666
 
2667
      mov eax,[AveregeColor]
2668
      mov [Pixel.color],eax
2669
2670
 
2671
      xor ebx,ebx
2672
      mov ax,[Scroller.x]
2673
      mov bx,[Scroller.y]
2674
      mov [Pixel.x],eax
2675
      mov [Pixel.y],ebx
2676
      call DrawPixel
2677
2678
 
2679
      mov ax,[Scroller.x]
2680
      add eax,16
2681
      mov [Pixel.x],eax
2682
      call DrawPixel
2683
2684
 
2685
      mov ax,[Scroller.x]
2686
      mov [Pixel.x],eax
2687
      add [Pixel.y],16
2688
      call DrawPixel
2689
2690
 
2691
      xor ebx,ebx
2692
      mov ax,[Scroller.x]
2693
      mov bx,[Scroller.y]
2694
      add eax,16
2695
      add ebx,16
2696
      mov [Pixel.x],eax
2697
      mov [Pixel.y],ebx
2698
      call DrawPixel
2699
2700
 
2701
      xor eax,eax
2702
      xor ebx,ebx
2703
      mov ax,[Scroller.x]
2704
      mov bx,[Scroller.y]
2705
      add eax,1
2706
      add ebx,1
2707
      mov [Pixel.x],eax
2708
      mov [Pixel.y],ebx
2709
      call DrawPixel
2710
2711
 
2712
      xor ebx,ebx
2713
      mov ax,[Scroller.x]
2714
      mov bx,[Scroller.y]
2715
      add eax,15
2716
      add ebx,1
2717
      mov [Pixel.x],eax
2718
      mov [Pixel.y],ebx
2719
      call DrawPixel
2720
2721
 
2722
      xor ebx,ebx
2723
      mov ax,[Scroller.x]
2724
      mov bx,[Scroller.y]
2725
      add eax,1
2726
      add ebx,15
2727
      mov [Pixel.x],eax
2728
      mov [Pixel.y],ebx
2729
      call DrawPixel
2730
2731
 
2732
      xor ebx,ebx
2733
      mov ax,[Scroller.x]
2734
      mov bx,[Scroller.y]
2735
      add eax,15
2736
      add ebx,15
2737
      mov [Pixel.x],eax
2738
      mov [Pixel.y],ebx
2739
      call DrawPixel
2740
2741
 
2742
2743
 
2744
      xor ebx,ebx
2745
      mov ax,[Scroller.x]
2746
      mov bx,[Scroller.y]
2747
      mov [Line.x1],eax
2748
      mov [Line.x2],eax
2749
      mov [Line.y1],ebx
2750
      mov [Line.y2],ebx
2751
      add [Line.x1],5
2752
      add [Line.x2],9
2753
      add [Line.y1],8
2754
      add [Line.y2],4
2755
      call DrawLine
2756
2757
 
2758
      xor ebx,ebx
2759
      mov ax,[Scroller.x]
2760
      mov bx,[Scroller.y]
2761
      mov [Line.x1],eax
2762
      mov [Line.x2],eax
2763
      mov [Line.y1],ebx
2764
      mov [Line.y2],ebx
2765
      add [Line.x1],6
2766
      add [Line.x2],9
2767
      add [Line.y1],8
2768
      add [Line.y2],5
2769
      call DrawLine
2770
2771
 
2772
      xor ebx,ebx
2773
      mov ax,[Scroller.x]
2774
      mov bx,[Scroller.y]
2775
      mov [Line.x1],eax
2776
      mov [Line.x2],eax
2777
      mov [Line.y1],ebx
2778
      mov [Line.y2],ebx
2779
      add [Line.x1],5
2780
      add [Line.x2],9
2781
      add [Line.y1],8
2782
      add [Line.y2],12
2783
      call DrawLine
2784
2785
 
2786
      xor ebx,ebx
2787
      mov ax,[Scroller.x]
2788
      mov bx,[Scroller.y]
2789
      mov [Line.x1],eax
2790
      mov [Line.x2],eax
2791
      mov [Line.y1],ebx
2792
      mov [Line.y2],ebx
2793
      add [Line.x1],6
2794
      add [Line.x2],9
2795
      add [Line.y1],8
2796
      add [Line.y2],11
2797
      call DrawLine
2798
2799
 
2800
      xor eax,eax
2801
      xor ebx,ebx
2802
      mov ax,[Scroller.x]
2803
      mov bx,[Scroller.y]
2804
      add ax,[Scroller.length]
2805
      sub ax,16
2806
      mov [Rectangle.x],eax
2807
      mov [Rectangle.y],ebx
2808
      mov [Rectangle.width],16
2809
      mov [Rectangle.height],16
2810
2811
 
2812
      and eax,0xffffff
2813
      mov [Rectangle.color],eax
2814
      call RectangleContour
2815
2816
 
2817
      mov eax,[Scroller.color1]
2818
      mov ebx,dword 0xffffff
2819
      and eax,0xffffff
2820
      xor ecx,ecx
2821
      xor edx,edx
2822
      xor esi,esi
2823
      xor edi,edi
2824
      mov cx,[Scroller.x]
2825
      mov dx,[Scroller.y]
2826
      add cx,[Scroller.length]
2827
      sub cx,16
2828
      mov si,(16-1)
2829
      mov di,(16-2)
2830
      add cx,1
2831
      add dx,1
2832
      call rectangle_gradient_up
2833
2834
 
2835
      and eax,0xffffff
2836
      mov [Line.color],eax
2837
2838
 
2839
      xor eax,eax
2840
      xor ebx,ebx
2841
      mov ax,[Scroller.x]
2842
      mov bx,[Scroller.y]
2843
      add ax,[Scroller.length]
2844
      sub eax,15
2845
      add ebx,1
2846
      mov [Line.x1],eax
2847
      mov [Line.x2],eax
2848
      mov [Line.y1],ebx
2849
      mov [Line.y2],ebx
2850
      add [Line.x2],15
2851
      call DrawLine
2852
2853
 
2854
      xor eax,eax
2855
      xor ebx,ebx
2856
      mov ax,[Scroller.x]
2857
      mov bx,[Scroller.y]
2858
      add ebx,1
2859
      add ax,[Scroller.length]
2860
      sub eax,15
2861
      mov [Line.x1],eax
2862
      mov [Line.x2],eax
2863
      mov [Line.y1],ebx
2864
      mov [Line.y2],ebx
2865
      add [Line.y2],14
2866
      call DrawLine
2867
2868
 
2869
      mov [Line.color],eax
2870
2871
 
2872
      xor eax,eax
2873
      xor ebx,ebx
2874
      mov ax,[Scroller.x]
2875
      mov bx,[Scroller.y]
2876
      add ax,[Scroller.length]
2877
      mov [Line.x1],eax
2878
      mov [Line.x2],eax
2879
      mov [Line.y1],ebx
2880
      mov [Line.y2],ebx
2881
      add [Line.y2],15
2882
      call DrawLine
2883
2884
 
2885
      xor eax,eax
2886
      xor ebx,ebx
2887
      mov ax,[Scroller.x]
2888
      mov bx,[Scroller.y]
2889
      add ax,[Scroller.length]
2890
      sub eax,15
2891
      add ebx,15
2892
      mov [Line.x1],eax
2893
      mov [Line.x2],eax
2894
      mov [Line.y1],ebx
2895
      mov [Line.y2],ebx
2896
      add [Line.x2],14
2897
      call DrawLine
2898
2899
 
2900
      mov ax,[Scroller.length]
2901
      sub eax,16
2902
      mov [length],eax
2903
2904
 
2905
      xor ebx,ebx
2906
      mov ax,[Scroller.x]
2907
      mov bx,[Scroller.y]
2908
      add eax,[length]
2909
      mov [Pixel.x],eax
2910
      mov [Pixel.y],ebx
2911
      call DrawPixel
2912
2913
 
2914
      call DrawPixel
2915
2916
 
2917
      xor ebx,ebx
2918
      mov ax,[Scroller.x]
2919
      mov bx,[Scroller.y]
2920
      add ebx,16
2921
      add eax,[length]
2922
      mov [Pixel.x],eax
2923
      mov [Pixel.y],ebx
2924
      call DrawPixel
2925
2926
 
2927
      xor ebx,ebx
2928
      mov ax,[Scroller.x]
2929
      mov bx,[Scroller.y]
2930
      add eax,16
2931
      add ebx,16
2932
      add eax,[length]
2933
      mov [Pixel.x],eax
2934
      mov [Pixel.y],ebx
2935
      call DrawPixel
2936
2937
 
2938
      xor eax,eax
2939
      xor ebx,ebx
2940
      mov ax,[Scroller.x]
2941
      mov bx,[Scroller.y]
2942
      add eax,1
2943
      add ebx,1
2944
      add eax,[length]
2945
      mov [Pixel.x],eax
2946
      mov [Pixel.y],ebx
2947
      call DrawPixel
2948
2949
 
2950
      xor ebx,ebx
2951
      mov ax,[Scroller.x]
2952
      mov bx,[Scroller.y]
2953
      add eax,15
2954
      add ebx,1
2955
      add eax,[length]
2956
      mov [Pixel.x],eax
2957
      mov [Pixel.y],ebx
2958
      call DrawPixel
2959
2960
 
2961
      xor ebx,ebx
2962
      mov ax,[Scroller.x]
2963
      mov bx,[Scroller.y]
2964
      add eax,1
2965
      add ebx,15
2966
      add eax,[length]
2967
      mov [Pixel.x],eax
2968
      mov [Pixel.y],ebx
2969
      call DrawPixel
2970
2971
 
2972
      xor ebx,ebx
2973
      mov ax,[Scroller.x]
2974
      mov bx,[Scroller.y]
2975
      add eax,15
2976
      add ebx,15
2977
      add eax,[length]
2978
      mov [Pixel.x],eax
2979
      mov [Pixel.y],ebx
2980
      call DrawPixel
2981
2982
 
2983
      mov ax,[Scroller.length]
2984
      sub eax,16
2985
      mov [length],eax
2986
2987
 
2988
2989
 
2990
      xor ebx,ebx
2991
      mov ax,[Scroller.x]
2992
      mov bx,[Scroller.y]
2993
      add eax,[length]
2994
      mov [Line.x1],eax
2995
      mov [Line.x2],eax
2996
      mov [Line.y1],ebx
2997
      mov [Line.y2],ebx
2998
      add [Line.x1],12
2999
      add [Line.x2],8
3000
      add [Line.y1],8
3001
      add [Line.y2],4
3002
      call DrawLine
3003
3004
 
3005
      xor ebx,ebx
3006
      mov ax,[Scroller.x]
3007
      mov bx,[Scroller.y]
3008
      add eax,[length]
3009
      mov [Line.x1],eax
3010
      mov [Line.x2],eax
3011
      mov [Line.y1],ebx
3012
      mov [Line.y2],ebx
3013
      add [Line.x1],11
3014
      add [Line.x2],8
3015
      add [Line.y1],8
3016
      add [Line.y2],5
3017
      call DrawLine
3018
3019
 
3020
      xor ebx,ebx
3021
      mov ax,[Scroller.x]
3022
      mov bx,[Scroller.y]
3023
      add eax,[length]
3024
      mov [Line.x1],eax
3025
      mov [Line.x2],eax
3026
      mov [Line.y1],ebx
3027
      mov [Line.y2],ebx
3028
      add [Line.x1],12
3029
      add [Line.x2],8
3030
      add [Line.y1],8
3031
      add [Line.y2],12
3032
      call DrawLine
3033
3034
 
3035
      xor ebx,ebx
3036
      mov ax,[Scroller.x]
3037
      mov bx,[Scroller.y]
3038
      add eax,[length]
3039
      mov [Line.x1],eax
3040
      mov [Line.x2],eax
3041
      mov [Line.y1],ebx
3042
      mov [Line.y2],ebx
3043
      add [Line.x1],11
3044
      add [Line.x2],8
3045
      add [Line.y1],8
3046
      add [Line.y2],11
3047
      call DrawLine
3048
3049
 
3050
3051
 
3052
3053
 
3054
      xor eax,eax
3055
      xor ebx,ebx
3056
      mov ax,[Scroller.x]
3057
      mov bx,[Scroller.y]
3058
      mov [Rectangle.x],eax
3059
      mov [Rectangle.y],ebx
3060
      mov [Rectangle.width],16
3061
      mov [Rectangle.height],16
3062
3063
 
3064
      and eax,0xffffff
3065
      mov [Rectangle.color],eax
3066
      call RectangleContour
3067
3068
 
3069
      mov eax,[Scroller.color1]
3070
      mov ebx,dword 0xffffff
3071
      and eax,0xffffff
3072
      xor ecx,ecx
3073
      xor edx,edx
3074
      xor esi,esi
3075
      xor edi,edi
3076
      mov cx,[Scroller.x]
3077
      mov dx,[Scroller.y]
3078
      mov si,(16-1)
3079
      mov di,(16-2)
3080
      add cx,1
3081
      add dx,1
3082
      call rectangle_gradient_right
3083
3084
 
3085
      and eax,0xffffff
3086
      mov [Line.color],eax
3087
3088
 
3089
      xor eax,eax
3090
      xor ebx,ebx
3091
      mov ax,[Scroller.x]
3092
      mov bx,[Scroller.y]
3093
      add eax,1
3094
      add ebx,1
3095
      mov [Line.x1],eax
3096
      mov [Line.x2],eax
3097
      mov [Line.y1],ebx
3098
      mov [Line.y2],ebx
3099
      add [Line.x2],14
3100
      call DrawLine
3101
3102
 
3103
      xor eax,eax
3104
      xor ebx,ebx
3105
      mov ax,[Scroller.x]
3106
      mov bx,[Scroller.y]
3107
      add eax,1
3108
      add ebx,1
3109
      mov [Line.x1],eax
3110
      mov [Line.x2],eax
3111
      mov [Line.y1],ebx
3112
      mov [Line.y2],ebx
3113
      add [Line.y2],14
3114
      call DrawLine
3115
3116
 
3117
      mov [Line.color],eax
3118
3119
 
3120
      xor eax,eax
3121
      xor ebx,ebx
3122
      mov ax,[Scroller.x]
3123
      mov bx,[Scroller.y]
3124
      add eax,15
3125
      mov [Line.x1],eax
3126
      mov [Line.x2],eax
3127
      mov [Line.y1],ebx
3128
      mov [Line.y2],ebx
3129
      add [Line.y1],1
3130
      add [Line.y2],14
3131
      call DrawLine
3132
3133
 
3134
      xor eax,eax
3135
      xor ebx,ebx
3136
      mov ax,[Scroller.x]
3137
      mov bx,[Scroller.y]
3138
      add eax,1
3139
      add ebx,15
3140
      mov [Line.x1],eax
3141
      mov [Line.x2],eax
3142
      mov [Line.y1],ebx
3143
      mov [Line.y2],ebx
3144
      add [Line.x2],14
3145
      call DrawLine
3146
3147
 
3148
      mov eax,[AveregeColor]
3149
      mov [Pixel.color],eax
3150
3151
 
3152
      xor ebx,ebx
3153
      mov ax,[Scroller.x]
3154
      mov bx,[Scroller.y]
3155
      mov [Pixel.x],eax
3156
      mov [Pixel.y],ebx
3157
      call DrawPixel
3158
3159
 
3160
      mov ax,[Scroller.x]
3161
      add eax,16
3162
      mov [Pixel.x],eax
3163
      call DrawPixel
3164
3165
 
3166
      xor ebx,ebx
3167
      mov ax,[Scroller.x]
3168
      mov bx,[Scroller.y]
3169
      add ebx,16
3170
      mov [Pixel.x],eax
3171
      mov [Pixel.y],ebx
3172
      call DrawPixel
3173
3174
 
3175
      xor ebx,ebx
3176
      mov ax,[Scroller.x]
3177
      mov bx,[Scroller.y]
3178
      add eax,16
3179
      add ebx,16
3180
      mov [Pixel.x],eax
3181
      mov [Pixel.y],ebx
3182
      call DrawPixel
3183
3184
 
3185
      xor eax,eax
3186
      xor ebx,ebx
3187
      mov ax,[Scroller.x]
3188
      mov bx,[Scroller.y]
3189
      add eax,1
3190
      add ebx,1
3191
      mov [Pixel.x],eax
3192
      mov [Pixel.y],ebx
3193
      call DrawPixel
3194
3195
 
3196
      xor ebx,ebx
3197
      mov ax,[Scroller.x]
3198
      mov bx,[Scroller.y]
3199
      add eax,15
3200
      add ebx,1
3201
      mov [Pixel.x],eax
3202
      mov [Pixel.y],ebx
3203
      call DrawPixel
3204
3205
 
3206
      xor ebx,ebx
3207
      mov ax,[Scroller.x]
3208
      mov bx,[Scroller.y]
3209
      add eax,1
3210
      add ebx,15
3211
      mov [Pixel.x],eax
3212
      mov [Pixel.y],ebx
3213
      call DrawPixel
3214
3215
 
3216
      xor ebx,ebx
3217
      mov ax,[Scroller.x]
3218
      mov bx,[Scroller.y]
3219
      add eax,15
3220
      add ebx,15
3221
      mov [Pixel.x],eax
3222
      mov [Pixel.y],ebx
3223
      call DrawPixel
3224
3225
 
3226
3227
 
3228
      xor ebx,ebx
3229
      mov ax,[Scroller.x]
3230
      mov bx,[Scroller.y]
3231
      mov [Line.x1],eax
3232
      mov [Line.x2],eax
3233
      mov [Line.y1],ebx
3234
      mov [Line.y2],ebx
3235
      add [Line.x1],4
3236
      add [Line.x2],8
3237
      add [Line.y1],9
3238
      add [Line.y2],5
3239
      call DrawLine
3240
3241
 
3242
      xor ebx,ebx
3243
      mov ax,[Scroller.x]
3244
      mov bx,[Scroller.y]
3245
      mov [Line.x1],eax
3246
      mov [Line.x2],eax
3247
      mov [Line.y1],ebx
3248
      mov [Line.y2],ebx
3249
      add [Line.x1],4
3250
      add [Line.x2],8
3251
      add [Line.y1],10
3252
      add [Line.y2],6
3253
      call DrawLine
3254
3255
 
3256
      xor ebx,ebx
3257
      mov ax,[Scroller.x]
3258
      mov bx,[Scroller.y]
3259
      mov [Line.x1],eax
3260
      mov [Line.x2],eax
3261
      mov [Line.y1],ebx
3262
      mov [Line.y2],ebx
3263
      add [Line.x1],8
3264
      add [Line.x2],12
3265
      add [Line.y1],5
3266
      add [Line.y2],9
3267
      call DrawLine
3268
3269
 
3270
      xor ebx,ebx
3271
      mov ax,[Scroller.x]
3272
      mov bx,[Scroller.y]
3273
      mov [Line.x1],eax
3274
      mov [Line.x2],eax
3275
      mov [Line.y1],ebx
3276
      mov [Line.y2],ebx
3277
      add [Line.x1],8
3278
      add [Line.x2],12
3279
      add [Line.y1],6
3280
      add [Line.y2],10
3281
      call DrawLine
3282
3283
 
3284
      xor eax,eax
3285
      xor ebx,ebx
3286
      mov ax,[Scroller.x]
3287
      mov bx,[Scroller.y]
3288
      add bx,[Scroller.length]
3289
      sub bx,16
3290
      mov [Rectangle.x],eax
3291
      mov [Rectangle.y],ebx
3292
      mov [Rectangle.width],16
3293
      mov [Rectangle.height],16
3294
3295
 
3296
      and eax,0xffffff
3297
      mov [Rectangle.color],eax
3298
      call RectangleContour
3299
3300
 
3301
      mov eax,[Scroller.color1]
3302
      mov ebx,dword 0xffffff
3303
      and eax,0xffffff
3304
      xor ecx,ecx
3305
      xor edx,edx
3306
      xor esi,esi
3307
      xor edi,edi
3308
      mov cx,[Scroller.x]
3309
      mov dx,[Scroller.y]
3310
      add dx,[Scroller.length]
3311
      sub dx,(16-1)
3312
      mov si,(16-1)
3313
      mov di,(16-2)
3314
      add cx,1
3315
      call rectangle_gradient_right
3316
3317
 
3318
      and eax,0xffffff
3319
      mov [Line.color],eax
3320
3321
 
3322
      xor eax,eax
3323
      xor ebx,ebx
3324
      mov ax,[Scroller.x]
3325
      mov bx,[Scroller.y]
3326
      add bx,[Scroller.length]
3327
      sub ebx,15
3328
      mov [Line.x1],eax
3329
      mov [Line.x2],eax
3330
      mov [Line.y1],ebx
3331
      mov [Line.y2],ebx
3332
      add [Line.x1],1
3333
      add [Line.x2],15
3334
      call DrawLine
3335
3336
 
3337
      xor eax,eax
3338
      xor ebx,ebx
3339
      mov ax,[Scroller.x]
3340
      mov bx,[Scroller.y]
3341
      add eax,1
3342
      add bx,[Scroller.length]
3343
      sub ebx,15
3344
      mov [Line.x1],eax
3345
      mov [Line.x2],eax
3346
      mov [Line.y1],ebx
3347
      mov [Line.y2],ebx
3348
      add [Line.y2],14
3349
      call DrawLine
3350
3351
 
3352
      mov [Line.color],eax
3353
3354
 
3355
      xor eax,eax
3356
      xor ebx,ebx
3357
      mov ax,[Scroller.x]
3358
      mov bx,[Scroller.y]
3359
      add bx,[Scroller.length]
3360
      sub ebx,15
3361
      add eax,15
3362
      mov [Line.x1],eax
3363
      mov [Line.x2],eax
3364
      mov [Line.y1],ebx
3365
      mov [Line.y2],ebx
3366
      add [Line.y2],14
3367
      call DrawLine
3368
3369
 
3370
      xor eax,eax
3371
      xor ebx,ebx
3372
      mov ax,[Scroller.x]
3373
      mov bx,[Scroller.y]
3374
      add bx,[Scroller.length]
3375
      add eax,1
3376
      sub ebx,1
3377
      mov [Line.x1],eax
3378
      mov [Line.x2],eax
3379
      mov [Line.y1],ebx
3380
      mov [Line.y2],ebx
3381
      add [Line.x2],14
3382
      call DrawLine
3383
3384
 
3385
      mov ax,[Scroller.length]
3386
      sub eax,16
3387
      mov [length],eax
3388
3389
 
3390
      xor ebx,ebx
3391
      mov ax,[Scroller.x]
3392
      mov bx,[Scroller.y]
3393
      add ebx,[length]
3394
      mov [Pixel.x],eax
3395
      mov [Pixel.y],ebx
3396
      call DrawPixel
3397
3398
 
3399
      mov ax,[Scroller.x]
3400
      add eax,16
3401
      mov [Pixel.x],eax
3402
      call DrawPixel
3403
3404
 
3405
      mov ax,[Scroller.x]
3406
      mov [Pixel.x],eax
3407
      add [Pixel.y],16
3408
      call DrawPixel
3409
3410
 
3411
      xor ebx,ebx
3412
      mov ax,[Scroller.x]
3413
      mov bx,[Scroller.y]
3414
      add eax,16
3415
      add ebx,16
3416
      add ebx,[length]
3417
      mov [Pixel.x],eax
3418
      mov [Pixel.y],ebx
3419
      call DrawPixel
3420
3421
 
3422
      xor eax,eax
3423
      xor ebx,ebx
3424
      mov ax,[Scroller.x]
3425
      mov bx,[Scroller.y]
3426
      add eax,1
3427
      add ebx,1
3428
      add ebx,[length]
3429
      mov [Pixel.x],eax
3430
      mov [Pixel.y],ebx
3431
      call DrawPixel
3432
3433
 
3434
      xor ebx,ebx
3435
      mov ax,[Scroller.x]
3436
      mov bx,[Scroller.y]
3437
      add eax,15
3438
      add ebx,1
3439
      add ebx,[length]
3440
      mov [Pixel.x],eax
3441
      mov [Pixel.y],ebx
3442
      call DrawPixel
3443
3444
 
3445
      xor ebx,ebx
3446
      mov ax,[Scroller.x]
3447
      mov bx,[Scroller.y]
3448
      add eax,1
3449
      add ebx,15
3450
      add ebx,[length]
3451
      mov [Pixel.x],eax
3452
      mov [Pixel.y],ebx
3453
      call DrawPixel
3454
3455
 
3456
      xor ebx,ebx
3457
      mov ax,[Scroller.x]
3458
      mov bx,[Scroller.y]
3459
      add eax,15
3460
      add ebx,15
3461
      add ebx,[length]
3462
      mov [Pixel.x],eax
3463
      mov [Pixel.y],ebx
3464
      call DrawPixel
3465
3466
 
3467
      mov ax,[Scroller.length]
3468
      sub eax,16
3469
      mov [length],eax
3470
3471
 
3472
3473
 
3474
      xor ebx,ebx
3475
      mov ax,[Scroller.x]
3476
      mov bx,[Scroller.y]
3477
      add ebx,[length]
3478
      mov [Line.x1],eax
3479
      mov [Line.x2],eax
3480
      mov [Line.y1],ebx
3481
      mov [Line.y2],ebx
3482
      add [Line.x1],4
3483
      add [Line.x2],8
3484
      add [Line.y1],7
3485
      add [Line.y2],11
3486
      call DrawLine
3487
3488
 
3489
      xor ebx,ebx
3490
      mov ax,[Scroller.x]
3491
      mov bx,[Scroller.y]
3492
      add ebx,[length]
3493
      mov [Line.x1],eax
3494
      mov [Line.x2],eax
3495
      mov [Line.y1],ebx
3496
      mov [Line.y2],ebx
3497
      add [Line.x1],4
3498
      add [Line.x2],8
3499
      add [Line.y1],6
3500
      add [Line.y2],10
3501
      call DrawLine
3502
3503
 
3504
      xor ebx,ebx
3505
      mov ax,[Scroller.x]
3506
      mov bx,[Scroller.y]
3507
      add ebx,[length]
3508
      mov [Line.x1],eax
3509
      mov [Line.x2],eax
3510
      mov [Line.y1],ebx
3511
      mov [Line.y2],ebx
3512
      add [Line.x1],12
3513
      add [Line.x2],8
3514
      add [Line.y1],7
3515
      add [Line.y2],11
3516
      call DrawLine
3517
3518
 
3519
      xor ebx,ebx
3520
      mov ax,[Scroller.x]
3521
      mov bx,[Scroller.y]
3522
      add ebx,[length]
3523
      mov [Line.x1],eax
3524
      mov [Line.x2],eax
3525
      mov [Line.y1],ebx
3526
      mov [Line.y2],ebx
3527
      add [Line.x1],12
3528
      add [Line.x2],8
3529
      add [Line.y1],6
3530
      add [Line.y2],10
3531
      call DrawLine
3532
3533
 
3534
3535
 
3536
;ebx - y
3537
;ecx - size y in pixels
3538
DrawVertical3DScrollBar:
3539
3540
 
3541
      mov [y],ebx
3542
      mov [length2],ecx
3543
3544
 
3545
      mov ebx,[y]
3546
      mov ecx,[length2]
3547
      mov edx,[pointer]
3548
      and edx,0xffffff
3549
      mov [Rectangle.x],eax
3550
      mov [Rectangle.y],ebx
3551
      mov [Rectangle.width],16
3552
      mov [Rectangle.height],ecx
3553
      mov [Rectangle.color],edx
3554
      call RectangleContour
3555
3556
 
3557
      mov eax,[Scroller.color1]
3558
      mov ebx,dword 0xffffff
3559
      and eax,0xffffff
3560
      xor esi,esi
3561
      xor edi,edi
3562
      mov ecx,[x]
3563
      mov edx,[y]
3564
      add edx,1
3565
      mov si,(16-1)
3566
      mov edi,[length2]
3567
      sub edi,2
3568
      call rectangle_gradient_right
3569
3570
 
3571
      xor eax,eax
3572
      mov eax,[AveregeColor]
3573
      mov [Pixel.color],eax
3574
3575
 
3576
      mov ebx,[y]
3577
      mov [Pixel.x],eax
3578
      mov [Pixel.y],ebx
3579
      call DrawPixel
3580
3581
 
3582
      add eax,16
3583
      mov [Pixel.x],eax
3584
      call DrawPixel
3585
3586
 
3587
      mov ebx,[y]
3588
      add ebx,[length2]
3589
      mov [Pixel.x],eax
3590
      mov [Pixel.y],ebx
3591
      call DrawPixel
3592
3593
 
3594
      mov ebx,[y]
3595
      add eax,16
3596
      add ebx,[length2]
3597
      mov [Pixel.x],eax
3598
      mov [Pixel.y],ebx
3599
      call DrawPixel
3600
3601
 
3602
      mov ebx,[y]
3603
      add eax,1
3604
      add ebx,1
3605
      mov [Pixel.x],eax
3606
      mov [Pixel.y],ebx
3607
      call DrawPixel
3608
3609
 
3610
      mov ebx,[y]
3611
      add eax,15
3612
      add ebx,1
3613
      mov [Pixel.x],eax
3614
      mov [Pixel.y],ebx
3615
      call DrawPixel
3616
3617
 
3618
      mov ebx,[y]
3619
      add eax,1
3620
      add ebx,[length2]
3621
      sub ebx,1
3622
      mov [Pixel.x],eax
3623
      mov [Pixel.y],ebx
3624
      call DrawPixel
3625
3626
 
3627
      mov ebx,[y]
3628
      add eax,16
3629
      add ebx,[length2]
3630
      sub eax,1
3631
      sub ebx,1
3632
      mov [Pixel.x],eax
3633
      mov [Pixel.y],ebx
3634
      call DrawPixel
3635
3636
 
3637
      jl no_draw_reliev_vertical_3D
3638
3639
 
3640
       mov eax,[length2]
3641
       shr eax,1
3642
       add eax,[y]
3643
       add ebx,5
3644
       sub eax,3
3645
3646
 
3647
       mov [Line.x2],ebx
3648
       mov [Line.y1],eax
3649
       mov [Line.y2],eax
3650
       mov [Line.color],0xffffff
3651
       add [Line.x2],6
3652
3653
 
3654
       next_light_line_draw_r_vertical_3D:
3655
3656
 
3657
         add [Line.y1],2
3658
         add [Line.y2],2
3659
3660
 
3661
       jnz  next_light_line_draw_r_vertical_3D
3662
3663
 
3664
       mov eax,[length2]
3665
       shr eax,1
3666
       add eax,[y]
3667
       add ebx,6
3668
       sub eax,2
3669
3670
 
3671
       mov [Line.x1],ebx
3672
       mov [Line.x2],ebx
3673
       mov [Line.y1],eax
3674
       mov [Line.y2],eax
3675
       mov [Line.color],ecx
3676
       add [Line.x2],6
3677
3678
 
3679
       next_dark_line_draw_r_vertical_3D:
3680
3681
 
3682
         add [Line.y1],2
3683
         add [Line.y2],2
3684
3685
 
3686
       jnz  next_dark_line_draw_r_vertical_3D
3687
3688
 
3689
3690
 
3691
 
3692
      mov ax,[Scroller.y]
3693
      mov ebx,[y]
3694
      add eax,17
3695
3696
 
3697
      jz no_draw_up_rectangle_vertical_3D
3698
      js no_draw_up_rectangle_vertical_3D
3699
3700
 
3701
3702
 
3703
3704
 
3705
      mov ebx,0xffffff
3706
      xor edx,edx
3707
      mov ecx,[x]
3708
      mov dx,[Scroller.y]
3709
      add edx,17
3710
      sub ecx,1
3711
      mov esi,17
3712
      call rectangle_gradient_right
3713
      no_draw_up_rectangle_vertical_3D:
3714
3715
 
3716
      mov ax,[Scroller.y]
3717
      add ax,[Scroller.length]
3718
      mov ebx,[y]
3719
      add ebx,[length2]
3720
      sub eax,17
3721
3722
 
3723
      jz no_draw_down_rectangle_vertical_3D
3724
      js no_draw_down_rectangle_vertical_3D
3725
3726
 
3727
      mov edi,eax
3728
3729
 
3730
      mov ebx,0xffffff
3731
      mov ecx,[x]
3732
      xor edx,edx
3733
      mov edx,[y]
3734
      add edx,[length2]
3735
      add edx,1
3736
      sub ecx,1
3737
      mov esi,17
3738
      call rectangle_gradient_right
3739
3740
 
3741
3742
 
3743
3744
 
3745
;ebx - y
3746
;ecx - size y in pixels
3747
DrawHorizontal3DScrollBar:
3748
3749
 
3750
      mov [y],ebx
3751
      mov [length2],ecx
3752
3753
 
3754
      mov ebx,[y]
3755
      mov ecx,[length2]
3756
      mov edx,[pointer]
3757
      and edx,0xffffff
3758
      mov [Rectangle.x],eax
3759
      mov [Rectangle.y],ebx
3760
      mov [Rectangle.width],ecx
3761
      mov [Rectangle.height],16
3762
      mov [Rectangle.color],edx
3763
      call RectangleContour
3764
3765
 
3766
      mov eax,[Scroller.color1]
3767
      mov ebx,dword 0xffffff
3768
      and eax,0xffffff
3769
      xor esi,esi
3770
      xor edi,edi
3771
      mov ecx,[x]
3772
      mov edx,[y]
3773
      add ecx,1
3774
      mov edi,(16-1)
3775
      mov esi,[length2]
3776
      sub esi,2
3777
      call rectangle_gradient_up
3778
3779
 
3780
      xor eax,eax
3781
      mov eax,[AveregeColor]
3782
      mov [Pixel.color],eax
3783
3784
 
3785
      mov ebx,[y]
3786
      mov [Pixel.x],eax
3787
      mov [Pixel.y],ebx
3788
      call DrawPixel
3789
3790
 
3791
      add ebx,16
3792
      mov [Pixel.y],ebx
3793
      call DrawPixel
3794
3795
 
3796
      mov ebx,[y]
3797
      add eax,[length2]
3798
      mov [Pixel.x],eax
3799
      mov [Pixel.y],ebx
3800
      call DrawPixel
3801
3802
 
3803
      mov ebx,[y]
3804
      add ebx,16
3805
      add eax,[length2]
3806
      mov [Pixel.x],eax
3807
      mov [Pixel.y],ebx
3808
      call DrawPixel
3809
3810
 
3811
      mov ebx,[y]
3812
      add eax,1
3813
      add ebx,1
3814
      mov [Pixel.x],eax
3815
      mov [Pixel.y],ebx
3816
      call DrawPixel
3817
3818
 
3819
      mov ebx,[y]
3820
      add ebx,15
3821
      add eax,1
3822
      mov [Pixel.x],eax
3823
      mov [Pixel.y],ebx
3824
      call DrawPixel
3825
3826
 
3827
      mov ebx,[y]
3828
      add ebx,1
3829
      add eax,[length2]
3830
      sub eax,1
3831
      mov [Pixel.x],eax
3832
      mov [Pixel.y],ebx
3833
      call DrawPixel
3834
3835
 
3836
      mov ebx,[y]
3837
      add ebx,15
3838
      add eax,[length2]
3839
      sub eax,1
3840
      mov [Pixel.x],eax
3841
      mov [Pixel.y],ebx
3842
      call DrawPixel
3843
3844
 
3845
      jl no_draw_reliev_horizontal_3D
3846
3847
 
3848
       mov eax,[length2]
3849
       shr eax,1
3850
       add eax,[x]
3851
       add ebx,5
3852
       sub eax,3
3853
3854
 
3855
       mov [Line.x2],eax
3856
       mov [Line.y1],ebx
3857
       mov [Line.y2],ebx
3858
       mov [Line.color],0xffffff
3859
       add [Line.y2],6
3860
3861
 
3862
       next_light_line_draw_r_horizontal_3D:
3863
3864
 
3865
         add [Line.x1],2
3866
         add [Line.x2],2
3867
3868
 
3869
       jnz  next_light_line_draw_r_horizontal_3D
3870
3871
 
3872
       mov eax,[length2]
3873
       shr eax,1
3874
       add eax,[x]
3875
       add ebx,6
3876
       sub eax,2
3877
3878
 
3879
       mov [Line.x1],eax
3880
       mov [Line.x2],eax
3881
       mov [Line.y1],ebx
3882
       mov [Line.y2],ebx
3883
       mov [Line.color],ecx
3884
       add [Line.y2],6
3885
3886
 
3887
       next_dark_line_draw_r_horizontal_3D:
3888
3889
 
3890
         add [Line.x1],2
3891
         add [Line.x2],2
3892
3893
 
3894
       jnz  next_dark_line_draw_r_horizontal_3D
3895
3896
 
3897
3898
 
3899
 
3900
      mov ax,[Scroller.x]
3901
      mov ebx,[x]
3902
      add eax,17
3903
3904
 
3905
      jz no_draw_up_rectangle_horizontal_3D
3906
      js no_draw_up_rectangle_horizontal_3D
3907
3908
 
3909
3910
 
3911
3912
 
3913
      mov ebx,0xffffff
3914
      xor ecx,ecx
3915
      mov edx,[y]
3916
      mov cx,[Scroller.x]
3917
      add ecx,17
3918
      sub edx,1
3919
      mov edi,17
3920
      call rectangle_gradient_up
3921
      no_draw_up_rectangle_horizontal_3D:
3922
3923
 
3924
      mov ax,[Scroller.x]
3925
      add ax,[Scroller.length]
3926
      mov ebx,[x]
3927
      add ebx,[length2]
3928
      sub eax,17
3929
3930
 
3931
      jz no_draw_down_rectangle_horizontal_3D
3932
      js no_draw_down_rectangle_horizontal_3D
3933
3934
 
3935
      mov esi,eax
3936
3937
 
3938
      mov ebx,0xffffff
3939
      mov edx,[y]
3940
      xor ecx,ecx
3941
      mov ecx,[x]
3942
      add ecx,[length2]
3943
      add ecx,1
3944
      sub edx,1
3945
      mov edi,17
3946
      call rectangle_gradient_up
3947
3948
 
3949
3950
 
3951
3952
 
3953
;ebx - y
3954
;ecx - size y in pixels
3955
DrawVertical2DScrollBar:
3956
3957
 
3958
      mov [y],ebx
3959
      mov [length2],ecx
3960
3961
 
3962
      mov edx,[Color]
3963
      mov ebx,[x]
3964
      mov ecx,[y]
3965
      shl ebx,16
3966
      shl ecx,16
3967
      add ebx,16
3968
      add ecx,[length2]
3969
      and edx,0xffffff
3970
      mcall
3971
3972
 
3973
      mov eax,[x]
3974
      mov ebx,[y]
3975
      mov [Line.x1],eax
3976
      mov [Line.x2],eax
3977
      mov [Line.y1],ebx
3978
      mov [Line.y2],ebx
3979
      add [Line.x2],15
3980
      mov ecx,[colors_table1+15*3]
3981
      and ecx,0xffffff
3982
      mov [Line.color],ecx
3983
      call DrawLine
3984
3985
 
3986
      mov eax,[x]
3987
      mov ebx,[y]
3988
      mov ecx,[length2]
3989
      mov [Line.x1],eax
3990
      mov [Line.x2],eax
3991
      mov [Line.y1],ebx
3992
      add [Line.y2],ecx
3993
      call DrawLine
3994
3995
 
3996
      mov eax,[x]
3997
      mov ebx,[y]
3998
      add eax,15
3999
      mov ecx,[length2]
4000
      sub ecx,1
4001
      mov [Line.x1],eax
4002
      mov [Line.x2],eax
4003
      mov [Line.y1],ebx
4004
      mov [Line.y2],ebx
4005
      add [Line.y2],ecx
4006
      mov ecx,[colors_table2+8*3];[pointer]
4007
      and ecx,0xffffff
4008
      mov [Line.color],ecx
4009
      call DrawLine
4010
4011
 
4012
      mov eax,[x]
4013
      mov ebx,[y]
4014
      mov ecx,[length2]
4015
      add ebx,ecx
4016
      sub ebx,1
4017
      mov [Line.x1],eax
4018
      mov [Line.x2],eax
4019
      mov [Line.y1],ebx
4020
      mov [Line.y2],ebx
4021
      add [Line.x2],15
4022
      call DrawLine
4023
4024
 
4025
 
4026
      mov ax,[Scroller.y]
4027
      mov ebx,[y]
4028
      add eax,16
4029
4030
 
4031
      jz no_draw_up_rectangle_vertical_2D
4032
      js no_draw_up_rectangle_vertical_2D
4033
4034
 
4035
4036
 
4037
      mov eax,13
4038
      mov edx,0xe4e4e4
4039
      mov ebx,[x]
4040
      mov cx,[Scroller.y]
4041
      add ecx,16
4042
      shl ebx,16
4043
      shl ecx,16
4044
      add ebx,16
4045
      add ecx,edi
4046
      mcall
4047
4048
 
4049
4050
 
4051
      mov ax,[Scroller.y]
4052
      add ax,[Scroller.length]
4053
      mov ebx,[y]
4054
      add ebx,[length2]
4055
      sub eax,16
4056
4057
 
4058
      jz no_draw_down_rectangle_vertical_2D
4059
      js no_draw_down_rectangle_vertical_2D
4060
4061
 
4062
      mov edi,eax
4063
4064
 
4065
      mov eax,13
4066
      mov edx,0xe4e4e4
4067
      mov ebx,[x]
4068
      mov ecx,[y]
4069
      add ecx,[length2]
4070
      shl ebx,16
4071
      shl ecx,16
4072
      add ebx,16
4073
      add ecx,edi
4074
      mcall
4075
4076
 
4077
4078
 
4079
4080
 
4081
;ebx - y
4082
;ecx - size x in pixels
4083
DrawHorizontal2DScrollBar:
4084
4085
 
4086
      mov [y],ebx
4087
      mov [length2],ecx
4088
4089
 
4090
      mov edx,[Color]
4091
      mov ebx,[x]
4092
      mov ecx,[y]
4093
      shl ebx,16
4094
      shl ecx,16
4095
      add ebx,[length2]
4096
      add ecx,16
4097
      and edx,0xffffff
4098
      mcall
4099
4100
 
4101
      mov eax,[x]
4102
      mov ebx,[y]
4103
      mov ecx,[length2]
4104
      mov [Line.x1],eax
4105
      mov [Line.x2],eax
4106
      mov [Line.y1],ebx
4107
      mov [Line.y2],ebx
4108
      sub ecx,1
4109
      add [Line.x2],ecx
4110
      mov ecx,[colors_table1+15*3]
4111
      and ecx,0xffffff
4112
      mov [Line.color],ecx
4113
      call DrawLine
4114
4115
 
4116
      mov eax,[x]
4117
      mov ebx,[y]
4118
      mov [Line.x1],eax
4119
      mov [Line.x2],eax
4120
      mov [Line.y1],ebx
4121
      mov [Line.y2],ebx
4122
      add [Line.y2],15
4123
      call DrawLine
4124
4125
 
4126
      mov eax,[x]
4127
      mov ebx,[y]
4128
      mov ecx,[length2]
4129
      sub ecx,1
4130
      add eax,ecx
4131
      mov [Line.x1],eax
4132
      mov [Line.x2],eax
4133
      mov [Line.y1],ebx
4134
      mov [Line.y2],ebx
4135
      add [Line.y2],15
4136
      mov ecx,[colors_table2+8*3];[pointer]
4137
      and ecx,0xffffff
4138
      mov [Line.color],ecx
4139
      call DrawLine
4140
4141
 
4142
      mov eax,[x]
4143
      mov ebx,[y]
4144
      mov ecx,[length2]
4145
      sub ecx,1
4146
      add ebx,15
4147
      mov [Line.x1],eax
4148
      mov [Line.x2],eax
4149
      mov [Line.y1],ebx
4150
      mov [Line.y2],ebx
4151
      add [Line.x2],ecx
4152
      call DrawLine
4153
4154
 
4155
 
4156
      mov ax,[Scroller.x]
4157
      mov ebx,[x]
4158
      add eax,16
4159
4160
 
4161
      jz no_draw_up_rectangle_horizontal_2D
4162
      js no_draw_up_rectangle_horizontal_2D
4163
4164
 
4165
4166
 
4167
      xor ebx,ebx
4168
      mov eax,13
4169
      mov edx,0xe4e4e4
4170
      mov bx,[Scroller.x]
4171
      mov cx,[Scroller.y]
4172
      add ebx,16
4173
      shl ebx,16
4174
      shl ecx,16
4175
      add ecx,16
4176
      add ebx,edi
4177
      mcall
4178
4179
 
4180
4181
 
4182
      mov ax,[Scroller.x]
4183
      add ax,[Scroller.length]
4184
      mov ebx,[x]
4185
      add ebx,[length2]
4186
      sub eax,16
4187
4188
 
4189
      jz no_draw_down_rectangle_horizontal_2D
4190
      js no_draw_down_rectangle_horizontal_2D
4191
4192
 
4193
      mov edi,eax
4194
4195
 
4196
      mov eax,13
4197
      mov edx,0xe4e4e4
4198
      mov ebx,[x]
4199
      mov ecx,[y]
4200
      add ebx,[length2]
4201
      shl ebx,16
4202
      shl ecx,16
4203
      add ebx,edi
4204
      add ecx,16
4205
      mcall
4206
4207
 
4208
4209
 
4210