0027670: Visualization - avoid duplication of structures defining primitive array...
[occt.git] / src / Graphic3d / Graphic3d_AspectText3d.hxx
index 4bb65b4..2d480c5 100644 (file)
 #ifndef _Graphic3d_AspectText3d_HeaderFile
 #define _Graphic3d_AspectText3d_HeaderFile
 
-#include <Standard.hxx>
-#include <Standard_Type.hxx>
-
-#include <TCollection_AsciiString.hxx>
-#include <Quantity_Color.hxx>
-#include <Standard_Real.hxx>
 #include <Aspect_TypeOfStyleText.hxx>
 #include <Aspect_TypeOfDisplayText.hxx>
-#include <Standard_Boolean.hxx>
-#include <Font_FontAspect.hxx>
+#include <Graphic3d_AspectTextDefinitionError.hxx>
 #include <Graphic3d_ShaderProgram.hxx>
+#include <Font_FontAspect.hxx>
+#include <Font_NameOfFont.hxx>
 #include <MMgt_TShared.hxx>
-#include <Standard_CString.hxx>
-class Graphic3d_AspectTextDefinitionError;
-class Quantity_Color;
-
-
-class Graphic3d_AspectText3d;
-DEFINE_STANDARD_HANDLE(Graphic3d_AspectText3d, MMgt_TShared)
+#include <Standard.hxx>
+#include <Standard_Boolean.hxx>
+#include <Standard_Real.hxx>
+#include <Standard_Type.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <Quantity_ColorRGBA.hxx>
 
 //! Creates and updates a group of attributes for
-//! text primitives. This group contains the colour,
+//! text primitives. This group contains the color,
 //! font, expansion factor (height/width ratio), and
 //! inter-character space.
 //!
@@ -46,52 +40,91 @@ DEFINE_STANDARD_HANDLE(Graphic3d_AspectText3d, MMgt_TShared)
 //! without copying the string. However, the aspect should not
 //! be deleted until the text drawn using this aspect is no longer
 //! visible. The best practice is to keep the aspect in the object's drawer.
-class Graphic3d_AspectText3d : public MMgt_TShared
+class Graphic3d_AspectText3d : public Standard_Transient
 {
-
+  DEFINE_STANDARD_RTTIEXT(Graphic3d_AspectText3d, Standard_Transient)
 public:
 
-  
   //! Creates a context table for text primitives
   //! defined with the following default values:
   //!
-  //! Colour                    : NOC_YELLOW
+  //! Color                     : NOC_YELLOW
   //! Font                      : NOF_ASCII_MONO
   //! Expansion factor          : 1.
   //! Space between characters  : 0.
   //! The style                 : TOST_NORMAL
   //! The display type          : TODT_NORMAL
   Standard_EXPORT Graphic3d_AspectText3d();
-  
+
   //! Creates a context table for text primitives
   //! defined with the specified values.
   //! AFont may be to take means from User(example "Courier New")
   //! or Font name defined in Font_NameOfFont(example Font_NOF_ASCII_MONO)
   //! or use default font("Courier")
-  Standard_EXPORT Graphic3d_AspectText3d(const Quantity_Color& AColor, const Standard_CString AFont, const Standard_Real AExpansionFactor, const Standard_Real ASpace, const Aspect_TypeOfStyleText AStyle = Aspect_TOST_NORMAL, const Aspect_TypeOfDisplayText ADisplayType = Aspect_TODT_NORMAL);
-  
-  //! Modifies the colour of <me>.
-  Standard_EXPORT void SetColor (const Quantity_Color& AColor);
-  
+  Standard_EXPORT Graphic3d_AspectText3d (const Quantity_Color&  theColor,
+                                          const Standard_CString theFont,
+                                          const Standard_Real    theExpansionFactor,
+                                          const Standard_Real    theSpace,
+                                          const Aspect_TypeOfStyleText   theStyle = Aspect_TOST_NORMAL,
+                                          const Aspect_TypeOfDisplayText theDisplayType = Aspect_TODT_NORMAL);
+
+  //! Return the text color.
+  const Quantity_Color& Color() const { return myColor.GetRGB(); }
+
+  //! Return the text color.
+  const Quantity_ColorRGBA& ColorRGBA() const { return myColor; }
+
+  //! Modifies the color.
+  void SetColor (const Quantity_Color& theColor) { myColor.SetRGB (theColor); }
+
   //! Modifies the expansion factor (height/width ratio)
   //! If the factor is less than 1, the characters will
   //! be higher than they are wide.
-  Standard_EXPORT void SetExpansionFactor (const Standard_Real AFactor);
-  
-  //! Modifies the font of <me>.
-  Standard_EXPORT void SetFont (const Standard_CString AFont);
-  
+  void SetExpansionFactor (const Standard_Real theFactor)
+  {
+    if (theFactor <= 0.0)
+    {
+      Graphic3d_AspectTextDefinitionError::Raise ("Bad value for TextScaleFactor");
+    }
+    myFactor = theFactor;
+  }
+
+  //! Return the font.
+  const TCollection_AsciiString& Font() const { return myFont; }
+
+  //! Modifies the font.
+  void SetFont (const TCollection_AsciiString& theFont)
+  {
+    myFont = !theFont.IsEmpty() ? theFont : TCollection_AsciiString (Font_NOF_ASCII_MONO);
+  }
+
+  //! Modifies the font.
+  void SetFont (const Standard_CString theFont)
+  {
+    SetFont (TCollection_AsciiString (theFont));
+  }
+
+  //! Return the space between characters.
+  Standard_Real Space() const { return mySpace; }
+
   //! Modifies the space between the characters.
-  Standard_EXPORT void SetSpace (const Standard_Real ASpace);
-  
+  void SetSpace (const Standard_Real theSpace) { mySpace = theSpace; }
+
+  //! Return the text style.
+  Aspect_TypeOfStyleText Style() const { return myStyle; }
+
   //! Modifies the style of the text.
-  //! TOST_NORMAL     Default text. The text is displayed like any other graphic object.
-  //! This text can be hidden by another object that is nearest from the
-  //! point of view.
-  //! TOST_ANNOTATION The text is always visible. The texte is displayed
-  //! over the other object according to the priority.
-  Standard_EXPORT void SetStyle (const Aspect_TypeOfStyleText AStyle);
-  
+  //! * TOST_NORMAL
+  //!   Default text. The text is displayed like any other graphic object.
+  //!   This text can be hidden by another object that is nearest from the point of view.
+  //! * TOST_ANNOTATION
+  //!   The text is always visible.
+  //!   The text is displayed over the other object according to the priority.
+  void SetStyle (const Aspect_TypeOfStyleText theStyle) { myStyle = theStyle; }
+
+  //! Return display type.
+  Aspect_TypeOfDisplayText DisplayType() const { return myDisplayType; }
+
   //! Define the display type of the text.
   //!
   //! TODT_NORMAL     Default display. Text only.
@@ -99,79 +132,142 @@ public:
   //! TODT_DEKALE     The text is displayed with a 3D style.
   //! TODT_BLEND      The text is displayed in XOR.
   //! TODT_DIMENSION  Dimension line under text will be invisible.
-  Standard_EXPORT void SetDisplayType (const Aspect_TypeOfDisplayText ADisplayType);
-  
-  //! Modifies the colour of the subtitle for the TODT_SUBTITLE TextDisplayType
-  //! and the colour of backgroubd for the TODT_DEKALE TextDisplayType.
-  Standard_EXPORT void SetColorSubTitle (const Quantity_Color& AColor);
-  
-  //! Turns usage of text zoomable on/off
-  Standard_EXPORT void SetTextZoomable (const Standard_Boolean AFlag);
-  
-  //! Returns TRUE when the Text Zoomable is on.
-  Standard_EXPORT Standard_Boolean GetTextZoomable() const;
-  
-  //! Turns usage of text rotated
-  Standard_EXPORT void SetTextAngle (const Standard_Real AAngle);
-  
-  //! Returns Angle of degree
-  Standard_EXPORT Standard_Real GetTextAngle() const;
-  
-  //! Turns usage of Aspect text
-  Standard_EXPORT void SetTextFontAspect (const Font_FontAspect AFontAspect);
-  
-  //! Returns text FontAspect
-  Standard_EXPORT Font_FontAspect GetTextFontAspect() const;
-  
-  //! Sets up OpenGL/GLSL shader program.
-  Standard_EXPORT void SetShaderProgram (const Handle(Graphic3d_ShaderProgram)& theProgram);
-  
-  //! Returns the current values of the group <me>.
-  Standard_EXPORT void Values (Quantity_Color& AColor, Standard_CString& AFont, Standard_Real& AnExpansionFactor, Standard_Real& ASpace) const;
-  
-  //! Returns the current values of the group <me>.
-  Standard_EXPORT void Values (Quantity_Color& AColor, Standard_CString& AFont, Standard_Real& AnExpansionFactor, Standard_Real& ASpace, Aspect_TypeOfStyleText& AStyle, Aspect_TypeOfDisplayText& ADisplayType, Quantity_Color& AColorSubTitle) const;
-  
-  //! Returns the current values of the group <me>.
-  Standard_EXPORT void Values (Quantity_Color& AColor, Standard_CString& AFont, Standard_Real& AnExpansionFactor, Standard_Real& ASpace, Aspect_TypeOfStyleText& AStyle, Aspect_TypeOfDisplayText& ADisplayType, Quantity_Color& AColorSubTitle, Standard_Boolean& ATextZoomable, Standard_Real& ATextAngle) const;
-  
-  //! Returns the current values of the group <me>.
-  Standard_EXPORT void Values (Quantity_Color& AColor, Standard_CString& AFont, Standard_Real& AnExpansionFactor, Standard_Real& ASpace, Aspect_TypeOfStyleText& AStyle, Aspect_TypeOfDisplayText& ADisplayType, Quantity_Color& AColorSubTitle, Standard_Boolean& ATextZoomable, Standard_Real& ATextAngle, Font_FontAspect& ATextFontAspect) const;
-  
-  Standard_EXPORT const Handle(Graphic3d_ShaderProgram)& ShaderProgram() const;
+  void SetDisplayType (const Aspect_TypeOfDisplayText theDisplayType) { myDisplayType = theDisplayType; }
 
+  //! Return subtitle color.
+  const Quantity_ColorRGBA& ColorSubTitleRGBA() const { return myColorSubTitle; }
 
+  //! Return subtitle color.
+  const Quantity_Color& ColorSubTitle() const { return myColorSubTitle.GetRGB(); }
 
+  //! Modifies the color of the subtitle for the TODT_SUBTITLE TextDisplayType
+  //! and the color of background for the TODT_DEKALE TextDisplayType.
+  void SetColorSubTitle (const Quantity_Color& theColor) { myColorSubTitle.SetRGB (theColor); }
 
-  DEFINE_STANDARD_RTTIEXT(Graphic3d_AspectText3d,MMgt_TShared)
+  //! Returns TRUE when the Text Zoomable is on.
+  bool GetTextZoomable() const { return myTextZoomable; }
 
-protected:
+  //! Turns usage of text zoomable on/off
+  void SetTextZoomable (const bool theFlag) { myTextZoomable = theFlag; }
 
+  //! Returns Angle of degree
+  Standard_Real GetTextAngle() const { return myTextAngle; }
 
+  //! Turns usage of text rotated
+  void SetTextAngle (const Standard_Real theAngle) { myTextAngle = theAngle; }
 
+  //! Returns text FontAspect
+  Font_FontAspect GetTextFontAspect() const { return myTextFontAspect; }
 
-private:
+  //! Turns usage of Aspect text
+  void SetTextFontAspect (const Font_FontAspect theFontAspect) { myTextFontAspect = theFontAspect; }
 
+  //! Return the shader program.
+  const Handle(Graphic3d_ShaderProgram)& ShaderProgram() const { return myProgram; }
 
-  TCollection_AsciiString MyFont;
-  Quantity_Color MyColor;
-  Standard_Real MyFactor;
-  Standard_Real MySpace;
-  Aspect_TypeOfStyleText MyStyle;
-  Aspect_TypeOfDisplayText MyDisplayType;
-  Quantity_Color MyColorSubTitle;
-  Standard_Boolean MyTextZoomable;
-  Standard_Real MyTextAngle;
-  Font_FontAspect MyTextFontAspect;
-  Handle(Graphic3d_ShaderProgram) MyShaderProgram;
+  //! Sets up OpenGL/GLSL shader program.
+  void SetShaderProgram (const Handle(Graphic3d_ShaderProgram)& theProgram) { myProgram = theProgram; }
 
+public:
 
-};
+  //! Returns the current values of the group.
+  Standard_DEPRECATED("Deprecated method Values() should be replaced by individual property getters")
+  void Values (Quantity_Color&   theColor,
+               Standard_CString& theFont,
+               Standard_Real&    theExpansionFactor,
+               Standard_Real&    theSpace) const
+  {
+    theColor           = myColor.GetRGB();
+    theFont            = myFont.ToCString();
+    theExpansionFactor = myFactor;
+    theSpace           = mySpace;
+  }
+
+  //! Returns the current values of the group.
+  Standard_DEPRECATED("Deprecated method Values() should be replaced by individual property getters")
+  void Values (Quantity_Color&   theColor,
+               Standard_CString& theFont,
+               Standard_Real&    theExpansionFactor,
+               Standard_Real&    theSpace,
+               Aspect_TypeOfStyleText&   theStyle,
+               Aspect_TypeOfDisplayText& theDisplayType,
+               Quantity_Color&           theColorSubTitle) const
+  {
+    theColor          = myColor.GetRGB();
+    theFont           = myFont.ToCString();
+    theExpansionFactor= myFactor;
+    theSpace          = mySpace;
+    theStyle          = myStyle;
+    theDisplayType    = myDisplayType;
+    theColorSubTitle  = myColorSubTitle.GetRGB();
+  }
+
+  //! Returns the current values of the group.
+  Standard_DEPRECATED("Deprecated method Values() should be replaced by individual property getters")
+  void Values (Quantity_Color&   theColor,
+               Standard_CString& theFont,
+               Standard_Real&    theExpansionFactor,
+               Standard_Real&    theSpace,
+               Aspect_TypeOfStyleText&   theStyle,
+               Aspect_TypeOfDisplayText& theDisplayType,
+               Quantity_Color&   theColorSubTitle,
+               Standard_Boolean& theTextZoomable,
+               Standard_Real&    theTextAngle) const
+  {
+    theColor          = myColor.GetRGB();
+    theFont           = myFont.ToCString();
+    theExpansionFactor= myFactor;
+    theSpace          = mySpace;
+    theStyle          = myStyle;
+    theDisplayType    = myDisplayType;
+    theColorSubTitle  = myColorSubTitle.GetRGB();
 
+    theTextZoomable   = myTextZoomable;
+    theTextAngle      = myTextAngle;
+  }
 
+  //! Returns the current values of the group.
+  Standard_DEPRECATED("Deprecated method Values() should be replaced by individual property getters")
+  void Values (Quantity_Color&   theColor,
+               Standard_CString& theFont,
+               Standard_Real&    theExpansionFactor,
+               Standard_Real&    theSpace,
+               Aspect_TypeOfStyleText&   theStyle,
+               Aspect_TypeOfDisplayText& theDisplayType,
+               Quantity_Color&   theColorSubTitle,
+               Standard_Boolean& theTextZoomable,
+               Standard_Real&    theTextAngle,
+               Font_FontAspect&  theTextFontAspect) const
+  {
+    theColor          = myColor.GetRGB();
+    theFont           = myFont.ToCString();
+    theExpansionFactor= myFactor;
+    theSpace          = mySpace;
+    theStyle          = myStyle;
+    theDisplayType    = myDisplayType;
+    theColorSubTitle  = myColorSubTitle.GetRGB();
 
+    theTextZoomable   = myTextZoomable;
+    theTextAngle      = myTextAngle;
+    theTextFontAspect = myTextFontAspect;
+  }
 
+protected:
+
+  TCollection_AsciiString  myFont;
+  Quantity_ColorRGBA       myColor;
+  Standard_Real            myFactor;
+  Standard_Real            mySpace;
+  Aspect_TypeOfStyleText   myStyle;
+  Aspect_TypeOfDisplayText myDisplayType;
+  Quantity_ColorRGBA       myColorSubTitle;
+  bool                     myTextZoomable;
+  Standard_Real            myTextAngle;
+  Font_FontAspect          myTextFontAspect;
+  Handle(Graphic3d_ShaderProgram) myProgram;
 
+};
 
+DEFINE_STANDARD_HANDLE(Graphic3d_AspectText3d, Standard_Transient)
 
 #endif // _Graphic3d_AspectText3d_HeaderFile