Rev 9896 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9896 | Rev 9898 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | (* |
1 | (* |
2 | Copyright 2016-2022 Anton Krotov |
2 | Copyright 2016-2023 Anton Krotov |
Line 3... | Line 3... | ||
3 | 3 | ||
Line 4... | Line 4... | ||
4 | This file is part of fb2read. |
4 | This file is part of fb2read. |
5 | 5 | ||
Line 18... | Line 18... | ||
18 | *) |
18 | *) |
Line 19... | Line 19... | ||
19 | 19 | ||
Line 20... | Line 20... | ||
20 | MODULE DOM; |
20 | MODULE DOM; |
21 | 21 | ||
22 | IMPORT XML, SU := SysUtils, S := Strings, Font, Window, G := Graph, LibImg, |
22 | IMPORT XML, SU := SysUtils, S := Strings, Font, Window, G := Graph, LibImg, |
Line 23... | Line 23... | ||
23 | RF := ReadFile, File, Write, Read, Ini, K := KOSAPI, sys := SYSTEM, |
23 | RF := ReadFile, File, Ini, K := KOSAPI, sys := SYSTEM, |
Line 52... | Line 52... | ||
52 | LEVEL, |
52 | LEVEL, |
53 | SUB, |
53 | SUB, |
54 | SUP, |
54 | SUP, |
55 | InterLin*, |
55 | InterLin*, |
56 | Picture*, |
56 | Picture*, |
- | 57 | picture_fsize*, |
|
57 | SpaceW: INTEGER |
58 | SpaceW: INTEGER |
Line 58... | Line 59... | ||
58 | 59 | ||
Line 59... | Line 60... | ||
59 | END; |
60 | END; |
Line 71... | Line 72... | ||
71 | 72 | ||
Line 72... | Line 73... | ||
72 | VAR |
73 | VAR |
73 | 74 | ||
74 | Settings* : TSettings; |
75 | Settings* : TSettings; |
75 | Canvas_X, Canvas_Y: INTEGER; |
- | |
Line 76... | Line 76... | ||
76 | ColLeft : Window.TRect; |
76 | Canvas_X, Canvas_Y: INTEGER; |
Line 77... | Line 77... | ||
77 | ColRight : Window.TRect; |
77 | ColLeft, ColRight: Window.tRect; |
Line 426... | Line 426... | ||
426 | tables.table(t, W, FALSE) |
426 | tables.table(t, W, FALSE) |
427 | END |
427 | END |
428 | END table; |
428 | END table; |
Line 429... | Line -... | ||
429 | - | ||
430 | - | ||
431 | PROCEDURE layout(body: XML.ELEMENT); |
- | |
432 | VAR |
- | |
433 | cur : XML.ELEMENT; |
- | |
434 | tag : XML.TAG; |
- | |
435 | word : XML.WORD; |
- | |
436 | text : XML.TEXT; |
- | |
437 | tag_value : INTEGER; |
- | |
438 | _align : INTEGER; |
- | |
439 | title : XML.ELEMENT; |
- | |
440 | width : INTEGER; |
- | |
441 | height1 : INTEGER; |
- | |
442 | height2 : INTEGER; |
- | |
443 | 429 | ||
444 | 430 | ||
445 | PROCEDURE Image (VAR tag: XML.TAG); |
431 | PROCEDURE Image (VAR tag: XML.TAG; destroy: BOOLEAN); |
446 | VAR |
432 | VAR |
447 | note : BOOLEAN; |
433 | note : BOOLEAN; |
448 | img : XML.TAG; |
434 | img : XML.TAG; |
449 | URL : INTEGER; |
435 | URL : INTEGER; |
450 | chars : S.CHARS; |
436 | chars : S.CHARS; |
451 | sizeY : INTEGER; |
437 | sizeY : INTEGER; |
452 | FName : S.STRING; |
438 | FName : S.STRING; |
453 | path : S.STRING; |
- | |
454 | BEGIN |
439 | path : S.STRING; |
455 | IF tag.img # 0 THEN |
- | |
456 | LibImg.img_destroy(tag.img) |
440 | BEGIN |
457 | END; |
441 | LibImg.Destroy(tag.img); |
458 | img := XML.GetRef(tag, note, URL); |
442 | img := XML.GetRef(tag, note, URL); |
459 | IF img # NIL THEN |
443 | IF img # NIL THEN |
460 | IF img.child.first IS XML.WORD THEN |
444 | IF img.child.first IS XML.WORD THEN |
461 | chars := img.child.first(XML.WORD).value; |
- | |
462 | tag.img := LibImg.GetImg(chars.first, chars.last - chars.first + 1, W, sizeY); |
- | |
463 | IF tag.img # 0 THEN |
- | |
464 | INC(Y, (sizeY DIV LineH) * LineH); |
- | |
465 | NewLine; |
- | |
466 | tag.Ymax := Y - Y MOD LineH |
445 | chars := img.child.first(XML.WORD).value; |
467 | END |
446 | tag.img := LibImg.GetImg(chars.first, chars.last - chars.first + 1, W, sizeY) |
468 | END |
447 | END |
469 | ELSIF URL # 0 THEN |
448 | ELSIF URL # 0 THEN |
470 | S.PtrToString(URL, FName); |
449 | S.PtrToString(URL, FName); |
471 | tag.img := LibImg.LoadFromFile(FName, W, sizeY); |
450 | tag.img := LibImg.LoadFromFile(FName, W, sizeY); |
472 | IF tag.img = 0 THEN |
451 | IF tag.img = 0 THEN |
473 | path := FilePath; |
452 | path := FilePath; |
474 | IF FName[0] # "/" THEN |
453 | IF FName[0] # "/" THEN |
475 | S.Append(path, "/") |
454 | S.Append(path, "/") |
476 | END; |
455 | END; |
- | 456 | S.Append(path, FName); |
|
477 | S.Append(path, FName); |
457 | tag.img := LibImg.LoadFromFile(path, W, sizeY) |
478 | tag.img := LibImg.LoadFromFile(path, W, sizeY); |
458 | END |
479 | END; |
459 | END; |
480 | IF tag.img # 0 THEN |
460 | IF (tag.img # 0) & destroy THEN |
481 | INC(Y, (sizeY DIV LineH) * LineH); |
461 | INC(Y, (sizeY DIV LineH) * LineH); |
482 | NewLine; |
462 | NewLine; |
483 | tag.Ymax := Y - Y MOD LineH |
463 | tag.Ymax := Y - Y MOD LineH; |
484 | END |
464 | LibImg.Destroy(tag.img) |
Line -... | Line 465... | ||
- | 465 | END |
|
- | 466 | END Image; |
|
- | 467 | ||
- | 468 | ||
- | 469 | PROCEDURE layout(body: XML.ELEMENT); |
|
- | 470 | VAR |
|
- | 471 | cur : XML.ELEMENT; |
|
- | 472 | tag : XML.TAG; |
|
- | 473 | word : XML.WORD; |
|
- | 474 | text : XML.TEXT; |
|
- | 475 | tag_value : INTEGER; |
|
- | 476 | _align : INTEGER; |
|
- | 477 | title : XML.ELEMENT; |
|
485 | END |
478 | width : INTEGER; |
486 | END Image; |
479 | height1 : INTEGER; |
487 | 480 | height2 : INTEGER; |
|
488 | 481 | ||
489 | BEGIN |
482 | BEGIN |
Line 608... | Line 601... | ||
608 | Sub(FALSE) |
601 | Sub(FALSE) |
609 | |XML.tag_code: |
602 | |XML.tag_code: |
610 | DEC(code); |
603 | DEC(code); |
611 | Font.sysfont(code > 0) |
604 | Font.sysfont(code > 0) |
612 | |XML.tag_image: |
605 | |XML.tag_image: |
613 | Image(tag) |
606 | Image(tag, TRUE) |
614 | - | ||
615 | |XML.tag_table: |
607 | |XML.tag_table: |
616 | Y := tag.Ymin + tables.get_table_height(tag.table); |
608 | Y := tag.Ymin + tables.get_table_height(tag.table); |
617 | tag.Ymax := Y - Y MOD LineH; |
609 | tag.Ymax := Y - Y MOD LineH; |
618 | NewLine; |
610 | NewLine; |
619 | |XML.tag_td, XML.tag_th: |
611 | |XML.tag_td, XML.tag_th: |
Line 678... | Line 670... | ||
678 | text : XML.TEXT; |
670 | text : XML.TEXT; |
679 | tag : XML.TAG; |
671 | tag : XML.TAG; |
680 | y, y0 : INTEGER; |
672 | y, y0 : INTEGER; |
681 | value : INTEGER; |
673 | value : INTEGER; |
Line 682... | Line 674... | ||
682 | 674 | ||
683 | PROCEDURE DrawText(Col: Window.TRect; min, max, y0, y: INTEGER; right: BOOLEAN; VAR text: XML.TEXT); |
675 | PROCEDURE DrawText(Col: Window.tRect; min, max, y0, y: INTEGER; right: BOOLEAN; VAR text: XML.TEXT); |
684 | VAR word: XML.WORD; |
676 | VAR word: XML.WORD; |
685 | BEGIN |
677 | BEGIN |
686 | IF (min <= y0) & (y0 <= max) THEN |
678 | IF (min <= y0) & (y0 <= max) THEN |
687 | Font.sysfont(code > 0); |
679 | Font.sysfont(code > 0); |
688 | IF text IS XML.WORD THEN |
680 | IF text IS XML.WORD THEN |
689 | word := text(XML.WORD); |
681 | word := text(XML.WORD); |
690 | Font.Text(Col, word.X, y - Col.Height * ORD(right), word.value.first, word.length); |
682 | Font.Text(Col, word.X, y - Col.height * ORD(right), word.value.first, word.length); |
691 | END; |
683 | END; |
692 | Font.StrikeText(Col, text.X, y - Col.Height * ORD(right), text.width) |
684 | Font.StrikeText(Col, text.X, y - Col.height * ORD(right), text.width) |
693 | END |
685 | END |
Line 694... | Line 686... | ||
694 | END DrawText; |
686 | END DrawText; |
695 | 687 | ||
696 | PROCEDURE Image(VAR tag: XML.TAG); |
688 | PROCEDURE DrawImage(VAR tag: XML.TAG); |
697 | VAR sizeX, sizeY, img, y: INTEGER; |
689 | VAR sizeX, sizeY, img, y: INTEGER; |
698 | BEGIN |
690 | BEGIN |
699 | IF tag.img # 0 THEN |
691 | IF tag.img # 0 THEN |
700 | y := Ycur; |
692 | y := Ycur; |
701 | LibImg.GetInf(tag.img, sizeX, sizeY, img); |
693 | LibImg.GetInf(tag.img, sizeX, sizeY, img); |
702 | IF (y <= tag.Ymax) & (tag.Ymin <= y + ColLeft.Height) THEN |
694 | IF (y <= tag.Ymax) & (tag.Ymin <= y + ColLeft.height) THEN |
703 | G.Image(ColLeft.Left + tag.X, tag.Ymin - y + ColLeft.Top, sizeX, sizeY, img, ColLeft.Top, ColLeft.Top + ColLeft.Height - 1) |
695 | G.Image(ColLeft.left + tag.X, tag.Ymin - y + ColLeft.top, sizeX, sizeY, img, ColLeft.top, ColLeft.top + ColLeft.height - 1) |
704 | END; |
696 | END; |
705 | IF Settings.TwoCol THEN |
697 | IF Settings.TwoCol THEN |
706 | y := Ycur + ColLeft.Height; |
698 | y := Ycur + ColLeft.height; |
707 | IF (y <= tag.Ymax) & (tag.Ymin <= y + ColRight.Height) THEN |
699 | IF (y <= tag.Ymax) & (tag.Ymin <= y + ColRight.height) THEN |
708 | G.Image(ColRight.Left + tag.X, tag.Ymin - y + ColLeft.Top, sizeX, sizeY, img, ColRight.Top, ColRight.Top + ColRight.Height - 1) |
700 | G.Image(ColRight.left + tag.X, tag.Ymin - y + ColLeft.top, sizeX, sizeY, img, ColRight.top, ColRight.top + ColRight.height - 1) |
709 | END |
701 | END |
710 | END |
702 | END |
Line 711... | Line 703... | ||
711 | END |
703 | END |
712 | END Image; |
704 | END DrawImage; |
713 | 705 | ||
714 | PROCEDURE td(VAR tag: XML.TAG); |
706 | PROCEDURE td(VAR tag: XML.TAG); |
715 | VAR x1, y1, x2, y2, cl: INTEGER; |
707 | VAR x1, y1, x2, y2, cl: INTEGER; |
716 | BEGIN |
708 | BEGIN |
717 | x1 := tag.X + ColLeft.Left; |
709 | x1 := tag.X + ColLeft.left; |
718 | y1 := tag.Ymin - Ycur + ColLeft.Top; |
710 | y1 := tag.Ymin - Ycur + ColLeft.top; |
719 | x2 := x1 + tag.Width; |
711 | x2 := x1 + tag.Width; |
720 | y2 := y1 + tables.get_height(tag.table, tag.cell); |
712 | y2 := y1 + tables.get_height(tag.table, tag.cell); |
721 | cl := G.GetColor(); |
713 | cl := G.GetColor(); |
722 | G.SetColor(Settings.Colors[TEXT_COLOR]); |
714 | G.SetColor(Settings.Colors[TEXT_COLOR]); |
723 | G.Rect(x1, y1, x2, y2); |
715 | G.Rect(x1, y1, x2, y2); |
724 | IF Settings.TwoCol THEN |
716 | IF Settings.TwoCol THEN |
725 | x1 := x1 - ColLeft.Left + ColRight.Left; |
717 | x1 := x1 - ColLeft.left + ColRight.left; |
726 | x2 := x2 - ColLeft.Left + ColRight.Left; |
718 | x2 := x2 - ColLeft.left + ColRight.left; |
727 | y1 := y1 - ColLeft.Height; |
719 | y1 := y1 - ColLeft.height; |
728 | y2 := y2 - ColLeft.Height; |
720 | y2 := y2 - ColLeft.height; |
729 | G.Rect(x1, y1, x2, y2) |
721 | G.Rect(x1, y1, x2, y2) |
Line 774... | Line 766... | ||
774 | Font.Strike(TRUE) |
766 | Font.Strike(TRUE) |
775 | |XML.tag_epigraph, XML.tag_cite, XML.tag_emphasis: |
767 | |XML.tag_epigraph, XML.tag_cite, XML.tag_emphasis: |
776 | INC(italic); |
768 | INC(italic); |
777 | Font.Italic(TRUE, refer = 0) |
769 | Font.Italic(TRUE, refer = 0) |
778 | |XML.tag_image: |
770 | |XML.tag_image: |
- | 771 | Image(tag, FALSE); |
|
779 | Image(tag) |
772 | DrawImage(tag); |
- | 773 | LibImg.Destroy(tag.img) |
|
780 | |XML.tag_code: |
774 | |XML.tag_code: |
781 | INC(code) |
775 | INC(code) |
782 | ELSE |
776 | ELSE |
783 | END; |
777 | END; |
784 | layout2(tag.child.first); |
778 | layout2(tag.child.first); |
Line 814... | Line 808... | ||
814 | END |
808 | END |
815 | ELSIF cur IS XML.TEXT THEN |
809 | ELSIF cur IS XML.TEXT THEN |
816 | text := cur(XML.TEXT); |
810 | text := cur(XML.TEXT); |
817 | y := text.Y - Ycur; |
811 | y := text.Y - Ycur; |
818 | y0 := y - y MOD LineH; |
812 | y0 := y - y MOD LineH; |
819 | DrawText(ColLeft, 0, ColLeft.Height - LineH, y0, y, FALSE, text); |
813 | DrawText(ColLeft, 0, ColLeft.height - LineH, y0, y, FALSE, text); |
820 | IF Settings.TwoCol THEN |
814 | IF Settings.TwoCol THEN |
821 | DrawText(ColRight, ColLeft.Height, ColLeft.Height + ColRight.Height - LineH, y0, y, TRUE, text) |
815 | DrawText(ColRight, ColLeft.height, ColLeft.height + ColRight.height - LineH, y0, y, TRUE, text) |
822 | END |
816 | END |
823 | END; |
817 | END; |
824 | cur := cur.next |
818 | cur := cur.next |
825 | END |
819 | END |
826 | END layout2; |
820 | END layout2; |
Line 827... | Line 821... | ||
827 | 821 | ||
828 | 822 | ||
829 | PROCEDURE DrawProgress(progress_color: INTEGER); |
823 | PROCEDURE DrawFrame (color: INTEGER); |
830 | VAR max_X, max_Y: INTEGER; |
824 | VAR max_X, max_Y: INTEGER; |
831 | BEGIN |
825 | BEGIN |
832 | max_X := G.Buffer.Width - 1; |
826 | max_X := G.Buffer.Width - 1; |
833 | max_Y := G.Buffer.Height - 1; |
827 | max_Y := G.Buffer.Height - 1; |
834 | G.SetColor(0); |
828 | G.SetColor(color); |
835 | G.HLine(0, max_X, 0); |
829 | G.HLine(0, max_X, 0); |
836 | G.HLine(0, max_X, max_Y); |
830 | G.HLine(0, max_X, max_Y); |
837 | G.VLine(0, 0, max_Y); |
831 | G.VLine(0, 0, max_Y); |
838 | sb.max_area := (Ymax - Ymin) DIV LineH + 50; |
832 | sb.max_area := (Ymax - Ymin) DIV LineH + 50; |
839 | sb.cur_area := 50; |
833 | sb.cur_area := 50; |
840 | sb.position := (Ycur - Ymin) DIV LineH; |
834 | sb.position := (Ycur - Ymin) DIV LineH; |
Line 841... | Line 835... | ||
841 | box_lib.scrollbar_v_draw(sb) |
835 | box_lib.scrollbar_v_draw(sb) |
842 | END DrawProgress; |
836 | END DrawFrame; |
843 | 837 | ||
844 | - | ||
845 | PROCEDURE Draw*; |
838 | |
846 | VAR back, max_X, max_Y: INTEGER; |
839 | PROCEDURE Draw*; |
847 | BEGIN |
840 | (*VAR max_Y: INTEGER;*) |
- | 841 | BEGIN |
|
- | 842 | (*max_Y := G.Buffer.Height - 1;*) |
|
- | 843 | IF Settings.b_pict & (Settings.Picture # 0) THEN |
|
848 | back := Settings.Colors[BACK_COLOR]; |
844 | G.Copy(G.BackImg, G.Buffer, 0, G.Buffer.Height, 0) |
849 | max_X := G.Buffer.Width - 1; |
845 | ELSE |
850 | max_Y := G.Buffer.Height - 1; |
846 | G.Fill(G.Buffer, Settings.Colors[BACK_COLOR]) |
851 | G.Copy(G.Buffer3, G.Buffer, 0, G.Buffer.Height, 0); |
847 | END; |
852 | Font.SetFontColor(Settings.Colors[TEXT_COLOR]); |
848 | Font.SetFontColor(Settings.Colors[TEXT_COLOR]); |
853 | IF ((body = description) OR (body = contents)) & Settings.TwoCol THEN |
849 | IF ((body = description) OR (body = contents)) & Settings.TwoCol THEN |
854 | Settings.TwoCol := FALSE; |
850 | Settings.TwoCol := FALSE; |
855 | layout2(body.child.first); |
851 | layout2(body.child.first); |
856 | Settings.TwoCol := TRUE; |
852 | Settings.TwoCol := TRUE; |
857 | Search.draw(body, ColLeft, ColRight, Ycur, LineH, FALSE) |
853 | Search.draw(body, ColLeft, ColRight, Ycur, LineH, FALSE) |
858 | ELSE |
854 | ELSE |
859 | layout2(body.child.first); |
855 | layout2(body.child.first); |
860 | Search.draw(body, ColLeft, ColRight, Ycur, LineH, Settings.TwoCol) |
856 | Search.draw(body, ColLeft, ColRight, Ycur, LineH, Settings.TwoCol) |
861 | END; |
857 | END; |
862 | G.Copy(G.Buffer3, G.Buffer, 0, ColLeft.Top + 1, 0); |
858 | (*G.Copy(G.BackImg, G.Buffer, 0, ColLeft.top + 1, 0); |
863 | G.Copy(G.Buffer3, G.Buffer, max_Y - ColLeft.Top, ColLeft.Top + 1, max_Y - ColLeft.Top); |
859 | G.Copy(G.BackImg, G.Buffer, max_Y - ColLeft.top, ColLeft.top + 1, max_Y - ColLeft.top);*) |
864 | DrawProgress(0); |
860 | DrawFrame(0); |
Line 930... | Line 926... | ||
930 | Ymax := body.Ymax |
926 | Ymax := body.Ymax |
931 | END |
927 | END |
932 | END Descr; |
928 | END Descr; |
Line 933... | Line 929... | ||
933 | 929 | ||
934 | 930 | ||
935 | PROCEDURE Up*; |
931 | PROCEDURE Scroll* (n: INTEGER); |
936 | BEGIN |
932 | BEGIN |
937 | DEC(Ycur, LineH); |
- | |
938 | SU.MinMax(Ycur, Ymin, Ymax) |
- | |
939 | END Up; |
- | |
940 | - | ||
941 | - | ||
942 | PROCEDURE Down*; |
- | |
943 | BEGIN |
- | |
944 | INC(Ycur, LineH); |
933 | INC(Ycur, LineH*n); |
Line 945... | Line 934... | ||
945 | SU.MinMax(Ycur, Ymin, Ymax) |
934 | SU.MinMax(Ycur, Ymin, Ymax) |
946 | END Down; |
- | |
947 | 935 | END Scroll; |
|
948 | 936 | ||
949 | PROCEDURE PageUp*; |
- | |
950 | VAR i: INTEGER; |
- | |
951 | BEGIN |
937 | |
Line 952... | Line 938... | ||
952 | FOR i := 1 TO Lines * (ORD(Settings.TwoCol) + 1) DO |
938 | PROCEDURE PageUp*; |
953 | Up |
- | |
954 | END |
939 | BEGIN |
955 | END PageUp; |
940 | Scroll(-Lines * (ORD(Settings.TwoCol) + 1)) |
956 | - | ||
957 | - | ||
958 | PROCEDURE PageDown*; |
941 | END PageUp; |
Line 959... | Line 942... | ||
959 | VAR i: INTEGER; |
942 | |
960 | BEGIN |
943 | |
Line 1044... | Line 1027... | ||
1044 | INC(i) |
1027 | INC(i) |
1045 | END |
1028 | END |
1046 | END layout3; |
1029 | END layout3; |
Line -... | Line 1030... | ||
- | 1030 | ||
- | 1031 | ||
- | 1032 | PROCEDURE getRefProp (VAR ref, body: XML.TAG; VAR URL: INTEGER; VAR note: BOOLEAN; VAR Y: INTEGER); |
|
- | 1033 | BEGIN |
|
- | 1034 | note := FALSE; |
|
- | 1035 | URL := 0; |
|
- | 1036 | Y := 0; |
|
- | 1037 | IF ref.value = XML.tag_a THEN |
|
- | 1038 | ref := XML.GetRef(ref, note, URL) |
|
- | 1039 | ELSE |
|
- | 1040 | ref := ref.parent(XML.TAG) |
|
- | 1041 | END; |
|
- | 1042 | IF ref # NIL THEN |
|
- | 1043 | Y := ref.Ymin; |
|
- | 1044 | END; |
|
- | 1045 | IF note THEN |
|
- | 1046 | body := ref |
|
- | 1047 | ELSE |
|
- | 1048 | body := GetBody(ref) |
|
- | 1049 | END |
|
- | 1050 | END getRefProp; |
|
- | 1051 | ||
- | 1052 | ||
- | 1053 | PROCEDURE zstreq (s1, s2: INTEGER): BOOLEAN; |
|
- | 1054 | VAR |
|
- | 1055 | c1, c2: CHAR; |
|
- | 1056 | BEGIN |
|
- | 1057 | REPEAT |
|
- | 1058 | sys.GET(s1, c1); INC(s1); |
|
- | 1059 | sys.GET(s2, c2); INC(s2); |
|
- | 1060 | UNTIL (c1 = 0X) OR (c2 = 0X) |
|
- | 1061 | ||
- | 1062 | RETURN c1 = c2 |
|
- | 1063 | END zstreq; |
|
- | 1064 | ||
- | 1065 | ||
- | 1066 | PROCEDURE refeq (ref1, ref2: XML.TAG): BOOLEAN; |
|
- | 1067 | VAR |
|
- | 1068 | body1, body2: XML.TAG; |
|
- | 1069 | URL1, URL2: INTEGER; |
|
- | 1070 | note1, note2: BOOLEAN; |
|
- | 1071 | Y1, Y2: INTEGER; |
|
- | 1072 | BEGIN |
|
- | 1073 | getRefProp(ref1, body1, URL1, note1, Y1); |
|
- | 1074 | getRefProp(ref2, body2, URL2, note2, Y2); |
|
- | 1075 | RETURN (ref1 = ref2) & (body1 = body2) & (URL1 = 0) & (URL2 = 0) & (note1 = note2) & (Y1 = Y2) OR |
|
- | 1076 | (URL1 # 0) & (URL2 # 0) & zstreq(URL1, URL2) |
|
- | 1077 | END refeq; |
|
- | 1078 | ||
- | 1079 | ||
- | 1080 | PROCEDURE setVisited (ref: XML.TAG); |
|
- | 1081 | VAR |
|
- | 1082 | i: INTEGER; |
|
- | 1083 | cur: V.ANYPTR; |
|
- | 1084 | BEGIN |
|
- | 1085 | FOR i := 0 TO references.count - 1 DO |
|
- | 1086 | cur := V.get(references, i); |
|
- | 1087 | IF cur IS XML.TEXT THEN |
|
- | 1088 | cur := cur(XML.TEXT).parent; |
|
- | 1089 | IF refeq(cur(XML.TAG), ref) THEN |
|
- | 1090 | cur(XML.TAG).Visited := TRUE |
|
- | 1091 | END |
|
- | 1092 | END |
|
- | 1093 | END |
|
- | 1094 | END setVisited; |
|
1047 | 1095 | ||
1048 | 1096 | ||
1049 | PROCEDURE MouseDown; |
1097 | PROCEDURE MouseDown; |
1050 | BEGIN |
1098 | BEGIN |
1051 | IF ~mouseDown THEN |
1099 | IF ~mouseDown THEN |
- | 1100 | mouseDown := TRUE; |
|
1052 | mouseDown := TRUE; |
1101 | clickRef := ref; |
- | 1102 | IF ref # NIL THEN |
|
1053 | clickRef := ref; |
1103 | ref.Clicked := TRUE |
1054 | ref.Clicked := TRUE; |
1104 | END; |
1055 | Draw |
1105 | Draw |
Line 1086... | Line 1136... | ||
1086 | END; |
1136 | END; |
1087 | Ymax := body.Ymax; |
1137 | Ymax := body.Ymax; |
1088 | Ymin := body.Ymin; |
1138 | Ymin := body.Ymin; |
Line 1089... | Line 1139... | ||
1089 | 1139 | ||
- | 1140 | IF ~clickRef.Visited THEN |
|
1090 | IF ~clickRef.Visited THEN |
1141 | setVisited(clickRef); |
1091 | clickRef.Visited := TRUE; |
1142 | clickRef.Visited := TRUE; |
1092 | PushRef(clickRef) |
1143 | PushRef(clickRef) |
1093 | END |
1144 | END |
1094 | ELSIF URL # 0 THEN |
1145 | ELSIF URL # 0 THEN |
1095 | SU.Run(Ini.Browser, URL); |
1146 | SU.Run(Ini.Browser, URL); |
- | 1147 | IF ~clickRef.Visited THEN |
|
1096 | IF ~clickRef.Visited THEN |
1148 | setVisited(clickRef); |
1097 | clickRef.Visited := TRUE; |
1149 | clickRef.Visited := TRUE; |
1098 | PushRef(clickRef) |
1150 | PushRef(clickRef) |
1099 | END |
1151 | END |
1100 | END; |
- | |
1101 | 1152 | END |
|
1102 | END; |
1153 | END; |
1103 | IF clickRef # NIL THEN |
1154 | IF clickRef # NIL THEN |
1104 | clickRef.Clicked := FALSE; |
1155 | clickRef.Clicked := FALSE; |
1105 | clickRef := NIL; |
1156 | clickRef := NIL; |
Line 1127... | Line 1178... | ||
1127 | DEC(X, Settings.PADDING.Left); |
1178 | DEC(X, Settings.PADDING.Left); |
1128 | IF (0 <= Y) & (Y <= Lines * LineH) THEN |
1179 | IF (0 <= Y) & (Y <= Lines * LineH) THEN |
1129 | ref := NIL; |
1180 | ref := NIL; |
1130 | layout3(body, X, Y); |
1181 | layout3(body, X, Y); |
1131 | IF (ref = NIL) & Settings.TwoCol THEN |
1182 | IF (ref = NIL) & Settings.TwoCol THEN |
1132 | layout3(body, X - ColLeft.Width - Settings.PADDING.ColInter, Y + Lines * LineH); |
1183 | layout3(body, X - ColLeft.width - Settings.PADDING.ColInter, Y + Lines * LineH); |
1133 | END; |
1184 | END; |
1134 | hoverRef := ref; |
1185 | hoverRef := ref; |
1135 | IF clicked THEN |
1186 | IF clicked THEN |
1136 | MouseDown |
1187 | MouseDown |
1137 | ELSE |
1188 | ELSE |
Line 1163... | Line 1214... | ||
1163 | DrawStatus |
1214 | DrawStatus |
1164 | END |
1215 | END |
1165 | END Click; |
1216 | END Click; |
Line 1166... | Line -... | ||
1166 | - | ||
1167 | - | ||
1168 | PROCEDURE Scroll*(value: INTEGER); |
- | |
1169 | BEGIN |
- | |
1170 | value := 2 * value; |
- | |
1171 | WHILE value > 0 DO |
- | |
1172 | Down; |
- | |
1173 | DEC(value) |
- | |
1174 | ELSIF value < 0 DO |
- | |
1175 | Up; |
- | |
1176 | INC(value) |
- | |
1177 | END |
- | |
1178 | END Scroll; |
- | |
1179 | 1217 | ||
1180 | 1218 | ||
1181 | PROCEDURE main(fb: XML.ELEMENT; Contents: BOOLEAN); |
1219 | PROCEDURE main(fb: XML.ELEMENT; Contents: BOOLEAN); |
1182 | VAR |
1220 | VAR |
1183 | cur: XML.ELEMENT; |
1221 | cur: XML.ELEMENT; |
Line 1281... | Line 1319... | ||
1281 | BEGIN |
1319 | BEGIN |
1282 | Search.fnext(body, y, d); |
1320 | Search.fnext(body, y, d); |
1283 | IF y >= 0 THEN |
1321 | IF y >= 0 THEN |
1284 | DEC(y, y MOD LineH); |
1322 | DEC(y, y MOD LineH); |
1285 | min := Ycur; |
1323 | min := Ycur; |
- | 1324 | max := min + ColLeft.height - LineH; |
|
1286 | IF Settings.TwoCol THEN |
1325 | IF Settings.TwoCol THEN |
1287 | max := min + ColLeft.Height + ColRight.Height - LineH |
- | |
1288 | ELSE |
- | |
1289 | max := min + ColLeft.Height - LineH |
1326 | INC(max, ColRight.height) |
1290 | END; |
1327 | END; |
Line 1291... | Line 1328... | ||
1291 | 1328 | ||
1292 | IF (y < min) OR (y > max) THEN |
1329 | IF (y < min) OR (y > max) THEN |
1293 | Ycur := MAX(y - ColLeft.Height DIV 2, 0) |
1330 | Ycur := MAX(y - ColLeft.height DIV 2, 0) |
Line 1294... | Line 1331... | ||
1294 | END; |
1331 | END; |
1295 | 1332 | ||
1296 | DEC(Ycur, Ycur MOD LineH) |
1333 | DEC(Ycur, Ycur MOD LineH) |
Line 1328... | Line 1365... | ||
1328 | END; |
1365 | END; |
1329 | Settings.PADDING.Right := Settings.PADDING.Left; |
1366 | Settings.PADDING.Right := Settings.PADDING.Left; |
1330 | Settings.PADDING.ColInter := G.Buffer.Width * Settings.PADDING.CInt DIV 100; |
1367 | Settings.PADDING.ColInter := G.Buffer.Width * Settings.PADDING.CInt DIV 100; |
Line 1331... | Line 1368... | ||
1331 | 1368 | ||
1332 | LineH := Font.FontH() + Settings.SUP + Settings.SUB + Settings.InterLin; |
1369 | LineH := Font.FontH() + Settings.SUP + Settings.SUB + Settings.InterLin; |
1333 | Window.InitRect( |
1370 | Window.initRect( |
1334 | ColLeft, Settings.PADDING.Left, Settings.PADDING.Top, |
1371 | ColLeft, Settings.PADDING.Left, Settings.PADDING.Top, |
1335 | G.Buffer.Width - Settings.PADDING.Left - Settings.PADDING.Right, |
1372 | G.Buffer.Width - Settings.PADDING.Left - Settings.PADDING.Right, |
1336 | G.Buffer.Height - Settings.PADDING.Top - Settings.PADDING.Bottom); |
1373 | G.Buffer.Height - Settings.PADDING.Top - Settings.PADDING.Bottom); |
1337 | IF Settings.TwoCol THEN |
1374 | IF Settings.TwoCol THEN |
1338 | ColLeft.Width := (ColLeft.Width - Settings.PADDING.ColInter) DIV 2; |
1375 | ColLeft.width := (ColLeft.width - Settings.PADDING.ColInter) DIV 2; |
1339 | ColRight := ColLeft; |
1376 | ColRight := ColLeft; |
1340 | ColRight.Left := ColLeft.Left + ColLeft.Width + Settings.PADDING.ColInter |
1377 | ColRight.left := ColLeft.left + ColLeft.width + Settings.PADDING.ColInter |
1341 | END; |
1378 | END; |
1342 | W := ColLeft.Width; |
1379 | W := ColLeft.width; |
1343 | Lines := ColLeft.Height DIV LineH; |
1380 | Lines := ColLeft.height DIV LineH; |
1344 | ColLeft.Height := Lines * LineH; |
1381 | ColLeft.height := Lines * LineH; |
1345 | ColRight.Height := ColLeft.Height; |
1382 | ColRight.height := ColLeft.height; |
Line 1346... | Line 1383... | ||
1346 | END FontSizeChange; |
1383 | END FontSizeChange; |
1347 | 1384 | ||
Line 1348... | Line 1385... | ||
1348 | 1385 | ||
1349 | PROCEDURE Resize*(Width, Height: INTEGER); |
1386 | PROCEDURE Resize*(Width, Height: INTEGER); |
1350 | VAR d: REAL; resize: BOOLEAN; sizeX, sizeY, data: INTEGER; |
1387 | VAR d: REAL; resize: BOOLEAN; sizeX, sizeY, data, back_picture: INTEGER; |
1351 | 1388 | ||
Line 1372... | Line 1409... | ||
1372 | END stk2; |
1409 | END stk2; |
Line 1373... | Line 1410... | ||
1373 | 1410 | ||
1374 | BEGIN |
1411 | BEGIN |
1375 | resize := (Width # G.Buffer.Width) OR resized; |
1412 | resize := (Width # G.Buffer.Width) OR resized; |
1376 | G.Resize(Width, Height); |
- | |
1377 | G.SetColor(Settings.Colors[BACK_COLOR]); |
1413 | G.Resize(Width, Height); |
- | 1414 | IF (Settings.Picture # 0) & Settings.b_pict THEN |
|
- | 1415 | back_picture := LibImg.GetImg(Settings.Picture, Settings.picture_fsize, 1000000, sizeY); |
|
1378 | IF (Settings.Picture # 0) & Settings.b_pict THEN |
1416 | IF back_picture # 0 THEN |
- | 1417 | LibImg.GetInf(back_picture, sizeX, sizeY, data); |
|
1379 | LibImg.GetInf(Settings.Picture, sizeX, sizeY, data); |
1418 | G.CreateBackImg; |
- | 1419 | G.BackImage(sizeX, sizeY, data); |
|
- | 1420 | LibImg.Destroy(back_picture) |
|
1380 | G.BackImage(sizeX, sizeY, data); |
1421 | END |
1381 | ELSE |
1422 | ELSE |
1382 | G.Clear; |
1423 | G.DestroyBackImg; |
- | 1424 | G.Fill(G.Buffer, Settings.Colors[BACK_COLOR]); |
|
1383 | G.Copy(G.Buffer, G.Buffer3, 0, G.Buffer.Height, 0) |
1425 | //G.Fill(G.BackImg, Settings.Colors[BACK_COLOR]) |
Line 1384... | Line 1426... | ||
1384 | END; |
1426 | END; |
1385 | 1427 | ||
1386 | IF Font.FontH() # 0 THEN |
1428 | IF Font.FontH() # 0 THEN |
1387 | FontSizeChange(Font.FontH()); |
1429 | FontSizeChange(Font.FontH()); |
1388 | ELSE |
1430 | ELSE |
Line 1389... | Line 1431... | ||
1389 | FontSizeChange(Settings.FontSize); |
1431 | FontSizeChange(Settings.FontSize); |
1390 | END; |
1432 | END; |
1391 | 1433 | ||
1392 | ColLeft.Width := G.Buffer.Width - Settings.PADDING.Left - Settings.PADDING.Right; |
1434 | ColLeft.width := G.Buffer.Width - Settings.PADDING.Left - Settings.PADDING.Right; |
1393 | IF Settings.TwoCol THEN |
1435 | IF Settings.TwoCol THEN |
1394 | ColLeft.Width := (ColLeft.Width - Settings.PADDING.ColInter) DIV 2; |
1436 | ColLeft.width := (ColLeft.width - Settings.PADDING.ColInter) DIV 2; |
1395 | ColRight.Width := ColLeft.Width; |
1437 | ColRight.width := ColLeft.width; |
1396 | ColRight.Left := ColLeft.Left + ColLeft.Width + Settings.PADDING.ColInter |
1438 | ColRight.left := ColLeft.left + ColLeft.width + Settings.PADDING.ColInter |
1397 | END; |
1439 | END; |
1398 | ColLeft.Height := G.Buffer.Height - Settings.PADDING.Top - Settings.PADDING.Bottom; |
1440 | ColLeft.height := G.Buffer.Height - Settings.PADDING.Top - Settings.PADDING.Bottom; |
Line 1399... | Line 1441... | ||
1399 | Lines := ColLeft.Height DIV LineH; |
1441 | Lines := ColLeft.height DIV LineH; |
1400 | ColLeft.Height := Lines * LineH; |
1442 | ColLeft.height := Lines * LineH; |
1401 | ColRight.Height := ColLeft.Height; |
1443 | ColRight.height := ColLeft.height; |
1402 | 1444 | ||
1403 | IF done & resize THEN |
1445 | IF done & resize THEN |
1404 | resized := FALSE; |
1446 | resized := FALSE; |
1405 | Push(b_stk); |
1447 | Push(b_stk); |
1406 | stk1(b_stk); |
1448 | stk1(b_stk); |
1407 | stk1(f_stk); |
1449 | stk1(f_stk); |
1408 | IF contents # NIL THEN |
1450 | IF contents # NIL THEN |
1409 | d := FLT(Ycont) / FLT(contents.Ymax) |
1451 | d := FLT(Ycont) / FLT(contents.Ymax) |
1410 | END; |
1452 | END; |
1411 | W := ColLeft.Width; |
1453 | W := ColLeft.width; |
1412 | W2 := ColLeft.Width + ColRight.Width + Settings.PADDING.ColInter; |
1454 | W2 := ColLeft.width + ColRight.width + Settings.PADDING.ColInter; |
1413 | W1 := W; |
1455 | W1 := W; |
Line 1503... | Line 1545... | ||
1503 | PROCEDURE Save; |
1545 | PROCEDURE Save; |
1504 | VAR history: File.FS; win_size_x, win_size_y, size, pos: INTEGER; |
1546 | VAR history: File.FS; win_size_x, win_size_y, size, pos: INTEGER; |
Line 1505... | Line 1547... | ||
1505 | 1547 | ||
1506 | PROCEDURE WriteInt(history: File.FS; x: INTEGER); |
1548 | PROCEDURE WriteInt(history: File.FS; x: INTEGER); |
1507 | BEGIN |
1549 | BEGIN |
1508 | IF Write.Int(history, x) THEN END |
1550 | IF File.WriteInt(history, x) THEN END |
Line 1509... | Line 1551... | ||
1509 | END WriteInt; |
1551 | END WriteInt; |
1510 | 1552 | ||
1511 | PROCEDURE WriteStk(history: File.FS; VAR stk: XML.LIST; links: BOOLEAN); |
1553 | PROCEDURE WriteStk(history: File.FS; VAR stk: XML.LIST; links: BOOLEAN); |
Line 1531... | Line 1573... | ||
1531 | ELSE |
1573 | ELSE |
1532 | pos := File.Seek(history, 0 , 2) |
1574 | pos := File.Seek(history, 0 , 2) |
1533 | END; |
1575 | END; |
1534 | size := 1 + 18*4 + 1 + 8*(XML.ListCount(b_stk) + XML.ListCount(f_stk)) + 4*XML.ListCount(vis_ref) + 12; |
1576 | size := 1 + 18*4 + 1 + 8*(XML.ListCount(b_stk) + XML.ListCount(f_stk)) + 4*XML.ListCount(vis_ref) + 12; |
1535 | WriteInt(history, size); |
1577 | WriteInt(history, size); |
1536 | IF Write.Char(history, 0X) THEN END; |
1578 | IF File.WriteChar(history, 0X) THEN END; |
1537 | WriteInt(history, fsize2); |
1579 | WriteInt(history, fsize2); |
1538 | WriteInt(history, chksum); |
1580 | WriteInt(history, chksum); |
1539 | SU.GetWindowSize(win_size_x, win_size_y); |
1581 | SU.GetWindowSize(win_size_x, win_size_y); |
1540 | WriteInt(history, win_size_x); |
1582 | WriteInt(history, win_size_x); |
1541 | WriteInt(history, win_size_y); |
1583 | WriteInt(history, win_size_y); |
Line 1544... | Line 1586... | ||
1544 | WriteInt(history, Settings.PADDING.CInt); |
1586 | WriteInt(history, Settings.PADDING.CInt); |
1545 | WriteInt(history, Settings.PARAGRAPH); |
1587 | WriteInt(history, Settings.PARAGRAPH); |
1546 | WriteInt(history, Settings.EPIGRAPH); |
1588 | WriteInt(history, Settings.EPIGRAPH); |
1547 | WriteInt(history, Settings.InterLin); |
1589 | WriteInt(history, Settings.InterLin); |
Line 1548... | Line 1590... | ||
1548 | 1590 | ||
Line 1549... | Line 1591... | ||
1549 | IF Write.Boolean(history, Settings.TwoCol) THEN END; |
1591 | IF File.WriteBool(history, Settings.TwoCol) THEN END; |
1550 | 1592 | ||
1551 | WriteInt(history, Settings.FontSize); |
1593 | WriteInt(history, Settings.FontSize); |
1552 | WriteInt(history, body.num); |
1594 | WriteInt(history, body.num); |
Line 1566... | Line 1608... | ||
1566 | END Save; |
1608 | END Save; |
Line 1567... | Line 1609... | ||
1567 | 1609 | ||
1568 | 1610 | ||
1569 | PROCEDURE ReadInt(VAR x: INTEGER); |
1611 | PROCEDURE ReadInt(VAR x: INTEGER); |
1570 | BEGIN |
1612 | BEGIN |
Line 1571... | Line 1613... | ||
1571 | IF Read.Int(history, x) THEN END |
1613 | IF File.ReadInt(history, x) THEN END |
1572 | END ReadInt; |
1614 | END ReadInt; |
Line 1596... | Line 1638... | ||
1596 | ReadInt(n); |
1638 | ReadInt(n); |
1597 | WHILE n > 0 DO |
1639 | WHILE n > 0 DO |
1598 | ReadInt(num); |
1640 | ReadInt(num); |
1599 | ref := XML.GetTagByNum(num); |
1641 | ref := XML.GetTagByNum(num); |
1600 | IF ref # NIL THEN |
1642 | IF ref # NIL THEN |
1601 | PushRef(ref); |
1643 | setVisited(ref); |
1602 | ref.Visited := TRUE |
1644 | ref.Visited := TRUE; |
- | 1645 | PushRef(ref) |
|
1603 | END; |
1646 | END; |
1604 | DEC(n) |
1647 | DEC(n) |
1605 | END |
1648 | END |
1606 | END ReadRef; |
1649 | END ReadRef; |
Line 1610... | Line 1653... | ||
1610 | ReadInt(Settings.PADDING.Top); |
1653 | ReadInt(Settings.PADDING.Top); |
1611 | ReadInt(Settings.PADDING.CInt); |
1654 | ReadInt(Settings.PADDING.CInt); |
1612 | ReadInt(Settings.PARAGRAPH); |
1655 | ReadInt(Settings.PARAGRAPH); |
1613 | ReadInt(Settings.EPIGRAPH); |
1656 | ReadInt(Settings.EPIGRAPH); |
1614 | ReadInt(Settings.InterLin); |
1657 | ReadInt(Settings.InterLin); |
1615 | IF Read.Boolean(history, Settings.TwoCol) THEN END; |
1658 | IF File.ReadBool(history, Settings.TwoCol) THEN END; |
1616 | ReadInt(Settings.FontSize); |
1659 | ReadInt(Settings.FontSize); |
Line 1617... | Line 1660... | ||
1617 | 1660 | ||
Line 1618... | Line 1661... | ||
1618 | SetSettings(Settings); |
1661 | SetSettings(Settings); |
Line 1628... | Line 1671... | ||
1628 | ReadRef; |
1671 | ReadRef; |
Line 1629... | Line 1672... | ||
1629 | 1672 | ||
1630 | ReadInt(size); |
1673 | ReadInt(size); |
1631 | pos := File.Seek(history, -size, 1); |
1674 | pos := File.Seek(history, -size, 1); |
1632 | pos := File.Seek(history, 4, 1); |
1675 | pos := File.Seek(history, 4, 1); |
Line 1633... | Line 1676... | ||
1633 | IF Write.Char(history, 1X) THEN END; |
1676 | IF File.WriteChar(history, 1X) THEN END; |
1634 | 1677 | ||
1635 | Ycur := ycur; |
1678 | Ycur := ycur; |
1636 | body := XML.GetTagByNum(body_num); |
1679 | body := XML.GetTagByNum(body_num); |
Line 1646... | Line 1689... | ||
1646 | found := FALSE; |
1689 | found := FALSE; |
1647 | history := File.Open(Ini.History); |
1690 | history := File.Open(Ini.History); |
1648 | pos := File.Seek(history, -4, 2); |
1691 | pos := File.Seek(history, -4, 2); |
1649 | last := FALSE; |
1692 | last := FALSE; |
1650 | WHILE pos >= 0 DO |
1693 | WHILE pos >= 0 DO |
1651 | IF Read.Int(history, size) THEN |
1694 | IF File.ReadInt(history, size) THEN |
1652 | pos := File.Seek(history, -size + 4, 1); |
1695 | pos := File.Seek(history, -size + 4, 1); |
1653 | END; |
1696 | END; |
1654 | IF Read.Char(history, c) THEN END; |
1697 | IF File.ReadChar(history, c) THEN END; |
1655 | ReadInt(fsize); |
1698 | ReadInt(fsize); |
1656 | ReadInt(_chksum); |
1699 | ReadInt(_chksum); |
1657 | IF (c = 0X) & (fsize = fsize2) & (_chksum = chksum) THEN |
1700 | IF (c = 0X) & (fsize = fsize2) & (_chksum = chksum) THEN |
1658 | found := TRUE; |
1701 | found := TRUE; |
1659 | IF Read.Int(history, x) & Read.Int(history, y) THEN |
1702 | IF File.ReadInt(history, x) & File.ReadInt(history, y) THEN |
1660 | win_size_x := x; |
1703 | win_size_x := x; |
1661 | win_size_y := y; |
1704 | win_size_y := y; |
1662 | ELSE |
1705 | ELSE |
1663 | found := FALSE |
1706 | found := FALSE |
1664 | END; |
1707 | END; |
Line 1672... | Line 1715... | ||
1672 | ReadInt(Settings.PADDING.Top); |
1715 | ReadInt(Settings.PADDING.Top); |
1673 | ReadInt(Settings.PADDING.CInt); |
1716 | ReadInt(Settings.PADDING.CInt); |
1674 | ReadInt(Settings.PARAGRAPH); |
1717 | ReadInt(Settings.PARAGRAPH); |
1675 | ReadInt(Settings.EPIGRAPH); |
1718 | ReadInt(Settings.EPIGRAPH); |
1676 | ReadInt(Settings.InterLin); |
1719 | ReadInt(Settings.InterLin); |
1677 | IF Read.Boolean(history, Settings.TwoCol) THEN END; |
1720 | IF File.ReadBool(history, Settings.TwoCol) THEN END; |
1678 | ReadInt(Settings.FontSize); |
1721 | ReadInt(Settings.FontSize); |
1679 | END; |
1722 | END; |
1680 | pos := File.Seek(history, pos - 8, 0) |
1723 | pos := File.Seek(history, pos - 8, 0) |
1681 | END |
1724 | END |
1682 | END; |
1725 | END; |
Line 1697... | Line 1740... | ||
1697 | done := FALSE; |
1740 | done := FALSE; |
1698 | loaded := FALSE; |
1741 | loaded := FALSE; |
1699 | FilePath := FName; |
1742 | FilePath := FName; |
1700 | FileName := FName; |
1743 | FileName := FName; |
1701 | S.GetPath(FilePath); |
1744 | S.GetPath(FilePath); |
1702 | W := ColLeft.Width; |
1745 | W := ColLeft.width; |
1703 | W1 := W; |
1746 | W1 := W; |
1704 | W2 := ColLeft.Width + ColRight.Width + Settings.PADDING.ColInter; |
1747 | W2 := ColLeft.width + ColRight.width + Settings.PADDING.ColInter; |
1705 | Lines := ColLeft.Height DIV LineH; |
1748 | Lines := ColLeft.height DIV LineH; |
1706 | ColLeft.Height := Lines * LineH; |
1749 | ColLeft.height := Lines * LineH; |
1707 | PID := SU.NewThread(Start, Stack); |
1750 | PID := SU.NewThread(Start, Stack); |
1708 | WHILE ~SU.IsTerminated(PID) DO |
1751 | WHILE ~SU.IsTerminated(PID) DO |
1709 | event := SU.CheckEvent(); |
1752 | event := SU.CheckEvent(); |
1710 | IF event = 3 THEN |
1753 | IF event = 3 THEN |
1711 | SU.TerminateThreadId(PID); |
1754 | SU.TerminateThreadId(PID); |