/usr/include/oce/OpenGl_GraduatedTrihedron.hxx is in liboce-visualization-dev 0.18.2-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 | // Created on: 2011-09-20
// Created by: Sergey ZERCHANINOV
// Copyright (c) 2011-2013 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.
#ifndef _OpenGl_GraduatedTrihedron_Header
#define _OpenGl_GraduatedTrihedron_Header
#include <Graphic3d_GraduatedTrihedron.hxx>
#include <gp_Ax1.hxx>
#include <gp_Pnt.hxx>
#include <gp_Dir.hxx>
#include <NCollection_Array1.hxx>
#include <OpenGl_AspectLine.hxx>
#include <OpenGl_Element.hxx>
#include <OpenGl_PrimitiveArray.hxx>
#include <OpenGl_Text.hxx>
class Visual3d_View;
class OpenGl_View;
//! This class allows to render Graduated Trihedron, i.e. trihedron with grid.
//! it is based on Graphic3d_GraduatedTrihedron parameters and support its customization
//! on construction level only.
//! @sa Graphic3d_GraduatedTrihedron
class OpenGl_GraduatedTrihedron : public OpenGl_Element
{
public:
DEFINE_STANDARD_ALLOC
public:
//! Default constructor.
OpenGl_GraduatedTrihedron();
//! Destructor.
virtual ~OpenGl_GraduatedTrihedron();
//! Draw the element.
virtual void Render (const Handle(OpenGl_Workspace)& theWorkspace) const;
//! Release OpenGL resources.
virtual void Release (OpenGl_Context* theCtx);
//! Setup configuration.
void SetValues (const Handle(OpenGl_Context)& theCtx,
const Graphic3d_GraduatedTrihedron& theData);
//! Sets up-to-date values of scene bounding box.
//! Can be used in callback mechanism to get up-to-date values.
//! @sa Graphic3d_GraduatedTrihedron::CubicAxesCallback
void SetMinMax (const OpenGl_Vec3& theMin,
const OpenGl_Vec3& theMax);
private:
//! Axis of trihedron. It incapsulates geometry and style.
class Axis
{
public:
OpenGl_Vec3 Direction;
TEL_COLOUR NameColor;
OpenGl_AspectLine LineAspect;
mutable OpenGl_Text Label;
mutable OpenGl_PrimitiveArray Tickmark;
mutable OpenGl_PrimitiveArray Line;
mutable OpenGl_PrimitiveArray Arrow;
public:
Axis (const Graphic3d_AxisAspect& theAspect = Graphic3d_AxisAspect(),
const OpenGl_Vec3& theDirection = OpenGl_Vec3 (1.0f, 0.0f, 0.0f));
~Axis();
Axis& operator= (const Axis& theOther);
void InitArrow (const Handle(OpenGl_Context)& theContext,
const Standard_ShortReal theLength,
const OpenGl_Vec3& theNormal) const;
void InitTickmark (const Handle(OpenGl_Context)& theContext,
const OpenGl_Vec3& theDir) const;
void InitLine (const Handle(OpenGl_Context)& theContext,
const OpenGl_Vec3& theDir) const;
void Release (OpenGl_Context* theCtx);
};
private:
//! Struct for triple of orthonormal vectors
//! and origin point, and axes for tickmarks.
//! It may be not a right or left coordinate system.
struct GridAxes
{
public:
GridAxes()
: Origin (0, 0, 0)
{
Axes[0] = OpenGl_Vec3 (1.0f, 0.0f, 0.0f);
Axes[1] = OpenGl_Vec3 (0.0f, 1.0f, 0.0f);
Axes[2] = OpenGl_Vec3 (0.0f, 0.0f, 1.0f);
Ticks[0] = OpenGl_Vec3 (0.0f, 0.0f, 0.0f);
Ticks[1] = OpenGl_Vec3 (0.0f, 0.0f, 0.0f);
Ticks[2] = OpenGl_Vec3 (0.0f, 0.0f, 0.0f);
}
public: //! @name Main grid directions
OpenGl_Vec3 Origin;
OpenGl_Vec3 Axes[3];
public: //! @name Directions for tickmarks
OpenGl_Vec3 Ticks[3];
};
private:
//! Gets normal of the view out of user.
//! @param theContext [in] OpenGL Context
//! @param theNormal [out] normal of the view out of user
//! @return distance corresponding to 1 pixel
Standard_ShortReal getNormal (const Handle(OpenGl_Context)& theContext,
OpenGl_Vec3& theNormal) const;
//! Gets distance to point (theX, theY, theZ) of bounding box along the normal
//! @param theNormal [in] normal of the view out of user
//! @param theCenter [in] geometry center of bounding box
//! @param theX [in] x of target point
//! @param theY [in] y of target point
//! @param theZ [in] z of terget point
Standard_ShortReal getDistanceToCorner (const OpenGl_Vec3& theNormal,
const OpenGl_Vec3& theCenter,
const Standard_ShortReal theX,
const Standard_ShortReal theY,
const Standard_ShortReal theZ) const;
//! Gets axes of grid
//! @param theCorners [in] the corners of grid
//! @param theGridAxes [out] grid axes, the base of graduated trihedron grid.
Standard_ExtCharacter getGridAxes (const Standard_ShortReal theCorners[8],
GridAxes& theGridAxes) const;
//! Render line from the transformed primitive array myLine
//! @param theWorkspace [in] the OpenGl Workspace
//! @param theMat [in] theMat that containes base transformation and is used for appling
//! translation and rotation
//! @param thaTx the X for vector of translation
//! @param thaTy the Y for vector of translation
//! @param thaTz the Z for vector of translation
void renderLine (const OpenGl_PrimitiveArray& theLine,
const Handle(OpenGl_Workspace)& theWorkspace,
const OpenGl_Mat4& theMat,
const Standard_ShortReal theXt,
const Standard_ShortReal theYt,
const Standard_ShortReal theZt) const;
//! Render grid lines perpendecular the axis of input index
//! @param theWorkspace [in] the OpenGl Workspace
//! @param theIndex [in] index of axis
//! @param theGridAxes [in] grid axes
//! @param theMat [in] theMat that containes base transformation and is used for appling
//! translation and rotation
void renderGridPlane (const Handle(OpenGl_Workspace)& theWorkspace,
const Standard_Integer& theIndex,
const GridAxes& theGridAxes,
OpenGl_Mat4& theMat) const;
//! Render the axis of input index
//! @param theWorkspace [in] the OpenGl Workspace
//! @param theIndex [in] index of axis
//! @param theMat [in] theMat that containes base transformation and is used for appling
//! translation and rotation
void renderAxis (const Handle(OpenGl_Workspace)& theWorkspace,
const Standard_Integer& theIndex,
const OpenGl_Mat4& theMat) const;
//! Render grid labels, tickmark lines and labels
//! @param theWorkspace [in] the OpenGl Workspace
//! @param theMat [in] theMat that containes base transformation and is used for appling
//! translation and rotation
//! @param theIndex [in] index of axis
//! @param theGridAxes [in] grid axes
//! @param theDpix [in] distance corresponding to 1 pixel
void renderTickmarkLabels (const Handle(OpenGl_Workspace)& theWorkspace,
const OpenGl_Mat4& theMat,
const Standard_Integer theIndex,
const GridAxes& theGridAxes,
const Standard_ShortReal theDpix) const;
protected: //! @name Scene bounding box values
OpenGl_Vec3 myMin;
OpenGl_Vec3 myMax;
protected:
Axis myAxes[3]; //!< Axes for trihedron
Graphic3d_GraduatedTrihedron myData;
OpenGl_AspectLine myGridLineAspect; //!< Color grid properties
protected: //! @name Labels properties
mutable OpenGl_Text myLabelValues;
mutable OpenGl_AspectText myAspectLabels;
mutable OpenGl_AspectText myAspectValues;
private:
enum AxisFlags
{
XOO_XYO = 1 << 1,
XOO_XOZ = 1 << 2,
OYO_OYZ = 1 << 3,
OYO_XYO = 1 << 4,
OOZ_XOZ = 1 << 5,
OOZ_OYZ = 1 << 6,
OYZ_XYZ = 1 << 7,
XOZ_XYZ = 1 << 8,
XYO_XYZ = 1 << 9
};
};
#endif //_OpenGl_GraduatedTrihedron_Header
|