From 8a025bcfabfca8b2e4aa0498902d034acd72df68 Mon Sep 17 00:00:00 2001 From: martinahansen Date: Thu, 3 Dec 2009 10:52:28 +0000 Subject: [PATCH] fixed inline PNG in Bbrowser git-svn-id: http://biopieces.googlecode.com/svn/trunk@793 74ccb610-7750-0410-82ae-013aeee3265d --- code_perl/Maasha/BBrowser/Draw.pm | 27 +++++++++++++++++++++++++++ code_perl/Maasha/KISS.pm | 2 ++ www/index.cgi | 8 +++----- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/code_perl/Maasha/BBrowser/Draw.pm b/code_perl/Maasha/BBrowser/Draw.pm index c250ae9..d83ae2e 100644 --- a/code_perl/Maasha/BBrowser/Draw.pm +++ b/code_perl/Maasha/BBrowser/Draw.pm @@ -33,6 +33,7 @@ use strict; use Data::Dumper; use Cairo; use Pango; +use MIME::Base64; use vars qw( @ISA @EXPORT ); @@ -145,6 +146,32 @@ sub file_png } +sub base64_png +{ + # Martin A. Hansen, December 2009. + + # Extract a PNG stream from a Cairo::Surface object + # and convert it to base64 before returning it. + + my ( $surface, # Cairo::Surface object + ) = @_; + + # Returns a string. + + my ( $png_data, $callback, $base64 ); + + $png_data = ""; + + $callback = sub { $png_data .= $_[ 1 ] }; + + $surface->write_to_png_stream( $callback ); + + $base64 = MIME::Base64::encode_base64( $png_data ); + + return $base64; +} + + # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1; diff --git a/code_perl/Maasha/KISS.pm b/code_perl/Maasha/KISS.pm index d026767..a75ca57 100644 --- a/code_perl/Maasha/KISS.pm +++ b/code_perl/Maasha/KISS.pm @@ -301,6 +301,8 @@ sub kiss_index_offset } } + # Maasha::Common::error( "No offset" ) if not defined $offset; + return $offset; } diff --git a/www/index.cgi b/www/index.cgi index a8eabb3..b4ccffc 100755 --- a/www/index.cgi +++ b/www/index.cgi @@ -653,7 +653,7 @@ sub section_browse # Returns a list. - my ( @tracks, $i, @features, $feat, $elem, $file, $surface, $cr, @html, @img ); + my ( @tracks, $i, @features, $feat, $elem, $surface, $cr, $png_data, @html, @img ); push @features, [ Maasha::BBrowser::Track::track_ruler( $cookie ) ]; push @features, [ Maasha::BBrowser::Track::track_seq( $cookie ) ]; @@ -667,8 +667,6 @@ sub section_browse push @features, [ Maasha::BBrowser::Track::track_feature( $tracks[ $i ], $cookie ) ]; } - $file = "fisk.png"; # FIXME - $surface = Cairo::ImageSurface->create( 'argb32', $cookie->{ 'IMG_WIDTH' }, $cookie->{ 'TRACK_OFFSET' } ); $cr = Cairo::Context->create( $surface ); @@ -680,10 +678,10 @@ sub section_browse Maasha::BBrowser::Draw::draw_feature( $cr, $feat ) if $feat; } - Maasha::BBrowser::Draw::file_png( $surface, $file ); + $png_data = Maasha::BBrowser::Draw::base64_png( $surface ); push @img, Maasha::XHTML::img( - src => $file, + src => "data:image/png;base64,$png_data", alt => "Browser Tracks", height => $cookie->{ 'TRACK_OFFSET' }, width => $cookie->{ 'IMG_WIDTH' }, -- 2.39.5