]> OCCT Git - occt.git/commitdiff
0023745: Draw Harness, ViewerText - vdrawtext command should not modify global text...
authorkgv <kgv@opencascade.com>
Thu, 2 Oct 2014 10:23:05 +0000 (14:23 +0400)
committerbugmaster <bugmaster@opencascade.com>
Thu, 2 Oct 2014 10:24:19 +0000 (14:24 +0400)
Test case for issue CR23745

src/ViewerTest/ViewerTest_ObjectCommands.cxx
tests/demo/begin [new file with mode: 0755]
tests/demo/draw/bug23745 [new file with mode: 0644]

index 02202bd42c5e6958c29920a2d73bc8ecda62c33b..25b1b91e5322806e33f1c0fd367de23015a6abbc 100644 (file)
@@ -2514,6 +2514,12 @@ void MyTextClass::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPresent
 
   aPresentation->Clear();
 
+  if (!myDrawer->HasTextAspect())
+  {
+    myDrawer->SetTextAspect (new Prs3d_TextAspect());
+    *myDrawer->TextAspect()->Aspect() = *myDrawer->Link()->TextAspect()->Aspect();
+  }
+
   Handle(Prs3d_TextAspect) asp = myDrawer->TextAspect();
 
   asp->SetFont(aFont.ToCString());
diff --git a/tests/demo/begin b/tests/demo/begin
new file mode 100755 (executable)
index 0000000..d5ef63a
--- /dev/null
@@ -0,0 +1,135 @@
+# File : begin
+
+# Procedure to check color in the point near default coordinate
+
+proc checkpoint {coord_x coord_y rd_ch gr_ch bl_ch} {
+    set x_start [expr ${coord_x} - 2]
+    set y_start [expr ${coord_y} - 2]
+    set mistake 0
+    set i 0
+    while { $mistake != 1 && $i <= 5 } {
+      set j 0
+      while { $mistake != 1 && $j <= 5 } {
+          set position_x [expr ${x_start} + $j]
+          set position_y [expr ${y_start} + $i]
+          puts $position_x
+          puts $position_y
+          global color2d
+          if { [info exists color2d] } {
+            set color [ QAAISGetPixelColor2d ${position_x} ${position_y} ]
+          } else {
+            set color [ QAGetPixelColor ${position_x} ${position_y} ]
+          }
+          regexp {RED +: +([-0-9.+eE]+)} $color full rd
+          regexp {GREEN +: +([-0-9.+eE]+)} $color full gr
+          regexp {BLUE +: +([-0-9.+eE]+)} $color full bl
+          set rd_int [expr int($rd * 1.e+05)]
+          set gr_int [expr int($gr * 1.e+05)]
+          set bl_int [expr int($bl * 1.e+05)]
+            
+          if { $rd_ch != 0 } {
+            set tol_rd [expr abs($rd_ch - $rd_int)/$rd_ch]
+          } else {
+            set tol_rd $rd_int
+          }
+          if { $gr_ch != 0 } {
+            set tol_gr [expr abs($gr_ch - $gr_int)/$gr_ch]
+          } else {
+            set tol_gr $gr_int
+          }
+          if { $bl_ch != 0 } {
+            set tol_bl [expr abs($bl_ch - $bl_int)/$bl_ch]
+          } else {
+            set tol_bl $bl_int
+          }
+
+          if { $tol_rd > 0.2 || $tol_gr > 0.2 || $tol_bl > 0.2 } {
+            puts "Warning : Point with true color was not found near default coordinates"
+            set mistake 0
+          } else {
+            set mistake 1
+          }
+          incr j
+      }
+      incr i
+    }
+    return $mistake
+}
+
+# Procedure to check color using command QAgetPixelColor with tolerance
+proc checkcolor { coord_x coord_y rd_get gr_get bl_get } {
+    puts "Coordinate x = $coord_x"
+    puts "Coordinate y = $coord_y"
+    puts "RED color of RGB is $rd_get"
+    puts "GREEN color of RGB is $gr_get"
+    puts "BLUE color of RGB is $bl_get"
+    
+    if { $coord_x <= 1 || $coord_y <= 1 } {
+      puts "Error : minimal coordinate is x = 2, y = 2. But we have x = $coord_x y = $coord_y"
+      return -1
+    }
+    global color2d
+    if { [info exists color2d] } {
+      set color [ QAAISGetPixelColor2d ${coord_x} ${coord_y} ]
+    } else {
+      set color [ QAGetPixelColor ${coord_x} ${coord_y} ]
+    }
+
+    regexp {RED +: +([-0-9.+eE]+)} $color full rd
+    regexp {GREEN +: +([-0-9.+eE]+)} $color full gr
+    regexp {BLUE +: +([-0-9.+eE]+)} $color full bl
+    set rd_int [expr int($rd * 1.e+05)]
+    set gr_int [expr int($gr * 1.e+05)]
+    set bl_int [expr int($bl * 1.e+05)]
+    set rd_ch [expr int($rd_get * 1.e+05)]
+    set gr_ch [expr int($gr_get * 1.e+05)]
+    set bl_ch [expr int($bl_get * 1.e+05)]
+    
+    if { $rd_ch != 0 } {
+      set tol_rd [expr abs($rd_ch - $rd_int)/$rd_ch]
+    } else {
+      set tol_rd $rd_int
+    }
+    if { $gr_ch != 0 } {
+      set tol_gr [expr abs($gr_ch - $gr_int)/$gr_ch]
+    } else {
+      set tol_gr $gr_int
+    }
+    if { $bl_ch != 0 } {
+      set tol_bl [expr abs($bl_ch - $bl_int)/$bl_ch]
+    } else {
+      set tol_bl $bl_int
+    }
+    set status 0
+    if { $tol_rd > 0.2 } {
+      puts "Warning : RED light of additive color model RGB is invalid"
+      set status 1
+    }
+    if { $tol_gr > 0.2 } {
+      puts "Warning : GREEN light of additive color model RGB is invalid"
+      set status 1
+    }
+    if { $tol_bl > 0.2 } {
+      puts "Warning : BLUE light of additive color model RGB is invalid"
+      set status 1
+    }
+
+    if { $status != 0 } {
+      puts "Warning : Colors of default coordinate are not equal"
+    }
+
+    global stat
+    if { $tol_rd > 0.2 || $tol_gr > 0.2 || $tol_bl > 0.2 } {
+      set info [checkpoint $coord_x $coord_y $rd_ch $gr_ch $bl_ch]
+      set stat [lindex $info end]
+      if { ${stat} != 1 } {
+          puts "Error : Colors are not equal in default coordinate and in the near coordinates too"
+          return $stat
+      } else {
+          puts "Point with valid color was found"
+          return $stat
+      }
+    } else {
+      set stat 1
+    }
+}
diff --git a/tests/demo/draw/bug23745 b/tests/demo/draw/bug23745
new file mode 100644 (file)
index 0000000..eb37d8f
--- /dev/null
@@ -0,0 +1,25 @@
+puts "============"
+puts "OCC23745"
+puts "============"
+puts ""
+######################################################
+# Draw Harness, ViewerText - vdrawtext command should not modify global text aspect
+######################################################
+
+pload QAcommands
+pload VISUALIZATION
+
+vinit
+vdrawtext "ANOTHERBUG" 100 100 100 255 0 0 0 0 0 1 50 0
+vtrihedron trihedron
+
+set x 239
+set y 216
+set R 1
+set G 1
+set B 0
+checkcolor ${x} ${y} ${R} ${G} ${B}
+
+vdump ${imagedir}/${casename}.png
+
+puts "TEST COMPLETED"