X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2b5f62a0b2db198609b45dec622a018dae37008e..cc4d5638c66a409e421420ed7110917755a66788:/src/common/geometry.cpp

diff --git a/src/common/geometry.cpp b/src/common/geometry.cpp
index e10221ee8e..3f1cd03a89 100644
--- a/src/common/geometry.cpp
+++ b/src/common/geometry.cpp
@@ -1,39 +1,32 @@
 /////////////////////////////////////////////////////////////////////////////
-// 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
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-    #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 <string.h>
-
 #include "wx/geometry.h"
-#include "wx/datstrm.h"
 
-// normally this is defined in <math.h>
-#ifndef M_PI
-    #define M_PI 3.14159265358979323846
+#ifndef WX_PRECOMP
+    #include "wx/log.h"
 #endif
 
+#include <string.h>
+
+#include "wx/datstrm.h"
+
 //
 // wxPoint2D
 //
@@ -57,9 +50,9 @@ bool wxRect2DDouble::Intersects( const wxRect2DDouble &rect ) const
 
     if ( left < right && top < bottom )
     {
-        return TRUE;
+        return true;
     }
-    return FALSE;
+    return false;
 }
 
 void wxRect2DDouble::Intersect( const wxRect2DDouble &src1 , const wxRect2DDouble &src2 , wxRect2DDouble *dest )
@@ -145,6 +138,15 @@ void wxRect2DDouble::ConstrainTo( const wxRect2DDouble &rect )
         SetTop( rect.GetTop() );
 }
 
+wxRect2DDouble& wxRect2DDouble::operator=( const wxRect2DDouble &r )
+{
+    m_x = r.m_x;
+    m_y = r.m_y;
+    m_width = r.m_width;
+    m_height = r.m_height;
+    return *this;
+}
+
 // integer version
 
 // for the following calculations always remember
@@ -152,6 +154,7 @@ void wxRect2DDouble::ConstrainTo( const wxRect2DDouble &rect )
 
 // wxPoint2D
 
+#if wxUSE_STREAMS
 void wxPoint2DInt::WriteTo( wxDataOutputStream &stream ) const
 {
     stream.Write32( m_x );
@@ -163,6 +166,7 @@ void wxPoint2DInt::ReadFrom( wxDataInputStream &stream )
     m_x = stream.Read32();
     m_y = stream.Read32();
 }
+#endif // wxUSE_STREAMS
 
 wxDouble wxPoint2DInt::GetVectorAngle() const
 {
@@ -200,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;
@@ -241,9 +245,9 @@ bool wxRect2DInt::Intersects( const wxRect2DInt &rect ) const
 
     if ( left < right && top < bottom )
     {
-        return TRUE;
+        return true;
     }
-    return FALSE;
+    return false;
 }
 
 void wxRect2DInt::Intersect( const wxRect2DInt &src1 , const wxRect2DInt &src2 , wxRect2DInt *dest )
@@ -338,6 +342,7 @@ wxRect2DInt& wxRect2DInt::operator=( const wxRect2DInt &r )
     return *this;
 }
 
+#if wxUSE_STREAMS
 void wxRect2DInt::WriteTo( wxDataOutputStream &stream ) const
 {
     stream.Write32( m_x );
@@ -353,5 +358,53 @@ void wxRect2DInt::ReadFrom( wxDataInputStream &stream )
     m_width = stream.Read32();
     m_height = stream.Read32();
 }
+#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