0023120: Transform persistence is not restored
authorsan <san@opencascade.com>
Fri, 23 Nov 2012 10:47:11 +0000 (14:47 +0400)
committersan <san@opencascade.com>
Fri, 23 Nov 2012 10:47:11 +0000 (14:47 +0400)
Updating myTransPers field in any case in OpenGl_View::BeginTransformPersistence()
Test case for this bug

src/OpenGl/OpenGl_View.cxx
tests/bugs/vis/bug23120 [new file with mode: 0755]

index 7855edc..96e655b 100644 (file)
@@ -495,14 +495,14 @@ const TEL_TRANSFORM_PERSISTENCE * OpenGl_View::BeginTransformPersistence (const
 {
   const TEL_TRANSFORM_PERSISTENCE *TransPers_old = myTransPers;
 
+  myTransPers = ATransPers;
+
   if ( ATransPers->mode == 0 )
   {
     EndTransformPersistence();
     return TransPers_old;
   }
 
-  myTransPers = ATransPers;
-
   GLint viewport[4];
   glGetIntegerv (GL_VIEWPORT, viewport);
   GLdouble modelMatrix[4][4];
diff --git a/tests/bugs/vis/bug23120 b/tests/bugs/vis/bug23120
new file mode 100755 (executable)
index 0000000..495a3c8
--- /dev/null
@@ -0,0 +1,58 @@
+puts "============"
+puts "OCC23120"
+puts "============"
+puts ""
+###########################################################################
+# Transform persistence is not restored
+###########################################################################
+
+pload QAcommands
+
+box b1 10 20 30
+box b2 10 20 30
+ttranslate b2 50 50 0
+vinit
+vdisplay b1
+# This line breaks normal rendering
+# of all subsequently displayed presentations
+vsettransmode b1 32 0 0 0 0 0
+# This box is drawn incorrectly due to the bug
+vdisplay b2
+vfit
+vsetdispmode 1
+vzoom 0.5
+vpan 100 0
+
+set x1 300
+set y1 130
+if { [string compare $tcl_platform(os) "Windows NT"] == 0 }  {
+  puts "STATION IS WNT"
+  set r_check 0.77646999999999999
+  set g_check 0.54901900000000003
+  set b_check 0.090195999999999998
+} else {
+  set r_check 0.78039199999999997
+  set g_check 0.55294100000000002
+  set b_check 0.094117000000000006
+}
+
+set color1 [ QAGetPixelColor ${x1} ${y1} ]
+
+regexp {RED +: +([-0-9.+eE]+)} $color1 full rd1
+regexp {GREEN +: +([-0-9.+eE]+)} $color1 full gr1
+regexp {BLUE +: +([-0-9.+eE]+)} $color1 full bl1
+
+puts "rd1=$rd1"
+puts "gr1=$gr1"
+puts "bl1=$bl1"
+
+set status1 0
+if { $rd1 != $r_check || $gr1 != $g_check || $bl1 != $b_check } {
+    puts "Error : colors are not equal"
+    puts "Error : Transform persistence is not restored"
+} else {
+    puts "OK : colors are equal"
+    puts "OK : Transform persistence is restored"
+}
+
+set 3dviewer 2