// Created on: 2011-10-25 // Created by: Sergey ZERCHANINOV // Copyright (c) 2011-2014 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License version 2.1 as published // by the Free Software Foundation, with special exception defined in the file // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT // distribution for complete text of the license and disclaimer of any warranty. // // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. #include #include #ifdef HAVE_CONFIG_H #include #endif #ifdef HAVE_GL2PS #include #endif #define DOT_LS 0xCCCC #define DASH_DOT_LS 0xFF18 #define DASH_LS 0xFFC0 #define DASH_DDOT_LS 0xFF24 static const unsigned int myInteriors[TEL_HS_USER_DEF_START][32] = { //TEL_HS_SOLID { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }, //TEL_HS_CROSS { 0xFFFFFFFF, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB, 0xEEEEEEEE, 0xBBBBBBBB }, //TEL_HS_CROSS_SPARSE { 0x81818181, 0x24242424, 0x18181818, 0x42424242, 0x81818181, 0x24242424, 0x18181818, 0x42424242, 0x81818181, 0x24242424, 0x18181818, 0x42424242, 0x81818181, 0x24242424, 0x18181818, 0x42424242, 0x81818181, 0x24242424, 0x18181818, 0x42424242, 0x81818181, 0x24242424, 0x18181818, 0x42424242, 0x81818181, 0x24242424, 0x18181818, 0x42424242, 0x81818181, 0x24242424, 0x18181818, 0x42424242 }, //TEL_HS_GRID { 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888, 0xFFFFFFFF, 0x88888888 }, //TEL_HS_GRID_SPARSE { 0xFFFFFFFF, 0x80808080, 0x80808080, 0x80808080, 0xFFFFFFFF, 0x80808080, 0x80808080, 0x80808080, 0xFFFFFFFF, 0x80808080, 0x80808080, 0x80808080, 0xFFFFFFFF, 0x80808080, 0x80808080, 0x80808080, 0xFFFFFFFF, 0x80808080, 0x80808080, 0x80808080, 0xFFFFFFFF, 0x80808080, 0x80808080, 0x80808080, 0xFFFFFFFF, 0x80808080, 0x80808080, 0x80808080, 0xFFFFFFFF, 0x80808080, 0x80808080, 0x80808080 }, //TEL_HS_DIAG_45 { 0x88888888, 0x22222222, 0x88888888, 0x22222222, 0x88888888, 0x22222222, 0x88888888, 0x22222222, 0x88888888, 0x22222222, 0x88888888, 0x22222222, 0x88888888, 0x22222222, 0x88888888, 0x22222222, 0x88888888, 0x22222222, 0x88888888, 0x22222222, 0x88888888, 0x22222222, 0x88888888, 0x22222222, 0x88888888, 0x22222222, 0x88888888, 0x22222222, 0x88888888, 0x22222222, 0x88888888, 0x22222222 }, //TEL_HS_DIAG_135 { 0x11111111, 0x44444444, 0x11111111, 0x44444444, 0x11111111, 0x44444444, 0x11111111, 0x44444444, 0x11111111, 0x44444444, 0x11111111, 0x44444444, 0x11111111, 0x44444444, 0x11111111, 0x44444444, 0x11111111, 0x44444444, 0x11111111, 0x44444444, 0x11111111, 0x44444444, 0x11111111, 0x44444444, 0x11111111, 0x44444444, 0x11111111, 0x44444444, 0x11111111, 0x44444444, 0x11111111, 0x44444444 }, //TEL_HS_HORIZONTAL { 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000 }, //TEL_HS_VERTICAL { 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111 }, //TEL_HS_DIAG_45_SPARSE { 0x80808080, 0x20202020, 0x08080808, 0x02020202, 0x80808080, 0x20202020, 0x08080808, 0x02020202, 0x80808080, 0x20202020, 0x08080808, 0x02020202, 0x80808080, 0x20202020, 0x08080808, 0x02020202, 0x80808080, 0x20202020, 0x08080808, 0x02020202, 0x80808080, 0x20202020, 0x08080808, 0x02020202, 0x80808080, 0x20202020, 0x08080808, 0x02020202, 0x80808080, 0x20202020, 0x08080808, 0x02020202 }, //TEL_HS_DIAG_135_SPARSE { 0x01010101, 0x04040404, 0x10101010, 0x40404040, 0x01010101, 0x04040404, 0x10101010, 0x40404040, 0x01010101, 0x04040404, 0x10101010, 0x40404040, 0x01010101, 0x04040404, 0x10101010, 0x40404040, 0x01010101, 0x04040404, 0x10101010, 0x40404040, 0x01010101, 0x04040404, 0x10101010, 0x40404040, 0x01010101, 0x04040404, 0x10101010, 0x40404040, 0x01010101, 0x04040404, 0x10101010, 0x40404040 }, //TEL_HS_HORIZONTAL_SPARSE { 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000 }, //TEL_HS_VERTICAL_SPARSE { 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010 } }; /*----------------------------------------------------------------------*/ //TsmInitAttributes void OpenGl_Display::InitAttributes () { // Return if already initialized if (myLinestyleBase) return; myLinestyleBase = glGenLists(5); /* Line */ glNewList( (GLuint)myLinestyleBase+(GLuint)Aspect_TOL_DASH, GL_COMPILE ); glLineStipple(1, DASH_LS ); glEndList(); glNewList( (GLuint)myLinestyleBase+(GLuint)Aspect_TOL_DOT, GL_COMPILE ); glLineStipple(1, DOT_LS ); glEndList(); glNewList( (GLuint)myLinestyleBase+(GLuint)Aspect_TOL_DOTDASH, GL_COMPILE ); glLineStipple(1, DASH_DOT_LS ); glEndList(); glNewList( (GLuint)myLinestyleBase+(GLuint)Aspect_TOL_USERDEFINED, GL_COMPILE ); glLineStipple(1, DASH_DDOT_LS ); glEndList(); /* FSXXX * GL_POLYGON_STIPPLE * need 32x32 stipple patterns */ const int nbi = sizeof(myInteriors)/(32*sizeof(unsigned int)); myPatternBase = glGenLists(TEL_HS_USER_DEF_START); int i; for( i = 1; i < TEL_HS_USER_DEF_START; i++ ) { glNewList( (GLuint)myPatternBase + i, GL_COMPILE ); glPolygonStipple((const GLubyte *) (myInteriors[i