mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-07 18:30:55 +03:00
0023872: Remove outdated classes OpenGl_Polygon and OpenGl_Polyline
This commit is contained in:
parent
471ce7366b
commit
27eed93740
@ -1,8 +1,6 @@
|
|||||||
InterfaceGraphic.hxx
|
InterfaceGraphic.hxx
|
||||||
InterfaceGraphic_Aspect.hxx
|
InterfaceGraphic_Aspect.hxx
|
||||||
InterfaceGraphic_Graphic3d.hxx
|
InterfaceGraphic_Graphic3d.hxx
|
||||||
InterfaceGraphic_Labels.hxx
|
|
||||||
InterfaceGraphic_Portability.hxx
|
|
||||||
InterfaceGraphic_Visual3d.hxx
|
InterfaceGraphic_Visual3d.hxx
|
||||||
InterfaceGraphic_WNT.hxx
|
InterfaceGraphic_WNT.hxx
|
||||||
InterfaceGraphic_X11.hxx
|
InterfaceGraphic_X11.hxx
|
||||||
|
@ -1,96 +0,0 @@
|
|||||||
// Copyright (c) 1991-1999 Matra Datavision
|
|
||||||
// Copyright (c) 1999-2012 OPEN CASCADE SAS
|
|
||||||
//
|
|
||||||
// The content of this file is subject to the Open CASCADE Technology Public
|
|
||||||
// License Version 6.5 (the "License"). You may not use the content of this file
|
|
||||||
// except in compliance with the License. Please obtain a copy of the License
|
|
||||||
// at http://www.opencascade.org and read it completely before using this file.
|
|
||||||
//
|
|
||||||
// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
|
|
||||||
// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
|
|
||||||
//
|
|
||||||
// The Original Code and all software distributed under the License is
|
|
||||||
// distributed on an "AS IS" basis, without warranty of any kind, and the
|
|
||||||
// Initial Developer hereby disclaims all such warranties, including without
|
|
||||||
// limitation, any warranties of merchantability, fitness for a particular
|
|
||||||
// purpose or non-infringement. Please see the License for the specific terms
|
|
||||||
// and conditions governing the rights and limitations under the License.
|
|
||||||
|
|
||||||
#ifndef LABELS_HXX_INCLUDED
|
|
||||||
#define LABELS_HXX_INCLUDED
|
|
||||||
|
|
||||||
/* gestion des labels */
|
|
||||||
|
|
||||||
/* structure, begin */
|
|
||||||
#define Structure_LABBegin 0
|
|
||||||
|
|
||||||
/* structure, transformation */
|
|
||||||
#define Structure_LABTransformation 1
|
|
||||||
|
|
||||||
/* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */
|
|
||||||
/*#define Structure_LABTransPersistenceFlag 2*/
|
|
||||||
#define Structure_LABTransPersistence 2
|
|
||||||
/*#define Structure_LABTransPersistencePoint 3*/
|
|
||||||
/* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */
|
|
||||||
|
|
||||||
/* structure, attributes */
|
|
||||||
#define Structure_LABContextLine 11
|
|
||||||
#define Structure_LABContextFillArea 12
|
|
||||||
#define Structure_LABContextMarker 13
|
|
||||||
#define Structure_LABContextText 14
|
|
||||||
|
|
||||||
/* structure, highlight, visibility, pick */
|
|
||||||
#define Structure_LABHighlight 21
|
|
||||||
#define Structure_LABVisibility 22
|
|
||||||
#define Structure_LABPick 23
|
|
||||||
#define Structure_LABNameSet 31
|
|
||||||
|
|
||||||
/* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */
|
|
||||||
/*#define Structure_LABTransPersistence 32*/
|
|
||||||
/* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */
|
|
||||||
|
|
||||||
/* structure, hierarchy */
|
|
||||||
#define Structure_LABConnect 33
|
|
||||||
|
|
||||||
/* view, index */
|
|
||||||
#define View_LABViewIndex 10
|
|
||||||
|
|
||||||
/* view, context */
|
|
||||||
#define View_LABViewContext 15
|
|
||||||
|
|
||||||
/* view, hlhsr */
|
|
||||||
#define View_LABHlhsr 20
|
|
||||||
|
|
||||||
/* view, light source management */
|
|
||||||
#define View_LABLight 25
|
|
||||||
|
|
||||||
/* view, clip plane management */
|
|
||||||
#define View_LABPlane 30
|
|
||||||
|
|
||||||
/* view, aliasing management */
|
|
||||||
#define View_LABAliasing 35
|
|
||||||
|
|
||||||
/* view, depth cueing management */
|
|
||||||
#define View_LABDepthCueing 40
|
|
||||||
|
|
||||||
/* view, priority management */
|
|
||||||
#define View_LABPriority10 100
|
|
||||||
#define View_LABPriority09 99
|
|
||||||
#define View_LABPriority08 98
|
|
||||||
#define View_LABPriority07 97
|
|
||||||
#define View_LABPriority06 96
|
|
||||||
#define View_LABPriority05 95
|
|
||||||
#define View_LABPriority04 94
|
|
||||||
#define View_LABPriority03 93
|
|
||||||
#define View_LABPriority02 92
|
|
||||||
#define View_LABPriority01 91
|
|
||||||
#define View_LABPriority00 90
|
|
||||||
|
|
||||||
/* view, end */
|
|
||||||
#define View_LABEnd 200
|
|
||||||
|
|
||||||
/* view, transient emulation */
|
|
||||||
#define View_LABImmediat1 301
|
|
||||||
#define View_LABImmediat2 302
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,240 +0,0 @@
|
|||||||
// Copyright (c) 1991-1999 Matra Datavision
|
|
||||||
// Copyright (c) 1999-2012 OPEN CASCADE SAS
|
|
||||||
//
|
|
||||||
// The content of this file is subject to the Open CASCADE Technology Public
|
|
||||||
// License Version 6.5 (the "License"). You may not use the content of this file
|
|
||||||
// except in compliance with the License. Please obtain a copy of the License
|
|
||||||
// at http://www.opencascade.org and read it completely before using this file.
|
|
||||||
//
|
|
||||||
// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
|
|
||||||
// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
|
|
||||||
//
|
|
||||||
// The Original Code and all software distributed under the License is
|
|
||||||
// distributed on an "AS IS" basis, without warranty of any kind, and the
|
|
||||||
// Initial Developer hereby disclaims all such warranties, including without
|
|
||||||
// limitation, any warranties of merchantability, fitness for a particular
|
|
||||||
// purpose or non-infringement. Please see the License for the specific terms
|
|
||||||
// and conditions governing the rights and limitations under the License.
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef InterfaceGraphic_PortabilityHeader
|
|
||||||
#define InterfaceGraphic_PortabilityHeader
|
|
||||||
|
|
||||||
/* structures pour portabilite des differents Phigs */
|
|
||||||
/* SUNPHIGS, DECPHIGS, TGSPHIGS, G5GPHIGS, PEX */
|
|
||||||
|
|
||||||
/***********************************************************************/
|
|
||||||
/******************************** CONST ********************************/
|
|
||||||
/***********************************************************************/
|
|
||||||
|
|
||||||
#define CALL_DEF_ENABLE_MODE_PAINTERS 0
|
|
||||||
#define CALL_DEF_ENABLE_MODE_ZBUFFER 1
|
|
||||||
#define CALL_DEF_DISABLE_MODE_ZBUFFER -1
|
|
||||||
#define CALL_DEF_ENABLE_ZBUFFER 2
|
|
||||||
#define CALL_DEF_DISABLE_ZBUFFER -2
|
|
||||||
#define CALL_DEF_TEST_CALL -99999
|
|
||||||
|
|
||||||
/***********************************************************************/
|
|
||||||
/********************************* DATA ********************************/
|
|
||||||
/***********************************************************************/
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int size;
|
|
||||||
char *data;
|
|
||||||
} CALL_DEF_DATA;
|
|
||||||
|
|
||||||
/***********************************************************************/
|
|
||||||
/********************************** 2D *********************************/
|
|
||||||
/***********************************************************************/
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
float x;
|
|
||||||
float y;
|
|
||||||
} CALL_DEF_POINT2;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
float x;
|
|
||||||
float y;
|
|
||||||
} CALL_DEF_VECTOR2;
|
|
||||||
|
|
||||||
/***********************************************************************/
|
|
||||||
/********************************** 3D *********************************/
|
|
||||||
/***********************************************************************/
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
float x;
|
|
||||||
float y;
|
|
||||||
float z;
|
|
||||||
} CALL_DEF_POINT3;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
float x;
|
|
||||||
float y;
|
|
||||||
float z;
|
|
||||||
} CALL_DEF_VECTOR3;
|
|
||||||
|
|
||||||
/***********************************************************************/
|
|
||||||
/********************************* VIEW ********************************/
|
|
||||||
/***********************************************************************/
|
|
||||||
|
|
||||||
typedef float CALL_DEF_MATRIX3[4][4];
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
float x_min;
|
|
||||||
float x_max;
|
|
||||||
float y_min;
|
|
||||||
float y_max;
|
|
||||||
} CALL_DEF_LIMIT;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
float x_min;
|
|
||||||
float x_max;
|
|
||||||
float y_min;
|
|
||||||
float y_max;
|
|
||||||
float z_min;
|
|
||||||
float z_max;
|
|
||||||
} CALL_DEF_LIMIT3;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
CALL_DEF_MATRIX3 ori_matrix;
|
|
||||||
CALL_DEF_MATRIX3 map_matrix;
|
|
||||||
CALL_DEF_LIMIT3 clip_limit;
|
|
||||||
int xy_clip;
|
|
||||||
int back_clip;
|
|
||||||
int front_clip;
|
|
||||||
|
|
||||||
#ifdef TGSPHIGS
|
|
||||||
int opacity;
|
|
||||||
int back_colr;
|
|
||||||
int outline;
|
|
||||||
int outline_colr;
|
|
||||||
int temporary;
|
|
||||||
int active;
|
|
||||||
#endif
|
|
||||||
} CALL_DEF_VIEWREP3;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
CALL_DEF_LIMIT win;
|
|
||||||
CALL_DEF_LIMIT3 proj_vp;
|
|
||||||
int proj_type;
|
|
||||||
CALL_DEF_POINT3 proj_ref_point;
|
|
||||||
float view_plane;
|
|
||||||
|
|
||||||
#if defined (SUNPHIGS) || defined (TGSPHIGS) || defined (G5GPHIGS) || defined (HPPHIGS) || defined (PEX5)
|
|
||||||
float back_plane;
|
|
||||||
float front_plane;
|
|
||||||
#endif
|
|
||||||
#ifdef DECPHIGS
|
|
||||||
float front_plane;
|
|
||||||
float back_plane;
|
|
||||||
#endif
|
|
||||||
} CALL_DEF_VIEWMAP3;
|
|
||||||
|
|
||||||
/***********************************************************************/
|
|
||||||
/********************************* LIGHT *******************************/
|
|
||||||
/***********************************************************************/
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int num_ints;
|
|
||||||
int *ints;
|
|
||||||
} CALL_DEF_INTLIST;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
float r;
|
|
||||||
float g;
|
|
||||||
float b;
|
|
||||||
} CALL_DEF_RGB;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int colr_type;
|
|
||||||
CALL_DEF_RGB colr;
|
|
||||||
} CALL_DEF_AMBLIGHTSRCREC;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int colr_type;
|
|
||||||
CALL_DEF_RGB colr;
|
|
||||||
CALL_DEF_VECTOR3 dir;
|
|
||||||
} CALL_DEF_DIRLIGHTSRCREC;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int colr_type;
|
|
||||||
CALL_DEF_RGB colr;
|
|
||||||
CALL_DEF_POINT3 pos;
|
|
||||||
float coef[2];
|
|
||||||
} CALL_DEF_POSLIGHTSRCREC;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int colr_type;
|
|
||||||
CALL_DEF_RGB colr;
|
|
||||||
CALL_DEF_POINT3 pos;
|
|
||||||
CALL_DEF_VECTOR3 dir;
|
|
||||||
float exp;
|
|
||||||
float coef[2];
|
|
||||||
float angle;
|
|
||||||
} CALL_DEF_SPOTLIGHTSRCREC;
|
|
||||||
|
|
||||||
typedef union {
|
|
||||||
CALL_DEF_AMBLIGHTSRCREC ambient;
|
|
||||||
CALL_DEF_DIRLIGHTSRCREC directional;
|
|
||||||
CALL_DEF_POSLIGHTSRCREC positional;
|
|
||||||
CALL_DEF_SPOTLIGHTSRCREC spot;
|
|
||||||
} CALL_DEF_LIGHTSRCREC;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int type;
|
|
||||||
CALL_DEF_LIGHTSRCREC rec;
|
|
||||||
} CALL_DEF_LIGHTSRCBUNDLE;
|
|
||||||
|
|
||||||
/***********************************************************************/
|
|
||||||
/**************************** CLIPPING PLANE ***************************/
|
|
||||||
/***********************************************************************/
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
float a;
|
|
||||||
float b;
|
|
||||||
float c;
|
|
||||||
float d;
|
|
||||||
CALL_DEF_POINT3 point;
|
|
||||||
CALL_DEF_VECTOR3 norm;
|
|
||||||
} CALL_DEF_HALF_SPACE;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int num_half_spaces;
|
|
||||||
CALL_DEF_HALF_SPACE *half_spaces;
|
|
||||||
} CALL_DEF_HALF_SPACE_LIST;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int op;
|
|
||||||
CALL_DEF_HALF_SPACE_LIST half_spaces;
|
|
||||||
} CALL_DEF_PLANEBUNDLE;
|
|
||||||
|
|
||||||
/***********************************************************************/
|
|
||||||
/******************************** SCREEN *******************************/
|
|
||||||
/***********************************************************************/
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int size_x;
|
|
||||||
int size_y;
|
|
||||||
} CALL_DEF_INT_SIZE;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
float size_x;
|
|
||||||
float size_y;
|
|
||||||
} CALL_DEF_FLOAT_SIZE;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int dc_units;
|
|
||||||
CALL_DEF_FLOAT_SIZE size_dc;
|
|
||||||
CALL_DEF_INT_SIZE size_raster;
|
|
||||||
} CALL_DEF_DISP_SPACE_SIZE;
|
|
||||||
|
|
||||||
/***********************************************************************/
|
|
||||||
/********************************* TEXT ********************************/
|
|
||||||
/***********************************************************************/
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int horizontal;
|
|
||||||
int vertical;
|
|
||||||
} CALL_DEF_TEXT_ALIGN;
|
|
||||||
|
|
||||||
#endif /* InterfaceGraphic_PortabilityHeader */
|
|
@ -16,18 +16,6 @@
|
|||||||
// purpose or non-infringement. Please see the License for the specific terms
|
// purpose or non-infringement. Please see the License for the specific terms
|
||||||
// and conditions governing the rights and limitations under the License.
|
// and conditions governing the rights and limitations under the License.
|
||||||
|
|
||||||
/*
|
|
||||||
File: InterfaceGraphic_telem.h
|
|
||||||
|
|
||||||
16/06/2000 : ATS : G005 : Copied from OpenGl_telem.h to support required
|
|
||||||
for InterfaceGraphic_Parray.hxx definitions
|
|
||||||
|
|
||||||
22/03/2004 : SAN : OCC4895 High-level interface for controlling polygon offsets
|
|
||||||
|
|
||||||
20/05/2005 : SAN : OCC8854 Number of color components increased to include alpha value
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef INTERFACEGRAPHIC_TELEM_H
|
#ifndef INTERFACEGRAPHIC_TELEM_H
|
||||||
#define INTERFACEGRAPHIC_TELEM_H
|
#define INTERFACEGRAPHIC_TELEM_H
|
||||||
|
|
||||||
@ -60,38 +48,6 @@ struct TEL_COLOUR
|
|||||||
};
|
};
|
||||||
typedef TEL_COLOUR* tel_colour;
|
typedef TEL_COLOUR* tel_colour;
|
||||||
|
|
||||||
struct TEL_POINT_DATA
|
|
||||||
{
|
|
||||||
int num;
|
|
||||||
TEL_POINT* data;
|
|
||||||
DEFINE_STANDARD_ALLOC
|
|
||||||
};
|
|
||||||
typedef TEL_POINT_DATA* tel_point_data;
|
|
||||||
|
|
||||||
struct TEL_TINT_DATA
|
|
||||||
{
|
|
||||||
int num;
|
|
||||||
int* data;
|
|
||||||
DEFINE_STANDARD_ALLOC
|
|
||||||
};
|
|
||||||
typedef TEL_TINT_DATA* tel_tint_data;
|
|
||||||
|
|
||||||
struct TEL_MATRIX3_DATA
|
|
||||||
{
|
|
||||||
TComposeType mode;
|
|
||||||
Tmatrix3 mat;
|
|
||||||
DEFINE_STANDARD_ALLOC
|
|
||||||
};
|
|
||||||
typedef TEL_MATRIX3_DATA* tel_matrix3_data;
|
|
||||||
|
|
||||||
struct TEL_ALIGN_DATA
|
|
||||||
{
|
|
||||||
Tint Hmode;
|
|
||||||
Tint Vmode;
|
|
||||||
DEFINE_STANDARD_ALLOC
|
|
||||||
};
|
|
||||||
typedef TEL_ALIGN_DATA* tel_align_data;
|
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
TLightAmbient,
|
TLightAmbient,
|
||||||
@ -100,31 +56,6 @@ typedef enum
|
|||||||
TLightSpot
|
TLightSpot
|
||||||
} TLightType;
|
} TLightType;
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
TelHLColour,
|
|
||||||
TelHLForcedColour
|
|
||||||
} THighlightType;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
TelDCSuppressed,
|
|
||||||
TelDCAllowed
|
|
||||||
} TDepthCueType;
|
|
||||||
|
|
||||||
/* Proprietes materiels */
|
|
||||||
struct TEL_SURF_PROP
|
|
||||||
{
|
|
||||||
float amb, diff, spec, emsv;
|
|
||||||
float trans, shine;
|
|
||||||
float env_reflexion;
|
|
||||||
int isamb, isdiff, isspec, isemsv;
|
|
||||||
int isphysic;
|
|
||||||
TEL_COLOUR speccol, difcol, ambcol, emscol, matcol;
|
|
||||||
DEFINE_STANDARD_ALLOC
|
|
||||||
};
|
|
||||||
typedef TEL_SURF_PROP* tel_surf_prop;
|
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
TelCullNone,
|
TelCullNone,
|
||||||
@ -132,23 +63,6 @@ typedef enum
|
|||||||
TelCullBack
|
TelCullBack
|
||||||
} TelCullMode;
|
} TelCullMode;
|
||||||
|
|
||||||
/* Interior Styles */
|
|
||||||
#define TSM_SOLID 1
|
|
||||||
#define TSM_HOLLOW 2
|
|
||||||
#define TSM_EMPTY 3
|
|
||||||
#define TSM_HATCH 4
|
|
||||||
#define TSM_POINT 5
|
|
||||||
#define TSM_HIDDENLINE 6
|
|
||||||
|
|
||||||
/* Standard Line Styles */
|
|
||||||
#define TEL_LS_SOLID 0
|
|
||||||
#define TEL_LS_DOT 2
|
|
||||||
#define TEL_LS_DASH_DOT 3
|
|
||||||
#define TEL_LS_DASH 1
|
|
||||||
#define TEL_LS_DOUBLE_DOT_DASH 4
|
|
||||||
|
|
||||||
#define TEL_LS_USER_DEF_START 10
|
|
||||||
|
|
||||||
/* Standard Hatch Styles */
|
/* Standard Hatch Styles */
|
||||||
#define TEL_HS_SOLID 0
|
#define TEL_HS_SOLID 0
|
||||||
#define TEL_HS_CROSS 1
|
#define TEL_HS_CROSS 1
|
||||||
@ -166,64 +80,9 @@ typedef enum
|
|||||||
|
|
||||||
#define TEL_HS_USER_DEF_START 15
|
#define TEL_HS_USER_DEF_START 15
|
||||||
|
|
||||||
#define TEL_SHAPE_UNKNOWN 1
|
|
||||||
#define TEL_SHAPE_COMPLEX 2
|
|
||||||
#define TEL_SHAPE_CONCAVE 3
|
|
||||||
#define TEL_SHAPE_CONVEX 4
|
|
||||||
|
|
||||||
/* Key ids for area type primitives */
|
|
||||||
#define NUM_FACETS_ID 1 /* key.data.ldata contains no. of facets */
|
|
||||||
#define FNORMALS_ID 2 /* key.data.pdata is array of TEL_POINT */
|
|
||||||
#define FACET_COLOUR_VALS_ID 3 /* key.data.pdata is array of TSM_COLOUR */
|
|
||||||
#define VERTICES_ID 4 /* key.data.pdata is array of TEL_POINT */
|
|
||||||
#define VERTEX_COLOUR_VALS_ID 5 /* key.data.pdata is array of TSM_COLOUR */
|
|
||||||
#define VNORMALS_ID 6 /* key.data.pdata is array of TEL_POINT */
|
|
||||||
#define NUM_VERTICES_ID 7 /* key.data.ldata is num of vertices */
|
|
||||||
#define SHAPE_FLAG_ID 8 /* key.data.ldata is shape flag */
|
|
||||||
#define EDGE_DATA_ID 9 /* key.data.pdata is edge data (Tint*) */
|
|
||||||
#define CONNECTIVITY_ID 10 /* key.data.pdata is conn data (Tint*) */
|
|
||||||
#define BOUNDS_DATA_ID 11 /* key.data.pdata is bounds data (Tint*) */
|
|
||||||
#define NUM_LINES_ID 12 /* key.data.ldata is number of lines */
|
|
||||||
#define NUM_ROWS_ID 13 /* key.data.ldata is number of rows */
|
|
||||||
#define NUM_COLUMNS_ID 14 /* key.data.ldata is number of columns */
|
|
||||||
#define VTEXTURECOORD_ID 15 /* key.data.pdata is array of TEL_TEXTURE_COORD */
|
|
||||||
|
|
||||||
#define PARRAY_ID 16 /* key.data.pdata is a primitive array */
|
|
||||||
|
|
||||||
/* Key ids for text primitives */
|
|
||||||
#define TEXT_ATTACH_PT_ID 1 /* key.data.pdata contains tel_point */
|
|
||||||
#define TEXT_STRING_ID 2 /* key.data.pdata contains Tchar * */
|
|
||||||
|
|
||||||
|
|
||||||
/* Key ids for curve primitives */
|
|
||||||
#define CURVE_TYPE_ID 1 /* key.data.ldata is curve type */
|
|
||||||
/* TelCurveType :
|
|
||||||
* Bezier
|
|
||||||
* Cardinal
|
|
||||||
* BSpline
|
|
||||||
*/
|
|
||||||
#define CURVE_NUM_POINTS_ID 2 /* key.data.ldata is num of points */
|
|
||||||
#define CURVE_VERTICES_ID 3 /* key.data.pdata is array of TEL_POINT */
|
|
||||||
|
|
||||||
|
|
||||||
/* Polymarker Types */
|
|
||||||
#define TEL_PM_PLUS 0
|
|
||||||
#define TEL_PM_STAR 1
|
|
||||||
#define TEL_PM_CROSS 2
|
|
||||||
#define TEL_PM_CIRC 3
|
|
||||||
#define TEL_PM_DOT 4
|
|
||||||
#define TEL_PM_USERDEFINED 5
|
|
||||||
|
|
||||||
#define TEL_PM_USER_DEF_START 7
|
|
||||||
|
|
||||||
#define TEL_SD_SHADING 0
|
|
||||||
#define TEL_SD_TEXTURE 1
|
|
||||||
|
|
||||||
#define TEL_SM_FLAT 1
|
#define TEL_SM_FLAT 1
|
||||||
#define TEL_SM_GOURAUD 2
|
#define TEL_SM_GOURAUD 2
|
||||||
|
|
||||||
#define TEL_POLYMARKER_FONT (short)1
|
|
||||||
|
|
||||||
/* Standard Lighting Models */
|
/* Standard Lighting Models */
|
||||||
#define TEL_FRONT_BACK_LM 1
|
#define TEL_FRONT_BACK_LM 1
|
||||||
|
|
||||||
@ -231,46 +90,6 @@ typedef enum
|
|||||||
#define TEL_FRONT_MATERIAL 1
|
#define TEL_FRONT_MATERIAL 1
|
||||||
#define TEL_BACK_MATERIAL 2
|
#define TEL_BACK_MATERIAL 2
|
||||||
|
|
||||||
/* facet flags */
|
|
||||||
#define TEL_FAFLAG_NONE 1
|
|
||||||
#define TEL_FAFLAG_NORMAL 2
|
|
||||||
#define TEL_FAFLAG_COLOUR 3
|
|
||||||
#define TEL_FAFLAG_COLOURNORMAL 4
|
|
||||||
|
|
||||||
/* internal use */
|
|
||||||
#define TEL_FA_NONE TEL_FAFLAG_NONE
|
|
||||||
#define TEL_FA_NORMAL TEL_FAFLAG_NORMAL
|
|
||||||
|
|
||||||
/* vertex flags */
|
|
||||||
#define TEL_VTFLAG_NONE 1
|
|
||||||
#define TEL_VTFLAG_NORMAL 2
|
|
||||||
#define TEL_VTFLAG_COLOUR 3
|
|
||||||
#define TEL_VTFLAG_COLOURNORMAL 4
|
|
||||||
|
|
||||||
/* internal use */
|
|
||||||
#define TEL_VT_NONE TEL_VTFLAG_NONE
|
|
||||||
#define TEL_VT_NORMAL TEL_VTFLAG_NORMAL
|
|
||||||
|
|
||||||
/* Defbasis identifier */
|
|
||||||
#define TEL_BEZIER 1
|
|
||||||
#define TEL_CARDINAL 2
|
|
||||||
#define TEL_BSPLINE 3
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
TelBezierCurve = TEL_BEZIER,
|
|
||||||
TelCardinalCurve = TEL_CARDINAL,
|
|
||||||
TelBSplineCurve = TEL_BSPLINE
|
|
||||||
} TelCurveType;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
TelHLHSRNone,
|
|
||||||
TelHLHSRZBuff
|
|
||||||
|
|
||||||
} TelHLHSRId;
|
|
||||||
|
|
||||||
/* OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets */
|
|
||||||
struct TEL_POFFSET_PARAM
|
struct TEL_POFFSET_PARAM
|
||||||
{
|
{
|
||||||
int mode;
|
int mode;
|
||||||
@ -279,9 +98,7 @@ struct TEL_POFFSET_PARAM
|
|||||||
DEFINE_STANDARD_ALLOC
|
DEFINE_STANDARD_ALLOC
|
||||||
};
|
};
|
||||||
typedef TEL_POFFSET_PARAM* tel_poffset_param;
|
typedef TEL_POFFSET_PARAM* tel_poffset_param;
|
||||||
/* OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets */
|
|
||||||
|
|
||||||
/* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */
|
|
||||||
struct TEL_TRANSFORM_PERSISTENCE
|
struct TEL_TRANSFORM_PERSISTENCE
|
||||||
{
|
{
|
||||||
int mode;
|
int mode;
|
||||||
@ -291,6 +108,5 @@ struct TEL_TRANSFORM_PERSISTENCE
|
|||||||
DEFINE_STANDARD_ALLOC
|
DEFINE_STANDARD_ALLOC
|
||||||
};
|
};
|
||||||
typedef TEL_TRANSFORM_PERSISTENCE* tel_transform_persistence;
|
typedef TEL_TRANSFORM_PERSISTENCE* tel_transform_persistence;
|
||||||
/* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */
|
|
||||||
|
|
||||||
#endif /* INTERFACEGRAPHIC_TELEM_H */
|
#endif /* INTERFACEGRAPHIC_TELEM_H */
|
||||||
|
@ -16,20 +16,11 @@
|
|||||||
// purpose or non-infringement. Please see the License for the specific terms
|
// purpose or non-infringement. Please see the License for the specific terms
|
||||||
// and conditions governing the rights and limitations under the License.
|
// and conditions governing the rights and limitations under the License.
|
||||||
|
|
||||||
/*
|
|
||||||
File InterfaceGraphic_tgl_all.h
|
|
||||||
|
|
||||||
16/06/2000 : ATS : G005 : Copied from OpenGl_tgl_all.h to support required
|
|
||||||
for InterfaceGraphic_Parray.hxx definitions
|
|
||||||
23-12-02 : SAV ; Added Tuint type
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef INTERFACEGRAPHIC_TGL_ALL_H
|
#ifndef INTERFACEGRAPHIC_TGL_ALL_H
|
||||||
#define INTERFACEGRAPHIC_TGL_ALL_H
|
#define INTERFACEGRAPHIC_TGL_ALL_H
|
||||||
|
|
||||||
typedef int Tint;
|
typedef int Tint;
|
||||||
typedef float Tfloat;
|
typedef float Tfloat;
|
||||||
/* PCD 04/07/07 */
|
|
||||||
typedef double Tdouble;
|
typedef double Tdouble;
|
||||||
/* Tchar is treated as a signed char in visualization code,
|
/* Tchar is treated as a signed char in visualization code,
|
||||||
therefore it should be made signed explicitly, as on Linux
|
therefore it should be made signed explicitly, as on Linux
|
||||||
@ -40,34 +31,9 @@ typedef unsigned int Tuint;
|
|||||||
/* szv: Techar is an Extended character */
|
/* szv: Techar is an Extended character */
|
||||||
typedef unsigned short Techar;
|
typedef unsigned short Techar;
|
||||||
|
|
||||||
#define TGL_SP 1
|
|
||||||
#define TGL_DP 0
|
|
||||||
|
|
||||||
#if TGL_DP
|
|
||||||
#define v3f v3d
|
|
||||||
#define c3f c3d
|
|
||||||
#define n3f n3d
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
TFailure = -1,
|
|
||||||
TSuccess
|
|
||||||
} TStatus;
|
|
||||||
|
|
||||||
#define TOn 1
|
#define TOn 1
|
||||||
#define TOff 0
|
#define TOff 0
|
||||||
|
|
||||||
#define TDone 1
|
|
||||||
#define TNotDone 0
|
|
||||||
|
|
||||||
typedef Tfloat Tmatrix3[4][4];
|
typedef Tfloat Tmatrix3[4][4];
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
TPreConcatenate,
|
|
||||||
TPostConcatenate,
|
|
||||||
TReplace
|
|
||||||
} TComposeType;
|
|
||||||
|
|
||||||
#endif /* INTERFACEGRAPHIC_TGL_ALL_H */
|
#endif /* INTERFACEGRAPHIC_TGL_ALL_H */
|
||||||
|
@ -30,14 +30,10 @@ OpenGl_Text.hxx
|
|||||||
OpenGl_Text.cxx
|
OpenGl_Text.cxx
|
||||||
OpenGl_TextFormatter.hxx
|
OpenGl_TextFormatter.hxx
|
||||||
OpenGl_TextFormatter.cxx
|
OpenGl_TextFormatter.cxx
|
||||||
OpenGl_Polyline.hxx
|
|
||||||
OpenGl_Polyline.cxx
|
|
||||||
OpenGl_Marker.hxx
|
OpenGl_Marker.hxx
|
||||||
OpenGl_Marker.cxx
|
OpenGl_Marker.cxx
|
||||||
OpenGl_MarkerSet.hxx
|
OpenGl_MarkerSet.hxx
|
||||||
OpenGl_MarkerSet.cxx
|
OpenGl_MarkerSet.cxx
|
||||||
OpenGl_Polygon.hxx
|
|
||||||
OpenGl_Polygon.cxx
|
|
||||||
OpenGl_PrimitiveArray.hxx
|
OpenGl_PrimitiveArray.hxx
|
||||||
OpenGl_PrimitiveArray.cxx
|
OpenGl_PrimitiveArray.cxx
|
||||||
Handle_OpenGl_Workspace.hxx
|
Handle_OpenGl_Workspace.hxx
|
||||||
|
@ -164,7 +164,6 @@ void OpenGl_Group::Render (const Handle(OpenGl_Workspace)& theWorkspace) const
|
|||||||
{
|
{
|
||||||
switch (aNodeIter->type)
|
switch (aNodeIter->type)
|
||||||
{
|
{
|
||||||
case TelPolyline:
|
|
||||||
case TelMarker:
|
case TelMarker:
|
||||||
case TelMarkerSet:
|
case TelMarkerSet:
|
||||||
case TelText:
|
case TelText:
|
||||||
@ -178,31 +177,6 @@ void OpenGl_Group::Render (const Handle(OpenGl_Workspace)& theWorkspace) const
|
|||||||
aNodeIter->elem->Render (theWorkspace);
|
aNodeIter->elem->Render (theWorkspace);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TelPolygon:
|
|
||||||
case TelPolygonIndices:
|
|
||||||
case TelQuadrangle:
|
|
||||||
case TelTriangleMesh:
|
|
||||||
{
|
|
||||||
if (isImmediate)
|
|
||||||
{
|
|
||||||
glDepthMask(GL_FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (theWorkspace->NamedStatus & OPENGL_NS_HIGHLIGHT)
|
|
||||||
{
|
|
||||||
theWorkspace->DisablePolygonOffset();
|
|
||||||
}
|
|
||||||
|
|
||||||
aNodeIter->elem->Render (theWorkspace);
|
|
||||||
|
|
||||||
if (theWorkspace->NamedStatus & OPENGL_NS_HIGHLIGHT)
|
|
||||||
{
|
|
||||||
theWorkspace->EnablePolygonOffset();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
aNodeIter->elem->Render (theWorkspace);
|
aNodeIter->elem->Render (theWorkspace);
|
||||||
|
@ -1,620 +0,0 @@
|
|||||||
// Created on: 2011-07-13
|
|
||||||
// Created by: Sergey ZERCHANINOV
|
|
||||||
// Copyright (c) 2011-2012 OPEN CASCADE SAS
|
|
||||||
//
|
|
||||||
// The content of this file is subject to the Open CASCADE Technology Public
|
|
||||||
// License Version 6.5 (the "License"). You may not use the content of this file
|
|
||||||
// except in compliance with the License. Please obtain a copy of the License
|
|
||||||
// at http://www.opencascade.org and read it completely before using this file.
|
|
||||||
//
|
|
||||||
// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
|
|
||||||
// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
|
|
||||||
//
|
|
||||||
// The Original Code and all software distributed under the License is
|
|
||||||
// distributed on an "AS IS" basis, without warranty of any kind, and the
|
|
||||||
// Initial Developer hereby disclaims all such warranties, including without
|
|
||||||
// limitation, any warranties of merchantability, fitness for a particular
|
|
||||||
// purpose or non-infringement. Please see the License for the specific terms
|
|
||||||
// and conditions governing the rights and limitations under the License.
|
|
||||||
|
|
||||||
#include <OpenGl_GlCore11.hxx>
|
|
||||||
|
|
||||||
#include <OpenGl_Polygon.hxx>
|
|
||||||
|
|
||||||
#include <OpenGl_telem_util.hxx>
|
|
||||||
|
|
||||||
#include <OpenGl_AspectFace.hxx>
|
|
||||||
#include <OpenGl_Structure.hxx>
|
|
||||||
#include <OpenGl_Workspace.hxx>
|
|
||||||
|
|
||||||
#if (defined(_WIN32) || defined(__WIN32__))
|
|
||||||
#define STATIC
|
|
||||||
#else
|
|
||||||
#define STATIC static
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct EXTRA_VERTEX
|
|
||||||
{
|
|
||||||
GLfloat vert[3];
|
|
||||||
int ind;
|
|
||||||
DEFINE_STANDARD_ALLOC
|
|
||||||
};
|
|
||||||
typedef EXTRA_VERTEX* extra_vertex;
|
|
||||||
|
|
||||||
struct SEQ_
|
|
||||||
{
|
|
||||||
NCollection_Vector<void *> tmesh_sequence;
|
|
||||||
GLenum triangle_type; /* FSXXX OPTI */
|
|
||||||
DEFINE_STANDARD_ALLOC
|
|
||||||
};
|
|
||||||
|
|
||||||
static void bgntriangulate( const TEL_POLYGON_DATA *, void (APIENTRY*)() );
|
|
||||||
static void endtriangulate(void);
|
|
||||||
|
|
||||||
#ifndef GLU_VERSION_1_2
|
|
||||||
#define GLUtesselator GLUtriangulatorObj
|
|
||||||
void gluTessBeginContour();
|
|
||||||
void gluTessBeginPolygon();
|
|
||||||
void gluTessEndPolygon();
|
|
||||||
void gluTessEndContour();
|
|
||||||
#define GLU_TESS_BEGIN 100100
|
|
||||||
#define GLU_TESS_VERTEX 100101
|
|
||||||
#define GLU_TESS_END 100102
|
|
||||||
#define GLU_TESS_ERROR 100103
|
|
||||||
#define GLU_TESS_COMBINE 100105
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
void OpenGl_Polygon::draw_polygon (const Handle(OpenGl_Workspace) &AWorkspace, Tint front_lighting_model) const
|
|
||||||
{
|
|
||||||
Tint i;
|
|
||||||
|
|
||||||
tel_point ptr;
|
|
||||||
tel_point pvn;
|
|
||||||
tel_colour pfc, pvc;
|
|
||||||
tel_texture_coord pvt;
|
|
||||||
|
|
||||||
pfc = myData.fcolour;
|
|
||||||
pvc = myData.vcolours;
|
|
||||||
pvn = myData.vnormals;
|
|
||||||
pvt = myData.vtexturecoord;
|
|
||||||
|
|
||||||
if ( AWorkspace->NamedStatus & OPENGL_NS_HIGHLIGHT )
|
|
||||||
pvc = pfc = NULL;
|
|
||||||
|
|
||||||
ptr = myData.vertices;
|
|
||||||
if ( pfc )
|
|
||||||
glColor3fv( pfc->rgb );
|
|
||||||
if ( front_lighting_model )
|
|
||||||
glNormal3fv( myData.fnormal.xyz );
|
|
||||||
|
|
||||||
if( myData.reverse_order ) glFrontFace( GL_CW );
|
|
||||||
|
|
||||||
if (myData.num_vertices == 3) glBegin(GL_TRIANGLES);
|
|
||||||
else if(myData.num_vertices == 4) glBegin(GL_QUADS);
|
|
||||||
else glBegin(GL_POLYGON);
|
|
||||||
if( front_lighting_model )
|
|
||||||
{
|
|
||||||
if( pvn )
|
|
||||||
{
|
|
||||||
if (pvt && (AWorkspace->NamedStatus & OPENGL_NS_FORBIDSETTEX) == 0)
|
|
||||||
for( i=0; i<myData.num_vertices; i++, ptr++ )
|
|
||||||
{
|
|
||||||
glNormal3fv( pvn[i].xyz );
|
|
||||||
glTexCoord2fv( pvt[i].xy );
|
|
||||||
glVertex3fv( ptr->xyz );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
for( i=0; i<myData.num_vertices; i++, ptr++ )
|
|
||||||
{
|
|
||||||
glNormal3fv( pvn[i].xyz );
|
|
||||||
glVertex3fv( ptr->xyz );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for( i=0; i<myData.num_vertices; i++, ptr++ )
|
|
||||||
{
|
|
||||||
glVertex3fv( ptr->xyz );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if( pvc )
|
|
||||||
{
|
|
||||||
for( i=0; i<myData.num_vertices; i++, ptr++ )
|
|
||||||
{
|
|
||||||
glColor3fv( pvc[i].rgb );
|
|
||||||
glVertex3fv( ptr->xyz );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for( i=0; i<myData.num_vertices; i++, ptr++ )
|
|
||||||
{
|
|
||||||
glVertex3fv( ptr->xyz );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
if( myData.reverse_order ) glFrontFace( GL_CCW );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* JWR - allow varying the size */
|
|
||||||
|
|
||||||
static const TEL_POLYGON_DATA *DaTa;
|
|
||||||
static GLUtesselator *tripak = 0;
|
|
||||||
|
|
||||||
STATIC void APIENTRY
|
|
||||||
out_bgntmesh( GLenum triangle_type )
|
|
||||||
{
|
|
||||||
NCollection_Vector<SEQ_> *dis = DaTa->dsply;
|
|
||||||
|
|
||||||
SEQ_ aSeq;
|
|
||||||
#ifdef JWR_DEC_TRIFAN_BUG
|
|
||||||
aSeq.triangle_type = GL_POLYGON;
|
|
||||||
dis->Append(aSeq);
|
|
||||||
glBegin(GL_POLYGON);
|
|
||||||
#else
|
|
||||||
aSeq.triangle_type = triangle_type;
|
|
||||||
dis->Append(aSeq);
|
|
||||||
glBegin(triangle_type);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
STATIC void APIENTRY
|
|
||||||
out_vert1( void *data )
|
|
||||||
{
|
|
||||||
SEQ_ &s = DaTa->dsply->ChangeValue(DaTa->dsply->Length() - 1);
|
|
||||||
|
|
||||||
s.tmesh_sequence.Append(data);
|
|
||||||
|
|
||||||
if ( data < (void *)0xffff ) {
|
|
||||||
long a = (long)data;
|
|
||||||
|
|
||||||
glVertex3fv( DaTa->vertices[a].xyz );
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
extra_vertex b = (extra_vertex) data;
|
|
||||||
|
|
||||||
glVertex3fv( b->vert );
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
STATIC void APIENTRY
|
|
||||||
out_vert2( void *data )
|
|
||||||
{
|
|
||||||
SEQ_ &s = DaTa->dsply->ChangeValue(DaTa->dsply->Length() - 1);
|
|
||||||
|
|
||||||
s.tmesh_sequence.Append(data);
|
|
||||||
|
|
||||||
if ( data < (void *)0xffff ) {
|
|
||||||
long a = (long)data;
|
|
||||||
|
|
||||||
glColor3fv( DaTa->vcolours[a].rgb );
|
|
||||||
glVertex3fv( DaTa->vertices[a].xyz );
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
extra_vertex b = (extra_vertex) data;
|
|
||||||
|
|
||||||
glColor3fv( DaTa->vcolours[(b->ind)].rgb );
|
|
||||||
glVertex3fv( b->vert );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
STATIC void APIENTRY
|
|
||||||
out_vert3( void *data )
|
|
||||||
{
|
|
||||||
SEQ_ &s = DaTa->dsply->ChangeValue(DaTa->dsply->Length() - 1);
|
|
||||||
|
|
||||||
s.tmesh_sequence.Append(data);
|
|
||||||
|
|
||||||
if ( data <= (void *)0xffff ) {
|
|
||||||
long a = (long)data;
|
|
||||||
|
|
||||||
glNormal3fv( DaTa->vnormals[a].xyz );
|
|
||||||
glVertex3fv( DaTa->vertices[a].xyz);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
extra_vertex b = (extra_vertex) data;
|
|
||||||
|
|
||||||
glNormal3fv( DaTa->vnormals[(b->ind)].xyz );
|
|
||||||
glVertex3fv( b->vert );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
STATIC void APIENTRY
|
|
||||||
mycombine( GLdouble coords[3], int *data, GLfloat w[4], void **dataout)
|
|
||||||
{
|
|
||||||
extra_vertex new_vertex = new EXTRA_VERTEX();
|
|
||||||
|
|
||||||
new_vertex->vert[0] = ( float )coords[0];
|
|
||||||
new_vertex->vert[1] = ( float )coords[1];
|
|
||||||
new_vertex->vert[2] = ( float )coords[2];
|
|
||||||
new_vertex->ind = *data;
|
|
||||||
*dataout = new_vertex;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
STATIC void APIENTRY
|
|
||||||
out_endtmesh( void )
|
|
||||||
{
|
|
||||||
glEnd();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
STATIC void APIENTRY
|
|
||||||
out_error( GLenum error )
|
|
||||||
{
|
|
||||||
printf( "POLYGON : %s\n", (char *) gluErrorString(error) );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
bgntriangulate(const TEL_POLYGON_DATA *d, void ( APIENTRY * out_ver)() )
|
|
||||||
{
|
|
||||||
DaTa = d;
|
|
||||||
|
|
||||||
tripak = gluNewTess();
|
|
||||||
|
|
||||||
#if defined(linux) && !defined(NOGLUfuncptr)
|
|
||||||
gluTessCallback( tripak, GLU_TESS_BEGIN, (_GLUfuncptr)(out_bgntmesh) );
|
|
||||||
gluTessCallback( tripak, GLU_TESS_VERTEX, out_ver );
|
|
||||||
gluTessCallback( tripak, GLU_TESS_END, out_endtmesh );
|
|
||||||
gluTessCallback( tripak, GLU_TESS_ERROR, (_GLUfuncptr)(out_error) );
|
|
||||||
gluTessCallback( tripak, GLU_TESS_COMBINE, (_GLUfuncptr)(mycombine) );
|
|
||||||
#else
|
|
||||||
gluTessCallback( tripak, GLU_TESS_BEGIN, (void (APIENTRY*)())out_bgntmesh );
|
|
||||||
gluTessCallback( tripak, GLU_TESS_VERTEX, (void (APIENTRY*)())out_ver );
|
|
||||||
gluTessCallback( tripak, GLU_TESS_END, (void (APIENTRY*)())out_endtmesh );
|
|
||||||
gluTessCallback( tripak, GLU_TESS_ERROR, (void (APIENTRY*)())out_error );
|
|
||||||
gluTessCallback( tripak, GLU_TESS_COMBINE, (void (APIENTRY*)())mycombine );
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
endtriangulate()
|
|
||||||
{
|
|
||||||
DaTa = 0;
|
|
||||||
gluDeleteTess(tripak);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
void OpenGl_Polygon::draw_polygon_concav (const Handle(OpenGl_Workspace) &AWorkspace, Tint front_lighting_model) const
|
|
||||||
{
|
|
||||||
long i;
|
|
||||||
|
|
||||||
tel_point pvn;
|
|
||||||
tel_point ptr;
|
|
||||||
tel_colour pfc, pvc;
|
|
||||||
GLdouble xyz[3];
|
|
||||||
|
|
||||||
pfc = myData.fcolour;
|
|
||||||
pvc = myData.vcolours;
|
|
||||||
pvn = myData.vnormals;
|
|
||||||
|
|
||||||
if ( AWorkspace->NamedStatus & OPENGL_NS_HIGHLIGHT )
|
|
||||||
pvc = pfc = NULL;
|
|
||||||
|
|
||||||
ptr = myData.vertices;
|
|
||||||
DaTa = &myData;
|
|
||||||
|
|
||||||
if ( pfc )
|
|
||||||
glColor3fv( pfc->rgb );
|
|
||||||
if ( front_lighting_model )
|
|
||||||
glNormal3fv( myData.fnormal.xyz );
|
|
||||||
|
|
||||||
if( myData.reverse_order ) glFrontFace( GL_CW );
|
|
||||||
|
|
||||||
if( !myData.dsply )
|
|
||||||
{
|
|
||||||
if( front_lighting_model )
|
|
||||||
{
|
|
||||||
if( pvn )
|
|
||||||
{
|
|
||||||
bgntriangulate(&myData, (void (APIENTRY*)())out_vert3);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
bgntriangulate(&myData, (void (APIENTRY*)())out_vert1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if( pvc )
|
|
||||||
{
|
|
||||||
bgntriangulate(&myData, (void (APIENTRY*)())out_vert2);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
bgntriangulate(&myData, (void (APIENTRY*)())out_vert1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gluTessBeginPolygon( tripak, NULL );
|
|
||||||
gluTessBeginContour( tripak);
|
|
||||||
|
|
||||||
for( i=0; i<myData.num_vertices; i++, ptr++ )
|
|
||||||
{
|
|
||||||
xyz[0] = ptr->xyz[0];
|
|
||||||
xyz[1] = ptr->xyz[1];
|
|
||||||
xyz[2] = ptr->xyz[2];
|
|
||||||
#ifndef WNT
|
|
||||||
gluTessVertex( tripak, xyz,(void * ) i );
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
double v[ 3 ] = {ptr -> xyz[ 0 ], ptr -> xyz[ 1 ], ptr -> xyz[ 2 ]};
|
|
||||||
gluTessVertex ( tripak, v, ( void* )i );
|
|
||||||
}
|
|
||||||
#endif /* WNT */
|
|
||||||
}
|
|
||||||
gluTessEndContour( tripak );
|
|
||||||
gluTessEndPolygon( tripak );
|
|
||||||
endtriangulate();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if( front_lighting_model )
|
|
||||||
{
|
|
||||||
draw_tmesh( pvn? 3 : 1 );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
draw_tmesh( pvc? 2 : 1 );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( myData.reverse_order ) glFrontFace( GL_CCW );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
void OpenGl_Polygon::draw_edges (const TEL_COLOUR* theEdgeColor,
|
|
||||||
const Aspect_InteriorStyle theInteriorStyle,
|
|
||||||
const Handle(OpenGl_Workspace)& theWorkspace) const
|
|
||||||
{
|
|
||||||
const OpenGl_AspectFace* anAspectFace = theWorkspace->AspectFace (Standard_True);
|
|
||||||
|
|
||||||
if (theInteriorStyle != Aspect_IS_HIDDENLINE
|
|
||||||
&& anAspectFace->Edge == TOff)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
glDisable (GL_LIGHTING);
|
|
||||||
const Handle(OpenGl_Texture) aPrevTexture = theWorkspace->DisableTexture();
|
|
||||||
|
|
||||||
// Setup line aspect
|
|
||||||
const OpenGl_AspectLine* aPrevAspectLine = theWorkspace->SetAspectLine (anAspectFace->AspectEdge());
|
|
||||||
theWorkspace->AspectLine (Standard_True);
|
|
||||||
|
|
||||||
glColor3fv (theEdgeColor->rgb);
|
|
||||||
|
|
||||||
glBegin (GL_LINE_LOOP);
|
|
||||||
tel_point ptr = myData.vertices;
|
|
||||||
for (Tint i = 0; i < myData.num_vertices; i++, ptr++)
|
|
||||||
{
|
|
||||||
glVertex3fv (ptr->xyz);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
|
|
||||||
// Restore line context
|
|
||||||
theWorkspace->SetAspectLine (aPrevAspectLine);
|
|
||||||
|
|
||||||
theWorkspace->EnableTexture (aPrevTexture);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
void OpenGl_Polygon::draw_tmesh ( Tint v ) const
|
|
||||||
{
|
|
||||||
Tint i, j, k;
|
|
||||||
SEQ_ *s;
|
|
||||||
extra_vertex b;
|
|
||||||
|
|
||||||
NCollection_Vector<SEQ_> *dis = myData.dsply;
|
|
||||||
for( i = 0; i < dis->Length(); i++ )
|
|
||||||
{
|
|
||||||
s = &(dis->ChangeValue(i));
|
|
||||||
|
|
||||||
glBegin(s->triangle_type);
|
|
||||||
switch( v )
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
for( j = 0, k = 0; j < s->tmesh_sequence.Length(); j++ )
|
|
||||||
{
|
|
||||||
if ( s->tmesh_sequence(j) < (void *)0xffff )
|
|
||||||
glVertex3fv( myData.vertices[ (long)s->tmesh_sequence.Value(j) ].xyz );
|
|
||||||
else {
|
|
||||||
b = (extra_vertex) s->tmesh_sequence(j);
|
|
||||||
glVertex3fv( b->vert );
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
for( j = 0, k = 0; j < s->tmesh_sequence.Length(); j++ )
|
|
||||||
{
|
|
||||||
if ( s->tmesh_sequence(j) < (void *)0xffff ) {
|
|
||||||
glColor3fv( myData.vcolours[ (long) s->tmesh_sequence(j) ].rgb );
|
|
||||||
glVertex3fv( myData.vertices[ (long) s->tmesh_sequence(j) ].xyz );
|
|
||||||
} else {
|
|
||||||
b = (extra_vertex) s->tmesh_sequence(j);
|
|
||||||
glColor3fv( myData.vcolours[(b->ind)].rgb);
|
|
||||||
glVertex3fv( b->vert );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
for( j = 0, k = 0; j < s->tmesh_sequence.Length(); j++ )
|
|
||||||
{
|
|
||||||
if ( s->tmesh_sequence(j) < (void *)0xffff ) {
|
|
||||||
glNormal3fv( myData.vnormals[ (long) s->tmesh_sequence(j) ].xyz);
|
|
||||||
glVertex3fv( myData.vertices[ (long) s->tmesh_sequence(j) ].xyz);
|
|
||||||
} else {
|
|
||||||
b = (extra_vertex) s->tmesh_sequence(j);
|
|
||||||
glNormal3fv( myData.vnormals[(b->ind)].xyz);
|
|
||||||
glVertex3fv( b->vert );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
OpenGl_Polygon::OpenGl_Polygon (const Graphic3d_Array1OfVertex& AListVertex,
|
|
||||||
const Graphic3d_TypeOfPolygon AType)
|
|
||||||
{
|
|
||||||
const Standard_Integer nv = AListVertex.Length();
|
|
||||||
|
|
||||||
myData.num_vertices = nv;
|
|
||||||
|
|
||||||
myData.vertices = new TEL_POINT[nv];
|
|
||||||
memcpy( myData.vertices, &AListVertex(AListVertex.Lower()), nv*sizeof(TEL_POINT) );
|
|
||||||
|
|
||||||
myData.vertex_flag = TEL_VT_NONE;
|
|
||||||
myData.vnormals = NULL;
|
|
||||||
|
|
||||||
myData.vcolours = NULL;
|
|
||||||
|
|
||||||
myData.vtexturecoord = NULL;
|
|
||||||
|
|
||||||
myData.reverse_order = 0;
|
|
||||||
|
|
||||||
myData.facet_flag = TEL_FA_NONE;
|
|
||||||
TelGetPolygonNormal( myData.vertices, NULL, nv, myData.fnormal.xyz );
|
|
||||||
|
|
||||||
myData.fcolour = NULL;
|
|
||||||
|
|
||||||
#if defined(__sgi) || defined(IRIX)
|
|
||||||
// Pb with tesselator on sgi
|
|
||||||
myData.shape_flag = TEL_SHAPE_CONVEX;
|
|
||||||
#else
|
|
||||||
switch (AType)
|
|
||||||
{
|
|
||||||
case Graphic3d_TOP_UNKNOWN :
|
|
||||||
myData.shape_flag = TEL_SHAPE_UNKNOWN;
|
|
||||||
break;
|
|
||||||
case Graphic3d_TOP_COMPLEX :
|
|
||||||
myData.shape_flag = TEL_SHAPE_COMPLEX;
|
|
||||||
break;
|
|
||||||
case Graphic3d_TOP_CONCAVE :
|
|
||||||
myData.shape_flag = TEL_SHAPE_CONCAVE;
|
|
||||||
break;
|
|
||||||
//case Graphic3d_TOP_CONVEX :
|
|
||||||
default :
|
|
||||||
myData.shape_flag = TEL_SHAPE_CONVEX;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
myData.dsply = new NCollection_Vector<SEQ_>();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
OpenGl_Polygon::~OpenGl_Polygon ()
|
|
||||||
{
|
|
||||||
if( myData.fcolour )
|
|
||||||
delete myData.fcolour;
|
|
||||||
if( myData.vertices )
|
|
||||||
delete[] myData.vertices;
|
|
||||||
if( myData.vcolours )
|
|
||||||
delete[] myData.vcolours;
|
|
||||||
if( myData.vnormals )
|
|
||||||
delete[] myData.vnormals;
|
|
||||||
if ( myData.vtexturecoord )
|
|
||||||
delete myData.vtexturecoord;
|
|
||||||
|
|
||||||
if ( myData.dsply )
|
|
||||||
{
|
|
||||||
Tint i, j;
|
|
||||||
|
|
||||||
for( i = 0; i < myData.dsply->Length(); i++ )
|
|
||||||
{
|
|
||||||
for ( j = 0; j < myData.dsply->Value(i).tmesh_sequence.Length() ; j++ )
|
|
||||||
{
|
|
||||||
if ( myData.dsply->Value(i).tmesh_sequence(j) >= (void *)0xffff )
|
|
||||||
delete myData.dsply->Value(i).tmesh_sequence(j);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
delete myData.dsply;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
void OpenGl_Polygon::Render (const Handle(OpenGl_Workspace) &AWorkspace) const
|
|
||||||
{
|
|
||||||
const OpenGl_AspectFace *aspect_face = AWorkspace->AspectFace( Standard_True );
|
|
||||||
|
|
||||||
Tint front_lighting_model = aspect_face->IntFront.color_mask;
|
|
||||||
const Aspect_InteriorStyle interior_style = aspect_face->InteriorStyle;
|
|
||||||
const TEL_COLOUR *interior_colour = &aspect_face->IntFront.matcol;
|
|
||||||
const TEL_COLOUR *edge_colour = &aspect_face->AspectEdge()->Color();
|
|
||||||
|
|
||||||
// Use highlight colous
|
|
||||||
if ( AWorkspace->NamedStatus & OPENGL_NS_HIGHLIGHT )
|
|
||||||
{
|
|
||||||
edge_colour = interior_colour = AWorkspace->HighlightColor;
|
|
||||||
front_lighting_model = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( interior_style != Aspect_IS_EMPTY)
|
|
||||||
{
|
|
||||||
if ( front_lighting_model )
|
|
||||||
glEnable(GL_LIGHTING);
|
|
||||||
else
|
|
||||||
glDisable(GL_LIGHTING);
|
|
||||||
|
|
||||||
glColor3fv( interior_colour->rgb );
|
|
||||||
|
|
||||||
if( myData.shape_flag != TEL_SHAPE_CONVEX )
|
|
||||||
draw_polygon_concav( AWorkspace, front_lighting_model );
|
|
||||||
else
|
|
||||||
draw_polygon( AWorkspace, front_lighting_model );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* OCC11904 -- Temporarily disable environment mapping */
|
|
||||||
glPushAttrib(GL_ENABLE_BIT);
|
|
||||||
glDisable(GL_TEXTURE_1D);
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
|
|
||||||
draw_edges ( edge_colour, interior_style, AWorkspace );
|
|
||||||
|
|
||||||
glPopAttrib(); /* skt: GL_ENABLE_BIT*/
|
|
||||||
}
|
|
||||||
|
|
||||||
void OpenGl_Polygon::Release (const Handle(OpenGl_Context)& theContext)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
@ -1,84 +0,0 @@
|
|||||||
// Created on: 2011-07-13
|
|
||||||
// Created by: Sergey ZERCHANINOV
|
|
||||||
// Copyright (c) 2011-2012 OPEN CASCADE SAS
|
|
||||||
//
|
|
||||||
// The content of this file is subject to the Open CASCADE Technology Public
|
|
||||||
// License Version 6.5 (the "License"). You may not use the content of this file
|
|
||||||
// except in compliance with the License. Please obtain a copy of the License
|
|
||||||
// at http://www.opencascade.org and read it completely before using this file.
|
|
||||||
//
|
|
||||||
// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
|
|
||||||
// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
|
|
||||||
//
|
|
||||||
// The Original Code and all software distributed under the License is
|
|
||||||
// distributed on an "AS IS" basis, without warranty of any kind, and the
|
|
||||||
// Initial Developer hereby disclaims all such warranties, including without
|
|
||||||
// limitation, any warranties of merchantability, fitness for a particular
|
|
||||||
// purpose or non-infringement. Please see the License for the specific terms
|
|
||||||
// and conditions governing the rights and limitations under the License.
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef OpenGl_Polygon_Header
|
|
||||||
#define OpenGl_Polygon_Header
|
|
||||||
|
|
||||||
#include <InterfaceGraphic_telem.hxx>
|
|
||||||
#include <Graphic3d_Array1OfVertex.hxx>
|
|
||||||
#include <Graphic3d_TypeOfPolygon.hxx>
|
|
||||||
#include <Aspect_InteriorStyle.hxx>
|
|
||||||
|
|
||||||
#include <OpenGl_Element.hxx>
|
|
||||||
|
|
||||||
#include <NCollection_Vector.hxx>
|
|
||||||
|
|
||||||
struct SEQ_;
|
|
||||||
|
|
||||||
struct TEL_POLYGON_DATA
|
|
||||||
{
|
|
||||||
Tint num_vertices; /* Number of vertices */
|
|
||||||
Tint facet_flag; /* TEL_FA_NONE or TEL_FA_NORMAL */
|
|
||||||
Tint vertex_flag; /* TEL_VT_NONE or TEL_VT_NORMAL */
|
|
||||||
Tint shape_flag; /* TEL_SHAPE_UNKNOWN or TEL_SHAPE_COMPLEX or
|
|
||||||
TEL_SHAPE_CONVEX or TEL_SHAPE_CONCAVE */
|
|
||||||
Tint reverse_order; /* 1 if polygon vertex must be display in reverse order */
|
|
||||||
TEL_POINT fnormal; /* Facet normal */
|
|
||||||
tel_colour fcolour; /* Facet colour */
|
|
||||||
tel_point vertices; /* Vertices */
|
|
||||||
tel_colour vcolours; /* Vertex colour values */
|
|
||||||
tel_point vnormals; /* Vertex normals */
|
|
||||||
tel_texture_coord vtexturecoord; /* Texture Coordinates */
|
|
||||||
NCollection_Vector<SEQ_> *dsply;
|
|
||||||
DEFINE_STANDARD_ALLOC
|
|
||||||
};
|
|
||||||
|
|
||||||
class OpenGl_Polygon : public OpenGl_Element
|
|
||||||
{
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
OpenGl_Polygon (const Graphic3d_Array1OfVertex& AListVertex,
|
|
||||||
const Graphic3d_TypeOfPolygon AType);
|
|
||||||
|
|
||||||
virtual void Render (const Handle(OpenGl_Workspace)& theWorkspace) const;
|
|
||||||
virtual void Release (const Handle(OpenGl_Context)& theContext);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
virtual ~OpenGl_Polygon();
|
|
||||||
|
|
||||||
void draw_polygon_concav (const Handle(OpenGl_Workspace) &AWorkspace, Tint) const;
|
|
||||||
|
|
||||||
void draw_polygon (const Handle(OpenGl_Workspace) &AWorkspace, Tint) const;
|
|
||||||
|
|
||||||
void draw_tmesh (Tint) const;
|
|
||||||
|
|
||||||
void draw_edges (const TEL_COLOUR *, const Aspect_InteriorStyle, const Handle(OpenGl_Workspace) &) const;
|
|
||||||
|
|
||||||
TEL_POLYGON_DATA myData;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
DEFINE_STANDARD_ALLOC
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif //OpenGl_Polygon_Header
|
|
@ -1,73 +0,0 @@
|
|||||||
// Created on: 2011-07-13
|
|
||||||
// Created by: Sergey ZERCHANINOV
|
|
||||||
// Copyright (c) 2011-2012 OPEN CASCADE SAS
|
|
||||||
//
|
|
||||||
// The content of this file is subject to the Open CASCADE Technology Public
|
|
||||||
// License Version 6.5 (the "License"). You may not use the content of this file
|
|
||||||
// except in compliance with the License. Please obtain a copy of the License
|
|
||||||
// at http://www.opencascade.org and read it completely before using this file.
|
|
||||||
//
|
|
||||||
// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
|
|
||||||
// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
|
|
||||||
//
|
|
||||||
// The Original Code and all software distributed under the License is
|
|
||||||
// distributed on an "AS IS" basis, without warranty of any kind, and the
|
|
||||||
// Initial Developer hereby disclaims all such warranties, including without
|
|
||||||
// limitation, any warranties of merchantability, fitness for a particular
|
|
||||||
// purpose or non-infringement. Please see the License for the specific terms
|
|
||||||
// and conditions governing the rights and limitations under the License.
|
|
||||||
|
|
||||||
#include <OpenGl_GlCore11.hxx>
|
|
||||||
|
|
||||||
#include <OpenGl_Polyline.hxx>
|
|
||||||
|
|
||||||
#include <OpenGl_AspectLine.hxx>
|
|
||||||
#include <OpenGl_Structure.hxx>
|
|
||||||
#include <OpenGl_Workspace.hxx>
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
OpenGl_Polyline::OpenGl_Polyline (const Graphic3d_Array1OfVertex& AListVertex)
|
|
||||||
: myNbVertices(AListVertex.Length()),
|
|
||||||
myVertices(NULL)
|
|
||||||
{
|
|
||||||
myVertices = new TEL_POINT[myNbVertices];
|
|
||||||
memcpy( myVertices, &AListVertex(AListVertex.Lower()), myNbVertices*sizeof(TEL_POINT) );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
OpenGl_Polyline::~OpenGl_Polyline()
|
|
||||||
{
|
|
||||||
delete[] myVertices;
|
|
||||||
}
|
|
||||||
|
|
||||||
void OpenGl_Polyline::Release (const Handle(OpenGl_Context)& theContext)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
void OpenGl_Polyline::Render (const Handle(OpenGl_Workspace)& theWorkspace) const
|
|
||||||
{
|
|
||||||
// Apply line aspect
|
|
||||||
const OpenGl_AspectLine* anAspectLine = theWorkspace->AspectLine (Standard_True);
|
|
||||||
|
|
||||||
// Temporarily disable environment mapping
|
|
||||||
glPushAttrib (GL_ENABLE_BIT);
|
|
||||||
glDisable (GL_TEXTURE_1D);
|
|
||||||
glDisable (GL_TEXTURE_2D);
|
|
||||||
|
|
||||||
glBegin (GL_LINE_STRIP);
|
|
||||||
|
|
||||||
// Use highlight colors
|
|
||||||
glColor3fv ((theWorkspace->NamedStatus & OPENGL_NS_HIGHLIGHT) ? theWorkspace->HighlightColor->rgb : anAspectLine->Color().rgb);
|
|
||||||
|
|
||||||
for (Tint i = 0; i < myNbVertices; ++i)
|
|
||||||
glVertex3fv (myVertices[i].xyz);
|
|
||||||
|
|
||||||
glEnd();
|
|
||||||
|
|
||||||
glPopAttrib();
|
|
||||||
}
|
|
@ -1,55 +0,0 @@
|
|||||||
// Created on: 2011-07-13
|
|
||||||
// Created by: Sergey ZERCHANINOV
|
|
||||||
// Copyright (c) 2011-2012 OPEN CASCADE SAS
|
|
||||||
//
|
|
||||||
// The content of this file is subject to the Open CASCADE Technology Public
|
|
||||||
// License Version 6.5 (the "License"). You may not use the content of this file
|
|
||||||
// except in compliance with the License. Please obtain a copy of the License
|
|
||||||
// at http://www.opencascade.org and read it completely before using this file.
|
|
||||||
//
|
|
||||||
// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
|
|
||||||
// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
|
|
||||||
//
|
|
||||||
// The Original Code and all software distributed under the License is
|
|
||||||
// distributed on an "AS IS" basis, without warranty of any kind, and the
|
|
||||||
// Initial Developer hereby disclaims all such warranties, including without
|
|
||||||
// limitation, any warranties of merchantability, fitness for a particular
|
|
||||||
// purpose or non-infringement. Please see the License for the specific terms
|
|
||||||
// and conditions governing the rights and limitations under the License.
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef OpenGl_Polyline_Header
|
|
||||||
#define OpenGl_Polyline_Header
|
|
||||||
|
|
||||||
#include <InterfaceGraphic_telem.hxx>
|
|
||||||
|
|
||||||
#include <OpenGl_Element.hxx>
|
|
||||||
|
|
||||||
#include <Graphic3d_Array1OfVertex.hxx>
|
|
||||||
|
|
||||||
class OpenGl_Polyline : public OpenGl_Element
|
|
||||||
{
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
OpenGl_Polyline (const Graphic3d_Array1OfVertex& AListVertex);
|
|
||||||
|
|
||||||
virtual void Render (const Handle(OpenGl_Workspace)& theWorkspace) const;
|
|
||||||
virtual void Release (const Handle(OpenGl_Context)& theContext);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
virtual ~OpenGl_Polyline();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
Tint myNbVertices; // Number of vertices in vertices array
|
|
||||||
tel_point myVertices; // Vertices array of length myNbVertices
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
DEFINE_STANDARD_ALLOC
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif //OpenGl_Polyline_Header
|
|
@ -17,17 +17,97 @@
|
|||||||
// purpose or non-infringement. Please see the License for the specific terms
|
// purpose or non-infringement. Please see the License for the specific terms
|
||||||
// and conditions governing the rights and limitations under the License.
|
// and conditions governing the rights and limitations under the License.
|
||||||
|
|
||||||
|
|
||||||
#include <OpenGl_GlCore11.hxx>
|
#include <OpenGl_GlCore11.hxx>
|
||||||
|
|
||||||
#include <OpenGl_Structure.hxx>
|
#include <OpenGl_Structure.hxx>
|
||||||
|
|
||||||
#include <OpenGl_Polyline.hxx>
|
|
||||||
#include <OpenGl_Workspace.hxx>
|
#include <OpenGl_Workspace.hxx>
|
||||||
|
#include <OpenGl_Vec.hxx>
|
||||||
#include <OpenGl_View.hxx>
|
#include <OpenGl_View.hxx>
|
||||||
|
|
||||||
#include <OpenGl_telem_util.hxx>
|
#include <OpenGl_telem_util.hxx>
|
||||||
|
|
||||||
|
//! Auxiliary class for bounding box presentation
|
||||||
|
class OpenGl_BndBoxPrs : public OpenGl_Element
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//! Main constructor
|
||||||
|
OpenGl_BndBoxPrs (const CALL_DEF_BOUNDBOX& theBndBox)
|
||||||
|
{
|
||||||
|
const float Xm = theBndBox.Pmin.x;
|
||||||
|
const float Ym = theBndBox.Pmin.y;
|
||||||
|
const float Zm = theBndBox.Pmin.z;
|
||||||
|
const float XM = theBndBox.Pmax.x;
|
||||||
|
const float YM = theBndBox.Pmax.y;
|
||||||
|
const float ZM = theBndBox.Pmax.z;
|
||||||
|
myVerts[0] = OpenGl_Vec3 (Xm, Ym, Zm);
|
||||||
|
myVerts[1] = OpenGl_Vec3 (Xm, Ym, ZM);
|
||||||
|
myVerts[2] = OpenGl_Vec3 (Xm, YM, ZM);
|
||||||
|
myVerts[3] = OpenGl_Vec3 (Xm, YM, Zm);
|
||||||
|
myVerts[4] = OpenGl_Vec3 (Xm, Ym, Zm);
|
||||||
|
myVerts[5] = OpenGl_Vec3 (XM, Ym, Zm);
|
||||||
|
myVerts[6] = OpenGl_Vec3 (XM, Ym, ZM);
|
||||||
|
myVerts[7] = OpenGl_Vec3 (XM, YM, ZM);
|
||||||
|
myVerts[8] = OpenGl_Vec3 (XM, YM, Zm);
|
||||||
|
myVerts[9] = OpenGl_Vec3 (XM, Ym, Zm);
|
||||||
|
myVerts[10] = OpenGl_Vec3 (XM, YM, Zm);
|
||||||
|
myVerts[11] = OpenGl_Vec3 (Xm, YM, Zm);
|
||||||
|
myVerts[12] = OpenGl_Vec3 (Xm, YM, ZM);
|
||||||
|
myVerts[13] = OpenGl_Vec3 (XM, YM, ZM);
|
||||||
|
myVerts[14] = OpenGl_Vec3 (XM, Ym, ZM);
|
||||||
|
myVerts[15] = OpenGl_Vec3 (Xm, Ym, ZM);
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Render presentation
|
||||||
|
virtual void Render (const Handle(OpenGl_Workspace)& theWorkspace) const
|
||||||
|
{
|
||||||
|
// Apply line aspect
|
||||||
|
const OpenGl_AspectLine* anAspectLine = theWorkspace->AspectLine (Standard_True);
|
||||||
|
const Handle(OpenGl_Texture) aPrevTexture = theWorkspace->DisableTexture();
|
||||||
|
|
||||||
|
glDisable (GL_LIGHTING);
|
||||||
|
if ((theWorkspace->NamedStatus & (OPENGL_NS_ADD | OPENGL_NS_IMMEDIATE)) != 0)
|
||||||
|
{
|
||||||
|
glDepthMask (GL_FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use highlight colors
|
||||||
|
glColor3fv ((theWorkspace->NamedStatus & OPENGL_NS_HIGHLIGHT) ? theWorkspace->HighlightColor->rgb : anAspectLine->Color().rgb);
|
||||||
|
|
||||||
|
glEnableClientState (GL_VERTEX_ARRAY);
|
||||||
|
glVertexPointer (3, GL_FLOAT, 0, (GLfloat* )&myVerts);
|
||||||
|
glDrawArrays (GL_LINE_STRIP, 0, 16);
|
||||||
|
glDisableClientState (GL_VERTEX_ARRAY);
|
||||||
|
|
||||||
|
// restore aspects
|
||||||
|
if (!aPrevTexture.IsNull())
|
||||||
|
{
|
||||||
|
theWorkspace->EnableTexture (aPrevTexture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Release graphical resources
|
||||||
|
virtual void Release (const Handle(OpenGl_Context)& )
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
//! Protected destructor
|
||||||
|
virtual ~OpenGl_BndBoxPrs() {}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
OpenGl_Vec3 myVerts[16]; //!< vertices array
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
DEFINE_STANDARD_ALLOC
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
@ -147,34 +227,8 @@ void OpenGl_Structure::SetHighlightBox (const Handle(OpenGl_Context)& theGlCtx,
|
|||||||
aContextLine.Width = 1.0f;
|
aContextLine.Width = 1.0f;
|
||||||
myHighlightBox->SetAspectLine (aContextLine);
|
myHighlightBox->SetAspectLine (aContextLine);
|
||||||
|
|
||||||
#define CALL_MAX_BOUNDBOXSIZE 16
|
OpenGl_BndBoxPrs* aBndBoxPrs = new OpenGl_BndBoxPrs (theBoundBox);
|
||||||
|
myHighlightBox->AddElement (TelParray, aBndBoxPrs);
|
||||||
Graphic3d_Array1OfVertex aPoints (1, CALL_MAX_BOUNDBOXSIZE);
|
|
||||||
const float Xm = theBoundBox.Pmin.x;
|
|
||||||
const float Ym = theBoundBox.Pmin.y;
|
|
||||||
const float Zm = theBoundBox.Pmin.z;
|
|
||||||
const float XM = theBoundBox.Pmax.x;
|
|
||||||
const float YM = theBoundBox.Pmax.y;
|
|
||||||
const float ZM = theBoundBox.Pmax.z;
|
|
||||||
aPoints( 1).SetCoord (Xm, Ym, Zm);
|
|
||||||
aPoints( 2).SetCoord (Xm, Ym, ZM);
|
|
||||||
aPoints( 3).SetCoord (Xm, YM, ZM);
|
|
||||||
aPoints( 4).SetCoord (Xm, YM, Zm);
|
|
||||||
aPoints( 5).SetCoord (Xm, Ym, Zm);
|
|
||||||
aPoints( 6).SetCoord (XM, Ym, Zm);
|
|
||||||
aPoints( 7).SetCoord (XM, Ym, ZM);
|
|
||||||
aPoints( 8).SetCoord (XM, YM, ZM);
|
|
||||||
aPoints( 9).SetCoord (XM, YM, Zm);
|
|
||||||
aPoints(10).SetCoord (XM, Ym, Zm);
|
|
||||||
aPoints(11).SetCoord (XM, YM, Zm);
|
|
||||||
aPoints(12).SetCoord (Xm, YM, Zm);
|
|
||||||
aPoints(13).SetCoord (Xm, YM, ZM);
|
|
||||||
aPoints(14).SetCoord (XM, YM, ZM);
|
|
||||||
aPoints(15).SetCoord (XM, Ym, ZM);
|
|
||||||
aPoints(16).SetCoord (Xm, Ym, ZM);
|
|
||||||
|
|
||||||
OpenGl_Polyline* aPolyline = new OpenGl_Polyline (aPoints);
|
|
||||||
myHighlightBox->AddElement (TelPolyline, aPolyline);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
|
@ -16,109 +16,17 @@
|
|||||||
// purpose or non-infringement. Please see the License for the specific terms
|
// purpose or non-infringement. Please see the License for the specific terms
|
||||||
// and conditions governing the rights and limitations under the License.
|
// and conditions governing the rights and limitations under the License.
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
|
|
||||||
FONCTION :
|
|
||||||
----------
|
|
||||||
File OpenGl_tsm :
|
|
||||||
|
|
||||||
|
|
||||||
REMARQUES:
|
|
||||||
----------
|
|
||||||
|
|
||||||
HISTORIQUE DES MODIFICATIONS :
|
|
||||||
--------------------------------
|
|
||||||
xx-xx-xx : xxx ; Creation.
|
|
||||||
17-07-96 : FMN ; Suppression de TelHLHSRMode
|
|
||||||
05-08-97 : PCT ; support texture mapping
|
|
||||||
23-12-97 : FMN ; Suppression TelBackInteriorStyle, TelBackInteriorStyleIndex
|
|
||||||
et TelBackInteriorShadingMethod
|
|
||||||
30-11-98 : FMN ; S3819 : Textes toujours visibles
|
|
||||||
16-06-00 : ATS,SPK : G005 : Group of new primitives: TelParray
|
|
||||||
22-03-04 : SAN : OCC4895 High-level interface for controlling polygon offsets
|
|
||||||
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
#ifndef OPENGL_TSM_H
|
#ifndef OPENGL_TSM_H
|
||||||
#define OPENGL_TSM_H
|
#define OPENGL_TSM_H
|
||||||
|
|
||||||
// OCC1188 SAV 23/12/02 Added structure to control background texture enum to control texture fill method
|
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
TelNil = 0,
|
TelNil = 0,
|
||||||
TelLabel,
|
|
||||||
TelAntiAliasing,
|
|
||||||
TelBlink,
|
|
||||||
TelExecuteStructure,
|
|
||||||
/* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */
|
|
||||||
TelTransformPersistence,
|
|
||||||
/* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */
|
|
||||||
TelPolylineColour,
|
|
||||||
TelPolylineType,
|
|
||||||
TelPolylineWidth,
|
|
||||||
TelInteriorStyle,
|
|
||||||
TelInteriorColour,
|
|
||||||
TelBackInteriorColour,
|
|
||||||
TelEdgeColour,
|
|
||||||
TelEdgeType,
|
|
||||||
TelEdgeWidth,
|
|
||||||
TelEdgeFlag,
|
|
||||||
TelInteriorStyleIndex,
|
|
||||||
TelFaceDistinguishingMode,
|
|
||||||
TelFaceCullingMode,
|
|
||||||
TelInteriorReflectanceEquation,
|
|
||||||
TelSurfaceAreaProperties,
|
|
||||||
TelBackInteriorReflectanceEquation,
|
|
||||||
TelBackSurfaceAreaProperties,
|
|
||||||
TelPolymarkerColour,
|
|
||||||
TelPolymarkerType,
|
|
||||||
TelPolymarkerSize,
|
|
||||||
TelTextFont,
|
|
||||||
TelTextHeight,
|
|
||||||
TelCharacterSpacing,
|
|
||||||
TelCharacterExpansionFactor,
|
|
||||||
TelTextColour,
|
|
||||||
TelDepthCueIndex,
|
|
||||||
TelPickId,
|
|
||||||
TelPolygon,
|
|
||||||
TelPolygonSet,
|
|
||||||
TelPolygonHoles,
|
|
||||||
TelPolygonIndices,
|
|
||||||
TelQuadrangle,
|
|
||||||
TelPolyline,
|
|
||||||
TelMarker,
|
TelMarker,
|
||||||
TelMarkerSet,
|
TelMarkerSet,
|
||||||
TelText,
|
TelText,
|
||||||
TelTriangleMesh,
|
|
||||||
TelAddNameset,
|
|
||||||
TelRemoveNameset,
|
|
||||||
TelInteriorShadingMethod,
|
|
||||||
TelLocalTran3,
|
|
||||||
TelHighlightIndex,
|
|
||||||
TelLightSrcState,
|
|
||||||
TelClippingPlane,
|
|
||||||
TelViewIndex,
|
|
||||||
TelApplicationData,
|
|
||||||
TelCurve,
|
|
||||||
TelTextureId,
|
|
||||||
TelDoTextureMap,
|
|
||||||
TelTextStyle,
|
|
||||||
TelTextDisplayType,
|
|
||||||
TelTextColourSubTitle,
|
|
||||||
TelTextZoomable,//Text Zoomable attributes
|
|
||||||
TelTextAngle,//Text Angle attributes
|
|
||||||
TelTextFontAspect,//Text Font Aspect attributes
|
|
||||||
/*OCC7456 abd 14.12.2004 Text alingnment attributes */
|
|
||||||
TelTextAlign,
|
|
||||||
/*OCC7456 abd 14.12.2004 Text alingnment attributes */
|
|
||||||
TelParray,
|
TelParray,
|
||||||
/* OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets */
|
|
||||||
TelPolygonOffset,
|
|
||||||
/* OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets */
|
|
||||||
/* OCC???? SZV 11/08/05 Implementation of callbacks */
|
|
||||||
TelUserdraw,
|
TelUserdraw,
|
||||||
/* OCC???? SZV 11/08/05 Implementation of callbacks */
|
|
||||||
TelLast
|
TelLast
|
||||||
} TelType;
|
} TelType;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user