hopefully improving sizes.
This commit is contained in:
parent
bb0b48dc2f
commit
30ed9e61df
@ -40,46 +40,46 @@ sub _build__db_all_printings ($self) {
|
||||
sub from_text ( $self, $text ) {
|
||||
my $promise = Mojo::Promise->new;
|
||||
{
|
||||
my @lines = split /\n+/, $text;
|
||||
@lines = grep { $self->_filter_lines($_); } @lines;
|
||||
if ( scalar @lines > $MAX_CARDS ) {
|
||||
$promise->reject($ERR_TOO_MANY_CARDS);
|
||||
next;
|
||||
}
|
||||
my @cards = map { s/^\s*(.*?)\s*$/$1/; $self->_parse_card($_) } @lines;
|
||||
my $n_cards = 0;
|
||||
for my $card (@cards) {
|
||||
$n_cards += $card->{quantity};
|
||||
}
|
||||
if ( $n_cards > $MAX_CARDS ) {
|
||||
$promise->reject($ERR_TOO_MANY_CARDS);
|
||||
next;
|
||||
}
|
||||
eval {
|
||||
@cards = map { $self->_fill_scryfall_id($_) } @cards;
|
||||
};
|
||||
if ($@) {
|
||||
$promise->reject($@);
|
||||
next;
|
||||
}
|
||||
$self->_get_cards_images( \@cards )->then(
|
||||
sub ($images) {
|
||||
my $real_number_of_cards = 0;
|
||||
for my $card (@cards) {
|
||||
$real_number_of_cards += $card->{quantity} * scalar
|
||||
keys $images->{ $card->{scryfallId} }->%*;
|
||||
}
|
||||
if ( $real_number_of_cards > $MAX_CARDS ) {
|
||||
$promise->reject($ERR_TOO_MANY_CARDS);
|
||||
}
|
||||
my $pdf = $self->_generate_pdf( \@cards, $images );
|
||||
$promise->resolve($pdf);
|
||||
my @lines = split /\n+/, $text;
|
||||
@lines = grep { $self->_filter_lines($_); } @lines;
|
||||
if ( scalar @lines > $MAX_CARDS ) {
|
||||
$promise->reject($ERR_TOO_MANY_CARDS);
|
||||
next;
|
||||
}
|
||||
)->catch(
|
||||
sub ($err) {
|
||||
$promise->reject($err);
|
||||
my @cards = map { s/^\s*(.*?)\s*$/$1/; $self->_parse_card($_) } @lines;
|
||||
my $n_cards = 0;
|
||||
for my $card (@cards) {
|
||||
$n_cards += $card->{quantity};
|
||||
}
|
||||
);
|
||||
if ( $n_cards > $MAX_CARDS ) {
|
||||
$promise->reject($ERR_TOO_MANY_CARDS);
|
||||
next;
|
||||
}
|
||||
eval {
|
||||
@cards = map { $self->_fill_scryfall_id($_) } @cards;
|
||||
};
|
||||
if ($@) {
|
||||
$promise->reject($@);
|
||||
next;
|
||||
}
|
||||
$self->_get_cards_images( \@cards )->then(
|
||||
sub ($images) {
|
||||
my $real_number_of_cards = 0;
|
||||
for my $card (@cards) {
|
||||
$real_number_of_cards += $card->{quantity} * scalar
|
||||
keys $images->{ $card->{scryfallId} }->%*;
|
||||
}
|
||||
if ( $real_number_of_cards > $MAX_CARDS ) {
|
||||
$promise->reject($ERR_TOO_MANY_CARDS);
|
||||
}
|
||||
my $pdf = $self->_generate_pdf( \@cards, $images );
|
||||
$promise->resolve($pdf);
|
||||
}
|
||||
)->catch(
|
||||
sub ($err) {
|
||||
$promise->reject($err);
|
||||
}
|
||||
);
|
||||
}
|
||||
return $promise;
|
||||
}
|
||||
@ -90,7 +90,7 @@ sub _generate_pdf ( $self, $cards, $images ) {
|
||||
my $page = $pdf->page;
|
||||
$page->size('A4');
|
||||
my @rectangle = $page->size;
|
||||
my $width_paper = $rectangle[2];
|
||||
my $width_paper = $rectangle[2];
|
||||
my $n_pixels_per_cm = $width_paper / 21.0;
|
||||
for my $card (@$cards) {
|
||||
my $images_card = $images->{ $card->{scryfallId} };
|
||||
@ -101,28 +101,28 @@ sub _generate_pdf ( $self, $cards, $images ) {
|
||||
$page = $pdf->page;
|
||||
$page->size('A4');
|
||||
}
|
||||
my $margin_bottom = 25;
|
||||
my $mtg_card_width = 6.35;
|
||||
my $mtg_card_height = 8.89;
|
||||
my $margin_bottom = 25;
|
||||
my $mtg_card_width = 6.35;
|
||||
my $mtg_card_height = 8.89;
|
||||
my $small_line_to_cut_better_size = 0.5;
|
||||
my $margin_left = (
|
||||
$width_paper
|
||||
- ($mtg_card_width * 3)
|
||||
- ($small_line_to_cut_better_size * 2)
|
||||
) / 2;
|
||||
open my $fh, '<', \$images_card->{$image_kind};
|
||||
my $image = $pdf->image( $fh, format => 'jpeg' );
|
||||
my $image = $pdf->image( $fh, format => 'jpeg' );
|
||||
my $margin_left =
|
||||
( $width_paper -
|
||||
( $n_pixels_per_cm * $mtg_card_width * 3 ) -
|
||||
( $small_line_to_cut_better_size * 2 ) ) / 2;
|
||||
my $page_position_x = $number_image % 3;
|
||||
my $page_position_y = abs( int( $number_image / 3 ) - 2 );
|
||||
$page->object(
|
||||
$image,
|
||||
$margin_bottom +
|
||||
$margin_left +
|
||||
$page_position_x * $mtg_card_width * $n_pixels_per_cm +
|
||||
$small_line_to_cut_better_size * $page_position_x,
|
||||
$margin_bottom +
|
||||
$page_position_y * $mtg_card_height * $n_pixels_per_cm +
|
||||
$small_line_to_cut_better_size * $page_position_x,
|
||||
$small_line_to_cut_better_size * $page_position_y,
|
||||
$n_pixels_per_cm * $mtg_card_width,
|
||||
$n_pixels_per_cm * $mtg_card_height,
|
||||
);
|
||||
$number_image++;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user