0027235: Export GDT: Annotation plane and Presentation.
[occt.git] / src / RWStepVisual / RWStepVisual_RWPresentationStyleByContext.cxx
index 576367c..69eb7ca 100644 (file)
 #include <Interface_Check.hxx>
 #include <Interface_EntityIterator.hxx>
 #include <RWStepVisual_RWPresentationStyleByContext.hxx>
+#include <StepData_SelectMember.hxx>
 #include <StepData_StepReaderData.hxx>
 #include <StepData_StepWriter.hxx>
 #include <StepVisual_HArray1OfPresentationStyleSelect.hxx>
+#include <StepVisual_NullStyleMember.hxx>
 #include <StepVisual_PresentationStyleByContext.hxx>
 #include <StepVisual_PresentationStyleSelect.hxx>
 #include <StepVisual_StyleContextSelect.hxx>
@@ -38,18 +40,28 @@ void RWStepVisual_RWPresentationStyleByContext::ReadStep
 
        // --- inherited field : styles ---
 
-       Handle(StepVisual_HArray1OfPresentationStyleSelect) aStyles;
-       StepVisual_PresentationStyleSelect aStylesItem;
-       Standard_Integer nsub1;
-       if (data->ReadSubList (num,1,"styles",ach,nsub1)) {
-         Standard_Integer nb1 = data->NbParams(nsub1);
-         aStyles = new StepVisual_HArray1OfPresentationStyleSelect (1, nb1);
-         for (Standard_Integer i1 = 1; i1 <= nb1; i1 ++) {
-           //szv#4:S4163:12Mar99 `Standard_Boolean stat1 =` not needed
-           if (data->ReadEntity (nsub1,i1,"styles",ach,aStylesItem))
-             aStyles->SetValue(i1,aStylesItem);
-         }
-       }
+  Handle(StepVisual_HArray1OfPresentationStyleSelect) aStyles;
+  StepVisual_PresentationStyleSelect aStylesItem;
+  Standard_Integer nsub1;
+  if (data->ReadSubList (num,1,"styles",ach,nsub1)) {
+    Standard_Integer nb1 = data->NbParams(nsub1);
+    aStyles = new StepVisual_HArray1OfPresentationStyleSelect (1, nb1);
+    for (Standard_Integer i1 = 1; i1 <= nb1; i1 ++) {
+      Interface_ParamType aType = data->ParamType(nsub1, i1);
+      if (aType == Interface_ParamIdent) {
+        data->ReadEntity (nsub1,i1,"styles",ach,aStylesItem);
+      }
+      else {
+        Handle(StepData_SelectMember) aMember;
+        data->ReadMember(nsub1, i1, "null_style", ach, aMember);
+        Standard_CString anEnumText = aMember->EnumText();
+        Handle(StepVisual_NullStyleMember) aNullStyle = new StepVisual_NullStyleMember();
+        aNullStyle->SetEnumText(0, anEnumText);
+        aStylesItem.SetValue(aNullStyle);
+      }
+      aStyles->SetValue(i1,aStylesItem);
+    }
+  }
 
        // --- own field : styleContext ---
 
@@ -72,9 +84,16 @@ void RWStepVisual_RWPresentationStyleByContext::WriteStep
        // --- inherited field styles ---
 
        SW.OpenSub();
-       for (Standard_Integer i1 = 1;  i1 <= ent->NbStyles();  i1 ++) {
-         SW.Send(ent->StylesValue(i1).Value());
-       }
+for (Standard_Integer i1 = 1;  i1 <= ent->NbStyles();  i1 ++) {
+    StepVisual_PresentationStyleSelect aStyle = ent->StylesValue(i1);
+    if (aStyle.Value()->IsKind(STANDARD_TYPE(StepVisual_NullStyleMember))) {
+      SW.OpenTypedSub("NULL_STYLE");
+      SW.SendEnum(".NULL.");
+      SW.CloseSub();
+    }
+    else
+      SW.Send(aStyle.Value());
+  }
        SW.CloseSub();
 
        // --- own field : styleContext ---