Compare commits
24 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
df3644aa35 | ||
|
0252a0a4fb | ||
|
b4baade508 | ||
|
460abf4e0f | ||
|
a9db047e5d | ||
|
9640291ff0 | ||
|
7b296f0230 | ||
|
bf82385599 | ||
|
41a2c46b21 | ||
|
fd448091bf | ||
|
280e1f1b27 | ||
|
fd8fbd466b | ||
|
cdfdde3191 | ||
|
2147f85a35 | ||
|
502194e4fc | ||
|
d5c557436d | ||
|
52cc62eee8 | ||
|
7d4472c752 | ||
|
3ca159f3ca | ||
|
f25bebd7b3 | ||
|
68be9e7b9c | ||
|
7bc6dba60c | ||
|
37d575793d | ||
|
9f13057096 |
@@ -1,4 +1,4 @@
|
|||||||
TModelingData TKShapeView
|
TModelingData TKShapeView TKMessageModel TKMessageView
|
||||||
TVisualization TKView TKVInspector
|
TVisualization TKView TKVInspector
|
||||||
TApplicationFramework TKTreeModel TKTInspectorAPI TKDFBrowser
|
TApplicationFramework TKTreeModel TKTInspectorAPI TKDFBrowser
|
||||||
TTool TKTInspector TKToolsDraw TInspectorEXE
|
TTool TKTInspector TKToolsDraw TInspectorEXE
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 11 KiB |
BIN
data/images/hatch_1_.png
Normal file
After Width: | Height: | Size: 670 B |
BIN
data/images/hatch_2.png
Normal file
After Width: | Height: | Size: 679 B |
BIN
data/images/hatch_3.png
Normal file
After Width: | Height: | Size: 761 B |
BIN
data/images/hatch_4.png
Normal file
After Width: | Height: | Size: 674 B |
BIN
data/images/hatch_5.png
Normal file
After Width: | Height: | Size: 887 B |
BIN
data/images/hatch_6.png
Normal file
After Width: | Height: | Size: 933 B |
BIN
data/images/hatch_7.png
Normal file
After Width: | Height: | Size: 633 B |
BIN
data/images/hatch_8.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
108
src/AIS/AIS.cxx
@@ -82,6 +82,24 @@
|
|||||||
|
|
||||||
const Standard_Real SquareTolerance = Precision::SquareConfusion();
|
const Standard_Real SquareTolerance = Precision::SquareConfusion();
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
static Standard_CString AIS_Table_PrintDisplayMode[2] =
|
||||||
|
{
|
||||||
|
"WIREFRAME", "SHADING"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString AIS_Table_PrintDisplayStatus[3] =
|
||||||
|
{
|
||||||
|
"DISPLAYED", "ERASED", "NONE"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString AIS_Table_PrintKindOfInteractive[6] =
|
||||||
|
{
|
||||||
|
"NONE", "DATUM", "SHAPE", "OBJECT", "RELATION", "DIMENSION"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : Nearest
|
//function : Nearest
|
||||||
//purpose :
|
//purpose :
|
||||||
@@ -1533,3 +1551,93 @@ void AIS::ComputeProjVertexPresentation (const Handle( Prs3d_Presentation )& aPr
|
|||||||
StdPrs_WFShape::Add (aPresentation, MakEd.Edge(), aDrawer);
|
StdPrs_WFShape::Add (aPresentation, MakEd.Edge(), aDrawer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : DisplayModeToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString AIS::DisplayModeToString (AIS_DisplayMode theType)
|
||||||
|
{
|
||||||
|
return AIS_Table_PrintDisplayMode[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : DisplayModeFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean AIS::DisplayModeFromString (Standard_CString theTypeString,
|
||||||
|
AIS_DisplayMode& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = 0; aTypeIter <= AIS_Shaded; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = AIS_Table_PrintDisplayMode[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = AIS_DisplayMode (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : DisplayStatusToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString AIS::DisplayStatusToString (AIS_DisplayStatus theType)
|
||||||
|
{
|
||||||
|
return AIS_Table_PrintDisplayStatus[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : DisplayStatusFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean AIS::DisplayStatusFromString (Standard_CString theTypeString,
|
||||||
|
AIS_DisplayStatus& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = 0; aTypeIter <= AIS_DS_None; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = AIS_Table_PrintDisplayStatus[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = AIS_DisplayStatus (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : KindOfInteractiveToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString AIS::KindOfInteractiveToString (AIS_KindOfInteractive theType)
|
||||||
|
{
|
||||||
|
return AIS_Table_PrintKindOfInteractive[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : KindOfInteractiveFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean AIS::KindOfInteractiveFromString (Standard_CString theTypeString,
|
||||||
|
AIS_KindOfInteractive& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = 0; aTypeIter <= AIS_KOI_Dimension; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = AIS_Table_PrintKindOfInteractive[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = AIS_KindOfInteractive (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
@@ -17,6 +17,9 @@
|
|||||||
#ifndef _AIS_HeaderFile
|
#ifndef _AIS_HeaderFile
|
||||||
#define _AIS_HeaderFile
|
#define _AIS_HeaderFile
|
||||||
|
|
||||||
|
#include <AIS_DisplayStatus.hxx>
|
||||||
|
#include <AIS_DisplayMode.hxx>
|
||||||
|
#include <AIS_KindOfInteractive.hxx>
|
||||||
#include <AIS_KindOfSurface.hxx>
|
#include <AIS_KindOfSurface.hxx>
|
||||||
#include <Aspect_TypeOfLine.hxx>
|
#include <Aspect_TypeOfLine.hxx>
|
||||||
#include <Aspect_TypeOfMarker.hxx>
|
#include <Aspect_TypeOfMarker.hxx>
|
||||||
@@ -203,6 +206,72 @@ public:
|
|||||||
|
|
||||||
Standard_EXPORT static void ComputeProjVertexPresentation (const Handle(Prs3d_Presentation)& aPres, const Handle(Prs3d_Drawer)& aDrawer, const TopoDS_Vertex& aVertex, const gp_Pnt& ProjPoint, const Quantity_NameOfColor aColor = Quantity_NOC_PURPLE, const Standard_Real aWidth = 2, const Aspect_TypeOfMarker aProjTOM = Aspect_TOM_PLUS, const Aspect_TypeOfLine aCallTOL = Aspect_TOL_DOT);
|
Standard_EXPORT static void ComputeProjVertexPresentation (const Handle(Prs3d_Presentation)& aPres, const Handle(Prs3d_Drawer)& aDrawer, const TopoDS_Vertex& aVertex, const gp_Pnt& ProjPoint, const Quantity_NameOfColor aColor = Quantity_NOC_PURPLE, const Standard_Real aWidth = 2, const Aspect_TypeOfMarker aProjTOM = Aspect_TOM_PLUS, const Aspect_TypeOfLine aCallTOL = Aspect_TOL_DOT);
|
||||||
|
|
||||||
|
//! Returns the string name for a given enum type.
|
||||||
|
//! @param theType display mode
|
||||||
|
//! @return string identifier
|
||||||
|
Standard_EXPORT static Standard_CString DisplayModeToString (AIS_DisplayMode theType);
|
||||||
|
|
||||||
|
//! Returns the display mode from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return status type or AIS_WireFrame if string identifier is invalid
|
||||||
|
static AIS_DisplayMode DisplayModeFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
AIS_DisplayMode aType = AIS_WireFrame;
|
||||||
|
DisplayModeFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the display mode from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected display status
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean DisplayModeFromString (const Standard_CString theTypeString,
|
||||||
|
AIS_DisplayMode& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given enum type.
|
||||||
|
//! @param theType display status
|
||||||
|
//! @return string identifier
|
||||||
|
Standard_EXPORT static Standard_CString DisplayStatusToString (AIS_DisplayStatus theType);
|
||||||
|
|
||||||
|
//! Returns the display status from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return status type or AIS_DS_None if string identifier is invalid
|
||||||
|
static AIS_DisplayStatus DisplayStatusFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
AIS_DisplayStatus aType = AIS_DS_None;
|
||||||
|
DisplayStatusFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the shape type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected display status
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean DisplayStatusFromString (const Standard_CString theTypeString,
|
||||||
|
AIS_DisplayStatus& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given enum type.
|
||||||
|
//! @param theType display status
|
||||||
|
//! @return string identifier
|
||||||
|
Standard_EXPORT static Standard_CString KindOfInteractiveToString (AIS_KindOfInteractive theType);
|
||||||
|
|
||||||
|
//! Returns the display status from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return status type or AIS_KOI_None if string identifier is invalid
|
||||||
|
static AIS_KindOfInteractive KindOfInteractiveFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
AIS_KindOfInteractive aType = AIS_KOI_None;
|
||||||
|
KindOfInteractiveFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the shape type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected display status
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean KindOfInteractiveFromString (const Standard_CString theTypeString,
|
||||||
|
AIS_KindOfInteractive& theType);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _AIS_HeaderFile
|
#endif // _AIS_HeaderFile
|
||||||
|
@@ -633,6 +633,11 @@ void AIS_ColoredShape::addShapesWithCustomProps (const Handle(Prs3d_Presentation
|
|||||||
{
|
{
|
||||||
aShadedGroup = thePrs->NewGroup();
|
aShadedGroup = thePrs->NewGroup();
|
||||||
aShadedGroup->SetClosed (isClosed);
|
aShadedGroup->SetClosed (isClosed);
|
||||||
|
if (isClosed)
|
||||||
|
{
|
||||||
|
if (aDrawer->HasOwnFillCappingAspect())
|
||||||
|
aShadedGroup->SetGroupPrimitivesAspect (aDrawer->FillCappingAspect());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
aShadedGroup->SetPrimitivesAspect (aDrawer->ShadingAspect()->Aspect());
|
aShadedGroup->SetPrimitivesAspect (aDrawer->ShadingAspect()->Aspect());
|
||||||
aShadedGroup->AddPrimitiveArray (aTriangles);
|
aShadedGroup->AddPrimitiveArray (aTriangles);
|
||||||
|
@@ -1968,7 +1968,7 @@ void AIS_InteractiveContext::EraseGlobal (const Handle(AIS_InteractiveObject)& t
|
|||||||
}
|
}
|
||||||
|
|
||||||
const Standard_Integer aDispMode = theIObj->HasHilightMode() ? theIObj->HilightMode() : 0;
|
const Standard_Integer aDispMode = theIObj->HasHilightMode() ? theIObj->HilightMode() : 0;
|
||||||
unhighlightOwners (theIObj);
|
unselectOwners (theIObj);
|
||||||
myMainPM->SetVisibility (theIObj, aStatus->DisplayMode(), Standard_False);
|
myMainPM->SetVisibility (theIObj, aStatus->DisplayMode(), Standard_False);
|
||||||
|
|
||||||
if (!myLastPicked.IsNull()
|
if (!myLastPicked.IsNull()
|
||||||
@@ -2000,10 +2000,10 @@ void AIS_InteractiveContext::EraseGlobal (const Handle(AIS_InteractiveObject)& t
|
|||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : unhighlightOwners
|
//function : unselectOwners
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void AIS_InteractiveContext::unhighlightOwners (const Handle(AIS_InteractiveObject)& theObject)
|
void AIS_InteractiveContext::unselectOwners (const Handle(AIS_InteractiveObject)& theObject)
|
||||||
{
|
{
|
||||||
SelectMgr_SequenceOfOwner aSeq;
|
SelectMgr_SequenceOfOwner aSeq;
|
||||||
for (AIS_NListOfEntityOwner::Iterator aSelIter (mySelection->Objects()); aSelIter.More(); aSelIter.Next())
|
for (AIS_NListOfEntityOwner::Iterator aSelIter (mySelection->Objects()); aSelIter.More(); aSelIter.Next())
|
||||||
@@ -2037,7 +2037,7 @@ void AIS_InteractiveContext::ClearGlobal (const Handle(AIS_InteractiveObject)& t
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
unhighlightOwners (theIObj);
|
unselectOwners (theIObj);
|
||||||
|
|
||||||
myMainPM->Erase (theIObj, -1);
|
myMainPM->Erase (theIObj, -1);
|
||||||
theIObj->ErasePresentations (true); // make sure highlighting presentations are properly erased
|
theIObj->ErasePresentations (true); // make sure highlighting presentations are properly erased
|
||||||
@@ -2538,6 +2538,15 @@ void AIS_InteractiveContext::SetTransformPersistence (const Handle(AIS_Interacti
|
|||||||
const Handle(Graphic3d_TransformPers)& theTrsfPers)
|
const Handle(Graphic3d_TransformPers)& theTrsfPers)
|
||||||
{
|
{
|
||||||
theObject->SetTransformPersistence (theTrsfPers);
|
theObject->SetTransformPersistence (theTrsfPers);
|
||||||
|
UpdateOnTransformPersistence (theObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : UpdateOnTransformPersistence
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void AIS_InteractiveContext::UpdateOnTransformPersistence (const Handle(AIS_InteractiveObject)& theObject)
|
||||||
|
{
|
||||||
if (!myObjects.IsBound (theObject))
|
if (!myObjects.IsBound (theObject))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
#include <AIS_ListOfInteractive.hxx>
|
#include <AIS_ListOfInteractive.hxx>
|
||||||
#include <AIS_Selection.hxx>
|
#include <AIS_Selection.hxx>
|
||||||
#include <AIS_SelectionModesConcurrency.hxx>
|
#include <AIS_SelectionModesConcurrency.hxx>
|
||||||
|
#include <AIS_SelectionScheme.hxx>
|
||||||
#include <AIS_StatusOfDetection.hxx>
|
#include <AIS_StatusOfDetection.hxx>
|
||||||
#include <AIS_StatusOfPick.hxx>
|
#include <AIS_StatusOfPick.hxx>
|
||||||
#include <AIS_TypeOfIso.hxx>
|
#include <AIS_TypeOfIso.hxx>
|
||||||
@@ -344,6 +345,11 @@ public: //! @name object local transformation management
|
|||||||
Standard_EXPORT void SetTransformPersistence (const Handle(AIS_InteractiveObject)& theObject,
|
Standard_EXPORT void SetTransformPersistence (const Handle(AIS_InteractiveObject)& theObject,
|
||||||
const Handle(Graphic3d_TransformPers)& theTrsfPers);
|
const Handle(Graphic3d_TransformPers)& theTrsfPers);
|
||||||
|
|
||||||
|
//! Updates displayed interactive object by checking and recomputing its flagged as "to be recomputed" presentation and selection structures.
|
||||||
|
//! This method does not force any recomputation on its own.
|
||||||
|
//! The method recomputes selections even if they are loaded without activation in particular selector.
|
||||||
|
Standard_EXPORT void UpdateOnTransformPersistence (const Handle(AIS_InteractiveObject)& theIObj);
|
||||||
|
|
||||||
Standard_DEPRECATED("This method is deprecated - SetTransformPersistence() taking Graphic3d_TransformPers should be called instead")
|
Standard_DEPRECATED("This method is deprecated - SetTransformPersistence() taking Graphic3d_TransformPers should be called instead")
|
||||||
void SetTransformPersistence (const Handle(AIS_InteractiveObject)& theObj,
|
void SetTransformPersistence (const Handle(AIS_InteractiveObject)& theObj,
|
||||||
const Graphic3d_TransModeFlags& theFlag,
|
const Graphic3d_TransModeFlags& theFlag,
|
||||||
@@ -470,6 +476,24 @@ public: //! @name Selection management
|
|||||||
return AddSelect (theObject->GlobalSelOwner());
|
return AddSelect (theObject->GlobalSelOwner());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Selects everything found in the bounding rectangle defined by the pixel minima and maxima, XPMin, YPMin, XPMax, and YPMax in the view.
|
||||||
|
//! The objects detected are passed to the main viewer, which is then updated.
|
||||||
|
Standard_EXPORT AIS_StatusOfPick Select (const Standard_Integer theXPMin,
|
||||||
|
const Standard_Integer theYPMin,
|
||||||
|
const Standard_Integer theXPMax,
|
||||||
|
const Standard_Integer theYPMax,
|
||||||
|
const Handle(V3d_View)& theView,
|
||||||
|
const AIS_SelectionScheme theSelScheme);
|
||||||
|
|
||||||
|
//! polyline selection; clears the previous picked list
|
||||||
|
Standard_EXPORT AIS_StatusOfPick Select (const TColgp_Array1OfPnt2d& thePolyline,
|
||||||
|
const Handle(V3d_View)& theView,
|
||||||
|
const AIS_SelectionScheme theSelScheme);
|
||||||
|
|
||||||
|
//! Stores and hilights the previous detected; Unhilights the previous picked.
|
||||||
|
//! @sa MoveTo().
|
||||||
|
Standard_EXPORT AIS_StatusOfPick Select (const AIS_SelectionScheme theSelScheme);
|
||||||
|
|
||||||
//! Selects everything found in the bounding rectangle defined by the pixel minima and maxima, XPMin, YPMin, XPMax, and YPMax in the view.
|
//! Selects everything found in the bounding rectangle defined by the pixel minima and maxima, XPMin, YPMin, XPMax, and YPMax in the view.
|
||||||
//! The objects detected are passed to the main viewer, which is then updated.
|
//! The objects detected are passed to the main viewer, which is then updated.
|
||||||
Standard_EXPORT AIS_StatusOfPick Select (const Standard_Integer theXPMin,
|
Standard_EXPORT AIS_StatusOfPick Select (const Standard_Integer theXPMin,
|
||||||
@@ -511,6 +535,13 @@ public: //! @name Selection management
|
|||||||
//! Returns bounding box of selected objects.
|
//! Returns bounding box of selected objects.
|
||||||
Standard_EXPORT Bnd_Box BoundingBoxOfSelection() const;
|
Standard_EXPORT Bnd_Box BoundingBoxOfSelection() const;
|
||||||
|
|
||||||
|
//! Sets list of owner selected/deselected using selection scheme
|
||||||
|
//! It is possible that selection of other objects is changed relatively selection scheme .
|
||||||
|
//! \param theOwner owners to change selection state
|
||||||
|
//! \param theSelScheme selection scheme
|
||||||
|
Standard_EXPORT AIS_StatusOfPick Select (const AIS_NListOfEntityOwner& theOwners,
|
||||||
|
const AIS_SelectionScheme theSelScheme);
|
||||||
|
|
||||||
//! Fits the view correspondingly to the bounds of selected objects.
|
//! Fits the view correspondingly to the bounds of selected objects.
|
||||||
//! Infinite objects are ignored if infinite state of AIS_InteractiveObject is set to true.
|
//! Infinite objects are ignored if infinite state of AIS_InteractiveObject is set to true.
|
||||||
Standard_EXPORT void FitSelected (const Handle(V3d_View)& theView,
|
Standard_EXPORT void FitSelected (const Handle(V3d_View)& theView,
|
||||||
@@ -1235,7 +1266,7 @@ protected: //! @name internal methods
|
|||||||
Standard_EXPORT Standard_Integer PurgeViewer (const Handle(V3d_Viewer)& Vwr);
|
Standard_EXPORT Standard_Integer PurgeViewer (const Handle(V3d_Viewer)& Vwr);
|
||||||
|
|
||||||
//! Helper function to unhighlight all entity owners currently highlighted with seleciton color.
|
//! Helper function to unhighlight all entity owners currently highlighted with seleciton color.
|
||||||
Standard_EXPORT void unhighlightOwners (const Handle(AIS_InteractiveObject)& theObject);
|
Standard_EXPORT void unselectOwners (const Handle(AIS_InteractiveObject)& theObject);
|
||||||
|
|
||||||
//! Helper function that highlights the owner given with <theStyle> without
|
//! Helper function that highlights the owner given with <theStyle> without
|
||||||
//! performing AutoHighlight checks, e.g. is used for dynamic highlight.
|
//! performing AutoHighlight checks, e.g. is used for dynamic highlight.
|
||||||
@@ -1246,12 +1277,17 @@ protected: //! @name internal methods
|
|||||||
//! for AutoHighlight, e.g. is used for selection.
|
//! for AutoHighlight, e.g. is used for selection.
|
||||||
Standard_EXPORT void highlightSelected (const Handle(SelectMgr_EntityOwner)& theOwner);
|
Standard_EXPORT void highlightSelected (const Handle(SelectMgr_EntityOwner)& theOwner);
|
||||||
|
|
||||||
|
//! Helper function that highlights the owners given with <theStyle> with check
|
||||||
|
//! for AutoHighlight, e.g. is used for selection.
|
||||||
|
Standard_EXPORT void highlightOwners (const AIS_NListOfEntityOwner& theOwners,
|
||||||
|
const Standard_Boolean& theToUseObjectDisplayMode);
|
||||||
|
|
||||||
//! Helper function that highlights global owner of the object given with <theStyle> with check
|
//! Helper function that highlights global owner of the object given with <theStyle> with check
|
||||||
//! for AutoHighlight, e.g. is used for selection.
|
//! for AutoHighlight, e.g. is used for selection.
|
||||||
//! If global owner is null, it simply highlights the whole object
|
//! If global owner is null, it simply highlights the whole object
|
||||||
Standard_EXPORT void highlightGlobal (const Handle(AIS_InteractiveObject)& theObj,
|
Standard_EXPORT void highlightGlobal (const Handle(AIS_InteractiveObject)& theObj,
|
||||||
const Handle(Prs3d_Drawer)& theStyle,
|
const Handle(Prs3d_Drawer)& theStyle,
|
||||||
const Standard_Integer theDispMode) const;
|
const Standard_Integer theDispMode);
|
||||||
|
|
||||||
//! Helper function that unhighlights all owners that are stored in current AIS_Selection.
|
//! Helper function that unhighlights all owners that are stored in current AIS_Selection.
|
||||||
//! The function updates global status and selection state of owner and interactive object.
|
//! The function updates global status and selection state of owner and interactive object.
|
||||||
@@ -1259,9 +1295,14 @@ protected: //! @name internal methods
|
|||||||
//! switched on in AIS_GlobalStatus will be highlighted with context's sub-intensity color.
|
//! switched on in AIS_GlobalStatus will be highlighted with context's sub-intensity color.
|
||||||
Standard_EXPORT void unhighlightSelected (const Standard_Boolean theIsToHilightSubIntensity = Standard_False);
|
Standard_EXPORT void unhighlightSelected (const Standard_Boolean theIsToHilightSubIntensity = Standard_False);
|
||||||
|
|
||||||
|
//! Helper function that highlights the owners given with <theStyle> with check
|
||||||
|
//! for AutoHighlight, e.g. is used for selection.
|
||||||
|
Standard_EXPORT void unhighlightOwners (const AIS_NListOfEntityOwner& theOwners,
|
||||||
|
const Standard_Boolean theIsToHilightSubIntensity = Standard_False);
|
||||||
|
|
||||||
//! Helper function that unhighlights global selection owner of given interactive.
|
//! Helper function that unhighlights global selection owner of given interactive.
|
||||||
//! The function does not perform any updates of global or owner status
|
//! The function does not perform any updates of global or owner status
|
||||||
Standard_EXPORT void unhighlightGlobal (const Handle(AIS_InteractiveObject)& theObj) const;
|
Standard_EXPORT void unhighlightGlobal (const Handle(AIS_InteractiveObject)& theObj);
|
||||||
|
|
||||||
//! Helper function that turns on sub-intensity in global status and highlights
|
//! Helper function that turns on sub-intensity in global status and highlights
|
||||||
//! given objects with sub-intensity color
|
//! given objects with sub-intensity color
|
||||||
|
@@ -85,6 +85,7 @@ void AIS_InteractiveContext::highlightWithColor (const Handle(SelectMgr_EntityOw
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
void AIS_InteractiveContext::highlightSelected (const Handle(SelectMgr_EntityOwner)& theOwner)
|
void AIS_InteractiveContext::highlightSelected (const Handle(SelectMgr_EntityOwner)& theOwner)
|
||||||
{
|
{
|
||||||
|
AIS_NListOfEntityOwner anOwners;
|
||||||
const Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (theOwner->Selectable());
|
const Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (theOwner->Selectable());
|
||||||
if (anObj.IsNull())
|
if (anObj.IsNull())
|
||||||
{
|
{
|
||||||
@@ -98,17 +99,15 @@ void AIS_InteractiveContext::highlightSelected (const Handle(SelectMgr_EntityOwn
|
|||||||
{
|
{
|
||||||
if (aSelIter.Value()->IsSameSelectable (anObj))
|
if (aSelIter.Value()->IsSameSelectable (anObj))
|
||||||
{
|
{
|
||||||
aSeq.Append (aSelIter.Value());
|
anOwners.Append (aSelIter.Value());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
anObj->HilightSelected (myMainPM, aSeq);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const Handle(Prs3d_Drawer)& aStyle = getSelStyle (anObj, theOwner);
|
anOwners.Append (theOwner);
|
||||||
const Standard_Integer aHiMode = getHilightMode (anObj, aStyle, -1);
|
|
||||||
theOwner->HilightWithColor (myMainPM, aStyle, aHiMode);
|
|
||||||
}
|
}
|
||||||
|
highlightOwners (anOwners, Standard_False/*check if it is really important*/);
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -117,14 +116,19 @@ void AIS_InteractiveContext::highlightSelected (const Handle(SelectMgr_EntityOwn
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
void AIS_InteractiveContext::highlightGlobal (const Handle(AIS_InteractiveObject)& theObj,
|
void AIS_InteractiveContext::highlightGlobal (const Handle(AIS_InteractiveObject)& theObj,
|
||||||
const Handle(Prs3d_Drawer)& theStyle,
|
const Handle(Prs3d_Drawer)& theStyle,
|
||||||
const Standard_Integer theDispMode) const
|
const Standard_Integer /*theDispMode*/)
|
||||||
{
|
{
|
||||||
if (theObj.IsNull())
|
if (theObj.IsNull())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Standard_Integer aHiMode = getHilightMode (theObj, theStyle, theDispMode);
|
Handle(AIS_GlobalStatus)* aStatusPtr = myObjects.ChangeSeek (theObj);
|
||||||
|
if (!aStatusPtr)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const Standard_Integer aHiMode = getHilightMode (theObj, theStyle, (*aStatusPtr)->DisplayMode());
|
||||||
const Handle(SelectMgr_EntityOwner)& aGlobOwner = theObj->GlobalSelOwner();
|
const Handle(SelectMgr_EntityOwner)& aGlobOwner = theObj->GlobalSelOwner();
|
||||||
|
|
||||||
if (aGlobOwner.IsNull())
|
if (aGlobOwner.IsNull())
|
||||||
@@ -133,6 +137,7 @@ void AIS_InteractiveContext::highlightGlobal (const Handle(AIS_InteractiveObject
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AIS_NListOfEntityOwner anOwners;
|
||||||
if (!aGlobOwner->IsAutoHilight())
|
if (!aGlobOwner->IsAutoHilight())
|
||||||
{
|
{
|
||||||
SelectMgr_SequenceOfOwner aSeq;
|
SelectMgr_SequenceOfOwner aSeq;
|
||||||
@@ -140,15 +145,15 @@ void AIS_InteractiveContext::highlightGlobal (const Handle(AIS_InteractiveObject
|
|||||||
{
|
{
|
||||||
if (aSelIter.Value()->IsSameSelectable (theObj))
|
if (aSelIter.Value()->IsSameSelectable (theObj))
|
||||||
{
|
{
|
||||||
aSeq.Append (aSelIter.Value());
|
anOwners.Append (aSelIter.Value());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
theObj->HilightSelected (myMainPM, aSeq);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
aGlobOwner->HilightWithColor (myMainPM, theStyle, aHiMode);
|
anOwners.Append (aGlobOwner);
|
||||||
}
|
}
|
||||||
|
highlightOwners (anOwners, Standard_True);
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -156,26 +161,32 @@ void AIS_InteractiveContext::highlightGlobal (const Handle(AIS_InteractiveObject
|
|||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void AIS_InteractiveContext::unhighlightSelected (const Standard_Boolean theIsToHilightSubIntensity)
|
void AIS_InteractiveContext::unhighlightSelected (const Standard_Boolean theIsToHilightSubIntensity)
|
||||||
|
{
|
||||||
|
unhighlightOwners (mySelection->Objects(), theIsToHilightSubIntensity);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : unhighlightOwners
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void AIS_InteractiveContext::unhighlightOwners (const AIS_NListOfEntityOwner& theOwners,
|
||||||
|
const Standard_Boolean theIsToHilightSubIntensity)
|
||||||
{
|
{
|
||||||
NCollection_IndexedMap<Handle(AIS_InteractiveObject)> anObjToClear;
|
NCollection_IndexedMap<Handle(AIS_InteractiveObject)> anObjToClear;
|
||||||
for (AIS_NListOfEntityOwner::Iterator aSelIter (mySelection->Objects()); aSelIter.More(); aSelIter.Next())
|
for (AIS_NListOfEntityOwner::Iterator aSelIter (theOwners); aSelIter.More(); aSelIter.Next())
|
||||||
{
|
{
|
||||||
const Handle(SelectMgr_EntityOwner) anOwner = aSelIter.Value();
|
const Handle(SelectMgr_EntityOwner) anOwner = aSelIter.Value();
|
||||||
const Handle(AIS_InteractiveObject) anInteractive = Handle(AIS_InteractiveObject)::DownCast (anOwner->Selectable());
|
const Handle(AIS_InteractiveObject) anInteractive = Handle(AIS_InteractiveObject)::DownCast (anOwner->Selectable());
|
||||||
Handle(AIS_GlobalStatus) aStatus;
|
Handle(AIS_GlobalStatus)* aStatusPtr = myObjects.ChangeSeek (anInteractive);
|
||||||
if (!myObjects.Find (anInteractive, aStatus))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (anOwner->IsAutoHilight())
|
if (anOwner->IsAutoHilight())
|
||||||
{
|
{
|
||||||
anOwner->Unhilight (myMainPM);
|
anOwner->Unhilight (myMainPM);
|
||||||
if (theIsToHilightSubIntensity)
|
if (theIsToHilightSubIntensity)
|
||||||
{
|
{
|
||||||
if (aStatus->IsSubIntensityOn())
|
if (aStatusPtr && (*aStatusPtr)->IsSubIntensityOn())
|
||||||
{
|
{
|
||||||
const Standard_Integer aHiMode = getHilightMode (anInteractive, aStatus->HilightStyle(), aStatus->DisplayMode());
|
const Standard_Integer aHiMode = getHilightMode (anInteractive, (*aStatusPtr)->HilightStyle(), (*aStatusPtr)->DisplayMode());
|
||||||
highlightWithSubintensity (anOwner, aHiMode);
|
highlightWithSubintensity (anOwner, aHiMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -184,9 +195,9 @@ void AIS_InteractiveContext::unhighlightSelected (const Standard_Boolean theIsTo
|
|||||||
{
|
{
|
||||||
anObjToClear.Add (anInteractive);
|
anObjToClear.Add (anInteractive);
|
||||||
}
|
}
|
||||||
if (anOwner == anInteractive->GlobalSelOwner())
|
if (aStatusPtr && anOwner == anInteractive->GlobalSelOwner())
|
||||||
{
|
{
|
||||||
myObjects.ChangeFind (anInteractive)->SetHilightStatus (Standard_False);
|
(*aStatusPtr)->SetHilightStatus (Standard_False);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (NCollection_IndexedMap<Handle(AIS_InteractiveObject)>::Iterator anIter (anObjToClear); anIter.More(); anIter.Next())
|
for (NCollection_IndexedMap<Handle(AIS_InteractiveObject)>::Iterator anIter (anObjToClear); anIter.More(); anIter.Next())
|
||||||
@@ -201,7 +212,7 @@ void AIS_InteractiveContext::unhighlightSelected (const Standard_Boolean theIsTo
|
|||||||
//function : unhighlightGlobal
|
//function : unhighlightGlobal
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void AIS_InteractiveContext::unhighlightGlobal (const Handle(AIS_InteractiveObject)& theObj) const
|
void AIS_InteractiveContext::unhighlightGlobal (const Handle(AIS_InteractiveObject)& theObj)
|
||||||
{
|
{
|
||||||
if (theObj.IsNull())
|
if (theObj.IsNull())
|
||||||
{
|
{
|
||||||
@@ -215,15 +226,9 @@ void AIS_InteractiveContext::unhighlightGlobal (const Handle(AIS_InteractiveObje
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aGlobOwner->IsAutoHilight())
|
AIS_NListOfEntityOwner anOwners;
|
||||||
{
|
anOwners.Append (aGlobOwner);
|
||||||
aGlobOwner->Unhilight (myMainPM);
|
unhighlightOwners (anOwners);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
myMainPM->Unhighlight (theObj);
|
|
||||||
theObj->ClearSelected();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -486,86 +491,14 @@ AIS_StatusOfPick AIS_InteractiveContext::Select (const Standard_Integer theXPMi
|
|||||||
const Standard_Integer theXPMax,
|
const Standard_Integer theXPMax,
|
||||||
const Standard_Integer theYPMax,
|
const Standard_Integer theYPMax,
|
||||||
const Handle(V3d_View)& theView,
|
const Handle(V3d_View)& theView,
|
||||||
const Standard_Boolean toUpdateViewer)
|
const AIS_SelectionScheme theSelScheme)
|
||||||
{
|
{
|
||||||
if (theView->Viewer() != myMainVwr)
|
if (theView->Viewer() != myMainVwr)
|
||||||
{
|
{
|
||||||
throw Standard_ProgramError ("AIS_InteractiveContext::Select() - invalid argument");
|
throw Standard_ProgramError ("AIS_InteractiveContext::Select() - invalid argument");
|
||||||
}
|
}
|
||||||
|
|
||||||
// all objects detected by the selector are taken, previous current objects are emptied,
|
|
||||||
// new objects are put...
|
|
||||||
ClearSelected (Standard_False);
|
|
||||||
myLastActiveView = theView.get();
|
myLastActiveView = theView.get();
|
||||||
myMainSel->Pick (theXPMin, theYPMin, theXPMax, theYPMax, theView);
|
|
||||||
for (Standard_Integer aPickIter = 1; aPickIter <= myMainSel->NbPicked(); ++aPickIter)
|
|
||||||
{
|
|
||||||
const Handle(SelectMgr_EntityOwner)& aCurOwner = myMainSel->Picked (aPickIter);
|
|
||||||
if (aCurOwner.IsNull() || !aCurOwner->HasSelectable() || !myFilters->IsOk (aCurOwner))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
mySelection->Select (aCurOwner);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (myAutoHilight)
|
|
||||||
{
|
|
||||||
HilightSelected (toUpdateViewer);
|
|
||||||
}
|
|
||||||
|
|
||||||
Standard_Integer aSelNum = NbSelected();
|
|
||||||
|
|
||||||
return (aSelNum == 0) ? AIS_SOP_NothingSelected
|
|
||||||
: (aSelNum == 1) ? AIS_SOP_OneSelected
|
|
||||||
: AIS_SOP_SeveralSelected;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : Select
|
|
||||||
//purpose : Selection by polyline
|
|
||||||
//=======================================================================
|
|
||||||
AIS_StatusOfPick AIS_InteractiveContext::Select (const TColgp_Array1OfPnt2d& thePolyline,
|
|
||||||
const Handle(V3d_View)& theView,
|
|
||||||
const Standard_Boolean toUpdateViewer)
|
|
||||||
{
|
|
||||||
if (theView->Viewer() != myMainVwr)
|
|
||||||
{
|
|
||||||
throw Standard_ProgramError ("AIS_InteractiveContext::Select() - invalid argument");
|
|
||||||
}
|
|
||||||
|
|
||||||
// all objects detected by the selector are taken, previous current objects are emptied,
|
|
||||||
// new objects are put...
|
|
||||||
ClearSelected (Standard_False);
|
|
||||||
myLastActiveView = theView.get();
|
|
||||||
myMainSel->Pick (thePolyline, theView);
|
|
||||||
for (Standard_Integer aPickIter = 1; aPickIter <= myMainSel->NbPicked(); ++aPickIter)
|
|
||||||
{
|
|
||||||
const Handle(SelectMgr_EntityOwner) anOwner = myMainSel->Picked (aPickIter);
|
|
||||||
if (anOwner.IsNull() || !anOwner->HasSelectable() || !myFilters->IsOk (anOwner))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
mySelection->Select (anOwner);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (myAutoHilight)
|
|
||||||
{
|
|
||||||
HilightSelected (toUpdateViewer);
|
|
||||||
}
|
|
||||||
|
|
||||||
Standard_Integer aSelNum = NbSelected();
|
|
||||||
|
|
||||||
return (aSelNum == 0) ? AIS_SOP_NothingSelected
|
|
||||||
: (aSelNum == 1) ? AIS_SOP_OneSelected
|
|
||||||
: AIS_SOP_SeveralSelected;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : Select
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
AIS_StatusOfPick AIS_InteractiveContext::Select (const Standard_Boolean toUpdateViewer)
|
|
||||||
{
|
|
||||||
if (!myLastPicked.IsNull())
|
if (!myLastPicked.IsNull())
|
||||||
{
|
{
|
||||||
Graphic3d_Vec2i aMousePos (-1, -1);
|
Graphic3d_Vec2i aMousePos (-1, -1);
|
||||||
@@ -578,54 +511,126 @@ AIS_StatusOfPick AIS_InteractiveContext::Select (const Standard_Boolean toUpdate
|
|||||||
{
|
{
|
||||||
return AIS_SOP_NothingSelected;
|
return AIS_SOP_NothingSelected;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (myAutoHilight)
|
|
||||||
{
|
|
||||||
clearDynamicHighlight();
|
|
||||||
}
|
|
||||||
if (!myLastPicked->IsSelected()
|
|
||||||
|| myLastPicked->IsForcedHilight()
|
|
||||||
|| NbSelected() > 1)
|
|
||||||
{
|
|
||||||
SetSelected (myLastPicked, Standard_False);
|
|
||||||
if(toUpdateViewer)
|
|
||||||
{
|
|
||||||
UpdateCurrentViewer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
myMainSel->Pick (theXPMin, theYPMin, theXPMax, theYPMax, theView);
|
||||||
|
|
||||||
|
AIS_NListOfEntityOwner aPickedOwners;
|
||||||
|
for (Standard_Integer aPickIter = 1; aPickIter <= myMainSel->NbPicked(); ++aPickIter)
|
||||||
{
|
{
|
||||||
ClearSelected (toUpdateViewer);
|
aPickedOwners.Append (myMainSel->Picked (aPickIter));
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Integer aSelNum = NbSelected();
|
return Select (aPickedOwners, theSelScheme);
|
||||||
|
}
|
||||||
|
|
||||||
return (aSelNum == 0) ? AIS_SOP_NothingSelected
|
//=======================================================================
|
||||||
: (aSelNum == 1) ? AIS_SOP_OneSelected
|
//function : Select
|
||||||
: AIS_SOP_SeveralSelected;
|
//purpose : Selection by polyline
|
||||||
|
//=======================================================================
|
||||||
|
AIS_StatusOfPick AIS_InteractiveContext::Select (const TColgp_Array1OfPnt2d& thePolyline,
|
||||||
|
const Handle(V3d_View)& theView,
|
||||||
|
const AIS_SelectionScheme theSelScheme)
|
||||||
|
{
|
||||||
|
if (theView->Viewer() != myMainVwr)
|
||||||
|
{
|
||||||
|
throw Standard_ProgramError ("AIS_InteractiveContext::Select() - invalid argument");
|
||||||
|
}
|
||||||
|
|
||||||
|
myMainSel->Pick (thePolyline, theView);
|
||||||
|
|
||||||
|
AIS_NListOfEntityOwner aPickedOwners;
|
||||||
|
for (Standard_Integer aPickIter = 1; aPickIter <= myMainSel->NbPicked(); ++aPickIter)
|
||||||
|
{
|
||||||
|
aPickedOwners.Append (myMainSel->Picked (aPickIter));
|
||||||
|
}
|
||||||
|
|
||||||
|
return Select (aPickedOwners, theSelScheme);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Select
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
AIS_StatusOfPick AIS_InteractiveContext::Select (const AIS_SelectionScheme theSelScheme)
|
||||||
|
{
|
||||||
|
// special case: single selection of detected owner - is it necessary ?
|
||||||
|
/*if (myWasLastMain && !myLastinMain.IsNull() && !myAutoHilight &&
|
||||||
|
(myLastinMain->IsSelected()
|
||||||
|
&& !myLastinMain->IsForcedHilight()
|
||||||
|
&& NbSelected() <= 1))
|
||||||
|
{
|
||||||
|
mySelection->selectOwner(myLastinMain, aPrevSelected, theSelScheme);
|
||||||
|
|
||||||
|
Graphic3d_Vec2i aMousePos (-1, -1);
|
||||||
|
if (myMainSel->GetManager().GetActiveSelectionType() == SelectBasics_SelectingVolumeManager::Point)
|
||||||
|
{
|
||||||
|
aMousePos.SetValues ((Standard_Integer )myMainSel->GetManager().GetMousePosition().X(),
|
||||||
|
(Standard_Integer )myMainSel->GetManager().GetMousePosition().Y());
|
||||||
|
}
|
||||||
|
if (myLastPicked->HandleMouseClick (aMousePos, Aspect_VKeyMouse_LeftButton, Aspect_VKeyFlags_NONE, false))
|
||||||
|
{
|
||||||
|
return AIS_SOP_NothingSelected;
|
||||||
|
}
|
||||||
|
return getStatusOfPick (NbSelected());
|
||||||
|
}*/
|
||||||
|
|
||||||
|
AIS_NListOfEntityOwner aPickedOwners;
|
||||||
|
if (!myLastPicked.IsNull() &&
|
||||||
|
myLastPicked->HasSelectable())
|
||||||
|
{
|
||||||
|
Handle(AIS_InteractiveObject) anIO = Handle(AIS_InteractiveObject)::DownCast(myLastPicked->Selectable());
|
||||||
|
if (!anIO.IsNull() &&
|
||||||
|
myObjects.IsBound(anIO))
|
||||||
|
{
|
||||||
|
aPickedOwners.Append (myLastPicked);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Select (aPickedOwners, theSelScheme);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Select
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
AIS_StatusOfPick AIS_InteractiveContext::Select (const Standard_Integer theXPMin,
|
||||||
|
const Standard_Integer theYPMin,
|
||||||
|
const Standard_Integer theXPMax,
|
||||||
|
const Standard_Integer theYPMax,
|
||||||
|
const Handle(V3d_View)& theView,
|
||||||
|
const Standard_Boolean)
|
||||||
|
{
|
||||||
|
return Select (theXPMin, theYPMin, theXPMax, theYPMax, theView, AIS_SelectionScheme_ClearAndAdd);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Select
|
||||||
|
//purpose : Selection by polyline
|
||||||
|
//=======================================================================
|
||||||
|
AIS_StatusOfPick AIS_InteractiveContext::Select (const TColgp_Array1OfPnt2d& thePolyline,
|
||||||
|
const Handle(V3d_View)& theView,
|
||||||
|
const Standard_Boolean)
|
||||||
|
{
|
||||||
|
return Select (thePolyline, theView, AIS_SelectionScheme_ClearAndAdd);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Select
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
AIS_StatusOfPick AIS_InteractiveContext::Select (const Standard_Boolean)
|
||||||
|
{
|
||||||
|
return Select (AIS_SelectionScheme_ClearAndAdd);
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : ShiftSelect
|
//function : ShiftSelect
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
AIS_StatusOfPick AIS_InteractiveContext::ShiftSelect (const Standard_Boolean toUpdateViewer)
|
AIS_StatusOfPick AIS_InteractiveContext::ShiftSelect (const Standard_Boolean)
|
||||||
{
|
{
|
||||||
if (myAutoHilight)
|
return Select (AIS_SelectionScheme_Switch);
|
||||||
{
|
|
||||||
clearDynamicHighlight();
|
|
||||||
}
|
|
||||||
if (!myLastPicked.IsNull())
|
|
||||||
{
|
|
||||||
AddOrRemoveSelected (myLastPicked, toUpdateViewer);
|
|
||||||
}
|
|
||||||
|
|
||||||
Standard_Integer aSelNum = NbSelected();
|
|
||||||
|
|
||||||
return (aSelNum == 0) ? AIS_SOP_NothingSelected
|
|
||||||
: (aSelNum == 1) ? AIS_SOP_OneSelected
|
|
||||||
: AIS_SOP_SeveralSelected;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -637,39 +642,9 @@ AIS_StatusOfPick AIS_InteractiveContext::ShiftSelect (const Standard_Integer the
|
|||||||
const Standard_Integer theXPMax,
|
const Standard_Integer theXPMax,
|
||||||
const Standard_Integer theYPMax,
|
const Standard_Integer theYPMax,
|
||||||
const Handle(V3d_View)& theView,
|
const Handle(V3d_View)& theView,
|
||||||
const Standard_Boolean toUpdateViewer)
|
const Standard_Boolean)
|
||||||
{
|
{
|
||||||
if (theView->Viewer() != myMainVwr)
|
return Select (theXPMin, theYPMin, theXPMax, theYPMax, theView, AIS_SelectionScheme_Switch);
|
||||||
{
|
|
||||||
throw Standard_ProgramError ("AIS_InteractiveContext::ShiftSelect() - invalid argument");
|
|
||||||
}
|
|
||||||
|
|
||||||
myLastActiveView = theView.get();
|
|
||||||
if (myAutoHilight)
|
|
||||||
{
|
|
||||||
UnhilightSelected (Standard_False);
|
|
||||||
}
|
|
||||||
myMainSel->Pick (theXPMin, theYPMin, theXPMax, theYPMax, theView);
|
|
||||||
for (Standard_Integer aPickIter = 1; aPickIter <= myMainSel->NbPicked(); ++aPickIter)
|
|
||||||
{
|
|
||||||
const Handle(SelectMgr_EntityOwner) anOwner = myMainSel->Picked (aPickIter);
|
|
||||||
if (anOwner.IsNull() || !anOwner->HasSelectable() || !myFilters->IsOk (anOwner))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
mySelection->Select (anOwner);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (myAutoHilight)
|
|
||||||
{
|
|
||||||
HilightSelected (toUpdateViewer);
|
|
||||||
}
|
|
||||||
|
|
||||||
Standard_Integer aSelNum = NbSelected();
|
|
||||||
|
|
||||||
return (aSelNum == 0) ? AIS_SOP_NothingSelected
|
|
||||||
: (aSelNum == 1) ? AIS_SOP_OneSelected
|
|
||||||
: AIS_SOP_SeveralSelected;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -678,31 +653,31 @@ AIS_StatusOfPick AIS_InteractiveContext::ShiftSelect (const Standard_Integer the
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
AIS_StatusOfPick AIS_InteractiveContext::ShiftSelect (const TColgp_Array1OfPnt2d& thePolyline,
|
AIS_StatusOfPick AIS_InteractiveContext::ShiftSelect (const TColgp_Array1OfPnt2d& thePolyline,
|
||||||
const Handle(V3d_View)& theView,
|
const Handle(V3d_View)& theView,
|
||||||
const Standard_Boolean toUpdateViewer)
|
const Standard_Boolean)
|
||||||
{
|
{
|
||||||
if (theView->Viewer() != myMainVwr)
|
return Select (thePolyline, theView, AIS_SelectionScheme_Switch);
|
||||||
{
|
}
|
||||||
throw Standard_ProgramError ("AIS_InteractiveContext::ShiftSelect() - invalid argument");
|
|
||||||
}
|
|
||||||
|
|
||||||
myLastActiveView = theView.get();
|
//=======================================================================
|
||||||
|
//function : Select
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
AIS_StatusOfPick AIS_InteractiveContext::Select (const AIS_NListOfEntityOwner& theOwners,
|
||||||
|
const AIS_SelectionScheme theSelScheme)
|
||||||
|
{
|
||||||
|
// all objects detected by the selector are taken, previous current objects are emptied,
|
||||||
|
// new objects are put...
|
||||||
if (myAutoHilight)
|
if (myAutoHilight)
|
||||||
{
|
{
|
||||||
|
clearDynamicHighlight();
|
||||||
UnhilightSelected (Standard_False);
|
UnhilightSelected (Standard_False);
|
||||||
}
|
}
|
||||||
myMainSel->Pick (thePolyline, theView);
|
|
||||||
for (Standard_Integer aPickIter = 1; aPickIter <= myMainSel->NbPicked(); ++aPickIter)
|
|
||||||
{
|
|
||||||
const Handle(SelectMgr_EntityOwner) anOwner = myMainSel->Picked (aPickIter);
|
|
||||||
if (anOwner.IsNull() || !anOwner->HasSelectable() || !myFilters->IsOk (anOwner))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
mySelection->Select (anOwner);
|
mySelection->SelectOwners (theOwners, theSelScheme, myFilters);
|
||||||
}
|
|
||||||
|
|
||||||
if (myAutoHilight)
|
if (myAutoHilight)
|
||||||
{
|
{
|
||||||
HilightSelected (toUpdateViewer);
|
HilightSelected (Standard_False);
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Integer aSelNum = NbSelected();
|
Standard_Integer aSelNum = NbSelected();
|
||||||
@@ -720,17 +695,36 @@ void AIS_InteractiveContext::HilightSelected (const Standard_Boolean theToUpdate
|
|||||||
{
|
{
|
||||||
// In case of selection without using local context
|
// In case of selection without using local context
|
||||||
clearDynamicHighlight();
|
clearDynamicHighlight();
|
||||||
|
|
||||||
|
highlightOwners (mySelection->Objects(), Standard_True);
|
||||||
|
|
||||||
|
if (theToUpdateViewer)
|
||||||
|
UpdateCurrentViewer();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : highlightOwners
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void AIS_InteractiveContext::highlightOwners (const AIS_NListOfEntityOwner& theOwners,
|
||||||
|
const Standard_Boolean& theToUseObjectDisplayMode)
|
||||||
|
{
|
||||||
AIS_MapOfObjSelectedOwners anObjOwnerMap;
|
AIS_MapOfObjSelectedOwners anObjOwnerMap;
|
||||||
for (AIS_NListOfEntityOwner::Iterator aSelIter (mySelection->Objects()); aSelIter.More(); aSelIter.Next())
|
for (AIS_NListOfEntityOwner::Iterator aSelIter (theOwners); aSelIter.More(); aSelIter.Next())
|
||||||
{
|
{
|
||||||
const Handle(SelectMgr_EntityOwner) anOwner = aSelIter.Value();
|
const Handle(SelectMgr_EntityOwner) anOwner = aSelIter.Value();
|
||||||
const Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (anOwner->Selectable());
|
const Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (anOwner->Selectable());
|
||||||
|
if (anObj.IsNull())
|
||||||
|
continue;
|
||||||
|
|
||||||
const Handle(Prs3d_Drawer)& anObjSelStyle = getSelStyle (anObj, anOwner);
|
const Handle(Prs3d_Drawer)& anObjSelStyle = getSelStyle (anObj, anOwner);
|
||||||
Handle(AIS_GlobalStatus)& aState = myObjects.ChangeFind(anObj);
|
Handle(AIS_GlobalStatus)* aStatusPtr = myObjects.ChangeSeek (anObj);
|
||||||
if (anOwner == anObj->GlobalSelOwner())
|
if (!aStatusPtr)
|
||||||
|
continue;
|
||||||
|
if (theToUseObjectDisplayMode && anOwner == anObj->GlobalSelOwner())
|
||||||
{
|
{
|
||||||
aState->SetHilightStatus (Standard_True);
|
(*aStatusPtr)->SetHilightStatus (Standard_True);
|
||||||
aState->SetHilightStyle (anObjSelStyle);
|
(*aStatusPtr)->SetHilightStyle (anObjSelStyle);
|
||||||
}
|
}
|
||||||
if (!anOwner->IsAutoHilight())
|
if (!anOwner->IsAutoHilight())
|
||||||
{
|
{
|
||||||
@@ -748,7 +742,7 @@ void AIS_InteractiveContext::HilightSelected (const Standard_Boolean theToUpdate
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const Standard_Integer aHiMode = getHilightMode (anObj, anObjSelStyle, aState->DisplayMode());
|
const Standard_Integer aHiMode = getHilightMode (anObj, anObjSelStyle, theToUseObjectDisplayMode ? (*aStatusPtr)->DisplayMode() : -1);
|
||||||
anOwner->HilightWithColor (myMainPM, anObjSelStyle, aHiMode);
|
anOwner->HilightWithColor (myMainPM, anObjSelStyle, aHiMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -761,9 +755,6 @@ void AIS_InteractiveContext::HilightSelected (const Standard_Boolean theToUpdate
|
|||||||
}
|
}
|
||||||
anObjOwnerMap.Clear();
|
anObjOwnerMap.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (theToUpdateViewer)
|
|
||||||
UpdateCurrentViewer();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -772,17 +763,7 @@ void AIS_InteractiveContext::HilightSelected (const Standard_Boolean theToUpdate
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
void AIS_InteractiveContext::UnhilightSelected (const Standard_Boolean theToUpdateViewer)
|
void AIS_InteractiveContext::UnhilightSelected (const Standard_Boolean theToUpdateViewer)
|
||||||
{
|
{
|
||||||
for (AIS_NListOfEntityOwner::Iterator aSelIter (mySelection->Objects()); aSelIter.More(); aSelIter.Next())
|
unhighlightSelected();
|
||||||
{
|
|
||||||
const Handle(SelectMgr_EntityOwner) anOwner = aSelIter.Value();
|
|
||||||
const Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (anOwner->Selectable());
|
|
||||||
if (anOwner == anObj->GlobalSelOwner())
|
|
||||||
{
|
|
||||||
myObjects.ChangeFind (anObj)->SetHilightStatus (Standard_False);
|
|
||||||
}
|
|
||||||
|
|
||||||
anOwner->Unhilight (myMainPM);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (theToUpdateViewer)
|
if (theToUpdateViewer)
|
||||||
UpdateCurrentViewer();
|
UpdateCurrentViewer();
|
||||||
@@ -865,7 +846,9 @@ void AIS_InteractiveContext::SetSelected (const Handle(AIS_InteractiveObject)& t
|
|||||||
}
|
}
|
||||||
if (aSelOwner == aSelectable->GlobalSelOwner())
|
if (aSelOwner == aSelectable->GlobalSelOwner())
|
||||||
{
|
{
|
||||||
myObjects.ChangeFind (aSelectable)->SetHilightStatus (Standard_False);
|
Handle(AIS_GlobalStatus)* aStatusPtr = myObjects.ChangeSeek (aSelectable);
|
||||||
|
if (aStatusPtr)
|
||||||
|
(*aStatusPtr)->SetHilightStatus (Standard_False);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -937,13 +920,6 @@ void AIS_InteractiveContext::SetSelected (const Handle(SelectMgr_EntityOwner)& t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (myAutoHilight && theOwner == anObject->GlobalSelOwner())
|
|
||||||
{
|
|
||||||
Handle(AIS_GlobalStatus)& aState = myObjects.ChangeFind (anObject);
|
|
||||||
aState->SetHilightStatus (Standard_True);
|
|
||||||
aState->SetHilightStyle (anObjSelStyle);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (theToUpdateViewer)
|
if (theToUpdateViewer)
|
||||||
UpdateCurrentViewer();
|
UpdateCurrentViewer();
|
||||||
}
|
}
|
||||||
@@ -990,29 +966,24 @@ void AIS_InteractiveContext::AddOrRemoveSelected (const Handle(SelectMgr_EntityO
|
|||||||
if (myAutoHilight)
|
if (myAutoHilight)
|
||||||
{
|
{
|
||||||
const Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (theOwner->Selectable());
|
const Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (theOwner->Selectable());
|
||||||
const Standard_Boolean isGlobal = anObj->GlobalSelOwner() == theOwner;
|
if (!myObjects.IsBound(anObj)) // e.g. AIS_ViewCubeFlat is not displayed
|
||||||
Handle(AIS_GlobalStatus)& aStatus = myObjects.ChangeFind (anObj);
|
return;
|
||||||
|
|
||||||
|
Handle(AIS_GlobalStatus)* aStatusPtr = myObjects.ChangeSeek (anObj);
|
||||||
|
if (!aStatusPtr)
|
||||||
|
return;
|
||||||
|
|
||||||
if (theOwner->IsSelected())
|
if (theOwner->IsSelected())
|
||||||
{
|
{
|
||||||
highlightSelected (theOwner);
|
highlightSelected (theOwner);
|
||||||
if (isGlobal)
|
|
||||||
{
|
|
||||||
aStatus->SetHilightStatus (Standard_True);
|
|
||||||
aStatus->SetHilightStyle (getSelStyle (anObj, theOwner));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (theOwner->IsAutoHilight())
|
AIS_NListOfEntityOwner anOwners;
|
||||||
{
|
anOwners.Append (theOwner);
|
||||||
theOwner->Unhilight (myMainPM);
|
unhighlightOwners (anOwners);
|
||||||
}
|
|
||||||
else
|
(*aStatusPtr)->SetHilightStyle (Handle(Prs3d_Drawer)());
|
||||||
{
|
|
||||||
anObj->ClearSelected();
|
|
||||||
}
|
|
||||||
aStatus->SetHilightStatus (Standard_False);
|
|
||||||
aStatus->SetHilightStyle (Handle(Prs3d_Drawer)());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include <AIS_InteractiveContext.hxx>
|
#include <AIS_InteractiveContext.hxx>
|
||||||
#include <Graphic3d_AspectFillArea3d.hxx>
|
#include <Graphic3d_AspectFillArea3d.hxx>
|
||||||
|
#include <Graphic3d_AspectFillCapping.hxx>
|
||||||
#include <Graphic3d_AspectLine3d.hxx>
|
#include <Graphic3d_AspectLine3d.hxx>
|
||||||
#include <Graphic3d_AspectMarker3d.hxx>
|
#include <Graphic3d_AspectMarker3d.hxx>
|
||||||
#include <Graphic3d_AspectText3d.hxx>
|
#include <Graphic3d_AspectText3d.hxx>
|
||||||
@@ -83,6 +84,17 @@ void AIS_InteractiveObject::SetContext (const Handle(AIS_InteractiveContext)& th
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void AIS_InteractiveObject::SetTransformPersistence (const Handle(Graphic3d_TransformPers)& theTrsfPers)
|
||||||
|
{
|
||||||
|
SelectMgr_SelectableObject::SetTransformPersistence (theTrsfPers);
|
||||||
|
|
||||||
|
if (!GetContext().IsNull())
|
||||||
|
{
|
||||||
|
GetContext()->UpdateOnTransformPersistence (this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : HasPresentation
|
//function : HasPresentation
|
||||||
//purpose :
|
//purpose :
|
||||||
@@ -143,3 +155,26 @@ void AIS_InteractiveObject::SetAspect(const Handle(Prs3d_BasicAspect)& theAspect
|
|||||||
aGroup->SetGroupPrimitivesAspect (aTextAspect->Aspect());
|
aGroup->SetGroupPrimitivesAspect (aTextAspect->Aspect());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TCollection_AsciiString AIS_InteractiveObject_ClassName = "AIS_InteractiveObject";
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : Dump
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void AIS_InteractiveObject::Dump (Standard_OStream& OS) const
|
||||||
|
{
|
||||||
|
DUMP_START_KEY (OS, AIS_InteractiveObject_ClassName);
|
||||||
|
|
||||||
|
{
|
||||||
|
Standard_SStream aTmpStream;
|
||||||
|
SelectMgr_SelectableObject::Dump (aTmpStream);
|
||||||
|
DUMP_VALUES (OS, "SelectMgr_SelectableObject", TCollection::ToDumpString (aTmpStream));
|
||||||
|
}
|
||||||
|
|
||||||
|
DUMP_VALUES (OS, "InteractiveContext", TCollection::GetPointerInfo (myCTXPtr));
|
||||||
|
DUMP_VALUES (OS, "Owner", TCollection::GetPointerInfo (myOwner));
|
||||||
|
|
||||||
|
DUMP_STOP_KEY (OS, AIS_InteractiveObject_ClassName);
|
||||||
|
|
||||||
|
}
|
||||||
|
@@ -108,6 +108,11 @@ public:
|
|||||||
//! Returns the context pointer to the interactive context.
|
//! Returns the context pointer to the interactive context.
|
||||||
Standard_EXPORT Handle(AIS_InteractiveContext) GetContext() const;
|
Standard_EXPORT Handle(AIS_InteractiveContext) GetContext() const;
|
||||||
|
|
||||||
|
//! Sets up Transform Persistence defining a special Local Coordinate system where this object should be located.
|
||||||
|
//! Updates the presentation in context if it is not NULL
|
||||||
|
//! @sa Graphic3d_TransformPers class description
|
||||||
|
Standard_EXPORT virtual void SetTransformPersistence (const Handle(Graphic3d_TransformPers)& theTrsfPers);
|
||||||
|
|
||||||
//! Returns TRUE when this object has a presentation in the current DisplayMode()
|
//! Returns TRUE when this object has a presentation in the current DisplayMode()
|
||||||
Standard_EXPORT Standard_Boolean HasPresentation() const;
|
Standard_EXPORT Standard_Boolean HasPresentation() const;
|
||||||
|
|
||||||
@@ -118,6 +123,9 @@ public:
|
|||||||
Standard_DEPRECATED("Deprecated method, results might be undefined")
|
Standard_DEPRECATED("Deprecated method, results might be undefined")
|
||||||
Standard_EXPORT void SetAspect (const Handle(Prs3d_BasicAspect)& anAspect);
|
Standard_EXPORT void SetAspect (const Handle(Prs3d_BasicAspect)& anAspect);
|
||||||
|
|
||||||
|
//! Dumps the content of me on the stream <OS>.
|
||||||
|
Standard_EXPORT virtual void Dump (Standard_OStream& OS) const Standard_OVERRIDE;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
//! The TypeOfPresention3d means that the interactive object
|
//! The TypeOfPresention3d means that the interactive object
|
||||||
|
@@ -15,6 +15,8 @@
|
|||||||
#include <AIS_Selection.hxx>
|
#include <AIS_Selection.hxx>
|
||||||
|
|
||||||
#include <AIS_InteractiveObject.hxx>
|
#include <AIS_InteractiveObject.hxx>
|
||||||
|
#include <AIS_SelectionScheme.hxx>
|
||||||
|
#include <SelectMgr_Filter.hxx>
|
||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(AIS_Selection, Standard_Transient)
|
IMPLEMENT_STANDARD_RTTIEXT(AIS_Selection, Standard_Transient)
|
||||||
|
|
||||||
@@ -130,3 +132,71 @@ AIS_SelectStatus AIS_Selection::AddSelect (const Handle(SelectMgr_EntityOwner)&
|
|||||||
theObject->SetSelected (Standard_True);
|
theObject->SetSelected (Standard_True);
|
||||||
return AIS_SS_Added;
|
return AIS_SS_Added;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : SelectOwners
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void AIS_Selection::SelectOwners (const AIS_NListOfEntityOwner& thePickedOwners,
|
||||||
|
const int theSelScheme,
|
||||||
|
const Handle(SelectMgr_Filter)& theFilter)
|
||||||
|
{
|
||||||
|
int aSelScheme = theSelScheme;
|
||||||
|
AIS_NListOfEntityOwner aPrevSelected = Objects();
|
||||||
|
if (theSelScheme & AIS_SelectionScheme_Clear)
|
||||||
|
{
|
||||||
|
Clear();
|
||||||
|
|
||||||
|
if (theSelScheme & AIS_SelectionScheme_Switch &&
|
||||||
|
theSelScheme & AIS_SelectionScheme_PickedIfEmpty &&
|
||||||
|
thePickedOwners.Size() < aPrevSelected.Size())
|
||||||
|
{
|
||||||
|
// check if all picked objects are in previous selected list, if so, all objects will be deselected,
|
||||||
|
// but in mode AIS_SelectionScheme_PickedIfEmpty new picked objects should be selected, here, after Clear, Add
|
||||||
|
Standard_Boolean anOtherFound = Standard_False;
|
||||||
|
for (AIS_NListOfEntityOwner::Iterator aSelIter (thePickedOwners); aSelIter.More(); aSelIter.Next())
|
||||||
|
{
|
||||||
|
anOtherFound = !aPrevSelected.Contains (aSelIter.Value());
|
||||||
|
if (anOtherFound)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!anOtherFound)
|
||||||
|
aSelScheme = AIS_SelectionScheme_Add;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (AIS_NListOfEntityOwner::Iterator aSelIter (thePickedOwners); aSelIter.More(); aSelIter.Next())
|
||||||
|
{
|
||||||
|
selectOwner(aSelIter.Value(), aPrevSelected, aSelScheme, theFilter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : selectOwner
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
AIS_SelectStatus AIS_Selection::selectOwner (const Handle(SelectMgr_EntityOwner)& theOwner,
|
||||||
|
const AIS_NListOfEntityOwner& thePreviousSelected,
|
||||||
|
const int theSelScheme,
|
||||||
|
const Handle(SelectMgr_Filter)& theFilter)
|
||||||
|
{
|
||||||
|
if (theOwner.IsNull() || !theOwner->HasSelectable() || !theFilter->IsOk (theOwner))
|
||||||
|
return AIS_SS_NotDone;
|
||||||
|
|
||||||
|
if (theSelScheme & AIS_SelectionScheme_Add)
|
||||||
|
{
|
||||||
|
return AddSelect (theOwner);
|
||||||
|
}
|
||||||
|
else if (theSelScheme & AIS_SelectionScheme_Switch)
|
||||||
|
{
|
||||||
|
if (thePreviousSelected.Contains (theOwner)) // was selected, should not be now
|
||||||
|
{
|
||||||
|
if (theOwner->IsSelected())
|
||||||
|
return Select (theOwner); // deselect
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return AddSelect (theOwner); // was not selected, should be now
|
||||||
|
}
|
||||||
|
|
||||||
|
return AIS_SS_NotDone;
|
||||||
|
}
|
||||||
|
@@ -22,6 +22,8 @@
|
|||||||
#include <Standard.hxx>
|
#include <Standard.hxx>
|
||||||
#include <Standard_Type.hxx>
|
#include <Standard_Type.hxx>
|
||||||
|
|
||||||
|
class SelectMgr_Filter;
|
||||||
|
|
||||||
//! Class holding the list of selected owners.
|
//! Class holding the list of selected owners.
|
||||||
class AIS_Selection : public Standard_Transient
|
class AIS_Selection : public Standard_Transient
|
||||||
{
|
{
|
||||||
@@ -75,6 +77,28 @@ public:
|
|||||||
//! Return selected object at iterator position.
|
//! Return selected object at iterator position.
|
||||||
const Handle(SelectMgr_EntityOwner)& Value() const { return myIterator.Value(); }
|
const Handle(SelectMgr_EntityOwner)& Value() const { return myIterator.Value(); }
|
||||||
|
|
||||||
|
//! Select or deselect owners depending on the selection scheme
|
||||||
|
//! \param theOwners elements to change selection state
|
||||||
|
//! \param theSelScheme selection scheme, defines how owner is selected
|
||||||
|
//! \param theFilter context filter to skip not acceptable owners
|
||||||
|
//! \return result of selection
|
||||||
|
Standard_EXPORT virtual void SelectOwners (const AIS_NListOfEntityOwner& thePickedOwners,
|
||||||
|
const int theSelScheme,
|
||||||
|
const Handle(SelectMgr_Filter)& theFilter);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
//! Select or deselect owner depending on the selection scheme
|
||||||
|
//! \param theOwner element to change selection state
|
||||||
|
//! \param thePreviousSelected previous selected objects
|
||||||
|
//! \param theSelScheme selection scheme, defines how owner is selected
|
||||||
|
//! \param theFilter context filter to skip not acceptable owners
|
||||||
|
//! \return result of selection
|
||||||
|
Standard_EXPORT virtual AIS_SelectStatus selectOwner (const Handle(SelectMgr_EntityOwner)& theOwner,
|
||||||
|
const AIS_NListOfEntityOwner& thePreviousSelected,
|
||||||
|
const int theSelScheme,
|
||||||
|
const Handle(SelectMgr_Filter)& theFilter);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
AIS_NListOfEntityOwner myresult;
|
AIS_NListOfEntityOwner myresult;
|
||||||
|
34
src/AIS/AIS_SelectionScheme.hxx
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
// Copyright (c) 2019 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 _AIS_SelectionScheme_HeaderFile
|
||||||
|
#define _AIS_SelectionScheme_HeaderFile
|
||||||
|
|
||||||
|
|
||||||
|
//! Sets selection schemes for interactive contexts.
|
||||||
|
//! It is possible to use combination of schemes.
|
||||||
|
enum AIS_SelectionScheme
|
||||||
|
{
|
||||||
|
AIS_SelectionScheme_Empty = 0x0000, // do nothing
|
||||||
|
AIS_SelectionScheme_Clear = 0x0001, // clears current selection
|
||||||
|
AIS_SelectionScheme_Add = 0x0002, // add detected object to current selection
|
||||||
|
AIS_SelectionScheme_Switch = 0x0004, // switch selection state in values selected/deselected
|
||||||
|
AIS_SelectionScheme_PickedIfEmpty = 0x0008, // if after switch, result selection is empty, select picked objects
|
||||||
|
AIS_SelectionScheme_ClearAndSwitch = AIS_SelectionScheme_Clear | AIS_SelectionScheme_Switch,
|
||||||
|
AIS_SelectionScheme_ClearAndAdd = AIS_SelectionScheme_Clear | AIS_SelectionScheme_Add,
|
||||||
|
AIS_SelectionScheme_ClearAndSwitchAndPicked = AIS_SelectionScheme_ClearAndSwitch | AIS_SelectionScheme_PickedIfEmpty,
|
||||||
|
AIS_SelectionScheme_Custom // reserved item for custom selection scheme
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _AIS_SelectionScheme_HeaderFile
|
@@ -180,10 +180,7 @@ void AIS_Shape::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPresentat
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
OCC_CATCH_SIGNALS
|
OCC_CATCH_SIGNALS
|
||||||
StdPrs_ShadedShape::Add (aPrs, myshape, myDrawer,
|
StdPrs_ShadedShape::Add (aPrs, myshape, myDrawer, myDrawer->FillCappingAspect());
|
||||||
myDrawer->ShadingAspect()->Aspect()->ToMapTexture()
|
|
||||||
&& !myDrawer->ShadingAspect()->Aspect()->TextureMap().IsNull(),
|
|
||||||
myUVOrigin, myUVRepeat, myUVScale);
|
|
||||||
}
|
}
|
||||||
catch (Standard_Failure const& anException)
|
catch (Standard_Failure const& anException)
|
||||||
{
|
{
|
||||||
|
@@ -145,6 +145,7 @@ AIS_Selection.cxx
|
|||||||
AIS_Selection.hxx
|
AIS_Selection.hxx
|
||||||
AIS_SelectStatus.hxx
|
AIS_SelectStatus.hxx
|
||||||
AIS_SelectionModesConcurrency.hxx
|
AIS_SelectionModesConcurrency.hxx
|
||||||
|
AIS_SelectionScheme.hxx
|
||||||
AIS_SequenceOfDimension.hxx
|
AIS_SequenceOfDimension.hxx
|
||||||
AIS_SequenceOfInteractive.hxx
|
AIS_SequenceOfInteractive.hxx
|
||||||
AIS_Shape.cxx
|
AIS_Shape.cxx
|
||||||
|
@@ -37,100 +37,100 @@ static Handle(TCollection_HAsciiString) nulstr;
|
|||||||
static Handle(Interface_HArray1OfHAsciiString) nularr;
|
static Handle(Interface_HArray1OfHAsciiString) nularr;
|
||||||
|
|
||||||
APIHeaderSection_MakeHeader::APIHeaderSection_MakeHeader
|
APIHeaderSection_MakeHeader::APIHeaderSection_MakeHeader
|
||||||
(const Handle(StepData_StepModel)& model)
|
(const Handle(StepData_StepModel)& model)
|
||||||
{
|
{
|
||||||
done = Standard_True;
|
done = Standard_True;
|
||||||
if (model->HasHeaderEntity(STANDARD_TYPE(HeaderSection_FileName))) {
|
if (model->HasHeaderEntity (STANDARD_TYPE(HeaderSection_FileName))) {
|
||||||
fn = GetCasted(HeaderSection_FileName,
|
fn = GetCasted(HeaderSection_FileName,
|
||||||
model->HeaderEntity(STANDARD_TYPE(HeaderSection_FileName)));
|
model->HeaderEntity(STANDARD_TYPE(HeaderSection_FileName)));
|
||||||
}
|
}
|
||||||
else done = Standard_False;
|
else done = Standard_False;
|
||||||
if (model->HasHeaderEntity(STANDARD_TYPE(HeaderSection_FileSchema))) {
|
if (model->HasHeaderEntity (STANDARD_TYPE(HeaderSection_FileSchema))) {
|
||||||
fs = GetCasted(HeaderSection_FileSchema,
|
fs = GetCasted(HeaderSection_FileSchema,
|
||||||
model->HeaderEntity(STANDARD_TYPE(HeaderSection_FileSchema)));
|
model->HeaderEntity(STANDARD_TYPE(HeaderSection_FileSchema)));
|
||||||
}
|
}
|
||||||
else done = Standard_False;
|
else done = Standard_False;
|
||||||
if (model->HasHeaderEntity(STANDARD_TYPE(HeaderSection_FileDescription))) {
|
if (model->HasHeaderEntity (STANDARD_TYPE(HeaderSection_FileDescription))) {
|
||||||
fd = GetCasted(HeaderSection_FileDescription,
|
fd = GetCasted(HeaderSection_FileDescription,
|
||||||
model->HeaderEntity(STANDARD_TYPE(HeaderSection_FileDescription)));
|
model->HeaderEntity(STANDARD_TYPE(HeaderSection_FileDescription)));
|
||||||
}
|
}
|
||||||
else done = Standard_False;
|
else done = Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
APIHeaderSection_MakeHeader::APIHeaderSection_MakeHeader
|
APIHeaderSection_MakeHeader::APIHeaderSection_MakeHeader
|
||||||
(const Standard_Integer shapetype)
|
(const Standard_Integer shapetype)
|
||||||
{
|
{
|
||||||
switch (shapetype) {
|
switch(shapetype) {
|
||||||
case 1: Init("Open CASCADE Facetted BRep Model"); break;
|
case 1 : Init ("Open CASCADE Facetted BRep Model"); break;
|
||||||
case 2: Init("Open CASCADE Face Based Surface Model"); break;
|
case 2 : Init ("Open CASCADE Face Based Surface Model"); break;
|
||||||
case 3: Init("Open CASCADE Shell Based Surface Model"); break;
|
case 3 : Init ("Open CASCADE Shell Based Surface Model"); break;
|
||||||
case 4: Init("Open CASCADE Manifold Solid Brep Model"); break;
|
case 4 : Init ("Open CASCADE Manifold Solid Brep Model"); break;
|
||||||
default: Init("Open CASCADE Shape Model"); break;
|
default: Init ("Open CASCADE Shape Model"); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void APIHeaderSection_MakeHeader::Init(const Standard_CString nameval)
|
void APIHeaderSection_MakeHeader::Init (const Standard_CString nameval)
|
||||||
{
|
{
|
||||||
done = Standard_True;
|
done = Standard_True;
|
||||||
|
|
||||||
// - File Name
|
// - File Name
|
||||||
char timestamp[50];
|
char timestamp[50];
|
||||||
|
|
||||||
if (fn.IsNull()) fn = new HeaderSection_FileName;
|
if (fn.IsNull()) fn = new HeaderSection_FileName;
|
||||||
Handle(TCollection_HAsciiString) name = new TCollection_HAsciiString(nameval);
|
Handle(TCollection_HAsciiString) name = new TCollection_HAsciiString(nameval);
|
||||||
fn->SetName(name);
|
fn->SetName(name);
|
||||||
Interface_MSG::TDate(timestamp, 0, 0, 0, 0, 0, 1, "C:%4.4d-%2.2d-%2.2dT%2.2d:%2.2d:%2.2d"); // actually
|
Interface_MSG::TDate (timestamp,0,0,0,0,0,1,"C:%4.4d-%2.2d-%2.2dT%2.2d:%2.2d:%2.2d"); // actually
|
||||||
Handle(TCollection_HAsciiString) tst =
|
Handle(TCollection_HAsciiString) tst =
|
||||||
new TCollection_HAsciiString(timestamp);
|
new TCollection_HAsciiString(timestamp);
|
||||||
fn->SetTimeStamp(tst);
|
fn->SetTimeStamp(tst);
|
||||||
Handle(Interface_HArray1OfHAsciiString) authors =
|
Handle(Interface_HArray1OfHAsciiString) authors =
|
||||||
new Interface_HArray1OfHAsciiString(1, 1);
|
new Interface_HArray1OfHAsciiString(1,1);
|
||||||
Handle(TCollection_HAsciiString) a1 =
|
Handle(TCollection_HAsciiString) a1 =
|
||||||
new TCollection_HAsciiString("Author");
|
new TCollection_HAsciiString("Author");
|
||||||
authors->SetValue(1, a1);
|
authors->SetValue(1,a1);
|
||||||
fn->SetAuthor(authors);
|
fn->SetAuthor(authors);
|
||||||
Handle(Interface_HArray1OfHAsciiString) org =
|
Handle(Interface_HArray1OfHAsciiString) org =
|
||||||
new Interface_HArray1OfHAsciiString(1, 1);
|
new Interface_HArray1OfHAsciiString(1,1);
|
||||||
Handle(TCollection_HAsciiString) org1 =
|
Handle(TCollection_HAsciiString) org1 =
|
||||||
new TCollection_HAsciiString("Open CASCADE");
|
new TCollection_HAsciiString("Open CASCADE");
|
||||||
org->SetValue(1, org1);
|
org->SetValue(1,org1);
|
||||||
fn->SetOrganization(org);
|
fn->SetOrganization(org);
|
||||||
|
|
||||||
char procver[80];
|
char procver[80];
|
||||||
sprintf(procver, XSTEP_PROCESSOR_VERSION, "STEP");
|
sprintf (procver, XSTEP_PROCESSOR_VERSION, "STEP");
|
||||||
Handle(TCollection_HAsciiString) pv = new TCollection_HAsciiString(procver);
|
Handle(TCollection_HAsciiString) pv = new TCollection_HAsciiString (procver);
|
||||||
//Handle(TCollection_HAsciiString) pv =
|
//Handle(TCollection_HAsciiString) pv =
|
||||||
//new TCollection_HAsciiString(XSTEP_VERSION);
|
//new TCollection_HAsciiString(XSTEP_VERSION);
|
||||||
fn->SetPreprocessorVersion(pv);
|
fn->SetPreprocessorVersion(pv);
|
||||||
|
|
||||||
Handle(TCollection_HAsciiString) sys =
|
Handle(TCollection_HAsciiString) sys =
|
||||||
new TCollection_HAsciiString(XSTEP_SYSTEM_VERSION);//#58 rln
|
new TCollection_HAsciiString(XSTEP_SYSTEM_VERSION);//#58 rln
|
||||||
fn->SetOriginatingSystem(sys);
|
fn->SetOriginatingSystem(sys);
|
||||||
Handle(TCollection_HAsciiString) auth =
|
Handle(TCollection_HAsciiString) auth =
|
||||||
new TCollection_HAsciiString("Unknown");
|
new TCollection_HAsciiString("Unknown");
|
||||||
fn->SetAuthorisation(auth);
|
fn->SetAuthorisation(auth);
|
||||||
|
|
||||||
// - File Description
|
// - File Description
|
||||||
|
|
||||||
if (fd.IsNull()) fd = new HeaderSection_FileDescription;
|
if (fd.IsNull()) fd = new HeaderSection_FileDescription;
|
||||||
Handle(Interface_HArray1OfHAsciiString) descr =
|
Handle(Interface_HArray1OfHAsciiString) descr =
|
||||||
new Interface_HArray1OfHAsciiString(1, 1);
|
new Interface_HArray1OfHAsciiString(1,1);
|
||||||
Handle(TCollection_HAsciiString) descr1 =
|
Handle(TCollection_HAsciiString) descr1 =
|
||||||
new TCollection_HAsciiString("Open CASCADE Model");
|
new TCollection_HAsciiString("Open CASCADE Model");
|
||||||
descr->SetValue(1, descr1);
|
descr->SetValue(1,descr1);
|
||||||
fd->SetDescription(descr);
|
fd->SetDescription(descr);
|
||||||
Handle(TCollection_HAsciiString) il =
|
Handle(TCollection_HAsciiString) il =
|
||||||
new TCollection_HAsciiString("2;1");
|
new TCollection_HAsciiString("2;1");
|
||||||
fd->SetImplementationLevel(il);
|
fd->SetImplementationLevel(il);
|
||||||
|
|
||||||
// - File Schema
|
// - File Schema
|
||||||
|
|
||||||
if (fs.IsNull()) fs = new HeaderSection_FileSchema;
|
if (fs.IsNull()) fs = new HeaderSection_FileSchema;
|
||||||
Handle(Interface_HArray1OfHAsciiString) schid =
|
Handle(Interface_HArray1OfHAsciiString) schid =
|
||||||
new Interface_HArray1OfHAsciiString(1, 1);
|
new Interface_HArray1OfHAsciiString(1,1);
|
||||||
Handle(TCollection_HAsciiString) schid1 =
|
Handle(TCollection_HAsciiString) schid1 =
|
||||||
new TCollection_HAsciiString("");
|
new TCollection_HAsciiString("");
|
||||||
schid->SetValue(1, schid1);
|
schid->SetValue(1,schid1);
|
||||||
fs->SetSchemaIdentifiers(schid);
|
fs->SetSchemaIdentifiers(schid);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -141,31 +141,30 @@ Standard_Boolean APIHeaderSection_MakeHeader::IsDone() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
void APIHeaderSection_MakeHeader::Apply
|
void APIHeaderSection_MakeHeader::Apply
|
||||||
(const Handle(StepData_StepModel)& model) const
|
(const Handle(StepData_StepModel)& model) const
|
||||||
{
|
{
|
||||||
Interface_EntityIterator header = model->Header();
|
Interface_EntityIterator header = model->Header();
|
||||||
if (HasFd() && !model->HasHeaderEntity(STANDARD_TYPE(HeaderSection_FileDescription)))
|
if (HasFd() && !model->HasHeaderEntity (STANDARD_TYPE(HeaderSection_FileDescription)))
|
||||||
header.AddItem(fd);
|
header.AddItem(fd);
|
||||||
if (HasFn() && !model->HasHeaderEntity(STANDARD_TYPE(HeaderSection_FileName)))
|
if (HasFn() && !model->HasHeaderEntity (STANDARD_TYPE(HeaderSection_FileName)))
|
||||||
header.AddItem(fn);
|
header.AddItem(fn);
|
||||||
if (HasFs() && !model->HasHeaderEntity(STANDARD_TYPE(HeaderSection_FileSchema))) {
|
if (HasFs() && !model->HasHeaderEntity (STANDARD_TYPE(HeaderSection_FileSchema))) {
|
||||||
|
|
||||||
// Schema defined? If not take it from the protocole
|
// Schema defined? If not take it from the protocole
|
||||||
Handle(TCollection_HAsciiString) sch;
|
Handle(TCollection_HAsciiString) sch;
|
||||||
Handle(Interface_HArray1OfHAsciiString) schid = fs->SchemaIdentifiers();
|
Handle(Interface_HArray1OfHAsciiString) schid = fs->SchemaIdentifiers();
|
||||||
if (!schid.IsNull()) sch = schid->Value(1);
|
if (!schid.IsNull()) sch = schid->Value(1);
|
||||||
else {
|
else {
|
||||||
schid = new Interface_HArray1OfHAsciiString(1, 1);
|
schid = new Interface_HArray1OfHAsciiString(1,1);
|
||||||
fs->SetSchemaIdentifiers(schid);
|
fs->SetSchemaIdentifiers(schid);
|
||||||
}
|
}
|
||||||
if (!sch.IsNull()) { if (sch->Length() < 2) sch.Nullify(); } // not defined
|
if (!sch.IsNull()) { if (sch->Length() < 2) sch.Nullify(); } // not defined
|
||||||
if (sch.IsNull()) {
|
if (sch.IsNull()) {
|
||||||
Handle(StepData_Protocol) stepro = Handle(StepData_Protocol)::DownCast
|
Handle(StepData_Protocol) stepro = Handle(StepData_Protocol)::DownCast
|
||||||
(model->Protocol());
|
( model->Protocol());
|
||||||
Handle(Interface_Static) aParam = model->GetParam("write.step.schema");
|
if (!stepro.IsNull()) sch = new TCollection_HAsciiString
|
||||||
if (!aParam.IsNull() && !stepro.IsNull())
|
(stepro->SchemaName());
|
||||||
sch = new TCollection_HAsciiString(stepro->SchemaName(aParam->IntegerValue()));
|
if (!sch.IsNull()) schid->SetValue (1,sch);
|
||||||
if (!sch.IsNull()) schid->SetValue(1, sch);
|
|
||||||
}
|
}
|
||||||
header.AddItem(fs);
|
header.AddItem(fs);
|
||||||
}
|
}
|
||||||
@@ -180,12 +179,12 @@ void APIHeaderSection_MakeHeader::Apply
|
|||||||
// ========
|
// ========
|
||||||
|
|
||||||
Handle(StepData_StepModel) APIHeaderSection_MakeHeader::NewModel
|
Handle(StepData_StepModel) APIHeaderSection_MakeHeader::NewModel
|
||||||
(const Handle(Interface_Protocol)& protocol) const
|
(const Handle(Interface_Protocol)& protocol) const
|
||||||
{
|
{
|
||||||
Handle(StepData_StepModel) stepmodel = new StepData_StepModel;
|
Handle(StepData_StepModel) stepmodel = new StepData_StepModel;
|
||||||
stepmodel->SetProtocol(protocol);
|
stepmodel->SetProtocol (protocol);
|
||||||
|
|
||||||
// - Make Header information
|
// - Make Header information
|
||||||
|
|
||||||
Apply(stepmodel);
|
Apply(stepmodel);
|
||||||
return stepmodel;
|
return stepmodel;
|
||||||
@@ -198,9 +197,7 @@ Handle(StepData_StepModel) APIHeaderSection_MakeHeader::NewModel
|
|||||||
// ========
|
// ========
|
||||||
|
|
||||||
Standard_Boolean APIHeaderSection_MakeHeader::HasFn() const
|
Standard_Boolean APIHeaderSection_MakeHeader::HasFn() const
|
||||||
{
|
{ return (!fn.IsNull()); }
|
||||||
return (!fn.IsNull());
|
|
||||||
}
|
|
||||||
|
|
||||||
Handle(HeaderSection_FileName) APIHeaderSection_MakeHeader::FnValue() const
|
Handle(HeaderSection_FileName) APIHeaderSection_MakeHeader::FnValue() const
|
||||||
{
|
{
|
||||||
@@ -211,23 +208,23 @@ Handle(HeaderSection_FileName) APIHeaderSection_MakeHeader::FnValue() const
|
|||||||
void APIHeaderSection_MakeHeader::SetNameFromShapeType(const Standard_Integer shapetype)
|
void APIHeaderSection_MakeHeader::SetNameFromShapeType(const Standard_Integer shapetype)
|
||||||
{
|
{
|
||||||
Handle(TCollection_HAsciiString) name;
|
Handle(TCollection_HAsciiString) name;
|
||||||
switch(shapetype)
|
switch(shapetype)
|
||||||
{
|
{
|
||||||
case 1: // face_based_surface_model
|
case 1: // face_based_surface_model
|
||||||
name = new TCollection_HAsciiString
|
name = new TCollection_HAsciiString
|
||||||
("Euclid Face Based Surface Model");
|
("Euclid Face Based Surface Model");
|
||||||
break;
|
break;
|
||||||
case 2: // manifold_solid_brep
|
case 2: // manifold_solid_brep
|
||||||
name = new TCollection_HAsciiString
|
name = new TCollection_HAsciiString
|
||||||
("Euclid Manifold Solid Brep Model");
|
("Euclid Manifold Solid Brep Model");
|
||||||
break;
|
break;
|
||||||
case 3: // facetted_brep
|
case 3: // facetted_brep
|
||||||
name = new TCollection_HAsciiString
|
name = new TCollection_HAsciiString
|
||||||
("Euclid Facetted Brep Model");
|
("Euclid Facetted Brep Model");
|
||||||
break;
|
break;
|
||||||
default : // others ?
|
default : // others ?
|
||||||
name = new TCollection_HAsciiString
|
name = new TCollection_HAsciiString
|
||||||
("Euclid Shape Model");
|
("Euclid Shape Model");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
SetName(aName);
|
SetName(aName);
|
||||||
@@ -236,106 +233,106 @@ void APIHeaderSection_MakeHeader::SetNameFromShapeType(const Standard_Integer sh
|
|||||||
|
|
||||||
void APIHeaderSection_MakeHeader::SetName(const Handle(TCollection_HAsciiString)& aName)
|
void APIHeaderSection_MakeHeader::SetName(const Handle(TCollection_HAsciiString)& aName)
|
||||||
{
|
{
|
||||||
if (!fn.IsNull()) fn->SetName(aName);
|
if (!fn.IsNull()) fn->SetName(aName);
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::Name() const
|
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::Name() const
|
||||||
{
|
{
|
||||||
return (fn.IsNull() ? nulstr : fn->Name());
|
return (fn.IsNull() ? nulstr : fn->Name());
|
||||||
}
|
}
|
||||||
|
|
||||||
void APIHeaderSection_MakeHeader::SetTimeStamp(const Handle(TCollection_HAsciiString)& aTimeStamp)
|
void APIHeaderSection_MakeHeader::SetTimeStamp(const Handle(TCollection_HAsciiString)& aTimeStamp)
|
||||||
{
|
{
|
||||||
if (!fn.IsNull()) fn->SetTimeStamp(aTimeStamp);
|
if (!fn.IsNull()) fn->SetTimeStamp(aTimeStamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::TimeStamp() const
|
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::TimeStamp() const
|
||||||
{
|
{
|
||||||
return (fn.IsNull() ? nulstr : fn->TimeStamp());
|
return (fn.IsNull() ? nulstr : fn->TimeStamp());
|
||||||
}
|
}
|
||||||
|
|
||||||
void APIHeaderSection_MakeHeader::SetAuthor(const Handle(Interface_HArray1OfHAsciiString)& aAuthor)
|
void APIHeaderSection_MakeHeader::SetAuthor(const Handle(Interface_HArray1OfHAsciiString)& aAuthor)
|
||||||
{
|
{
|
||||||
if (!fn.IsNull()) fn->SetAuthor(aAuthor);
|
if (!fn.IsNull()) fn->SetAuthor(aAuthor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void APIHeaderSection_MakeHeader::SetAuthorValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aAuthor)
|
void APIHeaderSection_MakeHeader::SetAuthorValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aAuthor)
|
||||||
{
|
{
|
||||||
if (fn.IsNull()) return;
|
if (fn.IsNull()) return;
|
||||||
Handle(Interface_HArray1OfHAsciiString) li = fn->Author();
|
Handle(Interface_HArray1OfHAsciiString) li = fn->Author();
|
||||||
if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num, aAuthor);
|
if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num,aAuthor);
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::Author() const
|
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::Author() const
|
||||||
{
|
{
|
||||||
return (fn.IsNull() ? nularr : fn->Author());
|
return (fn.IsNull() ? nularr : fn->Author());
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::AuthorValue(const Standard_Integer num) const
|
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::AuthorValue(const Standard_Integer num) const
|
||||||
{
|
{
|
||||||
return (fn.IsNull() ? nulstr : fn->AuthorValue(num));
|
return (fn.IsNull() ? nulstr : fn->AuthorValue(num));
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Integer APIHeaderSection_MakeHeader::NbAuthor() const
|
Standard_Integer APIHeaderSection_MakeHeader::NbAuthor () const
|
||||||
{
|
{
|
||||||
return (fn.IsNull() ? 0 : fn->NbAuthor());
|
return (fn.IsNull() ? 0 : fn->NbAuthor());
|
||||||
}
|
}
|
||||||
|
|
||||||
void APIHeaderSection_MakeHeader::SetOrganization(const Handle(Interface_HArray1OfHAsciiString)& aOrganization)
|
void APIHeaderSection_MakeHeader::SetOrganization(const Handle(Interface_HArray1OfHAsciiString)& aOrganization)
|
||||||
{
|
{
|
||||||
if (!fn.IsNull()) fn->SetOrganization(aOrganization);
|
if (!fn.IsNull()) fn->SetOrganization(aOrganization);
|
||||||
}
|
}
|
||||||
|
|
||||||
void APIHeaderSection_MakeHeader::SetOrganizationValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aOrgan)
|
void APIHeaderSection_MakeHeader::SetOrganizationValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aOrgan)
|
||||||
{
|
{
|
||||||
if (fn.IsNull()) return;
|
if (fn.IsNull()) return;
|
||||||
Handle(Interface_HArray1OfHAsciiString) li = fn->Organization();
|
Handle(Interface_HArray1OfHAsciiString) li = fn->Organization();
|
||||||
if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num, aOrgan);
|
if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num,aOrgan);
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::Organization() const
|
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::Organization() const
|
||||||
{
|
{
|
||||||
return (fn.IsNull() ? nularr : fn->Organization());
|
return (fn.IsNull() ? nularr : fn->Organization());
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::OrganizationValue(const Standard_Integer num) const
|
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::OrganizationValue(const Standard_Integer num) const
|
||||||
{
|
{
|
||||||
return (fn.IsNull() ? nulstr : fn->OrganizationValue(num));
|
return (fn.IsNull() ? nulstr : fn->OrganizationValue(num));
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Integer APIHeaderSection_MakeHeader::NbOrganization() const
|
Standard_Integer APIHeaderSection_MakeHeader::NbOrganization () const
|
||||||
{
|
{
|
||||||
return (fn.IsNull() ? 0 : fn->NbOrganization());
|
return (fn.IsNull() ? 0 : fn->NbOrganization());
|
||||||
}
|
}
|
||||||
|
|
||||||
void APIHeaderSection_MakeHeader::SetPreprocessorVersion(const Handle(TCollection_HAsciiString)& aPreprocessorVersion)
|
void APIHeaderSection_MakeHeader::SetPreprocessorVersion(const Handle(TCollection_HAsciiString)& aPreprocessorVersion)
|
||||||
{
|
{
|
||||||
if (!fn.IsNull()) fn->SetPreprocessorVersion(aPreprocessorVersion);
|
if (!fn.IsNull()) fn->SetPreprocessorVersion(aPreprocessorVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::PreprocessorVersion() const
|
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::PreprocessorVersion() const
|
||||||
{
|
{
|
||||||
return (fn.IsNull() ? nulstr : fn->PreprocessorVersion());
|
return (fn.IsNull() ? nulstr : fn->PreprocessorVersion());
|
||||||
}
|
}
|
||||||
|
|
||||||
void APIHeaderSection_MakeHeader::SetOriginatingSystem(const Handle(TCollection_HAsciiString)& aOriginatingSystem)
|
void APIHeaderSection_MakeHeader::SetOriginatingSystem(const Handle(TCollection_HAsciiString)& aOriginatingSystem)
|
||||||
{
|
{
|
||||||
if (!fn.IsNull()) fn->SetOriginatingSystem(aOriginatingSystem);
|
if (!fn.IsNull()) fn->SetOriginatingSystem(aOriginatingSystem);
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::OriginatingSystem() const
|
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::OriginatingSystem() const
|
||||||
{
|
{
|
||||||
return (fn.IsNull() ? nulstr : fn->OriginatingSystem());
|
return (fn.IsNull() ? nulstr : fn->OriginatingSystem());
|
||||||
}
|
}
|
||||||
|
|
||||||
void APIHeaderSection_MakeHeader::SetAuthorisation(const Handle(TCollection_HAsciiString)& aAuthorisation)
|
void APIHeaderSection_MakeHeader::SetAuthorisation(const Handle(TCollection_HAsciiString)& aAuthorisation)
|
||||||
{
|
{
|
||||||
if (!fn.IsNull()) fn->SetAuthorisation(aAuthorisation);
|
if (!fn.IsNull()) fn->SetAuthorisation(aAuthorisation);
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::Authorisation() const
|
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::Authorisation() const
|
||||||
{
|
{
|
||||||
return (fn.IsNull() ? nulstr : fn->Authorisation());
|
return (fn.IsNull() ? nulstr : fn->Authorisation());
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========
|
// ===========
|
||||||
@@ -343,9 +340,7 @@ Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::Authorisation() co
|
|||||||
// ===========
|
// ===========
|
||||||
|
|
||||||
Standard_Boolean APIHeaderSection_MakeHeader::HasFs() const
|
Standard_Boolean APIHeaderSection_MakeHeader::HasFs() const
|
||||||
{
|
{ return (!fs.IsNull()); }
|
||||||
return (!fs.IsNull());
|
|
||||||
}
|
|
||||||
|
|
||||||
Handle(HeaderSection_FileSchema) APIHeaderSection_MakeHeader::FsValue() const
|
Handle(HeaderSection_FileSchema) APIHeaderSection_MakeHeader::FsValue() const
|
||||||
{
|
{
|
||||||
@@ -354,29 +349,29 @@ Handle(HeaderSection_FileSchema) APIHeaderSection_MakeHeader::FsValue() const
|
|||||||
|
|
||||||
void APIHeaderSection_MakeHeader::SetSchemaIdentifiers(const Handle(Interface_HArray1OfHAsciiString)& aSchemaIdentifiers)
|
void APIHeaderSection_MakeHeader::SetSchemaIdentifiers(const Handle(Interface_HArray1OfHAsciiString)& aSchemaIdentifiers)
|
||||||
{
|
{
|
||||||
if (!fs.IsNull()) fs->SetSchemaIdentifiers(aSchemaIdentifiers);
|
if (!fs.IsNull()) fs->SetSchemaIdentifiers(aSchemaIdentifiers);
|
||||||
}
|
}
|
||||||
|
|
||||||
void APIHeaderSection_MakeHeader::SetSchemaIdentifiersValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aSchem)
|
void APIHeaderSection_MakeHeader::SetSchemaIdentifiersValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aSchem)
|
||||||
{
|
{
|
||||||
if (fs.IsNull()) return;
|
if (fs.IsNull()) return;
|
||||||
Handle(Interface_HArray1OfHAsciiString) li = fs->SchemaIdentifiers();
|
Handle(Interface_HArray1OfHAsciiString) li = fs->SchemaIdentifiers();
|
||||||
if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num, aSchem);
|
if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num,aSchem);
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::SchemaIdentifiers() const
|
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::SchemaIdentifiers() const
|
||||||
{
|
{
|
||||||
return (fs.IsNull() ? nularr : fs->SchemaIdentifiers());
|
return (fs.IsNull() ? nularr : fs->SchemaIdentifiers());
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::SchemaIdentifiersValue(const Standard_Integer num) const
|
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::SchemaIdentifiersValue(const Standard_Integer num) const
|
||||||
{
|
{
|
||||||
return (fs.IsNull() ? nulstr : fs->SchemaIdentifiersValue(num));
|
return (fs.IsNull() ? nulstr : fs->SchemaIdentifiersValue(num));
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Integer APIHeaderSection_MakeHeader::NbSchemaIdentifiers() const
|
Standard_Integer APIHeaderSection_MakeHeader::NbSchemaIdentifiers () const
|
||||||
{
|
{
|
||||||
return (fs.IsNull() ? 0 : fs->NbSchemaIdentifiers());
|
return (fs.IsNull() ? 0 : fs->NbSchemaIdentifiers());
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -386,24 +381,24 @@ Standard_Integer APIHeaderSection_MakeHeader::NbSchemaIdentifiers() const
|
|||||||
|
|
||||||
void APIHeaderSection_MakeHeader::AddSchemaIdentifier(const Handle(TCollection_HAsciiString)& aSchem)
|
void APIHeaderSection_MakeHeader::AddSchemaIdentifier(const Handle(TCollection_HAsciiString)& aSchem)
|
||||||
{
|
{
|
||||||
if (fs.IsNull()) fs = new HeaderSection_FileSchema;
|
if ( fs.IsNull() ) fs = new HeaderSection_FileSchema;
|
||||||
Handle(Interface_HArray1OfHAsciiString) idents = fs->SchemaIdentifiers();
|
Handle(Interface_HArray1OfHAsciiString) idents = fs->SchemaIdentifiers();
|
||||||
|
|
||||||
// check that requested subschema is already in the list
|
// check that requested subschema is already in the list
|
||||||
Standard_Integer i;
|
Standard_Integer i;
|
||||||
for (i = 1; !idents.IsNull() && i <= idents->Length(); i++) {
|
for ( i=1; ! idents.IsNull() && i <= idents->Length(); i++ ) {
|
||||||
if (aSchem->IsSameString(idents->Value(i))) return;
|
if ( aSchem->IsSameString ( idents->Value(i) ) ) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// add a subshema
|
// add a subshema
|
||||||
Handle(Interface_HArray1OfHAsciiString) ids =
|
Handle(Interface_HArray1OfHAsciiString) ids =
|
||||||
new Interface_HArray1OfHAsciiString(1, (idents.IsNull() ? 1 : idents->Length() + 1));
|
new Interface_HArray1OfHAsciiString ( 1, ( idents.IsNull() ? 1 : idents->Length() + 1 ) );
|
||||||
for (i = 1; !idents.IsNull() && i <= idents->Length(); i++) {
|
for ( i=1; ! idents.IsNull() && i <= idents->Length(); i++ ) {
|
||||||
ids->SetValue(i, idents->Value(i));
|
ids->SetValue ( i, idents->Value(i) );
|
||||||
}
|
}
|
||||||
ids->SetValue(i, aSchem);
|
ids->SetValue ( i, aSchem );
|
||||||
|
|
||||||
fs->SetSchemaIdentifiers(ids);
|
fs->SetSchemaIdentifiers ( ids );
|
||||||
}
|
}
|
||||||
|
|
||||||
// ================
|
// ================
|
||||||
@@ -411,9 +406,7 @@ void APIHeaderSection_MakeHeader::AddSchemaIdentifier(const Handle(TCollection_H
|
|||||||
// ================
|
// ================
|
||||||
|
|
||||||
Standard_Boolean APIHeaderSection_MakeHeader::HasFd() const
|
Standard_Boolean APIHeaderSection_MakeHeader::HasFd() const
|
||||||
{
|
{ return (!fd.IsNull()); }
|
||||||
return (!fd.IsNull());
|
|
||||||
}
|
|
||||||
|
|
||||||
Handle(HeaderSection_FileDescription) APIHeaderSection_MakeHeader::FdValue() const
|
Handle(HeaderSection_FileDescription) APIHeaderSection_MakeHeader::FdValue() const
|
||||||
{
|
{
|
||||||
@@ -422,37 +415,37 @@ Handle(HeaderSection_FileDescription) APIHeaderSection_MakeHeader::FdValue() con
|
|||||||
|
|
||||||
void APIHeaderSection_MakeHeader::SetDescription(const Handle(Interface_HArray1OfHAsciiString)& aDescription)
|
void APIHeaderSection_MakeHeader::SetDescription(const Handle(Interface_HArray1OfHAsciiString)& aDescription)
|
||||||
{
|
{
|
||||||
if (!fs.IsNull()) fd->SetDescription(aDescription);
|
if (!fs.IsNull()) fd->SetDescription(aDescription);
|
||||||
}
|
}
|
||||||
|
|
||||||
void APIHeaderSection_MakeHeader::SetDescriptionValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aDescr)
|
void APIHeaderSection_MakeHeader::SetDescriptionValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aDescr)
|
||||||
{
|
{
|
||||||
if (fd.IsNull()) return;
|
if (fd.IsNull()) return;
|
||||||
Handle(Interface_HArray1OfHAsciiString) li = fd->Description();
|
Handle(Interface_HArray1OfHAsciiString) li = fd->Description();
|
||||||
if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num, aDescr);
|
if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num,aDescr);
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::Description() const
|
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::Description() const
|
||||||
{
|
{
|
||||||
return (fd.IsNull() ? nularr : fd->Description());
|
return (fd.IsNull() ? nularr : fd->Description());
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::DescriptionValue(const Standard_Integer num) const
|
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::DescriptionValue(const Standard_Integer num) const
|
||||||
{
|
{
|
||||||
return (fd.IsNull() ? nulstr : fd->DescriptionValue(num));
|
return (fd.IsNull() ? nulstr : fd->DescriptionValue(num));
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Integer APIHeaderSection_MakeHeader::NbDescription() const
|
Standard_Integer APIHeaderSection_MakeHeader::NbDescription () const
|
||||||
{
|
{
|
||||||
return (fd.IsNull() ? 0 : fd->NbDescription());
|
return (fd.IsNull() ? 0 : fd->NbDescription());
|
||||||
}
|
}
|
||||||
|
|
||||||
void APIHeaderSection_MakeHeader::SetImplementationLevel(const Handle(TCollection_HAsciiString)& aImplementationLevel)
|
void APIHeaderSection_MakeHeader::SetImplementationLevel(const Handle(TCollection_HAsciiString)& aImplementationLevel)
|
||||||
{
|
{
|
||||||
if (!fd.IsNull()) fd->SetImplementationLevel(aImplementationLevel);
|
if (!fd.IsNull()) fd->SetImplementationLevel(aImplementationLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::ImplementationLevel() const
|
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::ImplementationLevel() const
|
||||||
{
|
{
|
||||||
return (fd.IsNull() ? nulstr : fd->ImplementationLevel());
|
return (fd.IsNull() ? nulstr : fd->ImplementationLevel());
|
||||||
}
|
}
|
||||||
|
452
src/Aspect/Aspect.cxx
Normal file
@@ -0,0 +1,452 @@
|
|||||||
|
// Copyright (c) 2018 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.
|
||||||
|
|
||||||
|
#include <Aspect.hxx>
|
||||||
|
|
||||||
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
static Standard_CString Aspect_Table_PrintTypeOfDeflection[2] =
|
||||||
|
{
|
||||||
|
"RELATIVE", "ABSOLUTE"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Aspect_Table_PrintTypeOfFacingModel[3] =
|
||||||
|
{
|
||||||
|
"BOTH", "BACK", "FRONT"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Aspect_Table_PrintTypeOfHighlightMethod[2] =
|
||||||
|
{
|
||||||
|
"COLOR", "BOUNDBOX"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Aspect_Table_PrintTypeOfLine[6] =
|
||||||
|
{
|
||||||
|
"EMPTY", "SOLID", "DASH", "DOT", "DOT_DASH", "USER_DEFINED"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Aspect_Table_PrintTypeOfMarker[15] =
|
||||||
|
{
|
||||||
|
"EMPTY", "POINT", "PLUS", "STAR", "X", "O", "O_POINT", "O_PLUS", "O_STAR", "O_X",
|
||||||
|
"RING1", "RING2", "RING3", "BALL", "USER_DEFINED"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Aspect_Table_PrintTypeOfDisplayText[6] =
|
||||||
|
{
|
||||||
|
"NORMAL", "SUBTITLE", "DEKALE", "BLEND", "DIMENSION", "SHADOW"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Aspect_Table_PrintTypeOfStyleText[2] =
|
||||||
|
{
|
||||||
|
"NORMAL", "ANNOTATION"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Aspect_Table_PrintInteriorStyle[6] =
|
||||||
|
{
|
||||||
|
"EMPTY", "HOLLOW", "HATCH", "SOLID", "HIDDEN_LINE", "POINT"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Aspect_Table_PrintPolygonOffsetMode[7] =
|
||||||
|
{
|
||||||
|
"OFF", "FILL", "LINE", "POINT", "ALL", "NONE", "MASK"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Aspect_Table_PrintHatchStyle[14] =
|
||||||
|
{
|
||||||
|
"SOLID", "HORIZONTAL", "HORIZONTAL_WIDE", "VERTICAL", "VERTICAL_WIDE",
|
||||||
|
"DIAGONAL_45", "DIAGONAL_45_WIDE", "DIAGONAL_135", "DIAGONAL_135_WIDE",
|
||||||
|
"GRID", "GRID_WIDE", "GRID_DIAGONAL", "GRID_DIAGONAL_WIDE", "NB"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Aspect_Table_PrintTypeOfTriedronPosition[9] =
|
||||||
|
{
|
||||||
|
"CENTER", "TOP", "BOTTOM", "LEFT", "RIGHT", "LEFT_LOWER", "LEFT_UPPER", "RIGHT_LOWER", "RIGHT_UPPER"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfDeflectionToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Aspect::TypeOfDeflectionToString (Aspect_TypeOfDeflection theType)
|
||||||
|
{
|
||||||
|
return Aspect_Table_PrintTypeOfDeflection[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfDeflectionFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Aspect::TypeOfDeflectionFromString (Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfDeflection& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = 0; aTypeIter <= Aspect_TOD_ABSOLUTE; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Aspect_Table_PrintTypeOfDeflection[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Aspect_TypeOfDeflection (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfFacingModelToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Aspect::TypeOfFacingModelToString (Aspect_TypeOfFacingModel theType)
|
||||||
|
{
|
||||||
|
return Aspect_Table_PrintTypeOfFacingModel[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfFacingModelFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Aspect::TypeOfFacingModelFromString (Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfFacingModel& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = 0; aTypeIter <= Aspect_TOFM_FRONT_SIDE; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Aspect_Table_PrintTypeOfFacingModel[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Aspect_TypeOfFacingModel (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfHighlightMethodToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Aspect::TypeOfHighlightMethodToString (Aspect_TypeOfHighlightMethod theType)
|
||||||
|
{
|
||||||
|
return Aspect_Table_PrintTypeOfHighlightMethod[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfHighlightMethodFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Aspect::TypeOfHighlightMethodFromString (Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfHighlightMethod& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = 0; aTypeIter <= Aspect_TOHM_BOUNDBOX; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Aspect_Table_PrintTypeOfHighlightMethod[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Aspect_TypeOfHighlightMethod (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfLineToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Aspect::TypeOfLineToString (Aspect_TypeOfLine theType)
|
||||||
|
{
|
||||||
|
return Aspect_Table_PrintTypeOfLine[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfLineFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Aspect::TypeOfLineFromString (Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfLine& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Aspect_TOL_EMPTY; aTypeIter <= Aspect_TOL_USERDEFINED; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Aspect_Table_PrintTypeOfLine[aTypeIter + 1];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Aspect_TypeOfLine (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfMarkerToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Aspect::TypeOfMarkerToString (Aspect_TypeOfMarker theType)
|
||||||
|
{
|
||||||
|
return Aspect_Table_PrintTypeOfMarker[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfMarkerFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Aspect::TypeOfMarkerFromString (Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfMarker& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Aspect_TOM_EMPTY; aTypeIter <= Aspect_TOM_USERDEFINED; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Aspect_Table_PrintTypeOfMarker[aTypeIter + 1];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Aspect_TypeOfMarker (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfDisplayTextToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Aspect::TypeOfDisplayTextToString (Aspect_TypeOfDisplayText theType)
|
||||||
|
{
|
||||||
|
return Aspect_Table_PrintTypeOfDisplayText[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfDisplayTextFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Aspect::TypeOfDisplayTextFromString (Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfDisplayText& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Aspect_TODT_NORMAL; aTypeIter <= Aspect_TODT_SHADOW; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Aspect_Table_PrintTypeOfDisplayText[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Aspect_TypeOfDisplayText (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfStyleTextToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Aspect::TypeOfStyleTextToString (Aspect_TypeOfStyleText theType)
|
||||||
|
{
|
||||||
|
return Aspect_Table_PrintTypeOfStyleText[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfStyleTextFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Aspect::TypeOfStyleTextFromString (Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfStyleText& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Aspect_TOST_NORMAL; aTypeIter <= Aspect_TOST_ANNOTATION; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Aspect_Table_PrintTypeOfStyleText[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Aspect_TypeOfStyleText (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : InteriorStyleToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Aspect::InteriorStyleToString (Aspect_InteriorStyle theType)
|
||||||
|
{
|
||||||
|
return Aspect_Table_PrintInteriorStyle[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : InteriorStyleFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Aspect::InteriorStyleFromString (Standard_CString theTypeString,
|
||||||
|
Aspect_InteriorStyle& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Aspect_IS_EMPTY; aTypeIter <= Aspect_IS_POINT; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Aspect_Table_PrintInteriorStyle[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Aspect_InteriorStyle (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : PolygonOffsetModeToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Aspect::PolygonOffsetModeToString (Aspect_PolygonOffsetMode theType)
|
||||||
|
{
|
||||||
|
switch (theType)
|
||||||
|
{
|
||||||
|
case Aspect_POM_Off: return Aspect_Table_PrintPolygonOffsetMode[0];
|
||||||
|
case Aspect_POM_Fill: return Aspect_Table_PrintPolygonOffsetMode[1];
|
||||||
|
case Aspect_POM_Line: return Aspect_Table_PrintPolygonOffsetMode[2];
|
||||||
|
case Aspect_POM_Point: return Aspect_Table_PrintPolygonOffsetMode[3];
|
||||||
|
case Aspect_POM_All: return Aspect_Table_PrintPolygonOffsetMode[4];
|
||||||
|
case Aspect_POM_None: return Aspect_Table_PrintPolygonOffsetMode[5];
|
||||||
|
case Aspect_POM_Mask: return Aspect_Table_PrintPolygonOffsetMode[6];
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : PolygonOffsetModeFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Aspect::PolygonOffsetModeFromString (Standard_CString theTypeString,
|
||||||
|
Aspect_PolygonOffsetMode& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
if (aName == Aspect_Table_PrintPolygonOffsetMode[0]) { theType = Aspect_POM_Off; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintPolygonOffsetMode[1]) { theType = Aspect_POM_Fill; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintPolygonOffsetMode[2]) { theType = Aspect_POM_Line; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintPolygonOffsetMode[3]) { theType = Aspect_POM_Point; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintPolygonOffsetMode[4]) { theType = Aspect_POM_All; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintPolygonOffsetMode[5]) { theType = Aspect_POM_None; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintPolygonOffsetMode[6]) { theType = Aspect_POM_Mask; return Standard_True; }
|
||||||
|
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : HatchStyleToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Aspect::HatchStyleToString (Aspect_HatchStyle theType)
|
||||||
|
{
|
||||||
|
return Aspect_Table_PrintHatchStyle[theType];
|
||||||
|
switch (theType)
|
||||||
|
{
|
||||||
|
case Aspect_HS_SOLID: return Aspect_Table_PrintHatchStyle[0];
|
||||||
|
case Aspect_HS_HORIZONTAL: return Aspect_Table_PrintHatchStyle[1];
|
||||||
|
case Aspect_HS_HORIZONTAL_WIDE: return Aspect_Table_PrintHatchStyle[2];
|
||||||
|
case Aspect_HS_VERTICAL: return Aspect_Table_PrintHatchStyle[3];
|
||||||
|
case Aspect_HS_VERTICAL_WIDE: return Aspect_Table_PrintHatchStyle[4];
|
||||||
|
case Aspect_HS_DIAGONAL_45: return Aspect_Table_PrintHatchStyle[5];
|
||||||
|
case Aspect_HS_DIAGONAL_45_WIDE: return Aspect_Table_PrintHatchStyle[6];
|
||||||
|
case Aspect_HS_DIAGONAL_135: return Aspect_Table_PrintHatchStyle[7];
|
||||||
|
case Aspect_HS_DIAGONAL_135_WIDE: return Aspect_Table_PrintHatchStyle[8];
|
||||||
|
case Aspect_HS_GRID: return Aspect_Table_PrintHatchStyle[9];
|
||||||
|
case Aspect_HS_GRID_WIDE: return Aspect_Table_PrintHatchStyle[10];
|
||||||
|
case Aspect_HS_GRID_DIAGONAL: return Aspect_Table_PrintHatchStyle[11];
|
||||||
|
case Aspect_HS_GRID_DIAGONAL_WIDE: return Aspect_Table_PrintHatchStyle[12];
|
||||||
|
case Aspect_HS_NB: return Aspect_Table_PrintHatchStyle[13];
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : HatchStyleFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Aspect::HatchStyleFromString (Standard_CString theTypeString,
|
||||||
|
Aspect_HatchStyle& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
if (aName == Aspect_Table_PrintHatchStyle[0]) { theType = Aspect_HS_SOLID; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintHatchStyle[1]) { theType = Aspect_HS_HORIZONTAL; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintHatchStyle[2]) { theType = Aspect_HS_HORIZONTAL_WIDE; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintHatchStyle[3]) { theType = Aspect_HS_VERTICAL; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintHatchStyle[4]) { theType = Aspect_HS_VERTICAL_WIDE; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintHatchStyle[5]) { theType = Aspect_HS_DIAGONAL_45; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintHatchStyle[6]) { theType = Aspect_HS_DIAGONAL_45_WIDE; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintHatchStyle[7]) { theType = Aspect_HS_DIAGONAL_135; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintHatchStyle[8]) { theType = Aspect_HS_DIAGONAL_135_WIDE; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintHatchStyle[9]) { theType = Aspect_HS_GRID; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintHatchStyle[10]) { theType = Aspect_HS_GRID_WIDE; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintHatchStyle[11]) { theType = Aspect_HS_GRID_DIAGONAL; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintHatchStyle[12]) { theType = Aspect_HS_GRID_DIAGONAL_WIDE; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintHatchStyle[13]) { theType = Aspect_HS_NB; return Standard_True; }
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfTriedronPositionToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Aspect::TypeOfTriedronPositionToString (Aspect_TypeOfTriedronPosition theType)
|
||||||
|
{
|
||||||
|
return Aspect_Table_PrintTypeOfTriedronPosition[theType];
|
||||||
|
switch (theType)
|
||||||
|
{
|
||||||
|
case Aspect_TOTP_CENTER: return Aspect_Table_PrintTypeOfTriedronPosition[0];
|
||||||
|
case Aspect_TOTP_TOP: return Aspect_Table_PrintTypeOfTriedronPosition[1];
|
||||||
|
case Aspect_TOTP_BOTTOM: return Aspect_Table_PrintTypeOfTriedronPosition[2];
|
||||||
|
case Aspect_TOTP_LEFT: return Aspect_Table_PrintTypeOfTriedronPosition[3];
|
||||||
|
case Aspect_TOTP_RIGHT: return Aspect_Table_PrintTypeOfTriedronPosition[4];
|
||||||
|
case Aspect_TOTP_LEFT_LOWER: return Aspect_Table_PrintTypeOfTriedronPosition[5];
|
||||||
|
case Aspect_TOTP_LEFT_UPPER: return Aspect_Table_PrintTypeOfTriedronPosition[6];
|
||||||
|
case Aspect_TOTP_RIGHT_LOWER: return Aspect_Table_PrintTypeOfTriedronPosition[7];
|
||||||
|
case Aspect_TOTP_RIGHT_UPPER: return Aspect_Table_PrintTypeOfTriedronPosition[8];
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfTriedronPositionFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Aspect::TypeOfTriedronPositionFromString (Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfTriedronPosition& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
if (aName == Aspect_Table_PrintTypeOfTriedronPosition[0]) { theType = Aspect_TOTP_CENTER; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintTypeOfTriedronPosition[1]) { theType = Aspect_TOTP_TOP; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintTypeOfTriedronPosition[2]) { theType = Aspect_TOTP_BOTTOM; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintTypeOfTriedronPosition[3]) { theType = Aspect_TOTP_LEFT; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintTypeOfTriedronPosition[4]) { theType = Aspect_TOTP_RIGHT; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintTypeOfTriedronPosition[5]) { theType = Aspect_TOTP_LEFT_LOWER; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintTypeOfTriedronPosition[6]) { theType = Aspect_TOTP_LEFT_UPPER; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintTypeOfTriedronPosition[7]) { theType = Aspect_TOTP_RIGHT_LOWER; return Standard_True; }
|
||||||
|
else if (aName == Aspect_Table_PrintTypeOfTriedronPosition[8]) { theType = Aspect_TOTP_RIGHT_UPPER; return Standard_True; }
|
||||||
|
return Standard_False;
|
||||||
|
}
|
284
src/Aspect/Aspect.hxx
Normal file
@@ -0,0 +1,284 @@
|
|||||||
|
// Copyright (c) 2018 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 _Aspect_HeaderFile
|
||||||
|
#define _Aspect_HeaderFile
|
||||||
|
|
||||||
|
#include <Aspect_HatchStyle.hxx>
|
||||||
|
#include <Aspect_InteriorStyle.hxx>
|
||||||
|
#include <Aspect_PolygonOffsetMode.hxx>
|
||||||
|
#include <Aspect_TypeOfDeflection.hxx>
|
||||||
|
#include <Aspect_TypeOfDisplayText.hxx>
|
||||||
|
#include <Aspect_TypeOfFacingModel.hxx>
|
||||||
|
#include <Aspect_TypeOfHighlightMethod.hxx>
|
||||||
|
#include <Aspect_TypeOfLine.hxx>
|
||||||
|
#include <Aspect_TypeOfMarker.hxx>
|
||||||
|
#include <Aspect_TypeOfStyleText.hxx>
|
||||||
|
#include <Aspect_TypeOfTriedronPosition.hxx>
|
||||||
|
#include <Standard_DefineAlloc.hxx>
|
||||||
|
#include <Standard_Macro.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
|
||||||
|
//! Provides methods to cast enumerations of package to string value
|
||||||
|
class Aspect
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
DEFINE_STANDARD_ALLOC
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString TypeOfDeflectionToString (Aspect_TypeOfDeflection theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Aspect_TOFM_BOTH_SIDE if string identifier is invalid
|
||||||
|
static Aspect_TypeOfDeflection TypeOfDeflectionFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Aspect_TypeOfDeflection aType = Aspect_TOD_RELATIVE;
|
||||||
|
TypeOfDeflectionFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean TypeOfDeflectionFromString (const Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfDeflection& theType);
|
||||||
|
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString TypeOfFacingModelToString (Aspect_TypeOfFacingModel theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Aspect_TOFM_BOTH_SIDE if string identifier is invalid
|
||||||
|
static Aspect_TypeOfFacingModel TypeOfFacingModelFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Aspect_TypeOfFacingModel aType = Aspect_TOFM_BOTH_SIDE;
|
||||||
|
TypeOfFacingModelFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean TypeOfFacingModelFromString (const Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfFacingModel& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString TypeOfHighlightMethodToString (Aspect_TypeOfHighlightMethod theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Aspect_TOHM_COLOR if string identifier is invalid
|
||||||
|
static Aspect_TypeOfHighlightMethod TypeOfHighlightMethodFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Aspect_TypeOfHighlightMethod aType = Aspect_TOHM_COLOR;
|
||||||
|
TypeOfHighlightMethodFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean TypeOfHighlightMethodFromString (const Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfHighlightMethod& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString TypeOfLineToString (Aspect_TypeOfLine theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Aspect_TOL_EMPTY if string identifier is invalid
|
||||||
|
static Aspect_TypeOfLine TypeOfLineFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Aspect_TypeOfLine aType = Aspect_TOL_EMPTY;
|
||||||
|
TypeOfLineFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean TypeOfLineFromString (const Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfLine& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString TypeOfMarkerToString (Aspect_TypeOfMarker theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Aspect_TOM_EMPTY if string identifier is invalid
|
||||||
|
static Aspect_TypeOfMarker TypeOfMarkerFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Aspect_TypeOfMarker aType = Aspect_TOM_EMPTY;
|
||||||
|
TypeOfMarkerFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean TypeOfMarkerFromString (const Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfMarker& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString TypeOfDisplayTextToString (Aspect_TypeOfDisplayText theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Aspect_TODT_NORMAL if string identifier is invalid
|
||||||
|
static Aspect_TypeOfDisplayText TypeOfDisplayTextFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Aspect_TypeOfDisplayText aType = Aspect_TODT_NORMAL;
|
||||||
|
TypeOfDisplayTextFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean TypeOfDisplayTextFromString (const Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfDisplayText& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString TypeOfStyleTextToString (Aspect_TypeOfStyleText theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Aspect_TODT_NORMAL if string identifier is invalid
|
||||||
|
static Aspect_TypeOfStyleText TypeOfStyleTextFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Aspect_TypeOfStyleText aType = Aspect_TOST_NORMAL;
|
||||||
|
TypeOfStyleTextFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean TypeOfStyleTextFromString (const Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfStyleText& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString InteriorStyleToString (Aspect_InteriorStyle theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Aspect_IS_EMPTY if string identifier is invalid
|
||||||
|
static Aspect_InteriorStyle InteriorStyleFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Aspect_InteriorStyle aType = Aspect_IS_EMPTY;
|
||||||
|
InteriorStyleFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean InteriorStyleFromString (const Standard_CString theTypeString,
|
||||||
|
Aspect_InteriorStyle& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString PolygonOffsetModeToString (Aspect_PolygonOffsetMode theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Aspect_POM_Off if string identifier is invalid
|
||||||
|
static Aspect_PolygonOffsetMode PolygonOffsetModeFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Aspect_PolygonOffsetMode aType = Aspect_POM_Off;
|
||||||
|
PolygonOffsetModeFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean PolygonOffsetModeFromString (const Standard_CString theTypeString,
|
||||||
|
Aspect_PolygonOffsetMode& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString HatchStyleToString (Aspect_HatchStyle theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Aspect_POM_Off if string identifier is invalid
|
||||||
|
static Aspect_HatchStyle HatchStyleFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Aspect_HatchStyle aType = Aspect_HS_SOLID;
|
||||||
|
HatchStyleFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean HatchStyleFromString (const Standard_CString theTypeString,
|
||||||
|
Aspect_HatchStyle& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString TypeOfTriedronPositionToString (Aspect_TypeOfTriedronPosition theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Aspect_TOTP_CENTER if string identifier is invalid
|
||||||
|
static Aspect_TypeOfTriedronPosition TypeOfTriedronPositionFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Aspect_TypeOfTriedronPosition aType = Aspect_TOTP_CENTER;
|
||||||
|
TypeOfTriedronPositionFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean TypeOfTriedronPositionFromString (const Standard_CString theTypeString,
|
||||||
|
Aspect_TypeOfTriedronPosition& theType);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _Aspect_HeaderFile
|
@@ -1,3 +1,5 @@
|
|||||||
|
Aspect.cxx
|
||||||
|
Aspect.hxx
|
||||||
Aspect_AspectFillAreaDefinitionError.hxx
|
Aspect_AspectFillAreaDefinitionError.hxx
|
||||||
Aspect_AspectLineDefinitionError.hxx
|
Aspect_AspectLineDefinitionError.hxx
|
||||||
Aspect_AspectMarkerDefinitionError.hxx
|
Aspect_AspectMarkerDefinitionError.hxx
|
||||||
|
@@ -18,7 +18,9 @@
|
|||||||
|
|
||||||
#include <BVH_Constants.hxx>
|
#include <BVH_Constants.hxx>
|
||||||
#include <BVH_Types.hxx>
|
#include <BVH_Types.hxx>
|
||||||
|
#include <Message_Alerts.hxx>
|
||||||
#include <Standard_ShortReal.hxx>
|
#include <Standard_ShortReal.hxx>
|
||||||
|
#include <TCollection.hxx>
|
||||||
|
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
@@ -108,6 +110,17 @@ public:
|
|||||||
//! Returns center of bounding box along the given axis.
|
//! Returns center of bounding box along the given axis.
|
||||||
T Center (const Standard_Integer theAxis) const;
|
T Center (const Standard_Integer theAxis) const;
|
||||||
|
|
||||||
|
//! Dumps the content of me on the stream <OS>.
|
||||||
|
void Dump (Standard_OStream& OS) const
|
||||||
|
{
|
||||||
|
DUMP_VALUES (OS, "BVH_Box", 2);
|
||||||
|
DUMP_VALUES (OS, "IsValid", IsValid());
|
||||||
|
|
||||||
|
OS << "Bnd_Box" << TCollection::DumpSeparator();
|
||||||
|
BVH::ToBndBox (CornerMin(), CornerMax()).Dump (OS);
|
||||||
|
OS << TCollection::DumpSeparator();
|
||||||
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//! Checks if the Box is out of the other box.
|
//! Checks if the Box is out of the other box.
|
||||||
|
@@ -18,6 +18,11 @@
|
|||||||
|
|
||||||
#include <BVH_Box.hxx>
|
#include <BVH_Box.hxx>
|
||||||
|
|
||||||
|
#include <Message_Alerts.hxx>
|
||||||
|
|
||||||
|
#include <Standard_Macro.hxx>
|
||||||
|
#include <Standard_OStream.hxx>
|
||||||
|
|
||||||
template<class T, int N> class BVH_Builder;
|
template<class T, int N> class BVH_Builder;
|
||||||
|
|
||||||
//! A non-template class for using as base for BVH_TreeBase
|
//! A non-template class for using as base for BVH_TreeBase
|
||||||
@@ -27,6 +32,13 @@ class BVH_TreeBaseTransient : public Standard_Transient
|
|||||||
DEFINE_STANDARD_RTTIEXT(BVH_TreeBaseTransient, Standard_Transient)
|
DEFINE_STANDARD_RTTIEXT(BVH_TreeBaseTransient, Standard_Transient)
|
||||||
protected:
|
protected:
|
||||||
BVH_TreeBaseTransient() {}
|
BVH_TreeBaseTransient() {}
|
||||||
|
|
||||||
|
//! Dumps the content of me on the stream <OS>.
|
||||||
|
virtual void Dump (Standard_OStream& OS) const { (void)OS; }
|
||||||
|
|
||||||
|
//! Dumps the content of the given node on the stream <OS>.
|
||||||
|
virtual void DumpNode (const int theNodeIndex, Standard_OStream& OS) const
|
||||||
|
{ (void)theNodeIndex; (void)OS; }
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Stores parameters of bounding volume hierarchy (BVH).
|
//! Stores parameters of bounding volume hierarchy (BVH).
|
||||||
@@ -178,6 +190,37 @@ public: //! @name methods for accessing serialized tree data
|
|||||||
return myMaxPointBuffer;
|
return myMaxPointBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//! Dumps the content of me on the stream <OS>.
|
||||||
|
Standard_EXPORT virtual void Dump (Standard_OStream& OS) const Standard_OVERRIDE
|
||||||
|
{
|
||||||
|
DUMP_VALUES (OS, "BVH_Tree", 2);
|
||||||
|
|
||||||
|
DUMP_VALUES (OS, "Depth", Depth());
|
||||||
|
DUMP_VALUES (OS, "Length", Length());
|
||||||
|
|
||||||
|
for (Standard_Integer aNodeIdx = 0; aNodeIdx < Length(); ++aNodeIdx)
|
||||||
|
{
|
||||||
|
DumpNode (aNodeIdx, OS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Dumps the content of the given node on the stream <OS>.
|
||||||
|
Standard_EXPORT virtual void DumpNode (const int theNodeIndex, Standard_OStream& OS) const Standard_OVERRIDE
|
||||||
|
{
|
||||||
|
DUMP_VALUES (OS, "BVH_TreeNode", 2);
|
||||||
|
DUMP_VALUES (OS, "NodeIndex", theNodeIndex);
|
||||||
|
|
||||||
|
OS << "Bnd_Box" << TCollection::DumpSeparator();
|
||||||
|
BVH::ToBndBox (MinPoint (theNodeIndex), MaxPoint (theNodeIndex)).Dump (OS);
|
||||||
|
OS << TCollection::DumpSeparator();
|
||||||
|
|
||||||
|
DUMP_VALUES (OS, "BegPrimitive", BegPrimitive (theNodeIndex));
|
||||||
|
DUMP_VALUES (OS, "EndPrimitive", EndPrimitive (theNodeIndex));
|
||||||
|
DUMP_VALUES (OS, "Level", Level (theNodeIndex));
|
||||||
|
DUMP_VALUES (OS, "IsOuter", IsOuter (theNodeIndex));
|
||||||
|
}
|
||||||
|
|
||||||
public: //! @name protected fields
|
public: //! @name protected fields
|
||||||
|
|
||||||
//! Array of node data records.
|
//! Array of node data records.
|
||||||
|
@@ -21,10 +21,12 @@
|
|||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <Bnd_Box.hxx>
|
||||||
#include <NCollection_Mat4.hxx>
|
#include <NCollection_Mat4.hxx>
|
||||||
#include <NCollection_Vec2.hxx>
|
#include <NCollection_Vec2.hxx>
|
||||||
#include <NCollection_Vec3.hxx>
|
#include <NCollection_Vec3.hxx>
|
||||||
#include <NCollection_Vector.hxx>
|
#include <NCollection_Vector.hxx>
|
||||||
|
#include <Standard_OStream.hxx>
|
||||||
#include <Standard_Type.hxx>
|
#include <Standard_Type.hxx>
|
||||||
|
|
||||||
// GCC supports shrink function only in C++11 mode
|
// GCC supports shrink function only in C++11 mode
|
||||||
@@ -57,6 +59,32 @@ namespace BVH
|
|||||||
typedef NCollection_Vec3<T> Type;
|
typedef NCollection_Vec3<T> Type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<class T> Bnd_Box ToBndBox (const T& theType1, const T& theType2)
|
||||||
|
{
|
||||||
|
return Bnd_Box (theType1, 0., 0., theType2, 0., 0.);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class T> Bnd_Box ToBndBox (const NCollection_Vec2<T>& theType1,
|
||||||
|
const NCollection_Vec2<T>& theType2)
|
||||||
|
{
|
||||||
|
return Bnd_Box (theType1.x(), theType1.y(), 0.,
|
||||||
|
theType2.x(), theType2.y(), 0.);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class T> Bnd_Box ToBndBox (const NCollection_Vec3<T>& theType1,
|
||||||
|
const NCollection_Vec3<T>& theType2)
|
||||||
|
{
|
||||||
|
return Bnd_Box (theType1.x(), theType1.y(), theType1.z(),
|
||||||
|
theType2.x(), theType2.y(), theType2.z());
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class T> Bnd_Box ToBndBox (const NCollection_Vec4<T>& theType1,
|
||||||
|
const NCollection_Vec4<T>& theType2)
|
||||||
|
{
|
||||||
|
return Bnd_Box (theType1.x(), theType1.y(), theType1.z(),
|
||||||
|
theType2.x(), theType2.y(), theType2.z());
|
||||||
|
}
|
||||||
|
|
||||||
template<class T> struct VectorType<T, 4>
|
template<class T> struct VectorType<T, 4>
|
||||||
{
|
{
|
||||||
typedef NCollection_Vec4<T> Type;
|
typedef NCollection_Vec4<T> Type;
|
||||||
|
@@ -35,8 +35,6 @@
|
|||||||
#include <BinMXCAFDoc_MaterialToolDriver.hxx>
|
#include <BinMXCAFDoc_MaterialToolDriver.hxx>
|
||||||
#include <BinMXCAFDoc_NoteDriver.hxx>
|
#include <BinMXCAFDoc_NoteDriver.hxx>
|
||||||
#include <BinMXCAFDoc_NoteBalloonDriver.hxx>
|
#include <BinMXCAFDoc_NoteBalloonDriver.hxx>
|
||||||
#include <BinMXCAFDoc_NoteBinDataDriver.hxx>
|
|
||||||
#include <BinMXCAFDoc_NoteCommentDriver.hxx>
|
|
||||||
#include <BinMXCAFDoc_NotesToolDriver.hxx>
|
#include <BinMXCAFDoc_NotesToolDriver.hxx>
|
||||||
#include <BinMXCAFDoc_ShapeToolDriver.hxx>
|
#include <BinMXCAFDoc_ShapeToolDriver.hxx>
|
||||||
#include <BinMXCAFDoc_ViewDriver.hxx>
|
#include <BinMXCAFDoc_ViewDriver.hxx>
|
||||||
@@ -78,8 +76,7 @@ void BinMXCAFDoc::AddDrivers(const Handle(BinMDF_ADriverTable)& theDriverTable,
|
|||||||
theDriverTable->AddDriver( new BinMXCAFDoc_DimTolDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_DimTolDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_MaterialDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_MaterialDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_NoteBalloonDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_NoteBalloonDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_NoteBinDataDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_NoteDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_NoteCommentDriver (theMsgDrv));
|
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_ViewDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_ViewDriver (theMsgDrv));
|
||||||
|
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_ColorToolDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_ColorToolDriver (theMsgDrv));
|
||||||
|
@@ -42,6 +42,9 @@ class BinMXCAFDoc_DimTolToolDriver;
|
|||||||
class BinMXCAFDoc_MaterialToolDriver;
|
class BinMXCAFDoc_MaterialToolDriver;
|
||||||
class BinMXCAFDoc_ViewDriver;
|
class BinMXCAFDoc_ViewDriver;
|
||||||
class BinMXCAFDoc_ViewToolDriver;
|
class BinMXCAFDoc_ViewToolDriver;
|
||||||
|
class BinMXCAFDoc_AnimationDriver;
|
||||||
|
class BinMXCAFDoc_AnimationToolDriver;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -89,6 +92,9 @@ friend class BinMXCAFDoc_DimTolToolDriver;
|
|||||||
friend class BinMXCAFDoc_MaterialToolDriver;
|
friend class BinMXCAFDoc_MaterialToolDriver;
|
||||||
friend class BinMXCAFDoc_ViewDriver;
|
friend class BinMXCAFDoc_ViewDriver;
|
||||||
friend class BinMXCAFDoc_ViewToolDriver;
|
friend class BinMXCAFDoc_ViewToolDriver;
|
||||||
|
friend class BinMXCAFDoc_AnimationDriver;
|
||||||
|
friend class BinMXCAFDoc_AnimationToolDriver;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
112
src/BinMXCAFDoc/BinMXCAFDoc_AnimationDriver.cxx
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
// Created on: 2017-10-02
|
||||||
|
// Created by: Elena MOZOKHINA
|
||||||
|
// Copyright (c) 2016 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.
|
||||||
|
|
||||||
|
|
||||||
|
#include <BinMXCAFDoc_AnimationDriver.hxx>
|
||||||
|
#include <BinObjMgt_Persistent.hxx>
|
||||||
|
#include <Message_Messenger.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
#include <TCollection_HAsciiString.hxx>
|
||||||
|
#include <TDF_Attribute.hxx>
|
||||||
|
#include <XCAFDoc_Animation.hxx>
|
||||||
|
# include <TColStd_HArray1OfByte.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_AnimationDriver,BinMDF_ADriver)
|
||||||
|
|
||||||
|
static Standard_Boolean getByteArray(const BinObjMgt_Persistent& theSource, Handle(TColStd_HArray1OfByte)& theArray)
|
||||||
|
{
|
||||||
|
Standard_Integer aFirstInd, aLastInd;
|
||||||
|
if (!(theSource >> aFirstInd >> aLastInd))
|
||||||
|
return Standard_False;
|
||||||
|
if (aLastInd < aFirstInd)
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
theArray.reset(new TColStd_HArray1OfByte(aFirstInd, aLastInd - aFirstInd + 1));
|
||||||
|
theSource.GetByteArray(&theArray->ChangeFirst(), aLastInd - aFirstInd + 1);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void putByteArray(BinObjMgt_Persistent& theTarget, const Handle(TColStd_HArray1OfByte)& theArray)
|
||||||
|
{
|
||||||
|
if (theArray.IsNull())
|
||||||
|
return;
|
||||||
|
const Standard_Integer aFirstInd = theArray->Lower();
|
||||||
|
const Standard_Integer aLastInd = theArray->Upper();
|
||||||
|
if (aLastInd < aFirstInd)
|
||||||
|
return;
|
||||||
|
|
||||||
|
theTarget << aFirstInd << aLastInd;
|
||||||
|
theTarget.PutByteArray(&theArray->ChangeFirst(), aLastInd - aFirstInd + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Constructor
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
BinMXCAFDoc_AnimationDriver::BinMXCAFDoc_AnimationDriver
|
||||||
|
(const Handle(Message_Messenger)& theMsgDriver)
|
||||||
|
: BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_Animation)->Name())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : NewEmpty
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Handle(TDF_Attribute) BinMXCAFDoc_AnimationDriver::NewEmpty() const
|
||||||
|
{
|
||||||
|
return new XCAFDoc_Animation();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Paste
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean BinMXCAFDoc_AnimationDriver::Paste(const BinObjMgt_Persistent& theSource,
|
||||||
|
const Handle(TDF_Attribute)& theTarget,
|
||||||
|
BinObjMgt_RRelocationTable& /*theRelocTable*/) const
|
||||||
|
{
|
||||||
|
Handle(XCAFDoc_Animation) anAtt = Handle(XCAFDoc_Animation)::DownCast(theTarget);
|
||||||
|
Standard_Real aDensity;
|
||||||
|
TCollection_AsciiString aName;
|
||||||
|
|
||||||
|
if (!(theSource >> aName))
|
||||||
|
return Standard_False;
|
||||||
|
Handle(TColStd_HArray1OfByte) anImage, anAnimation;
|
||||||
|
if (!getByteArray(theSource, anImage) || anImage.IsNull())
|
||||||
|
return Standard_False;
|
||||||
|
if (!getByteArray(theSource, anAnimation) || anAnimation.IsNull())
|
||||||
|
return Standard_False;
|
||||||
|
anAtt->Set(new TCollection_HAsciiString(aName), anImage, anAnimation);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Paste
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void BinMXCAFDoc_AnimationDriver::Paste(const Handle(TDF_Attribute)& theSource,
|
||||||
|
BinObjMgt_Persistent& theTarget,
|
||||||
|
BinObjMgt_SRelocationTable& /*theRelocTable*/) const
|
||||||
|
{
|
||||||
|
Handle(XCAFDoc_Animation) anAtt = Handle(XCAFDoc_Animation)::DownCast(theSource);
|
||||||
|
Handle(TCollection_HAsciiString) aName = anAtt->GetName();
|
||||||
|
if (!aName.IsNull())
|
||||||
|
theTarget << aName->String();
|
||||||
|
|
||||||
|
putByteArray(theTarget, anAtt->GetImage());
|
||||||
|
putByteArray(theTarget, anAtt->GetAnimation());
|
||||||
|
}
|
72
src/BinMXCAFDoc/BinMXCAFDoc_AnimationDriver.hxx
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
// Created on: 2017-10-02
|
||||||
|
// Created by: Elena MOZOKHINA
|
||||||
|
// Copyright (c) 2016 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 _BinMXCAFDoc_AnimationDriver_HeaderFile
|
||||||
|
#define _BinMXCAFDoc_AnimationDriver_HeaderFile
|
||||||
|
|
||||||
|
#include <Standard.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
|
||||||
|
#include <BinMDF_ADriver.hxx>
|
||||||
|
#include <Standard_Boolean.hxx>
|
||||||
|
#include <BinObjMgt_RRelocationTable.hxx>
|
||||||
|
#include <BinObjMgt_SRelocationTable.hxx>
|
||||||
|
class Message_Messenger;
|
||||||
|
class TDF_Attribute;
|
||||||
|
class BinObjMgt_Persistent;
|
||||||
|
|
||||||
|
|
||||||
|
class BinMXCAFDoc_AnimationDriver;
|
||||||
|
DEFINE_STANDARD_HANDLE(BinMXCAFDoc_AnimationDriver, BinMDF_ADriver)
|
||||||
|
|
||||||
|
|
||||||
|
class BinMXCAFDoc_AnimationDriver : public BinMDF_ADriver
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
|
||||||
|
Standard_EXPORT BinMXCAFDoc_AnimationDriver(const Handle(Message_Messenger)& theMsgDriver);
|
||||||
|
|
||||||
|
Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT virtual Standard_Boolean Paste (const BinObjMgt_Persistent& theSource, const Handle(TDF_Attribute)& theTarget, BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT virtual void Paste (const Handle(TDF_Attribute)& theSource, BinObjMgt_Persistent& theTarget, BinObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_AnimationDriver,BinMDF_ADriver)
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _BinMXCAFDoc_AnimationDriver_HeaderFile
|
65
src/BinMXCAFDoc/BinMXCAFDoc_AnimationToolDriver.cxx
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
// Created on: 2017-10-02
|
||||||
|
// Created by: Elena MOZOKHINA
|
||||||
|
// Copyright (c) 2016 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.
|
||||||
|
|
||||||
|
|
||||||
|
#include <BinMXCAFDoc_AnimationToolDriver.hxx>
|
||||||
|
#include <BinObjMgt_Persistent.hxx>
|
||||||
|
#include <Message_Messenger.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
#include <TDF_Attribute.hxx>
|
||||||
|
#include <XCAFDoc_AnimationTool.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_AnimationToolDriver, BinMDF_ADriver)
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
BinMXCAFDoc_AnimationToolDriver::BinMXCAFDoc_AnimationToolDriver
|
||||||
|
(const Handle(Message_Messenger)& theMsgDriver)
|
||||||
|
: BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_AnimationTool)->Name())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Handle(TDF_Attribute) BinMXCAFDoc_AnimationToolDriver::NewEmpty() const
|
||||||
|
{
|
||||||
|
return new XCAFDoc_AnimationTool();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean BinMXCAFDoc_AnimationToolDriver::Paste
|
||||||
|
(const BinObjMgt_Persistent& /*theSource*/,
|
||||||
|
const Handle(TDF_Attribute)& /*theTarget*/,
|
||||||
|
BinObjMgt_RRelocationTable& /*theRelocTable*/) const
|
||||||
|
{
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void BinMXCAFDoc_AnimationToolDriver::Paste
|
||||||
|
(const Handle(TDF_Attribute)& /*theSource*/,
|
||||||
|
BinObjMgt_Persistent& /*theTarget*/,
|
||||||
|
BinObjMgt_SRelocationTable& /*theRelocTable*/) const {
|
||||||
|
}
|
50
src/BinMXCAFDoc/BinMXCAFDoc_AnimationToolDriver.hxx
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
// Created on: 2017-10-02
|
||||||
|
// Created by: Elena MOZOKHINA
|
||||||
|
// Copyright (c) 2016 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 _BinMXCAFDoc_AnimationToolDriver_HeaderFile
|
||||||
|
#define _BinMXCAFDoc_AnimationToolDriver_HeaderFile
|
||||||
|
|
||||||
|
#include <Standard.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
|
||||||
|
#include <BinMDF_ADriver.hxx>
|
||||||
|
#include <Standard_Boolean.hxx>
|
||||||
|
#include <BinObjMgt_RRelocationTable.hxx>
|
||||||
|
#include <BinObjMgt_SRelocationTable.hxx>
|
||||||
|
class Message_Messenger;
|
||||||
|
class TDF_Attribute;
|
||||||
|
class BinObjMgt_Persistent;
|
||||||
|
|
||||||
|
|
||||||
|
class BinMXCAFDoc_AnimationToolDriver;
|
||||||
|
DEFINE_STANDARD_HANDLE(BinMXCAFDoc_AnimationToolDriver, BinMDF_ADriver)
|
||||||
|
|
||||||
|
|
||||||
|
class BinMXCAFDoc_AnimationToolDriver : public BinMDF_ADriver
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
Standard_EXPORT BinMXCAFDoc_AnimationToolDriver(const Handle(Message_Messenger)& theMsgDriver);
|
||||||
|
|
||||||
|
Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT virtual Standard_Boolean Paste(const BinObjMgt_Persistent& theSource, const Handle(TDF_Attribute)& theTarget, BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT virtual void Paste(const Handle(TDF_Attribute)& theSource, BinObjMgt_Persistent& theTarget, BinObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_AnimationToolDriver, BinMDF_ADriver)
|
||||||
|
|
||||||
|
};
|
||||||
|
#endif // _BinMXCAFDoc_AnimationToolDriver_HeaderFile
|
@@ -20,14 +20,14 @@
|
|||||||
#include <BinMXCAFDoc_NoteBalloonDriver.hxx>
|
#include <BinMXCAFDoc_NoteBalloonDriver.hxx>
|
||||||
#include <XCAFDoc_NoteBalloon.hxx>
|
#include <XCAFDoc_NoteBalloon.hxx>
|
||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NoteBalloonDriver, BinMXCAFDoc_NoteCommentDriver)
|
IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NoteBalloonDriver, BinMXCAFDoc_NoteDriver)
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function :
|
//function :
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
BinMXCAFDoc_NoteBalloonDriver::BinMXCAFDoc_NoteBalloonDriver(const Handle(Message_Messenger)& theMsgDriver)
|
BinMXCAFDoc_NoteBalloonDriver::BinMXCAFDoc_NoteBalloonDriver(const Handle(Message_Messenger)& theMsgDriver)
|
||||||
: BinMXCAFDoc_NoteCommentDriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NoteBalloon)->Name())
|
: BinMXCAFDoc_NoteDriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NoteBalloon)->Name())
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,13 +40,52 @@ Handle(TDF_Attribute) BinMXCAFDoc_NoteBalloonDriver::NewEmpty() const
|
|||||||
return new XCAFDoc_NoteBalloon();
|
return new XCAFDoc_NoteBalloon();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean BinMXCAFDoc_NoteBalloonDriver::Paste(const BinObjMgt_Persistent& theSource,
|
||||||
|
const Handle(TDF_Attribute)& theTarget,
|
||||||
|
BinObjMgt_RRelocationTable& theRelocTable) const
|
||||||
|
{
|
||||||
|
if (!BinMXCAFDoc_NoteDriver::Paste(theSource, theTarget, theRelocTable))
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
Handle(XCAFDoc_NoteBalloon) aNote = Handle(XCAFDoc_NoteBalloon)::DownCast(theTarget);
|
||||||
|
if (aNote.IsNull())
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
TCollection_ExtendedString aComment;
|
||||||
|
if (!(theSource >> aComment))
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
aNote->Set(aComment);
|
||||||
|
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void BinMXCAFDoc_NoteBalloonDriver::Paste(const Handle(TDF_Attribute)& theSource,
|
||||||
|
BinObjMgt_Persistent& theTarget,
|
||||||
|
BinObjMgt_SRelocationTable& theRelocTable) const
|
||||||
|
{
|
||||||
|
BinMXCAFDoc_NoteDriver::Paste(theSource, theTarget, theRelocTable);
|
||||||
|
|
||||||
|
Handle(XCAFDoc_NoteBalloon) aNote = Handle(XCAFDoc_NoteBalloon)::DownCast(theSource);
|
||||||
|
if (!aNote.IsNull())
|
||||||
|
theTarget << aNote->Get();
|
||||||
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function :
|
//function :
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
BinMXCAFDoc_NoteBalloonDriver::BinMXCAFDoc_NoteBalloonDriver(const Handle(Message_Messenger)& theMsgDriver,
|
BinMXCAFDoc_NoteBalloonDriver::BinMXCAFDoc_NoteBalloonDriver(const Handle(Message_Messenger)& theMsgDriver,
|
||||||
Standard_CString theName)
|
Standard_CString theName)
|
||||||
: BinMXCAFDoc_NoteCommentDriver(theMsgDriver, theName)
|
: BinMXCAFDoc_NoteDriver(theMsgDriver, theName)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -16,20 +16,28 @@
|
|||||||
#ifndef _BinMXCAFDoc_NoteBalloonDriver_HeaderFile
|
#ifndef _BinMXCAFDoc_NoteBalloonDriver_HeaderFile
|
||||||
#define _BinMXCAFDoc_NoteBalloonDriver_HeaderFile
|
#define _BinMXCAFDoc_NoteBalloonDriver_HeaderFile
|
||||||
|
|
||||||
#include <BinMXCAFDoc_NoteCommentDriver.hxx>
|
#include <BinMXCAFDoc_NoteDriver.hxx>
|
||||||
|
|
||||||
class BinMXCAFDoc_NoteBalloonDriver;
|
class BinMXCAFDoc_NoteBalloonDriver;
|
||||||
DEFINE_STANDARD_HANDLE(BinMXCAFDoc_NoteBalloonDriver, BinMXCAFDoc_NoteCommentDriver)
|
DEFINE_STANDARD_HANDLE(BinMXCAFDoc_NoteBalloonDriver, BinMXCAFDoc_NoteDriver)
|
||||||
|
|
||||||
class BinMXCAFDoc_NoteBalloonDriver : public BinMXCAFDoc_NoteCommentDriver
|
class BinMXCAFDoc_NoteBalloonDriver : public BinMXCAFDoc_NoteDriver
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Standard_EXPORT BinMXCAFDoc_NoteBalloonDriver(const Handle(Message_Messenger)& theMsgDriver);
|
Standard_EXPORT BinMXCAFDoc_NoteBalloonDriver(const Handle(Message_Messenger)& theMsgDriver);
|
||||||
|
|
||||||
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
|
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
|
||||||
|
|
||||||
DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_NoteBalloonDriver, BinMXCAFDoc_NoteCommentDriver)
|
Standard_EXPORT Standard_Boolean Paste(const BinObjMgt_Persistent& theSource,
|
||||||
|
const Handle(TDF_Attribute)& theTarget,
|
||||||
|
BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT void Paste(const Handle(TDF_Attribute)& theSource,
|
||||||
|
BinObjMgt_Persistent& theTarget,
|
||||||
|
BinObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_NoteBalloonDriver, BinMXCAFDoc_NoteDriver)
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@@ -1,96 +0,0 @@
|
|||||||
// Created on: 2017-02-13
|
|
||||||
// Created by: Eugeny NIKONOV
|
|
||||||
// Copyright (c) 2005-2017 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.
|
|
||||||
|
|
||||||
#include <BinObjMgt_Persistent.hxx>
|
|
||||||
#include <Message_Messenger.hxx>
|
|
||||||
#include <Standard_Type.hxx>
|
|
||||||
#include <TDF_Attribute.hxx>
|
|
||||||
#include <TColStd_HArray1OfByte.hxx>
|
|
||||||
#include <TCollection_AsciiString.hxx>
|
|
||||||
#include <TCollection_ExtendedString.hxx>
|
|
||||||
#include <BinMXCAFDoc_NoteBinDataDriver.hxx>
|
|
||||||
#include <XCAFDoc_NoteBinData.hxx>
|
|
||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NoteBinDataDriver, BinMXCAFDoc_NoteDriver)
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function :
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
BinMXCAFDoc_NoteBinDataDriver::BinMXCAFDoc_NoteBinDataDriver(const Handle(Message_Messenger)& theMsgDriver)
|
|
||||||
: BinMXCAFDoc_NoteDriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NoteBinData)->Name())
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function :
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
Handle(TDF_Attribute) BinMXCAFDoc_NoteBinDataDriver::NewEmpty() const
|
|
||||||
{
|
|
||||||
return new XCAFDoc_NoteBinData();
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function :
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
Standard_Boolean BinMXCAFDoc_NoteBinDataDriver::Paste(const BinObjMgt_Persistent& theSource,
|
|
||||||
const Handle(TDF_Attribute)& theTarget,
|
|
||||||
BinObjMgt_RRelocationTable& theRelocTable) const
|
|
||||||
{
|
|
||||||
if (!BinMXCAFDoc_NoteDriver::Paste(theSource, theTarget, theRelocTable))
|
|
||||||
return Standard_False;
|
|
||||||
|
|
||||||
Handle(XCAFDoc_NoteBinData) aNote = Handle(XCAFDoc_NoteBinData)::DownCast(theTarget);
|
|
||||||
if (aNote.IsNull())
|
|
||||||
return Standard_False;
|
|
||||||
|
|
||||||
TCollection_ExtendedString aTitle;
|
|
||||||
TCollection_AsciiString aMIMEtype;
|
|
||||||
Standard_Integer nbSize;
|
|
||||||
if (!(theSource >> aTitle >> aMIMEtype >> nbSize))
|
|
||||||
return Standard_False;
|
|
||||||
|
|
||||||
Handle(TColStd_HArray1OfByte) aData;
|
|
||||||
if (nbSize > 0)
|
|
||||||
{
|
|
||||||
aData.reset(new TColStd_HArray1OfByte(1, nbSize));
|
|
||||||
theSource.GetByteArray(&aData->ChangeFirst(), nbSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
aNote->Set(aTitle, aMIMEtype, aData);
|
|
||||||
|
|
||||||
return Standard_True;
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function :
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void BinMXCAFDoc_NoteBinDataDriver::Paste(const Handle(TDF_Attribute)& theSource,
|
|
||||||
BinObjMgt_Persistent& theTarget,
|
|
||||||
BinObjMgt_SRelocationTable& theRelocTable) const
|
|
||||||
{
|
|
||||||
BinMXCAFDoc_NoteDriver::Paste(theSource, theTarget, theRelocTable);
|
|
||||||
|
|
||||||
Handle(XCAFDoc_NoteBinData) aNote = Handle(XCAFDoc_NoteBinData)::DownCast(theSource);
|
|
||||||
if (!aNote.IsNull())
|
|
||||||
{
|
|
||||||
theTarget << aNote->Title() << aNote->MIMEtype() << aNote->Size();
|
|
||||||
if (aNote->Size() > 0)
|
|
||||||
theTarget.PutByteArray(&aNote->Data()->ChangeFirst(), aNote->Size());
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,44 +0,0 @@
|
|||||||
// Created on: 2017-02-13
|
|
||||||
// Created by: Sergey NIKONOV
|
|
||||||
// Copyright (c) 2005-2017 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 _BinMXCAFDoc_NoteBinDataDriver_HeaderFile
|
|
||||||
#define _BinMXCAFDoc_NoteBinDataDriver_HeaderFile
|
|
||||||
|
|
||||||
#include <BinMXCAFDoc_NoteDriver.hxx>
|
|
||||||
|
|
||||||
class BinMXCAFDoc_NoteBinDataDriver;
|
|
||||||
DEFINE_STANDARD_HANDLE(BinMXCAFDoc_NoteBinDataDriver, BinMXCAFDoc_NoteDriver)
|
|
||||||
|
|
||||||
class BinMXCAFDoc_NoteBinDataDriver : public BinMXCAFDoc_NoteDriver
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
Standard_EXPORT BinMXCAFDoc_NoteBinDataDriver(const Handle(Message_Messenger)& theMsgDriver);
|
|
||||||
|
|
||||||
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
|
|
||||||
|
|
||||||
Standard_EXPORT Standard_Boolean Paste (const BinObjMgt_Persistent& theSource,
|
|
||||||
const Handle(TDF_Attribute)& theTarget,
|
|
||||||
BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
|
||||||
|
|
||||||
Standard_EXPORT void Paste (const Handle(TDF_Attribute)& theSource,
|
|
||||||
BinObjMgt_Persistent& theTarget,
|
|
||||||
BinObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
|
||||||
|
|
||||||
DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_NoteBinDataDriver, BinMXCAFDoc_NoteDriver)
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // _BinMXCAFDoc_NoteBinDataDriver_HeaderFile
|
|
@@ -1,91 +0,0 @@
|
|||||||
// Created on: 2017-02-13
|
|
||||||
// Created by: Eugeny NIKONOV
|
|
||||||
// Copyright (c) 2005-2017 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.
|
|
||||||
|
|
||||||
#include <BinObjMgt_Persistent.hxx>
|
|
||||||
#include <Message_Messenger.hxx>
|
|
||||||
#include <Standard_Type.hxx>
|
|
||||||
#include <TDF_Attribute.hxx>
|
|
||||||
#include <BinMXCAFDoc_NoteCommentDriver.hxx>
|
|
||||||
#include <XCAFDoc_NoteComment.hxx>
|
|
||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NoteCommentDriver, BinMXCAFDoc_NoteDriver)
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function :
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
BinMXCAFDoc_NoteCommentDriver::BinMXCAFDoc_NoteCommentDriver(const Handle(Message_Messenger)& theMsgDriver)
|
|
||||||
: BinMXCAFDoc_NoteDriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NoteComment)->Name())
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function :
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
Handle(TDF_Attribute) BinMXCAFDoc_NoteCommentDriver::NewEmpty() const
|
|
||||||
{
|
|
||||||
return new XCAFDoc_NoteComment();
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function :
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
Standard_Boolean BinMXCAFDoc_NoteCommentDriver::Paste(const BinObjMgt_Persistent& theSource,
|
|
||||||
const Handle(TDF_Attribute)& theTarget,
|
|
||||||
BinObjMgt_RRelocationTable& theRelocTable) const
|
|
||||||
{
|
|
||||||
if (!BinMXCAFDoc_NoteDriver::Paste(theSource, theTarget, theRelocTable))
|
|
||||||
return Standard_False;
|
|
||||||
|
|
||||||
Handle(XCAFDoc_NoteComment) aNote = Handle(XCAFDoc_NoteComment)::DownCast(theTarget);
|
|
||||||
if (aNote.IsNull())
|
|
||||||
return Standard_False;
|
|
||||||
|
|
||||||
TCollection_ExtendedString aComment;
|
|
||||||
if (!(theSource >> aComment))
|
|
||||||
return Standard_False;
|
|
||||||
|
|
||||||
aNote->Set(aComment);
|
|
||||||
|
|
||||||
return Standard_True;
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function :
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void BinMXCAFDoc_NoteCommentDriver::Paste(const Handle(TDF_Attribute)& theSource,
|
|
||||||
BinObjMgt_Persistent& theTarget,
|
|
||||||
BinObjMgt_SRelocationTable& theRelocTable) const
|
|
||||||
{
|
|
||||||
BinMXCAFDoc_NoteDriver::Paste(theSource, theTarget, theRelocTable);
|
|
||||||
|
|
||||||
Handle(XCAFDoc_NoteComment) aNote = Handle(XCAFDoc_NoteComment)::DownCast(theSource);
|
|
||||||
if (!aNote.IsNull())
|
|
||||||
theTarget << aNote->Comment();
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function :
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
BinMXCAFDoc_NoteCommentDriver::BinMXCAFDoc_NoteCommentDriver(const Handle(Message_Messenger)& theMsgDriver,
|
|
||||||
Standard_CString theName)
|
|
||||||
: BinMXCAFDoc_NoteDriver(theMsgDriver, theName)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
@@ -1,49 +0,0 @@
|
|||||||
// Created on: 2017-02-13
|
|
||||||
// Created by: Sergey NIKONOV
|
|
||||||
// Copyright (c) 2005-2017 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 _BinMXCAFDoc_NoteCommentDriver_HeaderFile
|
|
||||||
#define _BinMXCAFDoc_NoteCommentDriver_HeaderFile
|
|
||||||
|
|
||||||
#include <BinMXCAFDoc_NoteDriver.hxx>
|
|
||||||
|
|
||||||
class BinMXCAFDoc_NoteCommentDriver;
|
|
||||||
DEFINE_STANDARD_HANDLE(BinMXCAFDoc_NoteCommentDriver, BinMXCAFDoc_NoteDriver)
|
|
||||||
|
|
||||||
class BinMXCAFDoc_NoteCommentDriver : public BinMXCAFDoc_NoteDriver
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
Standard_EXPORT BinMXCAFDoc_NoteCommentDriver(const Handle(Message_Messenger)& theMsgDriver);
|
|
||||||
|
|
||||||
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
|
|
||||||
|
|
||||||
Standard_EXPORT Standard_Boolean Paste (const BinObjMgt_Persistent& theSource,
|
|
||||||
const Handle(TDF_Attribute)& theTarget,
|
|
||||||
BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
|
||||||
|
|
||||||
Standard_EXPORT void Paste (const Handle(TDF_Attribute)& theSource,
|
|
||||||
BinObjMgt_Persistent& theTarget,
|
|
||||||
BinObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
|
||||||
|
|
||||||
DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_NoteCommentDriver, BinMXCAFDoc_NoteDriver)
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
BinMXCAFDoc_NoteCommentDriver(const Handle(Message_Messenger)& theMsgDriver,
|
|
||||||
Standard_CString theName);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // _BinMXCAFDoc_NoteCommentDriver_HeaderFile
|
|
@@ -22,6 +22,24 @@
|
|||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NoteDriver, BinMDF_ADriver)
|
IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NoteDriver, BinMDF_ADriver)
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
BinMXCAFDoc_NoteDriver::BinMXCAFDoc_NoteDriver(const Handle(Message_Messenger)& theMsgDriver)
|
||||||
|
: BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_Note)->Name())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Handle(TDF_Attribute) BinMXCAFDoc_NoteDriver::NewEmpty() const
|
||||||
|
{
|
||||||
|
return new XCAFDoc_Note();
|
||||||
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function :
|
//function :
|
||||||
//purpose :
|
//purpose :
|
||||||
|
@@ -35,6 +35,10 @@ class BinMXCAFDoc_NoteDriver : public BinMDF_ADriver
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
Standard_EXPORT BinMXCAFDoc_NoteDriver(const Handle(Message_Messenger)& theMsgDriver);
|
||||||
|
|
||||||
|
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
|
||||||
|
|
||||||
Standard_EXPORT Standard_Boolean Paste (const BinObjMgt_Persistent& theSource,
|
Standard_EXPORT Standard_Boolean Paste (const BinObjMgt_Persistent& theSource,
|
||||||
const Handle(TDF_Attribute)& theTarget,
|
const Handle(TDF_Attribute)& theTarget,
|
||||||
BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
@@ -39,10 +39,6 @@ BinMXCAFDoc_NoteDriver.cxx
|
|||||||
BinMXCAFDoc_NoteDriver.hxx
|
BinMXCAFDoc_NoteDriver.hxx
|
||||||
BinMXCAFDoc_NoteBalloonDriver.cxx
|
BinMXCAFDoc_NoteBalloonDriver.cxx
|
||||||
BinMXCAFDoc_NoteBalloonDriver.hxx
|
BinMXCAFDoc_NoteBalloonDriver.hxx
|
||||||
BinMXCAFDoc_NoteCommentDriver.cxx
|
|
||||||
BinMXCAFDoc_NoteCommentDriver.hxx
|
|
||||||
BinMXCAFDoc_NoteBinDataDriver.cxx
|
|
||||||
BinMXCAFDoc_NoteBinDataDriver.hxx
|
|
||||||
BinMXCAFDoc_NotesToolDriver.cxx
|
BinMXCAFDoc_NotesToolDriver.cxx
|
||||||
BinMXCAFDoc_NotesToolDriver.hxx
|
BinMXCAFDoc_NotesToolDriver.hxx
|
||||||
BinMXCAFDoc_ShapeToolDriver.cxx
|
BinMXCAFDoc_ShapeToolDriver.cxx
|
||||||
@@ -53,3 +49,7 @@ BinMXCAFDoc_ViewToolDriver.cxx
|
|||||||
BinMXCAFDoc_ViewToolDriver.hxx
|
BinMXCAFDoc_ViewToolDriver.hxx
|
||||||
BinMXCAFDoc_VolumeDriver.cxx
|
BinMXCAFDoc_VolumeDriver.cxx
|
||||||
BinMXCAFDoc_VolumeDriver.hxx
|
BinMXCAFDoc_VolumeDriver.hxx
|
||||||
|
BinMXCAFDoc_AnimationDriver.cxx
|
||||||
|
BinMXCAFDoc_AnimationDriver.hxx
|
||||||
|
BinMXCAFDoc_AnimationToolDriver.cxx
|
||||||
|
BinMXCAFDoc_AnimationToolDriver.hxx
|
||||||
|
@@ -20,7 +20,10 @@
|
|||||||
#include <gp_Pln.hxx>
|
#include <gp_Pln.hxx>
|
||||||
#include <gp_Pnt.hxx>
|
#include <gp_Pnt.hxx>
|
||||||
#include <gp_Trsf.hxx>
|
#include <gp_Trsf.hxx>
|
||||||
|
#include <NCollection_List.hxx>
|
||||||
#include <Standard_ConstructionError.hxx>
|
#include <Standard_ConstructionError.hxx>
|
||||||
|
#include <TCollection.hxx>
|
||||||
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
|
||||||
// set the flag to one
|
// set the flag to one
|
||||||
#define ClearVoidFlag() ( Flags &= ~VoidMask )
|
#define ClearVoidFlag() ( Flags &= ~VoidMask )
|
||||||
@@ -43,6 +46,19 @@ Bnd_Box::Bnd_Box()
|
|||||||
SetVoid();
|
SetVoid();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Bnd_Box
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Bnd_Box::Bnd_Box (const Standard_Real theXmin, const Standard_Real theYmin, const Standard_Real theZmin,
|
||||||
|
const Standard_Real theXmax, const Standard_Real theYmax, const Standard_Real theZmax)
|
||||||
|
: Gap (0.0)
|
||||||
|
{
|
||||||
|
SetVoid();
|
||||||
|
Update (theXmin, theYmin, theZmin, theXmax, theYmax, theZmax);
|
||||||
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : Set
|
//function : Set
|
||||||
//purpose :
|
//purpose :
|
||||||
@@ -957,3 +973,71 @@ void Bnd_Box::Dump () const
|
|||||||
std::cout << "\n Gap : " << Gap;
|
std::cout << "\n Gap : " << Gap;
|
||||||
std::cout << "\n";
|
std::cout << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : PointsSeparator
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
TCollection_AsciiString PointsSeparator()
|
||||||
|
{
|
||||||
|
return " - ";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const TCollection_AsciiString Bnd_Box_ClassName = "Bnd_Box";
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Dump
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
void Bnd_Box::Dump (Standard_OStream& OS) const
|
||||||
|
{
|
||||||
|
DUMP_START_KEY (OS, Bnd_Box_ClassName);
|
||||||
|
|
||||||
|
DUMP_VALUES (OS, "Xmin", Xmin);
|
||||||
|
DUMP_VALUES (OS, "Ymin", Ymin);
|
||||||
|
DUMP_VALUES (OS, "Zmin", Zmin);
|
||||||
|
DUMP_VALUES (OS, "Xmax", Xmax);
|
||||||
|
DUMP_VALUES (OS, "Ymax", Ymax);
|
||||||
|
DUMP_VALUES (OS, "Zmax", Zmax);
|
||||||
|
DUMP_VALUES (OS, "Gap", Gap);
|
||||||
|
DUMP_VALUES (OS, "Flags", Flags);
|
||||||
|
|
||||||
|
DUMP_STOP_KEY (OS, Bnd_Box_ClassName);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Init
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Standard_Boolean Bnd_Box::Init (const Standard_SStream& OS)
|
||||||
|
{
|
||||||
|
NCollection_IndexedDataMap<TCollection_AsciiString, TCollection_AsciiString> aStreamValues;
|
||||||
|
TCollection_AsciiString aKey;
|
||||||
|
TCollection::Split (OS, aStreamValues, aKey);
|
||||||
|
|
||||||
|
TCollection_AsciiString aXmin, anYmin, aZmin, aXmax, anYmax, aZmax, aGap, aFlags;
|
||||||
|
if (!aStreamValues.FindFromKey ("Xmin", aXmin) ||
|
||||||
|
!aStreamValues.FindFromKey ("Ymin", anYmin) ||
|
||||||
|
!aStreamValues.FindFromKey ("Zmin", aZmin) ||
|
||||||
|
!aStreamValues.FindFromKey ("Xmax", aXmax) ||
|
||||||
|
!aStreamValues.FindFromKey ("Ymax", anYmax) ||
|
||||||
|
!aStreamValues.FindFromKey ("Zmax", aZmax) ||
|
||||||
|
!aStreamValues.FindFromKey ("Gap", aGap) ||
|
||||||
|
!aStreamValues.FindFromKey ("Flags", aFlags))
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
Xmin = aXmin.RealValue();
|
||||||
|
Ymin = anYmin.RealValue();
|
||||||
|
Zmin = aZmin.RealValue();
|
||||||
|
Xmax = aXmax.RealValue();
|
||||||
|
Ymax = anYmax.RealValue();
|
||||||
|
Zmax = aZmax.RealValue();
|
||||||
|
|
||||||
|
Gap = aGap.RealValue();
|
||||||
|
Flags = aFlags.IntegerValue();
|
||||||
|
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
@@ -24,6 +24,10 @@
|
|||||||
#include <Standard_Real.hxx>
|
#include <Standard_Real.hxx>
|
||||||
#include <Standard_Integer.hxx>
|
#include <Standard_Integer.hxx>
|
||||||
#include <Standard_Boolean.hxx>
|
#include <Standard_Boolean.hxx>
|
||||||
|
|
||||||
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
#include <gp_XYZ.hxx>
|
||||||
|
|
||||||
class Standard_ConstructionError;
|
class Standard_ConstructionError;
|
||||||
class gp_Pnt;
|
class gp_Pnt;
|
||||||
class gp_Dir;
|
class gp_Dir;
|
||||||
@@ -69,6 +73,14 @@ public:
|
|||||||
//! The constructed box is qualified Void. Its gap is null.
|
//! The constructed box is qualified Void. Its gap is null.
|
||||||
Standard_EXPORT Bnd_Box();
|
Standard_EXPORT Bnd_Box();
|
||||||
|
|
||||||
|
//! Creates a bounding box, it contains:
|
||||||
|
//! - interval [ aXmin,aXmax ] in the "X Direction",
|
||||||
|
//! - interval [ aYmin,aYmax ] in the "Y Direction",
|
||||||
|
//! - interval [ aZmin,aZmax ] in the "Z Direction";
|
||||||
|
//! The constructed box is qualified Void. Its gap is null.
|
||||||
|
Standard_EXPORT Bnd_Box (const Standard_Real aXmin, const Standard_Real aYmin, const Standard_Real aZmin,
|
||||||
|
const Standard_Real aXmax, const Standard_Real aYmax, const Standard_Real aZmax);
|
||||||
|
|
||||||
//! Sets this bounding box so that it covers the whole of 3D space.
|
//! Sets this bounding box so that it covers the whole of 3D space.
|
||||||
//! It is infinitely long in all directions.
|
//! It is infinitely long in all directions.
|
||||||
void SetWhole() { Flags = WholeMask; }
|
void SetWhole() { Flags = WholeMask; }
|
||||||
@@ -296,6 +308,20 @@ public:
|
|||||||
&& Xmax >= Xmin;
|
&& Xmax >= Xmin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Dumps the content of me on the stream <OS>.
|
||||||
|
Standard_EXPORT void Dump (Standard_OStream& OS) const;
|
||||||
|
|
||||||
|
//! Dumps the content of me on the stream <OS>.
|
||||||
|
Standard_EXPORT Standard_Boolean Init (const Standard_SStream& OS);
|
||||||
|
|
||||||
|
//! Covers bounding box into string in format: (Xmin, Ymin, Zmin) - (Xmax, Ymax, Zmax)
|
||||||
|
//! \return the string value
|
||||||
|
Standard_EXPORT TCollection_AsciiString ToString() const { return ""; }
|
||||||
|
|
||||||
|
//! Converts text value into parameters if possible, the string format is: (Xmin, Ymin, Zmin) - (Xmax, Ymax, Zmax)
|
||||||
|
//! \return true if conversion is done
|
||||||
|
Standard_EXPORT Standard_Boolean FromString (const TCollection_AsciiString& theValue) { (void)theValue; return Standard_False; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
//! Bit flags.
|
//! Bit flags.
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
#include <NCollection_Array1.hxx>
|
#include <NCollection_Array1.hxx>
|
||||||
#include <Precision.hxx>
|
#include <Precision.hxx>
|
||||||
|
#include <TCollection.hxx>
|
||||||
#include <TColStd_Array1OfReal.hxx>
|
#include <TColStd_Array1OfReal.hxx>
|
||||||
|
|
||||||
//! Auxiliary class to select from the points stored in
|
//! Auxiliary class to select from the points stored in
|
||||||
@@ -992,3 +993,78 @@ void Bnd_OBB::Add(const Bnd_OBB& theOther)
|
|||||||
ReBuild(TColgp_Array1OfPnt(aList[0], 0, 15));
|
ReBuild(TColgp_Array1OfPnt(aList[0], 0, 15));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TCollection_AsciiString Bnd_OBB_ClassName = "Bnd_OBB";
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Dump
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
void Bnd_OBB::Dump (Standard_OStream& OS) const
|
||||||
|
{
|
||||||
|
DUMP_START_KEY (OS, Bnd_OBB_ClassName);
|
||||||
|
{
|
||||||
|
Standard_SStream aTmpStream;
|
||||||
|
myCenter.Dump (aTmpStream);
|
||||||
|
DUMP_VALUES (OS, "Center", TCollection::ToDumpString (aTmpStream));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
Standard_SStream aTmpStream;
|
||||||
|
myAxes[0].Dump (aTmpStream);
|
||||||
|
DUMP_VALUES (OS, "XAxis", TCollection::ToDumpString (aTmpStream));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
Standard_SStream aTmpStream;
|
||||||
|
myAxes[1].Dump (aTmpStream);
|
||||||
|
DUMP_VALUES (OS, "YAxis", TCollection::ToDumpString (aTmpStream));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
Standard_SStream aTmpStream;
|
||||||
|
myAxes[2].Dump (aTmpStream);
|
||||||
|
DUMP_VALUES (OS, "ZAxis", TCollection::ToDumpString (aTmpStream));
|
||||||
|
}
|
||||||
|
|
||||||
|
DUMP_VALUES (OS, "XHSize", XHSize());
|
||||||
|
DUMP_VALUES (OS, "YHSize", YHSize());
|
||||||
|
DUMP_VALUES (OS, "ZHSize", ZHSize());
|
||||||
|
DUMP_VALUES (OS, "IsAABox", myIsAABox);
|
||||||
|
|
||||||
|
DUMP_STOP_KEY (OS, Bnd_OBB_ClassName);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Init
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Standard_Boolean Bnd_OBB::Init (const Standard_SStream& /*OS*/)
|
||||||
|
{
|
||||||
|
//NCollection_DataMap<TCollection_AsciiString, TCollection_AsciiString> aStreamValues;
|
||||||
|
//TCollection::Split (OS, aStreamValues, aKey);
|
||||||
|
|
||||||
|
//TCollection_AsciiString anXYZValue;
|
||||||
|
//if (aStreamValues.Size() == 1)
|
||||||
|
//{
|
||||||
|
// NCollection_DataMap<TCollection_AsciiString, TCollection_AsciiString>::Iterator anIterator (aStreamValues);
|
||||||
|
// TCollection_AsciiString aValueStr = anIterator.Value();
|
||||||
|
// Standard_Integer aPosition = aValueStr.Search (Bnd_Box_ClassName + TCollection::ClassNameSeparator());
|
||||||
|
// if (aPosition < 1)
|
||||||
|
// return Standard_False;
|
||||||
|
// anXYZValue = aValueStr.Split (aPosition);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//NCollection_Vector<Standard_Real> aValues;
|
||||||
|
//if (!TCollection::SplitReal (anXYZValue, TCollection::VectorSeparator(), aValues))
|
||||||
|
// return Standard_False;
|
||||||
|
|
||||||
|
//if (aValues.Size() != 8)
|
||||||
|
// return Standard_False;
|
||||||
|
|
||||||
|
//Update (aValues.Value (1), aValues.Value (2), aValues.Value (3), aValues.Value (4), aValues.Value (5), aValues.Value (6));
|
||||||
|
//Gap = aValues.Value (7);
|
||||||
|
//Flags = (Standard_Integer)aValues.Value (8);
|
||||||
|
|
||||||
|
//return Standard_True;
|
||||||
|
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
#include <Standard_Handle.hxx>
|
#include <Standard_Handle.hxx>
|
||||||
#include <Standard_Real.hxx>
|
#include <Standard_Real.hxx>
|
||||||
#include <Standard_Boolean.hxx>
|
#include <Standard_Boolean.hxx>
|
||||||
|
#include <Standard_OStream.hxx>
|
||||||
|
|
||||||
#include <Bnd_Box.hxx>
|
#include <Bnd_Box.hxx>
|
||||||
#include <gp_Ax3.hxx>
|
#include <gp_Ax3.hxx>
|
||||||
@@ -281,6 +282,20 @@ public:
|
|||||||
//! (which it was created from) and theP.
|
//! (which it was created from) and theP.
|
||||||
Standard_EXPORT void Add(const gp_Pnt& theP);
|
Standard_EXPORT void Add(const gp_Pnt& theP);
|
||||||
|
|
||||||
|
//! Dumps the content of me on the stream <OS>.
|
||||||
|
Standard_EXPORT Standard_Boolean Init (const Standard_SStream& OS);
|
||||||
|
|
||||||
|
//! Dumps the content of me on the stream <OS>.
|
||||||
|
Standard_EXPORT void Dump (Standard_OStream& OS) const;
|
||||||
|
|
||||||
|
//! Covers bounding box into string in format: (Xmin, Ymin, Zmin) - (Xmax, Ymax, Zmax)
|
||||||
|
//! \return the string value
|
||||||
|
Standard_EXPORT TCollection_AsciiString ToString() const { return ""; }
|
||||||
|
|
||||||
|
//! Converts text value into parameters if possible, the string format is: (Xmin, Ymin, Zmin) - (Xmax, Ymax, Zmax)
|
||||||
|
//! \return true if conversion is done
|
||||||
|
Standard_EXPORT Standard_Boolean FromString (const TCollection_AsciiString& theValue) { (void)theValue; return Standard_False; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
void ProcessOnePoint(const gp_Pnt& theP)
|
void ProcessOnePoint(const gp_Pnt& theP)
|
||||||
|
@@ -174,4 +174,13 @@ void Bnd_Range::Split(const Standard_Real theVal,
|
|||||||
{
|
{
|
||||||
theList.Append(Bnd_Range(aValPrev, myLast));
|
theList.Append(Bnd_Range(aValPrev, myLast));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : ToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
TCollection_AsciiString Bnd_Range::ToString() const
|
||||||
|
{
|
||||||
|
return TCollection_AsciiString ("[") + myFirst + ", " + myLast + "]";
|
||||||
|
}
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include <Standard_Real.hxx>
|
#include <Standard_Real.hxx>
|
||||||
#include <Standard_ConstructionError.hxx>
|
#include <Standard_ConstructionError.hxx>
|
||||||
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
|
||||||
#include <NCollection_List.hxx>
|
#include <NCollection_List.hxx>
|
||||||
|
|
||||||
@@ -256,6 +257,10 @@ public:
|
|||||||
return ((myFirst == theOther.myFirst) && (myLast == theOther.myLast));
|
return ((myFirst == theOther.myFirst) && (myLast == theOther.myLast));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Covers point into string in format: [myFirst, myLast]
|
||||||
|
//! \return the string value
|
||||||
|
Standard_EXPORT TCollection_AsciiString ToString() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
Standard_Real myFirst; //!< Start of range
|
Standard_Real myFirst; //!< Start of range
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
Font.cxx
|
||||||
|
Font.hxx
|
||||||
Font_BRepFont.cxx
|
Font_BRepFont.cxx
|
||||||
Font_BRepFont.hxx
|
Font_BRepFont.hxx
|
||||||
Font_BRepTextBuilder.cxx
|
Font_BRepTextBuilder.cxx
|
||||||
|
56
src/Font/Font.cxx
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
// Copyright (c) 2018 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.
|
||||||
|
|
||||||
|
#include <Font.hxx>
|
||||||
|
|
||||||
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
static Standard_CString Font_Table_PrintFontAspect[5] =
|
||||||
|
{
|
||||||
|
"UNDEFINED", "REGULAR", "BOLD", "ITALIC", "BOLD_ITALIC"
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : FontAspectToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Font::FontAspectToString (Font_FontAspect theType)
|
||||||
|
{
|
||||||
|
return Font_Table_PrintFontAspect[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : FontAspectFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Font::FontAspectFromString (Standard_CString theTypeString,
|
||||||
|
Font_FontAspect& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = 0; aTypeIter <= Font_FA_BoldItalic; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Font_Table_PrintFontAspect[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Font_FontAspect (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
54
src/Font/Font.hxx
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
// Copyright (c) 2018 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 _Font_HeaderFile
|
||||||
|
#define _Font_HeaderFile
|
||||||
|
|
||||||
|
#include <Font_FontAspect.hxx>
|
||||||
|
#include <Standard_DefineAlloc.hxx>
|
||||||
|
#include <Standard_Macro.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
|
||||||
|
//! Provides methods to cast enumerations of package to string value
|
||||||
|
class Font
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
DEFINE_STANDARD_ALLOC
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString FontAspectToString (Font_FontAspect theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Aspect_TOFM_BOTH_SIDE if string identifier is invalid
|
||||||
|
static Font_FontAspect FontAspectFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Font_FontAspect aType = Font_FA_Undefined;
|
||||||
|
FontAspectFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean FontAspectFromString (const Standard_CString theTypeString,
|
||||||
|
Font_FontAspect& theType);
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _Font_HeaderFile
|
@@ -15,12 +15,14 @@
|
|||||||
|
|
||||||
#include <Font_BRepTextBuilder.hxx>
|
#include <Font_BRepTextBuilder.hxx>
|
||||||
|
|
||||||
|
#include <Font_TextFormatter.hxx>
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
// Function : Perfrom
|
// Function : Perfrom
|
||||||
// Purpose :
|
// Purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
TopoDS_Shape Font_BRepTextBuilder::Perform (Font_BRepFont& theFont,
|
TopoDS_Shape Font_BRepTextBuilder::Perform (Font_BRepFont& theFont,
|
||||||
const Font_TextFormatter& theFormatter,
|
const Handle(Font_TextFormatter)& theFormatter,
|
||||||
const gp_Ax3& thePenLoc)
|
const gp_Ax3& thePenLoc)
|
||||||
{
|
{
|
||||||
gp_Trsf aTrsf;
|
gp_Trsf aTrsf;
|
||||||
@@ -31,34 +33,20 @@ TopoDS_Shape Font_BRepTextBuilder::Perform (Font_BRepFont& theFont,
|
|||||||
|
|
||||||
myBuilder.MakeCompound (aResult);
|
myBuilder.MakeCompound (aResult);
|
||||||
|
|
||||||
Standard_Integer aSymbolCounter = 0;
|
Standard_Real aScaleUnits = theFont.Scale();
|
||||||
Standard_Real aScaleUnits = theFont.Scale();
|
for (Font_TextFormatter::Iterator aFormatterIt (*theFormatter, Font_TextFormatter::IterationFilter_ExcludeInvisible);
|
||||||
for (NCollection_Utf8Iter anIter = theFormatter.String().Iterator(); *anIter != 0; ++anIter)
|
aFormatterIt .More(); aFormatterIt .Next())
|
||||||
{
|
{
|
||||||
const Standard_Utf32Char aCharCurr = *anIter;
|
const NCollection_Vec2<Standard_ShortReal>& aCorner = theFormatter->BottomLeft (aFormatterIt.SymbolPosition());
|
||||||
if (aCharCurr == '\x0D' // CR (carriage return)
|
|
||||||
|| aCharCurr == '\a' // BEL (alarm)
|
|
||||||
|| aCharCurr == '\f' // FF (form feed) NP (new page)
|
|
||||||
|| aCharCurr == '\b' // BS (backspace)
|
|
||||||
|| aCharCurr == '\v' // VT (vertical tab)
|
|
||||||
|| aCharCurr == ' '
|
|
||||||
|| aCharCurr == '\t'
|
|
||||||
|| aCharCurr == '\n')
|
|
||||||
{
|
|
||||||
continue; // skip unsupported carriage control codes
|
|
||||||
}
|
|
||||||
|
|
||||||
const NCollection_Vec2<Standard_ShortReal>& aCorner = theFormatter.TopLeft (aSymbolCounter);
|
|
||||||
aPen.SetCoord (aCorner.x() * aScaleUnits, aCorner.y() * aScaleUnits, 0.0);
|
aPen.SetCoord (aCorner.x() * aScaleUnits, aCorner.y() * aScaleUnits, 0.0);
|
||||||
aGlyphShape = theFont.RenderGlyph (aCharCurr);
|
aGlyphShape = theFont.RenderGlyph (aFormatterIt.Symbol());
|
||||||
if (!aGlyphShape.IsNull())
|
if (!aGlyphShape.IsNull())
|
||||||
{
|
{
|
||||||
aTrsf.SetTranslation (gp_Vec (aPen));
|
aTrsf.SetTranslation (gp_Vec (aPen));
|
||||||
aGlyphShape.Move (aTrsf);
|
aGlyphShape.Move (aTrsf);
|
||||||
myBuilder.Add (aResult, aGlyphShape);
|
myBuilder.Add (aResult, aGlyphShape);
|
||||||
}
|
}
|
||||||
|
|
||||||
++aSymbolCounter;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
aTrsf.SetTransformation (thePenLoc, gp_Ax3 (gp::XOY()));
|
aTrsf.SetTransformation (thePenLoc, gp_Ax3 (gp::XOY()));
|
||||||
@@ -77,13 +65,13 @@ TopoDS_Shape Font_BRepTextBuilder::Perform (Font_BRepFont&
|
|||||||
const Graphic3d_HorizontalTextAlignment theHAlign,
|
const Graphic3d_HorizontalTextAlignment theHAlign,
|
||||||
const Graphic3d_VerticalTextAlignment theVAlign)
|
const Graphic3d_VerticalTextAlignment theVAlign)
|
||||||
{
|
{
|
||||||
Font_TextFormatter aFormatter;
|
Handle(Font_TextFormatter) aFormatter = new Font_TextFormatter();
|
||||||
|
|
||||||
aFormatter.Reset();
|
aFormatter->Reset();
|
||||||
aFormatter.SetupAlignment (theHAlign, theVAlign);
|
aFormatter->SetupAlignment (theHAlign, theVAlign);
|
||||||
|
|
||||||
aFormatter.Append (theString, *(reinterpret_cast<Font_FTFont*> (&theFont)));
|
aFormatter->Append (theString, *(reinterpret_cast<Font_FTFont*> (&theFont)));
|
||||||
aFormatter.Format();
|
aFormatter->Format();
|
||||||
|
|
||||||
return Perform (theFont, aFormatter, thePenLoc);
|
return Perform (theFont, aFormatter, thePenLoc);
|
||||||
}
|
}
|
||||||
|
@@ -17,9 +17,10 @@
|
|||||||
#define Font_BRepTextBuilder_Header
|
#define Font_BRepTextBuilder_Header
|
||||||
|
|
||||||
#include <Font_BRepFont.hxx>
|
#include <Font_BRepFont.hxx>
|
||||||
#include <Font_TextFormatter.hxx>
|
|
||||||
#include <gp_Ax3.hxx>
|
#include <gp_Ax3.hxx>
|
||||||
|
|
||||||
|
class Font_TextFormatter;
|
||||||
|
|
||||||
//! Represents class for applying text formatting.
|
//! Represents class for applying text formatting.
|
||||||
class Font_BRepTextBuilder
|
class Font_BRepTextBuilder
|
||||||
{
|
{
|
||||||
@@ -30,7 +31,7 @@ public:
|
|||||||
//! @param theFormatter formatter which defines alignment for the text
|
//! @param theFormatter formatter which defines alignment for the text
|
||||||
//! @return result shape with pen transformation applied as shape location
|
//! @return result shape with pen transformation applied as shape location
|
||||||
Standard_EXPORT TopoDS_Shape Perform (Font_BRepFont& theFont,
|
Standard_EXPORT TopoDS_Shape Perform (Font_BRepFont& theFont,
|
||||||
const Font_TextFormatter& theFormatter,
|
const Handle(Font_TextFormatter)& theFormatter,
|
||||||
const gp_Ax3& thePenLoc = gp_Ax3());
|
const gp_Ax3& thePenLoc = gp_Ax3());
|
||||||
//! Render text as BRep shape.
|
//! Render text as BRep shape.
|
||||||
//! @param theString text in UTF-8 encoding
|
//! @param theString text in UTF-8 encoding
|
||||||
|
@@ -17,6 +17,10 @@
|
|||||||
|
|
||||||
#include <Font_FTFont.hxx>
|
#include <Font_FTFont.hxx>
|
||||||
|
|
||||||
|
#include <Precision.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT (Font_TextFormatter, Standard_Transient)
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
typedef NCollection_Vec2<Standard_ShortReal> Vec2f;
|
typedef NCollection_Vec2<Standard_ShortReal> Vec2f;
|
||||||
@@ -55,16 +59,17 @@ Font_TextFormatter::Font_TextFormatter()
|
|||||||
: myAlignX (Graphic3d_HTA_LEFT),
|
: myAlignX (Graphic3d_HTA_LEFT),
|
||||||
myAlignY (Graphic3d_VTA_TOP),
|
myAlignY (Graphic3d_VTA_TOP),
|
||||||
myTabSize (8),
|
myTabSize (8),
|
||||||
|
myWrappingWidth (0.0f),
|
||||||
|
myLastSymbolWidth (0.0f),
|
||||||
|
myMaxSymbolWidth (0.0f),
|
||||||
//
|
//
|
||||||
myPen (0.0f, 0.0f),
|
myPen (0.0f, 0.0f),
|
||||||
myRectsNb (0),
|
|
||||||
myLineSpacing (0.0f),
|
myLineSpacing (0.0f),
|
||||||
myAscender (0.0f),
|
myAscender (0.0f),
|
||||||
myIsFormatted (false),
|
myIsFormatted (false),
|
||||||
//
|
//
|
||||||
myLinesNb (0),
|
myLinesNb (0),
|
||||||
myRectLineStart (0),
|
myRectLineStart (0),
|
||||||
myRectWordStart (0),
|
|
||||||
myNewLineNb(0),
|
myNewLineNb(0),
|
||||||
myPenCurrLine (0.0f),
|
myPenCurrLine (0.0f),
|
||||||
myBndTop (0.0f),
|
myBndTop (0.0f),
|
||||||
@@ -94,10 +99,12 @@ void Font_TextFormatter::Reset()
|
|||||||
myIsFormatted = false;
|
myIsFormatted = false;
|
||||||
myString.Clear();
|
myString.Clear();
|
||||||
myPen.x() = myPen.y() = 0.0f;
|
myPen.x() = myPen.y() = 0.0f;
|
||||||
myRectsNb = 0;
|
|
||||||
myLineSpacing = myAscender = 0.0f;
|
myLineSpacing = myAscender = 0.0f;
|
||||||
myCorners.Clear();
|
myCorners.Clear();
|
||||||
myNewLines.Clear();
|
myNewLines.Clear();
|
||||||
|
|
||||||
|
myLastSymbolWidth = 0.0f;
|
||||||
|
myMaxSymbolWidth = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -119,16 +126,14 @@ void Font_TextFormatter::Append (const NCollection_String& theString,
|
|||||||
int aSymbolsCounter = 0; // special counter to process tabulation symbols
|
int aSymbolsCounter = 0; // special counter to process tabulation symbols
|
||||||
|
|
||||||
// first pass - render all symbols using associated font on single ZERO baseline
|
// first pass - render all symbols using associated font on single ZERO baseline
|
||||||
for (NCollection_Utf8Iter anIter = theString.Iterator(); *anIter != 0;)
|
Standard_Utf32Char aCharThis;
|
||||||
|
for (Font_TextFormatter::Iterator aFormatterIt (*this); aFormatterIt .More(); aFormatterIt .Next())
|
||||||
{
|
{
|
||||||
const Standard_Utf32Char aCharThis = *anIter;
|
aCharThis = aFormatterIt.Symbol();
|
||||||
const Standard_Utf32Char aCharNext = *++anIter;
|
const Standard_Utf32Char aCharNext = aFormatterIt.SymbolNext();
|
||||||
|
|
||||||
if (aCharThis == '\x0D' // CR (carriage return)
|
Standard_ShortReal anAdvanceX = 0;
|
||||||
|| aCharThis == '\a' // BEL (alarm)
|
if (IsCommandSymbol (aCharThis))
|
||||||
|| aCharThis == '\f' // FF (form feed) NP (new page)
|
|
||||||
|| aCharThis == '\b' // BS (backspace)
|
|
||||||
|| aCharThis == '\v') // VT (vertical tab)
|
|
||||||
{
|
{
|
||||||
continue; // skip unsupported carriage control codes
|
continue; // skip unsupported carriage control codes
|
||||||
}
|
}
|
||||||
@@ -136,79 +141,66 @@ void Font_TextFormatter::Append (const NCollection_String& theString,
|
|||||||
{
|
{
|
||||||
aSymbolsCounter = 0;
|
aSymbolsCounter = 0;
|
||||||
myNewLines.Append (myPen.x());
|
myNewLines.Append (myPen.x());
|
||||||
continue; // will be processed on second pass
|
anAdvanceX = 0; // the symbol has null width
|
||||||
}
|
}
|
||||||
else if (aCharThis == ' ')
|
else if (aCharThis == ' ')
|
||||||
{
|
{
|
||||||
++aSymbolsCounter;
|
++aSymbolsCounter;
|
||||||
myPen.x() += theFont.AdvanceX (' ', aCharNext);
|
anAdvanceX = theFont.AdvanceX (' ', aCharNext);
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
else if (aCharThis == '\t')
|
else if (aCharThis == '\t')
|
||||||
{
|
{
|
||||||
const Standard_Integer aSpacesNum = (myTabSize - (aSymbolsCounter - 1) % myTabSize);
|
const Standard_Integer aSpacesNum = (myTabSize - (aSymbolsCounter - 1) % myTabSize);
|
||||||
myPen.x() += theFont.AdvanceX (' ', aCharNext) * Standard_ShortReal(aSpacesNum);
|
anAdvanceX = theFont.AdvanceX (' ', aCharNext) * Standard_ShortReal(aSpacesNum);
|
||||||
aSymbolsCounter += aSpacesNum;
|
aSymbolsCounter += aSpacesNum;
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
anAdvanceX = theFont.AdvanceX (aCharThis, aCharNext);
|
||||||
|
|
||||||
++aSymbolsCounter;
|
++aSymbolsCounter;
|
||||||
|
|
||||||
myCorners.Append (myPen);
|
myCorners.Append (myPen);
|
||||||
|
myPen.x() += anAdvanceX;
|
||||||
myPen.x() += theFont.AdvanceX (aCharThis, aCharNext);
|
myMaxSymbolWidth = Max (myMaxSymbolWidth, anAdvanceX);
|
||||||
|
|
||||||
++myRectsNb;
|
|
||||||
}
|
}
|
||||||
|
myLastSymbolWidth = myPen.x() - myCorners.Last().x();
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
// function : newLine
|
// function : newLine
|
||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
void Font_TextFormatter::newLine (const Standard_Integer theLastRect)
|
void Font_TextFormatter::newLine (const Standard_Integer theLastRect,
|
||||||
|
const Standard_ShortReal theMaxLineWidth)
|
||||||
{
|
{
|
||||||
if (myRectLineStart >= myRectsNb)
|
Standard_Integer aFirstCornerId = myRectLineStart;
|
||||||
|
Standard_Integer aLastCornerId = theLastRect;
|
||||||
|
|
||||||
|
if (aFirstCornerId >= myCorners.Length())
|
||||||
{
|
{
|
||||||
++myLinesNb;
|
++myLinesNb;
|
||||||
myPenCurrLine -= myLineSpacing;
|
myPenCurrLine -= myLineSpacing;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Standard_ShortReal aXMin = BottomLeft (aFirstCornerId).x();
|
||||||
|
Font_Rect aBndBox;
|
||||||
|
BndBox (aLastCornerId, aBndBox);
|
||||||
|
Standard_ShortReal aXMax = aBndBox.Right;
|
||||||
|
|
||||||
myMoveVec.y() = myPenCurrLine;
|
myMoveVec.y() = myPenCurrLine;
|
||||||
switch (myAlignX)
|
switch (myAlignX)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case Graphic3d_HTA_LEFT:
|
case Graphic3d_HTA_LEFT: myMoveVec.x() = -aXMin; break;
|
||||||
{
|
case Graphic3d_HTA_RIGHT: myMoveVec.x() = -aXMin + (theMaxLineWidth - (aXMax - aXMin)) - theMaxLineWidth; break;
|
||||||
myMoveVec.x() = (myNewLineNb > 0) ? -myNewLines.Value (myNewLineNb - 1) : 0.0f;
|
case Graphic3d_HTA_CENTER: myMoveVec.x() = -aXMin + 0.5f * (theMaxLineWidth - (aXMax - aXMin)) - 0.5f * theMaxLineWidth; break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
case Graphic3d_HTA_RIGHT:
|
|
||||||
{
|
|
||||||
myMoveVec.x() = (myNewLineNb < myNewLines.Length())
|
|
||||||
? -myNewLines.Value (myNewLineNb)
|
|
||||||
: -myPen.x();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case Graphic3d_HTA_CENTER:
|
|
||||||
{
|
|
||||||
const Standard_ShortReal aFrom = (myNewLineNb > 0)
|
|
||||||
? myNewLines.Value (myNewLineNb - 1)
|
|
||||||
: 0.0f;
|
|
||||||
const Standard_ShortReal aTo = (myNewLineNb < myNewLines.Length())
|
|
||||||
? myNewLines.Value (myNewLineNb)
|
|
||||||
: myPen.x();
|
|
||||||
myMoveVec.x() = -0.5f * (aFrom + aTo);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
move (myCorners, myMoveVec, myRectLineStart, theLastRect);
|
move (myCorners, myMoveVec, myRectLineStart, theLastRect);
|
||||||
|
|
||||||
++myLinesNb;
|
++myLinesNb;
|
||||||
myPenCurrLine -= myLineSpacing;
|
myPenCurrLine -= myLineSpacing;
|
||||||
myRectLineStart = myRectWordStart = theLastRect + 1;
|
myRectLineStart = theLastRect + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -217,13 +209,13 @@ void Font_TextFormatter::newLine (const Standard_Integer theLastRect)
|
|||||||
// =======================================================================
|
// =======================================================================
|
||||||
void Font_TextFormatter::Format()
|
void Font_TextFormatter::Format()
|
||||||
{
|
{
|
||||||
if (myRectsNb == 0 || myIsFormatted)
|
if (myCorners.Length() == 0 || myIsFormatted)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
myIsFormatted = true;
|
myIsFormatted = true;
|
||||||
myLinesNb = myRectLineStart = myRectWordStart = 0;
|
myLinesNb = myRectLineStart = 0;
|
||||||
myBndTop = 0.0f;
|
myBndTop = 0.0f;
|
||||||
myBndWidth = 0.0f;
|
myBndWidth = 0.0f;
|
||||||
myMoveVec.x() = myMoveVec.y() = 0.0f;
|
myMoveVec.x() = myMoveVec.y() = 0.0f;
|
||||||
@@ -232,59 +224,56 @@ void Font_TextFormatter::Format()
|
|||||||
myPenCurrLine = -myAscender;
|
myPenCurrLine = -myAscender;
|
||||||
Standard_Integer aRectIter = 0;
|
Standard_Integer aRectIter = 0;
|
||||||
myNewLineNb = 0;
|
myNewLineNb = 0;
|
||||||
Standard_ShortReal aMaxLineWidth = -1.0f;
|
|
||||||
for (NCollection_Utf8Iter anIter = myString.Iterator(); *anIter != 0; ++anIter)
|
|
||||||
{
|
|
||||||
const Standard_Utf32Char aCharThis = *anIter;
|
|
||||||
if (aCharThis == '\x0D' // CR (carriage return)
|
|
||||||
|| aCharThis == '\a' // BEL (alarm)
|
|
||||||
|| aCharThis == '\f' // FF (form feed) NP (new page)
|
|
||||||
|| aCharThis == '\b' // BS (backspace)
|
|
||||||
|| aCharThis == '\v') // VT (vertical tab)
|
|
||||||
{
|
|
||||||
continue; // skip unsupported carriage control codes
|
|
||||||
}
|
|
||||||
else if (aCharThis == '\x0A') // LF (line feed, new line)
|
|
||||||
{
|
|
||||||
// calculate max line width
|
|
||||||
if (myNewLineNb == 0)
|
|
||||||
{
|
|
||||||
aMaxLineWidth = myNewLines.Value(0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
aMaxLineWidth = Max (aMaxLineWidth, myNewLines.Value (myNewLineNb) - myNewLines.Value (myNewLineNb - 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
const Standard_Integer aLastRect = aRectIter - 1; // last rect on current line
|
Standard_ShortReal aMaxLineWidth = Wrapping();
|
||||||
newLine (aLastRect);
|
if (HasWrapping())
|
||||||
|
{
|
||||||
|
aMaxLineWidth = Max (aMaxLineWidth, MaximumSymbolWidth()); // it is not possible to wrap less than symbol width
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (myNewLines.IsEmpty()) // If only one line
|
||||||
|
aMaxLineWidth = myPen.x();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int aLineIt = 0; aLineIt < myNewLines.Size(); aLineIt++)
|
||||||
|
aMaxLineWidth = Max (aMaxLineWidth, LineWidth (aLineIt));
|
||||||
|
aMaxLineWidth = Max (aMaxLineWidth, LineWidth (myNewLines.Size())); // processing the last line also
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Font_TextFormatter::Iterator aFormatterIt (*this);
|
||||||
|
aFormatterIt .More(); aFormatterIt .Next())
|
||||||
|
{
|
||||||
|
const Standard_Utf32Char aCharThis = aFormatterIt.Symbol();
|
||||||
|
aRectIter = aFormatterIt.SymbolPosition();
|
||||||
|
|
||||||
|
if (aCharThis == '\x0A') // LF (line feed, new line)
|
||||||
|
{
|
||||||
|
const Standard_Integer aLastRect = aRectIter; // last rect on current line
|
||||||
|
newLine (aLastRect, aMaxLineWidth);
|
||||||
++myNewLineNb;
|
++myNewLineNb;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if (aCharThis == ' '
|
else if (HasWrapping()) // wrap lines longer than maximum width
|
||||||
|| aCharThis == '\t')
|
|
||||||
{
|
{
|
||||||
myRectWordStart = aRectIter;
|
Standard_Integer aFirstCornerId = myRectLineStart;
|
||||||
continue;
|
|
||||||
|
Font_Rect aBndBox;
|
||||||
|
BndBox (aRectIter, aBndBox);
|
||||||
|
const Standard_ShortReal aNextXPos = aBndBox.Right - BottomLeft (aFirstCornerId).x();
|
||||||
|
if (aNextXPos > aMaxLineWidth) // wrap the line and do processing of the symbol
|
||||||
|
{
|
||||||
|
const Standard_Integer aLastRect = aRectIter - 1; // last rect on current line
|
||||||
|
newLine (aLastRect, aMaxLineWidth);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
++aRectIter;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If only one line
|
|
||||||
if (aMaxLineWidth < 0.0f)
|
|
||||||
{
|
|
||||||
aMaxLineWidth = myPen.x();
|
|
||||||
}
|
|
||||||
else // Consider last line
|
|
||||||
{
|
|
||||||
aMaxLineWidth = Max (aMaxLineWidth, myPen.x() - myNewLines.Value (myNewLineNb - 1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
myBndWidth = aMaxLineWidth;
|
myBndWidth = aMaxLineWidth;
|
||||||
|
|
||||||
// move last line
|
// move last line
|
||||||
newLine (myRectsNb - 1);
|
newLine (myCorners.Length() - 1, aMaxLineWidth);
|
||||||
|
|
||||||
// apply vertical alignment style
|
// apply vertical alignment style
|
||||||
if (myAlignY == Graphic3d_VTA_BOTTOM)
|
if (myAlignY == Graphic3d_VTA_BOTTOM)
|
||||||
@@ -302,6 +291,126 @@ void Font_TextFormatter::Format()
|
|||||||
|
|
||||||
if (myAlignY != Graphic3d_VTA_TOP)
|
if (myAlignY != Graphic3d_VTA_TOP)
|
||||||
{
|
{
|
||||||
moveY (myCorners, myBndTop, 0, myRectsNb - 1);
|
moveY (myCorners, myBndTop, 0, myCorners.Length() - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : BndBox
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
Standard_Boolean Font_TextFormatter::BndBox (const Standard_Integer theIndex, Font_Rect& theBndBox) const
|
||||||
|
{
|
||||||
|
if (theIndex < 0 || theIndex >= Corners().Size())
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
const NCollection_Vec2<Standard_ShortReal>& aLeftCorner = BottomLeft (theIndex);
|
||||||
|
if (theIndex + 1 < myCorners.Length()) // not the last symbol
|
||||||
|
{
|
||||||
|
const NCollection_Vec2<Standard_ShortReal>& aNextLeftCorner = BottomLeft (theIndex + 1);
|
||||||
|
theBndBox.Left = aLeftCorner.x();
|
||||||
|
theBndBox.Bottom = aLeftCorner.y();
|
||||||
|
theBndBox.Top = theBndBox.Bottom + myLineSpacing;
|
||||||
|
if (Abs (aLeftCorner.y() - aNextLeftCorner.y()) < Precision::Confusion()) // in the same row
|
||||||
|
{
|
||||||
|
theBndBox.Right = aNextLeftCorner.x();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// the next symbol is on the next row either by '\n' or by wrapping
|
||||||
|
Standard_ShortReal aLineWidth = LineWidth (LineIndex (theIndex));
|
||||||
|
theBndBox.Left = aLeftCorner.x();
|
||||||
|
switch (myAlignX)
|
||||||
|
{
|
||||||
|
case Graphic3d_HTA_LEFT: theBndBox.Right = aLineWidth; break;
|
||||||
|
case Graphic3d_HTA_RIGHT: theBndBox.Right = myBndWidth; break;
|
||||||
|
case Graphic3d_HTA_CENTER: theBndBox.Right = 0.5f * (myBndWidth + aLineWidth); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else // the last symbol
|
||||||
|
{
|
||||||
|
theBndBox.Left = aLeftCorner.x();
|
||||||
|
theBndBox.Right = aLeftCorner.x() + myLastSymbolWidth;
|
||||||
|
theBndBox.Bottom = aLeftCorner.y();
|
||||||
|
theBndBox.Top = theBndBox.Bottom + myLineSpacing;
|
||||||
|
}
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : IsLFSymbol
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
Standard_Boolean Font_TextFormatter::IsLFSymbol (const Standard_Integer theIndex) const
|
||||||
|
{
|
||||||
|
Font_Rect aBndBox;
|
||||||
|
if (!BndBox (theIndex, aBndBox))
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
return Abs (aBndBox.Right - aBndBox.Left) < Precision::Confusion();
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : FirstPosition
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
Standard_ShortReal Font_TextFormatter::FirstPosition() const
|
||||||
|
{
|
||||||
|
switch (myAlignX)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
case Graphic3d_HTA_LEFT: return 0; break;
|
||||||
|
case Graphic3d_HTA_RIGHT: return myBndWidth; break;
|
||||||
|
case Graphic3d_HTA_CENTER: return 0.5f * myBndWidth; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : LinePositionIndex
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
Standard_Integer Font_TextFormatter::LinePositionIndex (const Standard_Integer theIndex) const
|
||||||
|
{
|
||||||
|
Standard_Integer anIndex = 0;
|
||||||
|
|
||||||
|
Standard_ShortReal anIndexHeight = BottomLeft (theIndex).y();
|
||||||
|
for (Standard_Integer aPrevIndex = theIndex-1; aPrevIndex >= 0; aPrevIndex--)
|
||||||
|
{
|
||||||
|
if (BottomLeft (aPrevIndex).y() > anIndexHeight)
|
||||||
|
break;
|
||||||
|
anIndex++;
|
||||||
|
}
|
||||||
|
return anIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : LineIndex
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
Standard_Integer Font_TextFormatter::LineIndex (const Standard_Integer theIndex) const
|
||||||
|
{
|
||||||
|
if (myLineSpacing < 0.0f)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return (Standard_Integer)Abs((BottomLeft (theIndex).y() + myAscender) / myLineSpacing);
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : LineWidth
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
Standard_ShortReal Font_TextFormatter::LineWidth (const Standard_Integer theIndex) const
|
||||||
|
{
|
||||||
|
if (theIndex < 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (theIndex < myNewLines.Length())
|
||||||
|
return theIndex == 0 ? myNewLines[0] : myNewLines[theIndex] - myNewLines[theIndex -1];
|
||||||
|
|
||||||
|
if (theIndex == myNewLines.Length()) // the last line
|
||||||
|
return theIndex == 0 ? myPen.x() : myPen.x() - myNewLines[theIndex -1];
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -25,10 +25,111 @@
|
|||||||
|
|
||||||
class Font_FTFont;
|
class Font_FTFont;
|
||||||
|
|
||||||
|
DEFINE_STANDARD_HANDLE(Font_TextFormatter, Standard_Transient)
|
||||||
|
|
||||||
//! This class intended to prepare formatted text.
|
//! This class intended to prepare formatted text.
|
||||||
class Font_TextFormatter
|
//! Case of the formatter using:
|
||||||
|
//! Handle(Font_TextFormatter) aFormatter = new Font_TextFormatter();
|
||||||
|
//! aFormatter->Append(text_1, aFont1);
|
||||||
|
//! aFormatter->Append(text_2, aFont2);
|
||||||
|
//! aFormatter->Format();
|
||||||
|
//!
|
||||||
|
//! Example of corners indices for the text:
|
||||||
|
//! "row_1\n" - 0-5
|
||||||
|
//! "\n" - 6
|
||||||
|
//! "\n" - 7
|
||||||
|
//! "row_2\n" - 8-13
|
||||||
|
//! Processing of \n symbol:
|
||||||
|
//! - it is placed on the row where it appears
|
||||||
|
//! - BndBox for \n has zero width
|
||||||
|
//! - if the last symbol is \n, use LastBndBox() to get position on the next row
|
||||||
|
//!
|
||||||
|
//! Pay attention that fonts should have the same LineSpacing value
|
||||||
|
//!
|
||||||
|
class Font_TextFormatter : public Standard_Transient
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
//! Iteration filter flags. Command symbols are skipped with any filter.
|
||||||
|
enum IterationFilter
|
||||||
|
{
|
||||||
|
IterationFilter_None = 0x0000, //!< no filter
|
||||||
|
IterationFilter_ExcludeInvisible = 0x0002, //!< exclude ' ', '\t', '\n'
|
||||||
|
};
|
||||||
|
|
||||||
|
//! Iterator through light sources.
|
||||||
|
class Iterator
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//! Constructor with initialization.
|
||||||
|
Iterator (const Font_TextFormatter& theFormatter,
|
||||||
|
IterationFilter theFilter = IterationFilter_None)
|
||||||
|
: myFilter (theFilter), myIter (theFormatter.myString.Iterator())
|
||||||
|
{
|
||||||
|
mySymbolPosition = readNextSymbol (-1, mySymbolChar);
|
||||||
|
mySymbolNext = readNextSymbol (mySymbolPosition, mySymbolCharNext);
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Returns TRUE if iterator points to a valid item.
|
||||||
|
Standard_Boolean More() const { return mySymbolPosition >= 0; }
|
||||||
|
|
||||||
|
//! Returns TRUE if next item exists
|
||||||
|
Standard_Boolean HasNext() const { return mySymbolNext >= 0; }
|
||||||
|
|
||||||
|
//! Returns current symbol.
|
||||||
|
Standard_Utf32Char Symbol() const { return mySymbolChar; }
|
||||||
|
|
||||||
|
//! Returns the next symbol if exists.
|
||||||
|
Standard_Utf32Char SymbolNext() const { return mySymbolCharNext; }
|
||||||
|
|
||||||
|
//! Returns current symbol position.
|
||||||
|
Standard_Integer SymbolPosition() const { return mySymbolPosition; }
|
||||||
|
|
||||||
|
//! Returns the next symbol position.
|
||||||
|
Standard_Integer SymbolPositionNext() const { return mySymbolNext; }
|
||||||
|
|
||||||
|
//! Moves to the next item.
|
||||||
|
void Next()
|
||||||
|
{
|
||||||
|
mySymbolPosition = mySymbolNext;
|
||||||
|
mySymbolChar = mySymbolCharNext;
|
||||||
|
mySymbolNext = readNextSymbol (mySymbolPosition, mySymbolCharNext);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Standard_Integer readNextSymbol (const Standard_Integer aSymbolStartingFrom, Standard_Utf32Char& theSymbolChar)
|
||||||
|
{
|
||||||
|
Standard_Integer aNextSymbol = aSymbolStartingFrom;
|
||||||
|
for (; *myIter != 0; ++myIter)
|
||||||
|
{
|
||||||
|
const Standard_Utf32Char aCharCurr = *myIter;
|
||||||
|
if (Font_TextFormatter::IsCommandSymbol (aCharCurr))
|
||||||
|
{
|
||||||
|
continue; // skip unsupported carriage control codes
|
||||||
|
}
|
||||||
|
aNextSymbol++;
|
||||||
|
if ((myFilter & IterationFilter_ExcludeInvisible) != 0)
|
||||||
|
{
|
||||||
|
if (aCharCurr == '\x0A'|| // LF (line feed, new line)
|
||||||
|
aCharCurr == ' ' ||
|
||||||
|
aCharCurr == '\t')
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
++myIter;
|
||||||
|
theSymbolChar = aCharCurr;
|
||||||
|
return aNextSymbol; // found the first next, not command and not filtered symbol
|
||||||
|
}
|
||||||
|
return -1; // the next symbol is not found
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
IterationFilter myFilter; //!< possibility to filter not-necessary symbols
|
||||||
|
|
||||||
|
NCollection_Utf8Iter myIter; //!< the next symbol iterator value over the text formatter string
|
||||||
|
Standard_Integer mySymbolPosition; //!< the current position
|
||||||
|
Standard_Utf32Char mySymbolChar; //!< the current symbol
|
||||||
|
Standard_Integer mySymbolNext; //!< position of the next symbol in iterator, if zero, the iterator is finished
|
||||||
|
Standard_Utf32Char mySymbolCharNext; //!< the current symbol
|
||||||
|
};
|
||||||
|
|
||||||
//! Default constructor.
|
//! Default constructor.
|
||||||
Standard_EXPORT Font_TextFormatter();
|
Standard_EXPORT Font_TextFormatter();
|
||||||
@@ -49,16 +150,32 @@ public:
|
|||||||
Standard_EXPORT void Format();
|
Standard_EXPORT void Format();
|
||||||
|
|
||||||
//! Returns specific glyph rectangle.
|
//! Returns specific glyph rectangle.
|
||||||
inline const NCollection_Vec2<Standard_ShortReal>& TopLeft (const Standard_Integer theIndex) const
|
inline const NCollection_Vec2<Standard_ShortReal>& BottomLeft (const Standard_Integer theIndex) const
|
||||||
{
|
{ return myCorners.Value (theIndex); }
|
||||||
return myCorners.Value (theIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Returns current rendering string.
|
//! Returns symbol bounding box
|
||||||
inline const NCollection_String& String() const
|
//! @param bounding box.
|
||||||
{
|
Standard_EXPORT Standard_Boolean BndBox (const Standard_Integer theIndex, Font_Rect& theBndBox) const;
|
||||||
return myString;
|
|
||||||
}
|
//! Returns the line height
|
||||||
|
//! \param theIndex a line index, obtained by LineIndex()
|
||||||
|
Standard_ShortReal LineHeight (const Standard_Integer theIndex) const
|
||||||
|
{ return theIndex == 0 ? myAscender : myLineSpacing; }
|
||||||
|
|
||||||
|
//!< Returns width of a line
|
||||||
|
Standard_EXPORT Standard_ShortReal LineWidth (const Standard_Integer theIndex) const;
|
||||||
|
|
||||||
|
//! Returns true if the symbol by the index is '\n'. The width of the symbol is zero.
|
||||||
|
Standard_EXPORT Standard_Boolean IsLFSymbol (const Standard_Integer theIndex) const;
|
||||||
|
|
||||||
|
//! Returns position of the first symbol in a line using alignment
|
||||||
|
Standard_EXPORT Standard_ShortReal FirstPosition() const;
|
||||||
|
|
||||||
|
//! Returns column index of the corner index in the current line
|
||||||
|
Standard_EXPORT Standard_Integer LinePositionIndex (const Standard_Integer theIndex) const;
|
||||||
|
|
||||||
|
//! Returns row index of the corner index among text lines
|
||||||
|
Standard_EXPORT Standard_Integer LineIndex (const Standard_Integer theIndex) const;
|
||||||
|
|
||||||
//! Returns tab size.
|
//! Returns tab size.
|
||||||
inline Standard_Integer TabSize() const
|
inline Standard_Integer TabSize() const
|
||||||
@@ -66,6 +183,21 @@ public:
|
|||||||
return myTabSize;
|
return myTabSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//!< Returns horizontal alignment style
|
||||||
|
Graphic3d_HorizontalTextAlignment HorizontalTextAlignment() const { return myAlignX; }
|
||||||
|
|
||||||
|
//!< Returns vertical alignment style
|
||||||
|
Graphic3d_VerticalTextAlignment VerticalTextAlignment() const { return myAlignY; }
|
||||||
|
|
||||||
|
//!< Sets text wrapping width, zero means that the text is not bounded by width
|
||||||
|
void SetWrapping (const Standard_ShortReal theWidth) { myWrappingWidth = theWidth; }
|
||||||
|
|
||||||
|
//!< Returns text maximum width, zero means that the text is not bounded by width
|
||||||
|
Standard_Boolean HasWrapping() const { return myWrappingWidth > 0; }
|
||||||
|
|
||||||
|
//!< Returns text maximum width, zero means that the text is not bounded by width
|
||||||
|
Standard_ShortReal Wrapping() const { return myWrappingWidth; }
|
||||||
|
|
||||||
//! @return width of formatted text.
|
//! @return width of formatted text.
|
||||||
inline Standard_ShortReal ResultWidth() const
|
inline Standard_ShortReal ResultWidth() const
|
||||||
{
|
{
|
||||||
@@ -78,6 +210,9 @@ public:
|
|||||||
return myLineSpacing * Standard_ShortReal(myLinesNb);
|
return myLineSpacing * Standard_ShortReal(myLinesNb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//!< @return maximum width of the text symbol
|
||||||
|
inline Standard_ShortReal MaximumSymbolWidth() const { return myMaxSymbolWidth; }
|
||||||
|
|
||||||
//! @param bounding box.
|
//! @param bounding box.
|
||||||
inline void BndBox (Font_Rect& theBndBox) const
|
inline void BndBox (Font_Rect& theBndBox) const
|
||||||
{
|
{
|
||||||
@@ -98,16 +233,40 @@ public:
|
|||||||
theBndBox.Bottom = theBndBox.Top - myLineSpacing * Standard_ShortReal(myLinesNb);
|
theBndBox.Bottom = theBndBox.Top - myLineSpacing * Standard_ShortReal(myLinesNb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//!< Returns internal container of the top left corners of a formatted rectangles.
|
||||||
|
const NCollection_Vector < NCollection_Vec2<Standard_ShortReal> >& Corners() const { return myCorners; }
|
||||||
|
|
||||||
|
const NCollection_Vector<Standard_ShortReal>& NewLines() const { return myNewLines; }
|
||||||
|
|
||||||
|
//!< Returns true if the symbol is CR, BEL, FF, NP, BS or VT
|
||||||
|
static inline Standard_Boolean IsCommandSymbol (const Standard_Utf32Char& theSymbol)
|
||||||
|
{
|
||||||
|
if (theSymbol == '\x0D' // CR (carriage return)
|
||||||
|
|| theSymbol == '\a' // BEL (alarm)
|
||||||
|
|| theSymbol == '\f' // FF (form feed) NP (new page)
|
||||||
|
|| theSymbol == '\b' // BS (backspace)
|
||||||
|
|| theSymbol == '\v') // VT (vertical tab)
|
||||||
|
return Standard_True;
|
||||||
|
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT (Font_TextFormatter, Standard_Transient)
|
||||||
|
|
||||||
protected: //! @name class auxiliary methods
|
protected: //! @name class auxiliary methods
|
||||||
|
|
||||||
//! Move glyphs on the current line to correct position.
|
//! Move glyphs on the current line to correct position.
|
||||||
Standard_EXPORT void newLine (const Standard_Integer theLastRect);
|
Standard_EXPORT void newLine (const Standard_Integer theLastRect,
|
||||||
|
const Standard_ShortReal theMaxLineWidth);
|
||||||
|
|
||||||
protected: //! @name configuration
|
protected: //! @name configuration
|
||||||
|
|
||||||
Graphic3d_HorizontalTextAlignment myAlignX; //!< horizontal alignment style
|
Graphic3d_HorizontalTextAlignment myAlignX; //!< horizontal alignment style
|
||||||
Graphic3d_VerticalTextAlignment myAlignY; //!< vertical alignment style
|
Graphic3d_VerticalTextAlignment myAlignY; //!< vertical alignment style
|
||||||
Standard_Integer myTabSize; //!< horizontal tabulation width (number of space symbols)
|
Standard_Integer myTabSize; //!< horizontal tabulation width (number of space symbols)
|
||||||
|
Standard_ShortReal myWrappingWidth; //!< text is wrapped by the width if it is defined (more 0)
|
||||||
|
Standard_ShortReal myLastSymbolWidth; //!< width of the last symbol
|
||||||
|
Standard_ShortReal myMaxSymbolWidth; //!< maximum symbol width of the formatter string
|
||||||
|
|
||||||
protected: //! @name input data
|
protected: //! @name input data
|
||||||
|
|
||||||
@@ -116,18 +275,16 @@ protected: //! @name input data
|
|||||||
myPen; //!< current pen position
|
myPen; //!< current pen position
|
||||||
NCollection_Vector < NCollection_Vec2<Standard_ShortReal> >
|
NCollection_Vector < NCollection_Vec2<Standard_ShortReal> >
|
||||||
myCorners; //!< The top left corners of a formatted rectangles.
|
myCorners; //!< The top left corners of a formatted rectangles.
|
||||||
Standard_Integer myRectsNb; //!< rectangles number
|
|
||||||
NCollection_Vector<Standard_ShortReal>
|
NCollection_Vector<Standard_ShortReal>
|
||||||
myNewLines; //!< position at LF
|
myNewLines; //!< position at LF
|
||||||
Standard_ShortReal myLineSpacing; //!< line spacing (computed as maximum of all fonts involved in text formatting)
|
Standard_ShortReal myLineSpacing; //!< line spacing (computed as maximum of all fonts involved in text formatting)
|
||||||
Standard_ShortReal myAscender; //!<
|
Standard_ShortReal myAscender; //!< line spacing for the first line
|
||||||
bool myIsFormatted; //!< formatting state
|
bool myIsFormatted; //!< formatting state
|
||||||
|
|
||||||
protected: //! @name temporary variables for formatting routines
|
protected: //! @name temporary variables for formatting routines
|
||||||
|
|
||||||
Standard_Integer myLinesNb; //!< overall (new)lines number (including splitting by width limit)
|
Standard_Integer myLinesNb; //!< overall (new)lines number (including splitting by width limit)
|
||||||
Standard_Integer myRectLineStart; //!< id of first rectangle on the current line
|
Standard_Integer myRectLineStart; //!< id of first rectangle on the current line
|
||||||
Standard_Integer myRectWordStart; //!< id of first rectangle in the current word
|
|
||||||
Standard_Integer myNewLineNb;
|
Standard_Integer myNewLineNb;
|
||||||
|
|
||||||
Standard_ShortReal myPenCurrLine; //!< current baseline position
|
Standard_ShortReal myPenCurrLine; //!< current baseline position
|
||||||
@@ -135,6 +292,8 @@ protected: //! @name temporary variables for formatting routines
|
|||||||
Standard_ShortReal myBndWidth;
|
Standard_ShortReal myBndWidth;
|
||||||
NCollection_Vec2<Standard_ShortReal>
|
NCollection_Vec2<Standard_ShortReal>
|
||||||
myMoveVec; //!< local variable
|
myMoveVec; //!< local variable
|
||||||
|
|
||||||
|
friend Iterator;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // Font_TextFormatter_Header
|
#endif // Font_TextFormatter_Header
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
Graphic3d.cxx
|
||||||
|
Graphic3d.hxx
|
||||||
Graphic3d_AlphaMode.hxx
|
Graphic3d_AlphaMode.hxx
|
||||||
Graphic3d_ArrayFlags.hxx
|
Graphic3d_ArrayFlags.hxx
|
||||||
Graphic3d_ArrayOfPoints.hxx
|
Graphic3d_ArrayOfPoints.hxx
|
||||||
@@ -15,6 +17,8 @@ Graphic3d_Aspects.cxx
|
|||||||
Graphic3d_Aspects.hxx
|
Graphic3d_Aspects.hxx
|
||||||
Graphic3d_AspectFillArea3d.cxx
|
Graphic3d_AspectFillArea3d.cxx
|
||||||
Graphic3d_AspectFillArea3d.hxx
|
Graphic3d_AspectFillArea3d.hxx
|
||||||
|
Graphic3d_AspectFillCapping.cxx
|
||||||
|
Graphic3d_AspectFillCapping.hxx
|
||||||
Graphic3d_AspectLine3d.cxx
|
Graphic3d_AspectLine3d.cxx
|
||||||
Graphic3d_AspectLine3d.hxx
|
Graphic3d_AspectLine3d.hxx
|
||||||
Graphic3d_AspectMarker3d.cxx
|
Graphic3d_AspectMarker3d.cxx
|
||||||
@@ -110,6 +114,7 @@ Graphic3d_NameOfTexture2D.hxx
|
|||||||
Graphic3d_NameOfTextureEnv.hxx
|
Graphic3d_NameOfTextureEnv.hxx
|
||||||
Graphic3d_NameOfTexturePlane.hxx
|
Graphic3d_NameOfTexturePlane.hxx
|
||||||
Graphic3d_NMapOfTransient.hxx
|
Graphic3d_NMapOfTransient.hxx
|
||||||
|
Graphic3d_PolygonOffset.cxx
|
||||||
Graphic3d_PolygonOffset.hxx
|
Graphic3d_PolygonOffset.hxx
|
||||||
Graphic3d_PriorityDefinitionError.hxx
|
Graphic3d_PriorityDefinitionError.hxx
|
||||||
Graphic3d_RenderingMode.hxx
|
Graphic3d_RenderingMode.hxx
|
||||||
|
521
src/Graphic3d/Graphic3d.cxx
Normal file
@@ -0,0 +1,521 @@
|
|||||||
|
// Copyright (c) 2018 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.
|
||||||
|
|
||||||
|
#include <Graphic3d.hxx>
|
||||||
|
|
||||||
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
static Standard_CString Graphic3d_Table_PrintZLayerId[6] =
|
||||||
|
{
|
||||||
|
"UNKNOWN", "DEFAULT", "TOP", "TOPMOST", "TOP_OSD", "BOT_OSD"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Graphic3d_Table_PrintHorizontalTextAlignment[3] =
|
||||||
|
{
|
||||||
|
"LEFT", "CENTER", "RIGHT"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Graphic3d_Table_PrintVerticalTextAlignment[4] =
|
||||||
|
{
|
||||||
|
"BOTTOM", "CENTER", "TOP", "TOP_FIRST_LINE"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Graphic3d_Table_PrintTextPath[4] =
|
||||||
|
{
|
||||||
|
"UP", "DOWN", "LEFT", "RIGHT"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Graphic3d_Table_PrintAlphaMode[4] =
|
||||||
|
{
|
||||||
|
"BLEND_AUTO", "OPAQUE", "MASK", "BLEND"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Graphic3d_Table_PrintTypeOfShadingModel[5] =
|
||||||
|
{
|
||||||
|
"DEFAULT", "UNLIT", "FACET", "VERTEX", "FRAGMENT"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Graphic3d_Table_PrintTypeOfAttribute[5] =
|
||||||
|
{
|
||||||
|
"POS", "NORM", "UV", "COLOR", "CUSTOM"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Graphic3d_Table_PrintTypeOfData[7] =
|
||||||
|
{
|
||||||
|
"USHORT", "UINT", "VEC2", "VEC3", "VEC4", "VEC4UB", "FLOAT"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Graphic3d_Table_PrintTransModeFlags[6] =
|
||||||
|
{
|
||||||
|
"NONE", "ZOOM_PERS", "ROTATE_PERS", "TRIEDRON_PERS", "2d", "ZOOM_ROTATE_PERS"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Graphic3d_Table_PrintCameraProjection[5] =
|
||||||
|
{
|
||||||
|
"ORTHOGRAPHIC", "PERSPECTIVE", "STEREO", "MONOLEFTEYE", "MONORIGHTEYE"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Graphic3d_Table_PrintFocusType[2] =
|
||||||
|
{
|
||||||
|
"ABSOLUTE", "RELATIVE"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Graphic3d_Table_PrintIODType[2] =
|
||||||
|
{
|
||||||
|
"ABSOLUTE", "RELATIVE"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Graphic3d_Table_PrintNameOfMaterial[26] =
|
||||||
|
{
|
||||||
|
"BRASS", "BRONZE", "COPPER", "GOLD", "PEWTER", "PLASTER", "PLASTIC", "SILVER", // 8
|
||||||
|
"STEEL", "STONE", "SHINY_PLASTIC", "SATIN", "METALIZED", "NEON_GNC", "CHROME", // 7
|
||||||
|
"ALUMINIUM", "OBSIDIAN", "NEON_PHC", "JADE", "CHARCOAL", "WATER", "GLASS", // 7
|
||||||
|
"DIAMOND", "TRANSPARENT", "DEFAULT", "UserDefined" // 4
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : ZLayerIdToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Graphic3d::ZLayerIdToString (Graphic3d_ZLayerId theType)
|
||||||
|
{
|
||||||
|
switch (theType)
|
||||||
|
{
|
||||||
|
case Graphic3d_ZLayerId_UNKNOWN: return Graphic3d_Table_PrintZLayerId[0]; break;
|
||||||
|
case Graphic3d_ZLayerId_Default: return Graphic3d_Table_PrintZLayerId[1]; break;
|
||||||
|
case Graphic3d_ZLayerId_Top: return Graphic3d_Table_PrintZLayerId[2]; break;
|
||||||
|
case Graphic3d_ZLayerId_Topmost: return Graphic3d_Table_PrintZLayerId[3]; break;
|
||||||
|
case Graphic3d_ZLayerId_TopOSD: return Graphic3d_Table_PrintZLayerId[4]; break;
|
||||||
|
case Graphic3d_ZLayerId_BotOSD: return Graphic3d_Table_PrintZLayerId[5]; break;
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : ZLayerIdFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Graphic3d::ZLayerIdFromString (Standard_CString theTypeString,
|
||||||
|
Graphic3d_ZLayerId& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = 0; aTypeIter <= 5; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Graphic3d_Table_PrintZLayerId[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
switch (aTypeIter)
|
||||||
|
{
|
||||||
|
case 0: theType = Graphic3d_ZLayerId_UNKNOWN; break;
|
||||||
|
case 1: theType = Graphic3d_ZLayerId_Default; break;
|
||||||
|
case 2: theType = Graphic3d_ZLayerId_Top; break;
|
||||||
|
case 3: theType = Graphic3d_ZLayerId_Topmost; break;
|
||||||
|
case 4: theType = Graphic3d_ZLayerId_TopOSD; break;
|
||||||
|
case 5: theType = Graphic3d_ZLayerId_BotOSD; break;
|
||||||
|
}
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aName.IsIntegerValue())
|
||||||
|
{
|
||||||
|
theType = aName.IntegerValue();
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : HorizontalTextAlignmentToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Graphic3d::HorizontalTextAlignmentToString (Graphic3d_HorizontalTextAlignment theType)
|
||||||
|
{
|
||||||
|
return Graphic3d_Table_PrintHorizontalTextAlignment[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : HorizontalTextAlignmentFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Graphic3d::HorizontalTextAlignmentFromString (Standard_CString theTypeString,
|
||||||
|
Graphic3d_HorizontalTextAlignment& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Graphic3d_HTA_LEFT; aTypeIter <= Graphic3d_HTA_RIGHT; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Graphic3d_Table_PrintHorizontalTextAlignment[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Graphic3d_HorizontalTextAlignment (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : VerticalTextAlignmentToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Graphic3d::VerticalTextAlignmentToString (Graphic3d_VerticalTextAlignment theType)
|
||||||
|
{
|
||||||
|
return Graphic3d_Table_PrintVerticalTextAlignment[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : VerticalTextAlignmentFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Graphic3d::VerticalTextAlignmentFromString (Standard_CString theTypeString,
|
||||||
|
Graphic3d_VerticalTextAlignment& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Graphic3d_VTA_BOTTOM; aTypeIter <= Graphic3d_VTA_TOPFIRSTLINE; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Graphic3d_Table_PrintVerticalTextAlignment[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Graphic3d_VerticalTextAlignment (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TextPathToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Graphic3d::TextPathToString (Graphic3d_TextPath theType)
|
||||||
|
{
|
||||||
|
return Graphic3d_Table_PrintTextPath[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TextPathFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Graphic3d::TextPathFromString (Standard_CString theTypeString,
|
||||||
|
Graphic3d_TextPath& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Graphic3d_TP_UP; aTypeIter <= Graphic3d_TP_RIGHT; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Graphic3d_Table_PrintTextPath[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Graphic3d_TextPath (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : AlphaModeToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Graphic3d::AlphaModeToString (Graphic3d_AlphaMode theType)
|
||||||
|
{
|
||||||
|
return Graphic3d_Table_PrintAlphaMode[theType + 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : AlphaModeFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Graphic3d::AlphaModeFromString (Standard_CString theTypeString,
|
||||||
|
Graphic3d_AlphaMode& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Graphic3d_AlphaMode_BlendAuto; aTypeIter <= Graphic3d_AlphaMode_Blend; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Graphic3d_Table_PrintAlphaMode[aTypeIter + 1];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Graphic3d_AlphaMode (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfShadingModelToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Graphic3d::TypeOfShadingModelToString (Graphic3d_TypeOfShadingModel theType)
|
||||||
|
{
|
||||||
|
return Graphic3d_Table_PrintTypeOfShadingModel[theType + 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfShadingModelFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Graphic3d::TypeOfShadingModelFromString (Standard_CString theTypeString,
|
||||||
|
Graphic3d_TypeOfShadingModel& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Graphic3d_TOSM_DEFAULT; aTypeIter <= Graphic3d_TOSM_FRAGMENT; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Graphic3d_Table_PrintTypeOfShadingModel[aTypeIter + 1];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Graphic3d_TypeOfShadingModel (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfAttributeToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Graphic3d::TypeOfAttributeToString (Graphic3d_TypeOfAttribute theType)
|
||||||
|
{
|
||||||
|
return Graphic3d_Table_PrintTypeOfAttribute[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfAttributeFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Graphic3d::TypeOfAttributeFromString (Standard_CString theTypeString,
|
||||||
|
Graphic3d_TypeOfAttribute& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Graphic3d_TOA_POS; aTypeIter <= Graphic3d_TOA_CUSTOM; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Graphic3d_Table_PrintTypeOfAttribute[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Graphic3d_TypeOfAttribute (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfDataToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Graphic3d::TypeOfDataToString (Graphic3d_TypeOfData theType)
|
||||||
|
{
|
||||||
|
return Graphic3d_Table_PrintTypeOfData[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TypeOfDataFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Graphic3d::TypeOfDataFromString (Standard_CString theTypeString,
|
||||||
|
Graphic3d_TypeOfData& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Graphic3d_TOD_USHORT; aTypeIter <= Graphic3d_TOD_FLOAT; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Graphic3d_Table_PrintTypeOfData[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Graphic3d_TypeOfData (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : TransModeFlagsToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Graphic3d::TransModeFlagsToString (Graphic3d_TransModeFlags theType)
|
||||||
|
{
|
||||||
|
switch (theType)
|
||||||
|
{
|
||||||
|
case Graphic3d_TMF_None: return Graphic3d_Table_PrintTransModeFlags[0]; break;
|
||||||
|
case Graphic3d_TMF_ZoomPers: return Graphic3d_Table_PrintTransModeFlags[1]; break;
|
||||||
|
case Graphic3d_TMF_RotatePers: return Graphic3d_Table_PrintTransModeFlags[2]; break;
|
||||||
|
case Graphic3d_TMF_TriedronPers: return Graphic3d_Table_PrintTransModeFlags[3]; break;
|
||||||
|
case Graphic3d_TMF_2d: return Graphic3d_Table_PrintTransModeFlags[4]; break;
|
||||||
|
case Graphic3d_TMF_ZoomRotatePers: return Graphic3d_Table_PrintTransModeFlags[5]; break;
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : ZLayerIdFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Graphic3d::TransModeFlagsFromString (Standard_CString theTypeString,
|
||||||
|
Graphic3d_TransModeFlags& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = 0; aTypeIter <= 5; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Graphic3d_Table_PrintTransModeFlags[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
switch (aTypeIter)
|
||||||
|
{
|
||||||
|
case 0: theType = Graphic3d_TMF_None; break;
|
||||||
|
case 1: theType = Graphic3d_TMF_ZoomPers; break;
|
||||||
|
case 2: theType = Graphic3d_TMF_RotatePers; break;
|
||||||
|
case 3: theType = Graphic3d_TMF_TriedronPers; break;
|
||||||
|
case 4: theType = Graphic3d_TMF_2d; break;
|
||||||
|
case 5: theType = Graphic3d_TMF_ZoomRotatePers; break;
|
||||||
|
}
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : CameraProjectionToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Graphic3d::CameraProjectionToString (Graphic3d_Camera::Projection theType)
|
||||||
|
{
|
||||||
|
return Graphic3d_Table_PrintCameraProjection[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : CameraProjectionFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Graphic3d::CameraProjectionFromString (Standard_CString theTypeString,
|
||||||
|
Graphic3d_Camera::Projection& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Graphic3d_Camera::Projection_Orthographic;
|
||||||
|
aTypeIter <= Graphic3d_Camera::Projection_MonoRightEye; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Graphic3d_Table_PrintCameraProjection[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Graphic3d_Camera::Projection (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : CameraFocusTypeToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Graphic3d::CameraFocusTypeToString (Graphic3d_Camera::FocusType theType)
|
||||||
|
{
|
||||||
|
return Graphic3d_Table_PrintFocusType[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : FocusTypeFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Graphic3d::CameraFocusTypeFromString (Standard_CString theTypeString,
|
||||||
|
Graphic3d_Camera::FocusType& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Graphic3d_Camera::FocusType_Absolute;
|
||||||
|
aTypeIter <= Graphic3d_Camera::FocusType_Relative; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Graphic3d_Table_PrintFocusType[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Graphic3d_Camera::FocusType (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : CameraIODTypeToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Graphic3d::CameraIODTypeToString (Graphic3d_Camera::IODType theType)
|
||||||
|
{
|
||||||
|
return Graphic3d_Table_PrintIODType[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : IODTypeFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Graphic3d::CameraIODTypeFromString (Standard_CString theTypeString,
|
||||||
|
Graphic3d_Camera::IODType& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Graphic3d_Camera::IODType_Absolute;
|
||||||
|
aTypeIter <= Graphic3d_Camera::IODType_Relative; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Graphic3d_Table_PrintIODType[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Graphic3d_Camera::IODType (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : NameOfMaterialToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_CString Graphic3d::NameOfMaterialToString (Graphic3d_NameOfMaterial theType)
|
||||||
|
{
|
||||||
|
return Graphic3d_Table_PrintNameOfMaterial[theType];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : NameOfMaterialFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean Graphic3d::NameOfMaterialFromString (Standard_CString theTypeString,
|
||||||
|
Graphic3d_NameOfMaterial& theType)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theTypeString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aTypeIter = Graphic3d_TOD_USHORT; aTypeIter <= Graphic3d_TOD_FLOAT; ++aTypeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aTypeName = Graphic3d_Table_PrintNameOfMaterial[aTypeIter];
|
||||||
|
if (aName == aTypeName)
|
||||||
|
{
|
||||||
|
theType = Graphic3d_NameOfMaterial (aTypeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
327
src/Graphic3d/Graphic3d.hxx
Normal file
@@ -0,0 +1,327 @@
|
|||||||
|
// Copyright (c) 2018 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 _Graphic3d_HeaderFile
|
||||||
|
#define _Graphic3d_HeaderFile
|
||||||
|
|
||||||
|
#include <Graphic3d_AlphaMode.hxx>
|
||||||
|
#include <Graphic3d_Buffer.hxx>
|
||||||
|
#include <Graphic3d_Camera.hxx>
|
||||||
|
#include <Graphic3d_HorizontalTextAlignment.hxx>
|
||||||
|
#include <Graphic3d_VerticalTextAlignment.hxx>
|
||||||
|
#include <Graphic3d_TextPath.hxx>
|
||||||
|
#include <Graphic3d_TransModeFlags.hxx>
|
||||||
|
#include <Graphic3d_TypeOfShadingModel.hxx>
|
||||||
|
#include <Graphic3d_NameOfMaterial.hxx>
|
||||||
|
|
||||||
|
#include <Graphic3d_ZLayerId.hxx>
|
||||||
|
#include <Standard_DefineAlloc.hxx>
|
||||||
|
#include <Standard_Macro.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
|
||||||
|
//! Provides methods to cast enumerations of package to string value
|
||||||
|
class Graphic3d
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
DEFINE_STANDARD_ALLOC
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString ZLayerIdToString (Graphic3d_ZLayerId theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Graphic3d_ZLayerId_UNKNOWN if string identifier is invalid
|
||||||
|
static Graphic3d_ZLayerId ZLayerIdFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Graphic3d_ZLayerId aType = Graphic3d_ZLayerId_UNKNOWN;
|
||||||
|
ZLayerIdFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean ZLayerIdFromString (const Standard_CString theTypeString,
|
||||||
|
Graphic3d_ZLayerId& theType);
|
||||||
|
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString HorizontalTextAlignmentToString (Graphic3d_HorizontalTextAlignment theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Graphic3d_HTA_LEFT if string identifier is invalid
|
||||||
|
static Graphic3d_HorizontalTextAlignment HorizontalTextAlignmentFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Graphic3d_HorizontalTextAlignment aType = Graphic3d_HTA_LEFT;
|
||||||
|
HorizontalTextAlignmentFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean HorizontalTextAlignmentFromString (const Standard_CString theTypeString,
|
||||||
|
Graphic3d_HorizontalTextAlignment& theType);
|
||||||
|
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString VerticalTextAlignmentToString (Graphic3d_VerticalTextAlignment theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Graphic3d_VTA_BOTTOM if string identifier is invalid
|
||||||
|
static Graphic3d_VerticalTextAlignment VerticalTextAlignmentFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Graphic3d_VerticalTextAlignment aType = Graphic3d_VTA_BOTTOM;
|
||||||
|
VerticalTextAlignmentFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean VerticalTextAlignmentFromString (const Standard_CString theTypeString,
|
||||||
|
Graphic3d_VerticalTextAlignment& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString TextPathToString (Graphic3d_TextPath theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Graphic3d_TP_UP if string identifier is invalid
|
||||||
|
static Graphic3d_TextPath TextPathFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Graphic3d_TextPath aType = Graphic3d_TP_UP;
|
||||||
|
TextPathFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean TextPathFromString (const Standard_CString theTypeString,
|
||||||
|
Graphic3d_TextPath& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString AlphaModeToString (Graphic3d_AlphaMode theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Graphic3d_AlphaMode_Opaque if string identifier is invalid
|
||||||
|
static Graphic3d_AlphaMode AlphaModeFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Graphic3d_AlphaMode aType = Graphic3d_AlphaMode_Opaque;
|
||||||
|
AlphaModeFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean AlphaModeFromString (const Standard_CString theTypeString,
|
||||||
|
Graphic3d_AlphaMode& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString TypeOfShadingModelToString (Graphic3d_TypeOfShadingModel theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Graphic3d_TOSM_DEFAULT if string identifier is invalid
|
||||||
|
static Graphic3d_TypeOfShadingModel TypeOfShadingModelFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Graphic3d_TypeOfShadingModel aType = Graphic3d_TOSM_DEFAULT;
|
||||||
|
TypeOfShadingModelFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean TypeOfShadingModelFromString (const Standard_CString theTypeString,
|
||||||
|
Graphic3d_TypeOfShadingModel& theType);
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString TypeOfAttributeToString (Graphic3d_TypeOfAttribute theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Graphic3d_TOA_POS if string identifier is invalid
|
||||||
|
static Graphic3d_TypeOfAttribute TypeOfAttributeFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Graphic3d_TypeOfAttribute aType = Graphic3d_TOA_POS;
|
||||||
|
TypeOfAttributeFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean TypeOfAttributeFromString (const Standard_CString theTypeString,
|
||||||
|
Graphic3d_TypeOfAttribute& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString TypeOfDataToString (Graphic3d_TypeOfData theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Graphic3d_TOSM_DEFAULT if string identifier is invalid
|
||||||
|
static Graphic3d_TypeOfData TypeOfDataFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Graphic3d_TypeOfData aType = Graphic3d_TOD_USHORT;
|
||||||
|
TypeOfDataFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean TypeOfDataFromString (const Standard_CString theTypeString,
|
||||||
|
Graphic3d_TypeOfData& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString TransModeFlagsToString (Graphic3d_TransModeFlags theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Graphic3d_TOSM_DEFAULT if string identifier is invalid
|
||||||
|
static Graphic3d_TransModeFlags TransModeFlagsFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Graphic3d_TransModeFlags aType = Graphic3d_TMF_None;
|
||||||
|
TransModeFlagsFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean TransModeFlagsFromString (const Standard_CString theTypeString,
|
||||||
|
Graphic3d_TransModeFlags& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString CameraProjectionToString (Graphic3d_Camera::Projection theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or Projection_Orthographic if string identifier is invalid
|
||||||
|
static Graphic3d_Camera::Projection CameraProjectionFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Graphic3d_Camera::Projection aType = Graphic3d_Camera::Projection_Orthographic;
|
||||||
|
CameraProjectionFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean CameraProjectionFromString (const Standard_CString theTypeString,
|
||||||
|
Graphic3d_Camera::Projection& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString CameraFocusTypeToString (Graphic3d_Camera::FocusType theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or FocusType_Absolute if string identifier is invalid
|
||||||
|
static Graphic3d_Camera::FocusType CameraFocusTypeFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Graphic3d_Camera::FocusType aType = Graphic3d_Camera::FocusType_Absolute;
|
||||||
|
CameraFocusTypeFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean CameraFocusTypeFromString (const Standard_CString theTypeString,
|
||||||
|
Graphic3d_Camera::FocusType& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString CameraIODTypeToString (Graphic3d_Camera::IODType theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or IODType_Absolute if string identifier is invalid
|
||||||
|
static Graphic3d_Camera::IODType CameraIODTypeFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Graphic3d_Camera::IODType aType = Graphic3d_Camera::IODType_Absolute;
|
||||||
|
CameraIODTypeFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean CameraIODTypeFromString (const Standard_CString theTypeString,
|
||||||
|
Graphic3d_Camera::IODType& theType);
|
||||||
|
|
||||||
|
//! Returns the string name for a given type.
|
||||||
|
//! @param theType an enumeration type
|
||||||
|
//! @return string identifier from the enumeration list
|
||||||
|
Standard_EXPORT static Standard_CString NameOfMaterialToString (Graphic3d_NameOfMaterial theType);
|
||||||
|
|
||||||
|
//! Returns the orientation type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @return enumeration type or IODType_Absolute if string identifier is invalid
|
||||||
|
static Graphic3d_NameOfMaterial NameOfMaterialFromString (Standard_CString theTypeString)
|
||||||
|
{
|
||||||
|
Graphic3d_NameOfMaterial aType = Graphic3d_NOM_BRASS;
|
||||||
|
NameOfMaterialFromString (theTypeString, aType);
|
||||||
|
return aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theTypeString string identifier
|
||||||
|
//! @param theType detected type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean NameOfMaterialFromString (const Standard_CString theTypeString,
|
||||||
|
Graphic3d_NameOfMaterial& theType);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _Graphic3d_HeaderFile
|
110
src/Graphic3d/Graphic3d_AspectFillCapping.cxx
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
// Created on: 2017-04-14
|
||||||
|
// Created by: Anton POLETAEV
|
||||||
|
// Copyright (c) 2017 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.
|
||||||
|
|
||||||
|
#include <Graphic3d_AspectFillCapping.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT(Graphic3d_AspectFillCapping, Standard_Transient)
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : Graphic3d_AspectFillCapping
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
Graphic3d_AspectFillCapping::Graphic3d_AspectFillCapping()
|
||||||
|
: myFlags (Flags_None),
|
||||||
|
myHatchingState (0)
|
||||||
|
{
|
||||||
|
Graphic3d_MaterialAspect aMaterial;
|
||||||
|
aMaterial.SetColor (Quantity_NOC_BLACK);
|
||||||
|
aMaterial.SetReflectionModeOff (Graphic3d_TOR_AMBIENT);
|
||||||
|
aMaterial.SetReflectionModeOff (Graphic3d_TOR_DIFFUSE);
|
||||||
|
aMaterial.SetReflectionModeOff (Graphic3d_TOR_SPECULAR);
|
||||||
|
aMaterial.SetReflectionModeOff (Graphic3d_TOR_EMISSION);
|
||||||
|
aMaterial.SetMaterialType (Graphic3d_MATERIAL_ASPECT);
|
||||||
|
SetHatchStyle (Aspect_HS_HORIZONTAL);
|
||||||
|
SetHatchMaterial (aMaterial);
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : SetHatchStyle
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void Graphic3d_AspectFillCapping::SetHatchStyle (const Aspect_HatchStyle theStyle)
|
||||||
|
{
|
||||||
|
myStippleHatch = new Graphic3d_HatchStyle (theStyle);
|
||||||
|
myTextureHatch.Nullify();
|
||||||
|
myHatchingState++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : SetHatchStyle
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void Graphic3d_AspectFillCapping::SetHatchStyle (const Handle(Graphic3d_HatchStyle)& theStyle)
|
||||||
|
{
|
||||||
|
myStippleHatch = theStyle;
|
||||||
|
myTextureHatch.Nullify();
|
||||||
|
myHatchingState++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : SetHatchStyle
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void Graphic3d_AspectFillCapping::SetHatchStyle (const Handle(Graphic3d_TextureMap)& theTexture)
|
||||||
|
{
|
||||||
|
myStippleHatch.Nullify();
|
||||||
|
myTextureHatch = theTexture;
|
||||||
|
myHatchingState++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : SetHatchMaterial
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void Graphic3d_AspectFillCapping::SetHatchMaterial (const Graphic3d_MaterialAspect& theMaterial)
|
||||||
|
{
|
||||||
|
myHatchMaterial = theMaterial;
|
||||||
|
myHatchingState++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : SetToDrawHatch
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void Graphic3d_AspectFillCapping::SetToDrawHatch (const Standard_Boolean theToDraw)
|
||||||
|
{
|
||||||
|
setFlag (theToDraw, Flags_DrawHatching);
|
||||||
|
myHatchingState++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : SetHatchZoomPeristent
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void Graphic3d_AspectFillCapping::SetHatchZoomPeristent (const Standard_Boolean theToSet)
|
||||||
|
{
|
||||||
|
setFlag (theToSet, Flags_HatchZoomPersistent);
|
||||||
|
myHatchingState++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : SetHatchRotationPeristent
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void Graphic3d_AspectFillCapping::SetHatchRotationPeristent (const Standard_Boolean theToSet)
|
||||||
|
{
|
||||||
|
setFlag (theToSet, Flags_HatchRotationPersistent);
|
||||||
|
myHatchingState++;
|
||||||
|
}
|
164
src/Graphic3d/Graphic3d_AspectFillCapping.hxx
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
// Created on: 2017-04-14
|
||||||
|
// Created by: Anton POLETAEV
|
||||||
|
// Copyright (c) 2017 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 _Graphic3d_AspectFillCapping_HeaderFile
|
||||||
|
#define _Graphic3d_AspectFillCapping_HeaderFile
|
||||||
|
|
||||||
|
#include <Aspect_HatchStyle.hxx>
|
||||||
|
#include <Graphic3d_Aspects.hxx>
|
||||||
|
#include <Graphic3d_HatchStyle.hxx>
|
||||||
|
#include <Graphic3d_MaterialAspect.hxx>
|
||||||
|
#include <Graphic3d_ShaderProgram.hxx>
|
||||||
|
#include <Graphic3d_TextureMap.hxx>
|
||||||
|
#include <Standard_Transient.hxx>
|
||||||
|
|
||||||
|
//! Defines graphical attributes for drawing section planes on solids resulted from clipping (cutting) planes.
|
||||||
|
class Graphic3d_AspectFillCapping : public Graphic3d_Aspects
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
//! Default constructor.
|
||||||
|
Standard_EXPORT Graphic3d_AspectFillCapping();
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//! Sets material for filling section created by clipping.
|
||||||
|
void SetMaterial (const Graphic3d_MaterialAspect& theMaterial) { myMaterial = theMaterial; }
|
||||||
|
|
||||||
|
//! Returns material for filling section created by clipping.
|
||||||
|
const Graphic3d_MaterialAspect& Material() const { return myMaterial; }
|
||||||
|
|
||||||
|
//! Sets flag indicating whether object's material (instead of defined by this aspect) should be used for filling section.
|
||||||
|
void SetUseObjectMaterial (const Standard_Boolean theToUse) { setFlag (theToUse, Flags_UseObjectMaterial); }
|
||||||
|
|
||||||
|
//! Returns flag indicating whether object's material (instead of defined by this aspect) should be used for filling section.
|
||||||
|
Standard_Boolean ToUseObjectMaterial() const { return (myFlags & Flags_UseObjectMaterial) != 0; }
|
||||||
|
|
||||||
|
//! Sets texture for filling section created by clipping.
|
||||||
|
void SetTexture (const Handle(Graphic3d_TextureMap)& theTexture) { myTexture = theTexture; }
|
||||||
|
|
||||||
|
//! Returns texture for filling section created by clipping.
|
||||||
|
const Handle(Graphic3d_TextureMap)& Texture() const { return myTexture; }
|
||||||
|
|
||||||
|
//! Sets flag indicating whether object's texture (instead of defined by this aspect) should be used for filling section.
|
||||||
|
void SetUseObjectTexture (const Standard_Boolean theToUse) { setFlag (theToUse, Flags_UseObjectTexture); }
|
||||||
|
|
||||||
|
//! Returns flag indicating whether object's texture (instead of defined by this aspect) should be used for filling section.
|
||||||
|
Standard_Boolean ToUseObjectTexture() const { return (myFlags & Flags_UseObjectTexture) != 0; }
|
||||||
|
|
||||||
|
//! Sets OpenGL/GLSL shader program.
|
||||||
|
void SetShader (const Handle(Graphic3d_ShaderProgram)& theShader) { myShader = theShader; }
|
||||||
|
|
||||||
|
//! Returns OpenGL/GLSL shader program.
|
||||||
|
const Handle(Graphic3d_ShaderProgram)& Shader() const { return myShader; }
|
||||||
|
|
||||||
|
//! Sets flag indicating whether object's shader (instead of defined by this aspect) should be used for filling section.
|
||||||
|
void SetUseObjectShader (const Standard_Boolean theToUse) { setFlag (theToUse, Flags_UseObjectShader); }
|
||||||
|
|
||||||
|
//! Returns flag indicating whether object's shader (instead of defined by this aspect) should be used for filling section.
|
||||||
|
Standard_Boolean ToUseObjectShader() const { return (myFlags & Flags_UseObjectShader) != 0; }
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//! Sets style of hatch defined by predefined stipple mask.
|
||||||
|
Standard_EXPORT void SetHatchStyle (const Aspect_HatchStyle theStyle);
|
||||||
|
|
||||||
|
//! Sets style of hatch defined by custom stipple mask.
|
||||||
|
Standard_EXPORT void SetHatchStyle (const Handle(Graphic3d_HatchStyle)& theStyle);
|
||||||
|
|
||||||
|
//! Sets style of hatch defined by texture map (decal texture with alpha channel should be used).
|
||||||
|
Standard_EXPORT void SetHatchStyle (const Handle(Graphic3d_TextureMap)& theTexture);
|
||||||
|
|
||||||
|
//! Sets material style for hatch lines (texture).
|
||||||
|
Standard_EXPORT void SetHatchMaterial (const Graphic3d_MaterialAspect& theMaterial);
|
||||||
|
|
||||||
|
//! Returns material style for hatch lines (texture).
|
||||||
|
const Graphic3d_MaterialAspect& HatchMaterial() const { return myHatchMaterial; }
|
||||||
|
|
||||||
|
//! Sets boolean flag indicating whether the hatch layer should be drawn or not.
|
||||||
|
Standard_EXPORT void SetToDrawHatch (const Standard_Boolean theToDraw);
|
||||||
|
|
||||||
|
//! Returns boolean flag indicating whether the hatch layer should be drawn or not.
|
||||||
|
Standard_Boolean ToDrawHatch() const { return (myFlags & Flags_DrawHatching) != 0; }
|
||||||
|
|
||||||
|
//! Sets flag controlling behavior of hatch texture mapping on zooming.
|
||||||
|
//! @param theToSet [in] if passed TRUE the texture will keep constant screen-scale independent of zooming.
|
||||||
|
Standard_EXPORT void SetHatchZoomPeristent (const Standard_Boolean theToSet);
|
||||||
|
|
||||||
|
//! Returns value of flag controlling behavior of hatch texture mapping on zooming.
|
||||||
|
Standard_Boolean IsHatchZoomPersistent() { return (myFlags & Flags_HatchZoomPersistent) != 0; }
|
||||||
|
|
||||||
|
//! Sets flag controlling behavior of hatch texture mapping on camera rotation around heading vector.
|
||||||
|
Standard_EXPORT void SetHatchRotationPeristent (const Standard_Boolean theToSet);
|
||||||
|
|
||||||
|
//! Returns value of flag controlling behavior of hatch texture mapping on camera rotation around heading vector.
|
||||||
|
Standard_Boolean IsHatchRotationPersistent() { return (myFlags & Flags_HatchRotationPersistent) != 0; }
|
||||||
|
|
||||||
|
//! Returns true if hatch is defined by texture.
|
||||||
|
Standard_Boolean IsTextureHatch() const { return !myTextureHatch.IsNull(); }
|
||||||
|
|
||||||
|
//! Returns texture map defining the hatch.
|
||||||
|
const Handle(Graphic3d_TextureMap)& TextureHatch() const { return myTextureHatch; }
|
||||||
|
|
||||||
|
//! Returns true if hatch is defined by stipple mask.
|
||||||
|
Standard_Boolean IsStippleHatch() const { return !myStippleHatch.IsNull(); }
|
||||||
|
|
||||||
|
//! Returns the stipple mask.
|
||||||
|
const Handle(Graphic3d_HatchStyle)& StippleHatch() const { return myStippleHatch; }
|
||||||
|
|
||||||
|
//! Returns modification counter for hatching state.
|
||||||
|
Standard_Size HatchingState() const { return myHatchingState; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
enum Flags
|
||||||
|
{
|
||||||
|
Flags_None = 0x00, //!< no flags
|
||||||
|
Flags_UseObjectMaterial = 0x01, //!< use object material
|
||||||
|
Flags_UseObjectTexture = 0x02, //!< use object texture
|
||||||
|
Flags_UseObjectShader = 0x04, //!< use object GLSL program
|
||||||
|
Flags_HatchZoomPersistent = 0x08, //!< zoom-persistent texturing
|
||||||
|
Flags_HatchRotationPersistent = 0x10, //!< rotation-persistent texturing
|
||||||
|
Flags_DrawHatching = 0x20, //!< draw hatching
|
||||||
|
Flags_UseObjectProperties = //!< use entire fill area aspect from object
|
||||||
|
Flags_UseObjectMaterial
|
||||||
|
| Flags_UseObjectTexture
|
||||||
|
| Flags_UseObjectShader
|
||||||
|
};
|
||||||
|
|
||||||
|
void setFlag (const Standard_Boolean theToUse, const unsigned int theFlag)
|
||||||
|
{
|
||||||
|
myFlags = theToUse ? myFlags | theFlag : myFlags & ~theFlag;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
Graphic3d_MaterialAspect myMaterial;
|
||||||
|
Handle(Graphic3d_TextureMap) myTexture;
|
||||||
|
Handle(Graphic3d_ShaderProgram) myShader;
|
||||||
|
Handle(Graphic3d_HatchStyle) myStippleHatch;
|
||||||
|
Handle(Graphic3d_TextureMap) myTextureHatch;
|
||||||
|
Graphic3d_MaterialAspect myHatchMaterial;
|
||||||
|
unsigned int myFlags;
|
||||||
|
Standard_Size myHatchingState;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT(Graphic3d_AspectFillCapping, Graphic3d_Aspects)
|
||||||
|
};
|
||||||
|
|
||||||
|
DEFINE_STANDARD_HANDLE (Graphic3d_AspectFillCapping, Graphic3d_Aspects)
|
||||||
|
|
||||||
|
#endif // _Graphic3d_AspectFillCapping_HeaderFile
|
@@ -12,6 +12,7 @@
|
|||||||
// commercial license or contractual agreement.
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
#include <Graphic3d_Aspects.hxx>
|
#include <Graphic3d_Aspects.hxx>
|
||||||
|
#include <TCollection.hxx>
|
||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(Graphic3d_Aspects, Standard_Transient)
|
IMPLEMENT_STANDARD_RTTIEXT(Graphic3d_Aspects, Standard_Transient)
|
||||||
|
|
||||||
@@ -60,3 +61,69 @@ void Graphic3d_Aspects::SetTextureMap (const Handle(Graphic3d_TextureMap)& theTe
|
|||||||
|
|
||||||
myTextureSet = new Graphic3d_TextureSet (theTexture);
|
myTextureSet = new Graphic3d_TextureSet (theTexture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TCollection_AsciiString Graphic3d_Aspects_ClassName = "Graphic3d_Aspects";
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Dump
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
void Graphic3d_Aspects::Dump (Standard_OStream& OS) const
|
||||||
|
{
|
||||||
|
DUMP_START_KEY (OS, Graphic3d_Aspects_ClassName);
|
||||||
|
|
||||||
|
/*Handle(Graphic3d_ShaderProgram) myProgram;
|
||||||
|
Handle(Graphic3d_TextureSet) myTextureSet;
|
||||||
|
Handle(Graphic3d_MarkerImage) myMarkerImage;
|
||||||
|
Handle(Graphic3d_HatchStyle) myHatchStyle;
|
||||||
|
Handle(TCollection_HAsciiString) myTextFont;
|
||||||
|
Graphic3d_MaterialAspect myFrontMaterial;
|
||||||
|
Graphic3d_MaterialAspect myBackMaterial;
|
||||||
|
*/
|
||||||
|
|
||||||
|
Standard_SStream aTmpStream;
|
||||||
|
myInteriorColor.Dump (aTmpStream);
|
||||||
|
DUMP_VALUES (OS, "InteriorColor", TCollection::ToDumpString (aTmpStream));
|
||||||
|
|
||||||
|
aTmpStream.str ("");
|
||||||
|
myBackInteriorColor.Dump (aTmpStream);
|
||||||
|
DUMP_VALUES (OS, "BackInteriorColor", TCollection::ToDumpString (aTmpStream));
|
||||||
|
|
||||||
|
aTmpStream.str ("");
|
||||||
|
myEdgeColor.Dump (aTmpStream);
|
||||||
|
DUMP_VALUES (OS, "EdgeColor", TCollection::ToDumpString (aTmpStream));
|
||||||
|
|
||||||
|
aTmpStream.str ("");
|
||||||
|
myPolygonOffset.Dump (aTmpStream);
|
||||||
|
DUMP_VALUES (OS, "PolygonOffset", TCollection::ToDumpString (aTmpStream));
|
||||||
|
|
||||||
|
|
||||||
|
/*Aspect_InteriorStyle myInteriorStyle;
|
||||||
|
Graphic3d_TypeOfShadingModel myShadingModel;
|
||||||
|
Graphic3d_AlphaMode myAlphaMode;
|
||||||
|
Standard_ShortReal myAlphaCutoff;
|
||||||
|
|
||||||
|
Aspect_TypeOfLine myLineType;
|
||||||
|
Standard_ShortReal myLineWidth;
|
||||||
|
|
||||||
|
Aspect_TypeOfMarker myMarkerType;
|
||||||
|
Standard_ShortReal myMarkerScale;
|
||||||
|
|
||||||
|
Aspect_TypeOfStyleText myTextStyle;
|
||||||
|
Aspect_TypeOfDisplayText myTextDisplayType;
|
||||||
|
Font_FontAspect myTextFontAspect;
|
||||||
|
Standard_ShortReal myTextAngle;
|
||||||
|
*/
|
||||||
|
|
||||||
|
DUMP_VALUES (OS, "ToSkipFirstEdge", myToSkipFirstEdge);
|
||||||
|
DUMP_VALUES (OS, "ToDistinguishMaterials", myToDistinguishMaterials);
|
||||||
|
DUMP_VALUES (OS, "ToDrawEdges", myToDrawEdges);
|
||||||
|
DUMP_VALUES (OS, "ToDrawSilhouette", myToDrawSilhouette);
|
||||||
|
DUMP_VALUES (OS, "ToSuppressBackFaces", myToSuppressBackFaces);
|
||||||
|
DUMP_VALUES (OS, "ToMapTexture", myToMapTexture);
|
||||||
|
DUMP_VALUES (OS, "IsTextZoomable", myIsTextZoomable);
|
||||||
|
|
||||||
|
|
||||||
|
DUMP_STOP_KEY (OS, Graphic3d_Aspects_ClassName);
|
||||||
|
}
|
||||||
|
@@ -477,6 +477,9 @@ public:
|
|||||||
&& myIsTextZoomable == theOther.myIsTextZoomable;
|
&& myIsTextZoomable == theOther.myIsTextZoomable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Dumps the content of me on the stream <OS>.
|
||||||
|
Standard_EXPORT void Dump (Standard_OStream& OS) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
Handle(Graphic3d_ShaderProgram) myProgram;
|
Handle(Graphic3d_ShaderProgram) myProgram;
|
||||||
|
@@ -24,19 +24,6 @@ IMPLEMENT_STANDARD_RTTIEXT(Graphic3d_ClipPlane,Standard_Transient)
|
|||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
static volatile Standard_Integer THE_CLIP_PLANE_COUNTER = 0;
|
static volatile Standard_Integer THE_CLIP_PLANE_COUNTER = 0;
|
||||||
|
|
||||||
static Handle(Graphic3d_AspectFillArea3d) defaultAspect()
|
|
||||||
{
|
|
||||||
const Graphic3d_MaterialAspect aMaterial (Graphic3d_NOM_DEFAULT);
|
|
||||||
Handle(Graphic3d_AspectFillArea3d) anAspect = new Graphic3d_AspectFillArea3d();
|
|
||||||
anAspect->SetDistinguishOff();
|
|
||||||
anAspect->SetFrontMaterial (aMaterial);
|
|
||||||
anAspect->SetHatchStyle (Aspect_HS_HORIZONTAL);
|
|
||||||
anAspect->SetInteriorStyle (Aspect_IS_SOLID);
|
|
||||||
anAspect->SetInteriorColor (aMaterial.Color());
|
|
||||||
anAspect->SetSuppressBackFaces (false);
|
|
||||||
return anAspect;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -44,19 +31,8 @@ namespace
|
|||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
Graphic3d_ClipPlane::Graphic3d_ClipPlane()
|
Graphic3d_ClipPlane::Graphic3d_ClipPlane()
|
||||||
: myAspect (defaultAspect()),
|
|
||||||
myPrevInChain(NULL),
|
|
||||||
myPlane (0.0, 0.0, 1.0, 0.0),
|
|
||||||
myEquation (0.0, 0.0, 1.0, 0.0),
|
|
||||||
myEquationRev(0.0, 0.0,-1.0, 0.0),
|
|
||||||
myChainLenFwd(1),
|
|
||||||
myFlags (Graphic3d_CappingFlags_None),
|
|
||||||
myEquationMod(0),
|
|
||||||
myAspectMod (0),
|
|
||||||
myIsOn (Standard_True),
|
|
||||||
myIsCapping (Standard_False)
|
|
||||||
{
|
{
|
||||||
makeId();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -64,19 +40,8 @@ Graphic3d_ClipPlane::Graphic3d_ClipPlane()
|
|||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
Graphic3d_ClipPlane::Graphic3d_ClipPlane (const Graphic3d_Vec4d& theEquation)
|
Graphic3d_ClipPlane::Graphic3d_ClipPlane (const Graphic3d_Vec4d& theEquation)
|
||||||
: myAspect (defaultAspect()),
|
|
||||||
myPrevInChain(NULL),
|
|
||||||
myPlane (theEquation.x(), theEquation.y(), theEquation.z(), theEquation.w()),
|
|
||||||
myEquation (theEquation),
|
|
||||||
myEquationRev(0.0, 0.0,-1.0, 0.0),
|
|
||||||
myChainLenFwd(1),
|
|
||||||
myFlags (Graphic3d_CappingFlags_None),
|
|
||||||
myEquationMod(0),
|
|
||||||
myAspectMod (0),
|
|
||||||
myIsOn (Standard_True),
|
|
||||||
myIsCapping (Standard_False)
|
|
||||||
{
|
{
|
||||||
makeId();
|
init (gp_Pln (theEquation.x(), theEquation.y(), theEquation.z(), theEquation.a()));
|
||||||
updateInversedPlane();
|
updateInversedPlane();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,42 +49,27 @@ Graphic3d_ClipPlane::Graphic3d_ClipPlane (const Graphic3d_Vec4d& theEquation)
|
|||||||
// function : Graphic3d_ClipPlane
|
// function : Graphic3d_ClipPlane
|
||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
Graphic3d_ClipPlane::Graphic3d_ClipPlane(const Graphic3d_ClipPlane& theOther)
|
Graphic3d_ClipPlane::Graphic3d_ClipPlane (const Graphic3d_ClipPlane& theOther)
|
||||||
: Standard_Transient(theOther),
|
: Standard_Transient (theOther)
|
||||||
myAspect (defaultAspect()),
|
|
||||||
myPrevInChain(NULL),
|
|
||||||
myPlane (theOther.myPlane),
|
|
||||||
myEquation (theOther.myEquation),
|
|
||||||
myEquationRev(theOther.myEquationRev),
|
|
||||||
myChainLenFwd(1),
|
|
||||||
myFlags (theOther.myFlags),
|
|
||||||
myEquationMod(0),
|
|
||||||
myAspectMod (0),
|
|
||||||
myIsOn (theOther.myIsOn),
|
|
||||||
myIsCapping (theOther.myIsCapping)
|
|
||||||
{
|
{
|
||||||
makeId();
|
*mySectionStyle = *theOther.CappingSectionStyle();
|
||||||
*myAspect = *theOther.CappingAspect();
|
init (theOther.myPlane,
|
||||||
|
theOther.myEquationRev,
|
||||||
|
theOther.myIsOn,
|
||||||
|
theOther.myIsCapping,
|
||||||
|
theOther.ToOverrideCappingAspect(),
|
||||||
|
theOther.CappingSectionStyle());
|
||||||
|
updateInversedPlane();
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
// function : Graphic3d_ClipPlane
|
// function : Graphic3d_ClipPlane
|
||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
Graphic3d_ClipPlane::Graphic3d_ClipPlane(const gp_Pln& thePlane)
|
Graphic3d_ClipPlane::Graphic3d_ClipPlane (const gp_Pln& thePlane)
|
||||||
: myAspect (defaultAspect()),
|
|
||||||
myPrevInChain(NULL),
|
|
||||||
myPlane (thePlane),
|
|
||||||
myChainLenFwd(1),
|
|
||||||
myFlags (Graphic3d_CappingFlags_None),
|
|
||||||
myEquationMod(0),
|
|
||||||
myAspectMod (0),
|
|
||||||
myIsOn (Standard_True),
|
|
||||||
myIsCapping (Standard_False)
|
|
||||||
{
|
{
|
||||||
thePlane.Coefficients (myEquation[0], myEquation[1], myEquation[2], myEquation[3]);
|
init (thePlane);
|
||||||
updateInversedPlane();
|
updateInversedPlane();
|
||||||
makeId();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -131,7 +81,7 @@ void Graphic3d_ClipPlane::SetEquation (const Graphic3d_Vec4d& theEquation)
|
|||||||
myPlane = gp_Pln (theEquation.x(), theEquation.y(), theEquation.z(), theEquation.w());
|
myPlane = gp_Pln (theEquation.x(), theEquation.y(), theEquation.z(), theEquation.w());
|
||||||
myEquation = theEquation;
|
myEquation = theEquation;
|
||||||
updateInversedPlane();
|
updateInversedPlane();
|
||||||
myEquationMod++;
|
myOrientationDirty = Standard_True;
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -143,7 +93,7 @@ void Graphic3d_ClipPlane::SetEquation (const gp_Pln& thePlane)
|
|||||||
myPlane = thePlane;
|
myPlane = thePlane;
|
||||||
thePlane.Coefficients (myEquation[0], myEquation[1], myEquation[2], myEquation[3]);
|
thePlane.Coefficients (myEquation[0], myEquation[1], myEquation[2], myEquation[3]);
|
||||||
updateInversedPlane();
|
updateInversedPlane();
|
||||||
myEquationMod++;
|
myOrientationDirty = Standard_True;
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -178,119 +128,106 @@ Handle(Graphic3d_ClipPlane) Graphic3d_ClipPlane::Clone() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
// function : SetCappingMaterial
|
// function : SetCappingSectionStyle
|
||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
void Graphic3d_ClipPlane::SetCappingMaterial (const Graphic3d_MaterialAspect& theMat)
|
void Graphic3d_ClipPlane::SetCappingSectionStyle (const Handle(Graphic3d_AspectFillCapping)& theStyle)
|
||||||
{
|
{
|
||||||
myAspect->SetFrontMaterial (theMat);
|
mySectionStyle = theStyle;
|
||||||
myAspect->SetInteriorColor (theMat.Color());
|
|
||||||
++myAspectMod;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
// function : SetCappingTexture
|
// function : OrientationMatrix
|
||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
void Graphic3d_ClipPlane::SetCappingTexture (const Handle(Graphic3d_TextureMap)& theTexture)
|
const Graphic3d_Mat4& Graphic3d_ClipPlane::OrientationMatrix() const
|
||||||
{
|
{
|
||||||
if (!theTexture.IsNull())
|
if (myOrientationDirty)
|
||||||
{
|
{
|
||||||
myAspect->SetTextureMapOn();
|
const Standard_ShortReal aDirection[] = {
|
||||||
Handle(Graphic3d_TextureSet) aTextureSet = myAspect->TextureSet();
|
static_cast<Standard_ShortReal> (myEquation[0]),
|
||||||
if (aTextureSet.IsNull() || aTextureSet->Size() != 1)
|
static_cast<Standard_ShortReal> (myEquation[1]),
|
||||||
|
static_cast<Standard_ShortReal> (myEquation[2])
|
||||||
|
};
|
||||||
|
|
||||||
|
const Standard_ShortReal aTranslate[] = {
|
||||||
|
static_cast<Standard_ShortReal> (myEquation[0] * -myEquation[3]),
|
||||||
|
static_cast<Standard_ShortReal> (myEquation[1] * -myEquation[3]),
|
||||||
|
static_cast<Standard_ShortReal> (myEquation[2] * -myEquation[3])
|
||||||
|
};
|
||||||
|
|
||||||
|
Standard_ShortReal aSide1[] = { 0.0f, 0.0f, 0.0f };
|
||||||
|
Standard_ShortReal aSide2[] = { 0.0f, 0.0f, 0.0f };
|
||||||
|
|
||||||
|
const Standard_ShortReal aMagintude = static_cast<Standard_ShortReal> (Sqrt (myEquation[0] * myEquation[0] + myEquation[2] * myEquation[2]));
|
||||||
|
|
||||||
|
if (aMagintude < ShortRealSmall())
|
||||||
{
|
{
|
||||||
aTextureSet = new Graphic3d_TextureSet (theTexture);
|
aSide1[0] = 1.0f;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
aTextureSet->SetFirst (theTexture);
|
aSide1[0] = aDirection[2] / aMagintude;
|
||||||
|
aSide1[2] = -aDirection[0] / aMagintude;
|
||||||
}
|
}
|
||||||
myAspect->SetTextureSet (aTextureSet);
|
|
||||||
|
aSide2[0] = (-aSide1[1] * aDirection[2]) - (-aSide1[2] * aDirection[1]);
|
||||||
|
aSide2[1] = (-aSide1[2] * aDirection[0]) - (-aSide1[0] * aDirection[2]);
|
||||||
|
aSide2[2] = (-aSide1[0] * aDirection[1]) - (-aSide1[1] * aDirection[0]);
|
||||||
|
|
||||||
|
myOrientationMat.SetValue (0, 0, aSide1[0]);
|
||||||
|
myOrientationMat.SetValue (1, 0, aSide1[1]);
|
||||||
|
myOrientationMat.SetValue (2, 0, aSide1[2]);
|
||||||
|
myOrientationMat.SetValue (3, 0, 0.0F);
|
||||||
|
|
||||||
|
myOrientationMat.SetValue (0, 1, aDirection[0]);
|
||||||
|
myOrientationMat.SetValue (1, 1, aDirection[1]);
|
||||||
|
myOrientationMat.SetValue (2, 1, aDirection[2]);
|
||||||
|
myOrientationMat.SetValue (3, 1, 0.0F);
|
||||||
|
|
||||||
|
myOrientationMat.SetValue (0, 2, aSide2[0]);
|
||||||
|
myOrientationMat.SetValue (1, 2, aSide2[1]);
|
||||||
|
myOrientationMat.SetValue (2, 2, aSide2[2]);
|
||||||
|
myOrientationMat.SetValue (3, 2, 0.0F);
|
||||||
|
|
||||||
|
myOrientationMat.SetValue (0, 3, aTranslate[0]);
|
||||||
|
myOrientationMat.SetValue (1, 3, aTranslate[1]);
|
||||||
|
myOrientationMat.SetValue (2, 3, aTranslate[2]);
|
||||||
|
myOrientationMat.SetValue (3, 3, 1.0F);
|
||||||
|
|
||||||
|
myOrientationDirty = Standard_False;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
return myOrientationMat;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : init
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void Graphic3d_ClipPlane::init (const gp_Pln& thePlane,
|
||||||
|
const Graphic3d_Vec4d& theEquationRev,
|
||||||
|
const Standard_Boolean theIsOn,
|
||||||
|
const Standard_Boolean theIsCapping,
|
||||||
|
const Standard_Boolean theOverrideStyle,
|
||||||
|
const Handle(Graphic3d_AspectFillCapping)& theStyle)
|
||||||
|
{
|
||||||
|
if (myEntityUID.IsEmpty())
|
||||||
{
|
{
|
||||||
myAspect->SetTextureMapOff();
|
myEntityUID = TCollection_AsciiString ("Graphic3d_ClipPlane_") //DynamicType()->Name()
|
||||||
myAspect->SetTextureSet (Handle(Graphic3d_TextureSet)());
|
+ TCollection_AsciiString (Standard_Atomic_Increment (&THE_CLIP_PLANE_COUNTER));
|
||||||
}
|
}
|
||||||
++myAspectMod;
|
|
||||||
}
|
|
||||||
|
|
||||||
// =======================================================================
|
myPrevInChain = NULL;
|
||||||
// function : SetCappingHatch
|
myEquationRev = theEquationRev;
|
||||||
// purpose :
|
myChainLenFwd = 1;
|
||||||
// =======================================================================
|
myPlane = thePlane;
|
||||||
void Graphic3d_ClipPlane::SetCappingHatch (const Aspect_HatchStyle theStyle)
|
myPlane.Coefficients (myEquation[0], myEquation[1], myEquation[2], myEquation[3]);
|
||||||
{
|
myIsOn = theIsOn;
|
||||||
myAspect->SetHatchStyle (theStyle);
|
myIsCapping = theIsCapping;
|
||||||
++myAspectMod;
|
myOverrideObjectStyle = theOverrideStyle;
|
||||||
}
|
mySectionStyle = theStyle.IsNull() ? new Graphic3d_AspectFillCapping() : theStyle;
|
||||||
|
myOrientationDirty = Standard_True;
|
||||||
// =======================================================================
|
|
||||||
// function : SetCappingCustomHatch
|
|
||||||
// purpose :
|
|
||||||
// =======================================================================
|
|
||||||
void Graphic3d_ClipPlane::SetCappingCustomHatch (const Handle(Graphic3d_HatchStyle)& theStyle)
|
|
||||||
{
|
|
||||||
myAspect->SetHatchStyle (theStyle);
|
|
||||||
++myAspectMod;
|
|
||||||
}
|
|
||||||
|
|
||||||
// =======================================================================
|
|
||||||
// function : SetCappingHatchOn
|
|
||||||
// purpose :
|
|
||||||
// =======================================================================
|
|
||||||
void Graphic3d_ClipPlane::SetCappingHatchOn()
|
|
||||||
{
|
|
||||||
myAspect->SetInteriorStyle (Aspect_IS_HATCH);
|
|
||||||
++myAspectMod;
|
|
||||||
}
|
|
||||||
|
|
||||||
// =======================================================================
|
|
||||||
// function : SetCappingHatchOff
|
|
||||||
// purpose :
|
|
||||||
// =======================================================================
|
|
||||||
void Graphic3d_ClipPlane::SetCappingHatchOff()
|
|
||||||
{
|
|
||||||
myAspect->SetInteriorStyle (Aspect_IS_SOLID);
|
|
||||||
++myAspectMod;
|
|
||||||
}
|
|
||||||
|
|
||||||
// =======================================================================
|
|
||||||
// function : SetCappingAspect
|
|
||||||
// purpose :
|
|
||||||
// =======================================================================
|
|
||||||
void Graphic3d_ClipPlane::SetCappingAspect (const Handle(Graphic3d_AspectFillArea3d)& theAspect)
|
|
||||||
{
|
|
||||||
myAspect = theAspect;
|
|
||||||
++myAspectMod;
|
|
||||||
}
|
|
||||||
|
|
||||||
// =======================================================================
|
|
||||||
// function : setCappingFlag
|
|
||||||
// purpose :
|
|
||||||
// =======================================================================
|
|
||||||
void Graphic3d_ClipPlane::setCappingFlag (bool theToUse, int theFlag)
|
|
||||||
{
|
|
||||||
if (theToUse)
|
|
||||||
{
|
|
||||||
myFlags |= theFlag;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
myFlags &= ~(theFlag);
|
|
||||||
}
|
|
||||||
++myAspectMod;
|
|
||||||
}
|
|
||||||
|
|
||||||
// =======================================================================
|
|
||||||
// function : makeId
|
|
||||||
// purpose :
|
|
||||||
// =======================================================================
|
|
||||||
void Graphic3d_ClipPlane::makeId()
|
|
||||||
{
|
|
||||||
myId = TCollection_AsciiString ("Graphic3d_ClipPlane_") //DynamicType()->Name()
|
|
||||||
+ TCollection_AsciiString (Standard_Atomic_Increment (&THE_CLIP_PLANE_COUNTER));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -312,7 +249,7 @@ void Graphic3d_ClipPlane::updateChainLen()
|
|||||||
// =======================================================================
|
// =======================================================================
|
||||||
void Graphic3d_ClipPlane::SetChainNextPlane (const Handle(Graphic3d_ClipPlane)& thePlane)
|
void Graphic3d_ClipPlane::SetChainNextPlane (const Handle(Graphic3d_ClipPlane)& thePlane)
|
||||||
{
|
{
|
||||||
++myEquationMod;
|
myOrientationDirty = Standard_True;
|
||||||
if (!myNextInChain.IsNull())
|
if (!myNextInChain.IsNull())
|
||||||
{
|
{
|
||||||
myNextInChain->myPrevInChain = NULL;
|
myNextInChain->myPrevInChain = NULL;
|
||||||
|
@@ -19,9 +19,12 @@
|
|||||||
#include <Aspect_HatchStyle.hxx>
|
#include <Aspect_HatchStyle.hxx>
|
||||||
#include <gp_Pln.hxx>
|
#include <gp_Pln.hxx>
|
||||||
#include <Graphic3d_AspectFillArea3d.hxx>
|
#include <Graphic3d_AspectFillArea3d.hxx>
|
||||||
|
#include <Graphic3d_AspectFillCapping.hxx>
|
||||||
#include <Graphic3d_BndBox3d.hxx>
|
#include <Graphic3d_BndBox3d.hxx>
|
||||||
#include <Graphic3d_CappingFlags.hxx>
|
#include <Graphic3d_CappingFlags.hxx>
|
||||||
|
#include <Graphic3d_Mat4.hxx>
|
||||||
#include <Graphic3d_TextureMap.hxx>
|
#include <Graphic3d_TextureMap.hxx>
|
||||||
|
#include <NCollection_Handle.hxx>
|
||||||
#include <NCollection_Vec4.hxx>
|
#include <NCollection_Vec4.hxx>
|
||||||
#include <Standard_Macro.hxx>
|
#include <Standard_Macro.hxx>
|
||||||
#include <Standard_TypeDef.hxx>
|
#include <Standard_TypeDef.hxx>
|
||||||
@@ -166,44 +169,6 @@ public:
|
|||||||
|
|
||||||
public: // @name user-defined graphical attributes
|
public: // @name user-defined graphical attributes
|
||||||
|
|
||||||
//! Set material for rendering capping surface.
|
|
||||||
//! @param theMat [in] the material.
|
|
||||||
Standard_EXPORT void SetCappingMaterial (const Graphic3d_MaterialAspect& theMat);
|
|
||||||
|
|
||||||
//! @return capping material.
|
|
||||||
const Graphic3d_MaterialAspect& CappingMaterial() const { return myAspect->FrontMaterial(); }
|
|
||||||
|
|
||||||
//! Set texture to be applied on capping surface.
|
|
||||||
//! @param theTexture [in] the texture.
|
|
||||||
Standard_EXPORT void SetCappingTexture (const Handle(Graphic3d_TextureMap)& theTexture);
|
|
||||||
|
|
||||||
//! @return capping texture map.
|
|
||||||
Handle(Graphic3d_TextureMap) CappingTexture() const { return !myAspect->TextureSet().IsNull() && !myAspect->TextureSet()->IsEmpty()
|
|
||||||
? myAspect->TextureSet()->First()
|
|
||||||
: Handle(Graphic3d_TextureMap)(); }
|
|
||||||
|
|
||||||
//! Set hatch style (stipple) and turn hatching on.
|
|
||||||
//! @param theStyle [in] the hatch style.
|
|
||||||
Standard_EXPORT void SetCappingHatch (const Aspect_HatchStyle theStyle);
|
|
||||||
|
|
||||||
//! @return hatching style.
|
|
||||||
Aspect_HatchStyle CappingHatch() const { return (Aspect_HatchStyle)myAspect->HatchStyle()->HatchType(); }
|
|
||||||
|
|
||||||
//! Set custom hatch style (stipple) and turn hatching on.
|
|
||||||
//! @param theStyle [in] the hatch pattern.
|
|
||||||
Standard_EXPORT void SetCappingCustomHatch (const Handle(Graphic3d_HatchStyle)& theStyle);
|
|
||||||
|
|
||||||
//! @return hatching style.
|
|
||||||
const Handle(Graphic3d_HatchStyle)& CappingCustomHatch() const { return myAspect->HatchStyle(); }
|
|
||||||
|
|
||||||
//! Turn on hatching.
|
|
||||||
Standard_EXPORT void SetCappingHatchOn();
|
|
||||||
|
|
||||||
//! Turn off hatching.
|
|
||||||
Standard_EXPORT void SetCappingHatchOff();
|
|
||||||
|
|
||||||
//! @return True if hatching mask is turned on.
|
|
||||||
Standard_Boolean IsHatchOn() const { return myAspect->InteriorStyle() == Aspect_IS_HATCH; }
|
|
||||||
|
|
||||||
//! This ID is used for managing associated resources in graphical driver.
|
//! This ID is used for managing associated resources in graphical driver.
|
||||||
//! The clip plane can be assigned within a range of IO which can be
|
//! The clip plane can be assigned within a range of IO which can be
|
||||||
@@ -214,41 +179,18 @@ public: // @name user-defined graphical attributes
|
|||||||
//! @return clip plane resource identifier string.
|
//! @return clip plane resource identifier string.
|
||||||
const TCollection_AsciiString& GetId() const
|
const TCollection_AsciiString& GetId() const
|
||||||
{
|
{
|
||||||
return myId;
|
return myEntityUID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//! Return capping aspect.
|
//! Returns style used for drawing capping section.
|
||||||
//! @return capping surface rendering aspect.
|
//! @return capping surface rendering aspect.
|
||||||
const Handle(Graphic3d_AspectFillArea3d)& CappingAspect() const { return myAspect; }
|
const Handle(Graphic3d_AspectFillCapping)& CappingSectionStyle() const { return mySectionStyle; }
|
||||||
|
|
||||||
//! Assign capping aspect.
|
//! Sets clipping section filling aspect.
|
||||||
Standard_EXPORT void SetCappingAspect (const Handle(Graphic3d_AspectFillArea3d)& theAspect);
|
Standard_EXPORT void SetCappingSectionStyle (const Handle(Graphic3d_AspectFillCapping)& theStyle);
|
||||||
|
|
||||||
//! Flag indicating whether material for capping plane should be taken from object.
|
|
||||||
//! Default value: FALSE (use dedicated capping plane material).
|
|
||||||
bool ToUseObjectMaterial() const { return (myFlags & Graphic3d_CappingFlags_ObjectMaterial) != 0; }
|
|
||||||
|
|
||||||
//! Set flag for controlling the source of capping plane material.
|
|
||||||
void SetUseObjectMaterial (bool theToUse) { setCappingFlag (theToUse, Graphic3d_CappingFlags_ObjectMaterial); }
|
|
||||||
|
|
||||||
//! Flag indicating whether texture for capping plane should be taken from object.
|
|
||||||
//! Default value: FALSE.
|
|
||||||
bool ToUseObjectTexture() const { return (myFlags & Graphic3d_CappingFlags_ObjectTexture) != 0; }
|
|
||||||
|
|
||||||
//! Set flag for controlling the source of capping plane texture.
|
|
||||||
void SetUseObjectTexture (bool theToUse) { setCappingFlag (theToUse, Graphic3d_CappingFlags_ObjectTexture); }
|
|
||||||
|
|
||||||
//! Flag indicating whether shader program for capping plane should be taken from object.
|
|
||||||
//! Default value: FALSE.
|
|
||||||
bool ToUseObjectShader() const { return (myFlags & Graphic3d_CappingFlags_ObjectShader) != 0; }
|
|
||||||
|
|
||||||
//! Set flag for controlling the source of capping plane shader program.
|
|
||||||
void SetUseObjectShader(bool theToUse) { setCappingFlag (theToUse, Graphic3d_CappingFlags_ObjectShader); }
|
|
||||||
|
|
||||||
//! Return true if some fill area aspect properties should be taken from object.
|
|
||||||
bool ToUseObjectProperties() const { return myFlags != Graphic3d_CappingFlags_None; }
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -384,14 +326,25 @@ public: // @name modification counters
|
|||||||
{
|
{
|
||||||
return myAspectMod;
|
return myAspectMod;
|
||||||
}
|
}
|
||||||
|
//! Flag indicating whether section style of the plane should overrides similar property of object presentation.
|
||||||
|
//! Default value: FALSE (use dedicated presentation aspect style).
|
||||||
|
bool ToOverrideCappingAspect() const { return myOverrideObjectStyle; }
|
||||||
|
|
||||||
|
//! Sets flag for controlling the preference of using section style between clip plane and object.
|
||||||
|
void SetToOverrideCappingAspect (const bool theToOverride) { myOverrideObjectStyle = theToOverride; }
|
||||||
|
|
||||||
|
//! Returns plane's orientation matrix.
|
||||||
|
Standard_EXPORT const Graphic3d_Mat4& OrientationMatrix() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
//! Generate unique object id for OpenGL graphic resource manager.
|
//! Initializes plane and makes unique identifier (UID) to differentiate clipping plane entities.
|
||||||
void makeId();
|
void init (const gp_Pln& thePlane = gp_Pln(),
|
||||||
|
const Graphic3d_Vec4d& theEquationRev = Graphic3d_Vec4d(0.0, 0.0,-1.0, 0.0),
|
||||||
//! Set capping flag.
|
const Standard_Boolean theIsOn = Standard_True,
|
||||||
Standard_EXPORT void setCappingFlag (bool theToUse, int theFlag);
|
const Standard_Boolean theIsCapping = Standard_False,
|
||||||
|
const Standard_Boolean theOverrideStyle = Standard_False,
|
||||||
|
const Handle(Graphic3d_AspectFillCapping)& theStyle = Handle(Graphic3d_AspectFillCapping)());
|
||||||
|
|
||||||
//! Update chain length in backward direction.
|
//! Update chain length in backward direction.
|
||||||
void updateChainLen();
|
void updateChainLen();
|
||||||
@@ -406,10 +359,10 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
Handle(Graphic3d_AspectFillArea3d) myAspect; //!< fill area aspect
|
Handle(Graphic3d_AspectFillCapping) mySectionStyle; //!< Style set for drawing capped solid section.
|
||||||
Handle(Graphic3d_ClipPlane) myNextInChain; //!< next plane in a chain of planes defining logical AND operation
|
Handle(Graphic3d_ClipPlane) myNextInChain; //!< next plane in a chain of planes defining logical AND operation
|
||||||
Graphic3d_ClipPlane* myPrevInChain; //!< previous plane in a chain of planes defining logical AND operation
|
Graphic3d_ClipPlane* myPrevInChain; //!< previous plane in a chain of planes defining logical AND operation
|
||||||
TCollection_AsciiString myId; //!< resource id
|
TCollection_AsciiString myEntityUID; //!< Unique identifier for the plane
|
||||||
gp_Pln myPlane; //!< plane definition
|
gp_Pln myPlane; //!< plane definition
|
||||||
Graphic3d_Vec4d myEquation; //!< plane equation vector
|
Graphic3d_Vec4d myEquation; //!< plane equation vector
|
||||||
Graphic3d_Vec4d myEquationRev; //!< reversed plane equation
|
Graphic3d_Vec4d myEquationRev; //!< reversed plane equation
|
||||||
@@ -419,6 +372,9 @@ private:
|
|||||||
unsigned int myAspectMod; //!< modification counter of aspect
|
unsigned int myAspectMod; //!< modification counter of aspect
|
||||||
Standard_Boolean myIsOn; //!< state of the clipping plane
|
Standard_Boolean myIsOn; //!< state of the clipping plane
|
||||||
Standard_Boolean myIsCapping; //!< state of graphic driver capping
|
Standard_Boolean myIsCapping; //!< state of graphic driver capping
|
||||||
|
Standard_Boolean myOverrideObjectStyle; //!< Flag forcing to use plane's section style rather than section style defined for object
|
||||||
|
mutable Standard_Boolean myOrientationDirty; //!< Boolean flag indicating whether orientation matrix is dirty or not.
|
||||||
|
mutable Graphic3d_Mat4 myOrientationMat; //!< Plane orientation matrix (for visualization purposes).
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -447,3 +447,22 @@ void Graphic3d_Group::AddText (const Handle(Graphic3d_Text)& theTextParams,
|
|||||||
|
|
||||||
Update();
|
Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TCollection_AsciiString Graphic3d_Group_ClassName = "Graphic3d_Group";
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : Dump
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void Graphic3d_Group::Dump (Standard_OStream& OS) const
|
||||||
|
{
|
||||||
|
DUMP_START_KEY (OS, Graphic3d_Group_ClassName);
|
||||||
|
|
||||||
|
//Graphic3d_Structure* myStructure; //!< pointer to the parent structure
|
||||||
|
//Graphic3d_BndBox4f myBounds; //!< bounding box
|
||||||
|
|
||||||
|
DUMP_VALUES (OS, "IsClosed", myIsClosed);
|
||||||
|
DUMP_VALUES (OS, "ContainsFacet", myContainsFacet);
|
||||||
|
|
||||||
|
DUMP_STOP_KEY (OS, Graphic3d_Group_ClassName);
|
||||||
|
}
|
||||||
|
@@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
class Graphic3d_Structure;
|
class Graphic3d_Structure;
|
||||||
class Graphic3d_ArrayOfPrimitives;
|
class Graphic3d_ArrayOfPrimitives;
|
||||||
|
class Graphic3d_AspectFillCapping;
|
||||||
class Graphic3d_Text;
|
class Graphic3d_Text;
|
||||||
|
|
||||||
//! This class allows the definition of groups
|
//! This class allows the definition of groups
|
||||||
@@ -105,6 +106,9 @@ public:
|
|||||||
//! Modifies the current context of the group to give another aspect for all the primitives created after this call in the group.
|
//! Modifies the current context of the group to give another aspect for all the primitives created after this call in the group.
|
||||||
virtual void SetPrimitivesAspect (const Handle(Graphic3d_Aspects)& theAspect) = 0;
|
virtual void SetPrimitivesAspect (const Handle(Graphic3d_Aspects)& theAspect) = 0;
|
||||||
|
|
||||||
|
//! Returns style of filling clipping sections on closed shell primitives.
|
||||||
|
virtual Handle(Graphic3d_AspectFillCapping) FillCappingAspect() const = 0;
|
||||||
|
|
||||||
//! Update presentation aspects after their modification.
|
//! Update presentation aspects after their modification.
|
||||||
virtual void SynchronizeAspects() = 0;
|
virtual void SynchronizeAspects() = 0;
|
||||||
|
|
||||||
@@ -276,6 +280,9 @@ public:
|
|||||||
const Standard_Boolean theHasOwnAnchor = Standard_True);
|
const Standard_Boolean theHasOwnAnchor = Standard_True);
|
||||||
|
|
||||||
|
|
||||||
|
//! Dumps the content of me on the stream <OS>.
|
||||||
|
Standard_EXPORT virtual void Dump (Standard_OStream& OS) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
//! Creates a group in the structure <AStructure>.
|
//! Creates a group in the structure <AStructure>.
|
||||||
|
@@ -21,13 +21,15 @@
|
|||||||
//! - ASPECT_LINE: aspect for line primitives;
|
//! - ASPECT_LINE: aspect for line primitives;
|
||||||
//! - ASPECT_TEXT: aspect for text primitives;
|
//! - ASPECT_TEXT: aspect for text primitives;
|
||||||
//! - ASPECT_MARKER: aspect for marker primitives;
|
//! - ASPECT_MARKER: aspect for marker primitives;
|
||||||
//! - ASPECT_FILL_AREA: aspect for face primitives.
|
//! - ASPECT_FILL_AREA: aspect for face primitives;
|
||||||
|
//! - Graphic3d_ASPECT_FILL_CAPPING: aspect for filling clipping sections.
|
||||||
enum Graphic3d_GroupAspect
|
enum Graphic3d_GroupAspect
|
||||||
{
|
{
|
||||||
Graphic3d_ASPECT_LINE,
|
Graphic3d_ASPECT_LINE,
|
||||||
Graphic3d_ASPECT_TEXT,
|
Graphic3d_ASPECT_TEXT,
|
||||||
Graphic3d_ASPECT_MARKER,
|
Graphic3d_ASPECT_MARKER,
|
||||||
Graphic3d_ASPECT_FILL_AREA
|
Graphic3d_ASPECT_FILL_AREA,
|
||||||
|
Graphic3d_ASPECT_FILL_CAPPING
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _Graphic3d_GroupAspect_HeaderFile
|
#endif // _Graphic3d_GroupAspect_HeaderFile
|
||||||
|
35
src/Graphic3d/Graphic3d_PolygonOffset.cxx
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
// Copyright (c) 2016 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.
|
||||||
|
|
||||||
|
#include <Graphic3d_PolygonOffset.hxx>
|
||||||
|
|
||||||
|
#include <Aspect.hxx>
|
||||||
|
#include <TCollection.hxx>
|
||||||
|
|
||||||
|
const TCollection_AsciiString Graphic3d_PolygonOffset_ClassName = "Graphic3d_PolygonOffset";
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Dump
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
void Graphic3d_PolygonOffset::Dump (Standard_OStream& OS) const
|
||||||
|
{
|
||||||
|
DUMP_START_KEY (OS, Graphic3d_PolygonOffset_ClassName);
|
||||||
|
|
||||||
|
DUMP_VALUES (OS, "Mode", Aspect::PolygonOffsetModeToString (Mode));
|
||||||
|
DUMP_VALUES (OS, "Factor", Factor);
|
||||||
|
DUMP_VALUES (OS, "Units", Units);
|
||||||
|
|
||||||
|
DUMP_STOP_KEY (OS, Graphic3d_PolygonOffset_ClassName);
|
||||||
|
}
|
@@ -15,6 +15,7 @@
|
|||||||
#define _Graphic3d_PolygonOffset_HeaderFile
|
#define _Graphic3d_PolygonOffset_HeaderFile
|
||||||
|
|
||||||
#include <Aspect_PolygonOffsetMode.hxx>
|
#include <Aspect_PolygonOffsetMode.hxx>
|
||||||
|
#include <Standard_OStream.hxx>
|
||||||
|
|
||||||
//! Polygon offset parameters.
|
//! Polygon offset parameters.
|
||||||
struct Graphic3d_PolygonOffset
|
struct Graphic3d_PolygonOffset
|
||||||
@@ -33,6 +34,10 @@ struct Graphic3d_PolygonOffset
|
|||||||
&& Factor == theOther.Factor
|
&& Factor == theOther.Factor
|
||||||
&& Units == theOther.Units;
|
&& Units == theOther.Units;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Dumps the content of me on the stream <OS>.
|
||||||
|
Standard_EXPORT void Dump (Standard_OStream& OS) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _Graphic3d_PolygonOffset_HeaderFile
|
#endif // _Graphic3d_PolygonOffset_HeaderFile
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
#include <gp_Ax2.hxx>
|
#include <gp_Ax2.hxx>
|
||||||
|
|
||||||
#include <Graphic3d_Vertex.hxx>
|
#include <Graphic3d_Vertex.hxx>
|
||||||
|
#include <Font_TextFormatter.hxx>
|
||||||
#include <Graphic3d_HorizontalTextAlignment.hxx>
|
#include <Graphic3d_HorizontalTextAlignment.hxx>
|
||||||
#include <Graphic3d_VerticalTextAlignment.hxx>
|
#include <Graphic3d_VerticalTextAlignment.hxx>
|
||||||
#include <NCollection_String.hxx>
|
#include <NCollection_String.hxx>
|
||||||
@@ -31,6 +32,7 @@
|
|||||||
//! - text formatter. Formatter contains text, height and alignment parameter.
|
//! - text formatter. Formatter contains text, height and alignment parameter.
|
||||||
//!
|
//!
|
||||||
//! This class also has parameters of the text height and H/V alignments.
|
//! This class also has parameters of the text height and H/V alignments.
|
||||||
|
//! More compilated formatting is available using Font_TextFormatter.
|
||||||
class Graphic3d_Text : public Standard_Transient
|
class Graphic3d_Text : public Standard_Transient
|
||||||
{
|
{
|
||||||
DEFINE_STANDARD_RTTIEXT(Graphic3d_Text, Standard_Transient)
|
DEFINE_STANDARD_RTTIEXT(Graphic3d_Text, Standard_Transient)
|
||||||
@@ -55,6 +57,12 @@ public:
|
|||||||
//! Sets text value.
|
//! Sets text value.
|
||||||
void SetText (Standard_CString theText) { myText = theText; }
|
void SetText (Standard_CString theText) { myText = theText; }
|
||||||
|
|
||||||
|
//! @return text formatter
|
||||||
|
const Handle(Font_TextFormatter)& TextFormatter() const { return myFormatter; }
|
||||||
|
|
||||||
|
//! @return default formatter of text withing this context
|
||||||
|
void SetTextFormatter (const Handle(Font_TextFormatter)& theFormatter) { myFormatter = theFormatter; }
|
||||||
|
|
||||||
//! The 3D point of attachment is projected.
|
//! The 3D point of attachment is projected.
|
||||||
//! If the orientation is defined, the text is written in the plane of projection.
|
//! If the orientation is defined, the text is written in the plane of projection.
|
||||||
const gp_Pnt& Position() const { return myOrientation.Location(); }
|
const gp_Pnt& Position() const { return myOrientation.Location(); }
|
||||||
@@ -99,6 +107,8 @@ public:
|
|||||||
void SetVerticalAlignment (const Graphic3d_VerticalTextAlignment theJustification) { myVAlign = theJustification; }
|
void SetVerticalAlignment (const Graphic3d_VerticalTextAlignment theJustification) { myVAlign = theJustification; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Handle(Font_TextFormatter) myFormatter; //!< text formatter
|
||||||
|
|
||||||
NCollection_String myText; //!< text value
|
NCollection_String myText; //!< text value
|
||||||
gp_Ax2 myOrientation; //!< Text orientation in 3D space.
|
gp_Ax2 myOrientation; //!< Text orientation in 3D space.
|
||||||
|
|
||||||
|
@@ -6,5 +6,7 @@ HeaderSection_FileName.cxx
|
|||||||
HeaderSection_FileName.hxx
|
HeaderSection_FileName.hxx
|
||||||
HeaderSection_FileSchema.cxx
|
HeaderSection_FileSchema.cxx
|
||||||
HeaderSection_FileSchema.hxx
|
HeaderSection_FileSchema.hxx
|
||||||
|
HeaderSection_HeaderRecognizer.cxx
|
||||||
|
HeaderSection_HeaderRecognizer.hxx
|
||||||
HeaderSection_Protocol.cxx
|
HeaderSection_Protocol.cxx
|
||||||
HeaderSection_Protocol.hxx
|
HeaderSection_Protocol.hxx
|
||||||
|
@@ -16,12 +16,12 @@
|
|||||||
#include <HeaderSection_Protocol.hxx>
|
#include <HeaderSection_Protocol.hxx>
|
||||||
#include <Interface_Statics.hxx>
|
#include <Interface_Statics.hxx>
|
||||||
|
|
||||||
//StaticHandle(HeaderSection_Protocol, proto);
|
StaticHandle(HeaderSection_Protocol, proto);
|
||||||
|
|
||||||
Handle(HeaderSection_Protocol) HeaderSection::Protocol()
|
Handle(HeaderSection_Protocol) HeaderSection::Protocol()
|
||||||
|
|
||||||
{
|
{
|
||||||
//InitHandleVoid(HeaderSection_Protocol, proto);
|
InitHandleVoid(HeaderSection_Protocol, proto);
|
||||||
return new HeaderSection_Protocol;
|
return proto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
51
src/HeaderSection/HeaderSection_HeaderRecognizer.cxx
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
// Created on: 1994-06-27
|
||||||
|
// Created by: Frederic MAUPAS
|
||||||
|
// Copyright (c) 1994-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.
|
||||||
|
|
||||||
|
|
||||||
|
#include <HeaderSection_FileDescription.hxx>
|
||||||
|
#include <HeaderSection_FileName.hxx>
|
||||||
|
#include <HeaderSection_FileSchema.hxx>
|
||||||
|
#include <HeaderSection_HeaderRecognizer.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT(HeaderSection_HeaderRecognizer,StepData_FileRecognizer)
|
||||||
|
|
||||||
|
static TCollection_AsciiString reco_FileName ("FILE_NAME");
|
||||||
|
static TCollection_AsciiString reco_FileSchema ("FILE_SCHEMA");
|
||||||
|
static TCollection_AsciiString reco_FileDescription ("FILE_DESCRIPTION");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
HeaderSection_HeaderRecognizer::HeaderSection_HeaderRecognizer ()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
void HeaderSection_HeaderRecognizer::Eval
|
||||||
|
(const TCollection_AsciiString& key)
|
||||||
|
{
|
||||||
|
if (key.IsEqual(reco_FileName)) {
|
||||||
|
SetOK(new HeaderSection_FileName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (key.IsEqual(reco_FileSchema)) {
|
||||||
|
SetOK(new HeaderSection_FileSchema);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (key.IsEqual(reco_FileDescription)) {
|
||||||
|
SetOK(new HeaderSection_FileDescription);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
66
src/HeaderSection/HeaderSection_HeaderRecognizer.hxx
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
// Created on: 1994-06-27
|
||||||
|
// Created by: Frederic MAUPAS
|
||||||
|
// Copyright (c) 1994-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 _HeaderSection_HeaderRecognizer_HeaderFile
|
||||||
|
#define _HeaderSection_HeaderRecognizer_HeaderFile
|
||||||
|
|
||||||
|
#include <Standard.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
|
||||||
|
#include <StepData_FileRecognizer.hxx>
|
||||||
|
class TCollection_AsciiString;
|
||||||
|
|
||||||
|
|
||||||
|
class HeaderSection_HeaderRecognizer;
|
||||||
|
DEFINE_STANDARD_HANDLE(HeaderSection_HeaderRecognizer, StepData_FileRecognizer)
|
||||||
|
|
||||||
|
//! Recognizes STEP Standard Header Entities
|
||||||
|
//! (FileName, FileDescription, FileSchema)
|
||||||
|
class HeaderSection_HeaderRecognizer : public StepData_FileRecognizer
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
|
||||||
|
Standard_EXPORT HeaderSection_HeaderRecognizer();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT(HeaderSection_HeaderRecognizer,StepData_FileRecognizer)
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
|
||||||
|
//! Recognizes data types of Header STEP Standard
|
||||||
|
Standard_EXPORT void Eval (const TCollection_AsciiString& key) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _HeaderSection_HeaderRecognizer_HeaderFile
|
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(HeaderSection_Protocol,StepData_Protocol)
|
IMPLEMENT_STANDARD_RTTIEXT(HeaderSection_Protocol,StepData_Protocol)
|
||||||
|
|
||||||
//static Standard_CString schemaName = "header_section";
|
static Standard_CString schemaName = "header_section";
|
||||||
|
|
||||||
HeaderSection_Protocol::HeaderSection_Protocol () { }
|
HeaderSection_Protocol::HeaderSection_Protocol () { }
|
||||||
|
|
||||||
@@ -35,5 +35,5 @@ Handle(Standard_Type)& atype) const
|
|||||||
else return 0;
|
else return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_CString HeaderSection_Protocol::SchemaName(Standard_Integer /*theShematype*/)
|
Standard_CString HeaderSection_Protocol::SchemaName() const
|
||||||
{ return "header_section"; }
|
{ return schemaName; }
|
||||||
|
@@ -42,7 +42,7 @@ public:
|
|||||||
//! Returns a Case Number for each of the HeaderSection Entities
|
//! Returns a Case Number for each of the HeaderSection Entities
|
||||||
Standard_EXPORT virtual Standard_Integer TypeNumber (const Handle(Standard_Type)& atype) const Standard_OVERRIDE;
|
Standard_EXPORT virtual Standard_Integer TypeNumber (const Handle(Standard_Type)& atype) const Standard_OVERRIDE;
|
||||||
|
|
||||||
Standard_EXPORT virtual Standard_CString SchemaName(Standard_Integer theShematype) Standard_OVERRIDE;
|
Standard_EXPORT virtual Standard_CString SchemaName() const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -877,6 +877,62 @@ static IFSelect_ReturnStatus fun27
|
|||||||
return IFSelect_RetVoid;
|
return IFSelect_RetVoid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static IFSelect_ReturnStatus fun28
|
||||||
|
(const Handle(IFSelect_SessionPilot)& pilot)
|
||||||
|
{
|
||||||
|
Standard_Integer argc = pilot->NbWords();
|
||||||
|
const Standard_CString arg1 = pilot->Arg(1);
|
||||||
|
const Standard_CString arg2 = pilot->Arg(2);
|
||||||
|
const Standard_CString arg3 = pilot->Arg(3);
|
||||||
|
// **** DefParam ****
|
||||||
|
Handle(Message_Messenger) sout = Message::DefaultMessenger();
|
||||||
|
if (argc < 2) {
|
||||||
|
Handle(TColStd_HSequenceOfHAsciiString) li = Interface_Static::Items();
|
||||||
|
Standard_Integer i,nb = li->Length();
|
||||||
|
sout<<" List of parameters : "<<nb<<" items :"<<Message_EndLine;
|
||||||
|
for (i = 1; i <= nb; i ++) sout<<" "<<li->Value(i)->ToCString();
|
||||||
|
sout<<Message_EndLine<<" defparam name_param to known more about one"<<Message_EndLine;
|
||||||
|
sout<<" defparam nom_param e options to edit a definition"<<Message_EndLine;
|
||||||
|
|
||||||
|
} else if (argc == 2) {
|
||||||
|
sout<<" Definition of Parameter : "<<arg1<<Message_EndLine;
|
||||||
|
Handle(Interface_Static) unst = Interface_Static::Static (arg1);
|
||||||
|
if (unst.IsNull()) sout<<" undefined"<<Message_EndLine;
|
||||||
|
else unst->Print(sout);
|
||||||
|
return IFSelect_RetVoid;
|
||||||
|
|
||||||
|
} else if (arg2[0] == 'i') {
|
||||||
|
// initialisation : arg1=nompar a2='i' a3=family a4=type [a5=val]
|
||||||
|
if (argc < 5) { sout<<" name init family type [valinit]"<<Message_EndLine; return IFSelect_RetVoid; }
|
||||||
|
char typ = (pilot->Arg(4))[0];
|
||||||
|
Standard_Boolean ok= (argc==5 ? Interface_Static::Init(arg3,arg1,typ) :
|
||||||
|
Interface_Static::Init(arg3,arg1,typ,pilot->Arg(5)));
|
||||||
|
return (ok ? IFSelect_RetDone : IFSelect_RetFail);
|
||||||
|
|
||||||
|
} else if (arg2[0] == 'e') {
|
||||||
|
// edition : arg1=nompar arg2='e' arg3=option arg4...=parametres option
|
||||||
|
char comm[100];
|
||||||
|
if (argc < 4) {
|
||||||
|
sout<<" give name and options ! Options (according type), 1 a time\n"
|
||||||
|
<<" imin ival / imax ival / rmin rval / rmax rval /\n"
|
||||||
|
<<" enum stnum / enum stnum match / eval e1 e2 e3 ... (maxi 10)\n"
|
||||||
|
<<Message_EndLine;
|
||||||
|
return IFSelect_RetVoid;
|
||||||
|
}
|
||||||
|
if (argc > 4) sout<<"Only the command and ONE more arg are considered"<<Message_EndLine;
|
||||||
|
sprintf(comm,"%s %s",pilot->Arg(3),pilot->Arg(4));
|
||||||
|
sout<<"Editing parameter : "<<arg1<<" , by command : "<<comm<<Message_EndLine;
|
||||||
|
|
||||||
|
Handle(Interface_Static) unst = Interface_Static::Static (arg1);
|
||||||
|
if (unst.IsNull()) { sout<<arg1<<" undefined"<<Message_EndLine; return IFSelect_RetError; }
|
||||||
|
if (Interface_Static::Init(unst->Family(),arg1,'&',comm))
|
||||||
|
{ sout<<"Editing done"<<Message_EndLine; return IFSelect_RetDone; }
|
||||||
|
else { sout<<"Command not processed : "<<comm<<Message_EndLine; return IFSelect_RetFail; }
|
||||||
|
}
|
||||||
|
sout<<"Unknown Option : "<<arg2<<Message_EndLine;
|
||||||
|
return IFSelect_RetVoid;
|
||||||
|
}
|
||||||
|
|
||||||
static IFSelect_ReturnStatus fun29
|
static IFSelect_ReturnStatus fun29
|
||||||
(const Handle(IFSelect_SessionPilot)& pilot)
|
(const Handle(IFSelect_SessionPilot)& pilot)
|
||||||
{
|
{
|
||||||
@@ -2438,6 +2494,7 @@ void IFSelect_Functions::Init()
|
|||||||
IFSelect_Act::AddFunc("xsave","filename:string : sauve items-session",fun25);
|
IFSelect_Act::AddFunc("xsave","filename:string : sauve items-session",fun25);
|
||||||
IFSelect_Act::AddFunc("xrestore","filename:string : restaure items-session",fun26);
|
IFSelect_Act::AddFunc("xrestore","filename:string : restaure items-session",fun26);
|
||||||
IFSelect_Act::AddFunc("param","nompar:string : displays parameter value; + nompar val : changes it",fun27);
|
IFSelect_Act::AddFunc("param","nompar:string : displays parameter value; + nompar val : changes it",fun27);
|
||||||
|
IFSelect_Act::AddFunc("defparam","nompar:string : display def. param; also : nompar edit, nompar init",fun28);
|
||||||
|
|
||||||
IFSelect_Act::AddFunc("sentfiles","Lists files sent from last Load",fun29);
|
IFSelect_Act::AddFunc("sentfiles","Lists files sent from last Load",fun29);
|
||||||
IFSelect_Act::AddFunc("fileprefix","prefix:string : definit File Prefix",fun30);
|
IFSelect_Act::AddFunc("fileprefix","prefix:string : definit File Prefix",fun30);
|
||||||
|
@@ -264,8 +264,8 @@ IFSelect_ModelCopier::IFSelect_ModelCopier () { }
|
|||||||
{
|
{
|
||||||
Interface_CheckIterator checks;
|
Interface_CheckIterator checks;
|
||||||
checks.SetName ("X-STEP WorkSession : Send All");
|
checks.SetName ("X-STEP WorkSession : Send All");
|
||||||
//Message::DefaultMessenger() <<
|
Message::DefaultMessenger() <<
|
||||||
// "** WorkSession : Sending all data"<<Message_EndLine;
|
"** WorkSession : Sending all data"<<Message_EndLine;
|
||||||
Handle(Interface_InterfaceModel) model = G.Model();
|
Handle(Interface_InterfaceModel) model = G.Model();
|
||||||
if (model.IsNull() || protocol.IsNull() || WL.IsNull()) return checks;
|
if (model.IsNull() || protocol.IsNull() || WL.IsNull()) return checks;
|
||||||
|
|
||||||
|
@@ -71,6 +71,7 @@
|
|||||||
#include <Interface_ReportEntity.hxx>
|
#include <Interface_ReportEntity.hxx>
|
||||||
#include <Interface_ShareFlags.hxx>
|
#include <Interface_ShareFlags.hxx>
|
||||||
#include <Interface_ShareTool.hxx>
|
#include <Interface_ShareTool.hxx>
|
||||||
|
#include <Interface_Static.hxx>
|
||||||
#include <Message.hxx>
|
#include <Message.hxx>
|
||||||
#include <Message_Messenger.hxx>
|
#include <Message_Messenger.hxx>
|
||||||
#include <OSD_Path.hxx>
|
#include <OSD_Path.hxx>
|
||||||
@@ -211,7 +212,7 @@ IFSelect_ReturnStatus IFSelect_WorkSession::ReadFile
|
|||||||
{
|
{
|
||||||
if (thelibrary.IsNull()) return IFSelect_RetVoid;
|
if (thelibrary.IsNull()) return IFSelect_RetVoid;
|
||||||
if (theprotocol.IsNull()) return IFSelect_RetVoid;
|
if (theprotocol.IsNull()) return IFSelect_RetVoid;
|
||||||
Handle(Interface_InterfaceModel) model =myModel;
|
Handle(Interface_InterfaceModel) model;
|
||||||
IFSelect_ReturnStatus status = IFSelect_RetVoid;
|
IFSelect_ReturnStatus status = IFSelect_RetVoid;
|
||||||
try {
|
try {
|
||||||
OCC_CATCH_SIGNALS
|
OCC_CATCH_SIGNALS
|
||||||
@@ -1075,6 +1076,30 @@ Standard_Integer IFSelect_WorkSession::NextIdentForLabel
|
|||||||
// #################################################################
|
// #################################################################
|
||||||
// .... Parametres (Int et Text) ....
|
// .... Parametres (Int et Text) ....
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Handle(Standard_Transient) IFSelect_WorkSession::NewParamFromStatic
|
||||||
|
(const Standard_CString statname, const Standard_CString name)
|
||||||
|
{
|
||||||
|
Handle(Standard_Transient) param;
|
||||||
|
Handle(Interface_Static) stat = Interface_Static::Static(statname);
|
||||||
|
if (stat.IsNull()) return param;
|
||||||
|
if (stat->Type() == Interface_ParamInteger) {
|
||||||
|
Handle(IFSelect_IntParam) intpar = new IFSelect_IntParam;
|
||||||
|
intpar->SetStaticName (statname);
|
||||||
|
param = intpar;
|
||||||
|
} else {
|
||||||
|
param = stat->HStringValue();
|
||||||
|
}
|
||||||
|
if (param.IsNull()) return param;
|
||||||
|
if ( AddNamedItem (name, param) == 0 ) param.Nullify();
|
||||||
|
return param;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function :
|
//function :
|
||||||
//purpose :
|
//purpose :
|
||||||
@@ -1676,12 +1701,11 @@ Standard_Integer IFSelect_WorkSession::RunTransformer
|
|||||||
{
|
{
|
||||||
Standard_Integer effect = 0;
|
Standard_Integer effect = 0;
|
||||||
if (transf.IsNull() || !IsLoaded()) return effect;
|
if (transf.IsNull() || !IsLoaded()) return effect;
|
||||||
|
|
||||||
Handle(Interface_InterfaceModel) newmod; // Null au depart
|
Handle(Interface_InterfaceModel) newmod; // Null au depart
|
||||||
Interface_CheckIterator checks;
|
Interface_CheckIterator checks;
|
||||||
checks.SetName("X-STEP WorkSession : RunTransformer");
|
checks.SetName("X-STEP WorkSession : RunTransformer");
|
||||||
Standard_Boolean res = transf->Perform
|
Standard_Boolean res = transf->Perform
|
||||||
(thegraph->Graph(),theprotocol,checks,myModel);
|
(thegraph->Graph(),theprotocol,checks,newmod);
|
||||||
|
|
||||||
if (!checks.IsEmpty(Standard_False)) {
|
if (!checks.IsEmpty(Standard_False)) {
|
||||||
Handle(Message_Messenger) sout = Message::DefaultMessenger();
|
Handle(Message_Messenger) sout = Message::DefaultMessenger();
|
||||||
@@ -3031,7 +3055,7 @@ Handle(IFSelect_Selection) IFSelect_WorkSession::GiveSelection
|
|||||||
}
|
}
|
||||||
|
|
||||||
Handle(IFSelect_Selection) sel;
|
Handle(IFSelect_Selection) sel;
|
||||||
if (np >= 0)
|
if (np >= 0)
|
||||||
{
|
{
|
||||||
nomsel[np] = 0;
|
nomsel[np] = 0;
|
||||||
}
|
}
|
||||||
|
@@ -407,6 +407,13 @@ public:
|
|||||||
//! - other values are ignored
|
//! - other values are ignored
|
||||||
Standard_EXPORT Standard_Integer NextIdentForLabel (const Standard_CString label, const Standard_Integer id, const Standard_Integer mode = 0) const;
|
Standard_EXPORT Standard_Integer NextIdentForLabel (const Standard_CString label, const Standard_Integer id, const Standard_Integer mode = 0) const;
|
||||||
|
|
||||||
|
//! Creates a parameter as being bound to a Static
|
||||||
|
//! If the Static is Integer, this creates an IntParam bound to
|
||||||
|
//! it by its name. Else this creates a String which is the value
|
||||||
|
//! of the Static.
|
||||||
|
//! Returns a null handle if <statname> is unknown as a Static
|
||||||
|
Standard_EXPORT Handle(Standard_Transient) NewParamFromStatic (const Standard_CString statname, const Standard_CString name = "");
|
||||||
|
|
||||||
//! Returns an IntParam, given its Ident in the Session
|
//! Returns an IntParam, given its Ident in the Session
|
||||||
//! Null result if <id> is not suitable for an IntParam
|
//! Null result if <id> is not suitable for an IntParam
|
||||||
//! (undefined, or defined for another kind of variable)
|
//! (undefined, or defined for another kind of variable)
|
||||||
|
@@ -39,8 +39,10 @@
|
|||||||
#endif
|
#endif
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
static int errh = 1;
|
||||||
|
|
||||||
void Interface_CheckTool::raisecheck (Standard_Failure& theException,Handle(Interface_Check)& ach)
|
|
||||||
|
static void raisecheck (Standard_Failure& theException,Handle(Interface_Check)& ach)
|
||||||
{
|
{
|
||||||
char mess[100];
|
char mess[100];
|
||||||
sprintf (mess,"** Exception Raised during Check : %s **",
|
sprintf (mess,"** Exception Raised during Check : %s **",
|
||||||
@@ -73,7 +75,6 @@ Interface_CheckTool::Interface_CheckTool(const Handle(Interface_InterfaceModel)&
|
|||||||
theshare (model,protocol)
|
theshare (model,protocol)
|
||||||
{
|
{
|
||||||
thestat = 0;
|
thestat = 0;
|
||||||
errh = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -87,7 +88,6 @@ Interface_CheckTool::Interface_CheckTool(const Handle(Interface_InterfaceModel)&
|
|||||||
{
|
{
|
||||||
thestat = 0;
|
thestat = 0;
|
||||||
thegtool->Reservate(model->NbEntities());
|
thegtool->Reservate(model->NbEntities());
|
||||||
errh = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -99,7 +99,6 @@ Interface_CheckTool::Interface_CheckTool(const Handle(Interface_InterfaceModel)&
|
|||||||
Interface_CheckTool::Interface_CheckTool(const Interface_Graph& graph)
|
Interface_CheckTool::Interface_CheckTool(const Interface_Graph& graph)
|
||||||
: thegtool(graph.Model()->GTool()) , theshare (graph)
|
: thegtool(graph.Model()->GTool()) , theshare (graph)
|
||||||
{
|
{
|
||||||
errh = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -111,7 +110,6 @@ Interface_CheckTool::Interface_CheckTool(const Interface_Graph& graph)
|
|||||||
Interface_CheckTool::Interface_CheckTool(const Handle(Interface_HGraph)& hgraph)
|
Interface_CheckTool::Interface_CheckTool(const Handle(Interface_HGraph)& hgraph)
|
||||||
: thegtool(hgraph->Graph().Model()->GTool()) , theshare (hgraph)
|
: thegtool(hgraph->Graph().Model()->GTool()) , theshare (hgraph)
|
||||||
{
|
{
|
||||||
errh = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -128,10 +126,10 @@ void Interface_CheckTool::FillCheck(const Handle(Standard_Transient)& ent,
|
|||||||
Standard_Integer CN;
|
Standard_Integer CN;
|
||||||
if (thegtool->Select(ent,module,CN)) {
|
if (thegtool->Select(ent,module,CN)) {
|
||||||
// Sans try/catch (fait par l appelant, evite try/catch en boucle)
|
// Sans try/catch (fait par l appelant, evite try/catch en boucle)
|
||||||
//if (!errh) {
|
if (!errh) {
|
||||||
// module->CheckCase(CN,ent,sh,ach);
|
module->CheckCase(CN,ent,sh,ach);
|
||||||
// return;
|
return;
|
||||||
//}
|
}
|
||||||
// Avec try/catch
|
// Avec try/catch
|
||||||
try {
|
try {
|
||||||
OCC_CATCH_SIGNALS
|
OCC_CATCH_SIGNALS
|
||||||
@@ -202,7 +200,7 @@ Handle(Interface_Check) Interface_CheckTool::Check(const Standard_Integer num)
|
|||||||
Handle(Interface_InterfaceModel) model = theshare.Model();
|
Handle(Interface_InterfaceModel) model = theshare.Model();
|
||||||
Handle(Standard_Transient) ent = model->Value(num);
|
Handle(Standard_Transient) ent = model->Value(num);
|
||||||
Handle(Interface_Check) ach = new Interface_Check(ent); // non filtre par "Warning" : tel quel
|
Handle(Interface_Check) ach = new Interface_Check(ent); // non filtre par "Warning" : tel quel
|
||||||
//errh = 1;
|
errh = 1;
|
||||||
FillCheck(ent,theshare,ach);
|
FillCheck(ent,theshare,ach);
|
||||||
return ach;
|
return ach;
|
||||||
}
|
}
|
||||||
@@ -223,13 +221,13 @@ void Interface_CheckTool::CheckSuccess (const Standard_Boolean reset)
|
|||||||
("Interface Model : Global Check");
|
("Interface Model : Global Check");
|
||||||
Handle(Interface_InterfaceModel) model = theshare.Model();
|
Handle(Interface_InterfaceModel) model = theshare.Model();
|
||||||
if (model->GlobalCheck()->NbFails() > 0) throw Interface_CheckFailure("Interface Model : Global Check");
|
if (model->GlobalCheck()->NbFails() > 0) throw Interface_CheckFailure("Interface Model : Global Check");
|
||||||
//Handle(Interface_Check) modchk = new Interface_Check;
|
Handle(Interface_Check) modchk = new Interface_Check;
|
||||||
//model->VerifyCheck(modchk);
|
model->VerifyCheck(modchk);
|
||||||
//if (!model->Protocol().IsNull()) model->Protocol()->GlobalCheck (theshare.Graph(),modchk);
|
if (!model->Protocol().IsNull()) model->Protocol()->GlobalCheck (theshare.Graph(),modchk);
|
||||||
//if (modchk->HasFailed()) throw Interface_CheckFailure("Interface Model : Verify Check");
|
if (modchk->HasFailed()) throw Interface_CheckFailure("Interface Model : Verify Check");
|
||||||
//if (thestat == 3) return; // tout teste et ca passe
|
if (thestat == 3) return; // tout teste et ca passe
|
||||||
|
|
||||||
//errh = 0; // Pas de try/catch, car justement on raise
|
errh = 0; // Pas de try/catch, car justement on raise
|
||||||
Standard_Integer nb = model->NbEntities();
|
Standard_Integer nb = model->NbEntities();
|
||||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||||
if (model->IsErrorEntity(i)) throw Interface_CheckFailure("Interface Model : an Entity is recorded as Erroneous");
|
if (model->IsErrorEntity(i)) throw Interface_CheckFailure("Interface Model : an Entity is recorded as Erroneous");
|
||||||
@@ -264,13 +262,13 @@ Interface_CheckIterator Interface_CheckTool::CompleteCheckList ()
|
|||||||
Interface_CheckIterator res;
|
Interface_CheckIterator res;
|
||||||
res.SetModel(model);
|
res.SetModel(model);
|
||||||
Handle(Interface_Check) globch = model->GlobalCheck(); // GlobalCheck Statique
|
Handle(Interface_Check) globch = model->GlobalCheck(); // GlobalCheck Statique
|
||||||
//if (!model->Protocol().IsNull()) model->Protocol()->GlobalCheck (theshare.Graph(),globch);
|
if (!model->Protocol().IsNull()) model->Protocol()->GlobalCheck (theshare.Graph(),globch);
|
||||||
//model->VerifyCheck(globch); // GlobalCheck Dynamique
|
model->VerifyCheck(globch); // GlobalCheck Dynamique
|
||||||
//if (globch->HasFailed() || globch->HasWarnings()) res.Add(globch,0);
|
if (globch->HasFailed() || globch->HasWarnings()) res.Add(globch,0);
|
||||||
//if (globch->HasFailed()) thestat |= 12;
|
if (globch->HasFailed()) thestat |= 12;
|
||||||
|
|
||||||
Standard_Integer i=0,n0 = 1, nb = model->NbEntities();
|
Standard_Integer i=0,n0 = 1, nb = model->NbEntities();
|
||||||
//errh = 0;
|
errh = 0;
|
||||||
while (n0 <= nb) {
|
while (n0 <= nb) {
|
||||||
Handle(Interface_Check) ach = new Interface_Check;
|
Handle(Interface_Check) ach = new Interface_Check;
|
||||||
Handle(Standard_Transient) ent;
|
Handle(Standard_Transient) ent;
|
||||||
@@ -318,11 +316,11 @@ Interface_CheckIterator Interface_CheckTool::CheckList ()
|
|||||||
res.SetModel(model);
|
res.SetModel(model);
|
||||||
Standard_Integer i=0, n0 = 1, nb = model->NbEntities();
|
Standard_Integer i=0, n0 = 1, nb = model->NbEntities();
|
||||||
Handle(Interface_Check) globch = model->GlobalCheck();
|
Handle(Interface_Check) globch = model->GlobalCheck();
|
||||||
//if (!model->Protocol().IsNull()) model->Protocol()->GlobalCheck (theshare.Graph(),globch);
|
if (!model->Protocol().IsNull()) model->Protocol()->GlobalCheck (theshare.Graph(),globch);
|
||||||
//model->VerifyCheck(globch);
|
model->VerifyCheck(globch);
|
||||||
//if (globch->HasFailed()) { thestat |= 12; res.Add(globch,0); }
|
if (globch->HasFailed()) { thestat |= 12; res.Add(globch,0); }
|
||||||
|
|
||||||
//errh = 0;
|
errh = 0;
|
||||||
while (n0 <= nb) {
|
while (n0 <= nb) {
|
||||||
Handle(Interface_Check) ach = new Interface_Check;
|
Handle(Interface_Check) ach = new Interface_Check;
|
||||||
Handle(Standard_Transient) ent;
|
Handle(Standard_Transient) ent;
|
||||||
@@ -370,7 +368,7 @@ Interface_CheckIterator Interface_CheckTool::AnalyseCheckList ()
|
|||||||
res.SetModel(model);
|
res.SetModel(model);
|
||||||
Standard_Integer i=0, n0 = 1, nb = model->NbEntities();
|
Standard_Integer i=0, n0 = 1, nb = model->NbEntities();
|
||||||
|
|
||||||
//errh = 0;
|
errh = 0;
|
||||||
while (n0 <= nb) {
|
while (n0 <= nb) {
|
||||||
Handle(Interface_Check) ach = new Interface_Check;
|
Handle(Interface_Check) ach = new Interface_Check;
|
||||||
try {
|
try {
|
||||||
@@ -410,7 +408,7 @@ Interface_CheckIterator Interface_CheckTool::VerifyCheckList ()
|
|||||||
res.SetModel(model);
|
res.SetModel(model);
|
||||||
Standard_Integer i=0, n0 = 1, nb = model->NbEntities();
|
Standard_Integer i=0, n0 = 1, nb = model->NbEntities();
|
||||||
|
|
||||||
//errh = 0;
|
errh = 0;
|
||||||
while (n0 <= nb) {
|
while (n0 <= nb) {
|
||||||
Handle(Standard_Transient) ent;
|
Handle(Standard_Transient) ent;
|
||||||
Handle(Interface_Check) ach = new Interface_Check;
|
Handle(Interface_Check) ach = new Interface_Check;
|
||||||
@@ -454,7 +452,7 @@ Interface_CheckIterator Interface_CheckTool::WarningCheckList ()
|
|||||||
res.SetModel(model);
|
res.SetModel(model);
|
||||||
Standard_Integer i=0, n0 = 1, nb = model->NbEntities();
|
Standard_Integer i=0, n0 = 1, nb = model->NbEntities();
|
||||||
|
|
||||||
//errh = 0;
|
errh = 0;
|
||||||
while (n0 <= nb) {
|
while (n0 <= nb) {
|
||||||
Handle(Interface_Check) ach = new Interface_Check;
|
Handle(Interface_Check) ach = new Interface_Check;
|
||||||
Handle(Standard_Transient) ent;
|
Handle(Standard_Transient) ent;
|
||||||
|
@@ -131,12 +131,10 @@ protected:
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
||||||
Standard_EXPORT void raisecheck(Standard_Failure& theException, Handle(Interface_Check)& ach);
|
|
||||||
|
|
||||||
Handle(Interface_GTool) thegtool;
|
Handle(Interface_GTool) thegtool;
|
||||||
Interface_ShareTool theshare;
|
Interface_ShareTool theshare;
|
||||||
Standard_Integer thestat;
|
Standard_Integer thestat;
|
||||||
Standard_Integer errh;
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@@ -66,7 +66,7 @@ Interface_FileReaderTool::Interface_FileReaderTool ()
|
|||||||
{
|
{
|
||||||
themessenger = Message::DefaultMessenger();
|
themessenger = Message::DefaultMessenger();
|
||||||
theerrhand = Standard_True;
|
theerrhand = Standard_True;
|
||||||
thetrace = 0;
|
thetrace = 1;
|
||||||
thenbrep0 = thenbreps = 0;
|
thenbrep0 = thenbreps = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -334,11 +334,8 @@ void Interface_FileReaderTool::LoadModel
|
|||||||
}
|
}
|
||||||
catch (Standard_Failure const&) {
|
catch (Standard_Failure const&) {
|
||||||
// Sendinf of message : Internal error during the header reading
|
// Sendinf of message : Internal error during the header reading
|
||||||
if (!TF.IsNull())
|
Message_Msg Msg11("XSTEP_11");
|
||||||
{
|
TF->Send (Msg11, Message_Info);
|
||||||
Message_Msg Msg11("XSTEP_11");
|
|
||||||
TF->Send(Msg11, Message_Info);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -370,12 +367,9 @@ void Interface_FileReaderTool::LoadModel
|
|||||||
// .. Fin Lecture ..
|
// .. Fin Lecture ..
|
||||||
if (anent.IsNull()) {
|
if (anent.IsNull()) {
|
||||||
// Sending of message : Number of ignored Null Entities
|
// Sending of message : Number of ignored Null Entities
|
||||||
if (!TF.IsNull())
|
Message_Msg Msg21("XSTEP_21");
|
||||||
{
|
Msg21.Arg(amodel->NbEntities());
|
||||||
Message_Msg Msg21("XSTEP_21");
|
TF->Send (Msg21, Message_Info);
|
||||||
Msg21.Arg(amodel->NbEntities());
|
|
||||||
TF->Send(Msg21, Message_Info);
|
|
||||||
}
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// LoadedEntity fait AddEntity MAIS PAS SetReport (en bloc a la fin)
|
// LoadedEntity fait AddEntity MAIS PAS SetReport (en bloc a la fin)
|
||||||
@@ -398,18 +392,13 @@ void Interface_FileReaderTool::LoadModel
|
|||||||
//:abv 03Apr00: anent is actually a previous one: if (anent.IsNull())
|
//:abv 03Apr00: anent is actually a previous one: if (anent.IsNull())
|
||||||
anent = thereader->BoundEntity(num);
|
anent = thereader->BoundEntity(num);
|
||||||
if (anent.IsNull()) {
|
if (anent.IsNull()) {
|
||||||
if (thetrace > 0)
|
if (thetrace > 0)
|
||||||
{
|
{
|
||||||
// Sending of message : Number of ignored Null Entities
|
// Sending of message : Number of ignored Null Entities
|
||||||
if (!TF.IsNull())
|
Message_Msg Msg21("XSTEP_21");
|
||||||
{
|
Msg21.Arg(amodel->NbEntities()+1);
|
||||||
|
TF->Send (Msg21, Message_Info);
|
||||||
Message_Msg Msg21("XSTEP_21");
|
continue;
|
||||||
Msg21.Arg(amodel->NbEntities() + 1);
|
|
||||||
|
|
||||||
TF->Send(Msg21, Message_Info);
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*Handle(Interface_Check)*/ ach = new Interface_Check(anent);
|
/*Handle(Interface_Check)*/ ach = new Interface_Check(anent);
|
||||||
@@ -419,13 +408,10 @@ void Interface_FileReaderTool::LoadModel
|
|||||||
ach->SendFail (Msg278);
|
ach->SendFail (Msg278);
|
||||||
|
|
||||||
if (ierr == 2) {
|
if (ierr == 2) {
|
||||||
// Sending of message : reading of entity failed
|
// Sending of message : reading of entity failed
|
||||||
if (!TF.IsNull())
|
Message_Msg Msg22("XSTEP_22");
|
||||||
{
|
Msg22.Arg(amodel->StringLabel(anent));
|
||||||
Message_Msg Msg22("XSTEP_22");
|
TF->Send (Msg22, Message_Info);
|
||||||
Msg22.Arg(amodel->StringLabel(anent));
|
|
||||||
TF->Send(Msg22, Message_Info);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -434,13 +420,10 @@ void Interface_FileReaderTool::LoadModel
|
|||||||
ierr = 1;
|
ierr = 1;
|
||||||
// ce qui serait bien ici serait de recuperer le texte de l erreur pour ach ...
|
// ce qui serait bien ici serait de recuperer le texte de l erreur pour ach ...
|
||||||
if (thetrace > 0) {
|
if (thetrace > 0) {
|
||||||
// Sending of message : recovered entity
|
// Sending of message : recovered entity
|
||||||
if (!TF.IsNull())
|
Message_Msg Msg23("XSTEP_23");
|
||||||
{
|
Msg23.Arg(num);
|
||||||
Message_Msg Msg23("XSTEP_23");
|
TF->Send (Msg23, Message_Info);
|
||||||
Msg23.Arg(num);
|
|
||||||
TF->Send(Msg23, Message_Info);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finalement, on charge une Entite Inconnue
|
// Finalement, on charge une Entite Inconnue
|
||||||
@@ -461,12 +444,9 @@ void Interface_FileReaderTool::LoadModel
|
|||||||
else {
|
else {
|
||||||
if (thetrace > 0) {
|
if (thetrace > 0) {
|
||||||
// Sending of message : reading of entity failed
|
// Sending of message : reading of entity failed
|
||||||
if (!TF.IsNull())
|
Message_Msg Msg22("XSTEP_22");
|
||||||
{
|
Msg22.Arg(amodel->StringLabel(anent));
|
||||||
Message_Msg Msg22("XSTEP_22");
|
TF->Send (Msg22, Message_Info);
|
||||||
Msg22.Arg(amodel->StringLabel(anent));
|
|
||||||
TF->Send(Msg22, Message_Info);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// On garde <rep> telle quelle : pas d analyse fichier supplementaire,
|
// On garde <rep> telle quelle : pas d analyse fichier supplementaire,
|
||||||
// Mais la phase preliminaire eventuelle est conservee
|
// Mais la phase preliminaire eventuelle est conservee
|
||||||
@@ -480,12 +460,9 @@ void Interface_FileReaderTool::LoadModel
|
|||||||
if (thetrace > 0)
|
if (thetrace > 0)
|
||||||
{
|
{
|
||||||
// Sending of message : report
|
// Sending of message : report
|
||||||
if (!TF.IsNull())
|
Message_Msg Msg24("XSTEP_24");
|
||||||
{
|
Msg24.Arg(thenbreps);
|
||||||
Message_Msg Msg24("XSTEP_24");
|
TF->Send (Msg24, Message_Info);
|
||||||
Msg24.Arg(thenbreps);
|
|
||||||
TF->Send(Msg24, Message_Info);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
amodel->Reservate (-thenbreps-10);
|
amodel->Reservate (-thenbreps-10);
|
||||||
thenbreps = thereports->Upper();
|
thenbreps = thereports->Upper();
|
||||||
@@ -506,11 +483,8 @@ void Interface_FileReaderTool::LoadModel
|
|||||||
}
|
}
|
||||||
catch (Standard_Failure const&) {
|
catch (Standard_Failure const&) {
|
||||||
// Sendinf of message : Internal error during the header reading
|
// Sendinf of message : Internal error during the header reading
|
||||||
if (!TF.IsNull())
|
Message_Msg Msg11("XSTEP_11");
|
||||||
{
|
TF->Send (Msg11, Message_Info);
|
||||||
Message_Msg Msg11("XSTEP_11");
|
|
||||||
TF->Send(Msg11, Message_Info);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -539,13 +513,10 @@ Handle(Standard_Transient) Interface_FileReaderTool::LoadedEntity
|
|||||||
// Trace Entite Inconnue
|
// Trace Entite Inconnue
|
||||||
if (thetrace >= 2 && theproto->IsUnknownEntity(anent)) {
|
if (thetrace >= 2 && theproto->IsUnknownEntity(anent)) {
|
||||||
Handle(Message_Messenger) TF = Messenger();
|
Handle(Message_Messenger) TF = Messenger();
|
||||||
if (!TF.IsNull())
|
Message_Msg Msg22("XSTEP_22");
|
||||||
{
|
// Sending of message : reading of entity failed
|
||||||
Message_Msg Msg22("XSTEP_22");
|
Msg22.Arg(themodel->StringLabel(anent)->String());
|
||||||
// Sending of message : reading of entity failed
|
TF->Send (Msg22, Message_Info);
|
||||||
Msg22.Arg(themodel->StringLabel(anent)->String());
|
|
||||||
TF->Send(Msg22, Message_Info);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// .. Chargement proprement dit : Specifique de la Norme ..
|
// .. Chargement proprement dit : Specifique de la Norme ..
|
||||||
AnalyseRecord(num,anent,ach);
|
AnalyseRecord(num,anent,ach);
|
||||||
@@ -574,7 +545,7 @@ Handle(Standard_Transient) Interface_FileReaderTool::LoadedEntity
|
|||||||
}
|
}
|
||||||
thereports->SetValue(irep,rep);
|
thereports->SetValue(irep,rep);
|
||||||
|
|
||||||
if ( thetrace >= 2 && !Messenger().IsNull())
|
if ( thetrace >= 2)
|
||||||
ach->Print (Messenger(),2);
|
ach->Print (Messenger(),2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1040,75 +1040,3 @@ Handle(TColStd_HSequenceOfHAsciiString) Interface_InterfaceModel::ListTemplates
|
|||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : GetParam
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
Handle(Interface_Static) Interface_InterfaceModel::GetParam
|
|
||||||
(const Standard_CString theParamName) const
|
|
||||||
{
|
|
||||||
Handle(Interface_Static) aParam;
|
|
||||||
if (myParamMap.IsBound(theParamName))
|
|
||||||
{
|
|
||||||
Handle(Standard_Transient) result;
|
|
||||||
myParamMap.Find(theParamName, result);
|
|
||||||
if (!result.IsNull())
|
|
||||||
aParam = Handle(Interface_Static)::DownCast(result);
|
|
||||||
}
|
|
||||||
if (aParam.IsNull())
|
|
||||||
{
|
|
||||||
#ifdef OCCT_DEBUG
|
|
||||||
cout << "Warning: Incorrect parameter :" << name << endl;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
return aParam;
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : GetParam
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void Interface_InterfaceModel::AddParam
|
|
||||||
(const Standard_CString theParamName, Handle(Interface_Static)& theParam)
|
|
||||||
{
|
|
||||||
myParamMap.Bind(theParamName, theParam);
|
|
||||||
}
|
|
||||||
//=======================================================================
|
|
||||||
//function : AllParameters
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
const NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>& Interface_InterfaceModel::AllParameters()
|
|
||||||
{
|
|
||||||
return myParamMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : IVal
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
Standard_Integer Interface_InterfaceModel::IVal(const Standard_CString theParamName) const
|
|
||||||
{
|
|
||||||
Handle(Interface_Static) aParam = GetParam(theParamName);
|
|
||||||
return (aParam.IsNull() ? 0 : aParam->IntegerValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : RVal
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
Standard_Real Interface_InterfaceModel::RVal(const Standard_CString theParamName) const
|
|
||||||
{
|
|
||||||
Handle(Interface_Static) aParam = GetParam(theParamName);
|
|
||||||
return (aParam.IsNull() ? 0.0 : aParam->RealValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : CVal
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
Standard_CString Interface_InterfaceModel::CVal(const Standard_CString theParamName) const
|
|
||||||
{
|
|
||||||
Handle(Interface_Static) aParam = GetParam(theParamName);
|
|
||||||
return (aParam.IsNull() ? "" : aParam->CStringValue());
|
|
||||||
}
|
|
||||||
|
@@ -27,7 +27,6 @@
|
|||||||
#include <Standard_Type.hxx>
|
#include <Standard_Type.hxx>
|
||||||
#include <Standard_CString.hxx>
|
#include <Standard_CString.hxx>
|
||||||
#include <Interface_DataState.hxx>
|
#include <Interface_DataState.hxx>
|
||||||
#include <Interface_Static.hxx>
|
|
||||||
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
||||||
class Interface_Check;
|
class Interface_Check;
|
||||||
class TCollection_HAsciiString;
|
class TCollection_HAsciiString;
|
||||||
@@ -399,27 +398,17 @@ public:
|
|||||||
//! Returns the complete list of names attached to template models
|
//! Returns the complete list of names attached to template models
|
||||||
Standard_EXPORT static Handle(TColStd_HSequenceOfHAsciiString) ListTemplates();
|
Standard_EXPORT static Handle(TColStd_HSequenceOfHAsciiString) ListTemplates();
|
||||||
|
|
||||||
//! Returns parameter for translation by its name
|
|
||||||
Standard_EXPORT Handle(Interface_Static) GetParam(const Standard_CString theParamName) const;
|
|
||||||
|
|
||||||
Standard_EXPORT Standard_Integer IVal(const Standard_CString theParamName) const;
|
|
||||||
Standard_EXPORT Standard_Real RVal(const Standard_CString theParamName) const;
|
|
||||||
Standard_EXPORT Standard_CString CVal(const Standard_CString theParamName) const;
|
|
||||||
|
|
||||||
//! Adds parameters in the mopdel
|
|
||||||
Standard_EXPORT void AddParam(const Standard_CString theParamName, Handle(Interface_Static)& theParam);
|
|
||||||
|
|
||||||
//! Returns all available parameters for translation
|
|
||||||
Standard_EXPORT const NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>& AllParameters();
|
|
||||||
|
|
||||||
DEFINE_STANDARD_RTTIEXT(Interface_InterfaceModel,Standard_Transient)
|
DEFINE_STANDARD_RTTIEXT(Interface_InterfaceModel,Standard_Transient)
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
|
||||||
//! Defines empty InterfaceModel, ready to be filled
|
//! Defines empty InterfaceModel, ready to be filled
|
||||||
Standard_EXPORT Interface_InterfaceModel();
|
Standard_EXPORT Interface_InterfaceModel();
|
||||||
|
|
||||||
NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)> myParamMap;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@@ -19,7 +19,6 @@
|
|||||||
#include <Standard_Transient.hxx>
|
#include <Standard_Transient.hxx>
|
||||||
#include <Standard_Type.hxx>
|
#include <Standard_Type.hxx>
|
||||||
#include <TCollection_HAsciiString.hxx>
|
#include <TCollection_HAsciiString.hxx>
|
||||||
#include <Standard_Mutex.hxx>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(Interface_Static,Interface_TypedValue)
|
IMPLEMENT_STANDARD_RTTIEXT(Interface_Static,Interface_TypedValue)
|
||||||
@@ -130,6 +129,8 @@ Standard_Boolean Interface_Static::UpdatedStatus () const
|
|||||||
return theupdate;
|
return theupdate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// #######################################################################
|
// #######################################################################
|
||||||
// ######### DICTIONNAIRE DES STATICS (static sur Static) ##########
|
// ######### DICTIONNAIRE DES STATICS (static sur Static) ##########
|
||||||
|
|
||||||
@@ -152,6 +153,7 @@ Standard_Boolean Interface_Static::Init
|
|||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Standard_Boolean Interface_Static::Init
|
Standard_Boolean Interface_Static::Init
|
||||||
(const Standard_CString family, const Standard_CString name,
|
(const Standard_CString family, const Standard_CString name,
|
||||||
const Standard_Character type, const Standard_CString init)
|
const Standard_Character type, const Standard_CString init)
|
||||||
@@ -168,7 +170,30 @@ Standard_Boolean Interface_Static::Init
|
|||||||
case '&' : {
|
case '&' : {
|
||||||
Handle(Interface_Static) unstat = Interface_Static::Static(name);
|
Handle(Interface_Static) unstat = Interface_Static::Static(name);
|
||||||
if (unstat.IsNull()) return Standard_False;
|
if (unstat.IsNull()) return Standard_False;
|
||||||
return Interface_Static::InitValues(unstat, init);
|
// Editions : init donne un petit texte d edition, en 2 termes "cmd var" :
|
||||||
|
// imin <ival> imax <ival> rmin <rval> rmax <rval> unit <def>
|
||||||
|
// enum <from> ematch <from> eval <cval>
|
||||||
|
Standard_Integer i,iblc = 0;
|
||||||
|
for (i = 0; init[i] != '\0'; i ++) if (init[i] == ' ') iblc = i+1;
|
||||||
|
// Reconnaissance du sous-cas et aiguillage
|
||||||
|
if (init[0] == 'i' && init[2] == 'i')
|
||||||
|
unstat->SetIntegerLimit (Standard_False,atoi(&init[iblc]));
|
||||||
|
else if (init[0] == 'i' && init[2] == 'a')
|
||||||
|
unstat->SetIntegerLimit (Standard_True ,atoi(&init[iblc]));
|
||||||
|
else if (init[0] == 'r' && init[2] == 'i')
|
||||||
|
unstat->SetRealLimit (Standard_False,Atof(&init[iblc]));
|
||||||
|
else if (init[0] == 'r' && init[2] == 'a')
|
||||||
|
unstat->SetRealLimit (Standard_True ,Atof(&init[iblc]));
|
||||||
|
else if (init[0] == 'u')
|
||||||
|
unstat->SetUnitDef (&init[iblc]);
|
||||||
|
else if (init[0] == 'e' && init[1] == 'm')
|
||||||
|
unstat->StartEnum (atoi(&init[iblc]),Standard_True);
|
||||||
|
else if (init[0] == 'e' && init[1] == 'n')
|
||||||
|
unstat->StartEnum (atoi(&init[iblc]),Standard_False);
|
||||||
|
else if (init[0] == 'e' && init[1] == 'v')
|
||||||
|
unstat->AddEnum (&init[iblc]);
|
||||||
|
else return Standard_False;
|
||||||
|
return Standard_True;
|
||||||
}
|
}
|
||||||
default : return Standard_False;
|
default : return Standard_False;
|
||||||
}
|
}
|
||||||
@@ -180,44 +205,13 @@ Standard_Boolean Interface_Static::Init
|
|||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Boolean Interface_Static::InitValues(Handle(Interface_Static)& theStatic, const Standard_CString init)
|
|
||||||
{
|
|
||||||
// Editions : init donne un petit texte d edition, en 2 termes "cmd var" :
|
|
||||||
// imin <ival> imax <ival> rmin <rval> rmax <rval> unit <def>
|
|
||||||
// enum <from> ematch <from> eval <cval>
|
|
||||||
Standard_Integer i, iblc = 0;
|
|
||||||
for (i = 0; init[i] != '\0'; i++) if (init[i] == ' ') iblc = i + 1;
|
|
||||||
// Reconnaissance du sous-cas et aiguillage
|
|
||||||
if (init[0] == 'i' && init[2] == 'i')
|
|
||||||
theStatic->SetIntegerLimit(Standard_False, atoi(&init[iblc]));
|
|
||||||
else if (init[0] == 'i' && init[2] == 'a')
|
|
||||||
theStatic->SetIntegerLimit(Standard_True, atoi(&init[iblc]));
|
|
||||||
else if (init[0] == 'r' && init[2] == 'i')
|
|
||||||
theStatic->SetRealLimit(Standard_False, Atof(&init[iblc]));
|
|
||||||
else if (init[0] == 'r' && init[2] == 'a')
|
|
||||||
theStatic->SetRealLimit(Standard_True, Atof(&init[iblc]));
|
|
||||||
else if (init[0] == 'u')
|
|
||||||
theStatic->SetUnitDef(&init[iblc]);
|
|
||||||
else if (init[0] == 'e' && init[1] == 'm')
|
|
||||||
theStatic->StartEnum(atoi(&init[iblc]), Standard_True);
|
|
||||||
else if (init[0] == 'e' && init[1] == 'n')
|
|
||||||
theStatic->StartEnum(atoi(&init[iblc]), Standard_False);
|
|
||||||
else if (init[0] == 'e' && init[1] == 'v')
|
|
||||||
theStatic->AddEnum(&init[iblc]);
|
|
||||||
else return Standard_False;
|
|
||||||
return Standard_True;
|
|
||||||
}
|
|
||||||
|
|
||||||
Handle(Interface_Static) Interface_Static::Static
|
Handle(Interface_Static) Interface_Static::Static
|
||||||
(const Standard_CString name)
|
(const Standard_CString name)
|
||||||
{
|
{
|
||||||
static Standard_Mutex aPars;
|
Handle(Standard_Transient) result;
|
||||||
{
|
MoniTool_TypedValue::Stats().Find(name, result);
|
||||||
Standard_Mutex::Sentry aLock(aPars);
|
return Handle(Interface_Static)::DownCast(result);
|
||||||
Handle(Standard_Transient) result;
|
|
||||||
MoniTool_TypedValue::Stats().Find(name, result);
|
|
||||||
return Handle(Interface_Static)::DownCast(result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -130,9 +130,6 @@ public:
|
|||||||
//! Returns False if <type> does not match this list
|
//! Returns False if <type> does not match this list
|
||||||
Standard_EXPORT static Standard_Boolean Init (const Standard_CString family, const Standard_CString name, const Standard_Character type, const Standard_CString init = "");
|
Standard_EXPORT static Standard_Boolean Init (const Standard_CString family, const Standard_CString name, const Standard_Character type, const Standard_CString init = "");
|
||||||
|
|
||||||
//! Edit current <theStatic> with some parameter <init>
|
|
||||||
Standard_EXPORT static Standard_Boolean InitValues(Handle(Interface_Static)& theStatic, const Standard_CString init);
|
|
||||||
|
|
||||||
//! Returns a Static from its name. Null Handle if not present
|
//! Returns a Static from its name. Null Handle if not present
|
||||||
Standard_EXPORT static Handle(Interface_Static) Static (const Standard_CString name);
|
Standard_EXPORT static Handle(Interface_Static) Static (const Standard_CString name);
|
||||||
|
|
||||||
@@ -238,7 +235,7 @@ public:
|
|||||||
//! Returns False if <name> is not present
|
//! Returns False if <name> is not present
|
||||||
Standard_EXPORT static Standard_Boolean IsUpdated (const Standard_CString name);
|
Standard_EXPORT static Standard_Boolean IsUpdated (const Standard_CString name);
|
||||||
|
|
||||||
//! Returns a list of names of statics:
|
//! Returns a list of names of statics :
|
||||||
//! <mode> = 0 (D) : criter is for family
|
//! <mode> = 0 (D) : criter is for family
|
||||||
//! <mode> = 1 : criter is regexp on names, takes final items
|
//! <mode> = 1 : criter is regexp on names, takes final items
|
||||||
//! (ignore wild cards)
|
//! (ignore wild cards)
|
||||||
@@ -253,8 +250,7 @@ public:
|
|||||||
//!
|
//!
|
||||||
//! This allows for instance to set new values after having loaded
|
//! This allows for instance to set new values after having loaded
|
||||||
//! or reloaded a resource, then to update them as required
|
//! or reloaded a resource, then to update them as required
|
||||||
Standard_EXPORT static Handle(TColStd_HSequenceOfHAsciiString) Items (const Standard_Integer mode = 0,
|
Standard_EXPORT static Handle(TColStd_HSequenceOfHAsciiString) Items (const Standard_Integer mode = 0, const Standard_CString criter = "");
|
||||||
const Standard_CString criter = "");
|
|
||||||
|
|
||||||
//! Initializes all standard static parameters, which can be used
|
//! Initializes all standard static parameters, which can be used
|
||||||
//! by every function. statics specific of a norm or a function
|
//! by every function. statics specific of a norm or a function
|
||||||
|
@@ -1,8 +1,21 @@
|
|||||||
Message.cxx
|
Message.cxx
|
||||||
Message.hxx
|
Message.hxx
|
||||||
|
Message_Alert.cxx
|
||||||
|
Message_Alert.hxx
|
||||||
|
Message_AlertExtended.cxx
|
||||||
|
Message_AlertExtended.hxx
|
||||||
|
Message_Alerts.hxx
|
||||||
Message_Algorithm.cxx
|
Message_Algorithm.cxx
|
||||||
Message_Algorithm.hxx
|
Message_Algorithm.hxx
|
||||||
Message_Algorithm.lxx
|
Message_Algorithm.lxx
|
||||||
|
Message_Attribute.cxx
|
||||||
|
Message_Attribute.hxx
|
||||||
|
Message_AttributeObject.cxx
|
||||||
|
Message_AttributeObject.hxx
|
||||||
|
Message_AttributeStream.cxx
|
||||||
|
Message_AttributeStream.hxx
|
||||||
|
Message_CompositeAlerts.cxx
|
||||||
|
Message_CompositeAlerts.hxx
|
||||||
Message_ExecStatus.hxx
|
Message_ExecStatus.hxx
|
||||||
Message_Gravity.hxx
|
Message_Gravity.hxx
|
||||||
Message_HArrayOfMsg.hxx
|
Message_HArrayOfMsg.hxx
|
||||||
@@ -15,6 +28,9 @@ Message_Msg.hxx
|
|||||||
Message_Msg.lxx
|
Message_Msg.lxx
|
||||||
Message_MsgFile.cxx
|
Message_MsgFile.cxx
|
||||||
Message_MsgFile.hxx
|
Message_MsgFile.hxx
|
||||||
|
Message_PerfMeter.cxx
|
||||||
|
Message_PerfMeter.hxx
|
||||||
|
Message_PerfMeterMode.hxx
|
||||||
Message_Printer.cxx
|
Message_Printer.cxx
|
||||||
Message_Printer.hxx
|
Message_Printer.hxx
|
||||||
Message_PrinterOStream.cxx
|
Message_PrinterOStream.cxx
|
||||||
@@ -32,8 +48,8 @@ Message_SequenceOfPrinters.hxx
|
|||||||
Message_SequenceOfProgressScale.hxx
|
Message_SequenceOfProgressScale.hxx
|
||||||
Message_Status.hxx
|
Message_Status.hxx
|
||||||
Message_StatusType.hxx
|
Message_StatusType.hxx
|
||||||
Message_Alert.cxx
|
|
||||||
Message_Alert.hxx
|
|
||||||
Message_ListOfAlert.hxx
|
Message_ListOfAlert.hxx
|
||||||
Message_Report.cxx
|
Message_Report.cxx
|
||||||
Message_Report.hxx
|
Message_Report.hxx
|
||||||
|
Message_ReportCallBack.cxx
|
||||||
|
Message_ReportCallBack.hxx
|
||||||
|
@@ -18,7 +18,6 @@
|
|||||||
#include <Message.hxx>
|
#include <Message.hxx>
|
||||||
#include <Message_Messenger.hxx>
|
#include <Message_Messenger.hxx>
|
||||||
#include <TCollection_AsciiString.hxx>
|
#include <TCollection_AsciiString.hxx>
|
||||||
#include <Standard_Mutex.hxx>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -28,8 +27,6 @@
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
const Handle(Message_Messenger)& Message::DefaultMessenger ()
|
const Handle(Message_Messenger)& Message::DefaultMessenger ()
|
||||||
{
|
{
|
||||||
static Standard_Mutex aMutex;
|
|
||||||
Standard_Mutex::Sentry aLock(aMutex);
|
|
||||||
static Handle(Message_Messenger) aMessenger = new Message_Messenger;
|
static Handle(Message_Messenger) aMessenger = new Message_Messenger;
|
||||||
return aMessenger;
|
return aMessenger;
|
||||||
}
|
}
|
||||||
@@ -52,3 +49,342 @@ TCollection_AsciiString Message::FillTime (const Standard_Integer hour,
|
|||||||
Sprintf (t, "%.2fs", second);
|
Sprintf (t, "%.2fs", second);
|
||||||
return TCollection_AsciiString (t);
|
return TCollection_AsciiString (t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
static Standard_CString Message_Table_PrintGravityEnum[5] =
|
||||||
|
{
|
||||||
|
"TRACE", "INFO", "WARNING", "ALARM", "FAIL"
|
||||||
|
};
|
||||||
|
|
||||||
|
static Standard_CString Message_Table_PrintPerfMeterModeEnum[10] =
|
||||||
|
{
|
||||||
|
"NONE", "USER_TIME_CPU", "SYSTEM_TIME_CPU", "MEM_PRIVATE", "MEM_VIRTUAL",
|
||||||
|
"MEM_WORKING_SET", "MEM_WORKING_SET_PEAK", "MEM_SWAP_USAGE", "MEM_SWAP_USAGE_PEAK", "MEM_HEAP_USAGE"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : GravityToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Standard_CString Message::GravityToString (const Message_Gravity theGravity)
|
||||||
|
{
|
||||||
|
return Message_Table_PrintGravityEnum[theGravity];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : GravityFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Standard_Boolean Message::GravityFromString (const Standard_CString theGravityString,
|
||||||
|
Message_Gravity& theGravity)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theGravityString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aGravityIter = 0; aGravityIter <= Message_Fail; ++aGravityIter)
|
||||||
|
{
|
||||||
|
Standard_CString aGravityName = Message_Table_PrintGravityEnum[aGravityIter];
|
||||||
|
if (aName == aGravityName)
|
||||||
|
{
|
||||||
|
theGravity = Message_Gravity (aGravityIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : PerfMeterModeToString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Standard_CString Message::PerfMeterModeToString (const Message_PerfMeterMode theValue)
|
||||||
|
{
|
||||||
|
return Message_Table_PrintPerfMeterModeEnum[theValue];
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : PerfMeterModeFromString
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Standard_Boolean Message::PerfMeterModeFromString (const Standard_CString theString,
|
||||||
|
Message_PerfMeterMode& theValue)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aName (theString);
|
||||||
|
aName.UpperCase();
|
||||||
|
for (Standard_Integer aModeIter = 0; aModeIter <= Message_PerfMeterMode_MemHeapUsage; ++aModeIter)
|
||||||
|
{
|
||||||
|
Standard_CString aModeName = Message_Table_PrintPerfMeterModeEnum[aModeIter];
|
||||||
|
if (aName == aModeName)
|
||||||
|
{
|
||||||
|
theValue = Message_PerfMeterMode (aModeIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : GetPointerInfo
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
TCollection_AsciiString Message::TransientToString (const Handle(Standard_Transient)& thePointer, const bool isShortInfo)
|
||||||
|
{
|
||||||
|
if (thePointer.IsNull())
|
||||||
|
return TCollection_AsciiString();
|
||||||
|
|
||||||
|
return PointerToString(thePointer.operator->(), isShortInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : GetPointerInfo
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
TCollection_AsciiString Message::PointerToString (const void* thePointer, const bool isShortInfo)
|
||||||
|
{
|
||||||
|
std::ostringstream aPtrStr;
|
||||||
|
aPtrStr << thePointer;
|
||||||
|
if (!isShortInfo)
|
||||||
|
return aPtrStr.str().c_str();
|
||||||
|
|
||||||
|
TCollection_AsciiString anInfoPtr (aPtrStr.str().c_str());
|
||||||
|
for (int aSymbolId = 1; aSymbolId < anInfoPtr.Length(); aSymbolId++)
|
||||||
|
{
|
||||||
|
if (anInfoPtr.Value(aSymbolId) != '0')
|
||||||
|
{
|
||||||
|
anInfoPtr = anInfoPtr.SubString(aSymbolId, anInfoPtr.Length());
|
||||||
|
anInfoPtr.Prepend("0x");
|
||||||
|
return anInfoPtr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return aPtrStr.str().c_str();
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : StrVectorToString
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
TCollection_AsciiString Message::StrVectorToString
|
||||||
|
(const NCollection_Vector<TCollection_AsciiString>& theValues)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aValue;
|
||||||
|
for (NCollection_Vector<TCollection_AsciiString>::Iterator aValuesIt (theValues); aValuesIt.More(); aValuesIt.Next())
|
||||||
|
{
|
||||||
|
aValue += aValuesIt.Value();
|
||||||
|
if (aValuesIt.More())
|
||||||
|
aValue += VectorSeparator();
|
||||||
|
}
|
||||||
|
return aValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : StrVectorFromString
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
Standard_Boolean Message::StrVectorFromString
|
||||||
|
(const TCollection_AsciiString& theValue,
|
||||||
|
NCollection_Vector<TCollection_AsciiString>& theValues)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aCurrentString = theValue, aValueString;
|
||||||
|
|
||||||
|
while (!aCurrentString.IsEmpty())
|
||||||
|
{
|
||||||
|
Standard_Integer aPosition = aCurrentString.Search (", ");
|
||||||
|
aValueString = aCurrentString;
|
||||||
|
if (aPosition > 0)
|
||||||
|
aCurrentString = aValueString.Split (aPosition - 1);
|
||||||
|
theValues.Append (aValueString.RealValue());
|
||||||
|
if (aPosition > 0)
|
||||||
|
aCurrentString = aCurrentString.Split (2);
|
||||||
|
}
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : RealVectorToString
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
TCollection_AsciiString Message::RealVectorToString
|
||||||
|
(const NCollection_Vector<Standard_Real>& theValues)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aValue = ("(");
|
||||||
|
|
||||||
|
for (NCollection_Vector<Standard_Real>::Iterator aValuesIt (theValues); aValuesIt.More(); aValuesIt.Next())
|
||||||
|
{
|
||||||
|
aValue += aValuesIt.Value();
|
||||||
|
if (aValuesIt.More())
|
||||||
|
aValue += VectorSeparator();
|
||||||
|
}
|
||||||
|
aValue += ")";
|
||||||
|
|
||||||
|
return aValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : RealVectorFromString
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
Standard_Boolean Message::RealVectorFromString
|
||||||
|
(const TCollection_AsciiString& theValue,
|
||||||
|
NCollection_Vector<Standard_Real>& theValues)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aCurrentString = theValue, aValueString;
|
||||||
|
|
||||||
|
Standard_Integer aPosition = aCurrentString.Search ("(");
|
||||||
|
if (aPosition != 1)
|
||||||
|
return Standard_False;
|
||||||
|
aCurrentString = aCurrentString.Split (aPosition);
|
||||||
|
|
||||||
|
aPosition = aCurrentString.Search (")");
|
||||||
|
if (aPosition != 1)
|
||||||
|
return Standard_False;
|
||||||
|
aValueString = aCurrentString.Split (aPosition);
|
||||||
|
|
||||||
|
|
||||||
|
while (!aCurrentString.IsEmpty())
|
||||||
|
{
|
||||||
|
// x value
|
||||||
|
aPosition = aCurrentString.Search (", ");
|
||||||
|
aValueString = aCurrentString;
|
||||||
|
if (aPosition > 0)
|
||||||
|
aCurrentString = aValueString.Split (aPosition - 1);
|
||||||
|
theValues.Append (aValueString.RealValue());
|
||||||
|
if (aPosition > 0)
|
||||||
|
aCurrentString = aCurrentString.Split (2);
|
||||||
|
}
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : CoordVectorToString
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
TCollection_AsciiString Message::CoordVectorToString
|
||||||
|
(const NCollection_Vector<Standard_Real>& theValues)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aValue = ("(");
|
||||||
|
aValue += RealVectorToString (theValues);
|
||||||
|
aValue += ")";
|
||||||
|
|
||||||
|
return aValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : CoordVectorFromString
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
Standard_Boolean Message::CoordVectorFromString
|
||||||
|
(const TCollection_AsciiString& theValue,
|
||||||
|
NCollection_Vector<Standard_Real>& theValues)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aCurrentString = theValue, aValueString;
|
||||||
|
|
||||||
|
Standard_Integer aPosition = aCurrentString.Search ("(");
|
||||||
|
if (aPosition != 1)
|
||||||
|
return Standard_False;
|
||||||
|
aCurrentString = aCurrentString.Split (aPosition);
|
||||||
|
|
||||||
|
aPosition = aCurrentString.Search (")");
|
||||||
|
if (aPosition != 1)
|
||||||
|
return Standard_False;
|
||||||
|
aValueString = aCurrentString.Split (aPosition);
|
||||||
|
|
||||||
|
return RealVectorFromString (aCurrentString, theValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : ColorVectorToString
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
TCollection_AsciiString Message::ColorVectorToString
|
||||||
|
(const NCollection_Vector<Standard_Real>& theValues)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aValue = ("[");
|
||||||
|
aValue += RealVectorToString (theValues);
|
||||||
|
aValue += "]";
|
||||||
|
|
||||||
|
return aValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : ColorVectorFromString
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
Standard_Boolean Message::ColorVectorFromString
|
||||||
|
(const TCollection_AsciiString& theValue,
|
||||||
|
NCollection_Vector<Standard_Real>& theValues)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aCurrentString = theValue, aValueString;
|
||||||
|
|
||||||
|
Standard_Integer aPosition = aCurrentString.Search ("[");
|
||||||
|
if (aPosition != 1)
|
||||||
|
return Standard_False;
|
||||||
|
aCurrentString = aCurrentString.Split (aPosition);
|
||||||
|
|
||||||
|
aPosition = aCurrentString.Search ("]");
|
||||||
|
if (aPosition != 1)
|
||||||
|
return Standard_False;
|
||||||
|
aValueString = aCurrentString.Split (aPosition);
|
||||||
|
|
||||||
|
return RealVectorFromString (aCurrentString, theValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : ConvertStream
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void Message::ConvertStream (const Standard_SStream& theStream,
|
||||||
|
Standard_Integer& theColumnCount,
|
||||||
|
NCollection_Vector<TCollection_AsciiString>& theValues)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aStream (theStream.str().c_str());
|
||||||
|
Standard_Character aSeparator = Message::DumpSeparator();
|
||||||
|
Standard_Integer aColumnCount = 0;
|
||||||
|
|
||||||
|
TCollection_AsciiString aCurrentString = aStream;
|
||||||
|
Standard_Integer aPosition = aCurrentString.Search (aSeparator);
|
||||||
|
if (aPosition >= 1)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aTailString = aCurrentString.Split (aPosition);
|
||||||
|
Standard_Boolean aClassNameFound = Standard_False;
|
||||||
|
while (!aCurrentString.IsEmpty())
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aValueString = aCurrentString;
|
||||||
|
aPosition = aValueString.Search (aSeparator);
|
||||||
|
if (aPosition < 0 )
|
||||||
|
break;
|
||||||
|
aCurrentString = aValueString.Split (aPosition - 1);
|
||||||
|
|
||||||
|
if (!aColumnCount)
|
||||||
|
{
|
||||||
|
if (!aClassNameFound)
|
||||||
|
aClassNameFound = Standard_True;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!aValueString.IsIntegerValue())
|
||||||
|
break; // not correct Dump, in correct the first value is number of property columns
|
||||||
|
aColumnCount = aValueString.IntegerValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
theValues.Append (aValueString);
|
||||||
|
|
||||||
|
if (aTailString.IsEmpty())
|
||||||
|
break;
|
||||||
|
aCurrentString = aTailString;
|
||||||
|
aPosition = aCurrentString.Search (aSeparator);
|
||||||
|
if (aPosition < 0 )
|
||||||
|
{
|
||||||
|
aCurrentString = aTailString;
|
||||||
|
aTailString = TCollection_AsciiString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
aTailString = aCurrentString.Split (aPosition);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
theColumnCount = aColumnCount;
|
||||||
|
}
|
||||||
|
@@ -17,14 +17,19 @@
|
|||||||
#ifndef _Message_HeaderFile
|
#ifndef _Message_HeaderFile
|
||||||
#define _Message_HeaderFile
|
#define _Message_HeaderFile
|
||||||
|
|
||||||
|
#include <Message_Gravity.hxx>
|
||||||
|
#include <Message_PerfMeterMode.hxx>
|
||||||
|
#include <NCollection_Vector.hxx>
|
||||||
|
|
||||||
#include <Standard.hxx>
|
#include <Standard.hxx>
|
||||||
#include <Standard_DefineAlloc.hxx>
|
#include <Standard_DefineAlloc.hxx>
|
||||||
#include <Standard_Handle.hxx>
|
#include <Standard_Handle.hxx>
|
||||||
|
|
||||||
#include <Standard_Integer.hxx>
|
#include <Standard_Integer.hxx>
|
||||||
#include <Standard_Real.hxx>
|
#include <Standard_Real.hxx>
|
||||||
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
|
||||||
class Message_Messenger;
|
class Message_Messenger;
|
||||||
class TCollection_AsciiString;
|
|
||||||
class Message_Msg;
|
class Message_Msg;
|
||||||
class Message_MsgFile;
|
class Message_MsgFile;
|
||||||
class Message_Messenger;
|
class Message_Messenger;
|
||||||
@@ -59,8 +64,129 @@ public:
|
|||||||
//! 3. (0, 0, 4.5 ) returns "4.50s"
|
//! 3. (0, 0, 4.5 ) returns "4.50s"
|
||||||
Standard_EXPORT static TCollection_AsciiString FillTime (const Standard_Integer Hour, const Standard_Integer Minute, const Standard_Real Second);
|
Standard_EXPORT static TCollection_AsciiString FillTime (const Standard_Integer Hour, const Standard_Integer Minute, const Standard_Real Second);
|
||||||
|
|
||||||
|
//! Returns the string name for a given gravity.
|
||||||
|
//! @param Gravity gravity type
|
||||||
|
//! @return string identifier from the list Message_Trace, Message_Info, Message_Warning, Message_Alarm and Message_Fail
|
||||||
|
Standard_EXPORT static Standard_CString GravityToString (const Message_Gravity theGravity);
|
||||||
|
|
||||||
|
//! Returns the gravity type from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theGravityString string identifier
|
||||||
|
//! @return gravity or Message_Trace if string identifier is invalid
|
||||||
|
static Message_Gravity GravityFromString (const Standard_CString theGravityString)
|
||||||
|
{
|
||||||
|
Message_Gravity aGravity = Message_Trace;
|
||||||
|
GravityFromString (theGravityString, aGravity);
|
||||||
|
return aGravity;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Determines the gravity from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theGravityString string identifier
|
||||||
|
//! @param theGravity detected shape type
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean GravityFromString (const Standard_CString theGravityString,
|
||||||
|
Message_Gravity& theGravity);
|
||||||
|
|
||||||
|
//! Returns the string name for a perf meter mode.
|
||||||
|
//! @param theValue mode
|
||||||
|
//! @return string identifier
|
||||||
|
Standard_EXPORT static Standard_CString PerfMeterModeToString (const Message_PerfMeterMode theValue);
|
||||||
|
|
||||||
|
//! Returns the enum value from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theString string identifier
|
||||||
|
//! @return enum or Message_PerfMeterMode_None if string identifier is invalid
|
||||||
|
static Message_PerfMeterMode PerfMeterModeFromString (const Standard_CString theString)
|
||||||
|
{
|
||||||
|
Message_PerfMeterMode aValue = Message_PerfMeterMode_None;
|
||||||
|
PerfMeterModeFromString (theString, aValue);
|
||||||
|
return aValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Returns the enum value from the given string identifier (using case-insensitive comparison).
|
||||||
|
//! @param theString string identifier
|
||||||
|
//! @return enum or Message_PerfMeterMode_None if string identifier is invalid
|
||||||
|
//! @return TRUE if string identifier is known
|
||||||
|
Standard_EXPORT static Standard_Boolean PerfMeterModeFromString (const Standard_CString theString,
|
||||||
|
Message_PerfMeterMode& theValue);
|
||||||
|
|
||||||
|
|
||||||
|
//! Returns separator symbol of Dump information
|
||||||
|
static Standard_Character DumpSeparator() { return '\\'; }
|
||||||
|
|
||||||
|
//! Returns separator symbol of values vector union
|
||||||
|
static TCollection_AsciiString VectorSeparator() { return " ,"; }
|
||||||
|
|
||||||
|
//! Convert handle pointer to string value
|
||||||
|
//! \param thePointer a pointer
|
||||||
|
//! \param isShortInfo if true, all '0' symbols in the beginning of the pointer are skipped
|
||||||
|
//! \return the string value
|
||||||
|
Standard_EXPORT static TCollection_AsciiString TransientToString (const Handle(Standard_Transient)& thePointer,
|
||||||
|
const bool isShortInfo = true);
|
||||||
|
|
||||||
|
//! Convert pointer to string value
|
||||||
|
//! \param thePointer a pointer
|
||||||
|
//! \param isShortInfo if true, all '0' symbols in the beginning of the pointer are skipped
|
||||||
|
//! \return the string value
|
||||||
|
Standard_EXPORT static TCollection_AsciiString PointerToString (const void* thePointer,
|
||||||
|
const bool isShortInfo = true);
|
||||||
|
//! Convert vector of real values to string, separator is vector separator
|
||||||
|
//! \param thePointer a container of real values
|
||||||
|
//! \return the string value
|
||||||
|
Standard_EXPORT static TCollection_AsciiString StrVectorToString
|
||||||
|
(const NCollection_Vector<TCollection_AsciiString>& theValues);
|
||||||
|
|
||||||
|
//! Convert string to vector of real values, separator is vector separator
|
||||||
|
//! \param thePointer a container of real values
|
||||||
|
//! \return the string value
|
||||||
|
Standard_EXPORT static Standard_Boolean StrVectorFromString
|
||||||
|
(const TCollection_AsciiString& theValue,
|
||||||
|
NCollection_Vector<TCollection_AsciiString>& theValues);
|
||||||
|
|
||||||
|
//! Convert vector of real values to string, separator is vector separator
|
||||||
|
//! \param thePointer a container of real values
|
||||||
|
//! \return the string value
|
||||||
|
Standard_EXPORT static TCollection_AsciiString RealVectorToString
|
||||||
|
(const NCollection_Vector<Standard_Real>& theValues);
|
||||||
|
|
||||||
|
//! Convert string to vector of real values, separator is vector separator
|
||||||
|
//! \param thePointer a container of real values
|
||||||
|
//! \return the string value
|
||||||
|
Standard_EXPORT static Standard_Boolean RealVectorFromString
|
||||||
|
(const TCollection_AsciiString& theValue,
|
||||||
|
NCollection_Vector<Standard_Real>& theValues);
|
||||||
|
|
||||||
|
//! Convert vector of real values to string, separator is vector separator
|
||||||
|
//! \param thePointer a container of real values
|
||||||
|
//! \return the string value
|
||||||
|
Standard_EXPORT static TCollection_AsciiString CoordVectorToString
|
||||||
|
(const NCollection_Vector<Standard_Real>& theValues);
|
||||||
|
|
||||||
|
//! Convert string to vector of real values, separator is vector separator
|
||||||
|
//! \param thePointer a container of real values
|
||||||
|
//! \return the string value
|
||||||
|
Standard_EXPORT static Standard_Boolean CoordVectorFromString
|
||||||
|
(const TCollection_AsciiString& theValue,
|
||||||
|
NCollection_Vector<Standard_Real>& theValues);
|
||||||
|
|
||||||
|
//! Convert vector of real values to string, separator is vector separator
|
||||||
|
//! \param thePointer a container of real values
|
||||||
|
//! \return the string value
|
||||||
|
Standard_EXPORT static TCollection_AsciiString ColorVectorToString
|
||||||
|
(const NCollection_Vector<Standard_Real>& theValues);
|
||||||
|
|
||||||
|
//! Convert string to vector of real values, separator is vector separator
|
||||||
|
//! \param thePointer a container of real values
|
||||||
|
//! \return the string value
|
||||||
|
Standard_EXPORT static Standard_Boolean ColorVectorFromString
|
||||||
|
(const TCollection_AsciiString& theValue,
|
||||||
|
NCollection_Vector<Standard_Real>& theValues);
|
||||||
|
|
||||||
|
//! Converts stream to vector of values and column count
|
||||||
|
//! \param theStream stream value
|
||||||
|
//! \param theColumnCount [out] number of columns
|
||||||
|
//! \param theValues [out] container of split values
|
||||||
|
static Standard_EXPORT void ConvertStream (const Standard_SStream& theStream,
|
||||||
|
Standard_Integer& theColumnCount,
|
||||||
|
NCollection_Vector<TCollection_AsciiString>& theValues);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
81
src/Message/Message_AlertExtended.cxx
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
// Created on: 2018-06-10
|
||||||
|
// Created by: Natalia Ermolaeva
|
||||||
|
// Copyright (c) 2017 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.
|
||||||
|
|
||||||
|
#include <Message_AlertExtended.hxx>
|
||||||
|
#include <Message_Attribute.hxx>
|
||||||
|
#include <Message_CompositeAlerts.hxx>
|
||||||
|
#include <Message_Report.hxx>
|
||||||
|
|
||||||
|
#include <Precision.hxx>
|
||||||
|
#include <Standard_Assert.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT(Message_AlertExtended,Message_Alert)
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : GetMessageKey
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Standard_CString Message_AlertExtended::GetMessageKey () const
|
||||||
|
{
|
||||||
|
if (myAttribute.IsNull())
|
||||||
|
return Message_Alert::GetMessageKey();
|
||||||
|
|
||||||
|
return myAttribute->GetMessageKey();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : GetCompositeAlerts
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Handle (Message_CompositeAlerts) Message_AlertExtended::GetCompositeAlerts (const Standard_Boolean isCreate)
|
||||||
|
{
|
||||||
|
if (myCompositAlerts.IsNull() && isCreate)
|
||||||
|
myCompositAlerts = new Message_CompositeAlerts();
|
||||||
|
|
||||||
|
return myCompositAlerts;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : IsMetricValid
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Standard_Boolean Message_AlertExtended::IsMetricValid() const
|
||||||
|
{
|
||||||
|
return fabs (myMetricStart - GetUndefinedMetric()) > Precision::Confusion() &&
|
||||||
|
fabs (myMetricStop - GetUndefinedMetric()) > Precision::Confusion();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : AddAlert
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Handle(Message_Alert) Message_AlertExtended::AddAlert (const Handle(Message_Report)& theReport,
|
||||||
|
const Handle(Message_Attribute)& theAttribute,
|
||||||
|
Message_PerfMeter* thePerfMeter,
|
||||||
|
const Handle(Message_Alert)& theParentAlert)
|
||||||
|
{
|
||||||
|
if (!theReport->IsActive (Message_Info))
|
||||||
|
return Handle(Message_Alert)();
|
||||||
|
|
||||||
|
Handle(Message_AlertExtended) anAlert = new Message_AlertExtended();
|
||||||
|
anAlert->SetAttribute (theAttribute);
|
||||||
|
theReport->AddAlert (Message_Info, anAlert, thePerfMeter, theParentAlert);
|
||||||
|
|
||||||
|
return anAlert;
|
||||||
|
}
|
133
src/Message/Message_AlertExtended.hxx
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
// Created on: 2018-06-10
|
||||||
|
// Created by: Natalia Ermolaeva
|
||||||
|
// Copyright (c) 2017 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 _Message_AlertExtended_HeaderFile
|
||||||
|
#define _Message_AlertExtended_HeaderFile
|
||||||
|
|
||||||
|
#include <Message_Alert.hxx>
|
||||||
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
|
||||||
|
class Message_Attribute;
|
||||||
|
class Message_PerfMeter;
|
||||||
|
class Message_Report;
|
||||||
|
|
||||||
|
DEFINE_STANDARD_HANDLE(Message_AlertExtended, Message_Alert)
|
||||||
|
|
||||||
|
class Message_CompositeAlerts;
|
||||||
|
|
||||||
|
//! Inherited class of Message_Alert with some additional information.
|
||||||
|
//!
|
||||||
|
//! It has Message_Attributes to provide the alert name, description and
|
||||||
|
//! other custom information
|
||||||
|
//!
|
||||||
|
//! It is possible to set performance meter into alert to store time/memory metric information
|
||||||
|
//! spent between the next alert adding. Also time of child alerts are collected
|
||||||
|
//!
|
||||||
|
//! It has a container of composite alerts, if the alert might provide
|
||||||
|
//! sub-alerts collecting.
|
||||||
|
//!
|
||||||
|
|
||||||
|
class Message_AlertExtended : public Message_Alert
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//! Empty constructor
|
||||||
|
Standard_EXPORT Message_AlertExtended()
|
||||||
|
: Message_Alert(), myMetricStart (GetUndefinedMetric()), myMetricStop (GetUndefinedMetric()) {}
|
||||||
|
|
||||||
|
//! Return a C string to be used as a key for generating text user
|
||||||
|
//! messages describing this alert.
|
||||||
|
//! The messages are generated with help of Message_Msg class, in
|
||||||
|
//! Message_Report::Dump().
|
||||||
|
//! Base implementation returns dynamic type name of the instance.
|
||||||
|
virtual Standard_EXPORT Standard_CString GetMessageKey () const;
|
||||||
|
|
||||||
|
//! Sets container of the alert attributes
|
||||||
|
//! \param theAttributes an attribute values
|
||||||
|
void SetAttribute (const Handle(Message_Attribute)& theAttribute) { myAttribute = theAttribute; }
|
||||||
|
|
||||||
|
//! Returns container of the alert attributes
|
||||||
|
//! \param theAttributes an attribute values
|
||||||
|
const Handle(Message_Attribute)& Attribute () const { return myAttribute; }
|
||||||
|
|
||||||
|
//! Returns class provided hierarchy of alerts if created or create if the parameter is true
|
||||||
|
//! \param isCreate if composite alert has not been created for this alert, it should be created
|
||||||
|
//! \return instance or NULL
|
||||||
|
Standard_EXPORT Handle (Message_CompositeAlerts) GetCompositeAlerts (const Standard_Boolean isCreate = Standard_False);
|
||||||
|
|
||||||
|
//! Returns performance meter
|
||||||
|
//! \return instance or NULL
|
||||||
|
Message_PerfMeter* GetPerfMeter() { return myPerfMeter; }
|
||||||
|
|
||||||
|
//! Returns true if metric is computed
|
||||||
|
//! @return value
|
||||||
|
Standard_EXPORT Standard_Boolean IsMetricValid() const;
|
||||||
|
|
||||||
|
//! Returns the alert cumulative metric. It includes time/mem of sub alerts
|
||||||
|
//! @return value
|
||||||
|
Standard_Real MetricStart() const { return myMetricStart; }
|
||||||
|
|
||||||
|
//! Returns the alert cumulative metric. It includes time/mem of sub alerts
|
||||||
|
//! @return value
|
||||||
|
Standard_Real MetricStop() const { return myMetricStop; }
|
||||||
|
|
||||||
|
//! Sets cumulative time/mem of alert
|
||||||
|
//! \param theCumulativeMetric time/mem of the alert
|
||||||
|
void SetMetricValues (const Standard_Real theStartValue, const Standard_Real theStopValue)
|
||||||
|
{ myMetricStart = theStartValue; myMetricStop = theStopValue; }
|
||||||
|
|
||||||
|
//! Return true if this type of alert can be merged with other
|
||||||
|
//! of the same type to avoid duplication.
|
||||||
|
//! Basis implementation returns true.
|
||||||
|
virtual Standard_EXPORT Standard_Boolean SupportsMerge () const { return Standard_False; }
|
||||||
|
|
||||||
|
//! Returns default value of the time/mem when it is not defined
|
||||||
|
//! \return integer value
|
||||||
|
static Standard_Real GetUndefinedMetric() { return -1.0; }
|
||||||
|
|
||||||
|
//! Creates new instance of the alert and put it into report with Message_Info gravity.
|
||||||
|
//! It does nothing if such kind of gravity is not active in the report
|
||||||
|
//! @param theReport the message report where new alert is placed
|
||||||
|
//! @param theAttribute container of additional values of the alert
|
||||||
|
//! @param thePerfMeter performance meter calculates the alert spent time and participate in searching the last alert if needed
|
||||||
|
//! @param theParentAlert parent for the new alert, or alert is placed under the report
|
||||||
|
//! @return created alert or NULL if Message_Info is not active in report
|
||||||
|
static Standard_EXPORT Handle(Message_Alert) AddAlert (const Handle(Message_Report)& theReport,
|
||||||
|
const Handle(Message_Attribute)& theAttribute,
|
||||||
|
Message_PerfMeter* thePerfMeter,
|
||||||
|
const Handle(Message_Alert)& theParentAlert = Handle(Message_Alert)());
|
||||||
|
|
||||||
|
// OCCT RTTI
|
||||||
|
DEFINE_STANDARD_RTTIEXT(Message_AlertExtended, Message_Alert)
|
||||||
|
|
||||||
|
protected:
|
||||||
|
//! Sets performance meter
|
||||||
|
//! \param theMeter instance pointer or NULL
|
||||||
|
void SetPerfMeter (Message_PerfMeter* theMeter) { myPerfMeter = theMeter; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
Handle(Message_CompositeAlerts) myCompositAlerts; //!< class provided hierarchical structure of alerts
|
||||||
|
//!< It should be created by an attempt of a child alert creation
|
||||||
|
|
||||||
|
Handle(Message_Attribute) myAttribute; //!< container of the alert attributes
|
||||||
|
|
||||||
|
Message_PerfMeter* myPerfMeter; //!< performance meter
|
||||||
|
Standard_Real myMetricStart; //!< value on start metric computation
|
||||||
|
Standard_Real myMetricStop; //!< value on stop metric computation
|
||||||
|
|
||||||
|
friend Message_PerfMeter;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _Message_Alert_HeaderFile
|
102
src/Message/Message_Alerts.hxx
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
// Created on: 2018-06-10
|
||||||
|
// Created by: Natalia Ermolaeva
|
||||||
|
// Copyright (c) 2017 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 _Message_Alerts_HeaderFile
|
||||||
|
#define _Message_Alerts_HeaderFile
|
||||||
|
|
||||||
|
#include <Message.hxx>
|
||||||
|
#include <Message_AlertExtended.hxx>
|
||||||
|
#include <Message_AttributeObject.hxx>
|
||||||
|
#include <Message_AttributeStream.hxx>
|
||||||
|
#include <Message_Gravity.hxx>
|
||||||
|
#include <Message_Report.hxx>
|
||||||
|
|
||||||
|
#include <NCollection_Vector.hxx>
|
||||||
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
|
||||||
|
static Handle(Message_Alert) OCCT_Message_Alert;
|
||||||
|
|
||||||
|
#define MESSAGE_INFO(Name, Description, PerfMeter, ParentAlert) \
|
||||||
|
{ \
|
||||||
|
if (!Message_Report::CurrentReport().IsNull() && \
|
||||||
|
Message_Report::CurrentReport()->IsActive (Message_Info)) \
|
||||||
|
{ \
|
||||||
|
OCCT_Message_Alert = Message_AlertExtended::AddAlert (Message_Report::CurrentReport(), \
|
||||||
|
new Message_Attribute (Name, Description), PerfMeter, ParentAlert); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define MESSAGE_INFO_OBJECT(Object, StreamValues, Name, Description, PerfMeter, ParentAlert) \
|
||||||
|
{ \
|
||||||
|
if (!Message_Report::CurrentReport().IsNull() && \
|
||||||
|
Message_Report::CurrentReport()->IsActive (Message_Info)) \
|
||||||
|
{ \
|
||||||
|
OCCT_Message_Alert = Message_AlertExtended::AddAlert (Message_Report::CurrentReport(), \
|
||||||
|
new Message_AttributeObject (Object, StreamValues, Name, Description), PerfMeter, ParentAlert ); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define MESSAGE_INFO_STREAM(StreamValues, Name, Description, PerfMeter, ParentAlert) \
|
||||||
|
{ \
|
||||||
|
if (!Message_Report::CurrentReport().IsNull() && \
|
||||||
|
Message_Report::CurrentReport()->IsActive (Message_Info)) \
|
||||||
|
{ \
|
||||||
|
OCCT_Message_Alert = Message_AlertExtended::AddAlert (Message_Report::CurrentReport(), \
|
||||||
|
new Message_AttributeStream (StreamValues, Name, Description), PerfMeter, ParentAlert ); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
//#define DUMP_VALUE(OS, Value) \
|
||||||
|
// { \
|
||||||
|
// OS << Value << Message::DumpSeparator(); \
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//#define DUMP_VALUES_COLUMNS(OS, ObjectName, ColumnCount) \
|
||||||
|
// { \
|
||||||
|
// OS << ObjectName << Message::DumpSeparator() << ColumnCount << Message::DumpSeparator(); \
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//#define DUMP_VALUES(OS, Value1, Value2) \
|
||||||
|
// { \
|
||||||
|
// OS << Value1 << Message::DumpSeparator() << Value2 << Message::DumpSeparator(); \
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//#define DUMP_VEC_COLOR(Values, Value) \
|
||||||
|
// { \
|
||||||
|
// Value = Message::ColorVectorToString (aValues); \
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//#define DUMP_VEC_COLOR_SPLIT(Value, Values) \
|
||||||
|
// { \
|
||||||
|
// Message::ColorVectorFromString (Value, Values); \
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//#define DUMP_VEC_COORD(Values, Value) \
|
||||||
|
// { \
|
||||||
|
// Value = Message::CoordVectorToString (aValues); \
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//#define DUMP_VEC_COORD_SPLIT(Value, Values) \
|
||||||
|
// { \
|
||||||
|
// Message::CoordVectorFromString (Value, Values); \
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//#define DUMP_VALUES_SPLIT(OS, ColumnCount, Values) \
|
||||||
|
// { \
|
||||||
|
// Message::ConvertStream (OS, aColumnCount, aValues); \
|
||||||
|
// }
|
||||||
|
|
||||||
|
#endif // _Message_Alerts_HeaderFile
|
30
src/Message/Message_Attribute.cxx
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
// Created on: 2018-06-10
|
||||||
|
// Created by: Natalia Ermolaeva
|
||||||
|
// Copyright (c) 2017 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.
|
||||||
|
|
||||||
|
#include <Message_Attribute.hxx>
|
||||||
|
|
||||||
|
#include <Standard_Assert.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT(Message_Attribute, Standard_Transient)
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : GetMessageKey
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Standard_CString Message_Attribute::GetMessageKey () const
|
||||||
|
{
|
||||||
|
return !myName.IsEmpty() ? myName.ToCString() : "";
|
||||||
|
}
|
67
src/Message/Message_Attribute.hxx
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
// Created on: 2018-06-10
|
||||||
|
// Created by: Natalia Ermolaeva
|
||||||
|
// Copyright (c) 2017 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 _Message_Attribute_HeaderFile
|
||||||
|
#define _Message_Attribute_HeaderFile
|
||||||
|
|
||||||
|
#include <Standard_Transient.hxx>
|
||||||
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
|
||||||
|
DEFINE_STANDARD_HANDLE(Message_Attribute, Standard_Transient)
|
||||||
|
|
||||||
|
//! Additional information of extended alert attribute
|
||||||
|
//! To provide other custom attribute container, it might be redefined.
|
||||||
|
class Message_Attribute : public Standard_Transient
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//! Empty constructor
|
||||||
|
Standard_EXPORT Message_Attribute (const TCollection_AsciiString& theName = TCollection_AsciiString(),
|
||||||
|
const TCollection_AsciiString& theDescription = TCollection_AsciiString())
|
||||||
|
: myName (theName), myDescription (theDescription) {}
|
||||||
|
|
||||||
|
//! Return a C string to be used as a key for generating text user
|
||||||
|
//! messages describing this alert.
|
||||||
|
//! The messages are generated with help of Message_Msg class, in
|
||||||
|
//! Message_Report::Dump().
|
||||||
|
//! Base implementation returns dynamic type name of the instance.
|
||||||
|
virtual Standard_EXPORT Standard_CString GetMessageKey () const;
|
||||||
|
|
||||||
|
//! Returns custom name of alert if it is set
|
||||||
|
//! @return alert name
|
||||||
|
const TCollection_AsciiString& GetName() const { return myName; }
|
||||||
|
|
||||||
|
//! Sets the custom name of alert
|
||||||
|
//! @param theName a name for the alert
|
||||||
|
void SetName (const TCollection_AsciiString& theName) { myName = theName; }
|
||||||
|
|
||||||
|
//! Sets desription of alert
|
||||||
|
//! @param theName a name for the alert
|
||||||
|
void SetDescription (const TCollection_AsciiString& theDescription) { myDescription = theDescription; }
|
||||||
|
|
||||||
|
//! Returns description of alert if it is set
|
||||||
|
//! @return alert description
|
||||||
|
virtual const TCollection_AsciiString& GetDescription() const { return myDescription; }
|
||||||
|
|
||||||
|
// OCCT RTTI
|
||||||
|
DEFINE_STANDARD_RTTIEXT(Message_Attribute, Standard_Transient)
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
TCollection_AsciiString myName; //!< alert name, if defined is used in GetMessageKey
|
||||||
|
TCollection_AsciiString myDescription; //!< alert description if defined
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _Message_Attribute_HeaderFile
|
32
src/Message/Message_AttributeObject.cxx
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
// Created on: 2018-06-10
|
||||||
|
// Created by: Natalia Ermolaeva
|
||||||
|
// Copyright (c) 2017 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.
|
||||||
|
|
||||||
|
#include <Message_AttributeObject.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT(Message_AttributeObject, Message_AttributeStream)
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : Message_AttributeObject
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Message_AttributeObject::Message_AttributeObject (const Handle(Standard_Transient)& theObject,
|
||||||
|
const Standard_SStream& theStream,
|
||||||
|
const TCollection_AsciiString& theName,
|
||||||
|
const TCollection_AsciiString& theDescription)
|
||||||
|
: Message_AttributeStream (theStream, theName, theDescription)
|
||||||
|
{
|
||||||
|
myObject = theObject;
|
||||||
|
}
|
46
src/Message/Message_AttributeObject.hxx
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
// Created on: 2018-06-10
|
||||||
|
// Created by: Natalia Ermolaeva
|
||||||
|
// Copyright (c) 2017 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 _Message_AttributeObject_HeaderFile
|
||||||
|
#define _Message_AttributeObject_HeaderFile
|
||||||
|
|
||||||
|
#include <Message_AttributeStream.hxx>
|
||||||
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
|
||||||
|
//! Alert object storing Transient object in its field
|
||||||
|
class Message_AttributeObject : public Message_AttributeStream
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//! Constructor with string argument
|
||||||
|
Standard_EXPORT Message_AttributeObject (const Handle(Standard_Transient)& theObject,
|
||||||
|
const Standard_SStream& theStream,
|
||||||
|
const TCollection_AsciiString& theName = TCollection_AsciiString(),
|
||||||
|
const TCollection_AsciiString& theDescription = TCollection_AsciiString());
|
||||||
|
|
||||||
|
//! Sets the object
|
||||||
|
//! @param theObject an instance
|
||||||
|
void SetObject (const Handle(Standard_Transient)& theObject) { myObject = theObject; }
|
||||||
|
|
||||||
|
//! Returns object
|
||||||
|
Handle(Standard_Transient) GetObject() const { return myObject; }
|
||||||
|
|
||||||
|
// OCCT RTTI
|
||||||
|
DEFINE_STANDARD_RTTIEXT(Message_AttributeObject, Message_AttributeStream)
|
||||||
|
|
||||||
|
private:
|
||||||
|
Handle(Standard_Transient) myObject;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _Message_AttributeObject_HeaderFile
|