A simple banner showing either a bitmap or some text on gradient background. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68838 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			138 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
///////////////////////////////////////////////////////////////////////////////
 | 
						|
// Name:        wx/bannerwindow.h
 | 
						|
// Purpose:     wxBannerWindow class declaration
 | 
						|
// Author:      Vadim Zeitlin
 | 
						|
// Created:     2011-08-16
 | 
						|
// RCS-ID:      $Id$
 | 
						|
// Copyright:   (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
 | 
						|
// Licence:     wxWindows licence
 | 
						|
///////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#ifndef _WX_BANNERWINDOW_H_
 | 
						|
#define _WX_BANNERWINDOW_H_
 | 
						|
 | 
						|
#include "wx/defs.h"
 | 
						|
 | 
						|
#if wxUSE_BANNERWINDOW
 | 
						|
 | 
						|
#include "wx/bitmap.h"
 | 
						|
#include "wx/event.h"
 | 
						|
#include "wx/window.h"
 | 
						|
 | 
						|
class WXDLLIMPEXP_FWD_CORE wxBitmap;
 | 
						|
class WXDLLIMPEXP_FWD_CORE wxColour;
 | 
						|
class WXDLLIMPEXP_FWD_CORE wxDC;
 | 
						|
 | 
						|
extern WXDLLIMPEXP_DATA_CORE(const char) wxBannerWindowNameStr[];
 | 
						|
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
// A simple banner window showing either a bitmap or text.
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
 | 
						|
class WXDLLIMPEXP_ADV wxBannerWindow : public wxWindow
 | 
						|
{
 | 
						|
public:
 | 
						|
    // Default constructor, use Create() later.
 | 
						|
    wxBannerWindow() { Init(); }
 | 
						|
 | 
						|
    // Convenient constructor that should be used in the majority of cases.
 | 
						|
    //
 | 
						|
    // The banner orientation changes how the text in it is displayed and also
 | 
						|
    // defines where is the bitmap truncated if it's too big to fit but doesn't
 | 
						|
    // do anything for the banner position, this is supposed to be taken care
 | 
						|
    // of in the usual way, e.g. using sizers.
 | 
						|
    wxBannerWindow(wxWindow* parent, wxDirection dir = wxLEFT)
 | 
						|
    {
 | 
						|
        Init();
 | 
						|
 | 
						|
        Create(parent, wxID_ANY, dir);
 | 
						|
    }
 | 
						|
 | 
						|
    // Full constructor provided for consistency with the other classes only.
 | 
						|
    wxBannerWindow(wxWindow* parent,
 | 
						|
                   wxWindowID winid,
 | 
						|
                   wxDirection dir = wxLEFT,
 | 
						|
                   const wxPoint& pos = wxDefaultPosition,
 | 
						|
                   const wxSize& size = wxDefaultSize,
 | 
						|
                   long style = 0,
 | 
						|
                   const wxString& name = wxBannerWindowNameStr)
 | 
						|
    {
 | 
						|
        Init();
 | 
						|
 | 
						|
        Create(parent, winid, dir, pos, size, style, name);
 | 
						|
    }
 | 
						|
 | 
						|
    // Can be only called on objects created with the default constructor.
 | 
						|
    bool Create(wxWindow* parent,
 | 
						|
                wxWindowID winid,
 | 
						|
                wxDirection dir = wxLEFT,
 | 
						|
                const wxPoint& pos = wxDefaultPosition,
 | 
						|
                const wxSize& size = wxDefaultSize,
 | 
						|
                long style = 0,
 | 
						|
                const wxString& name = wxBannerWindowNameStr);
 | 
						|
 | 
						|
 | 
						|
    // Provide an existing bitmap to show. For wxLEFT orientation the bitmap is
 | 
						|
    // truncated from the top, for wxTOP and wxBOTTOM -- from the right and for
 | 
						|
    // wxRIGHT -- from the bottom, so put the most important part of the bitmap
 | 
						|
    // information in the opposite direction.
 | 
						|
    void SetBitmap(const wxBitmap& bmp);
 | 
						|
 | 
						|
    // Set the text to display. This is mutually exclusive with SetBitmap().
 | 
						|
    // Title is rendered in bold and should be single line, message can have
 | 
						|
    // multiple lines but is not wrapped automatically.
 | 
						|
    void SetText(const wxString& title, const wxString& message);
 | 
						|
 | 
						|
    // Set the colours between which the gradient runs. This can be combined
 | 
						|
    // with SetText() but not SetBitmap().
 | 
						|
    void SetGradient(const wxColour& start, const wxColour& end);
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual wxSize DoGetBestClientSize() const;
 | 
						|
 | 
						|
private:
 | 
						|
    // Common part of all constructors.
 | 
						|
    void Init();
 | 
						|
 | 
						|
    // Fully invalidates the window.
 | 
						|
    void OnSize(wxSizeEvent& event);
 | 
						|
 | 
						|
    // Redraws the window using either m_bitmap or m_title/m_message.
 | 
						|
    void OnPaint(wxPaintEvent& event);
 | 
						|
 | 
						|
    // Helper of OnPaint(): draw the bitmap at the correct position depending
 | 
						|
    // on our orientation.
 | 
						|
    void DrawBitmapBackground(wxDC& dc);
 | 
						|
 | 
						|
    // Helper of OnPaint(): draw the text in the appropriate direction.
 | 
						|
    void DrawBannerTextLine(wxDC& dc, const wxString& str, const wxPoint& pos);
 | 
						|
 | 
						|
    // Return the font to use for the title. Currently this is hardcoded as a
 | 
						|
    // larger bold version of the standard window font but could be made
 | 
						|
    // configurable in the future.
 | 
						|
    wxFont GetTitleFont() const;
 | 
						|
 | 
						|
 | 
						|
    // The window side along which the banner is laid out.
 | 
						|
    wxDirection m_direction;
 | 
						|
 | 
						|
    // If valid, this bitmap is drawn as is.
 | 
						|
    wxBitmap m_bitmap;
 | 
						|
 | 
						|
    // The title and main message to draw, used if m_bitmap is invalid.
 | 
						|
    wxString m_title,
 | 
						|
             m_message;
 | 
						|
 | 
						|
    // Start and stop gradient colours, only used when drawing text.
 | 
						|
    wxColour m_colStart,
 | 
						|
             m_colEnd;
 | 
						|
 | 
						|
    wxDECLARE_EVENT_TABLE();
 | 
						|
 | 
						|
    wxDECLARE_NO_COPY_CLASS(wxBannerWindow);
 | 
						|
};
 | 
						|
 | 
						|
#endif // wxUSE_BANNERWINDOW
 | 
						|
 | 
						|
#endif // _WX_BANNERWINDOW_H_
 |