package Catalyst::View::WxPrintout; use warnings; use strict; no strict 'refs'; use base qw/Catalyst::View/; use Wx::Print; our $VERSION = "0.02_05"; =head1 NAME Catalyst::View::WxPrintout - WxPrintout View Class =head1 SYNOPSIS UNUSABLE YET :) =cut sub new { my ( $class, $c, $arguments ) = @_; my $self = bless {}, $class; return $self; } sub process { my ($self, $c) = @_; my $module = $c->stash->{'class'}; if (defined $self->config->{NAMESPACE}) { $module = $self->config->{NAMESPACE}.'::'.$module; } unless (Class::Inspector->loaded($module)) { require Class::Inspector->filename($module); } if (my $code = $module->can('new')) { eval { $self->{'canvas'} = $code->($module); }; die $@ if $@; } # $printer->Print( undef, $printout, 0 ); # # $printout->Destroy; return; } sub DESTROY { my ($self) = shift; } package Catalyst::View::WxPrintout::printout; use strict; use base qw(Wx::Printout); sub new { my $class = shift; my $canvas = shift; my $this = $class->SUPER::new( @_ ); $this->{'canvas'} = $canvas; return $this; } sub GetPageInfo { my $this = shift; # Wx::LogMessage( "GetPageInfo" ); return ( 1, 2, 1, 2 ); } sub HasPage { my $this = shift; # Wx::LogMessage( "HasPage: %d", $_[0] ); return $_[0] == 1 || $_[0] == 2; } sub OnBeginDocument { my $this = shift; # Wx::LogMessage( "OnBeginDocument: %d, %d", @_ ); return $this->SUPER::OnBeginDocument( @_ ); } sub OnEndDocument { my $this = shift; # Wx::LogMessage( "OnEndDocument" ); return $this->SUPER::OnEndDocument(); } sub OnBeginPrinting { my $this = shift; # Wx::LogMessage( "OnBeginPrinting" ); return $this->SUPER::OnBeginPrinting(); } sub OnEndPrinting { my $this = shift; # Wx::LogMessage( "OnEndPrinting" ); return $this->SUPER::OnEndPrinting(); } sub OnPrintPage { my( $this, $page ) = @_; my $dc = $this->GetDC(); # we need to set the appropriate scale my( $x_size, $y_size ) = ( 80, 80); my( $xmargin, $ymargin ) = ( 0, 0 ); # total size ( borders on top/bottom, left/right ) my( $xsize, $ysize ) = ( $x_size + 2 * $xmargin, $y_size + 2 * $ymargin ); # dc size my( $xdc, $ydc ) = $dc->GetSizeWH(); # calculate the scale my( $xscale, $yscale ) = ( $xdc / $xsize, $ydc / $ysize ); my $scale = ( $xscale < $yscale ) ? $xscale : $yscale; # center the image my( $xoff, $yoff ) = ( ( $xdc - ( $scale * $x_size ) ) / 2.0, ( $ydc - ( $scale * $y_size ) ) / 2.0 ); print $dc."\n"; print ref($dc)."\n"; print " $scale, $scale \n"; print " $xoff, $yoff \n"; # set the DC origin / scale $dc->SetUserScale( $scale, $scale ); $dc->SetDeviceOrigin( $xoff, $yoff ); if( $page == 1 ) { $this->{'canvas'}->OnDraw( $dc ); } if( $page == 2 ) { } # empty page } =head1 AUTHORS Eriam Schaffter, C =head1 COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1;