X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/880d870ea4133fc81dff875d54d14f1e9bb0268f..023fff9ae0d4b7ace23fc5c070576c240a9f6915:/contrib/src/canvas/canvas.cpp diff --git a/contrib/src/canvas/canvas.cpp b/contrib/src/canvas/canvas.cpp index 55cb94d21a..5cced63809 100644 --- a/contrib/src/canvas/canvas.cpp +++ b/contrib/src/canvas/canvas.cpp @@ -41,7 +41,7 @@ // globals //---------------------------------------------------------------------------- -const double pi = 3.1415926535; +static const double pi = 3.1415926535; #if wxUSE_FREETYPE FT_Library g_freetypeLibrary; @@ -51,6 +51,8 @@ FT_Library g_freetypeLibrary; // wxCanvasObject //---------------------------------------------------------------------------- +IMPLEMENT_CLASS(wxCanvasObject, wxEvtHandler) + wxCanvasObject::wxCanvasObject() { // the default event handler is just this object @@ -60,9 +62,9 @@ wxCanvasObject::wxCanvasObject() m_isVector = FALSE; m_isImage = FALSE; m_visible = TRUE; - m_dragmode = DRAG_ONTOP; + m_dragmode = wxDRAG_ONTOP; // handy when debugging -// m_dragmode = DRAG_RECTANGLE; +// m_dragmode = wxDRAG_RECTANGLE; m_dragable = TRUE; } @@ -216,7 +218,7 @@ void wxCanvasObject::MoveRelative( double x, double y ) void wxCanvasObject::DragStart() { - if (m_dragmode == DRAG_RECTANGLE) + if (m_dragmode == wxDRAG_RECTANGLE) { this->SetVisible(FALSE); wxTransformMatrix help; @@ -236,7 +238,7 @@ void wxCanvasObject::DragStart() dc.SetBrush(wxNullBrush); dc.SetPen(wxNullPen); } - else + else if (m_dragmode != wxDRAG_REDRAW) { this->SetVisible(FALSE); wxTransformMatrix help; @@ -266,7 +268,7 @@ void wxCanvasObject::DragStart() void wxCanvasObject::DragRelative( double x, double y) { - if (m_dragmode == DRAG_RECTANGLE) + if (m_dragmode == wxDRAG_RECTANGLE) { wxTransformMatrix help; @@ -285,7 +287,7 @@ void wxCanvasObject::DragRelative( double x, double y) dc.SetBrush(wxNullBrush); dc.SetPen(wxNullPen); } - else + else if (m_dragmode != wxDRAG_REDRAW) { wxClientDC dc(m_admin->GetActive()); wxMemoryDC tmp; @@ -336,6 +338,8 @@ void wxCanvasObject::DragRelative( double x, double y) dcm.SelectObject(wxNullBitmap); this->SetVisible(FALSE); } + else + MoveRelative(x,y); } @@ -405,6 +409,8 @@ void wxCanvasObject::WriteSVG( wxTextOutputStream &stream ) // wxCanvasObjectGroup //---------------------------------------------------------------------------- +IMPLEMENT_CLASS(wxCanvasObjectGroup, wxCanvasObject) + wxCanvasObjectGroup::wxCanvasObjectGroup(double x, double y) { lworld.Translate(x,y); @@ -714,6 +720,8 @@ int wxCanvasObjectGroup::IndexOf( wxCanvasObject* obj ) // wxCanvasObjectRef //---------------------------------------------------------------------------- +IMPLEMENT_CLASS(wxCanvasObjectRef, wxCanvasObject) + wxCanvasObjectRef::wxCanvasObjectRef(double x, double y, wxCanvasObject* obj) : wxCanvasObject() { @@ -878,6 +886,8 @@ wxCanvasObject* wxCanvasObjectRef::IsHitWorld( double x, double y, double margin // wxCanvasRect //---------------------------------------------------------------------------- +IMPLEMENT_CLASS(wxCanvasRect, wxCanvasObject) + wxCanvasRect::wxCanvasRect( double x, double y, double w, double h , double radius ) : wxCanvasObject() { @@ -1426,7 +1436,7 @@ void wxCanvasImage::Render(wxTransformMatrix* cworld, int clip_x, int clip_y, in if (cworld->GetRotation()) tmp = tmp.Rotate(-cworld->GetRotation()/180.0 * pi, centr, TRUE, NULL ); - bmp = tmp.ConvertToBitmap(); + bmp = wxBitmap(tmp); // create cached bitmap m_cBitmap = bmp; @@ -1656,7 +1666,7 @@ void wxCanvasText::Render(wxTransformMatrix* cworld, int clip_x, int clip_y, int wxRect sub_rect( clip_x, clip_y, clip_width, clip_height ); wxBitmap sub_bitmap( bitmap->GetSubBitmap( sub_rect ) ); - wxImage image( sub_bitmap ); + wxImage image( sub_bitmap.ConvertToImage() ); // local coordinates int start_x = clip_x - tmparea.x; @@ -1693,7 +1703,7 @@ void wxCanvasText::Render(wxTransformMatrix* cworld, int clip_x, int clip_y, int } } - sub_bitmap = image.ConvertToBitmap(); + sub_bitmap = wxBitmap(image); wxDC *dc = m_admin->GetActive()->GetDC(); dc->DrawBitmap( sub_bitmap, clip_x, clip_y );