summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2010-12-22 15:54:28 +0000
committerdakkar <dakkar@thenautilus.net>2010-12-22 15:54:28 +0000
commite501dd58735628a153765ff12d2aea1718535231 (patch)
tree16b5bd3a64e94b54ed0edbccae6ee1a4a437c76e
parentfont choice, and proper vertical rendering (diff)
downloadqr-builder-e501dd58735628a153765ff12d2aea1718535231.tar.gz
qr-builder-e501dd58735628a153765ff12d2aea1718535231.tar.bz2
qr-builder-e501dd58735628a153765ff12d2aea1718535231.zip
center in both directions
-rw-r--r--lib/GridFiller/Result/Pango.pm18
1 files 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);
}