// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "geometry.cpp"
#endif
#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
+#endif
+
//
// wxPoint2D
//
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
// wxPoint2D
+#if wxUSE_STREAMS
void wxPoint2DInt::WriteTo( wxDataOutputStream &stream ) const
{
stream.Write32( m_x );
m_x = stream.Read32();
m_y = stream.Read32();
}
+#endif // wxUSE_STREAMS
-wxDouble wxPoint2DInt::GetVectorAngle()
+wxDouble wxPoint2DInt::GetVectorAngle() const
{
if ( m_x == 0 )
{
return 180;
}
- // casts needed MIPSpro compiler under SGI
- wxDouble deg = atan2( (double)m_y , (double)m_x ) * 180 / 3.14159265359;
+ // casts needed for MIPSpro compiler under SGI
+ wxDouble deg = atan2( (double)m_y , (double)m_x ) * 180 / M_PI;
if ( deg < 0 )
{
deg += 360;
}
-void wxPoint2DInt::SetVectorAngle( wxDouble degrees ) {
- wxDouble length = this->GetVectorLength() ;
- m_x = length * cos( degrees / 180 * 3.14159265359 ) ;
- m_y = length * sin( degrees / 180 * 3.14159265359 ) ;
+void wxPoint2DInt::SetVectorAngle( wxDouble degrees )
+{
+ wxDouble length = GetVectorLength();
+ m_x = (int)(length * cos( degrees / 180 * M_PI ));
+ m_y = (int)(length * sin( degrees / 180 * M_PI ));
}
-
+
wxDouble wxPoint2DDouble::GetVectorAngle() const
{
- if ( m_x == 0 )
- {
- if ( m_y >= 0 )
- return 90 ;
- else
- return 270 ;
- }
- if ( m_y == 0 )
- {
- if ( m_x >= 0 )
- return 0 ;
- else
- return 180 ;
- }
- wxDouble deg = atan2( m_y , m_x ) * 180 / 3.14159265359 ;
- if ( deg < 0 )
- {
- deg += 360 ;
- }
- return deg ;
+ if ( m_x == 0 )
+ {
+ if ( m_y >= 0 )
+ return 90;
+ else
+ return 270;
+ }
+ if ( m_y == 0 )
+ {
+ if ( m_x >= 0 )
+ return 0;
+ else
+ return 180;
+ }
+ wxDouble deg = atan2( m_y , m_x ) * 180 / M_PI;
+ if ( deg < 0 )
+ {
+ deg += 360;
+ }
+ return deg;
}
-void wxPoint2DDouble::SetVectorAngle( wxDouble degrees ) {
- wxDouble length = this->GetVectorLength() ;
- m_x = length * cos( degrees / 180 * 3.14159265359 ) ;
- m_y = length * sin( degrees / 180 * 3.14159265359 ) ;
+void wxPoint2DDouble::SetVectorAngle( wxDouble degrees )
+{
+ wxDouble length = GetVectorLength();
+ m_x = length * cos( degrees / 180 * M_PI );
+ m_y = length * sin( degrees / 180 * M_PI );
}
// wxRect2D
return *this;
}
+#if wxUSE_STREAMS
void wxRect2DInt::WriteTo( wxDataOutputStream &stream ) const
{
stream.Write32( m_x );
m_width = stream.Read32();
m_height = stream.Read32();
}
+#endif // wxUSE_STREAMS
#endif // wxUSE_GEOMETRY