0023028: Visualization, TKOpenGl - eliminate global static variables
[occt.git] / src / OpenGl / OpenGl_CappingAlgo.hxx
CommitLineData
4269bd1b 1// Created on: 2013-09-05
2// Created by: Anton POLETAEV
d5f74e42 3// Copyright (c) 2013-2014 OPEN CASCADE SAS
4269bd1b 4//
973c2be1 5// This file is part of Open CASCADE Technology software library.
4269bd1b 6//
d5f74e42 7// This library is free software; you can redistribute it and/or modify it under
8// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 9// by the Free Software Foundation, with special exception defined in the file
10// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11// distribution for complete text of the license and disclaimer of any warranty.
4269bd1b 12//
973c2be1 13// Alternatively, this file may be used under the terms of Open CASCADE
14// commercial license or contractual agreement.
4269bd1b 15
16#ifndef _OpenGl_CappingAlgo_H__
17#define _OpenGl_CappingAlgo_H__
18
19#include <OpenGl_RenderFilter.hxx>
20#include <OpenGl_Group.hxx>
21
b64d84be 22#include <Graphic3d_SequenceOfGroup.hxx>
23
4269bd1b 24// Forward declaration
25class Handle(OpenGl_Workspace);
26class Handle(Graphic3d_ClipPlane);
27
28DEFINE_STANDARD_HANDLE (OpenGl_CappingAlgoFilter, OpenGl_RenderFilter)
29
30//! Capping surface rendering algorithm.
31class OpenGl_CappingAlgo
32{
33public:
34
35 //! Draw capping surfaces by OpenGl for the clipping planes
36 //! enabled in current context state. Depth buffer must be generated
37 //! for the passed groups.
38 //! @param theWorkspace [in] the GL workspace, context state.
39 //! @param theGroups [in] the group of primitives to be capped.
b64d84be 40 Standard_EXPORT static void RenderCapping (const Handle(OpenGl_Workspace)& theWorkspace,
41 const Graphic3d_SequenceOfGroup& theGroups);
4269bd1b 42
43 //! Render infinite capping plane.
44 //! @param theWorkspace [in] the GL workspace, context state.
45 //! @param thePlane [in] the graphical plane, for which the capping surface is rendered.
46 Standard_EXPORT static void RenderPlane (const Handle(OpenGl_Workspace)& theWorkspace,
47 const Handle(Graphic3d_ClipPlane)& thePlane);
4269bd1b 48};
49
50//! Graphical capping rendering algorithm filter.
51//! Filters out everything excepth shaded primitives.
52class OpenGl_CappingAlgoFilter : public OpenGl_RenderFilter
53{
54public:
55
56 //! Default constructor.
57 OpenGl_CappingAlgoFilter() {}
58
59 //! Checks whether the element can be rendered or not.
60 //! @param theElement [in] the element to check.
61 //! @return True if element can be rendered.
62 virtual Standard_Boolean CanRender (const OpenGl_Element* theElement);
63
64public:
65
66 DEFINE_STANDARD_RTTI(OpenGl_CappingAlgoFilter)
67};
68
69#endif