mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-09-03 14:10:33 +03:00
0031326: Foundation Classes - Init from Json for base OCCT classes
(cherry picked from commit 39f197676cb85d2b84ad0ff15266eed118cbbaff) (cherry picked from commit 4a5e30db5bbdfc7a77a03d1e55e8a3bee5d79d2d)
This commit is contained in:
@@ -201,6 +201,51 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
//! Inits the content of me into the stream
|
||||
Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
|
||||
{
|
||||
Standard_Integer aPos = theStreamPos;
|
||||
|
||||
Standard_Integer anIsInited = 0;
|
||||
OCCT_INIT_FIELD_VALUE_INTEGER (theSStream, aPos, anIsInited);
|
||||
myIsInited = anIsInited != 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.
|
||||
|
@@ -983,3 +983,21 @@ void Bnd_Box::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
|
||||
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;
|
||||
}
|
||||
|
@@ -305,6 +305,9 @@ public:
|
||||
//! 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.
|
||||
|
@@ -676,3 +676,17 @@ void Quantity_Color::DumpJson (Standard_OStream& theOStream, Standard_Integer) c
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
@@ -365,6 +365,9 @@ public:
|
||||
//! 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.
|
||||
|
@@ -208,3 +208,18 @@ void Quantity_ColorRGBA::DumpJson (Standard_OStream& theOStream, Standard_Intege
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
@@ -158,6 +158,9 @@ public:
|
||||
//! 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)); }
|
||||
|
@@ -74,6 +74,139 @@ void Standard_Dump::DumpRealValues (Standard_OStream& theOStream, int theCount,
|
||||
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 :
|
||||
|
@@ -77,6 +77,38 @@
|
||||
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) \
|
||||
@@ -123,6 +155,18 @@
|
||||
} \
|
||||
}
|
||||
|
||||
//! @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.
|
||||
@@ -172,6 +216,20 @@
|
||||
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
|
||||
{
|
||||
@@ -279,6 +337,38 @@ public:
|
||||
//! @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
|
||||
|
@@ -90,3 +90,17 @@ void gp_Ax1::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
|
||||
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;
|
||||
}
|
||||
|
@@ -208,7 +208,8 @@ public:
|
||||
//! 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:
|
||||
|
||||
|
@@ -122,3 +122,28 @@ void gp_Ax2::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
|
||||
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;
|
||||
}
|
||||
|
@@ -326,6 +326,9 @@ public:
|
||||
//! 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:
|
||||
|
@@ -115,3 +115,25 @@ void gp_Ax3::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
|
||||
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;
|
||||
}
|
||||
|
@@ -293,7 +293,8 @@ public:
|
||||
//! 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:
|
||||
|
||||
|
@@ -144,3 +144,13 @@ void gp_Dir::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
@@ -266,6 +266,8 @@ public:
|
||||
//! 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:
|
||||
|
@@ -90,3 +90,13 @@ void gp_Pnt::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
@@ -177,7 +177,8 @@ public:
|
||||
//! 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:
|
||||
|
||||
|
@@ -864,3 +864,37 @@ void gp_Trsf::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
|
||||
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;
|
||||
}
|
||||
|
@@ -25,6 +25,7 @@
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
#include <Standard_OStream.hxx>
|
||||
#include <Standard_SStream.hxx>
|
||||
#include <Standard_Real.hxx>
|
||||
|
||||
class Standard_ConstructionError;
|
||||
@@ -353,6 +354,9 @@ void operator *= (const gp_Trsf& T)
|
||||
//! 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:
|
||||
|
@@ -42,3 +42,17 @@ void gp_XYZ::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
@@ -24,6 +24,7 @@
|
||||
#include <Standard_Boolean.hxx>
|
||||
|
||||
#include <Standard_OStream.hxx>
|
||||
#include <Standard_SStream.hxx>
|
||||
|
||||
class Standard_ConstructionError;
|
||||
class Standard_OutOfRange;
|
||||
@@ -330,6 +331,9 @@ public:
|
||||
//! 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:
|
||||
|
||||
|
||||
|
@@ -41,6 +41,18 @@ void Convert_Tools::ConvertStreamToPresentations (const Standard_SStream&,
|
||||
const Standard_Integer,
|
||||
NCollection_List<Handle(Standard_Transient)>&)
|
||||
{
|
||||
|
||||
Select3D_BndBox3d aSelectBndBox;
|
||||
if (aSelectBndBox.InitFromJson (theSStream, aStartPos))
|
||||
{
|
||||
TopoDS_Shape aShape;
|
||||
|
||||
gp_Pnt aPntMin = gp_Pnt (aSelectBndBox.CornerMin().x(), aSelectBndBox.CornerMin().y(), aSelectBndBox.CornerMin().z());
|
||||
gp_Pnt aPntMax = gp_Pnt (aSelectBndBox.CornerMax().x(), aSelectBndBox.CornerMax().y(), aSelectBndBox.CornerMax().z());
|
||||
if (CreateBoxShape (aPntMin, aPntMax, aShape))
|
||||
thePresentations.Append (new Convert_TransientShape (aShape));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
|
@@ -92,6 +92,22 @@ TreeModel_ItemBasePtr TreeModel_ItemBase::Child (int theRow, int theColumn, cons
|
||||
return anItem;
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : Presentations
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
void TreeModel_ItemBase::Presentations (NCollection_List<Handle(Standard_Transient)>& thePresentations)
|
||||
{
|
||||
if (Column() != 0)
|
||||
return;
|
||||
|
||||
const Handle(TreeModel_ItemProperties)& anItemProperties = Properties();
|
||||
if (anItemProperties)
|
||||
{
|
||||
anItemProperties->Presentations (thePresentations);
|
||||
}
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : currentItem
|
||||
// purpose :
|
||||
|
@@ -149,6 +149,7 @@ public:
|
||||
//! Returns the item properties
|
||||
const Handle(TreeModel_ItemProperties)& Properties() const { return myProperties; }
|
||||
|
||||
Standard_EXPORT virtual void Presentations (NCollection_List<Handle(Standard_Transient)>& thePresentations);
|
||||
protected:
|
||||
|
||||
//! \param theParent the parent item
|
||||
|
@@ -156,7 +156,7 @@ void VInspector_ItemPresentableObject::Init()
|
||||
}
|
||||
std::sort (aListOfIOSorted.begin(), aListOfIOSorted.end());
|
||||
|
||||
int aCurrentIndex = 0;
|
||||
int aCurrentIndex = 1; /* Properties item of context*/
|
||||
for (std::vector<Handle(AIS_InteractiveObject)>::const_iterator anIOIt = aListOfIOSorted.begin(); anIOIt != aListOfIOSorted.end(); anIOIt++, aCurrentIndex++)
|
||||
{
|
||||
if (aCurrentIndex != aRowId)
|
||||
@@ -228,9 +228,10 @@ QString VInspector_ItemPresentableObject::PointerInfo() const
|
||||
// =======================================================================
|
||||
void VInspector_ItemPresentableObject::Presentations (NCollection_List<Handle(Standard_Transient)>& thePresentations)
|
||||
{
|
||||
TreeModel_ItemBase::Presentations (thePresentations);
|
||||
|
||||
if (Column() != 0)
|
||||
return;
|
||||
|
||||
thePresentations.Append (GetInteractiveObject());
|
||||
}
|
||||
|
||||
|
@@ -22,7 +22,6 @@
|
||||
|
||||
#include <inspector/TreeModel_ColumnType.hxx>
|
||||
#include <inspector/TreeModel_ContextMenu.hxx>
|
||||
#include <inspector/TreeModel_ItemProperties.hxx>
|
||||
#include <inspector/TreeModel_Tools.hxx>
|
||||
|
||||
#include <inspector/ViewControl_MessageDialog.hxx>
|
||||
@@ -392,7 +391,10 @@ void VInspector_Window::SelectedShapes (NCollection_List<Handle(Standard_Transie
|
||||
TreeModel_ItemBasePtr anItem = *anItemIt;
|
||||
VInspector_ItemBasePtr aVItem = itemDynamicCast<VInspector_ItemBase>(anItem);
|
||||
if (!aVItem /*|| aVItem->Row() == 0*/)
|
||||
{
|
||||
anItem->Presentations (theSelPresentations);
|
||||
continue;
|
||||
}
|
||||
|
||||
TopoDS_Shape aShape = aVItem->GetPresentationShape();
|
||||
if (aShape.IsNull())
|
||||
@@ -595,15 +597,11 @@ void VInspector_Window::onTreeViewSelectionChanged (const QItemSelection&,
|
||||
if (!anItemBase)
|
||||
continue;
|
||||
|
||||
const Handle(TreeModel_ItemProperties)& anItemProperties = anItemBase->Properties();
|
||||
if (anItemProperties)
|
||||
{
|
||||
anItemProperties->Presentations (aSelPresentations);
|
||||
}
|
||||
anItemBase->Presentations (aSelPresentations);
|
||||
}
|
||||
|
||||
SelectedShapes (aSelPresentations);
|
||||
displayer()->DisplayPreview()->UpdatePreview (View_DisplayActionType_DisplayId, aSelPresentations, myViewWindow->ViewWidget()->DisplayMode());
|
||||
displayer()->UpdatePreview (View_DisplayActionType_DisplayId, aSelPresentations);
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
|
@@ -79,12 +79,13 @@ void View_DisplayPreview::SetContext (const Handle(AIS_InteractiveContext)& theC
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
void View_DisplayPreview::UpdatePreview (const View_DisplayActionType,
|
||||
const NCollection_List<Handle(Standard_Transient)>& thePresentations,
|
||||
int theDisplayMode)
|
||||
const NCollection_List<Handle(Standard_Transient)>& thePresentations)
|
||||
{
|
||||
if (myContext.IsNull())
|
||||
return;
|
||||
|
||||
int aPreviewDisplayMode = AIS_Shaded;
|
||||
|
||||
// clear previous previews
|
||||
for (NCollection_List<Handle(AIS_InteractiveObject)>::Iterator anIterator (myPreviewReadyPresentations); anIterator.More(); anIterator.Next())
|
||||
{
|
||||
@@ -115,7 +116,7 @@ void View_DisplayPreview::UpdatePreview (const View_DisplayActionType,
|
||||
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, theDisplayMode, -1/*does not participate in selection*/, Standard_True);
|
||||
myContext->Display (aPrs, aPreviewDisplayMode, -1/*does not participate in selection*/, Standard_True);
|
||||
enableGlobalClipping(aPrs, false);
|
||||
myPreviewReadyPresentations.Append (aPrs);
|
||||
}
|
||||
@@ -128,7 +129,7 @@ void View_DisplayPreview::UpdatePreview (const View_DisplayActionType,
|
||||
myPreviewPresentation->Attributes()->SetPointAspect (new Prs3d_PointAspect (Aspect_TOM_O_PLUS, aColor, 3.0));
|
||||
myPreviewPresentation->SetAttributes (myPreviewParameters->GetDrawer());
|
||||
|
||||
myContext->Display (myPreviewPresentation, theDisplayMode, -1/*does not participate in selection*/, Standard_True);
|
||||
myContext->Display (myPreviewPresentation, aPreviewDisplayMode, -1/*does not participate in selection*/, Standard_True);
|
||||
enableGlobalClipping(myPreviewPresentation, false);
|
||||
}
|
||||
else
|
||||
@@ -140,28 +141,3 @@ void View_DisplayPreview::UpdatePreview (const View_DisplayActionType,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : SetDisplayMode
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
void View_DisplayPreview::SetDisplayMode (const int theDisplayMode, const bool theToUpdateViewer)
|
||||
{
|
||||
if (myContext.IsNull())
|
||||
return;
|
||||
|
||||
if (!myPreviewPresentation.IsNull())
|
||||
{
|
||||
if (myContext == myPreviewPresentation->GetContext())
|
||||
myContext->SetDisplayMode (myPreviewPresentation, theDisplayMode, Standard_False);
|
||||
}
|
||||
|
||||
for (NCollection_List<Handle(AIS_InteractiveObject)>::Iterator aPreviewIt (myPreviewReadyPresentations); aPreviewIt.More(); aPreviewIt.Next())
|
||||
{
|
||||
if (myContext == aPreviewIt.Value()->GetContext())
|
||||
myContext->SetDisplayMode (aPreviewIt.Value(), theDisplayMode, Standard_False);
|
||||
}
|
||||
|
||||
if (theToUpdateViewer)
|
||||
myContext->UpdateCurrentViewer();
|
||||
}
|
||||
|
@@ -53,12 +53,7 @@ public:
|
||||
|
||||
//! Updates visibility of the presentations for the display type
|
||||
Standard_EXPORT void UpdatePreview (const View_DisplayActionType theType,
|
||||
const NCollection_List<Handle(Standard_Transient)>& thePresentations,
|
||||
int theDisplayMode);
|
||||
|
||||
//! Sets display mode for all displayed presentations
|
||||
Standard_EXPORT void SetDisplayMode (const int theDisplayMode,
|
||||
const bool theToUpdateViewer = true);
|
||||
const NCollection_List<Handle(Standard_Transient)>& thePresentations);
|
||||
|
||||
//! Returns true if preview presentation is shown
|
||||
Standard_Boolean HasPreview() const { return !myPreviewPresentation.IsNull(); }
|
||||
|
@@ -34,7 +34,7 @@
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
View_Displayer::View_Displayer()
|
||||
: myIsKeepPresentations (false), myFitAllActive (false), myDisplayMode (-1)
|
||||
: myIsKeepPresentations (false), myFitAllActive (false), myDisplayMode (0)
|
||||
{
|
||||
myDisplayPreview = new View_DisplayPreview();
|
||||
}
|
||||
@@ -79,8 +79,6 @@ void View_Displayer::SetDisplayMode (const int theDisplayMode,
|
||||
for (AIS_ListIteratorOfListOfInteractive aDisplayedIt (aDisplayed); aDisplayedIt.More(); aDisplayedIt.Next())
|
||||
GetContext()->SetDisplayMode (aDisplayedIt.Value(), theDisplayMode, Standard_False);
|
||||
|
||||
myDisplayPreview->SetDisplayMode (theDisplayMode, Standard_False);
|
||||
|
||||
if (theToUpdateViewer)
|
||||
UpdateViewer();
|
||||
}
|
||||
@@ -270,7 +268,7 @@ bool View_Displayer::IsVisible (const TopoDS_Shape& theShape, const View_Present
|
||||
void View_Displayer::UpdatePreview (const View_DisplayActionType theType,
|
||||
const NCollection_List<Handle(Standard_Transient)>& thePresentations)
|
||||
{
|
||||
myDisplayPreview->UpdatePreview (theType, thePresentations, myDisplayMode);
|
||||
myDisplayPreview->UpdatePreview (theType, thePresentations);
|
||||
if (!myIsKeepPresentations || myFitAllActive)
|
||||
fitAllView();
|
||||
}
|
||||
|
@@ -28,6 +28,7 @@ View_PreviewParameters::View_PreviewParameters()
|
||||
myDrawer = new Prs3d_Drawer();
|
||||
|
||||
Quantity_Color aColor(Quantity_NOC_TOMATO);
|
||||
Standard_ShortReal aTransparency = 0.8;
|
||||
|
||||
// point parameters
|
||||
myDrawer->SetPointAspect (new Prs3d_PointAspect (Aspect_TOM_O_PLUS, aColor, 3.0));
|
||||
@@ -41,6 +42,10 @@ View_PreviewParameters::View_PreviewParameters()
|
||||
myDrawer->ShadingAspect()->SetColor (aColor);
|
||||
myDrawer->ShadingAspect()->SetMaterial (aShadingMaterial);
|
||||
|
||||
myDrawer->ShadingAspect()->Aspect()->ChangeFrontMaterial().SetTransparency (aTransparency);
|
||||
myDrawer->ShadingAspect()->Aspect()->ChangeBackMaterial() .SetTransparency (aTransparency);
|
||||
myDrawer->SetTransparency (aTransparency);
|
||||
|
||||
// common parameters
|
||||
myDrawer->SetZLayer (Graphic3d_ZLayerId_Topmost);
|
||||
}
|
||||
|
Reference in New Issue
Block a user