|
From: Emilien K. <cur...@us...> - 2005-01-08 17:49:23
|
Update of /cvsroot/wxdevcenter/StdPlugin/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2316/src Modified Files: BitmapCtrl.cpp BitmapDocView.cpp Log Message: Buffer de sauvegarde d'une partie de l'image du BitmapCtrl Tracé de ligne Index: BitmapCtrl.cpp =================================================================== RCS file: /cvsroot/wxdevcenter/StdPlugin/src/BitmapCtrl.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** BitmapCtrl.cpp 8 Jan 2005 16:29:53 -0000 1.7 --- BitmapCtrl.cpp 8 Jan 2005 17:49:13 -0000 1.8 *************** *** 328,330 **** --- 328,352 ---- + // Sauvegarde une partie de l'image. + void BitmapCtrl::SaveBitmapRect(wxRect r) + { + m_SaveBuffer = m_Bmp.GetSubBitmap(r); + m_ptSaveBuffer = r.GetLeftTop(); + } + + // Restore la partie d'image sauvegardée. + void BitmapCtrl::RestoreBitmapRect() + { + if(m_SaveBuffer.Ok()) + { + wxMemoryDC dc; + dc.SelectObject(m_Bmp); + dc.DrawBitmap(m_SaveBuffer, m_ptSaveBuffer); + } + } + // Supprime la sauvegarde d'image. + void BitmapCtrl::ClearSaveBitmap() + { + m_SaveBuffer = wxBitmap(NULL, 0, 0); + } Index: BitmapDocView.cpp =================================================================== RCS file: /cvsroot/wxdevcenter/StdPlugin/src/BitmapDocView.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** BitmapDocView.cpp 8 Jan 2005 15:19:51 -0000 1.5 --- BitmapDocView.cpp 8 Jan 2005 17:49:13 -0000 1.6 *************** *** 321,340 **** wxBitmap bmp; bmp = wxGetApp().LoadAppBitmap("bmp/handdraw.png", wxBITMAP_TYPE_PNG); ! pTB->AddTool(ID_TOOL_HANDDRAW, "Hand draw", bmp); bmp = wxGetApp().LoadAppBitmap("bmp/brush.png", wxBITMAP_TYPE_PNG); ! pTB->AddTool(ID_TOOL_BRUSH, "Brush", bmp); bmp = wxGetApp().LoadAppBitmap("bmp/spray.png", wxBITMAP_TYPE_PNG); ! pTB->AddTool(ID_TOOL_SPRAY, "Spray", bmp); pTB->AddSeparator(); bmp = wxGetApp().LoadAppBitmap("bmp/line.png", wxBITMAP_TYPE_PNG); ! pTB->AddTool(ID_TOOL_LINE, "Line", bmp); bmp = wxGetApp().LoadAppBitmap("bmp/rect.png", wxBITMAP_TYPE_PNG); ! pTB->AddTool(ID_TOOL_RECT, "Rect", bmp); bmp = wxGetApp().LoadAppBitmap("bmp/ellipse.png", wxBITMAP_TYPE_PNG); ! pTB->AddTool(ID_TOOL_ELLIPSE, "Ellipse", bmp); bmp = wxGetApp().LoadAppBitmap("bmp/rrect.png", wxBITMAP_TYPE_PNG); ! pTB->AddTool(ID_TOOL_RRECT, "Rounded rect", bmp); pTB->Realize(); --- 321,340 ---- wxBitmap bmp; bmp = wxGetApp().LoadAppBitmap("bmp/handdraw.png", wxBITMAP_TYPE_PNG); ! pTB->AddTool(ID_TOOL_HANDDRAW, "Hand draw", bmp, "Hand draw", wxITEM_CHECK); bmp = wxGetApp().LoadAppBitmap("bmp/brush.png", wxBITMAP_TYPE_PNG); ! pTB->AddTool(ID_TOOL_BRUSH, "Brush", bmp, "Brush", wxITEM_CHECK); bmp = wxGetApp().LoadAppBitmap("bmp/spray.png", wxBITMAP_TYPE_PNG); ! pTB->AddTool(ID_TOOL_SPRAY, "Spray", bmp, "Spray", wxITEM_CHECK); pTB->AddSeparator(); bmp = wxGetApp().LoadAppBitmap("bmp/line.png", wxBITMAP_TYPE_PNG); ! pTB->AddTool(ID_TOOL_LINE, "Line", bmp, "Line", wxITEM_CHECK); bmp = wxGetApp().LoadAppBitmap("bmp/rect.png", wxBITMAP_TYPE_PNG); ! pTB->AddTool(ID_TOOL_RECT, "Rect", bmp, "Rect", wxITEM_CHECK); bmp = wxGetApp().LoadAppBitmap("bmp/ellipse.png", wxBITMAP_TYPE_PNG); ! pTB->AddTool(ID_TOOL_ELLIPSE, "Ellipse", bmp, "Ellipse", wxITEM_CHECK); bmp = wxGetApp().LoadAppBitmap("bmp/rrect.png", wxBITMAP_TYPE_PNG); ! pTB->AddTool(ID_TOOL_RRECT, "Rounded rect", bmp, "Rounded rect", wxITEM_CHECK); pTB->Realize(); *************** *** 477,484 **** wxPoint pt = m_pBitmapCtrl->ClientToBitmap(event.GetToPos()); ! if(m_BVD == BVD_HANDDRAW) { ! GetDocument()->DrawLine(m_pt, pt, m_pColourLeftButton->GetColour()); ! m_pt = pt; } } --- 477,501 ---- wxPoint pt = m_pBitmapCtrl->ClientToBitmap(event.GetToPos()); ! switch(m_BVD) { ! case BVD_HANDDRAW: ! if(pt !=wxDefaultPosition) ! { ! GetDocument()->DrawLine(m_pt, pt, m_pColourLeftButton->GetColour()); ! m_pt = pt; ! } ! break; ! case BVD_LINE: ! m_pBitmapCtrl->RestoreBitmapRect(); ! m_pBitmapCtrl->SaveBitmapRect(wxRect(m_pt, pt)); ! { ! wxMemoryDC dc; ! dc.SelectObject(m_pBitmapCtrl->Bitmap()); ! wxPen pen(m_pColourLeftButton->GetColour()); ! dc.SetPen(pen); ! dc.DrawLine(m_pt, pt); ! } ! m_pBitmapCtrl->Refresh(); ! break; } } *************** *** 487,498 **** void BitmapView::OnLeftDragStart(wxExtendedMouseEvent& event) { ! m_BVD = BVD_HANDDRAW; ! m_pt = m_pBitmapCtrl->ClientToBitmap(event.GetFromPos()); } // Interception d'une fin de drag gauche. ! void BitmapView::OnLeftDragEnd(wxExtendedMouseEvent& WXUNUSED(event)) { ! m_BVD = BVD_NONE; } --- 504,532 ---- void BitmapView::OnLeftDragStart(wxExtendedMouseEvent& event) { ! switch(m_BVD) ! { ! case BVD_HANDDRAW: ! case BVD_LINE: ! m_pBitmapCtrl->ClearSaveBitmap(); ! m_pt = m_pBitmapCtrl->ClientToBitmap(event.GetFromPos()); ! break; ! } ! } // Interception d'une fin de drag gauche. ! void BitmapView::OnLeftDragEnd(wxExtendedMouseEvent& event) { ! switch(m_BVD) ! { ! case BVD_HANDDRAW: ! m_pt = wxDefaultPosition; ! break; ! case BVD_LINE: ! m_pBitmapCtrl->RestoreBitmapRect(); ! GetDocument()->DrawLine(m_pBitmapCtrl->ClientToBitmap(event.GetFromPos()), m_pBitmapCtrl->ClientToBitmap(event.GetToPos()), m_pColourLeftButton->GetColour()); ! m_pt = wxDefaultPosition; ! break; ! } } *************** *** 500,504 **** void BitmapView::OnUpdateTools(wxUpdateUIEvent& event) { ! event.Check(m_BVD == (event.GetId()-ID_TOOL_NONE)); } --- 534,538 ---- void BitmapView::OnUpdateTools(wxUpdateUIEvent& event) { ! event.Check(m_BVD == BitmapViewDrawing(event.GetId()-ID_TOOL_NONE)); } |