File Coverage

blib/lib/Wx/DemoModules/lib/DataObjects.pm
Criterion Covered Total %
statement 1 3 33.3
branch n/a
condition n/a
subroutine 1 1 100.0
pod n/a
total 2 4 50.0


line stmt bran cond sub pod time code
1             #############################################################################
2             ## Name: lib/Wx/DemoModules/lib/DataObjects.pm
3             ## Purpose: wxPerl demo helper
4             ## Author: Mattia Barbon
5             ## Modified by:
6             ## Created: 12/09/2001
7             ## RCS-ID: $Id: DataObjects.pm 2189 2007-08-21 18:15:31Z mbarbon $
8             ## Copyright: (c) 2001, 2006 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             #############################################################################
12              
13 1     1   2082 use Wx::DND;
  0            
  0            
14              
15             package Wx::DemoModules::lib::DataObjects;
16              
17             use strict;
18             use base qw(Exporter); # for Perl 5.8.1 or earlier
19              
20             use Wx qw(:brush :pen :bitmap);
21              
22             our @EXPORT = qw(get_image get_perl_data_object get_bitmap_data_object
23             get_text_data_object get_text_bitmap_data_object);
24              
25             sub get_image {
26             my $bitmap = Wx::Bitmap->new( 100, 100 );
27             my $dc = Wx::MemoryDC->new;
28             $dc->SelectObject( $bitmap );
29              
30             my @brushes = ( wxWHITE_BRUSH, wxBLUE_BRUSH, wxGREEN_BRUSH,
31             wxGREY_BRUSH, wxCYAN_BRUSH );
32             $dc->SetBrush( @brushes[rand(5)] );
33             $dc->DrawRectangle( 0, 0, 100, 100 );
34              
35             $dc->SetPen( wxBLACK_PEN );
36             $dc->SetBrush( new Wx::Brush( 'yellow', wxSOLID ) );
37              
38             $dc->DrawEllipse( 1, 1, 98, 98 );
39              
40             $dc->SetBrush( wxWHITE_BRUSH );
41             $dc->DrawEllipse( 20, 20, 25, 25 );
42             $dc->DrawEllipse( 100 - 45, 20, 25, 25 );
43              
44             $dc->SelectObject( wxNullBitmap );
45              
46             return $bitmap;
47             }
48              
49             sub get_bitmap_data_object {
50             return Wx::BitmapDataObject->new( get_image() );
51             }
52              
53             sub get_text_data_object {
54             return Wx::TextDataObject->new( "Hello, wxPerl!" );
55             }
56              
57             sub get_text_bitmap_data_object {
58             my $data = Wx::DataObjectComposite->new;
59             my $text = <
60             This is a yellow face.
61             EOT
62             $text =~ s/\n/\r\n/g;
63              
64             $data->Add( Wx::TextDataObject->new( $text ) );
65             $data->Add( Wx::BitmapDataObject->new( get_image() ), 1 );
66              
67             return $data;
68             }
69              
70             sub get_perl_data_object {
71             return Wx::DemoModules::lib::DataObjects::Perl->new( @_ );
72             }
73              
74             package Wx::DemoModules::lib::DataObjects::Perl;
75              
76             use strict;
77             use base qw(Wx::PlDataObjectSimple);
78              
79             use Storable qw(freeze thaw);
80              
81             sub new {
82             my( $class, $data ) = @_;
83             my $self = $class->SUPER::new( Wx::DataFormat->newUser( __PACKAGE__ ) );
84             $self->{Data} = $data;
85             return $self;
86             }
87              
88             sub SetData {
89             my( $self, $data ) = @_;
90             $self->{Data} = thaw $data ;
91             return 1;
92             }
93              
94             sub GetDataHere {
95             my ($self) = @_;
96             return freeze $self->{Data} if ref $self->{Data};
97             }
98              
99             sub GetDataSize {
100             my( $self ) = @_;
101             return length freeze $self->{Data} if ref $self->{Data};
102             }
103              
104             sub GetPerlData { $_[0]->{Data} }
105              
106             1;