0031039: Visualization - add elliptical gradient background style

Added new elliptical gradient fill method and updated vbackground command.
Renamed enum values of Aspect_GradientFillMethod and defined aliases for old ones.
Changed draw mode in OpenGl_BackgroundArray from triangle-strip to GL_TRIANGLES.
This commit is contained in:
achesnok
2021-09-21 18:42:21 +03:00
committed by kgv
parent 3be25c1170
commit 9af0d66b84
11 changed files with 182 additions and 101 deletions

View File

@@ -22,7 +22,7 @@ Aspect_GradientBackground::Aspect_GradientBackground () {
SetColor( Black );
MyColor2 = Black;
MyGradientMethod = Aspect_GFM_NONE;
MyGradientMethod = Aspect_GradientFillMethod_None;
}

View File

@@ -16,68 +16,45 @@
#ifndef _Aspect_GradientBackground_HeaderFile
#define _Aspect_GradientBackground_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <Quantity_Color.hxx>
#include <Aspect_GradientFillMethod.hxx>
#include <Aspect_Background.hxx>
class Quantity_Color;
//! This class allows the definition of
//! a window gradient background.
//! This class allows the definition of a window gradient background.
class Aspect_GradientBackground : public Aspect_Background
{
public:
DEFINE_STANDARD_ALLOC
//! Creates a window gradient background.
//! Default colors : Quantity_NOC_BLACK.
//! Default fill method : Aspect_GFM_NONE
//! Default color is Quantity_NOC_BLACK.
//! Default fill method is Aspect_GradientFillMethod_None.
Standard_EXPORT Aspect_GradientBackground();
//! Creates a window gradient background with colours <AColor1, AColor2>.
Standard_EXPORT Aspect_GradientBackground(const Quantity_Color& AColor1, const Quantity_Color& AColor2, const Aspect_GradientFillMethod AMethod = Aspect_GFM_HOR);
//! Modifies the colours of the window gradient background <me>.
Standard_EXPORT void SetColors (const Quantity_Color& AColor1, const Quantity_Color& AColor2, const Aspect_GradientFillMethod AMethod = Aspect_GFM_HOR);
//! Returns colours of the window gradient background <me>.
Standard_EXPORT void Colors (Quantity_Color& AColor1, Quantity_Color& AColor2) const;
//! Creates a window gradient background with two colours.
Standard_EXPORT Aspect_GradientBackground (const Quantity_Color& theColor1,
const Quantity_Color& theColor2,
const Aspect_GradientFillMethod theMethod = Aspect_GradientFillMethod_Horizontal);
//! Modifies the colours of the window gradient background.
Standard_EXPORT void SetColors (const Quantity_Color& theColor1,
const Quantity_Color& theColor2,
const Aspect_GradientFillMethod theMethod = Aspect_GradientFillMethod_Horizontal);
//! Returns colours of the window gradient background.
Standard_EXPORT void Colors (Quantity_Color& theColor1, Quantity_Color& theColor2) const;
//! Returns the current gradient background fill mode.
Standard_EXPORT Aspect_GradientFillMethod BgGradientFillMethod() const;
//! Dumps the content of me into the stream
Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
protected:
private:
Quantity_Color MyColor2;
Aspect_GradientFillMethod MyGradientMethod;
};
#endif // _Aspect_GradientBackground_HeaderFile

View File

@@ -16,19 +16,30 @@
#ifndef _Aspect_GradientFillMethod_HeaderFile
#define _Aspect_GradientFillMethod_HeaderFile
//! Defines the fill methods to
//! write gradient background in a window.
//! Defines the fill methods to write gradient background in a window.
enum Aspect_GradientFillMethod
{
Aspect_GFM_NONE,
Aspect_GFM_HOR,
Aspect_GFM_VER,
Aspect_GFM_DIAG1,
Aspect_GFM_DIAG2,
Aspect_GFM_CORNER1,
Aspect_GFM_CORNER2,
Aspect_GFM_CORNER3,
Aspect_GFM_CORNER4
Aspect_GradientFillMethod_None, //!< fill method not specified
Aspect_GradientFillMethod_Horizontal, //!< gradient directed from left (Color1) to right (Color2)
Aspect_GradientFillMethod_Vertical, //!< gradient directed from top (Color1) to bottom (Color2)
Aspect_GradientFillMethod_Diagonal1, //!< gradient directed from upper left corner (Color1) to lower right (Color2)
Aspect_GradientFillMethod_Diagonal2, //!< gradient directed from upper right corner (Color1) to lower left (Color2)
Aspect_GradientFillMethod_Corner1, //!< highlights upper left corner with Color1
Aspect_GradientFillMethod_Corner2, //!< highlights upper right corner with Color1
Aspect_GradientFillMethod_Corner3, //!< highlights lower right corner with Color1
Aspect_GradientFillMethod_Corner4, //!< highlights lower left corner with Color1
Aspect_GradientFillMethod_Elliptical, //!< gradient directed from center (Color1) in all directions forming an elliptic shape (Color2)
// obsolete aliases
Aspect_GFM_NONE = Aspect_GradientFillMethod_None,
Aspect_GFM_HOR = Aspect_GradientFillMethod_Horizontal,
Aspect_GFM_VER = Aspect_GradientFillMethod_Vertical,
Aspect_GFM_DIAG1 = Aspect_GradientFillMethod_Diagonal1,
Aspect_GFM_DIAG2 = Aspect_GradientFillMethod_Diagonal2,
Aspect_GFM_CORNER1 = Aspect_GradientFillMethod_Corner1,
Aspect_GFM_CORNER2 = Aspect_GradientFillMethod_Corner2,
Aspect_GFM_CORNER3 = Aspect_GradientFillMethod_Corner3,
Aspect_GFM_CORNER4 = Aspect_GradientFillMethod_Corner4
};
#endif // _Aspect_GradientFillMethod_HeaderFile