0023085: Call of tcl DFBrowser leads to error message
[occt.git] / src / OpenGl / OpenGl_Resource.hxx
CommitLineData
b311480e 1// Created on: 2011-03-18
2// Created by: Anton POLETAEV
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
161c4476
K
20
21#ifndef _OPENGL_RESOURCE_H
22#define _OPENGL_RESOURCE_H
23
5f8b738e 24#include <OpenGl_GlCore11.hxx>
25
161c4476
K
26#include <OpenGl_ResourceCleaner.hxx>
27#include <MMgt_TShared.hxx>
161c4476
K
28#include <Handle_MMgt_TShared.hxx>
29
30class Standard_Transient;
31class Handle(Standard_Type);
32class Handle(MMgt_TShared);
2166f0fa 33class Handle(OpenGl_Context);
161c4476
K
34class OpenGl_ResourceCleaner;
35
36//! Class represents basic OpenGl memory resource, which
37//! could be removed only if appropriate context is avaliable;
38//! The cleaning procedure is done by OpenGl_ResourceCleaner
39class OpenGl_Resource : public MMgt_TShared
40{
41
42public:
43
44 //! Constructor
45 OpenGl_Resource() : myId(0) { }
46
47 //! Constructor
48 OpenGl_Resource(GLuint theId) : myId(theId) { }
49
50 //! Copy constructor
51 OpenGl_Resource(const OpenGl_Resource& theBase) : myId(theBase.myId) { }
52
53 //! Copy operation
2166f0fa 54 OpenGl_Resource& operator= (const OpenGl_Resource& theBase)
161c4476
K
55 {
56 this->myId = theBase.myId;
57 return *this;
58 }
59
60 //! Destructor
2166f0fa 61 virtual ~OpenGl_Resource() {}
161c4476
K
62
63 //! method clean() is accessible only by OpenGl_ResourceCleaner
64 friend class OpenGl_ResourceCleaner;
65
66protected:
67
68 //! Clean procedure, should be called only by OpenGl_ResourceCleaner;
69 //! Each type of resource has its own cleaning procedure
2166f0fa 70 virtual void Clean (const Handle(OpenGl_Context)& theGlContext) = 0;
161c4476
K
71
72protected:
73
74 GLuint myId; // Id of OpenGl memory resource
75
76};
77
78DEFINE_STANDARD_HANDLE(OpenGl_Resource,MMgt_TShared)
79
80#endif