---
name: "Games::Go::Sgf2Dg::Dg2Ps"
section: "3pm"
platform: "linux"
package: "sgf2dg"
version: "4.252-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Games::Go::Sgf2Dg::Dg2Ps"
---

# Games::Go::Sgf2Dg::Dg2Ps(3pm)

convert Games::Go::Sgf2Dg::Diagrams to PostScript

## NAME

Games::Go::Sgf2Dg::Dg2Ps - convert Games::Go::Sgf2Dg::Diagrams to PostScript

## SYNOPSIS

use Games::Go::Sgf2Dg::Dg2Ps

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

## DESCRIPTION

**Games::Go::Sgf2Dg::Dg2Ps** converts a Games::Go::Sgf2Dg::Diagram into PostScript.

## NEW

- my $dg2ps = **Games::Go::Sgf2Dg::Dg2Ps-\>new** (?options?)

  A **new** Games::Go::Sgf2Dg::Dg2Ps 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.

Dg2Ps-specific options:

- **pageSize** =\> 'page size'

  May be one of:

  - . 'A0' - 'A9'

    - . 'B0' - 'B10'

    - . 'Executive'

    - . 'Folio'

    - . 'Half-Letter'

    - . 'Letter'

    - . 'US-Letter'

    - . 'Legal'

    - . 'US-Legal'

    - . 'Tabloid'

    - . 'SuperB'

    - . 'Ledger'

    - . 'Comm #10 Envelope'

    - . 'Envelope-Monarch'

    - . 'Envelope-DL'

    - . 'Envelope-C5'

    - . 'EuroPostcard'

    Default: 'Letter'

- **topMargin** =\> points

  - **bottomMargin** =\> points

  - **leftMargin** =\> points

  - **rightMargin** =\> points

  Margins are set in PostScript '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 stones and diagrams. Stone size is chosen 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).

  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**

- **ps\_debug** =#\<gt\> number from 0 to 2

  When non-zero, code and subroutines are added to the PostScript output to help debug the PostScript file.  This is very slightly documented in PostScript::File, but you'll probably need to read through the PostScript output to make any use of it.

  Default: 0

## METHODS

- $dg2ps-\>**configure** (option =\> value, ?...?)

  Change Dg2Ps 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));
  ```

- $dg2ps-\>**print** ($text ? , ... ?)

  **print**s raw PostScript code to **file** as defined at **new** time.

- $dg2ps-\>**printComment** ($text ? , ... ?)

  Adds `$text` to the diagram comments.

- $dg2ps-\>**comment** ($comment ? , ... ?)

  Inserts the PostScript comment character ('%') in front of each line of each comment and **print**s it to **file**.

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

- my $canvas = $dg2ps-\>**convertDiagram** ($diagram)

  Converts a Games::Go::Sgf2Dg::Diagram into PostScript.

- my $converted\_text = $dg2ps-\>**convertText** ($text)

  Converts `$text` into text for display (handles PostScript escape sequences).

  Returns the converted text.

- $dg2ps-\>**close**

  **print**s final PostScript code to the output file and closes the file.

## SEE ALSO

- sgf2dg(1)

  Script to convert SGF format files to Go diagrams

## BUGS

Bugs?  In *my* code?
