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
 
675 andrew_pro 2
zk_redraw_all_Bookmark_off   = 11011111b
3
zk_init_Bookmark             = 10000000b
648 andrew_pro 4
zk_init_Bookmark_off         = 01111111b
5
zk_child_button_type         = 10001001b
6
7
 
8
;******************craete Bookmark********************
9
;****************************************************
10
;IN
11
;pointer to parend
12
;pointer to Bookmark's structure
13
;OUT
14
;pointer to initialized Bookmark's structure
15
align 4
16
17
 
18
19
 
706 andrew_pro 20
      push ecx
21
      push edx
22
      push esi
23
      push edi
24
      push ebp
25
648 andrew_pro 26
 
706 andrew_pro 27
      mov eax,[esp+24+8]
28
29
 
648 andrew_pro 30
      mov [ParendForBookmark],ebx
31
32
 
33
34
 
35
36
 
37
      mov ecx,[ebx+30]
38
      add ebx,30+4
39
      xor edx,edx
40
      ;calculate total number of Bookmarks
41
      next_string_add:
42
43
 
44
        add ebx,4
45
46
 
47
      jnz next_string_add
48
      ;edx=chislo zakladok
49
      mov [ChisloZakladok],edx
50
51
 
52
      mov edi,ebx
53
54
 
55
      next_Bookmark_calculate:
56
57
 
58
        mov ecx,[ebx+4]
59
        shl ecx,3
60
        add esi,ecx
61
62
 
63
        add ebx,ecx
64
65
 
66
      jnz next_Bookmark_calculate
67
68
 
69
      sub ebx,eax
70
      mov eax,ebx
71
      add eax,control_header_size+(44*4)
72
73
 
74
      push ebx
75
      push edi
76
77
 
78
      call craete_control
79
80
 
81
      pop ebx
82
83
 
84
 
85
      mov [eax],dword Bookmark_
86
87
 
88
89
 
90
      mov esi,[PointerToStructureForBookmark]
91
      mov edi,eax
92
      add edi,control_header_size
93
      rep movsb
94
95
 
96
97
 
98
99
 
100
101
 
102
103
 
104
      mov ebx,[PointerToStructureForBookmark]
105
      mov ecx,[ebx+2]   ;x
106
      mov edx,[ebx+6]   ;y
107
      mov esi,[ebx+10]  ;size x
108
      mov edi,[ebx+14]  ;size y
109
      add ecx,border_width
110
      add edx,[skin_height]
111
      ;mov [ebx+2],ecx
112
      ;mov [ebx+6],edx
113
      ;copy information to control
114
      mov [eax+24],ecx
115
      mov [eax+28],edx
116
      mov [eax+32],esi
117
      mov [eax+36],edi
118
119
 
120
      mov ebx,eax
121
      add ebx,control_header_size
122
      mov edx,[ebx+30]
123
      mov ecx,edx
124
      mov esi,[ChisloZakladok]
125
      mov [Bookmark.counter1],esi
126
      ;sizex*17
127
      shl ecx,4
128
      add ecx,edx
129
      mov [Bookmark.sizey],ecx
130
131
 
132
      shl ecx,2
133
134
 
135
      add ebx,ecx       ;pointer to information for first Bookmark
136
137
 
138
139
 
140
         mov ecx,[ebx+4]
141
         mov [Bookmark.counter2],ecx
142
         add ebx,8
143
144
 
145
         jz no_controls_for_current_Bookmark
146
147
 
148
149
 
150
           cmp [ebx],dword 1
151
           jnz no_child_button_for_Bookmark
152
153
 
154
             mov edi,[ebx+4]  ;information for child
155
156
 
157
             push ebx
158
159
 
160
              push esi
161
162
 
163
164
 
165
166
 
167
             pop eax
168
169
 
170
              mov [ebx+4],esi
171
172
 
173
              sub edi,border_width
174
              add [esi+24],edi
175
              mov edi,[eax+28]
176
              sub edi,[skin_height]
177
              add edi,[Bookmark.sizey]
178
              add [esi+28],edi
179
            jmp exit_child_for_Bookmark
180
           no_child_button_for_Bookmark:
181
182
 
183
           cmp [ebx],dword 2
184
           jnz no_child_scroler_for_Bookmark
185
186
 
187
             mov edi,[ebx+4]  ;information for child
188
189
 
190
             push ebx
191
192
 
193
              push esi
194
195
 
196
197
 
198
199
 
200
             pop eax
201
202
 
203
204
 
205
             sub edi,border_width
206
             add [esi+24],edi
207
             mov edi,[eax+28]
208
             sub edi,[skin_height]
209
             add edi,[Bookmark.sizey]
210
             add [esi+28],edi
211
            jmp exit_child_for_Bookmark
212
           no_child_scroler_for_Bookmark:
213
214
 
215
 
216
           cmp [ebx],dword 4
217
           jnz no_child_image_for_Bookmark
218
219
 
220
             mov edi,[ebx+4]  ;information for child
221
222
 
223
             push ebx
224
225
 
226
              push esi
227
228
 
229
230
 
231
232
 
233
             pop eax
234
235
 
236
237
 
238
             sub edi,border_width
239
             add [esi+24],edi
240
             mov edi,[eax+28]
241
             sub edi,[skin_height]
242
             add edi,[Bookmark.sizey]
243
             add [esi+28],edi
244
            jmp exit_child_for_Bookmark
245
246
 
247
248
 
249
           cmp [ebx],dword 5
250
           jnz no_child_text_for_Bookmark
251
252
 
253
             mov edi,[ebx+4]  ;information for child
254
255
 
256
             push ebx
257
258
 
259
              push esi
260
261
 
262
263
 
264
265
 
266
             pop eax
267
268
 
269
270
 
271
             sub edi,border_width
272
             add [esi+24],edi
273
             mov edi,[eax+28]
274
             sub edi,[skin_height]
275
             add edi,[Bookmark.sizey]
276
             add [esi+28],edi
277
            jmp exit_child_for_Bookmark
278
279
 
280
281
 
282
           cmp [ebx],dword 6
283
           jnz no_child_number_for_Bookmark
284
285
 
286
             mov edi,[ebx+4]  ;information for child
287
288
 
289
             push ebx
290
291
 
292
              push esi
293
294
 
295
296
 
297
298
 
299
             pop eax
300
301
 
302
303
 
304
             sub edi,border_width
305
             add [esi+24],edi
306
             mov edi,[eax+28]
307
             sub edi,[skin_height]
308
             add edi,[Bookmark.sizey]
309
             add [esi+28],edi
310
            jmp exit_child_for_Bookmark
311
312
 
313
314
 
315
           cmp [ebx],dword 7
316
           jnz no_child_check_box_for_Bookmark
317
318
 
319
             mov edi,[ebx+4]  ;information for child
320
321
 
322
             push ebx
323
324
 
325
              push esi
326
327
 
328
329
 
330
331
 
332
             pop eax
333
334
 
335
336
 
337
             sub edi,border_width
338
             add [esi+24],edi
339
             mov edi,[eax+28]
340
             sub edi,[skin_height]
341
             add edi,[Bookmark.sizey]
342
             add [esi+28],edi
343
            jmp exit_child_for_Bookmark
344
345
 
346
347
 
348
           cmp [ebx],dword 8
349
           jnz no_child_edit_box_for_Bookmark
350
351
 
352
             mov edi,[ebx+4]  ;information for child
353
354
 
355
             push ebx
356
357
 
358
              push esi
359
360
 
361
362
 
363
364
 
365
             pop eax
366
367
 
368
369
 
370
             sub edi,border_width
371
             add [esi+24],edi
372
             mov edi,[eax+28]
373
             sub edi,[skin_height]
374
             add edi,[Bookmark.sizey]
375
             add [esi+28],edi
376
            jmp exit_child_for_Bookmark
377
378
 
379
380
 
381
           cmp [ebx],dword 9
382
           jnz no_child_progres_bar_for_Bookmark
383
384
 
385
             mov edi,[ebx+4]  ;information for child
386
387
 
388
             push ebx
389
390
 
391
              push esi
392
393
 
394
395
 
396
397
 
398
             pop eax
399
400
 
401
402
 
403
             sub edi,border_width
404
             add [esi+24],edi
405
             mov edi,[eax+28]
406
             sub edi,[skin_height]
407
             add edi,[Bookmark.sizey]
408
             add [esi+28],edi
409
            jmp exit_child_for_Bookmark
410
411
 
412
413
 
414
415
 
416
417
 
418
         jnz next_child_for_Bookmark
419
420
 
421
422
 
423
      jnz next_Bookmark_craete_childs
424
425
 
706 andrew_pro 426
      pop edi
427
      pop esi
428
      pop edx
429
      pop ecx
430
      pop ebx
431
432
 
648 andrew_pro 433
434
 
435
;******************Draw Bookmark*********************
436
;****************************************************
437
;IN
438
;pointer to control of Bookmark
439
;message
440
;OUT
441
;not returned value
442
align 4
443
444
 
445
446
 
447
      mov eax,[esp+8]
448
449
 
450
      mov esi,[esp+4]
451
      mov [PointerForBookmark],esi
452
453
 
454
       mov ebx,[esi+control_header_size+22]  ;size of data's structure
455
       mov edi,dword Bookmark
456
       mov ecx,(43*4)+2+4
457
       add esi,control_header_size
458
       add esi,ebx
459
       rep movsb
460
      pop esi
461
462
 
463
      jne no_redraw_all_Bookmark
464
465
 
466
      no_redraw_all_Bookmark:
467
468
 
469
      jne no_mouse_Bookmark
470
471
 
472
        mov edi,[eax+8]
473
        mov ecx,[eax+12]
474
        mov [Bookmark.MouseX],esi
475
        mov [Bookmark.MouseY],edi
476
        mov [ButtonsOfMouse],ecx
477
      no_mouse_Bookmark:
478
479
 
480
      mov esi,eax
481
      mov edi,dword Bookmark.MessageForChildButton
482
      mov ecx,4
483
      rep movsd
484
485
 
486
487
 
488
 
489
      mov eax,[PointerForBookmark]
490
      mov ebx,[eax+24]           ;x
491
      mov ecx,[eax+28]           ;y
492
      mov edx,[eax+32]           ;size x
493
      mov esi,[eax+36]           ;size y
494
      mov edi,[eax+control_header_size+18]        ;color1
495
496
 
497
      mov [Bookmark.x],ebx
498
      mov [Bookmark.y],ecx
499
      mov [Bookmark.sizex],edx
500
      mov [Bookmark.sizey],esi
501
      mov [Bookmark.color1],edi
502
503
 
504
      add ebx,control_header_size
505
      xor eax,eax
506
      mov al,[ebx]
507
      and al,zk_init_Bookmark
508
      test al,al
509
      jz  no_redraw_Bookmark
510
511
 
512
513
 
514
515
 
516
      mov ebx,0xffffff
517
      mov ecx,20
518
      mov edx,dword colors_table1
519
      call gradient
520
521
 
522
      mov ebx,[Bookmark.color1]
523
      mov ecx,20
524
      mov edx,dword colors_table2
525
      call gradient
526
527
 
528
      mov eax,50*4
529
      call malloc
530
      mov [Bookmark.ChildButtonsForBookmark],eax
531
532
 
533
      add ebx,control_header_size
534
      mov ecx,[ebx+30]
535
      mov edx,ecx
536
      add ebx,30+4
537
      shl edx,2
538
      mov esi,ebx
539
      add esi,edx ;esi= pointer to information for first child
540
      mov [Bookmark.PointerToTextForBookmark],esi
541
542
 
543
      mov [Bookmark.BookmarkY],edi
544
545
 
546
      sub edi,3
547
      mov [Bookmark.FullBookmarkSizeX],edi
548
      mov [Bookmark.ChisloStrokeZakladok],ecx
549
550
 
551
552
 
553
554
 
555
556
 
557
        add edi,2
558
        mov [Bookmark.BookmarkX],edi
559
        mov [Bookmark.WorkPlace_windowx],edi
560
561
 
562
563
 
564
        mov edi,edx
565
        mov [Bookmark.NumberBookmarksInEndString],edx
566
567
 
568
        mov eax,[Bookmark.ChildButtonsForBookmark]
569
        add eax,[Bookmark.CounterChildButtons]
570
        mov [Bookmark.PointerToEndBookmarks],eax
571
        pop eax
572
573
 
574
        ;size=(full_size/number_zakladok)
575
        push eax
576
        push edx
577
578
 
579
        cdq
580
        idiv edi
581
582
 
583
        mov [Bookmark.WorkPlace_windowsizex],eax
584
585
 
586
        mov edx,[Bookmark.FullBookmarkSizeX]
587
        sub edx,eax
588
        mov [Bookmark.DefectSizeX],edx
589
590
 
591
        pop eax
592
593
 
594
595
 
596
          jne no_disactivate_defect_size_x
597
598
 
599
          add [Bookmark.BookmarkSizeX],esi
600
          no_disactivate_defect_size_x:
601
602
 
603
 
604
          ;load info to structure
605
          mov esi,[PointerForBookmark]
606
          add esi,control_header_size+26
607
          mov edi,[esi]
608
          mov [ChildButton.type],zk_child_button_type
609
          mov [ChildButton.textcolor],edi
610
611
 
612
          mov edi,[Bookmark.BookmarkY]
613
          sub esi,border_width
614
          sub edi,[skin_height]
615
          mov [ChildButton.x],si
616
          mov [ChildButton.y],di
617
          mov esi,[Bookmark.BookmarkSizeX]
618
          mov [ChildButton.width],si
619
          mov [ChildButton.height],word 16
620
621
 
622
          mov edi,[esi]
623
          mov [ChildButton.text],edi
624
625
 
626
          mov edi,[Bookmark.ChildButtonsForBookmark]
627
          add edi,[Bookmark.CounterChildButtons]
628
          add edi,4
629
          mov [edi],esi
630
631
 
632
          ;get total number of controls for current Bookmark
633
          mov edi,[esi+4]
634
          shl edi,3
635
          add esi,edi
636
          add esi,8
637
          mov [Bookmark.PointerToTextForBookmark],esi
638
639
 
640
641
 
642
           push [PointerForBookmark]
643
           call craete_button
644
645
 
646
           mov esi,eax
647
           mov edi,[Bookmark.ChildButtonsForBookmark]
648
           add edi,[Bookmark.CounterChildButtons]
649
           mov [edi],esi
650
651
 
652
653
 
654
           mov edi,[Bookmark.ChildButtonsForBookmark]
655
           add edi,[Bookmark.CounterChildButtons]
656
           mov esi,[edi]
657
658
 
659
           push Bookmark.MessageForChildButton
660
           push esi
661
           call button
662
663
 
664
          popad
665
666
 
667
          add [Bookmark.BookmarkX],esi
668
669
 
670
        jnz  next_child_button_craete_for_string
671
672
 
673
        add [Bookmark.BookmarkY],17  ;Bookmark size y
674
675
 
676
      jnz next_string_of_Bookmarks
677
678
 
679
      mov eax,[Bookmark.CounterChildButtons]
680
      shr eax,3
681
      mov [Bookmark.ChisloZakladok],eax
682
683
 
684
      mov ebx,[Bookmark.ChisloStrokeZakladok]  ;chislo strok
685
      mov ecx,[Bookmark.x]   ;x for Bookmark work place
686
      shl ebx,4
687
      mov edx,ebx
688
      add ebx,[Bookmark.y]   ;y for Bookmark work place
689
      add ebx,[Bookmark.ChisloStrokeZakladok]
690
      mov esi,[Bookmark.sizey]  ;size y
691
      mov edi,[Bookmark.sizex]  ;size x
692
      sub esi,edx       ;size x Bookmark work place
693
      sub esi,1
694
695
 
696
      mov [Bookmark.WorkPlace_y],ebx
697
      mov [Bookmark.WorkPlace_sizex],edi
698
      mov [Bookmark.WorkPlace_sizey],esi
699
700
 
701
702
 
703
      mov [Bookmark.NumberActiveControl],edi
704
705
 
706
707
 
708
      no_redraw_Bookmark:
709
710
 
711
 
712
 
713
      mov eax,[Bookmark.x]
714
      mov ebx,[Bookmark.y]
715
      mov ecx,[Bookmark.sizex]
716
      mov edx,[Bookmark.ChisloStrokeZakladok]
717
      shl edx,4
718
      mov esi,[Bookmark.MouseX]
719
      mov edi,[Bookmark.MouseY]
720
721
 
722
723
 
724
      jne no_crosing_child_buttons_Bookmark
725
726
 
727
        mov ecx,[eax+control_header_size+30]           ;chislo zakladok in stroke
728
        add eax,control_header_size+30+4
729
730
 
731
        mov [Bookmark.BookmarkFlag],0
732
733
 
734
735
 
736
           mov [Bookmark.NumberBookmarksInActiveString],edx
737
738
 
739
           add esi,[Bookmark.CounterChildButtons]
740
           mov [Bookmark.PointerToActiveBookmarks],esi
741
742
 
743
744
 
745
746
 
747
               add eax,[Bookmark.CounterChildButtons]
748
               mov ebx,[eax]
749
               mov [Bookmark.ChildControlForBookmark],ebx
750
751
 
752
               push ebx
753
               call button
754
755
 
756
             popad
757
758
 
759
               xor ebx,ebx
760
               mov bl,byte[esi+control_header_size+1]
761
               and bl,1b
762
               cmp bl,1b
763
               jne no_crossing_Bookmark___
764
765
 
766
                jne no_crossing_Bookmark___
767
768
 
769
                jmp exit_check_crossing_with_Bookmark
770
771
 
772
773
 
774
           jnz next_Bookmark_in_string_check
775
776
 
777
778
 
779
        jnz next_stroke_Bookmark_check_crossing
780
781
 
782
783
 
784
 
785
        jne no_crosing_with_Bookmarks
786
787
 
788
789
 
790
          mov ebx,[eax]
791
          mov ecx,[ebx+28]      ;y for string of end Bookmarks
792
793
 
794
          mov esi,[edx]
795
          mov edi,[esi+28]      ;y for string of active Bookmarks
796
797
 
798
          je no_change_Y_coordinats_in_Bookmarks
799
800
 
801
             mov [y],edi        ;save y coordinate of active Bookmark
802
803
 
804
             mov ecx,[Bookmark.NumberBookmarksInActiveString]
805
             ;y_active_string=y_end_string
806
             next_Bookmark_change_y_active:
807
808
 
809
                mov ebx,[eax]   ;ebx = pointer to Bookmark
810
                mov [ebx+28],edx
811
812
 
813
814
 
815
             jnz next_Bookmark_change_y_active
816
817
 
818
            mov ecx,[Bookmark.NumberBookmarksInEndString]
819
            ;y_end_string=y_active_string
820
            next_Bookmark_change_y_end:
821
822
 
823
                mov ebx,[eax]
824
                mov [ebx+28],edx
825
826
 
827
828
 
829
            jnz next_Bookmark_change_y_end
830
831
 
832
          mov ebx,[Bookmark.PointerToEndBookmarks]
833
          mov ecx,[Bookmark.NumberBookmarksInActiveString]
834
          mov edx,[Bookmark.NumberBookmarksInEndString]
835
836
 
837
          mov edi,ecx
838
839
 
840
          mov [Bookmark.NumberBookmarksInActiveString],edx
841
842
 
843
          mov [Bookmark.NumberBookmarksInEndString],edi
844
845
 
846
847
 
848
          mov ecx,[Bookmark.ChisloZakladok]
849
          mov [Bookmark.MessageForChildButton],dword 1
850
          next_Bookmark_redraw:
851
852
 
853
             mov edx,[ebx+24] ;x
854
             mov esi,[ebx+28] ;y
855
             mov edi,[ebx+32] ;size x
856
             mov [Bookmark.BookmarkX],edx
857
             mov [Bookmark.BookmarkY],esi
858
             mov [Bookmark.BookmarkSizeX],edi
859
             mov [Bookmark.ControlAddres],ebx
860
861
 
862
863
 
864
865
 
866
                push Bookmark.MessageForChildButton
867
                push [Bookmark.ControlAddres]
868
                call button
869
870
 
871
872
 
873
          dec ecx
874
          jnz next_Bookmark_redraw
875
876
 
877
 
878
          mov ebx,[eax+24]    ;x coordinat of Bookmark
879
          mov ecx,[eax+32]    ;size x of Bookmark
880
          mov [Bookmark.WorkPlace_windowx],ebx
881
          mov [Bookmark.WorkPlace_windowsizex],ecx
882
883
 
884
          mov ebx,[Bookmark.ChisloStrokeZakladok]  ;chislo strok
885
          mov ecx,[Bookmark.x]   ;x for Bookmark work place
886
          shl ebx,4
887
          mov edx,ebx
888
          add ebx,[Bookmark.y]   ;y for Bookmark work place
889
          add ebx,[Bookmark.ChisloStrokeZakladok]
890
          mov esi,[Bookmark.sizey]  ;size y
891
          mov edi,[Bookmark.sizex]  ;size x
892
          sub esi,edx       ;size x Bookmark work place
893
          sub esi,1
894
895
 
896
          mov [Bookmark.WorkPlace_y],ebx
897
          mov [Bookmark.WorkPlace_sizex],edi
898
          mov [Bookmark.WorkPlace_sizey],esi
899
900
 
901
902
 
903
          shr edi,3
904
          mov [Bookmark.NumberActiveControl],edi
905
906
 
907
908
 
909
        mcall   5,7
910
911
 
912
913
 
914
      no_crosing_child_buttons_Bookmark:
915
916
 
917
 
918
       mov ebx,[PointerForBookmark]
919
       add ebx,control_header_size
920
       xor eax,eax
921
       mov al,[ebx]
922
       and al,zk_redraw_all_Bookmark
923
       test al,al
924
       jz  no_redraw_all_Bookmark__
925
926
 
927
928
 
929
          add ebx,control_header_size
930
          mov ecx,[ebx+30]
931
          mov edx,ecx
932
          add ebx,30+4
933
          shl edx,2
934
          mov esi,ebx
935
          add esi,edx ;esi= pointer to information for first child
936
          mov [Bookmark.PointerToTextForBookmark],esi
937
938
 
939
          mov [Bookmark.BookmarkY],edi
940
941
 
942
          sub edi,3
943
          mov [Bookmark.FullBookmarkSizeX],edi
944
          mov [Bookmark.ChisloStrokeZakladok],ecx
945
946
 
947
          mov [Bookmark.MessageForChildButton],dword 1
948
          ;craete child buttons for Bookmarks
949
950
 
951
952
 
953
            add edi,2
954
            mov [Bookmark.BookmarkX],edi
955
            mov [Bookmark.WorkPlace_windowx],edi
956
957
 
958
959
 
960
            mov edi,edx
961
            mov [Bookmark.NumberBookmarksInEndString],edx
962
963
 
964
            mov eax,[Bookmark.ChildButtonsForBookmark]
965
            add eax,[Bookmark.CounterChildButtons]
966
            mov [Bookmark.PointerToEndBookmarks],eax
967
            pop eax
968
969
 
970
            ;size=(full_size/number_zakladok)
971
            push eax
972
            push edx
973
974
 
975
            cdq
976
            idiv edi
977
978
 
979
            mov [Bookmark.WorkPlace_windowsizex],eax
980
981
 
982
            mov edx,[Bookmark.FullBookmarkSizeX]
983
            sub edx,eax
984
            mov [Bookmark.DefectSizeX],edx
985
986
 
987
            pop eax
988
989
 
990
991
 
992
               jne no_disactivate_defect_size_x_resize
993
994
 
995
               add [Bookmark.BookmarkSizeX],esi
996
               no_disactivate_defect_size_x_resize:
997
998
 
999
1000
 
1001
                 add edi,[Bookmark.CounterChildButtons]
1002
                 mov esi,[edi]
1003
1004
 
1005
                 mov ebx,[Bookmark.BookmarkY]
1006
                 mov ecx,[Bookmark.BookmarkSizeX]
1007
                 mov [Bookmark.ControlAddres],esi
1008
                 mov [esi+24],eax  ;x
1009
                 mov [esi+28],ebx  ;y
1010
                 mov [esi+32],ecx  ;size x
1011
1012
 
1013
1014
 
1015
                 push [Bookmark.ControlAddres]
1016
                 call button
1017
1018
 
1019
1020
 
1021
1022
 
1023
                 add [Bookmark.BookmarkX],esi
1024
1025
 
1026
              jnz  next_child_button_resize
1027
1028
 
1029
            add [Bookmark.BookmarkY],17  ;Bookmark size y
1030
1031
 
1032
          jnz next_string_of_Bookmarks_resize
1033
1034
 
1035
          mov eax,[Bookmark.CounterChildButtons]
1036
          shr eax,3
1037
          mov [Bookmark.ChisloZakladok],eax
1038
1039
 
1040
          mov ebx,[Bookmark.ChisloStrokeZakladok]  ;chislo strok
1041
          mov ecx,[Bookmark.x]   ;x for Bookmark work place
1042
          shl ebx,4
1043
          mov edx,ebx
1044
          add ebx,[Bookmark.y]   ;y for Bookmark work place
1045
          add ebx,[Bookmark.ChisloStrokeZakladok]
1046
          mov esi,[Bookmark.sizey]  ;size y
1047
          mov edi,[Bookmark.sizex]  ;size x
1048
          sub esi,edx       ;size x Bookmark work place
1049
          sub esi,1
1050
1051
 
1052
          mov [Bookmark.WorkPlace_y],ebx
1053
          mov [Bookmark.WorkPlace_sizex],edi
1054
          mov [Bookmark.WorkPlace_sizey],esi
1055
1056
 
1057
1058
 
1059
          call SendMessageChildControlsOfBookmark
1060
1061
 
1062
1063
 
1064
1065
 
1066
 
1067
       mov edi,[Bookmark.NumberActiveControl]
1068
       call SendMessageChildControlsOfBookmark
1069
1070
 
1071
1072
 
1073
       mov esi,[PointerForBookmark]
1074
       mov ebx,[esi+control_header_size+22]  ;size of data's structure
1075
       mov esi,dword Bookmark
1076
       mov ecx,(43*4)+2+4
1077
       mov edi,[PointerForBookmark]
1078
       add edi,control_header_size
1079
       add edi,ebx
1080
       rep movsb
1081
1082
 
1083
1084
 
1085
;SendMessageForChildButton    - message
1086
1087
 
1088
1089
 
1090
1091
 
1092
       add eax,control_header_size+30
1093
       mov ecx,[eax]   ;number Bookmarks
1094
       shl ecx,2
1095
       add eax,4
1096
       add eax,ecx     ;pointer to first child Bookmark
1097
1098
 
1099
       jz addres_find_
1100
1101
 
1102
1103
 
1104
            shl ebx,3
1105
            add eax,8
1106
            add eax,ebx       ;pointer to next control
1107
         dec edi
1108
         jnz next_child_control_find
1109
1110
 
1111
1112
 
1113
       mov [Bookmark.CounterChildControls],ecx
1114
       add eax,4+4+4       ;eax=pointer to child controls for Bookmark
1115
       mov [Bookmark.AddresOfActiveChildControl],eax
1116
1117
 
1118
1119
 
1120
1121
 
1122
1123
 
1124
         jne no_redraw_child_control_Bookmark
1125
1126
 
1127
 
1128
           mov ecx,[ebx]
1129
           push Bookmark.MessageForChildButton
1130
           push ebx
1131
           call ecx
1132
1133
 
1134
         no_redraw_child_control_Bookmark:
1135
1136
 
1137
1138
 
1139
         jne no_keys_child_control_Bookmark
1140
1141
 
1142
           ;test esi,esi
1143
           ;jz exit_send_message_to_child_control_Bookmark
1144
1145
 
1146
             mov ebx,[eax]
1147
             mov ecx,[ebx]
1148
             push Bookmark.MessageForChildButton
1149
             push ebx
1150
             call ecx
1151
1152
 
1153
         no_keys_child_control_Bookmark:
1154
1155
 
1156
1157
 
1158
         jne no_send_special_message_child_control_Bookmark
1159
1160
 
1161
 
1162
           mov ecx,[ebx]
1163
           push Bookmark.MessageForChildButton
1164
           push ebx
1165
           call ecx
1166
1167
 
1168
         no_send_special_message_child_control_Bookmark:
1169
1170
 
1171
         ;------------------------------------------------------
1172
         cmp [Bookmark.MessageForChildButton],6
1173
         jne no_mouse_child_control_Bookmark
1174
1175
 
1176
           mov eax,ebx
1177
675 andrew_pro 1178
 
648 andrew_pro 1179
           test ebx,ebx
1180
           jz bookmark_left_button_of_mouse_not_pressed
1181
1182
 
1183
              test ebx,ebx
1184
              jz bookmark_havent_active_control
1185
1186
 
1187
                 mov ebx,[eax]
1188
                 push Bookmark.MessageForChildButton
1189
                 push eax
1190
                 call ebx
1191
1192
 
1193
              bookmark_havent_active_control:
1194
1195
 
1196
           bookmark_left_button_of_mouse_not_pressed:
1197
1198
 
1199
               test ebx,ebx
1200
               jz bookmark_havent_active_control_
1201
1202
 
1203
1204
 
1205
1206
 
1207
1208
 
1209
           mov esi,[eax+24]      ;x
1210
           mov edi,[eax+28]      ;y
1211
           mov ecx,[eax+32]      ;size x
1212
           mov edx,[eax+36]      ;size y
1213
           mov [x],esi
1214
           mov [y],edi
1215
           mov eax,[x]
1216
           mov ebx,[y]
1217
           mov esi,[Bookmark.MouseX]
1218
           mov edi,[Bookmark.MouseY]
1219
1220
 
1221
1222
 
1223
           jne no_crossing_123
1224
1225
 
1226
              jne button_not_pressed_123
1227
1228
 
1229
                 mov eax,[Bookmark.AddresOfActiveChildControl]
1230
                 mov ebx,[eax]
1231
                 mov [Bookmark.ActiveChildControl],ebx
1232
1233
 
1234
            no_crossing_123:
1235
1236
 
1237
           mov eax,[Bookmark.AddresOfActiveChildControl]
1238
           mov ebx,[eax]
1239
           mov ecx,[ebx]
1240
           push Bookmark.MessageForChildButton
1241
           push ebx
1242
           call ecx
1243
1244
 
1245
        ;------------------------------------------------------
1246
1247
 
1248
       ;--------------------------------------------------------
1249
       cmp [Bookmark.MessageForChildButton],dword -1
1250
       jne no_delete_Bookmark_
1251
1252
 
1253
1254
 
1255
1256
 
1257
          add eax,[Bookmark.CounterChildButtons]
1258
1259
 
1260
          mov ebx,[eax]   ;control child button
1261
1262
 
1263
1264
 
1265
          call destroy_control
1266
1267
 
1268
1269
 
1270
          mov edi,[Bookmark.CounterChildButtons]
1271
          shr edi,3
1272
          inc edi
1273
1274
 
1275
          add eax,control_header_size+30
1276
          mov ecx,[eax]   ;number Bookmarks
1277
          shl ecx,2
1278
          add eax,4
1279
          add eax,ecx     ;pointer to first child Bookmark
1280
1281
 
1282
          jz addres_find___
1283
1284
 
1285
1286
 
1287
               shl ebx,3
1288
               add eax,8
1289
               add eax,ebx       ;pointer to next control
1290
            dec edi
1291
            jnz next_child_control_find__
1292
1293
 
1294
1295
 
1296
          mov [Bookmark.CounterChildControls],ecx
1297
          add eax,4+4+4       ;eax=pointer to child controls for Bookmark
1298
          mov [Bookmark.AddresOfActiveChildControl],eax
1299
1300
 
1301
1302
 
1303
               mov ebx,[eax]
1304
1305
 
1306
               call destroy_control
1307
1308
 
1309
1310
 
1311
             jnz next_child_control_of_Bookmark_delete
1312
1313
 
1314
1315
 
1316
         jnz next_Bookmark_delete
1317
1318
 
1319
         mov eax,[Bookmark.ChildButtonsForBookmark]
1320
         call free
1321
1322
 
1323
       ;----------------------------------------------------------------
1324
1325
 
1326
1327
 
1328
1329
 
1330
      jnz  send_message_to_next_child_control_of_active_Bookmark
1331
1332
 
1333
1334
 
1335
;BookmarkY
1336
;BookmarkSizeX
1337
;BookmarkSizeY
1338
DrawBookmark:
1339
1340
 
1341
      mov ebx,[Bookmark.BookmarkY]
1342
      mov [x],eax
1343
      mov [y],ebx
1344
1345
 
1346
      mov edx,[colors_table1]
1347
      mov esi,[Bookmark.BookmarkSizeX]
1348
      sub esi,2
1349
1350
 
1351
      mov ebx,[x]
1352
      mov ecx,[y]
1353
      add ebx,1
1354
      add ecx,1
1355
      shl ebx,16
1356
      shl ecx,16
1357
      add ebx,esi
1358
      add ecx,(16)
1359
      and edx,0xffffff
1360
      mcall
1361
1362
 
1363
      and eax,0xffffff
1364
      mov [Line.color],eax
1365
      mov [Pixel.color],eax
1366
      ;draw white line(x+2,y,x+sizex-3,y)
1367
1368
 
1369
      mov ebx,[y]
1370
      mov ecx,eax
1371
      add eax,2
1372
      add ecx,[Bookmark.BookmarkSizeX]
1373
      sub ecx,3
1374
      mov [Line.x1],eax
1375
      mov [Line.x2],ecx
1376
      mov [Line.y1],ebx
1377
      mov [Line.y2],ebx
1378
      call DrawLine
1379
1380
 
1381
      mov eax,[x]
1382
      mov ebx,[y]
1383
      mov ecx,ebx
1384
      add ebx,2
1385
      add ecx,(16)
1386
      mov [Line.x1],eax
1387
      mov [Line.x2],eax
1388
      mov [Line.y1],ebx
1389
      mov [Line.y2],ecx
1390
      call DrawLine
1391
1392
 
1393
      mov ebx,[y]
1394
      add eax,1
1395
      add ebx,1
1396
      mov [Pixel.x],eax
1397
      mov [Pixel.y],ebx
1398
      call DrawPixel
1399
1400
 
1401
      and eax,0xffffff
1402
      mov [Line.color],eax
1403
      ;draw light line(x+2,y+1,x+sizex-2,y+1)
1404
1405
 
1406
      mov ebx,[y]
1407
      mov ecx,eax
1408
      add eax,2
1409
      add ebx,1
1410
      add ecx,[Bookmark.BookmarkSizeX]
1411
      sub ecx,2
1412
      mov [Line.x1],eax
1413
      mov [Line.x2],ecx
1414
      mov [Line.y1],ebx
1415
      mov [Line.y2],ebx
1416
      call DrawLine
1417
1418
 
1419
      mov eax,[x]
1420
      mov ebx,[y]
1421
      mov ecx,ebx
1422
      add eax,1
1423
      add ebx,2
1424
      add ecx,(16)
1425
      mov [Line.x1],eax
1426
      mov [Line.x2],eax
1427
      mov [Line.y1],ebx
1428
      mov [Line.y2],ecx
1429
      call DrawLine
1430
1431
 
1432
      and eax,0xffffff
1433
      mov [Line.color],eax
1434
      mov [Pixel.color],eax
1435
1436
 
1437
      mov eax,[x]
1438
      mov ebx,[y]
1439
      add eax,[Bookmark.BookmarkSizeX]
1440
      mov edx,ebx
1441
      add ebx,2
1442
      add edx,(16)
1443
      sub eax,1
1444
      mov [Line.x1],eax
1445
      mov [Line.x2],eax
1446
      mov [Line.y1],ebx
1447
      mov [Line.y2],edx
1448
      call DrawLine
1449
1450
 
1451
      mov ebx,[y]
1452
      add eax,[Bookmark.BookmarkSizeX]
1453
      add ebx,1
1454
      sub eax,2
1455
      mov [Pixel.x],eax
1456
      mov [Pixel.y],ebx
1457
      call DrawPixel
1458
1459
 
1460
      and eax,0xffffff
1461
      mov [Line.color],eax
1462
1463
 
1464
      mov eax,[x]
1465
      mov ebx,[y]
1466
      add eax,[Bookmark.BookmarkSizeX]
1467
      sub eax,2
1468
      mov edx,ebx
1469
      add ebx,2
1470
      add edx,(16)
1471
      mov [Line.x1],eax
1472
      mov [Line.x2],eax
1473
      mov [Line.y1],ebx
1474
      mov [Line.y2],edx
1475
      call DrawLine
1476
1477
 
1478
 
1479
1480
 
1481
1482
 
1483
      sub esi,1
1484
1485
 
1486
      mov ebx,[Bookmark.WorkPlace_x]
1487
      mov ecx,[Bookmark.WorkPlace_y]
1488
      add ebx,1
1489
      shl ebx,16
1490
      shl ecx,16
1491
      add ebx,esi
1492
      add ecx,[Bookmark.WorkPlace_sizey]
1493
      mov edx,[colors_table1]
1494
      and edx,0xffffff
1495
      mcall
1496
1497
 
1498
      and eax,0xffffff
1499
      mov [Line.color],eax
1500
1501
 
1502
      mov eax,[Bookmark.WorkPlace_x]
1503
      mov ebx,[Bookmark.WorkPlace_y]
1504
      mov ecx,ebx
1505
      add ecx,[Bookmark.WorkPlace_sizey]
1506
      mov [Line.x1],eax
1507
      mov [Line.x2],eax
1508
      mov [Line.y1],ebx
1509
      mov [Line.y2],ecx
1510
      call DrawLine
1511
1512
 
1513
      ;(x,y,x+windowx,y)
1514
      mov eax,[Bookmark.WorkPlace_x]
1515
      mov ebx,[Bookmark.WorkPlace_y]
1516
      mov ecx,[Bookmark.WorkPlace_windowx]
1517
1518
 
1519
      je no_draw_line_00
1520
1521
 
1522
      mov [Line.x2],ecx
1523
      mov [Line.y1],ebx
1524
      mov [Line.y2],ebx
1525
      call DrawLine
1526
1527
 
1528
1529
 
1530
      ;(x,y,x+windowx,y)
1531
      mov eax,[Bookmark.WorkPlace_windowx]
1532
      add eax,[Bookmark.WorkPlace_windowsizex]
1533
      mov ebx,[Bookmark.WorkPlace_y]
1534
      mov ecx,[Bookmark.WorkPlace_x]
1535
      add ecx,[Bookmark.WorkPlace_sizex]
1536
      mov [Line.x1],eax
1537
      mov [Line.x2],ecx
1538
      mov [Line.y1],ebx
1539
      mov [Line.y2],ebx
1540
      call DrawLine
1541
1542
 
1543
1544
 
1545
      and eax,0xffffff
1546
      mov [Line.color],eax
1547
1548
 
1549
      mov eax,[Bookmark.WorkPlace_x]
1550
      mov ebx,[Bookmark.WorkPlace_y]
1551
      mov ecx,ebx
1552
      add ecx,[Bookmark.WorkPlace_sizey]
1553
      add eax,1
1554
      add ebx,1
1555
      sub ecx,1
1556
      mov [Line.x1],eax
1557
      mov [Line.x2],eax
1558
      mov [Line.y1],ebx
1559
      mov [Line.y2],ecx
1560
      call DrawLine
1561
1562
 
1563
      ;(x+1,y+1,x+windowx,y+1)
1564
      mov eax,[Bookmark.WorkPlace_x]
1565
      mov ebx,[Bookmark.WorkPlace_y]
1566
      mov ecx,[Bookmark.WorkPlace_windowx]
1567
      add ebx,1
1568
1569
 
1570
      je no_draw_line_01
1571
1572
 
1573
      mov [Line.x2],ecx
1574
      mov [Line.y1],ebx
1575
      mov [Line.y2],ebx
1576
      ;call DrawLine
1577
1578
 
1579
1580
 
1581
      ;(x+1,y+1,x+windowx-2,y+1)
1582
      mov eax,[Bookmark.WorkPlace_windowx]
1583
      mov ecx,[Bookmark.WorkPlace_x]
1584
      mov ebx,[Bookmark.WorkPlace_y]
1585
      add eax,[Bookmark.WorkPlace_windowsizex]
1586
      add ecx,[Bookmark.WorkPlace_sizex]
1587
      add eax,1
1588
      add ebx,1
1589
      sub ecx,2
1590
      mov [Line.x1],eax
1591
      mov [Line.x2],ecx
1592
      mov [Line.y1],ebx
1593
      mov [Line.y2],ebx
1594
      call DrawLine
1595
1596
 
1597
 
1598
      and eax,0xffffff
1599
      mov [Line.color],eax
1600
1601
 
1602
      mov eax,[Bookmark.WorkPlace_x]
1603
      mov ebx,[Bookmark.WorkPlace_y]
1604
      mov ecx,ebx
1605
      add eax,[Bookmark.WorkPlace_sizex]
1606
      add ecx,[Bookmark.WorkPlace_sizey]
1607
      mov [Line.x1],eax
1608
      mov [Line.x2],eax
1609
      mov [Line.y1],ebx
1610
      mov [Line.y2],ecx
1611
      call DrawLine
1612
1613
 
1614
      mov eax,[Bookmark.WorkPlace_x]
1615
      mov ebx,[Bookmark.WorkPlace_y]
1616
      mov ecx,eax
1617
      add ecx,[Bookmark.WorkPlace_sizex]
1618
      add ebx,[Bookmark.WorkPlace_sizey]
1619
      add eax,1
1620
      mov [Line.x1],eax
1621
      mov [Line.x2],ecx
1622
      mov [Line.y1],ebx
1623
      mov [Line.y2],ebx
1624
      call DrawLine
1625
1626
 
1627
      and eax,0xffffff
1628
      mov [Line.color],eax
1629
1630
 
1631
      mov eax,[Bookmark.WorkPlace_x]
1632
      mov ebx,[Bookmark.WorkPlace_y]
1633
      mov ecx,ebx
1634
      add eax,[Bookmark.WorkPlace_sizex]
1635
      add ecx,[Bookmark.WorkPlace_sizey]
1636
      sub eax,1
1637
      sub ecx,1
1638
      ;add ebx,1
1639
      mov [Line.x1],eax
1640
      mov [Line.x2],eax
1641
      mov [Line.y1],ebx
1642
      mov [Line.y2],ecx
1643
      call DrawLine
1644
1645
 
1646
      mov eax,[Bookmark.WorkPlace_x]
1647
      mov ebx,[Bookmark.WorkPlace_y]
1648
      mov ecx,eax
1649
      add ecx,[Bookmark.WorkPlace_sizex]
1650
      add ebx,[Bookmark.WorkPlace_sizey]
1651
      add eax,1
1652
      sub ecx,1
1653
      sub ebx,1
1654
      mov [Line.x1],eax
1655
      mov [Line.x2],ecx
1656
      mov [Line.y1],ebx
1657
      mov [Line.y2],ebx
1658
      call DrawLine
1659
1660
 
1661