Subversion Repositories Kolibri OS

Rev

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