0023067: OpenGl package API needed by UserDraw feature is not exported
[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
161c4476 50 //! Destructor
2166f0fa 51 virtual ~OpenGl_Resource() {}
161c4476
K
52
53 //! method clean() is accessible only by OpenGl_ResourceCleaner
54 friend class OpenGl_ResourceCleaner;
55
56protected:
57
58 //! Clean procedure, should be called only by OpenGl_ResourceCleaner;
59 //! Each type of resource has its own cleaning procedure
2166f0fa 60 virtual void Clean (const Handle(OpenGl_Context)& theGlContext) = 0;
161c4476
K
61
62protected:
63
64 GLuint myId; // Id of OpenGl memory resource
65
3946774d 66public:
67
68 DEFINE_STANDARD_RTTI(OpenGl_Resource) // Type definition
69
161c4476
K
70};
71
72DEFINE_STANDARD_HANDLE(OpenGl_Resource,MMgt_TShared)
73
74#endif