Is it possible to set the annotation scale to an OdPrcMarkupTessBufText object?

  1. FAQ
  2. »
  3. PDF and PRC Questions

In prc you can manage OdPrcMarkupTessBufText positioning only by:

Face View Mode, OdPrcMarkupTessBufFaceView
In this mode, all the drawing entities are parallel to the screen (billboard). The point given in the doubles corresponds to the origin of the new coordinate system in which entries are drawn parallel to the screen.

Frame Draw Mode, OdPrcMarkupTessBufFrame
In this mode, all the drawing entities are given in 2‐dimensional space. The point given in the doubles corresponds to a 3D point projected onto the screen, providing the origin of the 2‐dimensional coordinate system in which to draw (viewport).

Fixed Size Mode, OdPrcMarkupTessBufFixedSize
In this mode, all the drawing entities are drawn at a fixed size, independent of zoom. The point given in the doubles corresponds to the origin of the new coordinate system in which to draw at fixed size. (Adobe has porblems with supporting this mode).

Matrix Mode, OdPrcMarkupTessBufMatrix
In this mode, all the drawing entities are transformed by the matrix given in the doubles post multiplied by the current transformation matrix. At the end of the mode, the transformation matrix that was previously active is restored.

To apply one of this modes for OdPrcMarkupTessBufText object put it inside BufBlock by setNextInBlock() function, e.g: Code:
OdPrcMarkupTessPtr CreatePlainTextMarkup (OdPrcFileStructure &pCurFS)
{
//...
  pCurMkpTess = pCurMkpTess->setNext(OdPrcMarkupTessBufMatrix::createObject());
  OdGePoint3d origP(3, 3, 0);
  ((OdPrcMarkupTessBufMatrixPtr &) pCurMkpTess)->setMatrix(OdGeMatrix3d::translation(origP.asVector()));
  OdPrcMarkupTessBufTextPtr pBufText = OdPrcMarkupTessBufText::createObject();
  ODA_VERIFY(pBufText->setText(L"Markup with Text type", 20, 4) == eOk);
  ((OdPrcMarkupTessBufMatrixPtr &) pCurMkpTess)->setNextInBlock(pBufText);
//...
}