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

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

convert Games::Go::Sgf2Dg::Diagrams to perl/Tk windows

## NAME

Games::Go::Sgf2Dg::Dg2Tk - convert Games::Go::Sgf2Dg::Diagrams to perl/Tk windows

## SYNOPSIS

use Games::Go::Sgf2Dg::Dg2Tk

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

## DESCRIPTION

A Games::Go::Sgf2Dg::Dg2Tk object converts a Games::Go::Sgf2Dg::Diagram object into Tk::Canvas item.  The **close** method calls Tk::MainLoop to dispays the collection of Canvases.

Bindings for the normal editing keys: Up, Down, Next (PageDown) and Prior (PageUp) traverse the NoteBook tabs.  Tab and Shift-tab also work as expected.

Left and Right keys select the previous or next NoteBook tab, but don't display it.  Space and Enter (carriage return) display the selected tab.

## NEW

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

  Any options passed to Dg2Tk that are not recognized are passed in turn to the Tk::Canvas widgets as they are created (which may cause errors if Tk::Canvas also does not recognize them).

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

## METHODS

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

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

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

  For most Dg2 converters, **print** inserts diagram source code (TeX, ASCII, whatever) directly into the diagram source stream.  Since Tk displays the diagrams immediately, there is no concept of a source stream, so **print** just generates a warning.

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

  Adds `$text` to the diagram comments.

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

  For most Dg2 converters, **comment** inserts comments into the diagram source code (TeX, ASCII, whatever).  Since Tk displays the diagrams immediately, there is no concept of a source stream, so **comment** does nothing.

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

  Converts a *Games::Go::Sgf2Dg::Diagram* into a Tk::Canvas widget.  Returns a reference to the Canvas.  The Canvas is also added to the Tk::NoteBook collection of diagrams that are displayed (at **close** time).

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

  Converts `$text` into text for display - gee, that's not very hard. In fact, this method simply returns whatever is passed to it.  This is really just a place-holder for more complicated converters.

  Returns the converted text.

- $dg2tk-\>**close**

  **print**s any final text to the diagram (currently none) and closes the dg2tk object.  Also closes **file** if appropriate.

- $dg2tk-\>**notebook**

  Returns a reference to the notebook of Tk::Canvas objects.

- $dg2tk-\>**diagrams**

  Returns a reference to the list of Tk::Canvas objects that make up the Tk::NoteBook of diagrams.  Note that each item in the list is actually a Tk::Scrolled object, the actual Tk::Canvas object is:

  ```
      my $canvas = $dg2tk->diagrams->[$idx]->Subwidget('scrolled');
  ```

## SEE ALSO

- sgf2dg(1)

  Script to convert SGF format files to Go diagrams

## BUGS

We ain't got to show you no stinkin' bugs!
