1 // Created on: 2011-10-25
2 // Created by: Sergey ZERCHANINOV
3 // Copyright (c) 2011-2012 OPEN CASCADE SAS
5 // The content of this file is subject to the Open CASCADE Technology Public
6 // License Version 6.5 (the "License"). You may not use the content of this file
7 // except in compliance with the License. Please obtain a copy of the License
8 // at http://www.opencascade.org and read it completely before using this file.
10 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 // The Original Code and all software distributed under the License is
14 // distributed on an "AS IS" basis, without warranty of any kind, and the
15 // Initial Developer hereby disclaims all such warranties, including without
16 // limitation, any warranties of merchantability, fitness for a particular
17 // purpose or non-infringement. Please see the License for the specific terms
18 // and conditions governing the rights and limitations under the License.
21 #include <OpenGl_GlCore11.hxx>
23 #include <OpenGl_Display.hxx>
34 #define DASH_DOT_LS 0xFF18
35 #define DASH_LS 0xFFC0
36 #define DASH_DDOT_LS 0xFF24
38 static const unsigned int myInteriors[TEL_HS_USER_DEF_START][32] =
110 //TEL_HS_CROSS_SPARSE
355 //TEL_HS_DIAG_45_SPARSE
390 //TEL_HS_DIAG_135_SPARSE
425 //TEL_HS_HORIZONTAL_SPARSE
460 //TEL_HS_VERTICAL_SPARSE
497 /* Following Section relates to POLYMARKER */
499 #define TEL_NO_OF_SIZES 13
500 #define TEL_NB_OF_LISTS 5
505 Tfloat width, height;
508 typedef PM_FONT_INFO* pm_font_info;
510 #define PM_PLUS_10_NUM 9*2
511 #define PM_PLUS_15_NUM 11*2
512 #define PM_PLUS_20_NUM 13*2
513 #define PM_PLUS_25_NUM 15*2
514 #define PM_PLUS_30_NUM 17*3
515 #define PM_PLUS_35_NUM 19*3
516 #define PM_PLUS_40_NUM 21*3
517 #define PM_PLUS_45_NUM 23*3
518 #define PM_PLUS_50_NUM 25*4
519 #define PM_PLUS_55_NUM 27*4
520 #define PM_PLUS_60_NUM 29*4
521 #define PM_PLUS_65_NUM 31*4
522 #define PM_PLUS_70_NUM 32*4
524 #define PM_STAR_10_NUM 9
525 #define PM_STAR_15_NUM 11*2
526 #define PM_STAR_20_NUM 13*2
527 #define PM_STAR_25_NUM 15*2
528 #define PM_STAR_30_NUM 17*2
529 #define PM_STAR_35_NUM 19*2
530 #define PM_STAR_40_NUM 21*3
531 #define PM_STAR_45_NUM 23*3
532 #define PM_STAR_50_NUM 25*3
533 #define PM_STAR_55_NUM 27*3
534 #define PM_STAR_60_NUM 29*4
535 #define PM_STAR_65_NUM 32*4
536 #define PM_STAR_70_NUM 32*4
538 #define PM_CIRC_10_NUM 7
539 #define PM_CIRC_15_NUM 9*2
540 #define PM_CIRC_20_NUM 9*2
541 #define PM_CIRC_25_NUM 11*2
542 #define PM_CIRC_30_NUM 13*2
543 #define PM_CIRC_35_NUM 15*2
544 #define PM_CIRC_40_NUM 17*3
545 #define PM_CIRC_45_NUM 19*3
546 #define PM_CIRC_50_NUM 21*3
547 #define PM_CIRC_55_NUM 23*3
548 #define PM_CIRC_60_NUM 25*4
549 #define PM_CIRC_65_NUM 27*4
550 #define PM_CIRC_70_NUM 29*4
552 #define PM_CROSS_10_NUM 7
553 #define PM_CROSS_15_NUM 9*2
554 #define PM_CROSS_20_NUM 11*2
555 #define PM_CROSS_25_NUM 13*2
556 #define PM_CROSS_30_NUM 15*2
557 #define PM_CROSS_35_NUM 17*3
558 #define PM_CROSS_40_NUM 19*3
559 #define PM_CROSS_45_NUM 21*3
560 #define PM_CROSS_50_NUM 23*3
561 #define PM_CROSS_55_NUM 25*4
562 #define PM_CROSS_60_NUM 27*4
563 #define PM_CROSS_65_NUM 32*4
564 #define PM_CROSS_70_NUM 32*4
566 #define PM_PLUS_10_OFT 0
567 #define PM_PLUS_15_OFT PM_PLUS_10_OFT + PM_PLUS_10_NUM
568 #define PM_PLUS_20_OFT PM_PLUS_15_OFT + PM_PLUS_15_NUM
569 #define PM_PLUS_25_OFT PM_PLUS_20_OFT + PM_PLUS_20_NUM
570 #define PM_PLUS_30_OFT PM_PLUS_25_OFT + PM_PLUS_25_NUM
571 #define PM_PLUS_35_OFT PM_PLUS_30_OFT + PM_PLUS_30_NUM
572 #define PM_PLUS_40_OFT PM_PLUS_35_OFT + PM_PLUS_35_NUM
573 #define PM_PLUS_45_OFT PM_PLUS_40_OFT + PM_PLUS_40_NUM
574 #define PM_PLUS_50_OFT PM_PLUS_45_OFT + PM_PLUS_45_NUM
575 #define PM_PLUS_55_OFT PM_PLUS_50_OFT + PM_PLUS_50_NUM
576 #define PM_PLUS_60_OFT PM_PLUS_55_OFT + PM_PLUS_55_NUM
577 #define PM_PLUS_65_OFT PM_PLUS_60_OFT + PM_PLUS_60_NUM
578 #define PM_PLUS_70_OFT PM_PLUS_65_OFT + PM_PLUS_65_NUM
580 #define PM_STAR_10_OFT PM_PLUS_70_OFT + PM_PLUS_70_NUM
581 #define PM_STAR_15_OFT PM_STAR_10_OFT + PM_STAR_10_NUM
582 #define PM_STAR_20_OFT PM_STAR_15_OFT + PM_STAR_15_NUM
583 #define PM_STAR_25_OFT PM_STAR_20_OFT + PM_STAR_20_NUM
584 #define PM_STAR_30_OFT PM_STAR_25_OFT + PM_STAR_25_NUM
585 #define PM_STAR_35_OFT PM_STAR_30_OFT + PM_STAR_30_NUM
586 #define PM_STAR_40_OFT PM_STAR_35_OFT + PM_STAR_35_NUM
587 #define PM_STAR_45_OFT PM_STAR_40_OFT + PM_STAR_40_NUM
588 #define PM_STAR_50_OFT PM_STAR_45_OFT + PM_STAR_45_NUM
589 #define PM_STAR_55_OFT PM_STAR_50_OFT + PM_STAR_50_NUM
590 #define PM_STAR_60_OFT PM_STAR_55_OFT + PM_STAR_55_NUM
591 #define PM_STAR_65_OFT PM_STAR_60_OFT + PM_STAR_60_NUM
592 #define PM_STAR_70_OFT PM_STAR_65_OFT + PM_STAR_65_NUM
594 #define PM_CIRC_10_OFT PM_STAR_70_OFT + PM_STAR_70_NUM
595 #define PM_CIRC_15_OFT PM_CIRC_10_OFT + PM_CIRC_10_NUM
596 #define PM_CIRC_20_OFT PM_CIRC_15_OFT + PM_CIRC_15_NUM
597 #define PM_CIRC_25_OFT PM_CIRC_20_OFT + PM_CIRC_20_NUM
598 #define PM_CIRC_30_OFT PM_CIRC_25_OFT + PM_CIRC_25_NUM
599 #define PM_CIRC_35_OFT PM_CIRC_30_OFT + PM_CIRC_30_NUM
600 #define PM_CIRC_40_OFT PM_CIRC_35_OFT + PM_CIRC_35_NUM
601 #define PM_CIRC_45_OFT PM_CIRC_40_OFT + PM_CIRC_40_NUM
602 #define PM_CIRC_50_OFT PM_CIRC_45_OFT + PM_CIRC_45_NUM
603 #define PM_CIRC_55_OFT PM_CIRC_50_OFT + PM_CIRC_50_NUM
604 #define PM_CIRC_60_OFT PM_CIRC_55_OFT + PM_CIRC_55_NUM
605 #define PM_CIRC_65_OFT PM_CIRC_60_OFT + PM_CIRC_60_NUM
606 #define PM_CIRC_70_OFT PM_CIRC_65_OFT + PM_CIRC_65_NUM
608 #define PM_CROSS_10_OFT PM_CIRC_70_OFT + PM_CIRC_70_NUM
609 #define PM_CROSS_15_OFT PM_CROSS_10_OFT + PM_CROSS_10_NUM
610 #define PM_CROSS_20_OFT PM_CROSS_15_OFT + PM_CROSS_15_NUM
611 #define PM_CROSS_25_OFT PM_CROSS_20_OFT + PM_CROSS_20_NUM
612 #define PM_CROSS_30_OFT PM_CROSS_25_OFT + PM_CROSS_25_NUM
613 #define PM_CROSS_35_OFT PM_CROSS_30_OFT + PM_CROSS_30_NUM
614 #define PM_CROSS_40_OFT PM_CROSS_35_OFT + PM_CROSS_35_NUM
615 #define PM_CROSS_45_OFT PM_CROSS_40_OFT + PM_CROSS_40_NUM
616 #define PM_CROSS_50_OFT PM_CROSS_45_OFT + PM_CROSS_45_NUM
617 #define PM_CROSS_55_OFT PM_CROSS_50_OFT + PM_CROSS_50_NUM
618 #define PM_CROSS_60_OFT PM_CROSS_55_OFT + PM_CROSS_55_NUM
619 #define PM_CROSS_65_OFT PM_CROSS_60_OFT + PM_CROSS_60_NUM
620 #define PM_CROSS_70_OFT PM_CROSS_65_OFT + PM_CROSS_65_NUM
622 static const PM_FONT_INFO arrPMFontInfo[][TEL_NO_OF_SIZES] =
624 /* TOM_POINT - not used */
640 {{"\001", 9.f, 9.f, PM_PLUS_10_OFT},
641 {"\002", 11.f, 11.f, PM_PLUS_15_OFT},
642 {"\003", 13.f, 13.f, PM_PLUS_20_OFT},
643 {"\004", 15.f, 15.f, PM_PLUS_25_OFT},
644 {"\005", 17.f, 17.f, PM_PLUS_30_OFT},
645 {"\006", 19.f, 19.f, PM_PLUS_35_OFT},
646 {"\007", 21.f, 21.f, PM_PLUS_40_OFT},
647 {"\010", 23.f, 23.f, PM_PLUS_45_OFT},
648 {"\011", 25.f, 25.f, PM_PLUS_50_OFT},
649 {"\012", 27.f, 27.f, PM_PLUS_55_OFT},
650 {"\013", 29.f, 29.f, PM_PLUS_60_OFT},
651 {"\014", 31.f, 31.f, PM_PLUS_65_OFT},
652 {"\015", 32.f, 32.f, PM_PLUS_70_OFT}},
655 {{"\016", 7.f, 9.f, PM_STAR_10_OFT},
656 {"\017", 9.f, 11.f, PM_STAR_15_OFT},
657 {"\020", 11.f, 13.f, PM_STAR_20_OFT},
658 {"\021", 13.f, 15.f, PM_STAR_25_OFT},
659 {"\022", 13.f, 17.f, PM_STAR_30_OFT},
660 {"\023", 15.f, 19.f, PM_STAR_35_OFT},
661 {"\024", 17.f, 21.f, PM_STAR_40_OFT},
662 {"\025", 19.f, 23.f, PM_STAR_45_OFT},
663 {"\026", 21.f, 25.f, PM_STAR_50_OFT},
664 {"\027", 23.f, 27.f, PM_STAR_55_OFT},
665 {"\030", 25.f, 29.f, PM_STAR_60_OFT},
666 {"\031", 32.f, 32.f, PM_STAR_65_OFT},
667 {"\032", 32.f, 32.f, PM_STAR_70_OFT}},
670 {{"\033", 7.f, 7.f, PM_CIRC_10_OFT},
671 {"\034", 9.f, 9.f, PM_CIRC_15_OFT},
672 {"\035", 9.f, 9.f, PM_CIRC_20_OFT},
673 {"\036", 11.f, 11.f, PM_CIRC_25_OFT},
674 {"\037", 13.f, 13.f, PM_CIRC_30_OFT},
675 {"\040", 15.f, 15.f, PM_CIRC_35_OFT},
676 {"\041", 17.f, 17.f, PM_CIRC_40_OFT},
677 {"\042", 19.f, 19.f, PM_CIRC_45_OFT},
678 {"\043", 21.f, 21.f, PM_CIRC_50_OFT},
679 {"\044", 23.f, 23.f, PM_CIRC_55_OFT},
680 {"\045", 25.f, 25.f, PM_CIRC_60_OFT},
681 {"\046", 27.f, 27.f, PM_CIRC_65_OFT},
682 {"\047", 29.f, 29.f, PM_CIRC_70_OFT}},
685 {{"\050", 7.f, 7.f, PM_CROSS_10_OFT},
686 {"\051", 9.f, 9.f, PM_CROSS_15_OFT},
687 {"\052", 11.f, 11.f, PM_CROSS_20_OFT},
688 {"\053", 13.f, 13.f, PM_CROSS_25_OFT},
689 {"\054", 15.f, 15.f, PM_CROSS_30_OFT},
690 {"\055", 17.f, 17.f, PM_CROSS_35_OFT},
691 {"\056", 19.f, 19.f, PM_CROSS_40_OFT},
692 {"\057", 21.f, 21.f, PM_CROSS_45_OFT},
693 {"\060", 23.f, 23.f, PM_CROSS_50_OFT},
694 {"\061", 25.f, 25.f, PM_CROSS_55_OFT},
695 {"\062", 27.f, 27.f, PM_CROSS_60_OFT},
696 {"\063", 32.f, 32.f, PM_CROSS_65_OFT},
697 {"\064", 32.f, 32.f, PM_CROSS_70_OFT}},
699 /* TOM_O_POINT - not used */
760 static const unsigned char myMarkerRaster[] =
772 0x08,0x00, /* PLUS 9x9 = 1.0 */
784 0x04,0x00, /* PLUS 11x11 = 1.5 */
798 0x02,0x00,/* PLUS 13x13 = 2.0 */
814 0x01,0x00,/* PLUS 15x15 = 2.5 */
832 0x00,0x80, 0x00,/* PLUS 17x17 = 3.0 */
852 0x00,0x40, 0x00,/* PLUS 19x19 = 3.5 */
874 0x00,0x20, 0x00,/* PLUS 21x21 = 4.0 */
898 0x00,0x10, 0x00,/* PLUS 23x23 = 4.5 */
900 0x00,0x08, 0x00,0x00,
901 0x00,0x08, 0x00,0x00,
902 0x00,0x08, 0x00,0x00,
903 0x00,0x08, 0x00,0x00,
904 0x00,0x08, 0x00,0x00,
905 0x00,0x08, 0x00,0x00,
906 0x00,0x08, 0x00,0x00,
907 0x00,0x08, 0x00,0x00,
908 0x00,0x08, 0x00,0x00,
909 0x00,0x08, 0x00,0x00,
910 0x00,0x08, 0x00,0x00,
911 0x00,0x08, 0x00,0x00,
912 0xff,0xff, 0xff,0x80,
913 0x00,0x08, 0x00,0x00,
914 0x00,0x08, 0x00,0x00,
915 0x00,0x08, 0x00,0x00,
916 0x00,0x08, 0x00,0x00,
917 0x00,0x08, 0x00,0x00,
918 0x00,0x08, 0x00,0x00,
919 0x00,0x08, 0x00,0x00,
920 0x00,0x08, 0x00,0x00,
921 0x00,0x08, 0x00,0x00,
922 0x00,0x08, 0x00,0x00,
923 0x00,0x08, 0x00,0x00,
924 0x00,0x08, 0x00,0x00,/* PLUS 25x25 = 5.0 */
926 0x00,0x04, 0x00,0x00,
927 0x00,0x04, 0x00,0x00,
928 0x00,0x04, 0x00,0x00,
929 0x00,0x04, 0x00,0x00,
930 0x00,0x04, 0x00,0x00,
931 0x00,0x04, 0x00,0x00,
932 0x00,0x04, 0x00,0x00,
933 0x00,0x04, 0x00,0x00,
934 0x00,0x04, 0x00,0x00,
935 0x00,0x04, 0x00,0x00,
936 0x00,0x04, 0x00,0x00,
937 0x00,0x04, 0x00,0x00,
938 0x00,0x04, 0x00,0x00,
939 0xff,0xff, 0xff,0xe0,
940 0x00,0x04, 0x00,0x00,
941 0x00,0x04, 0x00,0x00,
942 0x00,0x04, 0x00,0x00,
943 0x00,0x04, 0x00,0x00,
944 0x00,0x04, 0x00,0x00,
945 0x00,0x04, 0x00,0x00,
946 0x00,0x04, 0x00,0x00,
947 0x00,0x04, 0x00,0x00,
948 0x00,0x04, 0x00,0x00,
949 0x00,0x04, 0x00,0x00,
950 0x00,0x04, 0x00,0x00,
951 0x00,0x04, 0x00,0x00,
952 0x00,0x04, 0x00,0x00,/* PLUS 27x27 = 5.5 */
954 0x00,0x02, 0x00,0x00,
955 0x00,0x02, 0x00,0x00,
956 0x00,0x02, 0x00,0x00,
957 0x00,0x02, 0x00,0x00,
958 0x00,0x02, 0x00,0x00,
959 0x00,0x02, 0x00,0x00,
960 0x00,0x02, 0x00,0x00,
961 0x00,0x02, 0x00,0x00,
962 0x00,0x02, 0x00,0x00,
963 0x00,0x02, 0x00,0x00,
964 0x00,0x02, 0x00,0x00,
965 0x00,0x02, 0x00,0x00,
966 0x00,0x02, 0x00,0x00,
967 0x00,0x02, 0x00,0x00,
968 0xff,0xff, 0xff,0xf8,
969 0x00,0x02, 0x00,0x00,
970 0x00,0x02, 0x00,0x00,
971 0x00,0x02, 0x00,0x00,
972 0x00,0x02, 0x00,0x00,
973 0x00,0x02, 0x00,0x00,
974 0x00,0x02, 0x00,0x00,
975 0x00,0x02, 0x00,0x00,
976 0x00,0x02, 0x00,0x00,
977 0x00,0x02, 0x00,0x00,
978 0x00,0x02, 0x00,0x00,
979 0x00,0x02, 0x00,0x00,
980 0x00,0x02, 0x00,0x00,
981 0x00,0x02, 0x00,0x00,
982 0x00,0x02, 0x00,0x00,/* PLUS 29x29 = 6.0 */
984 0x00,0x01, 0x00,0x00,
985 0x00,0x01, 0x00,0x00,
986 0x00,0x01, 0x00,0x00,
987 0x00,0x01, 0x00,0x00,
988 0x00,0x01, 0x00,0x00,
989 0x00,0x01, 0x00,0x00,
990 0x00,0x01, 0x00,0x00,
991 0x00,0x01, 0x00,0x00,
992 0x00,0x01, 0x00,0x00,
993 0x00,0x01, 0x00,0x00,
994 0x00,0x01, 0x00,0x00,
995 0x00,0x01, 0x00,0x00,
996 0x00,0x01, 0x00,0x00,
997 0x00,0x01, 0x00,0x00,
998 0x00,0x01, 0x00,0x00,
999 0xff,0xff, 0xff,0xfd,
1000 0x00,0x01, 0x00,0x00,
1001 0x00,0x01, 0x00,0x00,
1002 0x00,0x01, 0x00,0x00,
1003 0x00,0x01, 0x00,0x00,
1004 0x00,0x01, 0x00,0x00,
1005 0x00,0x01, 0x00,0x00,
1006 0x00,0x01, 0x00,0x00,
1007 0x00,0x01, 0x00,0x00,
1008 0x00,0x01, 0x00,0x00,
1009 0x00,0x01, 0x00,0x00,
1010 0x00,0x01, 0x00,0x00,
1011 0x00,0x01, 0x00,0x00,
1012 0x00,0x01, 0x00,0x00,
1013 0x00,0x01, 0x00,0x00,
1014 0x00,0x01, 0x00,0x00,/* PLUS 31x31 = 6.5 */
1016 0x00,0x00, 0x80,0x00,
1017 0x00,0x00, 0x80,0x00,
1018 0x00,0x00, 0x80,0x00,
1019 0x00,0x00, 0x80,0x00,
1020 0x00,0x00, 0x80,0x00,
1021 0x00,0x00, 0x80,0x00,
1022 0x00,0x00, 0x80,0x00,
1023 0x00,0x00, 0x80,0x00,
1024 0x00,0x00, 0x80,0x00,
1025 0x00,0x00, 0x80,0x00,
1026 0x00,0x00, 0x80,0x00,
1027 0x00,0x00, 0x80,0x00,
1028 0x00,0x00, 0x80,0x00,
1029 0x00,0x00, 0x80,0x00,
1030 0x00,0x00, 0x80,0x00,
1031 0x00,0x00, 0x80,0x00,
1032 0xff,0xff, 0xff,0xff,
1033 0x00,0x00, 0x80,0x00,
1034 0x00,0x00, 0x80,0x00,
1035 0x00,0x00, 0x80,0x00,
1036 0x00,0x00, 0x80,0x00,
1037 0x00,0x00, 0x80,0x00,
1038 0x00,0x00, 0x80,0x00,
1039 0x00,0x00, 0x80,0x00,
1040 0x00,0x00, 0x80,0x00,
1041 0x00,0x00, 0x80,0x00,
1042 0x00,0x00, 0x80,0x00,
1043 0x00,0x00, 0x80,0x00,
1044 0x00,0x00, 0x80,0x00,
1045 0x00,0x00, 0x80,0x00,
1046 0x00,0x00, 0x80,0x00,
1047 0x00,0x00, 0x80,0x00,/* PLUS 32x32 = 7.0 */
1059 0x10,/* STAR 7x9 = 1.0 */
1071 0x08,0x00,/* STAR 9x11 = 1.5 */
1085 0x04,0x00,/* STAR 11x13 = 2.0 */
1101 0x02,0x00,/* STAR 13x15 = 2.5 */
1119 0x02,0x00,/* STAR 13x17 = 3.0 */
1139 0x01,0x00,/* STAR 15x19 = 3.5 */
1161 0x00,0x80, 0x00,/* STAR 17x21 = 4.0 */
1185 0x00,0x40, 0x00,/* STAR 19x23 = 4.5 */
1211 0x00,0x20, 0x00,/* STAR 21x25 = 5.0 */
1239 0x00,0x10, 0x00,/* STAR 23x27 = 5.5 */
1241 0x00,0x08, 0x00,0x00,
1242 0x00,0x08, 0x00,0x00,
1243 0x00,0x08, 0x00,0x00,
1244 0x00,0x08, 0x00,0x00,
1245 0x00,0x08, 0x00,0x00,
1246 0x00,0x08, 0x00,0x00,
1247 0x00,0x08, 0x00,0x00,
1248 0x80,0x08, 0x00,0x80,
1249 0x60,0x08, 0x03,0x00,
1250 0x18,0x08, 0x0c,0x00,
1251 0x04,0x08, 0x30,0x00,
1252 0x03,0x08, 0x40,0x00,
1253 0x00,0xc9, 0x80,0x00,
1254 0x00,0x3e, 0x00,0x00,
1255 0x00,0x08, 0x00,0x00,
1256 0x00,0x3e, 0x00,0x00,
1257 0x00,0xc9, 0x80,0x00,
1258 0x03,0x08, 0x40,0x00,
1259 0x04,0x08, 0x30,0x00,
1260 0x18,0x08, 0x0c,0x00,
1261 0x60,0x08, 0x03,0x00,
1262 0x80,0x08, 0x00,0x80,
1263 0x00,0x08, 0x00,0x00,
1264 0x00,0x08, 0x00,0x00,
1265 0x00,0x08, 0x00,0x00,
1266 0x00,0x08, 0x00,0x00,
1267 0x00,0x08, 0x00,0x00,
1268 0x00,0x08, 0x00,0x00,
1269 0x00,0x08, 0x00,0x00,/* STAR 25x29 = 6.0 */
1271 0x00,0x00, 0x80,0x00,
1272 0x00,0x00, 0x80,0x00,
1273 0x00,0x00, 0x80,0x00,
1274 0x00,0x00, 0x80,0x00,
1275 0x00,0x00, 0x80,0x00,
1276 0x00,0x00, 0x80,0x00,
1277 0x00,0x00, 0x80,0x00,
1278 0x00,0x00, 0x80,0x00,
1279 0x00,0x00, 0x80,0x00,
1280 0x30,0x00, 0x80,0x06,
1281 0x0c,0x00, 0x80,0x18,
1282 0x03,0x00, 0x80,0x60,
1283 0x00,0xc0, 0x81,0x80,
1284 0x00,0x30, 0x86,0x00,
1285 0x00,0x0c, 0x98,0x00,
1286 0x00,0x03, 0xe0,0x00,
1287 0x00,0x03, 0xe0,0x00,
1288 0x00,0x0c, 0x98,0x00,
1289 0x00,0x30, 0x86,0x00,
1290 0x00,0xc0, 0x81,0x80,
1291 0x03,0x00, 0x80,0x60,
1292 0x0c,0x00, 0x80,0x18,
1293 0x30,0x00, 0x80,0x06,
1294 0x00,0x00, 0x80,0x00,
1295 0x00,0x00, 0x80,0x00,
1296 0x00,0x00, 0x80,0x00,
1297 0x00,0x00, 0x80,0x00,
1298 0x00,0x00, 0x80,0x00,
1299 0x00,0x00, 0x80,0x00,
1300 0x00,0x00, 0x80,0x00,
1301 0x00,0x00, 0x00,0x00,
1302 0x00,0x00, 0x00,0x00,/* STAR 32x32 = 6.5 */
1304 0x00, 0x00, 0x80, 0x00,
1305 0x00, 0x00, 0x80, 0x00,
1306 0x00, 0x00, 0x80, 0x00,
1307 0x00, 0x00, 0x80, 0x00,
1308 0x00, 0x00, 0x80, 0x00,
1309 0x00, 0x00, 0x80, 0x00,
1310 0x00, 0x00, 0x80, 0x00,
1311 0x00, 0x00, 0x80, 0x00,
1312 0x10, 0x00, 0x80, 0x04,
1313 0x0c, 0x00, 0x80, 0x18,
1314 0x02, 0x00, 0x80, 0x20,
1315 0x01, 0x80, 0x80, 0xc0,
1316 0x00, 0x40, 0x81, 0x00,
1317 0x00, 0x30, 0x86, 0x00,
1318 0x00, 0x08, 0x88, 0x00,
1319 0x00, 0x06, 0xb0, 0x00,
1320 0x00, 0x01, 0xc0, 0x00,
1321 0x00, 0x06, 0xb0, 0x00,
1322 0x00, 0x08, 0x88, 0x00,
1323 0x00, 0x30, 0x86, 0x00,
1324 0x00, 0x40, 0x81, 0x00,
1325 0x01, 0x80, 0x80, 0xc0,
1326 0x02, 0x00, 0x80, 0x20,
1327 0x0c, 0x00, 0x80, 0x18,
1328 0x10, 0x00, 0x80, 0x04,
1329 0x00, 0x00, 0x80, 0x00,
1330 0x00, 0x00, 0x80, 0x00,
1331 0x00, 0x00, 0x80, 0x00,
1332 0x00, 0x00, 0x80, 0x00,
1333 0x00, 0x00, 0x80, 0x00,
1334 0x00, 0x00, 0x80, 0x00,
1335 0x00, 0x00, 0x80, 0x00,/* STAR 32x32 = 7.0 */
1345 0x38,/* CIRC 7x7 = 1.0 */
1355 0x00,0x00,/*CIRC 9x9 = 1.5 */
1365 0x3e,0x00,/* CIRC 9x9 = 2.0 */
1377 0x1f,0x00,/* CIRC 11x11 = 2.5 */
1391 0x0f,0x80,/* CIRC 13x13 = 3.0 */
1407 0x07,0xc0,/* CIRC 15x15 = 3.5 */
1425 0x03,0xe0, 0x00,/* CIRC 17x17 = 4.0 */
1445 0x03,0xf8, 0x00,/* CIRC 19x19 = 4.5 */
1467 0x01,0xfc, 0x00,/* CIRC 21x21 = 5.0 */
1491 0x00,0xfe, 0x00,/* CIRC 23x23 = 5.5 */
1493 0x00,0x7f, 0x00,0x00,
1494 0x01,0x80, 0xc0,0x00,
1495 0x06,0x00, 0x30,0x00,
1496 0x08,0x00, 0x08,0x00,
1497 0x10,0x00, 0x04,0x00,
1498 0x20,0x00, 0x02,0x00,
1499 0x20,0x00, 0x02,0x00,
1500 0x40,0x00, 0x01,0x00,
1501 0x40,0x00, 0x01,0x00,
1502 0x80,0x00, 0x00,0x80,
1503 0x80,0x00, 0x00,0x80,
1504 0x80,0x00, 0x00,0x80,
1505 0x80,0x00, 0x00,0x80,
1506 0x80,0x00, 0x00,0x80,
1507 0x80,0x00, 0x00,0x80,
1508 0x80,0x00, 0x00,0x80,
1509 0x40,0x00, 0x01,0x00,
1510 0x40,0x00, 0x01,0x00,
1511 0x20,0x00, 0x02,0x00,
1512 0x20,0x00, 0x02,0x00,
1513 0x10,0x00, 0x04,0x00,
1514 0x08,0x00, 0x08,0x00,
1515 0x06,0x00, 0x30,0x00,
1516 0x01,0x80, 0xc0,0x00,
1517 0x00,0x7f, 0x00,0x00,/* CIRC 25x25 = 6.0 */
1519 0x00,0x3f, 0x80,0x00,
1520 0x01,0xc0, 0x70,0x00,
1521 0x03,0x00, 0x18,0x00,
1522 0x0c,0x00, 0x06,0x00,
1523 0x18,0x00, 0x03,0x00,
1524 0x10,0x00, 0x01,0x00,
1525 0x20,0x00, 0x00,0x80,
1526 0x60,0x00, 0x00,0xc0,
1527 0x40,0x00, 0x00,0x40,
1528 0x40,0x00, 0x00,0x40,
1529 0x80,0x00, 0x00,0x20,
1530 0x80,0x00, 0x00,0x20,
1531 0x80,0x00, 0x00,0x20,
1532 0x80,0x00, 0x00,0x20,
1533 0x80,0x00, 0x00,0x20,
1534 0x80,0x00, 0x00,0x20,
1535 0x80,0x00, 0x00,0x20,
1536 0x40,0x00, 0x00,0x40,
1537 0x40,0x00, 0x00,0x40,
1538 0x60,0x00, 0x00,0xc0,
1539 0x20,0x00, 0x00,0x80,
1540 0x10,0x00, 0x01,0x00,
1541 0x18,0x00, 0x03,0x00,
1542 0x0c,0x00, 0x06,0x00,
1543 0x03,0x00, 0x18,0x00,
1544 0x01,0xc0, 0x70,0x00,
1545 0x00,0x3f, 0x80,0x00,/* CIRC 27x27 = 6.5 */
1547 0x00,0x1f, 0xc0,0x00,
1548 0x00,0xe0, 0x38,0x00,
1549 0x01,0x00, 0x04,0x00,
1550 0x06,0x00, 0x03,0x00,
1551 0x08,0x00, 0x00,0x80,
1552 0x10,0x00, 0x00,0x40,
1553 0x10,0x00, 0x00,0x40,
1554 0x20,0x00, 0x00,0x20,
1555 0x40,0x00, 0x00,0x10,
1556 0x40,0x00, 0x00,0x10,
1557 0x40,0x00, 0x00,0x10,
1558 0x80,0x00, 0x00,0x08,
1559 0x80,0x00, 0x00,0x08,
1560 0x80,0x00, 0x00,0x08,
1561 0x80,0x00, 0x00,0x08,
1562 0x80,0x00, 0x00,0x08,
1563 0x80,0x00, 0x00,0x08,
1564 0x80,0x00, 0x00,0x08,
1565 0x40,0x00, 0x00,0x10,
1566 0x40,0x00, 0x00,0x10,
1567 0x40,0x00, 0x00,0x10,
1568 0x20,0x00, 0x00,0x20,
1569 0x10,0x00, 0x00,0x40,
1570 0x10,0x00, 0x00,0x40,
1571 0x08,0x00, 0x00,0x80,
1572 0x06,0x00, 0x03,0x00,
1573 0x01,0x00, 0x04,0x00,
1574 0x00,0xe0, 0x38,0x00,
1575 0x00,0x1f, 0xc0,0x00, /* CIRC 29x29 = 7.0 */
1585 0x82,/* CROSS 7x7 = 1.0 */
1595 0x80,0x80,/* CROSS 9x9 = 1.5 */
1607 0x80,0x20,/* CROSS 11x11 = 2.0 */
1621 0x80,0x08,/* CROSS 13x13 = 2.5 */
1637 0x80,0x02,/* CROSS 15x15 = 3.0 */
1655 0x80,0x00, 0x80,/* CROSS 17x17 = 3.5 */
1675 0x80,0x00, 0x20,/* CROSS 19x19 = 4.0 */
1697 0x80,0x00, 0x08,/* CROSS 21x21 = 4.5 */
1721 0x80,0x00, 0x02,/* CROSS 23x23 = 5.0 */
1723 0x80,0x00, 0x00,0x80,
1724 0x40,0x00, 0x01,0x00,
1725 0x20,0x00, 0x02,0x00,
1726 0x10,0x00, 0x04,0x00,
1727 0x08,0x00, 0x08,0x00,
1728 0x04,0x00, 0x10,0x00,
1729 0x02,0x00, 0x20,0x00,
1730 0x01,0x00, 0x40,0x00,
1731 0x00,0x80, 0x80,0x00,
1732 0x00,0x41, 0x00,0x00,
1733 0x00,0x22, 0x00,0x00,
1734 0x00,0x14, 0x00,0x00,
1735 0x00,0x08, 0x00,0x00,
1736 0x00,0x14, 0x00,0x00,
1737 0x00,0x22, 0x00,0x00,
1738 0x00,0x41, 0x00,0x00,
1739 0x00,0x80, 0x80,0x00,
1740 0x01,0x00, 0x40,0x00,
1741 0x02,0x00, 0x20,0x00,
1742 0x04,0x00, 0x10,0x00,
1743 0x08,0x00, 0x08,0x00,
1744 0x10,0x00, 0x04,0x00,
1745 0x20,0x00, 0x02,0x00,
1746 0x40,0x00, 0x01,0x00,
1747 0x80,0x00, 0x00,0x80,/* CROSS 25x25 = 5.5 */
1749 0x80,0x00, 0x00,0x20,
1750 0x40,0x00, 0x00,0x40,
1751 0x20,0x00, 0x00,0x80,
1752 0x10,0x00, 0x01,0x00,
1753 0x08,0x00, 0x02,0x00,
1754 0x04,0x00, 0x04,0x00,
1755 0x02,0x00, 0x08,0x00,
1756 0x01,0x00, 0x10,0x00,
1757 0x00,0x80, 0x20,0x00,
1758 0x00,0x40, 0x40,0x00,
1759 0x00,0x20, 0x80,0x00,
1760 0x00,0x11, 0x00,0x00,
1761 0x00,0x0a, 0x00,0x00,
1762 0x00,0x04, 0x00,0x00,
1763 0x00,0x0a, 0x00,0x00,
1764 0x00,0x11, 0x00,0x00,
1765 0x00,0x20, 0x80,0x00,
1766 0x00,0x40, 0x40,0x00,
1767 0x00,0x80, 0x20,0x00,
1768 0x01,0x00, 0x10,0x00,
1769 0x02,0x00, 0x08,0x00,
1770 0x04,0x00, 0x04,0x00,
1771 0x08,0x00, 0x02,0x00,
1772 0x10,0x00, 0x01,0x00,
1773 0x20,0x00, 0x00,0x80,
1774 0x40,0x00, 0x00,0x40,
1775 0x80,0x00, 0x00,0x20,/* CROSS 27x27 = 6.0 */
1777 0x00,0x00, 0x00,0x00,
1778 0x00,0x00, 0x00,0x00,
1779 0x20,0x00, 0x00,0x04,
1780 0x10,0x00, 0x00,0x08,
1781 0x08,0x00, 0x00,0x10,
1782 0x04,0x00, 0x00,0x20,
1783 0x02,0x00, 0x00,0x40,
1784 0x01,0x00, 0x00,0x80,
1785 0x00,0x80, 0x01,0x00,
1786 0x00,0x40, 0x02,0x00,
1787 0x00,0x20, 0x04,0x00,
1788 0x00,0x10, 0x08,0x00,
1789 0x00,0x08, 0x10,0x00,
1790 0x00,0x04, 0x20,0x00,
1791 0x00,0x02, 0x40,0x00,
1792 0x00,0x01, 0x80,0x00,
1793 0x00,0x01, 0x80,0x00,
1794 0x00,0x02, 0x40,0x00,
1795 0x00,0x04, 0x20,0x00,
1796 0x00,0x08, 0x10,0x00,
1797 0x00,0x10, 0x08,0x00,
1798 0x00,0x20, 0x04,0x00,
1799 0x00,0x40, 0x02,0x00,
1800 0x00,0x80, 0x01,0x00,
1801 0x01,0x00, 0x00,0x80,
1802 0x02,0x00, 0x00,0x40,
1803 0x04,0x00, 0x00,0x20,
1804 0x08,0x00, 0x00,0x10,
1805 0x10,0x00, 0x00,0x08,
1806 0x20,0x00, 0x00,0x04,
1807 0x00,0x00, 0x00,0x00,
1808 0x00,0x00, 0x00,0x00,/* CROSS 32x32 = 6.5 */
1810 0x00,0x00, 0x00,0x00,
1811 0x40,0x00, 0x00,0x02,
1812 0x20,0x00, 0x00,0x04,
1813 0x10,0x00, 0x00,0x08,
1814 0x08,0x00, 0x00,0x10,
1815 0x04,0x00, 0x00,0x20,
1816 0x02,0x00, 0x00,0x40,
1817 0x01,0x00, 0x00,0x80,
1818 0x00,0x80, 0x01,0x00,
1819 0x00,0x40, 0x02,0x00,
1820 0x00,0x20, 0x04,0x00,
1821 0x00,0x10, 0x08,0x00,
1822 0x00,0x08, 0x10,0x00,
1823 0x00,0x04, 0x20,0x00,
1824 0x00,0x02, 0x40,0x00,
1825 0x00,0x01, 0x80,0x00,
1826 0x00,0x01, 0x80,0x00,
1827 0x00,0x02, 0x40,0x00,
1828 0x00,0x04, 0x20,0x00,
1829 0x00,0x08, 0x10,0x00,
1830 0x00,0x10, 0x08,0x00,
1831 0x00,0x20, 0x04,0x00,
1832 0x00,0x40, 0x02,0x00,
1833 0x00,0x80, 0x01,0x00,
1834 0x01,0x00, 0x00,0x80,
1835 0x02,0x00, 0x00,0x40,
1836 0x04,0x00, 0x00,0x20,
1837 0x08,0x00, 0x00,0x10,
1838 0x10,0x00, 0x00,0x08,
1839 0x20,0x00, 0x00,0x04,
1840 0x40,0x00, 0x00,0x02,
1841 0x00,0x00, 0x00,0x00/* CROSS 32x32 = 7.0 */
1844 /*----------------------------------------------------------------------*/
1847 void OpenGl_Display::InitAttributes ()
1849 // Return if already initialized
1850 if (myLinestyleBase) return;
1852 myLinestyleBase = glGenLists(5);
1856 glNewList( (GLuint)myLinestyleBase+(GLuint)Aspect_TOL_DASH, GL_COMPILE );
1857 glLineStipple(1, DASH_LS );
1860 glNewList( (GLuint)myLinestyleBase+(GLuint)Aspect_TOL_DOT, GL_COMPILE );
1861 glLineStipple(1, DOT_LS );
1864 glNewList( (GLuint)myLinestyleBase+(GLuint)Aspect_TOL_DOTDASH, GL_COMPILE );
1865 glLineStipple(1, DASH_DOT_LS );
1868 glNewList( (GLuint)myLinestyleBase+(GLuint)Aspect_TOL_USERDEFINED, GL_COMPILE );
1869 glLineStipple(1, DASH_DDOT_LS );
1873 * GL_POLYGON_STIPPLE
1874 * need 32x32 stipple patterns
1876 const int nbi = sizeof(myInteriors)/(32*sizeof(unsigned int));
1877 myPatternBase = glGenLists(TEL_HS_USER_DEF_START);
1879 for( i = 1; i < TEL_HS_USER_DEF_START; i++ )
1881 glNewList( (GLuint)myPatternBase + i, GL_COMPILE );
1882 glPolygonStipple((const GLubyte *) (myInteriors[i<nbi? i : 0]));
1886 glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
1888 myMarkerBase = glGenLists (60);
1890 for( i = 1; i < TEL_NB_OF_LISTS; i++ )
1891 for( j = 0; j < TEL_NO_OF_SIZES; j++ )
1893 const Tfloat w = arrPMFontInfo[i][j].width;
1894 const Tfloat h = arrPMFontInfo[i][j].height;
1895 const Tint offset = arrPMFontInfo[i][j].offset;
1897 glNewList( (const GLuint)(arrPMFontInfo[i][j].str[0] + myMarkerBase), GL_COMPILE );
1898 glBitmap( (GLsizei)w, (GLsizei)h, (GLfloat)(0.5f * w), (GLfloat)(0.5f * h), 0.f, 0.f, (const GLubyte *) &myMarkerRaster[offset] );
1903 /*----------------------------------------------------------------------*/
1905 #define TEL_PM_START_SIZE 1.F
1906 #define TEL_PM_END_SIZE 7.F
1909 const char * OpenGl_Display::GetStringForMarker (const Aspect_TypeOfMarker AType, const Tfloat AVal) const
1911 const int atype = (int)(( AType > Aspect_TOM_O_X )? Aspect_TOM_X : AType);
1913 const float index = ( float )(TEL_NO_OF_SIZES-1) * (AVal - ( float )TEL_PM_START_SIZE ) / ( float )(TEL_PM_END_SIZE - TEL_PM_START_SIZE);
1914 int id = (int)(index + 0.5F);
1916 else if (id >= TEL_NO_OF_SIZES) id = TEL_NO_OF_SIZES-1;
1918 return arrPMFontInfo[atype][id].str;
1921 /*----------------------------------------------------------------------*/
1923 void OpenGl_Display::SetBaseForMarker () const
1925 glListBase( (const GLuint) myMarkerBase );
1928 /*----------------------------------------------------------------------*/
1930 void OpenGl_Display::SetTypeOfLine (const Aspect_TypeOfLine AType) const
1932 if (AType != Aspect_TOL_SOLID)
1934 glCallList((GLuint)myLinestyleBase+(GLuint)AType);
1935 glEnable( GL_LINE_STIPPLE );
1937 gl2psEnable( GL2PS_LINE_STIPPLE );
1942 glDisable( GL_LINE_STIPPLE );
1944 gl2psDisable( GL2PS_LINE_STIPPLE );
1949 /*----------------------------------------------------------------------*/
1951 void OpenGl_Display::SetTypeOfHatch (const int AType) const
1955 glCallList((GLuint)myPatternBase+(GLuint)AType);
1956 glEnable( GL_POLYGON_STIPPLE );
1959 glDisable( GL_POLYGON_STIPPLE );
1962 /*----------------------------------------------------------------------*/