.TH "coin_hardcopy" 3 "Tue Dec 26 2023 17:59:22" "Version 4.0.2" "Coin" \" -*- nroff -*- .ad l .nh .SH NAME coin_hardcopy \- Vectorized Printing Classes .PP \- The vectorized printing classes are for rendering to vector devices instead of raster devices\&. .br .SH SYNOPSIS .br .PP .SS "Classes" .in +1c .ti -1c .RI "class \fBSoHardCopy\fP" .br .RI "The \fBSoHardCopy\fP class is a static class for initializing the hardcopy support\&. " .ti -1c .RI "class \fBSoPSVectorOutput\fP" .br .RI "The \fBSoPSVectorOutput\fP class is used for writing PostScript\&. " .ti -1c .RI "class \fBSoVectorOutput\fP" .br .RI "The \fBSoVectorOutput\fP class is used for setting vector output file\&. " .ti -1c .RI "class \fBSoVectorizeAction\fP" .br .RI "The \fBSoVectorizeAction\fP class is the base class for vectorizing Coin scene graphs\&. " .ti -1c .RI "class \fBSoVectorizePSAction\fP" .br .RI "The \fBSoVectorizePSAction\fP class is used for rendering to a PostScript file\&. " .in -1c .SH "Detailed Description" .PP The vectorized printing classes are for rendering to vector devices instead of raster devices\&. .br You can use this to e\&.g\&. generate scalable PostScript images for printing instead of raster images that will become pixelated when you scale them up\&. .PP See below for \fBA HardCopy Overview\fP\&. A HardCopy Overview .PP The main API for HardCopy support in Coin is the abstract class \fBSoVectorizeAction\fP\&. \fBSoVectorizeAction\fP will extract geometry from an Inventor scene graph, and project the geometry onto a specified page\&. Since PostScript and other vector based file formats do not support z-buffer or depth clipping, all geometry is rendered using a simple painter's algorithm (geometry is sorted based on distance to camera)\&. .PP \fBSoVectorizePSAction\fP inherits \fBSoVectorizeAction\fP, and will output a PostScript file\&. .PP Texture-mapped polygons are not supported, since this is not supported by the vector file formats, at least it is not supported in PostScript\&. Gouraud shading is not supported in the PostScript language (at least not for \fBV2\&.0\fP), but an approximation is implemented using an algorithm that divides the triangle into several small (flat-shaded) triangles\&. The Gouraud shading quality (the number of sub-triangles) is controlled by an epsilon value\&. The Gouraud shading function is written by Frederic Delhoume (delhoume (at) \fBilog\&.fr\fP), and is free (public domain) software\&. .PP Typical use of \fBSoVectorizePSAction\fP is shown in the following piece of code: .PP .PP .nf SoVectorizePSAction * ps = new SoVectorizePSAction; SoVectorOutput * out = ps\->getOutput(); if (!out\->openFile("output\&.ps")) { return \-1; // unable to open output file } // to enable Gouraud shading\&. 0\&.1 is a nice epsilon value // ps\->setGouraudThreshold(0\&.1f); // clear to white background\&. Not really necessary if you // want a white background ps\->setBackgroundColor(TRUE, SbColor(1\&.0f, 1\&.0f, 1\&.0f)); // select LANDSCAPE or PORTRAIT orientation ps\->setOrientation(SoVectorizeAction::LANDSCAPE); // start creating a new page (A4 page, with 10mm border)\&. ps\->beginPage(SbVec2f(10\&.0f, 10\&.0f), SbVec2f(190\&.0f, 277\&.0f)); // There are also enums for A0\-A10\&. Example: // ps\->beginStandardPage(SoVectorizeAction::A4, 10\&.0f); // calibrate so that text, lines, points and images will have the // same size in the PostScript file as on the monitor\&. ps\->calibrate(viewer\->getViewportRegion()); // apply action on the viewer scene graph\&. Remember to use // SoSceneManager's scene graph so that the camera is included\&. ps\->apply(viewer\->getSceneManager()\->getSceneGraph()); // this will create the PostScript file ps\->endPage(); // close file out\->closeFile(); delete ps; .fi .PP .PP It is also possible to have several viewports and/or layers on a page\&. This is useful if your application has several layers of geometry, for instance some annotations in 2D on top of a 3D scene graph\&. To create several layers, the beginViewport() and endViewport() functions can be used\&. .PP \fBSince\fP .RS 4 Coin \fB2\&.1\fP .PP TGS provides HardCopy support as a separate extension for TGS Inventor\&. .RE .PP .SH "Author" .PP Generated automatically by Doxygen for Coin from the source code\&.