0023544: Texture management in TKOpenGl should be redesigned
[occt.git] / src / OpenGl / OpenGl_Polyline.cxx
CommitLineData
b311480e 1// Created on: 2011-07-13
2// Created by: Sergey ZERCHANINOV
3// Copyright (c) 2011-2012 OPEN CASCADE SAS
4//
5// The content of this file is subject to the Open CASCADE Technology Public
6// License Version 6.5 (the "License"). You may not use the content of this file
7// except in compliance with the License. Please obtain a copy of the License
8// at http://www.opencascade.org and read it completely before using this file.
9//
10// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12//
13// The Original Code and all software distributed under the License is
14// distributed on an "AS IS" basis, without warranty of any kind, and the
15// Initial Developer hereby disclaims all such warranties, including without
16// limitation, any warranties of merchantability, fitness for a particular
17// purpose or non-infringement. Please see the License for the specific terms
18// and conditions governing the rights and limitations under the License.
19
5f8b738e 20#include <OpenGl_GlCore11.hxx>
2166f0fa 21
5f8b738e 22#include <OpenGl_Polyline.hxx>
2166f0fa
SK
23
24#include <OpenGl_AspectLine.hxx>
25#include <OpenGl_Structure.hxx>
bf75be98 26#include <OpenGl_Workspace.hxx>
2166f0fa
SK
27
28/*----------------------------------------------------------------------*/
29
30OpenGl_Polyline::OpenGl_Polyline (const Graphic3d_Array1OfVertex& AListVertex)
31: myNbVertices(AListVertex.Length()),
2bd4c032 32 myVertices(NULL)
2166f0fa
SK
33{
34 myVertices = new TEL_POINT[myNbVertices];
35 memcpy( myVertices, &AListVertex(AListVertex.Lower()), myNbVertices*sizeof(TEL_POINT) );
36}
37
38/*----------------------------------------------------------------------*/
39
2bd4c032 40OpenGl_Polyline::~OpenGl_Polyline()
2166f0fa 41{
2bd4c032 42 delete[] myVertices;
2166f0fa
SK
43}
44
5e27df78 45void OpenGl_Polyline::Release (const Handle(OpenGl_Context)& theContext)
46{
47 //
48}
49
2166f0fa
SK
50/*----------------------------------------------------------------------*/
51
52void OpenGl_Polyline::Render (const Handle(OpenGl_Workspace)& theWorkspace) const
53{
54 // Apply line aspect
55 const OpenGl_AspectLine* anAspectLine = theWorkspace->AspectLine (Standard_True);
56
57 // Temporarily disable environment mapping
58 glPushAttrib (GL_ENABLE_BIT);
59 glDisable (GL_TEXTURE_1D);
60 glDisable (GL_TEXTURE_2D);
61
62 glBegin (theWorkspace->DegenerateModel != 3 ? GL_LINE_STRIP : GL_POINTS);
2bd4c032 63
64 // Use highlight colors
65 glColor3fv ((theWorkspace->NamedStatus & OPENGL_NS_HIGHLIGHT) ? theWorkspace->HighlightColor->rgb : anAspectLine->Color().rgb);
66
67 for (Tint i = 0; i < myNbVertices; ++i)
68 glVertex3fv (myVertices[i].xyz);
69
2166f0fa
SK
70 glEnd();
71
72 glPopAttrib();
73}