]> OCCT Git - occt-copy.git/commitdiff
Storage image to view
authorema <ema@opencascade.com>
Mon, 13 Mar 2017 13:12:24 +0000 (16:12 +0300)
committerema <ema@opencascade.com>
Mon, 13 Mar 2017 13:12:24 +0000 (16:12 +0300)
src/XCAFDoc/XCAFDoc_View.cxx
src/XCAFView/XCAFView_Object.cxx
src/XCAFView/XCAFView_Object.hxx

index 207ecaa45dbb684e67b06781a099883355cbd438..714376ab00f87ce3f759886e269bdf0530a6906a 100644 (file)
@@ -20,6 +20,7 @@
 #include <TDataStd_Integer.hxx>
 #include <TDataStd_Real.hxx>
 #include <TDataStd_RealArray.hxx>
+#include <TDataStd_ByteArray.hxx>
 #include <TDataXtd_Axis.hxx>
 #include <TDataXtd_Geometry.hxx>
 #include <TDataXtd_Plane.hxx>
@@ -44,7 +45,8 @@ enum ChildLab
   ChildLab_FrontPlaneDistance,
   ChildLab_BackPlaneDistance,
   ChildLab_ViewVolumeSidesClipping,
-  ChildLab_GDTPoints
+  ChildLab_GDTPoints,
+  ChildLab_Image
 };
 
 //=======================================================================
@@ -144,6 +146,15 @@ void XCAFDoc_View::SetObject (const Handle(XCAFView_Object)& theObject)
       TDataXtd_Point::Set(aPointsLabel.FindChild(i), theObject->GDTPoint(i));
     }
   }
+  //Image
+  if (theObject->HasImage())
+  {
+    Handle(TColStd_HArray1OfByte) image = theObject->Image();
+    Handle(TDataStd_ByteArray) arr = TDataStd_ByteArray::Set(Label().FindChild(ChildLab_Image), image->Lower(), image->Upper());
+    for (Standard_Integer i = image->Lower(); i <= image->Upper(); i++) {
+      arr->SetValue(i, image->Value(i));
+    }
+  }
 }
 
 //=======================================================================
@@ -247,7 +258,11 @@ Handle(XCAFView_Object) XCAFDoc_View::GetObject()  const
       anObj->SetGDTPoint(i, aPoint);
     }
   }
-
+  //Image
+  Handle(TDataStd_ByteArray) anArr;
+  if (Label().FindChild(ChildLab_Image).FindAttribute(TDataStd_ByteArray::GetID(), anArr)) {
+    anObj->SetImage(anArr->InternalArray());
+  }
   return anObj;
 }
 
index bc1e06f1debb9f0b7557dc0769098b57199ba0b9..3b7ea48f4462a1e7b351b3a4dac05be383f8ac5f 100644 (file)
@@ -28,6 +28,7 @@ XCAFView_Object::XCAFView_Object()
   myBackPlaneClipping = Standard_False;
   myViewVolumeSidesClipping = Standard_False;
   myGDTPoints = NULL;
+  myImage = NULL;
 }
 
 //=======================================================================
@@ -50,5 +51,6 @@ XCAFView_Object::XCAFView_Object(const Handle(XCAFView_Object)& theObj)
   myBackPlaneDistance = theObj->myBackPlaneDistance;
   myViewVolumeSidesClipping = theObj->myViewVolumeSidesClipping;
   myGDTPoints = NULL;
+  myImage = theObj->myImage;
 }
 
index 98b340796ee428f88edcc8f7fd06ab418effa807..a41f6df73233a74ede9727bb2d59a73e7a9af556 100644 (file)
@@ -26,6 +26,7 @@
 #include <TColgp_HArray1OfPnt.hxx>
 #include <TCollection_HAsciiString.hxx>
 #include <XCAFView_ProjectionType.hxx>
+#include <TColStd_HArray1OfByte.hxx>
 
 class XCAFView_Object;
 DEFINE_STANDARD_HANDLE(XCAFView_Object, Standard_Transient)
@@ -217,7 +218,21 @@ public:
     else
       return gp_Pnt();
   }
-  
+
+  Standard_EXPORT void SetImage(Handle(TColStd_HArray1OfByte) theImage)
+  {
+    myImage = theImage;
+  }
+
+  Standard_EXPORT  Handle(TColStd_HArray1OfByte) Image()
+  {
+    return myImage;
+  }
+
+  Standard_EXPORT Standard_Boolean HasImage()
+  {
+    return (!myImage.IsNull());
+  }
   DEFINE_STANDARD_RTTIEXT(XCAFView_Object,Standard_Transient)
 
 private:
@@ -237,6 +252,7 @@ private:
   Standard_Real myBackPlaneDistance;
   Standard_Boolean myViewVolumeSidesClipping;
   Handle(TColgp_HArray1OfPnt) myGDTPoints; // Point for each GDT to describe position of GDT frame in View.
+  Handle(TColStd_HArray1OfByte) myImage;
 };
 
 #endif // _XCAFView_Object_HeaderFile