From 11f26ea0e21667bb9ffe53964651e5133c8ded6e Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 8 Feb 2000 01:07:48 +0000 Subject: [PATCH] 1. more test code for drawing with ROPs/masks/bg brushes in drawing 2. wxListCtrl colour setting tests added git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5895 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/drawing/drawing.cpp | 22 ++++++-- samples/listctrl/listtest.cpp | 99 +++++++++++++++++++++-------------- samples/listctrl/listtest.h | 4 ++ 3 files changed, 84 insertions(+), 41 deletions(-) diff --git a/samples/drawing/drawing.cpp b/samples/drawing/drawing.cpp index 3f7ba1f9ff..c44bef0949 100644 --- a/samples/drawing/drawing.cpp +++ b/samples/drawing/drawing.cpp @@ -570,11 +570,26 @@ void MyCanvas::DrawDefault(wxDC& dc) dc.FloodFill(0, 0, wxColour(255, 0, 0)); #endif // - dc.DrawIcon( wxICON(mondrian), 410, 40 ); + dc.DrawIcon( wxICON(mondrian), 40, 40 ); + // this is the test for "blitting bitmap into DC damages selected brush" + // bug + dc.SetPen(*wxTRANSPARENT_PEN); + dc.SetBrush( *wxGREEN_BRUSH ); + dc.DrawRectangle(100, 10, 40, 40); + dc.DrawBitmap(wxTheApp->GetStdIcon(wxICON_INFORMATION), 102, 12, TRUE); + dc.DrawRectangle(150, 10, 40, 40); + dc.DrawIcon(wxTheApp->GetStdIcon(wxICON_INFORMATION), 152, 12); + dc.DrawRectangle(200, 10, 40, 40); + + // test for "transparent" bitmap drawing (it intersects with the last + // rectangle above) + //dc.SetBrush( *wxTRANSPARENT_BRUSH ); + #include "../image/smile.xpm" + wxBitmap bmp(smile_xpm); + dc.DrawBitmap(bmp, 210, 30, TRUE); dc.SetBrush( *wxBLACK_BRUSH ); - dc.SetPen(*wxTRANSPARENT_PEN); dc.DrawRectangle( 0, 160, 1000, 300 ); // draw lines @@ -772,6 +787,7 @@ void MyCanvas::DrawWithLogicalOps(wxDC& dc) // reuse the text colour here dc.SetPen(wxPen(m_owner->m_colourForeground, 1, wxSOLID)); + dc.SetBrush(*wxTRANSPARENT_BRUSH); for ( size_t n = 0; n < WXSIZEOF(rasterOperations); n++ ) { @@ -780,7 +796,7 @@ void MyCanvas::DrawWithLogicalOps(wxDC& dc) dc.DrawText(rasterOperations[n].name, x, y - 20); dc.SetLogicalFunction(rasterOperations[n].rop); - //dc.DrawRectangle(x, y, w, h); + dc.DrawRectangle(x, y, w, h); dc.DrawLine(x, y, x + w, y + h); dc.DrawLine(x + w, y, x, y + h); } diff --git a/samples/listctrl/listtest.cpp b/samples/listctrl/listtest.cpp index 269ed56168..4d9fa90c9f 100644 --- a/samples/listctrl/listtest.cpp +++ b/samples/listctrl/listtest.cpp @@ -31,6 +31,8 @@ #include "wx/listctrl.h" #include "wx/timer.h" // for wxStopWatch +#include "wx/colordlg.h" // for wxGetColourFromUser + #include "listtest.h" BEGIN_EVENT_TABLE(MyFrame, wxFrame) @@ -48,6 +50,8 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(LIST_SELECT_ALL, MyFrame::OnSelectAll) EVT_MENU(LIST_DELETE_ALL, MyFrame::OnDeleteAll) EVT_MENU(LIST_SORT, MyFrame::OnSort) + EVT_MENU(LIST_SET_FG_COL, MyFrame::OnSetFgColour) + EVT_MENU(LIST_SET_BG_COL, MyFrame::OnSetBgColour) END_EVENT_TABLE() BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl) @@ -75,16 +79,11 @@ int wxCALLBACK MyCompareFunction(long item1, long item2, long sortData) } // `Main program' equivalent, creating windows and returning main app frame -bool MyApp::OnInit(void) +bool MyApp::OnInit() { // Create the main frame window MyFrame *frame = new MyFrame((wxFrame *) NULL, "wxListCtrl Test", 50, 50, 450, 340); - // This reduces flicker effects - even better would be to define OnEraseBackground - // to do nothing. When the list control's scrollbars are show or hidden, the - // frame is sent a background erase event. - frame->SetBackgroundColour( *wxWHITE ); - // Give it an icon frame->SetIcon( wxICON(mondrian) ); @@ -132,29 +131,42 @@ bool MyApp::OnInit(void) #endif // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(LIST_LIST_VIEW, "&List view\tF1"); - file_menu->Append(LIST_REPORT_VIEW, "&Report view\tF2"); - file_menu->Append(LIST_ICON_VIEW, "&Icon view\tF3"); - file_menu->Append(LIST_ICON_TEXT_VIEW, "Icon view with &text\tF4"); - file_menu->Append(LIST_SMALL_ICON_VIEW, "&Small icon view\tF5"); - file_menu->Append(LIST_SMALL_ICON_TEXT_VIEW, "Small icon &view with text\tF6"); - file_menu->Append(LIST_DESELECT_ALL, "&Deselect All"); - file_menu->Append(LIST_SELECT_ALL, "S&elect All"); - file_menu->AppendSeparator(); - file_menu->Append(LIST_SORT, "&Sort\tCtrl-S"); - file_menu->AppendSeparator(); - file_menu->Append(LIST_DELETE_ALL, "Delete &all items"); - file_menu->AppendSeparator(); - file_menu->Append(BUSY_ON, "&Busy cursor on"); - file_menu->Append(BUSY_OFF, "&Busy cursor off"); - file_menu->AppendSeparator(); - file_menu->Append(LIST_ABOUT, "&About"); - file_menu->Append(LIST_QUIT, "E&xit\tAlt-X"); - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - frame->SetMenuBar(menu_bar); + wxMenu *menuFile = new wxMenu; + menuFile->Append(LIST_ABOUT, "&About"); + menuFile->AppendSeparator(); +#if 0 // what is this for? (VZ) + menuFile->Append(BUSY_ON, "&Busy cursor on"); + menuFile->Append(BUSY_OFF, "&Busy cursor off"); + menuFile->AppendSeparator(); +#endif + menuFile->Append(LIST_QUIT, "E&xit\tAlt-X"); + + wxMenu *menuView = new wxMenu; + menuView->Append(LIST_LIST_VIEW, "&List view\tF1"); + menuView->Append(LIST_REPORT_VIEW, "&Report view\tF2"); + menuView->Append(LIST_ICON_VIEW, "&Icon view\tF3"); + menuView->Append(LIST_ICON_TEXT_VIEW, "Icon view with &text\tF4"); + menuView->Append(LIST_SMALL_ICON_VIEW, "&Small icon view\tF5"); + menuView->Append(LIST_SMALL_ICON_TEXT_VIEW, "Small icon &view with text\tF6"); + + wxMenu *menuList = new wxMenu; + menuList->Append(LIST_DESELECT_ALL, "&Deselect All\tCtrl-D"); + menuList->Append(LIST_SELECT_ALL, "S&elect All\tCtrl-A"); + menuList->AppendSeparator(); + menuList->Append(LIST_SORT, "&Sort\tCtrl-S"); + menuList->AppendSeparator(); + menuList->Append(LIST_DELETE_ALL, "Delete &all items"); + + wxMenu *menuCol = new wxMenu; + menuCol->Append(LIST_SET_FG_COL, "&Foreground colour..."); + menuCol->Append(LIST_SET_BG_COL, "&Background colour..."); + + wxMenuBar *menubar = new wxMenuBar; + menubar->Append(menuFile, "&File"); + menubar->Append(menuView, "&View"); + menubar->Append(menuList, "&List"); + menubar->Append(menuCol, "&Colour"); + frame->SetMenuBar(menubar); // Make a panel with a message frame->m_listCtrl = new MyListCtrl(frame, LIST_CTRL, wxPoint(0, 0), wxSize(400, 200), @@ -177,15 +189,14 @@ bool MyApp::OnInit(void) frame->m_logWindow->SetConstraints(c); frame->SetAutoLayout(TRUE); + wxString buf; for ( int i=0; i < 30; i++) - { - wxChar buf[20]; - wxSprintf(buf, _T("Item %d"), i); - frame->m_listCtrl->InsertItem(i, buf); - } + { + buf.Printf(_T("Item %d"), i); + frame->m_listCtrl->InsertItem(i, buf); + } frame->CreateStatusBar(3); - frame->SetStatusText("", 0); // Show the frame frame->Show(TRUE); @@ -196,14 +207,14 @@ bool MyApp::OnInit(void) } // My frame constructor -MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h): - wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) +MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h) + : wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) { m_listCtrl = (MyListCtrl *) NULL; m_logWindow = (wxTextCtrl *) NULL; } -MyFrame::~MyFrame(void) +MyFrame::~MyFrame() { delete wxGetApp().m_imageListNormal; delete wxGetApp().m_imageListSmall; @@ -396,6 +407,18 @@ void MyFrame::OnSort(wxCommandEvent& WXUNUSED(event)) sw.Time())); } +void MyFrame::OnSetFgColour(wxCommandEvent& WXUNUSED(event)) +{ + m_listCtrl->SetForegroundColour(wxGetColourFromUser(this)); + m_listCtrl->Refresh(); +} + +void MyFrame::OnSetBgColour(wxCommandEvent& WXUNUSED(event)) +{ + m_listCtrl->SetBackgroundColour(wxGetColourFromUser(this)); + m_listCtrl->Refresh(); +} + void MyFrame::OnDeleteAll(wxCommandEvent& WXUNUSED(event)) { wxStopWatch sw; diff --git a/samples/listctrl/listtest.h b/samples/listctrl/listtest.h index 8258cf17bf..5c374ae3c0 100644 --- a/samples/listctrl/listtest.h +++ b/samples/listctrl/listtest.h @@ -70,6 +70,8 @@ public: void OnSelectAll(wxCommandEvent& event); void OnDeleteAll(wxCommandEvent& event); void OnSort(wxCommandEvent& event); + void OnSetFgColour(wxCommandEvent& event); + void OnSetBgColour(wxCommandEvent& event); void BusyOn(wxCommandEvent& event); void BusyOff(wxCommandEvent& event); @@ -95,6 +97,8 @@ enum BUSY_OFF = 11, LIST_DELETE_ALL = 12, LIST_SORT, + LIST_SET_FG_COL, + LIST_SET_BG_COL, LIST_CTRL = 1000 }; -- 2.45.2