1 /////////////////////////////////////////////////////////////////////////////
2 // Name: ext/grid/cpp/renderer.h
3 // Purpose: wxPlGridCellRenderer
4 // Author: Mattia Barbon
7 // RCS-ID: $Id: renderer.h 2057 2007-06-18 23:03:00Z mbarbon $
8 // Copyright: (c) 2003-2005 Mattia Barbon
9 // Licence: This program is free software; you can redistribute it and/or
10 // modify it under the same terms as Perl itself
11 /////////////////////////////////////////////////////////////////////////////
13 #include "cpp/v_cback.h"
15 #include <wx/clntdata.h>
16 #include "cpp/helpers.h"
18 class wxPlGridCellRenderer : public wxGridCellRenderer
21 wxPliVirtualCallback m_callback;
23 wxPlGridCellRenderer( const char* package )
24 : m_callback( "Wx::PlGridCellRenderer" )
26 m_callback.SetSelf( wxPli_make_object( this, package ), true );
29 virtual void Draw( wxGrid& grid,
38 if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, "Draw" ) )
43 SV* attr_sv = wxPli_non_object_2_sv( aTHX_ sv_newmortal(),
44 &attr, "Wx::GridCellAttr" );
45 SV* dc_sv = wxPli_object_2_sv( aTHX_ sv_newmortal(), &dc );
46 SV* rect_sv = wxPli_non_object_2_sv( aTHX_ sv_newmortal(),
47 (void*)&rect, "Wx::Rect" );
49 wxPliVirtualCallback_CallCallback
50 ( aTHX_ &m_callback, G_DISCARD|G_SCALAR, "Osssiib",
51 &grid, attr_sv, dc_sv, rect_sv, row, col, isSelected );
53 wxPli_detach_object( aTHX_ attr_sv );
54 wxPli_detach_object( aTHX_ dc_sv );
55 wxPli_detach_object( aTHX_ rect_sv );
62 virtual wxSize GetBestSize( wxGrid& grid,
69 if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, "GetBestSize" ) )
74 SV* attr_sv = wxPli_non_object_2_sv( aTHX_ sv_newmortal(),
75 &attr, "Wx::GridCellAttr" );
76 SV* dc_sv = wxPli_object_2_sv( aTHX_ sv_newmortal(), &dc );
78 SV* ret = wxPliVirtualCallback_CallCallback
79 ( aTHX_ &m_callback, G_SCALAR, "Ossii",
80 &grid, attr_sv, dc_sv, row, col );
81 wxSize size = *(wxSize*)wxPli_sv_2_object( aTHX_ ret, "Wx::Size" );
84 wxPli_detach_object( aTHX_ attr_sv );
85 wxPli_detach_object( aTHX_ dc_sv );
96 virtual wxGridCellRenderer *Clone() const
100 if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, "Clone" ) )
102 SV* ret = wxPliVirtualCallback_CallCallback
103 ( aTHX_ &m_callback, G_SCALAR, NULL );
104 wxGridCellRenderer* clone =
105 (wxGridCellRenderer*)wxPli_sv_2_object( aTHX_ ret, "Wx::GridCellRenderer" );