---
name: "Prima::PS::Drawable"
section: "3"
platform: "linux"
package: "libprima-perl"
version: "1.28-1.3+b3"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/Prima::PS::Drawable"
---

# Prima::PS::Drawable(3)

PostScript interface to Prima::Drawable

## NAME

Prima::PS::Drawable -  PostScript interface to Prima::Drawable

## SYNOPSIS

```
        use Prima;
        use Prima::PS::Drawable;
        my $x = Prima::PS::Drawable-> create( onSpool => sub {
                open F, ">> ./test.ps";
                print F $_[1];
                close F;
        });
        die "error:$@" unless $x-> begin_doc;
        $x-> font-> size( 30);
        $x-> text_out( "hello!", 100, 100);
        $x-> end_doc;
```

## DESCRIPTION

Realizes the Prima library interface to PostScript level 2 document language. The module is designed to be compliant with Prima::Drawable interface. All properties' behavior is as same as Prima::Drawable's, except those  described below.

### Inherited properties

- ::resolution

  Can be set while object is in normal stage - cannot be changed if document is opened. Applies to fillPattern realization and general pixel-to-point and vice versa calculations

- ::region

  \- ::region is not realized ( yet?)

### Specific properties

- ::copies

  amount of copies that PS interpreter should print

- ::grayscale

  could be 0 or 1

- ::pageSize

  physical page dimension, in points

- ::pageMargins

  non-printable page area, an array of 4 integers: left, bottom, right and top margins in points.

- ::reversed

  if 1, a 90 degrees rotated document layout is assumed

- ::rotate and ::scale

  along with Prima::Drawable::translate provide PS-specific transformation matrix manipulations. ::rotate is number, measured in degrees, counter-clockwise. ::scale is array of two numbers, respectively x- and y-scale. 1 is 100%, 2 is 200%  etc.

- ::useDeviceFonts

  1 by default; optimizes greatly text operations, but takes the risk that a character could be drawn incorrectly or not drawn at all - this behavior depends on a particular PS interpreter.

- ::useDeviceFontsOnly

  If 1, the system fonts, available from Prima::Application interfaces can not be used. It is designed for developers and the outside-of-Prima applications that wish to use PS generation module without graphics. If 1, `"::useDeviceFonts"` is set to 1 automatically.

  Default value is 0

### Internal methods

- emit

  Can be called for direct PostScript code injection. Example:

  ```
          $x-> emit('0.314159 setgray');
          $x-> bar( 10, 10, 20, 20);
  ```

- pixel2point and point2pixel

  Helpers for translation from pixel to points and vice versa.

- fill & stroke

  Wrappers for PS outline that is expected to be filled or stroked. Apply colors, line and fill styles if necessary.

- spool

  Prima::PS::Drawable is not responsible for output of generated document, it just calls ::spool when document is closed through ::end\_doc. By default just skips data. Prima::PS::Printer handles spooling logic.

- fonts

  Returns Prima::Application::font plus those that defined into Prima::PS::Fonts module.
