#############################################################################
## Name: ext/ribbon/XS/RibbonArtProvider.xsp
## Purpose: XS++ for Wx::RibbonArtProvider
## Author: Mark Dootson
## Modified by:
## Created: 04/03/2012
## RCS-ID: $Id: $
## Copyright: (c) 2012 Mattia Barbon
## Licence: This program is free software; you can redistribute it and/or
## modify it under the same terms as Perl itself
#############################################################################
%module{Wx};
#if WXPERL_W_VERSION_GE( 2, 9, 3 ) && wxUSE_RIBBON
%loadplugin{build::Wx::XSP::Enum};
%EnumExportTag{ribbonart};
enum wxRibbonArtSetting
{
wxRIBBON_ART_TAB_SEPARATION_SIZE,
wxRIBBON_ART_PAGE_BORDER_LEFT_SIZE,
wxRIBBON_ART_PAGE_BORDER_TOP_SIZE,
wxRIBBON_ART_PAGE_BORDER_RIGHT_SIZE,
wxRIBBON_ART_PAGE_BORDER_BOTTOM_SIZE,
wxRIBBON_ART_PANEL_X_SEPARATION_SIZE,
wxRIBBON_ART_PANEL_Y_SEPARATION_SIZE,
wxRIBBON_ART_TOOL_GROUP_SEPARATION_SIZE,
wxRIBBON_ART_GALLERY_BITMAP_PADDING_LEFT_SIZE,
wxRIBBON_ART_GALLERY_BITMAP_PADDING_RIGHT_SIZE,
wxRIBBON_ART_GALLERY_BITMAP_PADDING_TOP_SIZE,
wxRIBBON_ART_GALLERY_BITMAP_PADDING_BOTTOM_SIZE,
wxRIBBON_ART_PANEL_LABEL_FONT,
wxRIBBON_ART_BUTTON_BAR_LABEL_FONT,
wxRIBBON_ART_TAB_LABEL_FONT,
wxRIBBON_ART_BUTTON_BAR_LABEL_COLOUR,
wxRIBBON_ART_BUTTON_BAR_HOVER_BORDER_COLOUR,
wxRIBBON_ART_BUTTON_BAR_HOVER_BACKGROUND_TOP_COLOUR,
wxRIBBON_ART_BUTTON_BAR_HOVER_BACKGROUND_TOP_GRADIENT_COLOUR,
wxRIBBON_ART_BUTTON_BAR_HOVER_BACKGROUND_COLOUR,
wxRIBBON_ART_BUTTON_BAR_HOVER_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_BUTTON_BAR_ACTIVE_BORDER_COLOUR,
wxRIBBON_ART_BUTTON_BAR_ACTIVE_BACKGROUND_TOP_COLOUR,
wxRIBBON_ART_BUTTON_BAR_ACTIVE_BACKGROUND_TOP_GRADIENT_COLOUR,
wxRIBBON_ART_BUTTON_BAR_ACTIVE_BACKGROUND_COLOUR,
wxRIBBON_ART_BUTTON_BAR_ACTIVE_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_GALLERY_BORDER_COLOUR,
wxRIBBON_ART_GALLERY_HOVER_BACKGROUND_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_BACKGROUND_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_BACKGROUND_TOP_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_FACE_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_HOVER_BACKGROUND_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_HOVER_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_HOVER_BACKGROUND_TOP_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_HOVER_FACE_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_ACTIVE_BACKGROUND_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_ACTIVE_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_ACTIVE_BACKGROUND_TOP_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_ACTIVE_FACE_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_DISABLED_BACKGROUND_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_DISABLED_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_DISABLED_BACKGROUND_TOP_COLOUR,
wxRIBBON_ART_GALLERY_BUTTON_DISABLED_FACE_COLOUR,
wxRIBBON_ART_GALLERY_ITEM_BORDER_COLOUR,
wxRIBBON_ART_TAB_LABEL_COLOUR,
wxRIBBON_ART_TAB_SEPARATOR_COLOUR,
wxRIBBON_ART_TAB_SEPARATOR_GRADIENT_COLOUR,
wxRIBBON_ART_TAB_CTRL_BACKGROUND_COLOUR,
wxRIBBON_ART_TAB_CTRL_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_TAB_HOVER_BACKGROUND_TOP_COLOUR,
wxRIBBON_ART_TAB_HOVER_BACKGROUND_TOP_GRADIENT_COLOUR,
wxRIBBON_ART_TAB_HOVER_BACKGROUND_COLOUR,
wxRIBBON_ART_TAB_HOVER_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_TAB_ACTIVE_BACKGROUND_TOP_COLOUR,
wxRIBBON_ART_TAB_ACTIVE_BACKGROUND_TOP_GRADIENT_COLOUR,
wxRIBBON_ART_TAB_ACTIVE_BACKGROUND_COLOUR,
wxRIBBON_ART_TAB_ACTIVE_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_TAB_BORDER_COLOUR,
wxRIBBON_ART_PANEL_BORDER_COLOUR,
wxRIBBON_ART_PANEL_BORDER_GRADIENT_COLOUR,
wxRIBBON_ART_PANEL_MINIMISED_BORDER_COLOUR,
wxRIBBON_ART_PANEL_MINIMISED_BORDER_GRADIENT_COLOUR,
wxRIBBON_ART_PANEL_LABEL_BACKGROUND_COLOUR,
wxRIBBON_ART_PANEL_LABEL_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_PANEL_LABEL_COLOUR,
wxRIBBON_ART_PANEL_HOVER_LABEL_BACKGROUND_COLOUR,
wxRIBBON_ART_PANEL_HOVER_LABEL_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_PANEL_HOVER_LABEL_COLOUR,
wxRIBBON_ART_PANEL_MINIMISED_LABEL_COLOUR,
wxRIBBON_ART_PANEL_ACTIVE_BACKGROUND_TOP_COLOUR,
wxRIBBON_ART_PANEL_ACTIVE_BACKGROUND_TOP_GRADIENT_COLOUR,
wxRIBBON_ART_PANEL_ACTIVE_BACKGROUND_COLOUR,
wxRIBBON_ART_PANEL_ACTIVE_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_PAGE_BORDER_COLOUR,
wxRIBBON_ART_PAGE_BACKGROUND_TOP_COLOUR,
wxRIBBON_ART_PAGE_BACKGROUND_TOP_GRADIENT_COLOUR,
wxRIBBON_ART_PAGE_BACKGROUND_COLOUR,
wxRIBBON_ART_PAGE_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_PAGE_HOVER_BACKGROUND_TOP_COLOUR,
wxRIBBON_ART_PAGE_HOVER_BACKGROUND_TOP_GRADIENT_COLOUR,
wxRIBBON_ART_PAGE_HOVER_BACKGROUND_COLOUR,
wxRIBBON_ART_PAGE_HOVER_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_TOOLBAR_BORDER_COLOUR,
wxRIBBON_ART_TOOLBAR_HOVER_BORDER_COLOUR,
wxRIBBON_ART_TOOLBAR_FACE_COLOUR,
wxRIBBON_ART_TOOL_BACKGROUND_TOP_COLOUR,
wxRIBBON_ART_TOOL_BACKGROUND_TOP_GRADIENT_COLOUR,
wxRIBBON_ART_TOOL_BACKGROUND_COLOUR,
wxRIBBON_ART_TOOL_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_TOOL_HOVER_BACKGROUND_TOP_COLOUR,
wxRIBBON_ART_TOOL_HOVER_BACKGROUND_TOP_GRADIENT_COLOUR,
wxRIBBON_ART_TOOL_HOVER_BACKGROUND_COLOUR,
wxRIBBON_ART_TOOL_HOVER_BACKGROUND_GRADIENT_COLOUR,
wxRIBBON_ART_TOOL_ACTIVE_BACKGROUND_TOP_COLOUR,
wxRIBBON_ART_TOOL_ACTIVE_BACKGROUND_TOP_GRADIENT_COLOUR,
wxRIBBON_ART_TOOL_ACTIVE_BACKGROUND_COLOUR,
wxRIBBON_ART_TOOL_ACTIVE_BACKGROUND_GRADIENT_COLOUR,
};
%name{Wx::RibbonArtProvider} class wxRibbonArtProvider
{
%{
static void
wxRibbonArtProvider::CLONE()
CODE:
wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
%}
public:
virtual wxRibbonArtProvider* Clone() const; /* = 0 %Virtual{pure}; */
virtual void SetFlags(long flags); /* = 0 %Virtual{pure}; */
virtual long GetFlags() const; /* = 0 %Virtual{pure}; */
virtual int GetMetric(int id) const; /* = 0 %Virtual{pure}; */
virtual void SetMetric(int id, int new_val); /* = 0 %Virtual{pure}; */
virtual void SetFont(int id, const wxFont& font); /* = 0 %Virtual{pure}; */
virtual wxFont GetFont(int id) const; /* = 0 %Virtual{pure}; */
virtual wxColour GetColour(int id) const; /* = 0 %Virtual{pure}; */
virtual void SetColour(int id, const wxColour& colour); /* = 0 %Virtual{pure}; */
/* virtual void GetColourScheme(wxColour* primary,
wxColour* secondary,
wxColour* tertiary) const; */ /* = 0 %Virtual{pure}; */
%{
void
wxRibbonArtProvider::GetColourScheme()
PPCODE:
wxColour* primary = new wxColour();
wxColour* secondary = new wxColour();
wxColour* tertiary = new wxColour();
THIS->GetColourScheme( primary, secondary, tertiary);
EXTEND( SP, 3 );
SV* pret = sv_newmortal();
SV* sret = sv_newmortal();
SV* tret = sv_newmortal();
PUSHs( wxPli_non_object_2_sv( aTHX_ pret, primary, "Wx::Colour" ) );
PUSHs( wxPli_non_object_2_sv( aTHX_ sret, secondary, "Wx::Colour" ) );
PUSHs( wxPli_non_object_2_sv( aTHX_ tret, tertiary, "Wx::Colour" ) );
wxPli_thread_sv_register( aTHX_ "Wx::Colour", &primary, pret );
wxPli_thread_sv_register( aTHX_ "Wx::Colour", &secondary, sret );
wxPli_thread_sv_register( aTHX_ "Wx::Colour", &tertiary, tret );
%}
virtual void SetColourScheme(const wxColour& primary,
const wxColour& secondary,
const wxColour& tertiary); /* = 0 %Virtual{pure}; */
/* virtual void DrawTabCtrlBackground(
wxDC& dc,
wxWindow* wnd,
const wxRect& rect); */ /* = 0 %Virtual{pure}; */
/* virtual void DrawTab(wxDC& dc,
wxWindow* wnd,
const wxRibbonPageTabInfo& tab); */ /* = 0 %Virtual{pure}; */
/* virtual void DrawTabSeparator(wxDC& dc,
wxWindow* wnd,
const wxRect& rect,
double visibility); */ /* = 0 %Virtual{pure}; */
/* virtual void DrawPageBackground(
wxDC& dc,
wxWindow* wnd,
const wxRect& rect); */ /* = 0 %Virtual{pure}; */
/* virtual void DrawScrollButton(
wxDC& dc,
wxWindow* wnd,
const wxRect& rect,
long style); */ /* = 0 %Virtual{pure}; */
/* virtual void DrawPanelBackground(
wxDC& dc,
wxRibbonPanel* wnd,
const wxRect& rect); */ /* = 0 %Virtual{pure}; */
/* virtual void DrawGalleryBackground(
wxDC& dc,
wxRibbonGallery* wnd,
const wxRect& rect); */ /* = 0 %Virtual{pure}; */
/* virtual void DrawGalleryItemBackground(
wxDC& dc,
wxRibbonGallery* wnd,
const wxRect& rect,
wxRibbonGalleryItem* item); */ /* = 0 %Virtual{pure}; */
/* virtual void DrawMinimisedPanel(
wxDC& dc,
wxRibbonPanel* wnd,
const wxRect& rect,
wxBitmap& bitmap); */ /* = 0 %Virtual{pure}; */
/* virtual void DrawButtonBarBackground(
wxDC& dc,
wxWindow* wnd,
const wxRect& rect); */ /* = 0 %Virtual{pure}; */
/* virtual void DrawButtonBarButton(
wxDC& dc,
wxWindow* wnd,
const wxRect& rect,
wxRibbonButtonBarButtonKind kind,
long state,
const wxString& label,
const wxBitmap& bitmap_large,
const wxBitmap& bitmap_small); */ /* = 0 %Virtual{pure}; */
/* virtual void DrawToolBarBackground(
wxDC& dc,
wxWindow* wnd,
const wxRect& rect); */ /* = 0 %Virtual{pure}; */
/* virtual void DrawToolGroupBackground(
wxDC& dc,
wxWindow* wnd,
const wxRect& rect); */ /* = 0 %Virtual{pure}; */
/*
virtual void DrawTool(
wxDC& dc,
wxWindow* wnd,
const wxRect& rect,
const wxBitmap& bitmap,
wxRibbonButtonKind kind,
long state); */ /* = 0 %Virtual{pure}; */
/* virtual void GetBarTabWidth(
wxDC& dc,
wxWindow* wnd,
const wxString& label,
const wxBitmap& bitmap,
int* ideal,
int* small_begin_need_separator,
int* small_must_have_separator,
int* minimum); */ /* = 0 %Virtual{pure}; */
/* virtual int GetTabCtrlHeight(
wxDC& dc,
wxWindow* wnd,
const wxRibbonPageTabInfoArray& pages); */ /* = 0 %Virtual{pure}; */
/* virtual wxSize GetScrollButtonMinimumSize(
wxDC& dc,
wxWindow* wnd,
long style); */ /* = 0 %Virtual{pure}; */
/* virtual wxSize GetPanelSize(
wxDC& dc,
const wxRibbonPanel* wnd,
wxSize client_size,
wxPoint* client_offset); */ /* = 0 %Virtual{pure}; */
/* virtual wxSize GetPanelClientSize(
wxDC& dc,
const wxRibbonPanel* wnd,
wxSize size,
wxPoint* client_offset); */ /* = 0 %Virtual{pure}; */
/* virtual wxSize GetGallerySize(
wxDC& dc,
const wxRibbonGallery* wnd,
wxSize client_size); */ /* = 0 %Virtual{pure}; */
/* virtual wxSize GetGalleryClientSize(
wxDC& dc,
const wxRibbonGallery* wnd,
wxSize size,
wxPoint* client_offset,
wxRect* scroll_up_button,
wxRect* scroll_down_button,
wxRect* extension_button); */ /* = 0 %Virtual{pure}; */
/* virtual wxRect GetPageBackgroundRedrawArea(
wxDC& dc,
const wxRibbonPage* wnd,
wxSize page_old_size,
wxSize page_new_size); */ /* = 0 %Virtual{pure}; */
/* virtual bool GetButtonBarButtonSize(
wxDC& dc,
wxWindow* wnd,
wxRibbonButtonBarButtonKind kind,
wxRibbonButtonBarButtonState size,
const wxString& label,
wxSize bitmap_size_large,
wxSize bitmap_size_small,
wxSize* button_size,
wxRect* normal_region,
wxRect* dropdown_region); */ /* = 0 %Virtual{pure}; */
/* virtual wxSize GetMinimisedPanelMinimumSize(
wxDC& dc,
const wxRibbonPanel* wnd,
wxSize* desired_bitmap_size,
wxDirection* expanded_panel_direction); */ /* = 0 %Virtual{pure}; */
/* virtual wxSize GetToolSize(
wxDC& dc,
wxWindow* wnd,
wxSize bitmap_size,
wxRibbonButtonKind kind,
bool is_first,
bool is_last,
wxRect* dropdown_region); */ /* = 0 %Virtual{pure}; */
};
%name{Wx::RibbonMSWArtProvider} class wxRibbonMSWArtProvider : public %name{Wx::RibbonArtProvider} wxRibbonArtProvider
{
%{
static void
wxRibbonMSWArtProvider::CLONE()
CODE:
wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
%}
public:
wxRibbonMSWArtProvider(bool set_colour_scheme = true);
virtual ~wxRibbonMSWArtProvider()
%code%{ wxPli_thread_sv_unregister( aTHX_ wxPli_get_class( aTHX_ ST(0) ), THIS, ST(0) ); %};
wxRibbonArtProvider* Clone() const;
void SetFlags(long flags);
long GetFlags() const;
int GetMetric(int id) const;
void SetMetric(int id, int new_val);
void SetFont(int id, const wxFont& font);
wxFont GetFont(int id) const;
wxColour GetColour(int id) const;
void SetColour(int id, const wxColour& colour);
/* void GetColourScheme(wxColour* primary,
wxColour* secondary,
wxColour* tertiary) const; */
%{
void
wxRibbonMSWArtProvider::GetColourScheme()
PPCODE:
wxColour* primary = new wxColour();
wxColour* secondary = new wxColour();
wxColour* tertiary = new wxColour();
THIS->GetColourScheme( primary, secondary, tertiary);
EXTEND( SP, 3 );
SV* pret = sv_newmortal();
SV* sret = sv_newmortal();
SV* tret = sv_newmortal();
PUSHs( wxPli_non_object_2_sv( aTHX_ pret, primary, "Wx::Colour" ) );
PUSHs( wxPli_non_object_2_sv( aTHX_ sret, secondary, "Wx::Colour" ) );
PUSHs( wxPli_non_object_2_sv( aTHX_ tret, tertiary, "Wx::Colour" ) );
wxPli_thread_sv_register( aTHX_ "Wx::Colour", &primary, pret );
wxPli_thread_sv_register( aTHX_ "Wx::Colour", &secondary, sret );
wxPli_thread_sv_register( aTHX_ "Wx::Colour", &tertiary, tret );
%}
void SetColourScheme(const wxColour& primary,
const wxColour& secondary,
const wxColour& tertiary);
};
%name{Wx::RibbonAUIArtProvider} class wxRibbonAUIArtProvider : public %name{Wx::RibbonMSWArtProvider} wxRibbonMSWArtProvider
{
%{
static void
wxRibbonAUIArtProvider::CLONE()
CODE:
wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
%}
public:
wxRibbonAUIArtProvider();
virtual ~wxRibbonAUIArtProvider()
%code%{ wxPli_thread_sv_unregister( aTHX_ wxPli_get_class( aTHX_ ST(0) ), THIS, ST(0) ); %};
wxRibbonArtProvider* Clone() const;
wxColour GetColour(int id) const;
void SetColour(int id, const wxColour& colour);
void SetColourScheme(const wxColour& primary,
const wxColour& secondary,
const wxColour& tertiary);
void SetFont(int id, const wxFont& font);
};
#endif