]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/src/canvas/canvas.cpp
typo fixed: should be lpthread, not -lpthread in THREAD_OPTS
[wxWidgets.git] / contrib / src / canvas / canvas.cpp
index 55cb94d21abe810796f25933ed19237f46f69b6c..0cedafc9468083b60472beab11888461ed896c12 100644 (file)
@@ -51,6 +51,8 @@ FT_Library g_freetypeLibrary;
 // wxCanvasObject
 //----------------------------------------------------------------------------
 
 // wxCanvasObject
 //----------------------------------------------------------------------------
 
+IMPLEMENT_CLASS(wxCanvasObject, wxEvtHandler)
+
 wxCanvasObject::wxCanvasObject()
 {
     // the default event handler is just this object
 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_isVector = FALSE;
     m_isImage = FALSE;
     m_visible  = TRUE;
-    m_dragmode = DRAG_ONTOP;
+    m_dragmode = wxDRAG_ONTOP;
 //  handy when debugging
 //  handy when debugging
-//  m_dragmode = DRAG_RECTANGLE;
+//  m_dragmode = wxDRAG_RECTANGLE;
     m_dragable = TRUE;
 }
 
     m_dragable = TRUE;
 }
 
@@ -216,7 +218,7 @@ void wxCanvasObject::MoveRelative( double x, double y )
 
 void wxCanvasObject::DragStart()
 {
 
 void wxCanvasObject::DragStart()
 {
-    if (m_dragmode == DRAG_RECTANGLE)
+    if (m_dragmode == wxDRAG_RECTANGLE)
     {
         this->SetVisible(FALSE);
         wxTransformMatrix help;
     {
         this->SetVisible(FALSE);
         wxTransformMatrix help;
@@ -236,7 +238,7 @@ void wxCanvasObject::DragStart()
         dc.SetBrush(wxNullBrush);
         dc.SetPen(wxNullPen);
     }
         dc.SetBrush(wxNullBrush);
         dc.SetPen(wxNullPen);
     }
-    else
+    else if (m_dragmode != wxDRAG_REDRAW)
     {
         this->SetVisible(FALSE);
         wxTransformMatrix help;
     {
         this->SetVisible(FALSE);
         wxTransformMatrix help;
@@ -266,7 +268,7 @@ void wxCanvasObject::DragStart()
 
 void wxCanvasObject::DragRelative( double x, double y)
 {
 
 void wxCanvasObject::DragRelative( double x, double y)
 {
-    if (m_dragmode == DRAG_RECTANGLE)
+    if (m_dragmode == wxDRAG_RECTANGLE)
     {
         wxTransformMatrix help;
 
     {
         wxTransformMatrix help;
 
@@ -285,7 +287,7 @@ void wxCanvasObject::DragRelative( double x, double y)
         dc.SetBrush(wxNullBrush);
         dc.SetPen(wxNullPen);
     }
         dc.SetBrush(wxNullBrush);
         dc.SetPen(wxNullPen);
     }
-    else
+    else if (m_dragmode != wxDRAG_REDRAW)
     {
         wxClientDC dc(m_admin->GetActive());
         wxMemoryDC tmp;
     {
         wxClientDC dc(m_admin->GetActive());
         wxMemoryDC tmp;
@@ -336,6 +338,8 @@ void wxCanvasObject::DragRelative( double x, double y)
         dcm.SelectObject(wxNullBitmap);
         this->SetVisible(FALSE);
     }
         dcm.SelectObject(wxNullBitmap);
         this->SetVisible(FALSE);
     }
+    else
+        MoveRelative(x,y);
 }
 
 
 }
 
 
@@ -405,6 +409,8 @@ void wxCanvasObject::WriteSVG( wxTextOutputStream &stream )
 // wxCanvasObjectGroup
 //----------------------------------------------------------------------------
 
 // wxCanvasObjectGroup
 //----------------------------------------------------------------------------
 
+IMPLEMENT_CLASS(wxCanvasObjectGroup, wxCanvasObject)
+
 wxCanvasObjectGroup::wxCanvasObjectGroup(double x, double y)
 {
     lworld.Translate(x,y);
 wxCanvasObjectGroup::wxCanvasObjectGroup(double x, double y)
 {
     lworld.Translate(x,y);
@@ -714,6 +720,8 @@ int wxCanvasObjectGroup::IndexOf( wxCanvasObject* obj )
 // wxCanvasObjectRef
 //----------------------------------------------------------------------------
 
 // wxCanvasObjectRef
 //----------------------------------------------------------------------------
 
+IMPLEMENT_CLASS(wxCanvasObjectRef, wxCanvasObject)
+
 wxCanvasObjectRef::wxCanvasObjectRef(double x, double y, wxCanvasObject* obj)
    : wxCanvasObject()
 {
 wxCanvasObjectRef::wxCanvasObjectRef(double x, double y, wxCanvasObject* obj)
    : wxCanvasObject()
 {
@@ -878,6 +886,8 @@ wxCanvasObject* wxCanvasObjectRef::IsHitWorld( double x, double y, double margin
 // wxCanvasRect
 //----------------------------------------------------------------------------
 
 // wxCanvasRect
 //----------------------------------------------------------------------------
 
+IMPLEMENT_CLASS(wxCanvasRect, wxCanvasObject)
+
 wxCanvasRect::wxCanvasRect( double x, double y, double w, double h , double radius )
    : 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 );
             
         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;
         
         // 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 ) );
 
     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;
 
     // 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 );
 
    wxDC *dc = m_admin->GetActive()->GetDC();
    dc->DrawBitmap( sub_bitmap, clip_x, clip_y );