]> 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)
committersnn <snn@opencascade.com>
Thu, 23 Aug 2018 09:04:27 +0000 (12:04 +0300)
src/XCAFDoc/XCAFDoc_View.cxx
src/XCAFView/XCAFView_Object.cxx
src/XCAFView/XCAFView_Object.hxx

index 01f5da5dbf3dd0a9521d9f44bc9014e73eb3f14a..dcd06a1d82d2efaa6c03cd53c7c746ddcf5b13e1 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>
@@ -45,7 +46,8 @@ enum ChildLab
   ChildLab_BackPlaneDistance,
   ChildLab_ViewVolumeSidesClipping,
   ChildLab_ClippingExpression,
-  ChildLab_GDTPoints
+  ChildLab_GDTPoints,
+  ChildLab_Image
 };
 
 //=======================================================================
@@ -149,6 +151,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));
+    }
+  }
 }
 
 //=======================================================================
@@ -259,7 +270,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 5085da4f873a093d6c1fc4a025ea77db4d025cd0..113572dafb65b64420bb70ba47ccf541f0da43c1 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