]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/geometry.cpp
Misc validity fixes to samples/xrc/rc/*.xrc.
[wxWidgets.git] / src / common / geometry.cpp
index d74af422a9272237cf26a05bde1096685063506a..3f1cd03a89ee0209fc4f2c72503dffff2762e743 100644 (file)
@@ -1,32 +1,30 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        common/geometry.cpp
+// Name:        src/common/geometry.cpp
 // Purpose:     Common Geometry Classes
 // Author:      Stefan Csomor
 // Modified by:
 // Created:     08/05/99
-// RCS-ID:
 // Copyright:   (c) 1999 Stefan Csomor
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma implementation "geometry.cpp"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
-
 #ifdef __BORLANDC__
-#pragma hdrstop
+    #pragma hdrstop
 #endif
 
 #if wxUSE_GEOMETRY
 
-#include "wx/log.h"
+#include "wx/geometry.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/log.h"
+#endif
+
 #include <string.h>
 
-#include "wx/geometry.h"
 #include "wx/datstrm.h"
 
 //
@@ -206,14 +204,14 @@ void wxPoint2DInt::SetVectorAngle( wxDouble degrees )
 
 wxDouble wxPoint2DDouble::GetVectorAngle() const
 {
-    if ( m_x == 0 )
+    if ( wxIsNullDouble(m_x) )
     {
         if ( m_y >= 0 )
             return 90;
         else
             return 270;
     }
-    if ( m_y == 0 )
+    if ( wxIsNullDouble(m_y) )
     {
         if ( m_x >= 0 )
             return 0;
@@ -362,4 +360,51 @@ void wxRect2DInt::ReadFrom( wxDataInputStream &stream )
 }
 #endif // wxUSE_STREAMS
 
+
+// wxTransform2D
+
+void wxTransform2D::Transform( wxRect2DInt* r ) const
+{
+    wxPoint2DInt a = r->GetLeftTop(), b = r->GetRightBottom();
+    Transform( &a );
+    Transform( &b );
+    *r = wxRect2DInt( a, b );
+}
+
+wxPoint2DInt wxTransform2D::Transform( const wxPoint2DInt &pt ) const
+{
+    wxPoint2DInt res = pt;
+    Transform( &res );
+    return res;
+}
+
+wxRect2DInt wxTransform2D::Transform( const wxRect2DInt &r ) const
+{
+    wxRect2DInt res = r;
+    Transform( &res );
+    return res;
+}
+
+void wxTransform2D::InverseTransform( wxRect2DInt* r ) const
+{
+    wxPoint2DInt a = r->GetLeftTop(), b = r->GetRightBottom();
+    InverseTransform( &a );
+    InverseTransform( &b );
+    *r = wxRect2DInt( a , b );
+}
+
+wxPoint2DInt wxTransform2D::InverseTransform( const wxPoint2DInt &pt ) const
+{
+    wxPoint2DInt res = pt;
+    InverseTransform( &res );
+    return res;
+}
+
+wxRect2DInt wxTransform2D::InverseTransform( const wxRect2DInt &r ) const
+{
+    wxRect2DInt res = r;
+    InverseTransform( &res );
+    return res;
+}
+
 #endif // wxUSE_GEOMETRY