}
}
+ //! Inits the content of me into the stream
+ Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+ {
+ Standard_Integer aPos = theStreamPos;
+
+ Standard_Integer isInited = 0;
+ OCCT_INIT_FIELD_VALUE_INTEGER (theSStream, aPos, isInited);
+ myIsInited = isInited != 0;
+
+ int n = Min (N, 3);
+ if (n == 1)
+ {
+ Standard_Real aValue;
+ OCCT_INIT_FIELD_VALUE_REAL (theSStream, aPos, aValue);
+ myMinPoint[0] = (T)aValue;
+ }
+ if (n == 2)
+ {
+ Standard_Real aValue1, aValue2;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "MinPoint", aPos, n, &aValue1, &aValue2);
+ myMinPoint[0] = (T)aValue1;
+ myMinPoint[1] = (T)aValue2;
+
+ OCCT_INIT_VECTOR_CLASS (theSStream, "MaxPoint", aPos, n, &aValue1, &aValue2);
+ myMaxPoint[0] = (T)aValue1;
+ myMaxPoint[1] = (T)aValue2;
+ }
+ if (n == 3)
+ {
+ Standard_Real aValue1, aValue2, aValue3;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "MinPoint", aPos, n, &aValue1, &aValue2, &aValue3);
+ myMinPoint[0] = (T)aValue1;
+ myMinPoint[1] = (T)aValue2;
+ myMinPoint[2] = (T)aValue3;
+
+ OCCT_INIT_VECTOR_CLASS (theSStream, "MaxPoint", aPos, n, &aValue1, &aValue2, &aValue3);
+ myMaxPoint[0] = (T)aValue1;
+ myMaxPoint[1] = (T)aValue2;
+ myMaxPoint[2] = (T)aValue3;
+ }
+
+ theStreamPos = aPos;
+ return Standard_True;
+ }
+
public:
//! Checks if the Box is out of the other box.
OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, Gap)
OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, Flags)
}
+
+//=======================================================================
+//function : InitFromJson
+//purpose :
+//=======================================================================
+Standard_Boolean Bnd_Box::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ Standard_Integer aPos = theStreamPos;
+
+ OCCT_INIT_VECTOR_CLASS (theSStream, "CornerMin", aPos, 3, &Xmin, &Ymin, &Zmin)
+ OCCT_INIT_VECTOR_CLASS (theSStream, "CornerMax", aPos, 3, &Xmax, &Ymax, &Zmax)
+
+ OCCT_INIT_FIELD_VALUE_REAL (theSStream, aPos, Gap);
+ OCCT_INIT_FIELD_VALUE_INTEGER (theSStream, aPos, Flags);
+
+ theStreamPos = aPos;
+ return Standard_True;
+}
//! Dumps the content of me into the stream
Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
protected:
//! Bit flags.
{
OCCT_DUMP_FIELD_VALUES_NUMERICAL (theOStream, "RGB", 3, myRgb.r(), myRgb.g(), myRgb.b())
}
+
+//=======================================================================
+//function : InitFromJson
+//purpose :
+//=======================================================================
+Standard_Boolean Quantity_Color::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ Standard_Integer aPos = theStreamPos;
+ Standard_Real aRed, aGreen, aBlue;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "RGB", aPos, 3, &aRed, &aGreen, &aBlue)
+
+ SetValues ((Standard_ShortReal)aRed, (Standard_ShortReal)aGreen, (Standard_ShortReal)aBlue, Quantity_TOC_RGB);
+ return Standard_True;
+}
//! Dumps the content of me into the stream
Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
private:
//! Returns the values of a predefined color according to the mode.
{
OCCT_DUMP_FIELD_VALUES_NUMERICAL (theOStream, "RGBA", 4, myRgb.Red(), myRgb.Green(), myRgb.Blue(), myAlpha)
}
+
+//=======================================================================
+//function : InitFromJson
+//purpose :
+//=======================================================================
+Standard_Boolean Quantity_ColorRGBA::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ Standard_Integer aPos = theStreamPos;
+
+ Standard_Real aRed, aGreen, aBlue, anAlpha;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "RGBA", aPos, 4, &aRed, &aGreen, &aBlue, &anAlpha)
+
+ SetValues ((Standard_ShortReal)aRed, (Standard_ShortReal)aGreen, (Standard_ShortReal)aBlue, (Standard_ShortReal)anAlpha);
+ return Standard_True;
+}
//! Dumps the content of me into the stream
Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
private:
static void myTestSize3() { Standard_STATIC_ASSERT (sizeof(float) * 3 == sizeof(Quantity_Color)); }
va_end(vl);
}
+//=======================================================================
+//function : ProcessStreamName
+//purpose :
+//=======================================================================
+Standard_Boolean Standard_Dump::ProcessStreamName (const Standard_SStream& theStream,
+ const TCollection_AsciiString& theName,
+ Standard_Integer& theStreamPos)
+{
+ TCollection_AsciiString aText = Text (theStream);
+ if (aText.IsEmpty())
+ return Standard_False;
+
+ if (aText.Length () < theStreamPos)
+ return Standard_False;
+
+ 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();
+
+ return aResult;
+}
+
+//=======================================================================
+//function : ProcessFieldName
+//purpose :
+//=======================================================================
+Standard_Boolean Standard_Dump::ProcessFieldName (const Standard_SStream& theStream,
+ const TCollection_AsciiString& theName,
+ Standard_Integer& theStreamPos)
+{
+ TCollection_AsciiString aText = Text (theStream);
+ if (aText.IsEmpty())
+ return Standard_False;
+
+ 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 aName = Standard_Dump::DumpFieldToName (theName.ToCString());
+ TCollection_AsciiString aKeyName = TCollection_AsciiString (JsonKeyToString (Standard_JsonKey_Quote))
+ + aName
+ + TCollection_AsciiString (JsonKeyToString (Standard_JsonKey_Quote))
+ + JsonKeyToString (Standard_JsonKey_SeparatorKeyToValue);
+
+ Standard_Boolean aResult = aSubText.StartsWith (aKeyName);
+ if (aResult)
+ theStreamPos += aKeyName.Length();
+
+ return aResult;
+}
+
+//=======================================================================
+//function : InitRealValues
+//purpose :
+//=======================================================================
+Standard_Boolean Standard_Dump::InitRealValues (const Standard_SStream& theStream,
+ Standard_Integer& theStreamPos,
+ int theCount, ...)
+{
+ Standard_Integer aStreamPos = theStreamPos + JsonKeyLength (Standard_JsonKey_OpenContainer);
+
+ TCollection_AsciiString aText = Text (theStream);
+ TCollection_AsciiString aSubText = aText.SubString (aStreamPos, aText.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)
+ {
+ Standard_Integer aNextPos = (i < theCount-1) ? aSubText.Location (JsonKeyToString (Standard_JsonKey_SeparatorValueToValue), aStreamPos, aSubText.Length())
+ : aClosePos;
+
+ TCollection_AsciiString aValueText = aSubText.SubString (aStreamPos, aNextPos - 1);
+
+ if (!aValueText.IsRealValue())
+ return Standard_False;
+
+ Standard_Real aValue = aValueText.RealValue();
+ *(va_arg(vl, Standard_Real*)) = aValue;
+
+ aStreamPos = aNextPos + JsonKeyLength (Standard_JsonKey_SeparatorValueToValue);
+ }
+ va_end(vl);
+ aClosePos = aText.Location (JsonKeyToString (Standard_JsonKey_CloseContainer), theStreamPos, aText.Length());
+ theStreamPos = aClosePos + JsonKeyLength (Standard_JsonKey_CloseContainer);
+
+ return Standard_True;
+}
+
+//=======================================================================
+//function : InitValue
+//purpose :
+//=======================================================================
+Standard_Boolean Standard_Dump::InitValue (const Standard_SStream& theStream,
+ Standard_Integer& theStreamPos,
+ TCollection_AsciiString& theValue)
+{
+ Standard_Integer aStreamPos = theStreamPos;
+
+ TCollection_AsciiString aText = Text (theStream);
+ TCollection_AsciiString aSubText = aText.SubString (aStreamPos, aText.Length());
+
+ aStreamPos = 1;
+ Standard_Integer aNextPos = aSubText.Location (JsonKeyToString (Standard_JsonKey_SeparatorValueToValue), aStreamPos, aSubText.Length());
+ Standard_JsonKey aNextKey = Standard_JsonKey_SeparatorValueToValue;
+
+ Standard_Integer aCloseChildPos = aSubText.Location (JsonKeyToString (Standard_JsonKey_CloseChild), aStreamPos, aSubText.Length());
+ Standard_Boolean isUseClosePos = (aNextPos > 0 && aCloseChildPos > 0 && aCloseChildPos < aNextPos) || !aNextPos;
+ if (isUseClosePos)
+ {
+ aNextPos = aCloseChildPos;
+ aNextKey = Standard_JsonKey_CloseChild;
+ }
+
+ theValue = aNextPos ? aSubText.SubString (aStreamPos, aNextPos - 1) : aSubText;
+ theStreamPos = aNextPos ? (theStreamPos + (aNextPos - aStreamPos) + JsonKeyLength (aNextKey)) : aText.Length();
+ return Standard_True;
+}
+
// =======================================================================
// function : GetPointerInfo
// purpose :
theOStream << "\"" << aName << "\": " << theField; \
}
+//! @def OCCT_INIT_FIELD_VALUE_REAL
+//! 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_FIELD_VALUE_REAL(theOStream, theStreamPos, theField) \
+{ \
+ Standard_Integer aStreamPos = theStreamPos; \
+ if (!Standard_Dump::ProcessFieldName (theOStream, #theField, aStreamPos)) \
+ return Standard_False; \
+ TCollection_AsciiString aValueText; \
+ if (!Standard_Dump::InitValue (theOStream, aStreamPos, aValueText) || !aValueText.IsRealValue()) \
+ return Standard_False; \
+ theField = aValueText.RealValue(); \
+ theStreamPos = aStreamPos; \
+}
+
+//! @def OCCT_INIT_FIELD_VALUE_NUMERICAL
+//! 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_FIELD_VALUE_INTEGER(theOStream, theStreamPos, theField) \
+{ \
+ Standard_Integer aStreamPos = theStreamPos; \
+ if (!Standard_Dump::ProcessFieldName (theOStream, #theField, aStreamPos)) \
+ return Standard_False; \
+ TCollection_AsciiString aValueText; \
+ if (!Standard_Dump::InitValue (theOStream, aStreamPos, aValueText) || !aValueText.IsIntegerValue()) \
+ return Standard_False; \
+ theField = aValueText.IntegerValue(); \
+ theStreamPos = aStreamPos; \
+}
+
//! @def OCCT_DUMP_FIELD_VALUE_STRING
//! Append into output value: "Name": "Field"
#define OCCT_DUMP_FIELD_VALUE_STRING(theOStream, theField) \
} \
}
+//! @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)->InitFromJson (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.
theOStream << "]"; \
}
+//! @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, ...) \
+{ \
+ Standard_Integer aStreamPos = theStreamPos; \
+ if (!Standard_Dump::ProcessStreamName (theOStream, theName, aStreamPos)) \
+ return Standard_False; \
+ if (!Standard_Dump::InitRealValues (theOStream, aStreamPos, theCount, __VA_ARGS__)) \
+ return Standard_False; \
+ theStreamPos = aStreamPos; \
+}
+
//! Kind of key in Json string
enum Standard_JsonKey
{
//! @param theCount numer of values
Standard_EXPORT static void DumpRealValues (Standard_OStream& theOStream, int theCount, ...);
+ //! Check whether the parameter name is equal to the name in the stream at position
+ //! @param theSStream stream with values
+ //! @param theName stream key value
+ //! @param theStreamPos current position in the stream
+ Standard_EXPORT static Standard_Boolean ProcessStreamName (const Standard_SStream& theStream,
+ const TCollection_AsciiString& theName,
+ Standard_Integer& theStreamPos);
+
+ //! Check whether the field name is equal to the name in the stream at position
+ //! @param theSStream stream with values
+ //! @param theName stream key field value
+ //! @param theStreamPos current position in the stream
+ Standard_EXPORT static Standard_Boolean ProcessFieldName (const Standard_SStream& theStream,
+ const TCollection_AsciiString& theName,
+ Standard_Integer& theStreamPos);
+
+ //! Unite values in one value using template: value_1, value_2, ..., value_n
+ //! @param theSStream stream with values
+ //! @param theStreamPos current position in the stream
+ //! @param theCount numer of values
+ Standard_EXPORT static Standard_Boolean InitRealValues (const Standard_SStream& theStream,
+ Standard_Integer& theStreamPos,
+ int theCount, ...);
+
+ //! Returns real value
+ //! @param theSStream stream with values
+ //! @param theStreamPos current position in the stream
+ //! @param theValue stream value
+ Standard_EXPORT static Standard_Boolean InitValue (const Standard_SStream& theStream,
+ Standard_Integer& theStreamPos,
+ TCollection_AsciiString& theValue);
+
//! Convert field name into dump text value, removes "&" and "my" prefixes
//! An example, for field myValue, theName is Value, for &myCLass, the name is Class
//! @param theField a source value
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::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ Standard_Integer aPos = theStreamPos;
+
+ gp_XYZ& anXYZLoc = loc.ChangeCoord();
+ OCCT_INIT_VECTOR_CLASS (theSStream, "Location", aPos, 3, &anXYZLoc.ChangeCoord (1), &anXYZLoc.ChangeCoord (2), &anXYZLoc.ChangeCoord (3))
+ gp_XYZ aDir;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "Direction", aPos, 3, &aDir.ChangeCoord (1), &aDir.ChangeCoord (2), &aDir.ChangeCoord (3))
+ SetDirection (aDir);
+
+ theStreamPos = aPos;
+ return Standard_True;
+}
//! Dumps the content of me into the stream
Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
-
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
protected:
OCCT_DUMP_VECTOR_CLASS (theOStream, "XDirection", 3, vxdir.X(), vxdir.Y(), vxdir.Z())
OCCT_DUMP_VECTOR_CLASS (theOStream, "YDirection", 3, vydir.X(), vydir.Y(), vydir.Z())
}
+
+Standard_Boolean gp_Ax2::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ Standard_Integer aPos = theStreamPos;
+
+ gp_XYZ anXYZLoc;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "Location", aPos, 3, &anXYZLoc.ChangeCoord (1), &anXYZLoc.ChangeCoord (2), &anXYZLoc.ChangeCoord (3))
+ SetLocation (anXYZLoc);
+
+ gp_XYZ aDir;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "Direction", aPos, 3, &aDir.ChangeCoord (1), &aDir.ChangeCoord (2), &aDir.ChangeCoord (3))
+ gp_XYZ aXDir;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "XDirection", aPos, 3, &aXDir.ChangeCoord (1), &aXDir.ChangeCoord (2), &aXDir.ChangeCoord (3))
+ gp_XYZ anYDir;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "YDirection", aPos, 3, &anYDir.ChangeCoord (1), &anYDir.ChangeCoord (2), &anYDir.ChangeCoord (3))
+
+ SetXDirection (aXDir);
+ SetYDirection (anYDir);
+
+ if (!Direction().IsEqual (aDir, Precision::Confusion()))
+ return Standard_False;
+
+ theStreamPos = aPos;
+ return Standard_True;
+}
//! Dumps the content of me into the stream
Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
protected:
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::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ Standard_Integer aPos = theStreamPos;
+
+ gp_XYZ anXYZLoc;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "Location", aPos, 3, &anXYZLoc.ChangeCoord (1), &anXYZLoc.ChangeCoord (2), &anXYZLoc.ChangeCoord (3))
+ SetLocation (anXYZLoc);
+
+ gp_XYZ aDir;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "Direction", aPos, 3, &aDir.ChangeCoord (1), &aDir.ChangeCoord (2), &aDir.ChangeCoord (3))
+ gp_XYZ aXDir;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "XDirection", aPos, 3, &aXDir.ChangeCoord (1), &aXDir.ChangeCoord (2), &aXDir.ChangeCoord (3))
+ gp_XYZ anYDir;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "YDirection", aPos, 3, &anYDir.ChangeCoord (1), &anYDir.ChangeCoord (2), &anYDir.ChangeCoord (3))
+
+ SetXDirection (aXDir);
+ SetYDirection (anYDir);
+
+ theStreamPos = aPos;
+ return Standard_True;
+}
//! Dumps the content of me into the stream
Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
-
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
protected:
{
OCCT_DUMP_VECTOR_CLASS (theOStream, "gp_Dir", 3, coord.X(), coord.Y(), coord.Z())
}
+
+Standard_Boolean gp_Dir::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ Standard_Integer aPos = theStreamPos;
+
+ OCCT_INIT_VECTOR_CLASS (theSStream, "gp_Dir", aPos, 3, &coord.ChangeCoord (1), &coord.ChangeCoord (2), &coord.ChangeCoord (3))
+
+ theStreamPos = aPos;
+ return Standard_True;
+}
//! Dumps the content of me into the stream
Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
protected:
{
OCCT_DUMP_VECTOR_CLASS (theOStream, "gp_Pnt", 3, coord.X(), coord.Y(), coord.Z())
}
+
+Standard_Boolean gp_Pnt::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ Standard_Integer aPos = theStreamPos;
+
+ OCCT_INIT_VECTOR_CLASS (theSStream, "gp_Pnt", aPos, 3, &coord.ChangeCoord (1), &coord.ChangeCoord (2), &coord.ChangeCoord (3))
+
+ theStreamPos = aPos;
+ return Standard_True;
+}
//! Dumps the content of me into the stream
Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
-
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
protected:
OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, shape)
OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, scale)
}
+
+//=======================================================================
+//function : InitFromJson
+//purpose :
+//=======================================================================
+Standard_Boolean gp_Trsf::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ Standard_Integer aPos = theStreamPos;
+
+ gp_XYZ anXYZLoc;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "Location", aPos, 3, &anXYZLoc.ChangeCoord (1), &anXYZLoc.ChangeCoord (2), &anXYZLoc.ChangeCoord (3))
+ SetTranslation (anXYZLoc);
+
+ Standard_Real mymatrix[3][3];
+ OCCT_INIT_VECTOR_CLASS (theSStream, "Matrix", aPos, 9, &mymatrix[0][0], &mymatrix[0][1], &mymatrix[0][2],
+ &mymatrix[1][0], &mymatrix[1][1], &mymatrix[1][2],
+ &mymatrix[2][0], &mymatrix[2][1], &mymatrix[2][2])
+ for (int i = 0; i < 3; i++)
+ {
+ for (int j = 0; j < 3; j++)
+ {
+ matrix.SetValue (i + 1, j + 1, mymatrix[i][j]);
+ }
+ }
+
+ Standard_Real myshape;
+ OCCT_INIT_FIELD_VALUE_INTEGER (theSStream, aPos, myshape);
+ shape = (gp_TrsfForm)((Standard_Integer)myshape);
+
+ OCCT_INIT_FIELD_VALUE_REAL (theSStream, aPos, scale);
+
+ theStreamPos = aPos;
+ return Standard_True;
+}
//! Dumps the content of me into the stream
Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
friend class gp_GTrsf;
protected:
{
OCCT_DUMP_VECTOR_CLASS (theOStream, "gp_XYZ", 3, x, y, z)
}
+
+//=======================================================================
+//function : InitFromJson
+//purpose :
+//=======================================================================
+Standard_Boolean gp_XYZ::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+ Standard_Integer aPos = theStreamPos;
+ OCCT_INIT_VECTOR_CLASS (theSStream, "gp_XYZ", aPos, 3, &x, &y, &z)
+
+ theStreamPos = aPos;
+ return Standard_True;
+}
+
//! Dumps the content of me into the stream
Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
+ //! Inits the content of me into the stream
+ Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
protected: