# SoVectorizeAction Class Reference
[Support for vectorized printing]

`#include <HardCopy/SoVectorizeAction.h>`

Inheritance diagram for SoVectorizeAction:

List of all members.

## Detailed Description

The SoVectorizeAction class is the base class for vectorizing Coin scene graphs.

SoVectorizeAction will traverse the scene graph and convert all supported geometry into vectorized data. Subclasses can then use this data to produce vector files of different formats.

Currently supported geometry:

- Triangles (polygons will be tessellated)
- Line segments
- Points (can be drawn as circles or squares)
- 2D text
- 3D text (will be converted to triangles)
- Images (from the SoImage node)

The geometry will be shaded based on the OpenGL shading model, so lights and material will affect the geometry in the same way as in a standard Coin viewer. Please note that neither transparency nor texture mapping is supported yet.

Since:
  Coin 2.1

  TGS provides HardCopy support as a separate extension for TGS Inventor.

## Public Types

enum | DimensionUnit { INCH, MM, METER }
enum | Orientation { PORTRAIT, LANDSCAPE }
enum | PageSize { A0 = 0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10 }
enum | PointStyle { CIRCLE, SQUARE }
enum | ColorTranslationMethod { REVERSE_ONLY_BLACK_AND_WHITE, AS_IS, REVERSE }
enum | JoinLineStyle { NO_JOIN, MITERED_JOIN, MITERED_BEVELED_JOIN, BEVELED_JOIN, TRIANGULAR_JOIN, ROUNDED_JOIN }
enum | EndLineStyle { BUTT_END, SQUARE_END, TRIANGULAR_END, ROUND_END }
enum | HLHSRMode { NO_HLHSR, HLHSR_SIMPLE_PAINTER, HLHSR_PAINTER, HLHSR_PAINTER_SURFACE_REMOVAL, HIDDEN_LINES_REMOVAL }

## Public Member Functions

| SoVectorizeAction (void)
virtual | ~SoVectorizeAction ()
SoVectorOutput * | getOutput (void) const
virtual void | apply (SoNode *node)
virtual void | apply (SoPath *path)
virtual void | apply (const SoPathList &pathlist, SbBool obeysrules=FALSE)
void | beginStandardPage (const PageSize &pagesize, const float border=10.0f)
virtual void | beginPage (const SbVec2f &startpagepos, const SbVec2f &pagesize, DimensionUnit u=MM)
virtual void | endPage (void)
virtual void | calibrate (const SbViewportRegion &vp)
virtual void | beginViewport (const SbVec2f &startpos=SbVec2f(-1.0f, 1.0f), const SbVec2f &size=SbVec2f(-1.0f,-1.0f), DimensionUnit u=MM)
virtual void | endViewport (void)
virtual void | setOrientation (Orientation o)
virtual Orientation | getOrientation (void) const
virtual void | setBackgroundColor (SbBool bg, const SbColor &col=SbColor(0.0f, 0.0f, 0.0f))
virtual SbBool | getBackgroundColor (SbColor &col) const
virtual void | setNominalWidth (float w, DimensionUnit u=MM)
virtual float | getNominalWidth (DimensionUnit u=MM) const
virtual void | setPixelImageSize (float w, DimensionUnit u=MM)
virtual float | getPixelImageSize (DimensionUnit u=MM) const
virtual void | setPointStyle (const PointStyle &style)
virtual PointStyle | getPointStyle (void) const
const SbVec2f & | getPageStartpos (void) const
const SbVec2f & | getPageSize (void) const
virtual void | setDrawingDimensions (const SbVec2f &d, DimensionUnit u=MM)
virtual SbVec2f | getDrawingDimensions (DimensionUnit u=MM) const
virtual void | setStartPosition (const SbVec2f &p, DimensionUnit u=MM)
virtual SbVec2f | getStartPosition (DimensionUnit u=MM) const
virtual void | setColorTranslationMethod (ColorTranslationMethod method)
virtual ColorTranslationMethod | getColorTranslationMethod (void) const
virtual void | setLineEndStyle (EndLineStyle style)
virtual EndLineStyle | getLineEndStyle (void) const
virtual void | setLineJoinsStyle (JoinLineStyle style)
virtual JoinLineStyle | getLineJoinsStyle (void) const
virtual void | setHLHSRMode (HLHSRMode mode)
HLHSRMode | getHLHSRMode (void) const
virtual void | setBorder (float width)
virtual void | setBorder (float width, SbColor color)
virtual void | setMiterLimit (float limit)
virtual float | getMiterLimit (void) const
virtual void | setPenDescription (int num_pens, const SbColor *colors=0, const float *widths=0, DimensionUnit u=MM)
virtual void | getPenDescription (SbColor *colors, float *widths, DimensionUnit u=MM) const
virtual int | getPenNum (void) const
virtual void | setColorPriority (SbBool priority)
virtual SbBool | getColorPriority (void) const
virtual void | enableLighting (SbBool flag)
SbBool | isLightingEnabled (void) const

## Static Public Member Functions

void | initClass (void)

## Protected Member Functions

void | setOutput (SoVectorOutput *output)
virtual float | pixelsToUnits (const int pixels)
virtual void | printHeader (void) const=0
virtual void | printFooter (void) const
virtual void | printBackground (void) const
virtual void | printItem (const SoVectorizeItem *item) const=0
virtual void | printViewport (void) const
SbVec2f | getRotatedViewportStartpos (void) const
SbVec2f | getRotatedViewportSize (void) const
const SbBSPTree & | getBSPTree (void) const

## Friends

class | SoVectorizeActionP

## Member Enumeration Documentation

enum SoVectorizeAction::DimensionUnit

| The unit used by the scene graph.

enum SoVectorizeAction::Orientation

| The drawing orientation.

enum SoVectorizeAction::PageSize

The size of the destination page.

Enumeration values:

  A0 | 841 x 1189 mm.
  A1 | 594 x 841 mm.
  A2 | 420 x 594 mm.
  A3 | 297 x 420 mm.
  A4 | 210 x 297 mm.
  A5 | 148 x 210 mm.
  A6 | 105 x 148 mm.
  A7 | 74 x 105 mm.
  A8 | 52 x 74 mm.
  A9 | 37 x 52 mm.
  A10 | 26 x 37 mm.

enum SoVectorizeAction::PointStyle

Enumerates point rendering styles.

Enumeration values:

  CIRCLE | Render points as circles.
  SQUARE | Render points as squares.

## Constructor & Destructor Documentation

SoVectorizeAction::SoVectorizeAction | ( | void |  | ) |

| Default constructor.

SoVectorizeAction::~SoVectorizeAction | ( |  | ) | `[virtual]`

| Destructor.

## Member Function Documentation

SoVectorOutput * SoVectorizeAction::getOutput | ( | void |  | ) | const

| Returns the SoVectorOutput class used by this action. The output is written to stdout by default, but you can change this by using SoVectorOutput::openFile(). Reimplemented in SoVectorizePSAction.

void SoVectorizeAction::initClass | ( | void |  | ) | `[static]`

| Initializes the run-time type system for this class, and sets up the enabled elements and action method list. Reimplemented from SoCallbackAction. Reimplemented in SoVectorizePSAction.

void SoVectorizeAction::apply | ( | SoNode * | node | ) | `[virtual]`

| Applies the action to the scene graph rooted at root. Note that you should not apply an action to a node with a zero reference count. The behavior in that case is undefined. Reimplemented from SoAction.

void SoVectorizeAction::apply | ( | SoPath * | path | ) | `[virtual]`

| Applies the action to the parts of the graph defined by path. If the path ends in an SoGroup node, the action will also traverse the tail node's children. Reimplemented from SoAction.

void SoVectorizeAction::apply | ( | const SoPathList & | pathlist,
|  | SbBool | obeysrules = FALSE
| ) | `[virtual]`

Applies action to the graphs defined by pathlist. If obeysrules is set to `TRUE`, pathlist must obey the following four conditions (which is the case for path lists returned from search actions for non-group nodes and path lists returned from picking actions):

All paths must start at the same head node. All paths must be sorted in traversal order. The paths must be unique. No path can continue through the end point of another path.

Reimplemented from SoAction.

void SoVectorizeAction::beginPage | ( | const SbVec2f & | startpagepos,
|  | const SbVec2f & | pagesize,
|  | DimensionUnit | u = MM
| ) | `[virtual]`

| Begin writing a page. This will write file header information and print background (if enabled) and border.

void SoVectorizeAction::endPage | ( | void |  | ) | `[virtual]`

| End page. This will write all remaining geometry, and write the file footer.

void SoVectorizeAction::calibrate | ( | const SbViewportRegion & | vp | ) | `[virtual]`

Will calibrate pixel based attributes (font size, line width, points size, etc) so that it will match OpenGL rendering done in vp.

See also:
  setPixelSize()

  setNominalWidth()

void SoVectorizeAction::beginViewport | ( | const SbVec2f & | start = SbVec2f(-1.0f, 1.0f),
|  | const SbVec2f & | size = SbVec2f(-1.0f, -1.0f),
|  | DimensionUnit | u = MM
| ) | `[virtual]`

Begin writing a viewport inside the current page.

See also:
  beginPage(), endViewport()

void SoVectorizeAction::endViewport | ( | void |  | ) | `[virtual]`

| End writing a viewport. This will flush all vector items.

void SoVectorizeAction::setOrientation | ( | Orientation | o | ) | `[virtual]`

| Sets the orientation to o.

SoVectorizeAction::Orientation SoVectorizeAction::getOrientation | ( | void |  | ) | const`[virtual]`

Returns the current orientation.

See also:
  setOrientation()

void SoVectorizeAction::setBackgroundColor | ( | SbBool | bg,
|  | const SbColor & | col = SbColor(0.0f, 0.0f, 0.0f)
| ) | `[virtual]`

| Sets the background color. If bg is FALSE, the background will not be cleared before rendering. If bg is TRUE, the background will be cleared to col before in beginPage().

SbBool SoVectorizeAction::getBackgroundColor | ( | SbColor & | col | ) | const`[virtual]`

| Returns if the background will be cleared or not. When this function returns TRUE, col will be set to the background color.

void SoVectorizeAction::setNominalWidth | ( | float | w,
|  | DimensionUnit | u = MM
| ) | `[virtual]`

Sets how to convert pixel based attributes (line width and point size) to vector sizes. By default 1 pixel equals 0.35 mm.

See also:
  calibrate()

void SoVectorizeAction::setPixelImageSize | ( | float | w,
|  | DimensionUnit | u = MM
| ) | `[virtual]`

Sets how the images and 2D fonts are converted. By default 1 pixel equals 0.35 mm.

See also:
  calibrate()

float SoVectorizeAction::getPixelImageSize | ( | DimensionUnit | u = MM | ) | const`[virtual]`

Returns the pixel image size.

See also:
  setPixelImageSize()

void SoVectorizeAction::setPointStyle | ( | const PointStyle & | style | ) | `[virtual]`

| Sets the points rendering style. Default style is CIRCLE.

SoVectorizeAction::PointStyle SoVectorizeAction::getPointStyle | ( | void |  | ) | const`[virtual]`

| Returns the points rendering style.

const SbVec2f & SoVectorizeAction::getPageStartpos | ( | void |  | ) | const

| Returns the current page startpos.

const SbVec2f & SoVectorizeAction::getPageSize | ( | void |  | ) | const

| Returns the current page size.

void SoVectorizeAction::setDrawingDimensions | ( | const SbVec2f & | d,
|  | DimensionUnit | u = MM
| ) | `[virtual]`

Sets the drawing dimensions. You can use this and setStartPosition() instead of using beginViewport(). Provided for TGS OIV compatibility.

See also:
  beginViewport()

SbVec2f SoVectorizeAction::getDrawingDimensions | ( | DimensionUnit | u = MM | ) | const`[virtual]`

| Returns the current drawing dimensions.

void SoVectorizeAction::setStartPosition | ( | const SbVec2f & | p,
|  | DimensionUnit | u = MM
| ) | `[virtual]`

| Sets the drawing staring position. You can use this and setDrawingDimensions() instead of using beginViewport(). Provided for TGS OIV compatibility.

SbVec2f SoVectorizeAction::getStartPosition | ( | DimensionUnit | u = MM | ) | const`[virtual]`

| Returns the current drawing starting position.

void SoVectorizeAction::setColorTranslationMethod | ( | ColorTranslationMethod | method | ) | `[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

SoVectorizeAction::ColorTranslationMethod SoVectorizeAction::getColorTranslationMethod | ( | void |  | ) | const`[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setLineEndStyle | ( | EndLineStyle | style | ) | `[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

SoVectorizeAction::EndLineStyle SoVectorizeAction::getLineEndStyle | ( | void |  | ) | const`[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setLineJoinsStyle | ( | JoinLineStyle | style | ) | `[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

SoVectorizeAction::JoinLineStyle SoVectorizeAction::getLineJoinsStyle | ( | void |  | ) | const`[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setHLHSRMode | ( | HLHSRMode | mode | ) | `[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

SoVectorizeAction::HLHSRMode SoVectorizeAction::getHLHSRMode | ( | void |  | ) | const

| Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setBorder | ( | float | width | ) | `[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setBorder | ( | float | width,
|  | SbColor | color
| ) | `[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setMiterLimit | ( | float | limit | ) | `[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setPenDescription | ( | int | num_pens,
|  | const SbColor * | colors = 0,
|  | const float * | widths = 0,
|  | DimensionUnit | u = MM
| ) | `[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::getPenDescription | ( | SbColor * | colors,
|  | float * | widths,
|  | DimensionUnit | u = MM
| ) | const`[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

int SoVectorizeAction::getPenNum | ( | void |  | ) | const`[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setColorPriority | ( | SbBool | priority | ) | `[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

SbBool SoVectorizeAction::getColorPriority | ( | void |  | ) | const`[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::enableLighting | ( | SbBool | flag | ) | `[virtual]`

| Not implemented yet. Provided for TGS OIV compatibility.

SbBool SoVectorizeAction::isLightingEnabled | ( | void |  | ) | const

| Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setOutput | ( | SoVectorOutput * | output | ) | `[protected]`

| Should be used by subclasses to set the SoVectorOutput instance that should be used.

float SoVectorizeAction::pixelsToUnits | ( | const int | pixels | ) | `[protected, virtual]`

| Converts pixels to normalized units.

void SoVectorizeAction::printHeader | ( | void |  | ) | const`[protected, pure virtual]`

| This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. Implemented in SoVectorizePSAction.

void SoVectorizeAction::printFooter | ( | void |  | ) | const`[protected, virtual]`

| This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. Should be overridden by subclasses to print file footer data. Reimplemented in SoVectorizePSAction.

void SoVectorizeAction::printBackground | ( | void |  | ) | const`[protected, virtual]`

| This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. Should be overridden by subclasses to print background data. Reimplemented in SoVectorizePSAction.

void SoVectorizeAction::printItem | ( | const SoVectorizeItem * | item | ) | const`[protected, pure virtual]`

| This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. Should be overridden by subclasses to print an item. Implemented in SoVectorizePSAction.

void SoVectorizeAction::printViewport | ( | void |  | ) | const`[protected, virtual]`

| This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. Should be overridden by subclasses to set up the current page viewport. Reimplemented in SoVectorizePSAction.

SbVec2f SoVectorizeAction::getRotatedViewportStartpos | ( | void |  | ) | const`[protected]`

| Convenience method for subclasses. Will return the viewport startpos, taking the orientation into account

SbVec2f SoVectorizeAction::getRotatedViewportSize | ( | void |  | ) | const`[protected]`

| Convenience method for subclasses. Will return the viewport size, taking the orientation into account

const SbBSPTree & SoVectorizeAction::getBSPTree | ( | void |  | ) | const`[protected]`

| Returns the bps tree used to store triangle and line vertices.

The documentation for this class was generated from the following files:

- SoVectorizeAction.h
- VectorizeAction.cpp