The fellow that writes the GD interface to PDL, PDL::IO::GD, (Judd Taylor) has upgraded the PDL cvs to fix the module to use FreeType fonts. SO... yippie... you can do away with the
writing of the temp 2d image files to disk, and use inline memory images.
To get the cvs version of PDL
cvs -z3 -d:pserver:anonymous@pdl.cvs.sourceforge.net:/cvsroot/pdl co
+-P PDL
then there will be a PDL directory in your homedir.
If built succesfully, the following improved image cube will run. Generic.ttf is any truetype font file in the local dir. I copied arial.ttf in.
#!/usr/bin/perl
use warnings;
use strict;
use PDL::LiteF;
use PDL::Graphics::TriD; # Need this to display
use PDL::NiceSlice;
use PDL::IO::GD;
my $image = PDL::IO::GD->new( { x => 200, y => 200, true_color => 1 }
+);
# Allocate some colors:
#
my $black = $image->ColorAllocate( 0, 0, 0 );
my $white = $image->ColorAllocate( 255, 255, 255 );
my $red = $image->ColorAllocate( 255, 0, 0 );
my $green = $image->ColorAllocate( 0, 255, 0 );
my $blue = $image->ColorAllocate( 0, 0, 255 );
my $yellow = $image->ColorAllocate( 255, 255, 0 );
my $grey = $image->ColorAllocate( 200, 200, 200 );
my %pdls;
my %color = (
1 => [ 'white', $white ],
2 => [ 'red', $red ],
3 => [ 'green', $green ],
4 => [ 'blue', $blue ],
5 => [ 'yellow', $yellow ],
6 => [ 'grey', $grey ],
);
foreach my $num ( keys %color ) {
$image->FilledRectangle( 0, 0, 200, 200, $color{ $num }[ 1 ] );
# Add some text:
my @brect;
$image->StringFT( \@brect, $black, "./Generic.ttf", 120, 0, 50, 150
+, $num );
$pdls{ $num } = $image->to_pdl();
}
nokeeptwiddling3d();
hold3d();
# side 1 of space
imagrgb3d $pdls{ 1 }->mv( 2, 0 )->( :, -1 : 0, : )->float / 256,
{ Points => [ [ 0, 0, 1 ], [ 0, 0, 0 ], [ 1, 0, 0 ], [ 1, 0, 1 ] ] };
#side 2 of space
imagrgb3d $pdls{ 2 }->mv( 2, 0 )->( :, -1 : 0, : )->float / 256,
{ Points => [ [ 0, 1, 0 ], [ 1, 1, 0 ], [ 1, 0, 0 ], [ 0, 0, 0 ] ] };
#side 3 of space
imagrgb3d $pdls{ 3 }->mv( 2, 0 )->( :, -1 : 0, : )->float / 256,
{ Points => [ [ 1, 1, 0 ], [ 1, 1, 1 ], [ 1, 0, 1 ], [ 1, 0, 0 ] ] };
#side 4 of space
imagrgb3d $pdls{ 4 }->mv( 2, 0 )->( :, -1 : 0, : )->float / 256,
{ Points => [ [ 1, 1, 1 ], [ 0, 1, 1 ], [ 0, 0, 1 ], [ 1, 0, 1 ] ] };
+ #good
#side 5 of space
imagrgb3d $pdls{ 5 }->mv( 2, 0 )->( :, -1 : 0, : )->float / 256,
# {Points => [[0,0,0],[0,0,1],[0,1,1],[0,1,0]]};
{ Points => [ [ 0, 1, 1 ], [ 0, 1, 0 ], [ 0, 0, 0 ], [ 0, 0, 1 ] ] };
#side 6 of space
imagrgb3d $pdls{ 6 }->mv( 2, 0 )->( :, -1 : 0, : )->float / 256,
{ Points => [ [ 1, 1, 1 ], [ 1, 1, 0 ], [ 0, 1, 0 ], [ 0, 1, 1 ] ] };
keeptwiddling3d();
twiddle3d();
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.