OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, Gap);
OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, Flags);
}
+
+//=======================================================================
+//function : InitJson
+//purpose :
+//=======================================================================
+Standard_Boolean Bnd_Box::InitJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ return Standard_False;
+}
//! Dumps the content of me into the stream
Standard_EXPORT void DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth = -1) const;
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
protected:
//! Bit flags.
OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHDims[2]);
OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myIsAABox);
}
+
+//=======================================================================
+//function : InitJson
+//purpose :
+//=======================================================================
+Standard_Boolean Bnd_OBB::InitJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ return Standard_False;
+}
//! Dumps the content of me into the stream
Standard_EXPORT void DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth = -1) const;
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
protected:
void ProcessOnePoint(const gp_Pnt& theP)
OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, aGroup.get());
}
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, Id);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myZLayer);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, Priority);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, PreviousPriority);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, ContainsFacet);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &ViewAffinity);
+
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, IsInfinite);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, stick);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, highlight);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, visible);
+
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, HLRValidation);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, IsForHighlight);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, IsMutable);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, Is2dText);
+
OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &myBndBox);
OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myTrsf.get());
aTmpPnt = anInvWorldView * aLeftBottomFar;
thePoints.SetValue (FrustumVert_LeftBottomFar, aTmpPnt.xyz() / aTmpPnt.w());
}
+
+//=======================================================================
+//function : DumpJson
+//purpose :
+//=======================================================================
+void Graphic3d_Camera::DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth) const
+{
+ OCCT_DUMP_CLASS_BEGIN (theOStream, Graphic3d_Camera);
+
+ OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &myUp);
+ OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &myDirection);
+ OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &myEye);
+
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myDistance);
+
+ /*gp_XYZ myAxialScale; //!< World axial scale.
+
+ Projection myProjType; //!< Projection type used for rendering.
+ Standard_Real myFOVy; //!< Field Of View in y axis.
+ Standard_Real myFOVyTan; //!< Field Of View as Tan(DTR_HALF * myFOVy)
+ Standard_Real myZNear; //!< Distance to near clipping plane.
+ Standard_Real myZFar; //!< Distance to far clipping plane.
+ Standard_Real myAspect; //!< Width to height display ratio.
+
+ Standard_Real myScale; //!< Specifies parallel scale for orthographic projection.
+ Standard_Real myZFocus; //!< Stereographic focus value.
+ FocusType myZFocusType; //!< Stereographic focus definition type.
+
+ Standard_Real myIOD; //!< Intraocular distance value.
+ IODType myIODType; //!< Intraocular distance definition type.
+
+ Graphic3d_CameraTile myTile;//!< Tile defining sub-area for drawing
+
+ mutable TransformMatrices<Standard_Real> myMatricesD;
+ mutable TransformMatrices<Standard_ShortReal> myMatricesF;
+
+ mutable Graphic3d_WorldViewProjState myWorldViewProjState;*/
+}
//! The matrix will be updated on request.
Standard_EXPORT void InvalidateOrientation();
+ //! Dumps the content of me into the stream
+ Standard_EXPORT void DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth = -1) const;
+
//! @name Managing projection and orientation cache
private:
}
}
}
+
+// =======================================================================
+// function : DumpJson
+// purpose :
+// =======================================================================
+void Graphic3d_Layer::DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth) const
+{
+ OCCT_DUMP_CLASS_BEGIN (theOStream, Graphic3d_Layer);
+
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myLayerId);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myNbStructures);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myNbStructuresNotCulled);
+
+ const Standard_Integer aNbPriorities = myArray.Length();
+ for (Standard_Integer aPriorityIter = 0; aPriorityIter < aNbPriorities; ++aPriorityIter)
+ {
+ const Graphic3d_IndexedMapOfStructure& aStructures = myArray (aPriorityIter);
+ for (Graphic3d_IndexedMapOfStructure::Iterator aStructIter (aStructures); aStructIter.More(); aStructIter.Next())
+ {
+ const Graphic3d_CStructure* aStructure = aStructIter.Value();
+ OCCT_DUMP_FIELD_VALUE_POINTER (theOStream, aStructure);
+ }
+ }
+
+ OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &myLayerSettings);
+
+ //mutable Graphic3d_BvhCStructureSet myBVHPrimitives;
+ //mutable Graphic3d_BvhCStructureSetTrsfPers myBVHPrimitivesTrsfPers;
+ //mutable NCollection_IndexedMap<const Graphic3d_CStructure*> myAlwaysRenderedMap;
+
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myBVHIsLeftChildQueuedFirst);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myIsBVHPrimitivesNeedsReset);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myIsBoundingBoxNeedsReset[0]);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myIsBoundingBoxNeedsReset[1]);
+
+ OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &myBoundingBox[0]);
+ OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &myBoundingBox[1]);
+}
//! Returns indexed map of always rendered structures.
const NCollection_IndexedMap<const Graphic3d_CStructure*>& NonCullableStructures() const { return myAlwaysRenderedMap; }
+ //! Dumps the content of me into the stream
+ Standard_EXPORT void DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth = -1) const;
+
protected:
//! Updates BVH trees if their state has been invalidated.
#include <Graphic3d_LightSet.hxx>
#include <Graphic3d_PolygonOffset.hxx>
#include <Precision.hxx>
+#include <Standard_Dump.hxx>
#include <TCollection_AsciiString.hxx>
enum Graphic3d_ZLayerSetting
myPolygonOffset.Units =-1.0f;
}
+ //! Dumps the content of me into the stream
+ Standard_EXPORT void DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth = -1) const
+ {
+ OCCT_DUMP_CLASS_BEGIN (theOStream, Graphic3d_ZLayerSettings);
+
+ OCCT_DUMP_FIELD_VALUE_STRING (theOStream, myName);
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myLights.get());
+ OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myOriginTrsf.get());
+ OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &myOrigin);
+
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myCullingDistance);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myCullingSize);
+
+ OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &myPolygonOffset);
+
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myIsImmediate);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myToRaytrace);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myUseEnvironmentTexture);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myToEnableDepthTest);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myToEnableDepthWrite);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myToClearDepth);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myToRenderInDepthPrepass);
+
+ }
+
protected:
TCollection_AsciiString myName; //!< user-provided name
void Prs3d_Drawer::DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth) const
{
OCCT_DUMP_CLASS_BEGIN (theOStream, Prs3d_Drawer);
- OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myShadingAspect.get());
- //Handle(Prs3d_Drawer) myLink;
- /*
- Standard_Boolean myHasOwnNbPoints;
- Standard_Real myMaximalParameterValue;
- Standard_Boolean myHasOwnMaximalParameterValue;
- Standard_Real myChordialDeviation;
- Standard_Boolean myHasOwnChordialDeviation;
- Aspect_TypeOfDeflection myTypeOfDeflection;
- Standard_Boolean myHasOwnTypeOfDeflection;
- Prs3d_TypeOfHLR myTypeOfHLR;
- Standard_Real myDeviationCoefficient;
- Standard_Real myPreviousDeviationCoefficient;
- Standard_Boolean myHasOwnDeviationCoefficient;
- Standard_Real myHLRDeviationCoefficient;
- Standard_Boolean myHasOwnHLRDeviationCoefficient;
- Standard_Real myPreviousHLRDeviationCoefficient;
- Standard_Real myDeviationAngle;
- Standard_Boolean myHasOwnDeviationAngle;
- Standard_Real myPreviousDeviationAngle;
- Standard_Real myHLRAngle;
- Standard_Boolean myHasOwnHLRDeviationAngle;
- Standard_Real myPreviousHLRDeviationAngle;
- Standard_Boolean myIsoOnPlane;
- Standard_Boolean myHasOwnIsoOnPlane;
- Standard_Boolean myIsoOnTriangulation;
- Standard_Boolean myHasOwnIsoOnTriangulation;
- Standard_Boolean myIsAutoTriangulated;
- Standard_Boolean myHasOwnIsAutoTriangulated;*/
-
- /*Handle(Prs3d_IsoAspect) myUIsoAspect;
- Standard_Boolean myHasOwnUIsoAspect;
- Handle(Prs3d_IsoAspect) myVIsoAspect;
- Standard_Boolean myHasOwnVIsoAspect;
- Handle(Prs3d_LineAspect) myWireAspect;
- Standard_Boolean myHasOwnWireAspect;
- Standard_Boolean myWireDraw;
- Standard_Boolean myHasOwnWireDraw;
- Handle(Prs3d_PointAspect) myPointAspect;
- Standard_Boolean myHasOwnPointAspect;
- Handle(Prs3d_LineAspect) myLineAspect;
- Standard_Boolean myHasOwnLineAspect;
- */
-
- OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnTextAspect);
- if (!myTextAspect.IsNull())
- OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myTextAspect.get());
-
- //Handle(Prs3d_ShadingAspect) myShadingAspect;
- //Standard_Boolean myHasOwnShadingAspect;
-
- /*Handle(Prs3d_PlaneAspect) myPlaneAspect;
- Standard_Boolean myHasOwnPlaneAspect;
- Handle(Prs3d_LineAspect) mySeenLineAspect;
- Standard_Boolean myHasOwnSeenLineAspect;
- Handle(Prs3d_ArrowAspect) myArrowAspect;
- Standard_Boolean myHasOwnArrowAspect;
- Standard_Boolean myLineArrowDraw;
- Standard_Boolean myHasOwnLineArrowDraw;
- Handle(Prs3d_LineAspect) myHiddenLineAspect;
- Standard_Boolean myHasOwnHiddenLineAspect;
- Standard_Boolean myDrawHiddenLine;
- Standard_Boolean myHasOwnDrawHiddenLine;
- Handle(Prs3d_LineAspect) myVectorAspect;
- Standard_Boolean myHasOwnVectorAspect;
- Prs3d_VertexDrawMode myVertexDrawMode;
- Handle(Prs3d_DatumAspect) myDatumAspect;
- Standard_Boolean myHasOwnDatumAspect;
- Handle(Prs3d_LineAspect) mySectionAspect;
- Standard_Boolean myHasOwnSectionAspect;
-
- Handle(Prs3d_LineAspect) myFreeBoundaryAspect;
- Standard_Boolean myHasOwnFreeBoundaryAspect;
- Standard_Boolean myFreeBoundaryDraw;
- Standard_Boolean myHasOwnFreeBoundaryDraw;
- Handle(Prs3d_LineAspect) myUnFreeBoundaryAspect;
- Standard_Boolean myHasOwnUnFreeBoundaryAspect;
- Standard_Boolean myUnFreeBoundaryDraw;
- Standard_Boolean myHasOwnUnFreeBoundaryDraw;
- Handle(Prs3d_LineAspect) myFaceBoundaryAspect;
- Standard_Integer myFaceBoundaryUpperContinuity; //!< the most edge continuity class (GeomAbs_Shape) to be included to face boundaries presentation, or -1 if undefined
- Standard_Boolean myHasOwnFaceBoundaryAspect;
- Standard_Boolean myFaceBoundaryDraw;
- Standard_Boolean myHasOwnFaceBoundaryDraw;
-
- Handle(Prs3d_DimensionAspect) myDimensionAspect;
- Standard_Boolean myHasOwnDimensionAspect;
- Prs3d_DimensionUnits myDimensionModelUnits;
- Standard_Boolean myHasOwnDimLengthModelUnits;
- Standard_Boolean myHasOwnDimAngleModelUnits;
- Prs3d_DimensionUnits myDimensionDisplayUnits;
- Standard_Boolean myHasOwnDimLengthDisplayUnits;
- Standard_Boolean myHasOwnDimAngleDisplayUnits;
- */
+ OCCT_DUMP_FIELD_VALUE_POINTER (theOStream, myLink.get());
+
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnNbPoints);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myMaximalParameterValue);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnMaximalParameterValue);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myChordialDeviation);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnChordialDeviation);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myTypeOfDeflection);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnTypeOfDeflection);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myTypeOfHLR);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myDeviationCoefficient);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myPreviousDeviationCoefficient);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDeviationCoefficient);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHLRDeviationCoefficient);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnHLRDeviationCoefficient);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myPreviousHLRDeviationCoefficient);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myDeviationAngle);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDeviationAngle);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myPreviousDeviationAngle);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHLRAngle);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnHLRDeviationAngle);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myPreviousHLRDeviationAngle);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myIsoOnPlane);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnIsoOnPlane);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myIsoOnTriangulation);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnIsoOnTriangulation);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myIsAutoTriangulated);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnIsAutoTriangulated);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myUIsoAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnUIsoAspect);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myVIsoAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnVIsoAspect);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myWireAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnWireAspect);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myWireDraw);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnWireDraw);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myPointAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnPointAspect);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myLineAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnLineAspect);
+
+ //OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnTextAspect);
+ OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myTextAspect.get());
+
+ OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myShadingAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnShadingAspect);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myPlaneAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnPlaneAspect);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, mySeenLineAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnSeenLineAspect);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myArrowAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnArrowAspect);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myLineArrowDraw);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnLineArrowDraw);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myHiddenLineAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnHiddenLineAspect);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myDrawHiddenLine);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDrawHiddenLine);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myVectorAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnVectorAspect);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myVertexDrawMode);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myDatumAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDatumAspect);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, mySectionAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnSectionAspect);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myFreeBoundaryAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnFreeBoundaryAspect);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myFreeBoundaryDraw);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnFreeBoundaryDraw);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myUnFreeBoundaryAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnUnFreeBoundaryAspect);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myUnFreeBoundaryDraw);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnUnFreeBoundaryDraw);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myFaceBoundaryAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myFaceBoundaryUpperContinuity);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnFaceBoundaryAspect);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myFaceBoundaryDraw);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnFaceBoundaryDraw);
+
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myDimensionAspect.get());
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDimensionAspect);
+ //OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myDimensionModelUnits);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDimLengthModelUnits);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDimAngleModelUnits);
+ //OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myDimensionDisplayUnits);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDimLengthDisplayUnits);
+ OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDimAngleDisplayUnits);
OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnFillCappingAspect);
- if (!myFillCappingAspect.IsNull())
- OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myFillCappingAspect.get());
+ //OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myFillCappingAspect.get());
}
Standard_SStream aStream;
aStream << theOStream.rdbuf();
TCollection_AsciiString aStreamStr = Standard_Dump::Text (aStream);
- if (!aStreamStr.EndsWith ("{"))
+ if (!aStreamStr.IsEmpty() && !aStreamStr.EndsWith ("{"))
theOStream << ", ";
}
TCollection_AsciiString aText = Text (theStream);
if (aText.IsEmpty())
return Standard_False;
- TCollection_AsciiString aSubText = aText.SubString (theStreamPos, aText.Length());
- TCollection_AsciiString aKeyName = theName + JsonKeyToString (Standard_JsonKey_SeparatorKeyToValue);
+ TCollection_AsciiString aSubText = aText.SubString (theStreamPos, aText.Length());
+ if (aSubText.StartsWith (JsonKeyToString (Standard_JsonKey_SeparatorValueToValue)))
+ {
+ theStreamPos += JsonKeyLength (Standard_JsonKey_SeparatorValueToValue);
+ aSubText = aText.SubString (theStreamPos, aText.Length());
+ }
+ TCollection_AsciiString aKeyName = TCollection_AsciiString (JsonKeyToString (Standard_JsonKey_Quote))
+ + theName
+ + TCollection_AsciiString (JsonKeyToString (Standard_JsonKey_Quote))
+ + JsonKeyToString (Standard_JsonKey_SeparatorKeyToValue);
Standard_Boolean aResult = aSubText.StartsWith (aKeyName);
if (aResult)
theStreamPos += aKeyName.Length();
Standard_Integer& theStreamPos,
int theCount, ...)
{
- Standard_Integer aStreamPos = theStreamPos + JsonKeyLength (Standard_JsonKey_OpenContainer) + 1;
+ Standard_Integer aStreamPos = theStreamPos + JsonKeyLength (Standard_JsonKey_OpenContainer);
TCollection_AsciiString aText = Text (theStream);
TCollection_AsciiString aSubText = aText.SubString (aStreamPos, aText.Length());
- Standard_Integer aClosePos = aSubText.Location (JsonKeyToString (Standard_JsonKey_CloseContainer), aStreamPos, aSubText.Length());
va_list vl;
va_start(vl, theCount);
+ aStreamPos = 1;
+ Standard_Integer aClosePos = aSubText.Location (JsonKeyToString (Standard_JsonKey_CloseContainer), aStreamPos, aSubText.Length());
for(int i = 0; i < theCount; ++i)
{
//if (i < theCount -1)
if (!aValueText.IsRealValue())
return Standard_False;
- va_arg(vl, Standard_Real) = aValueText.RealValue();
+ Standard_Real aVal = aValueText.RealValue();
+ *(va_arg(vl, Standard_Real*)) = aValueText.RealValue();
- aStreamPos = aNextPos + 1;
+ aStreamPos = aNextPos + JsonKeyLength (Standard_JsonKey_SeparatorValueToValue);
//theOStream << va_arg(vl, Standard_Real);
}
va_end(vl);
-
+ aClosePos = aText.Location (JsonKeyToString (Standard_JsonKey_CloseContainer), theStreamPos, aText.Length());
+ theStreamPos = aClosePos + JsonKeyLength (Standard_JsonKey_CloseContainer);
return Standard_True;
}
Standard_Integer aCloseIndex2 = nextClosePosition (theStreamStr, aStartIndex, Standard_JsonKey_None, Standard_JsonKey_SeparatorValueToValue) - 1;
aCloseIndex = aCloseIndex1 < aCloseIndex2 ? aCloseIndex1 : aCloseIndex2;
- aSplitValue = theStreamStr.SubString (aStartIndex, aCloseIndex);
+ aSplitValue = aStartIndex <= aCloseIndex ? theStreamStr.SubString (aStartIndex, aCloseIndex) : "";
theNextIndex = aCloseIndex + 1;
}
break;
//! It creates "key": { result of dump of the field }
//! - OCCT_DUMP_FIELD_VALUES_NUMERICAL. Use it for unlimited list of fields of C++ double type.
//! It creates massive of values [value_1, value_2, ...]
-//! - OCCT_DUMP_FIELD_VALUES_STRING. Use it for unlimited list of fields of TCollection_AsciiString types.
+//! - OCCT_DUMP_FIELD_VALUES_STRING. Use it for unlimited list of fields of TCollection_AsciiString types.F
//! It creates massive of values ["value_1", "value_2", ...]
//! - OCCT_DUMP_BASE_CLASS. Use if Dump implementation of the class is virtual, to perform ClassName::Dump() of the parent class,
//! expected parameter is the parent class name.
//! Depth = -1 is the default value, dump here is unlimited.
#define OCCT_DUMP_FIELD_VALUES_DUMPED(theOStream, theDepth, theField) \
{ \
- if (theDepth != 0) \
+ if (theDepth != 0 && (theField) != NULL) \
{ \
Standard_SStream aFieldStream; \
- if ((theField) != NULL) \
- (theField)->DumpJson (aFieldStream, theDepth - 1); \
+ (theField)->DumpJson (aFieldStream, theDepth - 1); \
const char* aName = Standard_Dump::DumpFieldToName (#theField); \
Standard_Dump::DumpKeyToClass (theOStream, aName, Standard_Dump::Text (aFieldStream)); \
} \
}
+//! @def OCCT_INIT_FIELD_VALUES_DUMPED
+//! Append into output value: "Name": { field dumped values }
+//! It computes Dump of the fields. The expected field is a pointer.
+//! Use this macro for fields of the dumped class which has own Dump implementation.
+//! The macros is recursive. Recursion is stopped when the depth value becomes equal to zero.
+//! Depth = -1 is the default value, dump here is unlimited.
+#define OCCT_INIT_FIELD_VALUES_DUMPED(theSStream, theStreamPos, theField) \
+{ \
+ if ((theField) == NULL || !(theField)->InitJson (theSStream, theStreamPos)) \
+ return Standard_False; \
+}
+
//! @def OCCT_DUMP_FIELD_VALUES_NUMERICAL
//! Append real values into output values in an order: [value_1, value_2, ...]
//! It computes Dump of the parent. The expected field is a parent class name to call ClassName::Dump.
//! It's possible to use it without necessity of OCCT_DUMP_CLASS_BEGIN call, but pay attention that it should be only one row in the object dump.
#define OCCT_DUMP_VECTOR_CLASS(theOStream, theName, theCount, ...) \
{ \
+ Standard_Dump::AddValuesSeparator (theOStream); \
theOStream << "\"" << OCCT_CLASS_NAME(theName) << "\": ["; \
Standard_Dump::DumpRealValues (theOStream, theCount, __VA_ARGS__);\
theOStream << "]"; \
}
-//! @def OCCT_DUMP_VECTOR_CLASS
+//! @def OCCT_INIT_VECTOR_CLASS
//! Append vector values into output value: "Name": [value_1, value_2, ...]
//! This macro is intended to have only one row for dumped object in Json.
//! It's possible to use it without necessity of OCCT_DUMP_CLASS_BEGIN call, but pay attention that it should be only one row in the object dump.
#define OCCT_INIT_VECTOR_CLASS(theOStream, theName, theStreamPos, theCount, ...) \
{ \
- if (!Standard_Dump::ProcessStreamName (theOStream, OCCT_CLASS_NAME(theName), theStreamPos)) \
+ Standard_Integer aStreamPos = theStreamPos; \
+ if (!Standard_Dump::ProcessStreamName (theOStream, OCCT_CLASS_NAME(theName), aStreamPos)) \
return Standard_False; \
- if (!Standard_Dump::InitRealValues (theOStream, theStreamPos, theCount, __VA_ARGS__)) \
+ if (!Standard_Dump::InitRealValues (theOStream, aStreamPos, theCount, __VA_ARGS__)) \
return Standard_False; \
+ theStreamPos = aStreamPos; \
}
//! @brief Simple sentry class providing convenient interface to dump.
{
OCCT_DUMP_CLASS_BEGIN (theOStream, StdSelect_Shape);
+ OCCT_DUMP_BASE_CLASS (theOStream, theDepth, PrsMgr_PresentableObject);
+
OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &mysh);
}
myPlaneStructure->Display();
}
+
+//=======================================================================
+//function : DumpJson
+//purpose :
+//=======================================================================
+void V3d_Viewer::DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth) const
+{
+ OCCT_DUMP_CLASS_BEGIN (theOStream, V3d_Viewer);
+
+ OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &myPrivilegedPlane);
+}
aColor.Values (theV1, theV2, theV3, theType) ;
}
+ //! Dumps the content of me into the stream
+ Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth = -1) const;
+
private:
//! Returns the default background colour.
return A1;
}
-void gp_Ax1::DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth) const
+void gp_Ax1::DumpJson (Standard_OStream& theOStream, const Standard_Integer) const
{
- OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &loc);
- OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &vdir);
+ OCCT_DUMP_VECTOR_CLASS (theOStream, Location, 3, loc.X(), loc.Y(), loc.Z())
+ OCCT_DUMP_VECTOR_CLASS (theOStream, Direction, 3, vdir.X(), vdir.Y(), vdir.Z())
+}
+
+Standard_Boolean gp_Ax1::InitJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ gp_XYZ& anXYZLoc = loc.ChangeCoord();
+ OCCT_INIT_VECTOR_CLASS (theSStream, Location, theStreamPos, 3, &anXYZLoc.ChangeCoord (1), &anXYZLoc.ChangeCoord (2), &anXYZLoc.ChangeCoord (3))
+ gp_XYZ aDir;
+ OCCT_INIT_VECTOR_CLASS (theSStream, Direction, theStreamPos, 3, &aDir.ChangeCoord (1), &aDir.ChangeCoord (2), &aDir.ChangeCoord (3))
+ SetDirection (aDir);
+
+ return Standard_True;
}
//! Dumps the content of me into the stream
Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth = -1) const;
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
protected:
}
-void gp_Ax3::DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth) const
+void gp_Ax3::DumpJson (Standard_OStream& theOStream, const Standard_Integer) const
{
- OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &axis);
- OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &vydir);
- OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &vxdir);
+ OCCT_DUMP_VECTOR_CLASS (theOStream, Location, 3, Location().X(), Location().Y(), Location().Z())
+ OCCT_DUMP_VECTOR_CLASS (theOStream, Direction, 3, Direction().X(), Direction().Y(), Direction().Z())
+
+ OCCT_DUMP_VECTOR_CLASS (theOStream, XDirection, 3, XDirection().X(), XDirection().Y(), XDirection().Z())
+ OCCT_DUMP_VECTOR_CLASS (theOStream, YDirection, 3, YDirection().X(), YDirection().Y(), YDirection().Z())
+}
+
+Standard_Boolean gp_Ax3::InitJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ gp_XYZ anXYZLoc;
+ OCCT_INIT_VECTOR_CLASS (theSStream, Location, theStreamPos, 3, &anXYZLoc.ChangeCoord (1), &anXYZLoc.ChangeCoord (2), &anXYZLoc.ChangeCoord (3))
+ SetLocation (anXYZLoc);
+
+ gp_XYZ aDir;
+ OCCT_INIT_VECTOR_CLASS (theSStream, Direction, theStreamPos, 3, &aDir.ChangeCoord (1), &aDir.ChangeCoord (2), &aDir.ChangeCoord (3))
+ gp_XYZ aXDir;
+ OCCT_INIT_VECTOR_CLASS (theSStream, XDirection, theStreamPos, 3, &aXDir.ChangeCoord (1), &aXDir.ChangeCoord (2), &aXDir.ChangeCoord (3))
+ gp_XYZ anYDir;
+ OCCT_INIT_VECTOR_CLASS (theSStream, YDirection, theStreamPos, 3, &anYDir.ChangeCoord (1), &anYDir.ChangeCoord (2), &anYDir.ChangeCoord (3))
+
+ SetXDirection (aXDir);
+ SetYDirection (anYDir);
+
+ if (!Direction().IsEqual (aDir, Precision::Confusion()))
+ return Standard_False;
+
+ return Standard_True;
}
//! Dumps the content of me into the stream
Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth = -1) const;
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
protected:
void gp_Dir::DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth) const
{
- OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &coord);
+ OCCT_DUMP_VECTOR_CLASS (theOStream, gp_Dir, 3, coord.X(), coord.Y(), coord.Z())
+}
+
+Standard_Boolean gp_Dir::InitJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ OCCT_INIT_VECTOR_CLASS (theSStream, gp_Dir, theStreamPos, 3, &coord.ChangeCoord (1), &coord.ChangeCoord (2), &coord.ChangeCoord (3))
+ return Standard_True;
}
//! Dumps the content of me into the stream
Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth = -1) const;
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
protected:
void gp_Pnt::DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth) const
{
- OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, &coord);
+ OCCT_DUMP_VECTOR_CLASS (theOStream, gp_Pnt, 3, coord.X(), coord.Y(), coord.Z())
+}
+
+Standard_Boolean gp_Pnt::InitJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ OCCT_INIT_VECTOR_CLASS (theSStream, gp_Pnt, theStreamPos, 3, &coord.ChangeCoord (1), &coord.ChangeCoord (2), &coord.ChangeCoord (3))
}
//! Dumps the content of me into the stream
Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth = -1) const;
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
protected:
//function : InitJson
//purpose :
//=======================================================================
-Standard_Boolean gp_XYZ::InitJson (Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+Standard_Boolean gp_XYZ::InitJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
{
OCCT_INIT_VECTOR_CLASS (theSStream, gp_XYZ, theStreamPos, 3, &x, &y, &z)
-
- //NCollection_IndexedDataMap<TCollection_AsciiString, TCollection_AsciiString> aValues;
- //if (!Standard_Dump::SplitJson (Standard_Dump::Text (theSStream), aValues) || aValues.Size() > 1)
- // return Standard_False;
-
- //if (aValues.FindKey (1).IsEqual (OCCT_CLASS_NAME(gp_XYZ)))
- // return Standard_False;
-
- //NCollection_IndexedMap<TCollection_AsciiString> aValuesList;
-
- //TCollection_AsciiString aValue = aValues.FindFromIndex (1);
- //aValue.Split (Standard_Dump::JsonKeyToString (Standard_JsonKey_SeparatorValueToValue), aValuesList);
-
- //if (aValuesList.Size() != 3 ||
- // !aValuesList.FindKey(1).IsRealValue() || !aValuesList.FindKey(2).IsRealValue() || !aValuesList.FindKey(3).IsRealValue())
- // return Standard_False;
-
- //x = aValuesList.FindKey(1).RealValue();
- //y = aValuesList.FindKey(2).RealValue();
- //z = aValuesList.FindKey(3).RealValue();
-
- return Standard_True;
}
Standard_EXPORT void DumpJson (Standard_OStream& theOStream, const Standard_Integer theDepth = -1) const;
//! Inits the content of me into the stream
- Standard_EXPORT Standard_Boolean InitJson (Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+ Standard_EXPORT Standard_Boolean InitJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
protected:
// commercial license or contractual agreement.
#include <inspector/Convert_Tools.hxx>
+#include <inspector/Convert_TransientShape.hxx>
+#include <AIS_Plane.hxx>
+#include <Geom_Plane.hxx>
+#include <Prs3d_PlaneAspect.hxx>
#include <TColgp_Array1OfPnt.hxx>
#include <Standard_Dump.hxx>
#include <BRep_Builder.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
#include <BRepBuilderAPI_MakeVertex.hxx>
+//=======================================================================
+//function : CreateShape
+//purpose :
+//=======================================================================
+void Convert_Tools::ConvertStreamToPresentations (const Standard_SStream& theSStream,
+ const Standard_Integer theStartPos,
+ const Standard_Integer /*theLastPos*/,
+ NCollection_List<Handle(Standard_Transient)>& thePresentations)
+{
+ int aStartPos = theStartPos;
+ gp_XYZ aPoint;
+ if (aPoint.InitJson (theSStream, aStartPos))
+ {
+ thePresentations.Append (new Convert_TransientShape (BRepBuilderAPI_MakeVertex (aPoint)));
+ return;
+ }
+
+ gp_Pnt aPnt;
+ if (aPnt.InitJson (theSStream, aStartPos))
+ {
+ thePresentations.Append (new Convert_TransientShape (BRepBuilderAPI_MakeVertex (aPnt)));
+ return;
+ }
+
+ gp_Dir aDir;
+ if (aDir.InitJson (theSStream, aStartPos))
+ {
+ thePresentations.Append (new Convert_TransientShape (BRepBuilderAPI_MakeEdge (gp::Origin(), aDir.XYZ())));
+ return;
+ }
+
+ gp_Ax3 aPln;
+ if (aPln.InitJson (theSStream, aStartPos))
+ {
+ Handle(Geom_Plane) aGeomPlane = new Geom_Plane (aPln);
+ Handle(AIS_Plane) aPlanePrs = new AIS_Plane (aGeomPlane);
+
+ // TODO - default fields to be defined in another place
+ aPlanePrs->Attributes()->SetPlaneAspect (new Prs3d_PlaneAspect());
+ Handle (Prs3d_PlaneAspect) aPlaneAspect = aPlanePrs->Attributes()->PlaneAspect();
+ aPlaneAspect->SetPlaneLength (100, 100);
+ aPlaneAspect->SetDisplayCenterArrow (Standard_True);
+ aPlaneAspect->SetDisplayEdgesArrows (Standard_True);
+ aPlaneAspect->SetArrowsSize (100);
+ aPlaneAspect->SetArrowsLength (100);
+ aPlaneAspect->SetDisplayCenterArrow (Standard_True);
+ aPlaneAspect->SetDisplayEdges (Standard_True);
+
+ aPlanePrs->SetColor (Quantity_NOC_WHITE);
+ aPlanePrs->SetTransparency (0);
+
+ thePresentations.Append (aPlanePrs);
+ return;
+ }
+}
+
//=======================================================================
//function : CreateShape
//purpose :
#include <gp_XYZ.hxx>
#include <Bnd_Box.hxx>
#include <Bnd_OBB.hxx>
+#include <NCollection_List.hxx>
#include <Standard.hxx>
#include <Standard_Macro.hxx>
#include <TColgp_HArray1OfPnt.hxx>
#include <TCollection_AsciiString.hxx>
#include <TopLoc_Location.hxx>
#include <TopoDS_Shape.hxx>
+#include <Standard_SStream.hxx>
#include <Standard_WarningsDisable.hxx>
#include <QString>
class Convert_Tools
{
public:
+ //! Creates shape presentations on the stream if possible. Tries to init some OCCT base for a new presentation
+ //! \param theStream source of presentation
+ //! \param thePresentations container to add new presentation/s
+ Standard_EXPORT static void ConvertStreamToPresentations (const Standard_SStream& theSStream,
+ const Standard_Integer theStartPos,
+ const Standard_Integer theLastPos,
+ NCollection_List<Handle(Standard_Transient)>& thePresentations);
+
//! Creates box shape
//! \param theBoundingBox box shape parameters
//! \return created shape
aCoords.DumpJson (aStream);
MESSAGE_INFO_STREAM(aStream, "gp_XYZ", "", &aPerfMeter, NULL);
}
+ // gp_Dir
+ {
+ gp_Dir aDir (0.3, 0.3, 0.4);
+ Standard_SStream aStream;
+ aDir.DumpJson (aStream);
+ MESSAGE_INFO_STREAM(aStream, "gp_Dir", "", &aPerfMeter, NULL);
+ }
+ // gp_Ax3
+ {
+ gp_Ax3 aPln (gp_Pnt (10., 20., 15.), gp_Dir (0., 0., 1.), gp_Dir (1., 0., 0.));
+ Standard_SStream aStream;
+ aPln.DumpJson (aStream);
+ MESSAGE_INFO_STREAM(aStream, "gp_Ax3", "", &aPerfMeter, NULL);
+ }
// Bnd_Box
{
Bnd_Box aBox (gp_Pnt (20., 15., 10.), gp_Pnt (25., 20., 15.));
#include <inspector/MessageModel_TreeModel.hxx>
#include <inspector/TreeModel_ContextMenu.hxx>
-#include <inspector/TreeModel_ItemStream.hxx>
#include <inspector/TreeModel_Tools.hxx>
#include <inspector/ViewControl_PropertyView.hxx>
#include <inspector/ViewControl_TableModelValues.hxx>
#include <inspector/ViewControl_TreeView.hxx>
-#include <inspector/Convert_TransientShape.hxx>
+#include <inspector/Convert_Tools.hxx>
+#include <inspector/View_DisplayPreview.hxx >
#include <inspector/View_Tools.hxx>
#include <inspector/View_Viewer.hxx>
#include <inspector/View_Widget.hxx>
MessageView_Window::MessageView_Window (QWidget* theParent)
: QObject (theParent)
{
+ myDisplayPreview = new View_DisplayPreview();
+
myMainWindow = new QMainWindow (theParent);
myTreeView = new ViewControl_TreeView (myMainWindow);
if (!aContext.IsNull())
{
myViewWindow->SetContext (View_ContextType_External, aContext);
+ myViewWindow->GetViewToolBar()->SetCurrentContextType (View_ContextType_External);
}
if (!aViewCamera.IsNull())
}
// =======================================================================
-// function : onTreeViewSelectionChanged
+// function : onTreeViewVisibilityClicked
// purpose :
// =======================================================================
void MessageView_Window::onTreeViewVisibilityClicked(const QModelIndex& theIndex)
if (!anItemBase)
continue;
- //Handle(TreeModel_ItemProperties) anItemProperties = anItemBase->GetProperties();
- //if (anItemProperties)
- // anItemProperties->GetPresentations (-1, -1, aPresentations);
- TreeModel_ItemStreamPtr aStreamParent = itemDynamicCast<TreeModel_ItemStream> (anItemBase);
- if (!aStreamParent)
- return;
-
- Handle(TreeModel_ItemProperties) anItemProperties = aStreamParent->Properties ();
+ Handle(TreeModel_ItemProperties) anItemProperties = anItemBase->Properties ();
if (anItemProperties)
+ {
anItemProperties->GetPresentations (-1, -1, aPresentations);
+ }
MessageModel_ItemAlertPtr anAlertItem = itemDynamicCast<MessageModel_ItemAlert>(anItemBase);
- if (!anAlertItem)
- continue;
- anAlertItem->GetPresentations (aPresentations);
+ if (anAlertItem)
+ {
+ anAlertItem->GetPresentations (aPresentations);
+ }
}
updatePreviewPresentation (aPresentations);
}
return;
QModelIndex anIndex = TreeModel_ModelBase::SingleSelected (aModel->selectedIndexes(), 0);
- TreeModel_ItemStreamPtr aStreamItem = itemDynamicCast<TreeModel_ItemStream> (TreeModel_ModelBase::GetItemByIndex (anIndex));
- if (aStreamItem)
+ TreeModel_ItemBasePtr anItemBase = TreeModel_ModelBase::GetItemByIndex (anIndex);
+ if (anItemBase)
{
- Handle(TreeModel_ItemProperties) anItemProperties = aStreamItem->Properties ();
+ Handle(TreeModel_ItemProperties) anItemProperties = anItemBase->Properties ();
if (!anItemProperties.IsNull())
{
ViewControl_TableModelValues* aTableValues = new ViewControl_TableModelValues();
if (aContext.IsNull())
return;
- if (!myPreviewPresentations.IsEmpty())
- {
- for (NCollection_List<Handle(Standard_Transient)>::Iterator aDisplayedIt (myPreviewPresentations); aDisplayedIt.More(); aDisplayedIt.Next())
- {
- Handle(AIS_InteractiveObject) aPrs = Handle(AIS_InteractiveObject)::DownCast (aDisplayedIt.Value());
- if (!aPrs.IsNull() && aPrs->GetContext() == aContext)
- aContext->Remove (aPrs, Standard_True);
- }
- }
- myPreviewPresentations.Clear();
-
- myPreviewPresentations = thePresentations;
- if (myPreviewPresentations.IsEmpty())
- return;
-
- BRep_Builder aBuilder;
- TopoDS_Compound aCompound;
- aBuilder.MakeCompound (aCompound);
- for (NCollection_List<Handle(Standard_Transient)>::Iterator aDisplayedIt (myPreviewPresentations); aDisplayedIt.More(); aDisplayedIt.Next())
- {
- Handle(AIS_InteractiveObject) aPrs = Handle(AIS_InteractiveObject)::DownCast (aDisplayedIt.Value());
- if (!aPrs.IsNull())
- {
- if (!aPrs->GetContext().IsNull())
- continue; // not possible to display one object in several contexts
- aContext->Display (aPrs, AIS_Shaded, -1/*do not participate in selection*/, Standard_True);
- }
- else if (!Handle(Convert_TransientShape)::DownCast (aDisplayedIt.Value()).IsNull())
- {
- Handle(Convert_TransientShape) aShapeObject = Handle(Convert_TransientShape)::DownCast (aDisplayedIt.Value());
- aBuilder.Add (aCompound, aShapeObject->GetShape());
- }
- }
-
- if (aCompound.IsNull())
- {
- if (!aContext.IsNull() && myPreviewPresentation->GetContext() == aContext)
- aContext->Remove (myPreviewPresentation, Standard_True);
- myPreviewPresentation = NULL;
- return;
-
- }
- else
- {
- if (myPreviewPresentation.IsNull())
- {
- myPreviewPresentation = new AIS_Shape (aCompound);
- myPreviewPresentation->SetAttributes (GetPreviewAttributes(aContext));
- //myPreviewPresentation->SetAttributes (myPreviewParameters->GetDrawer());
-
- //myPreviewPresentation->SetTransformPersistence(thePersistent);
- if (!aContext.IsNull())
- aContext->Display (myPreviewPresentation, AIS_Shaded, -1/*do not participate in selection*/, Standard_True);
- }
- else
- {
- Handle(AIS_Shape)::DownCast (myPreviewPresentation)->Set (aCompound);
- //myPreviewPresentation->SetTransformPersistence(thePersistent);
- if (!aContext.IsNull() && myPreviewPresentation->GetContext() == aContext)
- aContext->Redisplay (myPreviewPresentation, Standard_True);
- }
- }
+ myDisplayPreview->SetContext (aContext);
+ myDisplayPreview->UpdatePreview (View_DisplayActionType_DisplayId, thePresentations);
}
class View_Window;
+class View_DisplayPreview;
class ViewControl_PropertyView;
class MessageModel_ReportCallBack;
QDockWidget* myPropertyPanelWidget; //!< property pane dockable widget
ViewControl_PropertyView* myPropertyView; //!< property control to display model item values if exist
+ View_DisplayPreview* myDisplayPreview; //!< class for preview display
+
View_Window* myViewWindow; //!< OCC 3d view to visualize presentations
QTreeView* myTreeView; //!< tree view visualized shapes
MessageModel_Actions* myTreeViewActions; //!< processing history view actions
Handle(Message_ReportCallBack) myCallBack; //! < message call back to update content of the view
Handle(AIS_InteractiveObject) myPreviewPresentation; //!< presentation of preview for a selected object
- NCollection_List<Handle(Standard_Transient)> myPreviewPresentations;
};
#endif
aPlugins.insert("TKShapeView");
aPlugins.insert("TKVInspector");
- //Handle(Message_Report) aReport = Message_Report::CurrentReport (Standard_True);
- //aReport->SetLimit (100);//30);
- //aReport->SetActive (Standard_True);//Standard_False);
- //aPlugins.insert("TKMessageView");
+ Handle(Message_Report) aReport = Message_Report::CurrentReport (Standard_True);
+ aReport->SetLimit (100);//30);
+ aReport->SetActive (Standard_True);//Standard_False);
+ aPlugins.insert("TKMessageView");
anActivatedPluginName = "TKVInspector";
//anActivatedPluginName = "TKMessageView";
TKBRep
TKTopAlgo
TKPrim
+TKV3d
// commercial license or contractual agreement.
#include <inspector/TreeModel_ItemBase.hxx>
+#include <inspector/TreeModel_ItemProperties.hxx>
#include <inspector/TreeModel_ItemRole.hxx>
#include <inspector/TreeModel_ItemStream.hxx>
anItem->Reset();
}
m_bInitialized = false;
+ if (!myProperties.IsNull())
+ {
+ myProperties->Reset();
+ myProperties = 0;
+ }
myCachedValues.clear();
}
Standard_Dump::SplitJson (Standard_Dump::Text (aStream), aValues);
aHierarchicalValues = Standard_Dump::HierarchicalValueIndices (aValues);
+ if (!aValues.IsEmpty())
+ {
+ if (!myProperties)
+ {
+ myProperties = new TreeModel_ItemProperties();
+ myProperties->SetItem (currentItem());
+ }
+ TCollection_AsciiString aKeyValue, aPropertiesValue;
+ aKeyValue = aValues.FindFromIndex (/*Row() +*/ 1);
+ if (!Standard_Dump::SplitJson (aKeyValue, aValues))
+ aPropertiesValue = Standard_Dump::Text (aStream);
+ else
+ aPropertiesValue = aKeyValue;
+
+ myProperties->Init (aPropertiesValue);
+ }
+
//if (aHierarchicalValues.Size() == 1)
}
m_iStreamChildren = aHierarchicalValues.Extent();
#include <Standard_WarningsRestore.hxx>
class TreeModel_ItemBase;
+class TreeModel_ItemProperties;
typedef QExplicitlySharedDataPointer<TreeModel_ItemBase> TreeModel_ItemBasePtr;
//! Dumps the content of me into the stream
virtual Standard_Boolean Dump (Standard_OStream& theOStream) const { (void)theOStream; return Standard_False; }
+ //! Returns the item properties
+ Handle(TreeModel_ItemProperties) Properties() const { return myProperties; }
+
protected:
//! \param theParent the parent item
//! \return the value
Standard_EXPORT virtual QVariant initValue (const int theItemRole) const;
+protected:
+ Handle(TreeModel_ItemProperties) myProperties; //!< the properties
+
private:
typedef QHash< QPair<int, int>, TreeModel_ItemBasePtr > PositionToItemHash;
// commercial license or contractual agreement.
#include <inspector/TreeModel_ItemProperties.hxx>
+#include <inspector/Convert_Tools.hxx>
#include <inspector/Convert_TransientShape.hxx>
#include <BRepBuilderAPI_MakeVertex.hxx>
if (theRow < 0) // full presentation
{
+ Standard_SStream aStream;
+ Item()->GetStream (aStream);
+
+ Convert_Tools::ConvertStreamToPresentations (aStream, 1, -1, thePresentations);
return;
}
myKey = "";
myStreamValue = "";
- myProperties->Reset();
myChildren.Clear();
TreeModel_ItemBase::Reset();
const NCollection_IndexedDataMap<TCollection_AsciiString, TCollection_AsciiString>& GetChildren() const
{ initItem(); return myChildren; }
- //! Returns the item properties
- Handle(TreeModel_ItemProperties) Properties() const { return myProperties; }
-
//! Returns stream value of the item to fulfill property panel.
//! \return stream value or dummy
virtual void GetStream (Standard_OStream& theOStream) const Standard_OVERRIDE;
Standard_EXPORT TreeModel_ItemStream(TreeModel_ItemBasePtr theParent, const int theRow, const int theColumn);
protected:
- Handle(TreeModel_ItemProperties) myProperties; //!< the properties
TCollection_AsciiString myKey; //!< the item key
TCollection_AsciiString myStreamValue; //!< the stream value
NCollection_IndexedDataMap<TCollection_AsciiString, TCollection_AsciiString> myChildren; //!< the children
myCamera = NULL;
}
+// =======================================================================
+// function : GetStream
+// purpose :
+// =======================================================================
+void VInspector_ItemGraphic3dCamera::GetStream (Standard_OStream& theOStream) const
+{
+ Handle(Graphic3d_Camera) aCamera = GetCamera();
+ if (aCamera.IsNull())
+ return;
+
+ aCamera->DumpJson (theOStream);
+}
+
// =======================================================================
// function : initItem
// purpose :
// =======================================================================
int VInspector_ItemGraphic3dCamera::initRowCount() const
{
+ Handle(Graphic3d_Camera) aCamera = GetCamera(); // we need Init() call for having GetStream() filled
+
return 0;
}
//! Resets cached values
Standard_EXPORT virtual void Reset() Standard_OVERRIDE;
+ //! Returns stream value of the item to fulfill property panel.
+ //! \return stream value or dummy
+ Standard_EXPORT virtual void GetStream (Standard_OStream& theOStream) const Standard_OVERRIDE;
+
protected:
//! Build presentation shape
//! \return generated shape of the item parameters
const_cast<VInspector_ItemPrs3dDrawer*>(this)->Init();
}
+
+// =======================================================================
+// function : GetStream
+// purpose :
+// =======================================================================
+void VInspector_ItemPrs3dDrawer::GetStream (Standard_OStream& theOStream) const
+{
+ Handle(Prs3d_Drawer) aDrawer = GetDrawer();
+ if (aDrawer.IsNull())
+ return;
+
+ aDrawer->DumpJson (theOStream);
+}
+
// =======================================================================
// function : GetPrs3dAspect
// purpose :
TCollection_AsciiString& theName,
Standard_Boolean& theOwnAspect) const;
+ //! Returns stream value of the item to fulfill property panel.
+ //! \return stream value or dummy
+ Standard_EXPORT virtual void GetStream (Standard_OStream& theOStream) const Standard_OVERRIDE;
+
protected:
//! Initialize the current item. It is empty because Reset() is also empty.
setViewer (NULL);
}
+// =======================================================================
+// function : GetStream
+// purpose :
+// =======================================================================
+void VInspector_ItemV3dViewer::GetStream (Standard_OStream& theOStream) const
+{
+ Handle(V3d_Viewer) aViewer = GetViewer();
+ if (aViewer.IsNull())
+ return;
+
+ aViewer->DumpJson (theOStream);
+}
+
// =======================================================================
// function : initItem
// purpose :
Standard_EXPORT Handle(V3d_Viewer) GetViewer() const
{ return Handle(V3d_Viewer)::DownCast (GetObject()); }
+ //! Returns stream value of the item to fulfill property panel.
+ //! \return stream value or dummy
+ Standard_EXPORT virtual void GetStream (Standard_OStream& theOStream) const Standard_OVERRIDE;
+
protected:
//! Initialize the current item. It is empty because Reset() is also empty.
virtual void initItem() const Standard_OVERRIDE;
Handle(AIS_InteractiveContext) aContext = View_Viewer::CreateStandardViewer();
Handle(AIS_Trihedron) aTrihedron = new AIS_Trihedron (new Geom_Axis2Placement (gp::XOY()));
- aTrihedron->SetDatumDisplayMode (Prs3d_DM_Shaded);
+ aTrihedron->SetSize (0.5);
+ //aTrihedron->SetDatumDisplayMode (Prs3d_DM_Shaded);
aContext->Display (aTrihedron, Standard_True);
myViewWindow = new View_Window (0, aContext, false /*for opening several BREP files*/, true);
#include <BRepBuilderAPI_MakeFace.hxx>
#include <Geom_Axis2Placement.hxx>
+#include <Prs3d_PointAspect.hxx>
#include <TopoDS_Compound.hxx>
+void enableGlobalClipping (const Handle(AIS_InteractiveObject)& theObject, const bool theIsEnable)
+{
+ if (theIsEnable)
+ {
+ theObject->SetClipPlanes (Handle(Graphic3d_SequenceOfHClipPlane)());
+ }
+ else
+ {
+ Handle(Graphic3d_SequenceOfHClipPlane) aPlanes = new Graphic3d_SequenceOfHClipPlane;
+ aPlanes->SetOverrideGlobal (Standard_True);
+ theObject->SetClipPlanes (aPlanes);
+ }
+}
+
// =======================================================================
// function : Constructor
// purpose :
// remove all preview presentations from the previous context, display it in the new
myContext = theContext;
- myPreviewParameters->GetDrawer()->Link (theContext->DefaultDrawer());
+ if (!theContext.IsNull())
+ myPreviewParameters->GetDrawer()->Link (theContext->DefaultDrawer());
}
// =======================================================================
if (myContext.IsNull())
return;
+ // clear previous previews
+ for (NCollection_List<Handle(AIS_InteractiveObject)>::Iterator anIterator (myPreviewReadyPresentations); anIterator.More(); anIterator.Next())
+ {
+ if (!anIterator.Value()->GetContext().IsNull())
+ anIterator.Value()->GetContext()->Remove (anIterator.Value(), Standard_True);
+ }
+ myPreviewReadyPresentations.Clear();
+
if (thePresentations.IsEmpty())
{
- myContext->Remove (myPreviewPresentation, Standard_True);
+ if (!myPreviewPresentation.IsNull() && !myPreviewPresentation->GetContext().IsNull())
+ myPreviewPresentation->GetContext()->Remove (myPreviewPresentation, Standard_True);
myPreviewPresentation = NULL;
+
return;
}
+ // display parameter previews
BRep_Builder aBuilder;
TopoDS_Compound aCompound;
aBuilder.MakeCompound (aCompound);
for (NCollection_List<Handle(Standard_Transient)>::Iterator anIterator (thePresentations); anIterator.More(); anIterator.Next())
{
Handle(Convert_TransientShape) aShapePtr = Handle(Convert_TransientShape)::DownCast (anIterator.Value());
- if (aShapePtr.IsNull())
- continue;
-
- aBuilder.Add (aCompound, aShapePtr->GetShape());
+ if (!aShapePtr.IsNull())
+ {
+ aBuilder.Add (aCompound, aShapePtr->GetShape());
+ }
+ Handle(AIS_InteractiveObject) aPrs = Handle(AIS_InteractiveObject)::DownCast (anIterator.Value());
+ if (!aPrs.IsNull() && aPrs->GetContext().IsNull()/*is not displayed in another context*/)
+ {
+ myContext->Display (aPrs, AIS_Shaded, -1/*do not participate in selection*/, Standard_True);
+ enableGlobalClipping(aPrs, false);
+ myPreviewReadyPresentations.Append (aPrs);
+ }
}
if (myPreviewPresentation.IsNull())
{
myPreviewPresentation = new AIS_Shape (aCompound);
+ Quantity_Color aColor(Quantity_NOC_TOMATO);
+ myPreviewPresentation->Attributes()->SetPointAspect (new Prs3d_PointAspect (Aspect_TOM_O_PLUS, aColor, 3.0));
myPreviewPresentation->SetAttributes (myPreviewParameters->GetDrawer());
//myPreviewPresentation->SetTransformPersistence(thePersistent);
myContext->Display (myPreviewPresentation, AIS_Shaded, -1/*do not participate in selection*/, Standard_True);
+ enableGlobalClipping(myPreviewPresentation, false);
}
else
{
Handle(AIS_Shape)::DownCast (myPreviewPresentation)->Set (aCompound);
//myPreviewPresentation->SetTransformPersistence(thePersistent);
- myContext->Redisplay (myPreviewPresentation, Standard_True);
+ if (!myPreviewPresentation.IsNull() && !myPreviewPresentation->GetContext().IsNull())
+ {
+ myPreviewPresentation->GetContext()->Redisplay (myPreviewPresentation, Standard_True);
+ }
}
}
View_PreviewParameters* myPreviewParameters; //!< drawer of preview presentation
Handle(AIS_InteractiveObject) myPreviewPresentation; //!< presentation of preview for a selected object
+ NCollection_List<Handle(AIS_InteractiveObject)> myPreviewReadyPresentations; //!< presentation of preview for a selected object
};
#endif
myDrawer->ShadingAspect()->SetColor (aColor);
myDrawer->ShadingAspect()->SetMaterial (aShadingMaterial);
- myDrawer->ShadingAspect()->Aspect()->ChangeFrontMaterial().SetTransparency (aTransparency);
- myDrawer->ShadingAspect()->Aspect()->ChangeBackMaterial() .SetTransparency (aTransparency);
- myDrawer->SetTransparency (aTransparency);
+ //myDrawer->ShadingAspect()->Aspect()->ChangeFrontMaterial().SetTransparency (aTransparency);
+ //myDrawer->ShadingAspect()->Aspect()->ChangeBackMaterial() .SetTransparency (aTransparency);
+ //myDrawer->SetTransparency (aTransparency);
// common parameters
myDrawer->SetZLayer (Graphic3d_ZLayerId_Topmost);
return (View_ContextType)myViewSelector->currentIndex();
}
+// =======================================================================
+// function : SetCurrentContext
+// purpose :
+// =======================================================================
+void View_ToolBar::SetCurrentContextType (View_ContextType theType)
+{
+ myViewSelector->setCurrentIndex ((int)theType);
+ emit contextChanged();
+}
+
// =======================================================================
// function : GetCurrentContext
// purpose :
//! \returns type of active item of context selector
Standard_EXPORT View_ContextType GetCurrentContextType() const;
+ //! Sets current context type
+ //! \param theType a context type
+ Standard_EXPORT void SetCurrentContextType (View_ContextType theType);
+
//! \returns an active context of context selector
Standard_EXPORT Handle(AIS_InteractiveContext) GetCurrentContext() const;