// Copyright (c) 1993-1999 Matra Datavision // Copyright (c) 1999-2014 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License version 2.1 as published // by the Free Software Foundation, with special exception defined in the file // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT // distribution for complete text of the license and disclaimer of any warranty. // // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. #ifndef _Prs3d_DimensionAspect_HeaderFile #define _Prs3d_DimensionAspect_HeaderFile #include #include #include #include #include #include #include //! defines the attributes when drawing a Length Presentation. class Prs3d_DimensionAspect : public Prs3d_BasicAspect { DEFINE_STANDARD_RTTIEXT(Prs3d_DimensionAspect, Prs3d_BasicAspect) public: //! Constructs an empty framework to define the display of dimensions. Standard_EXPORT Prs3d_DimensionAspect(); //! Returns the settings for the display of lines used in presentation of dimensions. const Handle(Prs3d_LineAspect)& LineAspect() const { return myLineAspect; } //! Sets the display attributes of lines used in presentation of dimensions. void SetLineAspect (const Handle(Prs3d_LineAspect)& theAspect) { myLineAspect = theAspect; } //! Returns the settings for the display of text used in presentation of dimensions. const Handle(Prs3d_TextAspect)& TextAspect() const { return myTextAspect; } //! Sets the display attributes of text used in presentation of dimensions. void SetTextAspect (const Handle(Prs3d_TextAspect)& theAspect) { myTextAspect = theAspect; } //! Check if text for dimension label is 3d. Standard_Boolean IsText3d() const { return myIsText3d; } //! Sets type of text. void MakeText3d (const Standard_Boolean isText3d) { myIsText3d = isText3d; } //! Check if 3d text for dimension label is shaded. Standard_Boolean IsTextShaded() const { return myIsTextShaded; } //! Turns on/off text shading for 3d text. void MakeTextShaded (const Standard_Boolean theIsTextShaded) { myIsTextShaded = theIsTextShaded; } //! Gets type of arrows. Standard_Boolean IsArrows3d() const { return myIsArrows3d; } //! Sets type of arrows. void MakeArrows3d (const Standard_Boolean theIsArrows3d) { myIsArrows3d = theIsArrows3d; } //! Shows if Units are to be displayed along with dimension value. Standard_Boolean IsUnitsDisplayed() const { return myToDisplayUnits; } //! Specifies whether the units string should be displayed //! along with value label or not. void MakeUnitsDisplayed (const Standard_Boolean theIsDisplayed) { myToDisplayUnits = theIsDisplayed; } //! Sets orientation of arrows (external or internal). //! By default orientation is chosen automatically according to situation and text label size. void SetArrowOrientation (const Prs3d_DimensionArrowOrientation theArrowOrient) { myArrowOrientation = theArrowOrient; } //! Gets orientation of arrows (external or internal). Prs3d_DimensionArrowOrientation ArrowOrientation() const { return myArrowOrientation; } //! Sets vertical text alignment for text label. void SetTextVerticalPosition (const Prs3d_DimensionTextVerticalPosition thePosition) { myTextVPosition = thePosition; } //! Gets vertical text alignment for text label. Prs3d_DimensionTextVerticalPosition TextVerticalPosition() const { return myTextVPosition; } //! Sets horizontal text alignment for text label. void SetTextHorizontalPosition (const Prs3d_DimensionTextHorizontalPosition thePosition) { myTextHPosition = thePosition; } //! Gets horizontal text alignment for text label. Prs3d_DimensionTextHorizontalPosition TextHorizontalPosition() const { return myTextHPosition; } //! Returns the settings for displaying arrows. const Handle(Prs3d_ArrowAspect)& ArrowAspect() const { return myArrowAspect; } //! Sets the display attributes of arrows used in presentation of dimensions. void SetArrowAspect (const Handle(Prs3d_ArrowAspect)& theAspect) { myArrowAspect = theAspect; } //! Sets the same color for all parts of dimension: lines, arrows and text. Standard_EXPORT void SetCommonColor (const Quantity_Color& theColor); //! Sets extension size. void SetExtensionSize (const Standard_Real theSize) { myExtensionSize = theSize; } //! Returns extension size. Standard_Real ExtensionSize() const { return myExtensionSize; } //! Set size for arrow tail (extension without text). void SetArrowTailSize (const Standard_Real theSize) { myArrowTailSize = theSize; } //! Returns arrow tail size. Standard_Real ArrowTailSize() const { return myArrowTailSize; } //! Sets "sprintf"-syntax format for formatting dimension value labels. void SetValueStringFormat (const TCollection_AsciiString& theFormat) { myValueStringFormat = theFormat; } //! Returns format. const TCollection_AsciiString& ValueStringFormat() const { return myValueStringFormat; } //! Dumps the content of me into the stream Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const Standard_OVERRIDE; protected: Handle(Prs3d_LineAspect) myLineAspect; Handle(Prs3d_TextAspect) myTextAspect; Handle(Prs3d_ArrowAspect) myArrowAspect; TCollection_AsciiString myValueStringFormat; Standard_Real myExtensionSize; Standard_Real myArrowTailSize; Prs3d_DimensionArrowOrientation myArrowOrientation; Prs3d_DimensionTextHorizontalPosition myTextHPosition; Prs3d_DimensionTextVerticalPosition myTextVPosition; Standard_Boolean myToDisplayUnits; Standard_Boolean myIsText3d; Standard_Boolean myIsTextShaded; Standard_Boolean myIsArrows3d; }; DEFINE_STANDARD_HANDLE(Prs3d_DimensionAspect, Prs3d_BasicAspect) #endif // _Prs3d_DimensionAspect_HeaderFile