Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:04:21

0001 // Copyright (c) 2019 OPEN CASCADE SAS
0002 //
0003 // This file is part of Open CASCADE Technology software library.
0004 //
0005 // This library is free software; you can redistribute it and/or modify it under
0006 // the terms of the GNU Lesser General Public License version 2.1 as published
0007 // by the Free Software Foundation, with special exception defined in the file
0008 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0009 // distribution for complete text of the license and disclaimer of any warranty.
0010 //
0011 // Alternatively, this file may be used under the terms of Open CASCADE
0012 // commercial license or contractual agreement.
0013 
0014 #ifndef _OpenGl_Aspects_Header
0015 #define _OpenGl_Aspects_Header
0016 
0017 #include <OpenGl_Element.hxx>
0018 #include <OpenGl_AspectsProgram.hxx>
0019 #include <OpenGl_AspectsTextureSet.hxx>
0020 #include <OpenGl_AspectsSprite.hxx>
0021 #include <Graphic3d_Aspects.hxx>
0022 
0023 //! The element holding Graphic3d_Aspects.
0024 class OpenGl_Aspects : public OpenGl_Element
0025 {
0026 public:
0027 
0028   //! Empty constructor.
0029   Standard_EXPORT OpenGl_Aspects();
0030 
0031   //! Create and assign parameters.
0032   Standard_EXPORT OpenGl_Aspects (const Handle(Graphic3d_Aspects)& theAspect);
0033 
0034   //! Return aspect.
0035   const Handle(Graphic3d_Aspects)& Aspect() const { return myAspect; }
0036 
0037   //! Assign parameters.
0038   Standard_EXPORT void SetAspect (const Handle(Graphic3d_Aspects)& theAspect);
0039 
0040   //! Returns Shading Model.
0041   Graphic3d_TypeOfShadingModel ShadingModel() const { return myShadingModel; }
0042 
0043   //! Set if lighting should be disabled or not.
0044   void SetNoLighting() { myShadingModel = Graphic3d_TypeOfShadingModel_Unlit; }
0045 
0046   //! Returns textures map.
0047   const Handle(OpenGl_TextureSet)& TextureSet (const Handle(OpenGl_Context)& theCtx,
0048                                                bool theToHighlight = false) const
0049   {
0050     const Handle(OpenGl_PointSprite)& aSprite  = myResSprite.Sprite (theCtx, myAspect, false);
0051     const Handle(OpenGl_PointSprite)& aSpriteA = myResSprite.Sprite (theCtx, myAspect, true);
0052     return myResTextureSet.TextureSet (theCtx, myAspect, aSprite, aSpriteA, theToHighlight);
0053   }
0054 
0055   //! Init and return OpenGl shader program resource.
0056   //! @return shader program resource.
0057   const Handle(OpenGl_ShaderProgram)& ShaderProgramRes (const Handle(OpenGl_Context)& theCtx) const
0058   {
0059     return myResProgram.ShaderProgram (theCtx, myAspect->ShaderProgram());
0060   }
0061 
0062   //! @return marker size
0063   Standard_ShortReal MarkerSize() const { return myResSprite.MarkerSize(); }
0064 
0065   //! Return TRUE if OpenGl point sprite resource defines texture.
0066   bool HasPointSprite (const Handle(OpenGl_Context)& theCtx) const
0067   {
0068     return myResSprite.HasPointSprite (theCtx, myAspect);
0069   }
0070 
0071   //! Return TRUE if OpenGl point sprite resource defined by obsolete Display List (bitmap).
0072   bool IsDisplayListSprite (const Handle(OpenGl_Context)& theCtx) const
0073   {
0074     return myResSprite.IsDisplayListSprite (theCtx, myAspect);
0075   }
0076 
0077   //! Init and return OpenGl point sprite resource.
0078   //! @return point sprite texture.
0079   const Handle(OpenGl_PointSprite)& SpriteRes (const Handle(OpenGl_Context)& theCtx,
0080                                                bool theIsAlphaSprite) const
0081   {
0082     return myResSprite.Sprite (theCtx, myAspect, theIsAlphaSprite);
0083   }
0084 
0085   Standard_EXPORT virtual void Render  (const Handle(OpenGl_Workspace)& theWorkspace) const Standard_OVERRIDE;
0086   Standard_EXPORT virtual void Release (OpenGl_Context* theContext) Standard_OVERRIDE;
0087 
0088   //! Update presentation aspects parameters after their modification.
0089   virtual void SynchronizeAspects() Standard_OVERRIDE { SetAspect (myAspect); }
0090 
0091   //! Dumps the content of me into the stream
0092   Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const Standard_OVERRIDE;
0093 
0094 protected:
0095 
0096   //! OpenGl resources
0097   mutable OpenGl_AspectsProgram    myResProgram;
0098   mutable OpenGl_AspectsTextureSet myResTextureSet;
0099   mutable OpenGl_AspectsSprite     myResSprite;
0100 
0101   Handle(Graphic3d_Aspects)    myAspect;
0102   Graphic3d_TypeOfShadingModel myShadingModel;
0103 
0104 public:
0105 
0106   DEFINE_STANDARD_ALLOC
0107 
0108 };
0109 
0110 #endif // _OpenGl_Aspects_Header