|
From: Emilien K. <cur...@us...> - 2005-02-25 10:44:10
|
Update of /cvsroot/wxdevcenter/StdPlugin/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30370/src Modified Files: BitmapCtrl.cpp Log Message: Ajout des ancres de dimension Index: BitmapCtrl.cpp =================================================================== RCS file: /cvsroot/wxdevcenter/StdPlugin/src/BitmapCtrl.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** BitmapCtrl.cpp 24 Feb 2005 17:26:48 -0000 1.12 --- BitmapCtrl.cpp 25 Feb 2005 10:43:41 -0000 1.13 *************** *** 30,33 **** --- 30,34 ---- #include <wx/dcbuffer.h> + #define BMP_ANCHOR_INFLATE_WIDTH 3 BEGIN_EVENT_TABLE(BitmapCtrl, wxControl) *************** *** 91,94 **** --- 92,136 ---- RegIter++; } + + if((GetWindowStyleFlag()&BMP_SHOW_ANCHOR)!=0) + { + wxRect r; + dc.SetPen(*wxBLACK_PEN); + dc.SetBrush(*wxGREY_BRUSH); + // Bottom-left + r = wxRect(rb.GetLeft(), rb.GetBottom(), 1,1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + dc.DrawRectangle(r); + // Middle-left + r = wxRect(rb.GetLeft(), rb.GetTop() + rb.GetHeight()/2, 1, 1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + dc.DrawRectangle(r); + // Top-left + r = wxRect(rb.GetLeft(), rb.GetTop(), 1, 1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + dc.DrawRectangle(r); + + // Bottom-right + r = wxRect(rb.GetRight(), rb.GetBottom(), 1, 1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + dc.DrawRectangle(r); + // Middle-right + r = wxRect(rb.GetRight(), rb.GetTop() + rb.GetHeight()/2, 1, 1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + dc.DrawRectangle(r); + // Top-right + r = wxRect(rb.GetRight(), rb.GetTop(), 1, 1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + dc.DrawRectangle(r); + + // Top-Middle + r = wxRect(rb.GetLeft() + rb.GetWidth()/2, rb.GetTop(), 1, 1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + dc.DrawRectangle(r); + // Bottom-Middle + r = wxRect(rb.GetLeft() + rb.GetWidth()/2, rb.GetBottom(), 1, 1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + dc.DrawRectangle(r); + } dc.EndDrawing(); } *************** *** 244,247 **** --- 286,346 ---- } + // Teste une position sur la zone client. + BitmapCtrl::HitTestFlag BitmapCtrl::HitTest(wxPoint pos)const + { + pos = ClientToBitmap(pos); + + wxRect rb(0, 0, m_Bmp.GetWidth(), m_Bmp.GetHeight()); + wxRect r; + + if((GetWindowStyleFlag()&BMP_SHOW_ANCHOR)!=0) + { + // Bottom-left + r = wxRect(rb.GetLeft(), rb.GetBottom(), 1,1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + if(r.Inside(pos)) + return BMP_HTF_ANCHOR_SE; + // Middle-left + r = wxRect(rb.GetLeft(), rb.GetTop() + rb.GetHeight()/2, 1, 1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + if(r.Inside(pos)) + return BMP_HTF_ANCHOR_E; + // Top-left + r = wxRect(rb.GetLeft(), rb.GetTop(), 1, 1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + if(r.Inside(pos)) + return BMP_HTF_ANCHOR_NE; + // Bottom-right + r = wxRect(rb.GetRight(), rb.GetBottom(), 1, 1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + if(r.Inside(pos)) + return BMP_HTF_ANCHOR_SW; + // Middle-right + r = wxRect(rb.GetRight(), rb.GetTop() + rb.GetHeight()/2, 1, 1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + if(r.Inside(pos)) + return BMP_HTF_ANCHOR_W; + // Top-right + r = wxRect(rb.GetRight(), rb.GetTop(), 1, 1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + if(r.Inside(pos)) + return BMP_HTF_ANCHOR_NW; + // Top-Middle + r = wxRect(rb.GetLeft() + rb.GetWidth()/2, rb.GetTop(), 1, 1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + if(r.Inside(pos)) + return BMP_HTF_ANCHOR_N; + // Bottom-Middle + r = wxRect(rb.GetLeft() + rb.GetWidth()/2, rb.GetBottom(), 1, 1); + r.Inflate(BMP_ANCHOR_INFLATE_WIDTH); + if(r.Inside(pos)) + return BMP_HTF_ANCHOR_S; + } + if(rb.Inside(pos)) + return BMP_HTF_BITMAP; + else + return BMP_HTF_NONE; + } + // Interception des évènements de la souris. |