gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash libgeometry/snappingrange.h testsuite/lib...


From: Sandro Santilli
Subject: [Gnash-commit] gnash libgeometry/snappingrange.h testsuite/lib...
Date: Fri, 27 Apr 2007 12:13:37 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/04/27 12:13:37

Modified files:
        libgeometry    : snappingrange.h 
        testsuite/libgeometry: snappingrangetest.cpp 
        .              : ChangeLog 

Log message:
                * libgeometry/snappingrange.h: add contains(SnappingRange2d) 
method;
                  fixed contains(Range2d) to take a const ref rather then a 
value.
                * testsuite/libgeometry/snappingrangetest.cpp: add tests for
                  contains(SnappingRange2d).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/libgeometry/snappingrange.h?cvsroot=gnash&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/libgeometry/snappingrangetest.cpp?cvsroot=gnash&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3019&r2=1.3020

Patches:
Index: libgeometry/snappingrange.h
===================================================================
RCS file: /sources/gnash/gnash/libgeometry/snappingrange.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- libgeometry/snappingrange.h 23 Apr 2007 10:19:47 -0000      1.17
+++ libgeometry/snappingrange.h 27 Apr 2007 12:13:37 -0000      1.18
@@ -15,7 +15,7 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 // 
-// $Id: snappingrange.h,v 1.17 2007/04/23 10:19:47 strk Exp $
+// $Id: snappingrange.h,v 1.18 2007/04/27 12:13:37 strk Exp $
 
 #ifndef GNASH_SNAPPINGRANGE_H
 #define GNASH_SNAPPINGRANGE_H
@@ -338,7 +338,11 @@
        }
 
        /// Returns true if any of the ranges contains the range
-       bool contains(RangeType r) const {
+       //
+       /// Note that a NULL range is not contained in any range and
+       /// a WORLD range is onluy contained in another WORLD range.
+       ///
+       bool contains(const RangeType& r) const {
        
                finalize();
        
@@ -350,6 +354,46 @@
        
        }
        
+       /// \brief
+       /// Returns true if all ranges in the given SnappingRanges2d 
+       /// are contained in at least one of the ranges composing this
+       /// one.
+       ///
+       /// Note that a NULL range is not contained in any range and
+       /// a WORLD range is onluy contained in another WORLD range.
+       ///
+       bool contains(const SnappingRanges2d<T>& o) const
+       {
+       
+               finalize();
+               // o.finalize(); // should I finalize the other range too ?
+
+               // Null range set doesn't contain and isn't contained by 
anything
+               if ( isNull() ) return false;
+               if ( o.isNull() ) return false;
+
+               // World range contains everything (except null ranges)
+               if ( isWorld() ) return true;
+
+               // This snappingrange is neither NULL nor WORLD
+               // The other can still be WORLD, but in that case the
+               // first iteration would return false
+               //
+               /// TODO: use a visitor !
+               ///
+               for (unsigned rno=0, rcount=o.size(); rno<rcount; rno++) 
+               {
+                       RangeType r = o.getRange(rno);
+                       if ( ! contains(r) )
+                       {
+                               return false;
+                       }
+               }
+                       
+               return true;
+       
+       }
+       
        
        /// Visit the current Ranges set
        //

Index: testsuite/libgeometry/snappingrangetest.cpp
===================================================================
RCS file: /sources/gnash/gnash/testsuite/libgeometry/snappingrangetest.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- testsuite/libgeometry/snappingrangetest.cpp 23 Apr 2007 10:19:47 -0000      
1.3
+++ testsuite/libgeometry/snappingrangetest.cpp 27 Apr 2007 12:13:37 -0000      
1.4
@@ -55,6 +55,7 @@
        //
        // Test world range no-op additions
        //
+
        Range2d<float> someRange(10.1,20.2,30.3,40.4);
        worldSnap1.add(someRange);
        check( ! worldSnap1.isNull() );
@@ -129,6 +130,7 @@
        //
        // Test irregular ranges (should not snap)
        //
+
        Range2d<float> horiz (10, 10, 500, 20); 
        Range2d<float> vert (290, 22, 300, 500);
        SnappingRanges2d<float> irrSnap;
@@ -159,5 +161,60 @@
        check( irrSnap.contains(Range2d<int>(vert)) );
        
         
+       //
+       // Test ranges containment
+       //
+
+       Range2d<float> nullRange1;
+       SnappingRanges2d<float> nullSnap2;
+       SnappingRanges2d<float> nullSnap3;
+
+       check( ! nullSnap2.contains(nullRange1) );
+       check( ! nullSnap2.contains(nullSnap3) );
+       // null rangeset don't contain themselves
+       check( ! nullSnap2.contains(nullSnap2) );
+
+       Range2d<float> worldRange2(worldRange);
+       SnappingRanges2d<float> worldSnap2; worldSnap2.setWorld();
+
+       check( ! nullSnap2.contains(worldRange2) );
+       check( ! nullSnap2.contains(worldSnap2) );
+       check( worldSnap2.contains(worldRange2) );
+       check( worldSnap2.contains(worldSnap2) );
+       check( ! worldSnap2.contains(nullRange1) );
+       check( ! worldSnap2.contains(nullSnap2) );
+
+       // TODO: test with finite ranges
+
+       SnappingRanges2d<float> finSnap1;
+       SnappingRanges2d<float> finSnap2;
+
+       check(!finSnap2.contains(finSnap1));
+       check(!finSnap1.contains(finSnap2));
+
+       finSnap1.add(Range2d<float>(0, 0, 10, 10));
+
+       check(!finSnap2.contains(finSnap1));
+       check(!finSnap1.contains(finSnap2));
+
+       finSnap2.add(Range2d<float>(90, 90, 180, 180));
+
+       check(!finSnap2.contains(finSnap1));
+       check(!finSnap1.contains(finSnap2));
+
+       finSnap1.add(Range2d<float>(30, 30, 80, 80));
+
+       check(!finSnap2.contains(finSnap1));
+       check(!finSnap1.contains(finSnap2));
+
+       finSnap2.add(Range2d<float>(2, 2, 8, 8));
+
+       check(!finSnap2.contains(finSnap1));
+       check(!finSnap1.contains(finSnap2));
+
+       finSnap1.add(Range2d<float>(85, 85, 185, 185));
+
+       check(!finSnap2.contains(finSnap1));
+       check(finSnap1.contains(finSnap2));
 }
 

Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3019
retrieving revision 1.3020
diff -u -b -r1.3019 -r1.3020
--- ChangeLog   27 Apr 2007 10:19:41 -0000      1.3019
+++ ChangeLog   27 Apr 2007 12:13:37 -0000      1.3020
@@ -1,5 +1,12 @@
 2007-04-27 Sandro Santilli <address@hidden>
 
+       * libgeometry/snappingrange.h: add contains(SnappingRange2d) method;
+         fixed contains(Range2d) to take a const ref rather then a value.
+       * testsuite/libgeometry/snappingrangetest.cpp: add tests for
+         contains(SnappingRange2d).
+
+2007-04-27 Sandro Santilli <address@hidden>
+
        * gui/gui.cpp: add a DEBUG_MOUSE_COORDINATES define, for making
          writing test runners easier.
        * testsuite/swfdec/swfdec_gnash_tester: use the .trace.org files when




reply via email to

[Prev in Thread] Current Thread [Next in Thread]