X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/06b3e19fcb73728b9d967c3a4a997a01a23aacfe..e7bdf0ac8d2f095062b054e1adffd283c1d507a4:/samples/shaped/shaped.cpp diff --git a/samples/shaped/shaped.cpp b/samples/shaped/shaped.cpp index 6f7ea9fb76..cc357408ed 100644 --- a/samples/shaped/shaped.cpp +++ b/samples/shaped/shaped.cpp @@ -4,7 +4,6 @@ // Author: Robin Dunn // Modified by: // Created: 28-Mar-2003 -// RCS-ID: $Id$ // Copyright: (c) Robin Dunn // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -38,9 +37,10 @@ #endif #include "wx/dcclient.h" +#include "wx/graphics.h" #include "wx/image.h" -#ifndef __WXMSW__ +#ifndef wxHAS_IMAGES_IN_RESOURCES #include "../sample.xpm" #endif @@ -114,7 +114,16 @@ public: void OnPaint(wxPaintEvent& evt); private: - bool m_hasShape; + enum ShapeKind + { + Shape_None, + Shape_Star, +#if wxUSE_GRAPHICS_CONTEXT + Shape_Circle, +#endif // wxUSE_GRAPHICS_CONTEXT + Shape_Max + } m_shapeKind; + wxBitmap m_bmp; wxPoint m_delta; @@ -382,29 +391,46 @@ ShapedFrame::ShapedFrame(wxFrame *parent) | wxSTAY_ON_TOP ) { - m_hasShape = false; + m_shapeKind = Shape_None; m_bmp = wxBitmap(wxT("star.png"), wxBITMAP_TYPE_PNG); SetSize(wxSize(m_bmp.GetWidth(), m_bmp.GetHeight())); - SetToolTip(wxT("Right-click to close")); + SetToolTip(wxT("Right-click to close, double click to cycle shape")); SetWindowShape(); } void ShapedFrame::SetWindowShape() { - wxRegion region(m_bmp, *wxWHITE); - m_hasShape = SetShape(region); + switch ( m_shapeKind ) + { + case Shape_None: + SetShape(wxRegion()); + break; + + case Shape_Star: + SetShape(wxRegion(m_bmp, *wxWHITE)); + break; + +#if wxUSE_GRAPHICS_CONTEXT + case Shape_Circle: + { + wxGraphicsPath + path = wxGraphicsRenderer::GetDefaultRenderer()->CreatePath(); + path.AddCircle(m_bmp.GetWidth()/2, m_bmp.GetHeight()/2, 30); + SetShape(path); + } + break; +#endif // wxUSE_GRAPHICS_CONTEXT + + case Shape_Max: + wxFAIL_MSG( "invalid shape kind" ); + break; + } } void ShapedFrame::OnDoubleClick(wxMouseEvent& WXUNUSED(evt)) { - if (m_hasShape) - { - wxRegion region; - SetShape(region); - m_hasShape = false; - } - else - SetWindowShape(); + m_shapeKind = static_cast((m_shapeKind + 1) % Shape_Max); + SetWindowShape(); } void ShapedFrame::OnLeftDown(wxMouseEvent& evt) @@ -463,7 +489,7 @@ SeeThroughFrame::SeeThroughFrame() wxSTAY_ON_TOP), m_currentState(STATE_SEETHROUGH) { - SetBackgroundColour(wxColour(255, 255, 255, 255)); + SetBackgroundColour(*wxWHITE); SetBackgroundStyle(wxBG_STYLE_TRANSPARENT); }