From e501dd58735628a153765ff12d2aea1718535231 Mon Sep 17 00:00:00 2001 From: dakkar Date: Wed, 22 Dec 2010 15:54:28 +0000 Subject: center in both directions --- lib/GridFiller/Result/Pango.pm | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/GridFiller/Result/Pango.pm b/lib/GridFiller/Result/Pango.pm index a1df972..47a08c0 100644 --- a/lib/GridFiller/Result/Pango.pm +++ b/lib/GridFiller/Result/Pango.pm @@ -192,10 +192,14 @@ sub string_height { sub _center_adj { my ($self,$p) = @_; - my ($w) = $p->get_pixel_size; + my ($w,$h) = $p->get_pixel_size; my $size = $self->cell_size; - my $rounded = ceil($w/$size)*$size; - return +($rounded-$w)/2; + my $w_rounded = ceil($w/$size)*$size; + + my $w_adj = ceil(($w_rounded-$w)/2); + my $h_adj = ceil(($size - $h)/2); + + return $w_adj,$h_adj; } sub colour_for_string { @@ -222,17 +226,19 @@ sub place_word_at { my $cr = $self->_cairo_c; $x*=$size;$y*=$size; - my $adjustment = $self->_center_adj($p); + my ($w_adjustment,$h_adjustment) = $self->_center_adj($p); $cr->save; if ($dir == $HORIZONTAL) { - $x+=$adjustment; + $x+=$w_adjustment; + $y+=$h_adjustment; $cr->move_to($x,$y); } else { $p->get_context->set_base_gravity('east'); $p->context_changed; - $y+=$adjustment; + $y+=$w_adjustment; + $x-=$h_adjustment; $cr->move_to($x+$size,$y); $cr->rotate($PI/2); } -- cgit v1.2.3