0023804: Visualization - unexpected color modulation during texture mapping
authordbp <dbpr@opencascade.com>
Thu, 8 May 2014 07:26:39 +0000 (11:26 +0400)
committerbugmaster <bugmaster@opencascade.com>
Thu, 8 May 2014 07:27:28 +0000 (11:27 +0400)
AIS_TexturedShape - use material set to the Drawer, not default undefined one

Test case for issue CR23804

src/AIS/AIS_TexturedShape.cxx
src/AIS/AIS_TexturedShape.hxx
tests/bugs/vis/bug23804 [new file with mode: 0644]

index 1f5f562..e50d019 100644 (file)
@@ -189,6 +189,24 @@ void AIS_TexturedShape::DisableTextureModulate()
 }
 
 //=======================================================================
+//function : SetColor
+//purpose  :
+//=======================================================================
+
+void AIS_TexturedShape::SetColor (const Quantity_Color& theColor)
+{
+  AIS_Shape::SetColor (theColor);
+
+  if (!GetContext().IsNull())
+  {
+    if (GetContext()->MainPrsMgr()->HasPresentation (this, 3))
+    {
+      updateAttributes (GetContext()->MainPrsMgr()->Presentation (this, 3)->Presentation());
+    }
+  }
+}
+
+//=======================================================================
 //function : UpdateAttributes
 //purpose  :
 //=======================================================================
@@ -205,8 +223,7 @@ void AIS_TexturedShape::UpdateAttributes()
 
 void AIS_TexturedShape::updateAttributes (const Handle(Prs3d_Presentation)& thePrs)
 {
-  Prs3d_ShadingAspect aDummy;
-  myAspect = aDummy.Aspect();
+  myAspect = new Graphic3d_AspectFillArea3d (*myDrawer->ShadingAspect()->Aspect());
   if (HasPolygonOffsets())
   {
     // Issue 23115: copy polygon offset settings passed through myDrawer
index 76ca3ab..3247174 100644 (file)
@@ -98,6 +98,9 @@ public: //! @name methods to alter texture mapping properties
   //! @endcode
   Standard_EXPORT void UpdateAttributes();
 
+  //! Sets the color
+  Standard_EXPORT virtual void SetColor (const Quantity_Color& theColor);
+
   //! Enables texture modulation
   Standard_EXPORT void EnableTextureModulate();
 
diff --git a/tests/bugs/vis/bug23804 b/tests/bugs/vis/bug23804
new file mode 100644 (file)
index 0000000..baea5ec
--- /dev/null
@@ -0,0 +1,25 @@
+puts "============"
+puts "CR23804"
+puts "============"
+puts ""
+
+############################################################
+#  Unexpected color modulation during texture mapping
+############################################################
+
+box b 100 100 100
+vinit
+vdisplay b
+vfit
+vsetdispmode b 1
+vsetmaterial b plastic
+vdump $imagedir/${casename}_1.png
+
+vsetcolor b ANTIQUEWHITE
+vdump $imagedir/${casename}_2.png
+
+vtexture b 3
+vdump $imagedir/${casename}_3.png
+
+vsetcolor b ANTIQUEWHITE
+vdump $imagedir/${casename}_4.png