[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash libgeometry/snappingrange.h testsuite/lib...,
Sandro Santilli <=