1 // File: OpenGl_Display_2.cxx
2 // Created: 25 October 2011
3 // Author: Sergey ZERCHANINOV
4 // Copyright: OPEN CASCADE 2011
6 #include <OpenGl_Display.hxx>
12 #include <OpenGl_tgl_all.hxx>
15 /*----------------------------------------------------------------------*/
21 #define DASH_DOT_LS 0xFF18
22 #define DASH_LS 0xFFC0
23 #define DASH_DDOT_LS 0xFF24
25 static const unsigned int myInteriors[TEL_HS_USER_DEF_START][32] =
342 //TEL_HS_DIAG_45_SPARSE
377 //TEL_HS_DIAG_135_SPARSE
412 //TEL_HS_HORIZONTAL_SPARSE
447 //TEL_HS_VERTICAL_SPARSE
484 /* Following Section relates to POLYMARKER */
486 #define TEL_NO_OF_SIZES 13
487 #define TEL_NB_OF_LISTS 5
492 Tfloat width, height;
495 typedef PM_FONT_INFO* pm_font_info;
497 #define PM_PLUS_10_NUM 9*2
498 #define PM_PLUS_15_NUM 11*2
499 #define PM_PLUS_20_NUM 13*2
500 #define PM_PLUS_25_NUM 15*2
501 #define PM_PLUS_30_NUM 17*3
502 #define PM_PLUS_35_NUM 19*3
503 #define PM_PLUS_40_NUM 21*3
504 #define PM_PLUS_45_NUM 23*3
505 #define PM_PLUS_50_NUM 25*4
506 #define PM_PLUS_55_NUM 27*4
507 #define PM_PLUS_60_NUM 29*4
508 #define PM_PLUS_65_NUM 31*4
509 #define PM_PLUS_70_NUM 32*4
511 #define PM_STAR_10_NUM 9
512 #define PM_STAR_15_NUM 11*2
513 #define PM_STAR_20_NUM 13*2
514 #define PM_STAR_25_NUM 15*2
515 #define PM_STAR_30_NUM 17*2
516 #define PM_STAR_35_NUM 19*2
517 #define PM_STAR_40_NUM 21*3
518 #define PM_STAR_45_NUM 23*3
519 #define PM_STAR_50_NUM 25*3
520 #define PM_STAR_55_NUM 27*3
521 #define PM_STAR_60_NUM 29*4
522 #define PM_STAR_65_NUM 32*4
523 #define PM_STAR_70_NUM 32*4
525 #define PM_CIRC_10_NUM 7
526 #define PM_CIRC_15_NUM 9*2
527 #define PM_CIRC_20_NUM 9*2
528 #define PM_CIRC_25_NUM 11*2
529 #define PM_CIRC_30_NUM 13*2
530 #define PM_CIRC_35_NUM 15*2
531 #define PM_CIRC_40_NUM 17*3
532 #define PM_CIRC_45_NUM 19*3
533 #define PM_CIRC_50_NUM 21*3
534 #define PM_CIRC_55_NUM 23*3
535 #define PM_CIRC_60_NUM 25*4
536 #define PM_CIRC_65_NUM 27*4
537 #define PM_CIRC_70_NUM 29*4
539 #define PM_CROSS_10_NUM 7
540 #define PM_CROSS_15_NUM 9*2
541 #define PM_CROSS_20_NUM 11*2
542 #define PM_CROSS_25_NUM 13*2
543 #define PM_CROSS_30_NUM 15*2
544 #define PM_CROSS_35_NUM 17*3
545 #define PM_CROSS_40_NUM 19*3
546 #define PM_CROSS_45_NUM 21*3
547 #define PM_CROSS_50_NUM 23*3
548 #define PM_CROSS_55_NUM 25*4
549 #define PM_CROSS_60_NUM 27*4
550 #define PM_CROSS_65_NUM 32*4
551 #define PM_CROSS_70_NUM 32*4
553 #define PM_PLUS_10_OFT 0
554 #define PM_PLUS_15_OFT PM_PLUS_10_OFT + PM_PLUS_10_NUM
555 #define PM_PLUS_20_OFT PM_PLUS_15_OFT + PM_PLUS_15_NUM
556 #define PM_PLUS_25_OFT PM_PLUS_20_OFT + PM_PLUS_20_NUM
557 #define PM_PLUS_30_OFT PM_PLUS_25_OFT + PM_PLUS_25_NUM
558 #define PM_PLUS_35_OFT PM_PLUS_30_OFT + PM_PLUS_30_NUM
559 #define PM_PLUS_40_OFT PM_PLUS_35_OFT + PM_PLUS_35_NUM
560 #define PM_PLUS_45_OFT PM_PLUS_40_OFT + PM_PLUS_40_NUM
561 #define PM_PLUS_50_OFT PM_PLUS_45_OFT + PM_PLUS_45_NUM
562 #define PM_PLUS_55_OFT PM_PLUS_50_OFT + PM_PLUS_50_NUM
563 #define PM_PLUS_60_OFT PM_PLUS_55_OFT + PM_PLUS_55_NUM
564 #define PM_PLUS_65_OFT PM_PLUS_60_OFT + PM_PLUS_60_NUM
565 #define PM_PLUS_70_OFT PM_PLUS_65_OFT + PM_PLUS_65_NUM
567 #define PM_STAR_10_OFT PM_PLUS_70_OFT + PM_PLUS_70_NUM
568 #define PM_STAR_15_OFT PM_STAR_10_OFT + PM_STAR_10_NUM
569 #define PM_STAR_20_OFT PM_STAR_15_OFT + PM_STAR_15_NUM
570 #define PM_STAR_25_OFT PM_STAR_20_OFT + PM_STAR_20_NUM
571 #define PM_STAR_30_OFT PM_STAR_25_OFT + PM_STAR_25_NUM
572 #define PM_STAR_35_OFT PM_STAR_30_OFT + PM_STAR_30_NUM
573 #define PM_STAR_40_OFT PM_STAR_35_OFT + PM_STAR_35_NUM
574 #define PM_STAR_45_OFT PM_STAR_40_OFT + PM_STAR_40_NUM
575 #define PM_STAR_50_OFT PM_STAR_45_OFT + PM_STAR_45_NUM
576 #define PM_STAR_55_OFT PM_STAR_50_OFT + PM_STAR_50_NUM
577 #define PM_STAR_60_OFT PM_STAR_55_OFT + PM_STAR_55_NUM
578 #define PM_STAR_65_OFT PM_STAR_60_OFT + PM_STAR_60_NUM
579 #define PM_STAR_70_OFT PM_STAR_65_OFT + PM_STAR_65_NUM
581 #define PM_CIRC_10_OFT PM_STAR_70_OFT + PM_STAR_70_NUM
582 #define PM_CIRC_15_OFT PM_CIRC_10_OFT + PM_CIRC_10_NUM
583 #define PM_CIRC_20_OFT PM_CIRC_15_OFT + PM_CIRC_15_NUM
584 #define PM_CIRC_25_OFT PM_CIRC_20_OFT + PM_CIRC_20_NUM
585 #define PM_CIRC_30_OFT PM_CIRC_25_OFT + PM_CIRC_25_NUM
586 #define PM_CIRC_35_OFT PM_CIRC_30_OFT + PM_CIRC_30_NUM
587 #define PM_CIRC_40_OFT PM_CIRC_35_OFT + PM_CIRC_35_NUM
588 #define PM_CIRC_45_OFT PM_CIRC_40_OFT + PM_CIRC_40_NUM
589 #define PM_CIRC_50_OFT PM_CIRC_45_OFT + PM_CIRC_45_NUM
590 #define PM_CIRC_55_OFT PM_CIRC_50_OFT + PM_CIRC_50_NUM
591 #define PM_CIRC_60_OFT PM_CIRC_55_OFT + PM_CIRC_55_NUM
592 #define PM_CIRC_65_OFT PM_CIRC_60_OFT + PM_CIRC_60_NUM
593 #define PM_CIRC_70_OFT PM_CIRC_65_OFT + PM_CIRC_65_NUM
595 #define PM_CROSS_10_OFT PM_CIRC_70_OFT + PM_CIRC_70_NUM
596 #define PM_CROSS_15_OFT PM_CROSS_10_OFT + PM_CROSS_10_NUM
597 #define PM_CROSS_20_OFT PM_CROSS_15_OFT + PM_CROSS_15_NUM
598 #define PM_CROSS_25_OFT PM_CROSS_20_OFT + PM_CROSS_20_NUM
599 #define PM_CROSS_30_OFT PM_CROSS_25_OFT + PM_CROSS_25_NUM
600 #define PM_CROSS_35_OFT PM_CROSS_30_OFT + PM_CROSS_30_NUM
601 #define PM_CROSS_40_OFT PM_CROSS_35_OFT + PM_CROSS_35_NUM
602 #define PM_CROSS_45_OFT PM_CROSS_40_OFT + PM_CROSS_40_NUM
603 #define PM_CROSS_50_OFT PM_CROSS_45_OFT + PM_CROSS_45_NUM
604 #define PM_CROSS_55_OFT PM_CROSS_50_OFT + PM_CROSS_50_NUM
605 #define PM_CROSS_60_OFT PM_CROSS_55_OFT + PM_CROSS_55_NUM
606 #define PM_CROSS_65_OFT PM_CROSS_60_OFT + PM_CROSS_60_NUM
607 #define PM_CROSS_70_OFT PM_CROSS_65_OFT + PM_CROSS_65_NUM
609 static const PM_FONT_INFO arrPMFontInfo[][TEL_NO_OF_SIZES] =
611 /* TOM_POINT - not used */
627 {{"\001", 9.f, 9.f, PM_PLUS_10_OFT},
628 {"\002", 11.f, 11.f, PM_PLUS_15_OFT},
629 {"\003", 13.f, 13.f, PM_PLUS_20_OFT},
630 {"\004", 15.f, 15.f, PM_PLUS_25_OFT},
631 {"\005", 17.f, 17.f, PM_PLUS_30_OFT},
632 {"\006", 19.f, 19.f, PM_PLUS_35_OFT},
633 {"\007", 21.f, 21.f, PM_PLUS_40_OFT},
634 {"\010", 23.f, 23.f, PM_PLUS_45_OFT},
635 {"\011", 25.f, 25.f, PM_PLUS_50_OFT},
636 {"\012", 27.f, 27.f, PM_PLUS_55_OFT},
637 {"\013", 29.f, 29.f, PM_PLUS_60_OFT},
638 {"\014", 31.f, 31.f, PM_PLUS_65_OFT},
639 {"\015", 32.f, 32.f, PM_PLUS_70_OFT}},
642 {{"\016", 7.f, 9.f, PM_STAR_10_OFT},
643 {"\017", 9.f, 11.f, PM_STAR_15_OFT},
644 {"\020", 11.f, 13.f, PM_STAR_20_OFT},
645 {"\021", 13.f, 15.f, PM_STAR_25_OFT},
646 {"\022", 13.f, 17.f, PM_STAR_30_OFT},
647 {"\023", 15.f, 19.f, PM_STAR_35_OFT},
648 {"\024", 17.f, 21.f, PM_STAR_40_OFT},
649 {"\025", 19.f, 23.f, PM_STAR_45_OFT},
650 {"\026", 21.f, 25.f, PM_STAR_50_OFT},
651 {"\027", 23.f, 27.f, PM_STAR_55_OFT},
652 {"\030", 25.f, 29.f, PM_STAR_60_OFT},
653 {"\031", 32.f, 32.f, PM_STAR_65_OFT},
654 {"\032", 32.f, 32.f, PM_STAR_70_OFT}},
657 {{"\033", 7.f, 7.f, PM_CIRC_10_OFT},
658 {"\034", 9.f, 9.f, PM_CIRC_15_OFT},
659 {"\035", 9.f, 9.f, PM_CIRC_20_OFT},
660 {"\036", 11.f, 11.f, PM_CIRC_25_OFT},
661 {"\037", 13.f, 13.f, PM_CIRC_30_OFT},
662 {"\040", 15.f, 15.f, PM_CIRC_35_OFT},
663 {"\041", 17.f, 17.f, PM_CIRC_40_OFT},
664 {"\042", 19.f, 19.f, PM_CIRC_45_OFT},
665 {"\043", 21.f, 21.f, PM_CIRC_50_OFT},
666 {"\044", 23.f, 23.f, PM_CIRC_55_OFT},
667 {"\045", 25.f, 25.f, PM_CIRC_60_OFT},
668 {"\046", 27.f, 27.f, PM_CIRC_65_OFT},
669 {"\047", 29.f, 29.f, PM_CIRC_70_OFT}},
672 {{"\050", 7.f, 7.f, PM_CROSS_10_OFT},
673 {"\051", 9.f, 9.f, PM_CROSS_15_OFT},
674 {"\052", 11.f, 11.f, PM_CROSS_20_OFT},
675 {"\053", 13.f, 13.f, PM_CROSS_25_OFT},
676 {"\054", 15.f, 15.f, PM_CROSS_30_OFT},
677 {"\055", 17.f, 17.f, PM_CROSS_35_OFT},
678 {"\056", 19.f, 19.f, PM_CROSS_40_OFT},
679 {"\057", 21.f, 21.f, PM_CROSS_45_OFT},
680 {"\060", 23.f, 23.f, PM_CROSS_50_OFT},
681 {"\061", 25.f, 25.f, PM_CROSS_55_OFT},
682 {"\062", 27.f, 27.f, PM_CROSS_60_OFT},
683 {"\063", 32.f, 32.f, PM_CROSS_65_OFT},
684 {"\064", 32.f, 32.f, PM_CROSS_70_OFT}},
686 /* TOM_O_POINT - not used */
747 static const unsigned char myMarkerRaster[] =
759 0x08,0x00, /* PLUS 9x9 = 1.0 */
771 0x04,0x00, /* PLUS 11x11 = 1.5 */
785 0x02,0x00,/* PLUS 13x13 = 2.0 */
801 0x01,0x00,/* PLUS 15x15 = 2.5 */
819 0x00,0x80, 0x00,/* PLUS 17x17 = 3.0 */
839 0x00,0x40, 0x00,/* PLUS 19x19 = 3.5 */
861 0x00,0x20, 0x00,/* PLUS 21x21 = 4.0 */
885 0x00,0x10, 0x00,/* PLUS 23x23 = 4.5 */
887 0x00,0x08, 0x00,0x00,
888 0x00,0x08, 0x00,0x00,
889 0x00,0x08, 0x00,0x00,
890 0x00,0x08, 0x00,0x00,
891 0x00,0x08, 0x00,0x00,
892 0x00,0x08, 0x00,0x00,
893 0x00,0x08, 0x00,0x00,
894 0x00,0x08, 0x00,0x00,
895 0x00,0x08, 0x00,0x00,
896 0x00,0x08, 0x00,0x00,
897 0x00,0x08, 0x00,0x00,
898 0x00,0x08, 0x00,0x00,
899 0xff,0xff, 0xff,0x80,
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,/* PLUS 25x25 = 5.0 */
913 0x00,0x04, 0x00,0x00,
914 0x00,0x04, 0x00,0x00,
915 0x00,0x04, 0x00,0x00,
916 0x00,0x04, 0x00,0x00,
917 0x00,0x04, 0x00,0x00,
918 0x00,0x04, 0x00,0x00,
919 0x00,0x04, 0x00,0x00,
920 0x00,0x04, 0x00,0x00,
921 0x00,0x04, 0x00,0x00,
922 0x00,0x04, 0x00,0x00,
923 0x00,0x04, 0x00,0x00,
924 0x00,0x04, 0x00,0x00,
925 0x00,0x04, 0x00,0x00,
926 0xff,0xff, 0xff,0xe0,
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 0x00,0x04, 0x00,0x00,/* PLUS 27x27 = 5.5 */
941 0x00,0x02, 0x00,0x00,
942 0x00,0x02, 0x00,0x00,
943 0x00,0x02, 0x00,0x00,
944 0x00,0x02, 0x00,0x00,
945 0x00,0x02, 0x00,0x00,
946 0x00,0x02, 0x00,0x00,
947 0x00,0x02, 0x00,0x00,
948 0x00,0x02, 0x00,0x00,
949 0x00,0x02, 0x00,0x00,
950 0x00,0x02, 0x00,0x00,
951 0x00,0x02, 0x00,0x00,
952 0x00,0x02, 0x00,0x00,
953 0x00,0x02, 0x00,0x00,
954 0x00,0x02, 0x00,0x00,
955 0xff,0xff, 0xff,0xf8,
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 0x00,0x02, 0x00,0x00,
969 0x00,0x02, 0x00,0x00,/* PLUS 29x29 = 6.0 */
971 0x00,0x01, 0x00,0x00,
972 0x00,0x01, 0x00,0x00,
973 0x00,0x01, 0x00,0x00,
974 0x00,0x01, 0x00,0x00,
975 0x00,0x01, 0x00,0x00,
976 0x00,0x01, 0x00,0x00,
977 0x00,0x01, 0x00,0x00,
978 0x00,0x01, 0x00,0x00,
979 0x00,0x01, 0x00,0x00,
980 0x00,0x01, 0x00,0x00,
981 0x00,0x01, 0x00,0x00,
982 0x00,0x01, 0x00,0x00,
983 0x00,0x01, 0x00,0x00,
984 0x00,0x01, 0x00,0x00,
985 0x00,0x01, 0x00,0x00,
986 0xff,0xff, 0xff,0xfd,
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 0x00,0x01, 0x00,0x00,
1000 0x00,0x01, 0x00,0x00,
1001 0x00,0x01, 0x00,0x00,/* PLUS 31x31 = 6.5 */
1003 0x00,0x00, 0x80,0x00,
1004 0x00,0x00, 0x80,0x00,
1005 0x00,0x00, 0x80,0x00,
1006 0x00,0x00, 0x80,0x00,
1007 0x00,0x00, 0x80,0x00,
1008 0x00,0x00, 0x80,0x00,
1009 0x00,0x00, 0x80,0x00,
1010 0x00,0x00, 0x80,0x00,
1011 0x00,0x00, 0x80,0x00,
1012 0x00,0x00, 0x80,0x00,
1013 0x00,0x00, 0x80,0x00,
1014 0x00,0x00, 0x80,0x00,
1015 0x00,0x00, 0x80,0x00,
1016 0x00,0x00, 0x80,0x00,
1017 0x00,0x00, 0x80,0x00,
1018 0x00,0x00, 0x80,0x00,
1019 0xff,0xff, 0xff,0xff,
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 0x00,0x00, 0x80,0x00,
1033 0x00,0x00, 0x80,0x00,
1034 0x00,0x00, 0x80,0x00,/* PLUS 32x32 = 7.0 */
1046 0x10,/* STAR 7x9 = 1.0 */
1058 0x08,0x00,/* STAR 9x11 = 1.5 */
1072 0x04,0x00,/* STAR 11x13 = 2.0 */
1088 0x02,0x00,/* STAR 13x15 = 2.5 */
1106 0x02,0x00,/* STAR 13x17 = 3.0 */
1126 0x01,0x00,/* STAR 15x19 = 3.5 */
1148 0x00,0x80, 0x00,/* STAR 17x21 = 4.0 */
1172 0x00,0x40, 0x00,/* STAR 19x23 = 4.5 */
1198 0x00,0x20, 0x00,/* STAR 21x25 = 5.0 */
1226 0x00,0x10, 0x00,/* STAR 23x27 = 5.5 */
1228 0x00,0x08, 0x00,0x00,
1229 0x00,0x08, 0x00,0x00,
1230 0x00,0x08, 0x00,0x00,
1231 0x00,0x08, 0x00,0x00,
1232 0x00,0x08, 0x00,0x00,
1233 0x00,0x08, 0x00,0x00,
1234 0x00,0x08, 0x00,0x00,
1235 0x80,0x08, 0x00,0x80,
1236 0x60,0x08, 0x03,0x00,
1237 0x18,0x08, 0x0c,0x00,
1238 0x04,0x08, 0x30,0x00,
1239 0x03,0x08, 0x40,0x00,
1240 0x00,0xc9, 0x80,0x00,
1241 0x00,0x3e, 0x00,0x00,
1242 0x00,0x08, 0x00,0x00,
1243 0x00,0x3e, 0x00,0x00,
1244 0x00,0xc9, 0x80,0x00,
1245 0x03,0x08, 0x40,0x00,
1246 0x04,0x08, 0x30,0x00,
1247 0x18,0x08, 0x0c,0x00,
1248 0x60,0x08, 0x03,0x00,
1249 0x80,0x08, 0x00,0x80,
1250 0x00,0x08, 0x00,0x00,
1251 0x00,0x08, 0x00,0x00,
1252 0x00,0x08, 0x00,0x00,
1253 0x00,0x08, 0x00,0x00,
1254 0x00,0x08, 0x00,0x00,
1255 0x00,0x08, 0x00,0x00,
1256 0x00,0x08, 0x00,0x00,/* STAR 25x29 = 6.0 */
1258 0x00,0x00, 0x80,0x00,
1259 0x00,0x00, 0x80,0x00,
1260 0x00,0x00, 0x80,0x00,
1261 0x00,0x00, 0x80,0x00,
1262 0x00,0x00, 0x80,0x00,
1263 0x00,0x00, 0x80,0x00,
1264 0x00,0x00, 0x80,0x00,
1265 0x00,0x00, 0x80,0x00,
1266 0x00,0x00, 0x80,0x00,
1267 0x30,0x00, 0x80,0x06,
1268 0x0c,0x00, 0x80,0x18,
1269 0x03,0x00, 0x80,0x60,
1270 0x00,0xc0, 0x81,0x80,
1271 0x00,0x30, 0x86,0x00,
1272 0x00,0x0c, 0x98,0x00,
1273 0x00,0x03, 0xe0,0x00,
1274 0x00,0x03, 0xe0,0x00,
1275 0x00,0x0c, 0x98,0x00,
1276 0x00,0x30, 0x86,0x00,
1277 0x00,0xc0, 0x81,0x80,
1278 0x03,0x00, 0x80,0x60,
1279 0x0c,0x00, 0x80,0x18,
1280 0x30,0x00, 0x80,0x06,
1281 0x00,0x00, 0x80,0x00,
1282 0x00,0x00, 0x80,0x00,
1283 0x00,0x00, 0x80,0x00,
1284 0x00,0x00, 0x80,0x00,
1285 0x00,0x00, 0x80,0x00,
1286 0x00,0x00, 0x80,0x00,
1287 0x00,0x00, 0x80,0x00,
1288 0x00,0x00, 0x00,0x00,
1289 0x00,0x00, 0x00,0x00,/* STAR 32x32 = 6.5 */
1291 0x00, 0x00, 0x80, 0x00,
1292 0x00, 0x00, 0x80, 0x00,
1293 0x00, 0x00, 0x80, 0x00,
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 0x10, 0x00, 0x80, 0x04,
1300 0x0c, 0x00, 0x80, 0x18,
1301 0x02, 0x00, 0x80, 0x20,
1302 0x01, 0x80, 0x80, 0xc0,
1303 0x00, 0x40, 0x81, 0x00,
1304 0x00, 0x30, 0x86, 0x00,
1305 0x00, 0x08, 0x88, 0x00,
1306 0x00, 0x06, 0xb0, 0x00,
1307 0x00, 0x01, 0xc0, 0x00,
1308 0x00, 0x06, 0xb0, 0x00,
1309 0x00, 0x08, 0x88, 0x00,
1310 0x00, 0x30, 0x86, 0x00,
1311 0x00, 0x40, 0x81, 0x00,
1312 0x01, 0x80, 0x80, 0xc0,
1313 0x02, 0x00, 0x80, 0x20,
1314 0x0c, 0x00, 0x80, 0x18,
1315 0x10, 0x00, 0x80, 0x04,
1316 0x00, 0x00, 0x80, 0x00,
1317 0x00, 0x00, 0x80, 0x00,
1318 0x00, 0x00, 0x80, 0x00,
1319 0x00, 0x00, 0x80, 0x00,
1320 0x00, 0x00, 0x80, 0x00,
1321 0x00, 0x00, 0x80, 0x00,
1322 0x00, 0x00, 0x80, 0x00,/* STAR 32x32 = 7.0 */
1332 0x38,/* CIRC 7x7 = 1.0 */
1342 0x00,0x00,/*CIRC 9x9 = 1.5 */
1352 0x3e,0x00,/* CIRC 9x9 = 2.0 */
1364 0x1f,0x00,/* CIRC 11x11 = 2.5 */
1378 0x0f,0x80,/* CIRC 13x13 = 3.0 */
1394 0x07,0xc0,/* CIRC 15x15 = 3.5 */
1412 0x03,0xe0, 0x00,/* CIRC 17x17 = 4.0 */
1432 0x03,0xf8, 0x00,/* CIRC 19x19 = 4.5 */
1454 0x01,0xfc, 0x00,/* CIRC 21x21 = 5.0 */
1478 0x00,0xfe, 0x00,/* CIRC 23x23 = 5.5 */
1480 0x00,0x7f, 0x00,0x00,
1481 0x01,0x80, 0xc0,0x00,
1482 0x06,0x00, 0x30,0x00,
1483 0x08,0x00, 0x08,0x00,
1484 0x10,0x00, 0x04,0x00,
1485 0x20,0x00, 0x02,0x00,
1486 0x20,0x00, 0x02,0x00,
1487 0x40,0x00, 0x01,0x00,
1488 0x40,0x00, 0x01,0x00,
1489 0x80,0x00, 0x00,0x80,
1490 0x80,0x00, 0x00,0x80,
1491 0x80,0x00, 0x00,0x80,
1492 0x80,0x00, 0x00,0x80,
1493 0x80,0x00, 0x00,0x80,
1494 0x80,0x00, 0x00,0x80,
1495 0x80,0x00, 0x00,0x80,
1496 0x40,0x00, 0x01,0x00,
1497 0x40,0x00, 0x01,0x00,
1498 0x20,0x00, 0x02,0x00,
1499 0x20,0x00, 0x02,0x00,
1500 0x10,0x00, 0x04,0x00,
1501 0x08,0x00, 0x08,0x00,
1502 0x06,0x00, 0x30,0x00,
1503 0x01,0x80, 0xc0,0x00,
1504 0x00,0x7f, 0x00,0x00,/* CIRC 25x25 = 6.0 */
1506 0x00,0x3f, 0x80,0x00,
1507 0x01,0xc0, 0x70,0x00,
1508 0x03,0x00, 0x18,0x00,
1509 0x0c,0x00, 0x06,0x00,
1510 0x18,0x00, 0x03,0x00,
1511 0x10,0x00, 0x01,0x00,
1512 0x20,0x00, 0x00,0x80,
1513 0x60,0x00, 0x00,0xc0,
1514 0x40,0x00, 0x00,0x40,
1515 0x40,0x00, 0x00,0x40,
1516 0x80,0x00, 0x00,0x20,
1517 0x80,0x00, 0x00,0x20,
1518 0x80,0x00, 0x00,0x20,
1519 0x80,0x00, 0x00,0x20,
1520 0x80,0x00, 0x00,0x20,
1521 0x80,0x00, 0x00,0x20,
1522 0x80,0x00, 0x00,0x20,
1523 0x40,0x00, 0x00,0x40,
1524 0x40,0x00, 0x00,0x40,
1525 0x60,0x00, 0x00,0xc0,
1526 0x20,0x00, 0x00,0x80,
1527 0x10,0x00, 0x01,0x00,
1528 0x18,0x00, 0x03,0x00,
1529 0x0c,0x00, 0x06,0x00,
1530 0x03,0x00, 0x18,0x00,
1531 0x01,0xc0, 0x70,0x00,
1532 0x00,0x3f, 0x80,0x00,/* CIRC 27x27 = 6.5 */
1534 0x00,0x1f, 0xc0,0x00,
1535 0x00,0xe0, 0x38,0x00,
1536 0x01,0x00, 0x04,0x00,
1537 0x06,0x00, 0x03,0x00,
1538 0x08,0x00, 0x00,0x80,
1539 0x10,0x00, 0x00,0x40,
1540 0x10,0x00, 0x00,0x40,
1541 0x20,0x00, 0x00,0x20,
1542 0x40,0x00, 0x00,0x10,
1543 0x40,0x00, 0x00,0x10,
1544 0x40,0x00, 0x00,0x10,
1545 0x80,0x00, 0x00,0x08,
1546 0x80,0x00, 0x00,0x08,
1547 0x80,0x00, 0x00,0x08,
1548 0x80,0x00, 0x00,0x08,
1549 0x80,0x00, 0x00,0x08,
1550 0x80,0x00, 0x00,0x08,
1551 0x80,0x00, 0x00,0x08,
1552 0x40,0x00, 0x00,0x10,
1553 0x40,0x00, 0x00,0x10,
1554 0x40,0x00, 0x00,0x10,
1555 0x20,0x00, 0x00,0x20,
1556 0x10,0x00, 0x00,0x40,
1557 0x10,0x00, 0x00,0x40,
1558 0x08,0x00, 0x00,0x80,
1559 0x06,0x00, 0x03,0x00,
1560 0x01,0x00, 0x04,0x00,
1561 0x00,0xe0, 0x38,0x00,
1562 0x00,0x1f, 0xc0,0x00, /* CIRC 29x29 = 7.0 */
1572 0x82,/* CROSS 7x7 = 1.0 */
1582 0x80,0x80,/* CROSS 9x9 = 1.5 */
1594 0x80,0x20,/* CROSS 11x11 = 2.0 */
1608 0x80,0x08,/* CROSS 13x13 = 2.5 */
1624 0x80,0x02,/* CROSS 15x15 = 3.0 */
1642 0x80,0x00, 0x80,/* CROSS 17x17 = 3.5 */
1662 0x80,0x00, 0x20,/* CROSS 19x19 = 4.0 */
1684 0x80,0x00, 0x08,/* CROSS 21x21 = 4.5 */
1708 0x80,0x00, 0x02,/* CROSS 23x23 = 5.0 */
1710 0x80,0x00, 0x00,0x80,
1711 0x40,0x00, 0x01,0x00,
1712 0x20,0x00, 0x02,0x00,
1713 0x10,0x00, 0x04,0x00,
1714 0x08,0x00, 0x08,0x00,
1715 0x04,0x00, 0x10,0x00,
1716 0x02,0x00, 0x20,0x00,
1717 0x01,0x00, 0x40,0x00,
1718 0x00,0x80, 0x80,0x00,
1719 0x00,0x41, 0x00,0x00,
1720 0x00,0x22, 0x00,0x00,
1721 0x00,0x14, 0x00,0x00,
1722 0x00,0x08, 0x00,0x00,
1723 0x00,0x14, 0x00,0x00,
1724 0x00,0x22, 0x00,0x00,
1725 0x00,0x41, 0x00,0x00,
1726 0x00,0x80, 0x80,0x00,
1727 0x01,0x00, 0x40,0x00,
1728 0x02,0x00, 0x20,0x00,
1729 0x04,0x00, 0x10,0x00,
1730 0x08,0x00, 0x08,0x00,
1731 0x10,0x00, 0x04,0x00,
1732 0x20,0x00, 0x02,0x00,
1733 0x40,0x00, 0x01,0x00,
1734 0x80,0x00, 0x00,0x80,/* CROSS 25x25 = 5.5 */
1736 0x80,0x00, 0x00,0x20,
1737 0x40,0x00, 0x00,0x40,
1738 0x20,0x00, 0x00,0x80,
1739 0x10,0x00, 0x01,0x00,
1740 0x08,0x00, 0x02,0x00,
1741 0x04,0x00, 0x04,0x00,
1742 0x02,0x00, 0x08,0x00,
1743 0x01,0x00, 0x10,0x00,
1744 0x00,0x80, 0x20,0x00,
1745 0x00,0x40, 0x40,0x00,
1746 0x00,0x20, 0x80,0x00,
1747 0x00,0x11, 0x00,0x00,
1748 0x00,0x0a, 0x00,0x00,
1749 0x00,0x04, 0x00,0x00,
1750 0x00,0x0a, 0x00,0x00,
1751 0x00,0x11, 0x00,0x00,
1752 0x00,0x20, 0x80,0x00,
1753 0x00,0x40, 0x40,0x00,
1754 0x00,0x80, 0x20,0x00,
1755 0x01,0x00, 0x10,0x00,
1756 0x02,0x00, 0x08,0x00,
1757 0x04,0x00, 0x04,0x00,
1758 0x08,0x00, 0x02,0x00,
1759 0x10,0x00, 0x01,0x00,
1760 0x20,0x00, 0x00,0x80,
1761 0x40,0x00, 0x00,0x40,
1762 0x80,0x00, 0x00,0x20,/* CROSS 27x27 = 6.0 */
1764 0x00,0x00, 0x00,0x00,
1765 0x00,0x00, 0x00,0x00,
1766 0x20,0x00, 0x00,0x04,
1767 0x10,0x00, 0x00,0x08,
1768 0x08,0x00, 0x00,0x10,
1769 0x04,0x00, 0x00,0x20,
1770 0x02,0x00, 0x00,0x40,
1771 0x01,0x00, 0x00,0x80,
1772 0x00,0x80, 0x01,0x00,
1773 0x00,0x40, 0x02,0x00,
1774 0x00,0x20, 0x04,0x00,
1775 0x00,0x10, 0x08,0x00,
1776 0x00,0x08, 0x10,0x00,
1777 0x00,0x04, 0x20,0x00,
1778 0x00,0x02, 0x40,0x00,
1779 0x00,0x01, 0x80,0x00,
1780 0x00,0x01, 0x80,0x00,
1781 0x00,0x02, 0x40,0x00,
1782 0x00,0x04, 0x20,0x00,
1783 0x00,0x08, 0x10,0x00,
1784 0x00,0x10, 0x08,0x00,
1785 0x00,0x20, 0x04,0x00,
1786 0x00,0x40, 0x02,0x00,
1787 0x00,0x80, 0x01,0x00,
1788 0x01,0x00, 0x00,0x80,
1789 0x02,0x00, 0x00,0x40,
1790 0x04,0x00, 0x00,0x20,
1791 0x08,0x00, 0x00,0x10,
1792 0x10,0x00, 0x00,0x08,
1793 0x20,0x00, 0x00,0x04,
1794 0x00,0x00, 0x00,0x00,
1795 0x00,0x00, 0x00,0x00,/* CROSS 32x32 = 6.5 */
1797 0x00,0x00, 0x00,0x00,
1798 0x40,0x00, 0x00,0x02,
1799 0x20,0x00, 0x00,0x04,
1800 0x10,0x00, 0x00,0x08,
1801 0x08,0x00, 0x00,0x10,
1802 0x04,0x00, 0x00,0x20,
1803 0x02,0x00, 0x00,0x40,
1804 0x01,0x00, 0x00,0x80,
1805 0x00,0x80, 0x01,0x00,
1806 0x00,0x40, 0x02,0x00,
1807 0x00,0x20, 0x04,0x00,
1808 0x00,0x10, 0x08,0x00,
1809 0x00,0x08, 0x10,0x00,
1810 0x00,0x04, 0x20,0x00,
1811 0x00,0x02, 0x40,0x00,
1812 0x00,0x01, 0x80,0x00,
1813 0x00,0x01, 0x80,0x00,
1814 0x00,0x02, 0x40,0x00,
1815 0x00,0x04, 0x20,0x00,
1816 0x00,0x08, 0x10,0x00,
1817 0x00,0x10, 0x08,0x00,
1818 0x00,0x20, 0x04,0x00,
1819 0x00,0x40, 0x02,0x00,
1820 0x00,0x80, 0x01,0x00,
1821 0x01,0x00, 0x00,0x80,
1822 0x02,0x00, 0x00,0x40,
1823 0x04,0x00, 0x00,0x20,
1824 0x08,0x00, 0x00,0x10,
1825 0x10,0x00, 0x00,0x08,
1826 0x20,0x00, 0x00,0x04,
1827 0x40,0x00, 0x00,0x02,
1828 0x00,0x00, 0x00,0x00/* CROSS 32x32 = 7.0 */
1831 /*----------------------------------------------------------------------*/
1834 void OpenGl_Display::InitAttributes ()
1836 // Return if already initialized
1837 if (myLinestyleBase) return;
1839 myLinestyleBase = glGenLists(5);
1843 glNewList( (GLuint)myLinestyleBase+(GLuint)Aspect_TOL_DASH, GL_COMPILE );
1844 glLineStipple(1, DASH_LS );
1847 glNewList( (GLuint)myLinestyleBase+(GLuint)Aspect_TOL_DOT, GL_COMPILE );
1848 glLineStipple(1, DOT_LS );
1851 glNewList( (GLuint)myLinestyleBase+(GLuint)Aspect_TOL_DOTDASH, GL_COMPILE );
1852 glLineStipple(1, DASH_DOT_LS );
1855 glNewList( (GLuint)myLinestyleBase+(GLuint)Aspect_TOL_USERDEFINED, GL_COMPILE );
1856 glLineStipple(1, DASH_DDOT_LS );
1860 * GL_POLYGON_STIPPLE
1861 * need 32x32 stipple patterns
1863 const int nbi = sizeof(myInteriors)/(32*sizeof(unsigned int));
1864 myPatternBase = glGenLists(TEL_HS_USER_DEF_START);
1866 for( i = 1; i < TEL_HS_USER_DEF_START; i++ )
1868 glNewList( (GLuint)myPatternBase + i, GL_COMPILE );
1869 glPolygonStipple((const GLubyte *) (myInteriors[i<nbi? i : 0]));
1873 glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
1875 myMarkerBase = glGenLists (60);
1877 for( i = 1; i < TEL_NB_OF_LISTS; i++ )
1878 for( j = 0; j < TEL_NO_OF_SIZES; j++ )
1880 const Tfloat w = arrPMFontInfo[i][j].width;
1881 const Tfloat h = arrPMFontInfo[i][j].height;
1882 const Tint offset = arrPMFontInfo[i][j].offset;
1884 glNewList( (const GLuint)(arrPMFontInfo[i][j].str[0] + myMarkerBase), GL_COMPILE );
1885 glBitmap( (GLsizei)w, (GLsizei)h, (GLfloat)(0.5f * w), (GLfloat)(0.5f * h), 0.f, 0.f, (const GLubyte *) &myMarkerRaster[offset] );
1890 /*----------------------------------------------------------------------*/
1892 #define TEL_PM_START_SIZE 1.F
1893 #define TEL_PM_END_SIZE 7.F
1896 const char * OpenGl_Display::GetStringForMarker (const Aspect_TypeOfMarker AType, const Tfloat AVal) const
1898 const int atype = (int)(( AType > Aspect_TOM_O_X )? Aspect_TOM_X : AType);
1900 const float index = ( float )(TEL_NO_OF_SIZES-1) * (AVal - ( float )TEL_PM_START_SIZE ) / ( float )(TEL_PM_END_SIZE - TEL_PM_START_SIZE);
1901 int id = (int)(index + 0.5F);
1903 else if (id >= TEL_NO_OF_SIZES) id = TEL_NO_OF_SIZES-1;
1905 return arrPMFontInfo[atype][id].str;
1908 /*----------------------------------------------------------------------*/
1910 void OpenGl_Display::SetBaseForMarker () const
1912 glListBase( (const GLuint) myMarkerBase );
1915 /*----------------------------------------------------------------------*/
1917 void OpenGl_Display::SetTypeOfLine (const Aspect_TypeOfLine AType) const
1919 if (AType != Aspect_TOL_SOLID)
1921 glCallList((GLuint)myLinestyleBase+(GLuint)AType);
1922 glEnable( GL_LINE_STIPPLE );
1924 gl2psEnable( GL2PS_LINE_STIPPLE );
1929 glDisable( GL_LINE_STIPPLE );
1931 gl2psDisable( GL2PS_LINE_STIPPLE );
1936 /*----------------------------------------------------------------------*/
1938 void OpenGl_Display::SetTypeOfHatch (const int AType) const
1942 glCallList((GLuint)myPatternBase+(GLuint)AType);
1943 glEnable( GL_POLYGON_STIPPLE );
1946 glDisable( GL_POLYGON_STIPPLE );
1949 /*----------------------------------------------------------------------*/