logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Games::Go::Sgf2Dg::Dg2PDF - convert Games::Go::Sgf2Dg::Diagrams to PDF

Bugs

       You think I'd admit it?

perl v5.30.0                                       2019-10-27                     Games::Go::Sgf2Dg::Dg2PDF(3pm)

Description

       A Games::Go::Sgf2Dg::Dg2PDF object converts a Games::Go::Sgf2Dg::Diagram object into a PDF file.

Methods

       $dg2pdf->configure (option => value, ?...?)
           Change Dg2PDF options from values passed at new time.

       my $coord = $dg2mp->diaCoords ($x, $y)
           Provides  access  to  the  diaCoords  option  (see  above).   Returns  coordinates in the converter's
           coordinate system for board coordinates ($x, $y).   For  example,  to  get  a  specific  intersection
           structure:

               my $int = $diagram->get($dg2mp->diaCoords(3, 4));

       $dg2pdf->print ($text ? , ... ?)
           prints  raw  PDF  code  to  file  as  defined  at  new  time.  Whether or not file was defined, print
           accumulates the PDF code for later retrieval with converted.

       $dg2pdf->printComment ($text ? , ... ?)
           Adds $text to the diagram comments.

       $dg2pdf->comment ($comment ? , ... ?)
           Inserts the PDF comment character ('%') in front of each line of each comment and prints it to file.

           Note that this is not the same as the printComment method.

       my $canvas = $dg2pdf->convertDiagram ($diagram)
           Converts a Games::Go::Sgf2Dg::Diagram into PDF.

       my $converted_text = $dg2pdf->convertText ($text)
           Converts $text into text for display.

           Returns the converted text.

       $title = $dg2pdf->convertGameProps (\%sgfHash)
           convertGameProps takes a reference to a hash of properties as extracted from an SGF file.  Each  hash
           key  is  a  property  ID  and  the  hash  value  is  a  reference  to  an  array  of property values:
           $hash->{propertyId}->[values].  The following SGF properties are recognized:

           . GN GameName
           . EV EVent
           . RO ROund
           . DT DaTe
           . PW PlayerWhite
           . WR WhiteRank
           . PB PlayerBlack
           . BR BlackRank
           . PC PlaCe
           . KM KoMi
           . RU RUles
           . TM TiMe
           . OT OverTime (byo-yomi)
           . RE REsult
           . AN ANnotator
           . SO Source
           . US USer (entered by)
           . CP CoPyright
           . GC GameComment

           Both long and short property names are recognized, and all unrecognized properties are  ignored  with
           no warnings.  Note that these properties are all intended as game-level notations.

       $dg2pdf->closeprints some final PDF code to the diagram and closes the pdf object (file).

Name

       Games::Go::Sgf2Dg::Dg2PDF - convert Games::Go::Sgf2Dg::Diagrams to PDF

New

       my $dg2pdf = Games::Go::Sgf2Dg::Dg2PDF->new (?options?)

       A new Games::Go::Sgf2Dg::Dg2PDF takes the following options:

       boardSizeX => number
       boardSizeY => number
               Sets the size of the board.

               Default: 19

       doubleDigits => true | false
               Numbers  on  stones are wrapped back to 1 after they reach 100.  Numbers associated with comments
               and diagram titles are not affected.

               Default: false

       coords => true | false
               Generates a coordinate grid.

               Default: false

       topLine     => number (Default: 1)
       bottomLine  => number (Default: 19)
       leftLine    => number (Default: 1)
       rightLine   => number (Default: 19)
               The edges of the board that should be displayed.  Any portion of the board  that  extends  beyond
               these numbers is not included in the output.

       diaCoords => sub { # convert $x, $y to Diagram coordinates }
               This callback defines a subroutine to convert coordinates from $x, $y to whatever coordinates are
               used  in the Games::Go::Sgf2Dg::Diagram object.  The default diaCoords converts 1-based $x, $y to
               the same coordinates used in SGF format files.  You only need to define this if  you're  using  a
               different coordinate system in the Diagram.

               Default:
                   sub { my ($x, $y) = @_;
                         $x = chr($x - 1 + ord('a')); # convert 1 to 'a', etc
                         $y = chr($y - 1 + ord('a'));
                         return("$x$y"); },           # concatenate two letters

               See also the diaCoords method below.

       print => sub { my ($dg2tex, @tex) = @_; ... }
               A  user  defined subroutine to replace the default printing method.  This callback is called from
               the print method (below) with the reference to the Dg2TeX object and a list  of  lines  that  are
               part of the TeX diagram source.

       pageSize => 'page size'
               May be one of:

               . a0 - a6
               . letter
               . broadsheet
               . ledger
               . tabloid
               . legal
               . executive
               . 36x36

               Default: 'letter'

       topMargin    => points
       bottomMargin => points
       leftMargin   => points
       rightMargin  => points
               Margins  are  set in PDF 'user space units' which are approximately equivilent to points (1/72 of
               an inch).

               Default for all margins: 72 * .70 (7/10s of an inch)

       text_fontName  => 'font'  Default: 'Times-Roman',
       stone_fontName => 'font'  Default: 'Courier-Bold'
               Text and stone fonts names may be one of these (case sensitive):

               . Courier
               . Courier-Bold
               . Courier-BoldOblique
               . Courier-Oblique
               . Helvetica
               . Helvetica-Bold
               . Helvetica-BoldOblique
               . Helvetica-Oblique
               . Times-Roman
               . Times-Bold
               . Times-Italic
               . Times-BoldItalic
       text_fontSize  => points
               The point size for the comment text.  Diagram titles use this size plus 4,  and  the  game  title
               uses this size plus 6.

               Default: 11

       stone_fontSize => points
               The stone_fontSize determines the size of the text inside stones, and may also determine the size
               of the stones and diagrams (see lineHeight and lineWidth below).

               Default: 5

       lineWidth => points
       lineHeight => points
               The lineWidth and lineHeight determine the size of the stones and diagrams.

               If lineWidth is not explicitly set, it is calculated from the stone_fontSize to allow up to three
               digits  on  a  stone  .   The default stone_fontSize allows for three diagrams (with -coords) per
               'letter' page if comments  don't  take  up  extra  space  below  diagrams.   If  doubleDigits  is
               specified, the stones and board are slightly smaller (stone 100 may look a bit cramped).

               If lineHeight is not explicitly set, it will be 1.05 * lineWidth, creating a slightly rectangular
               diagram.

               Default: undef - determined from stone_fontSize

See Also

sgf2dg(1)
           Script to convert SGF format files to Go diagrams

Synopsis

       use Games::Go::Sgf2Dg::Dg2PDF

        my $dg2pdf = B<Games::Go::Sgf2Dg::Dg2PDF-E<gt>new> (options);
        $dg2pdf->convertDiagram($diagram);

See Also