//------------------------------------------------------------------------------------------07.02.2006 /// <summary>Writes the RepObj to the buffer.</summary> /// <param name="e">Environment data</param> public void Write(PdfIndirectObject_PageContents.Environment e) { PdfIndirectObject_PageContents p = e.pdfIndirectObject_PageContents; RepString repString = (RepString)e.repObj; Double rWidth = repString.fontProp.rWidth(repString.sText); Double rOfsX = rWidth * repString.rAlignH; Double rOfsY = repString.fontProp.rHeight() * (1 - repString.rAlignV); e.matrixD.Multiply(new MatrixD(1, 0, 0, 1, -rOfsX, rOfsY)); p.Command("BT"); p.Write_Font(repString.fontProp); if (e.bComplex) { p.Write_Matrix(e.matrixD); p.Command("Tm"); } else { p.Write_Point(e.matrixD.rDX, e.matrixD.rDY); p.Command("Td"); } p.String(repString.sText); p.Command("Tj"); p.Command("ET"); if (repString.fontProp.bUnderline) { Type1FontData type1FontData = (Type1FontData)repString.fontProp.fontPropData.fontData; PdfFontPropData pdfFontPropData = (PdfFontPropData)repString.fontProp.fontPropData; Double rSizeFactor = type1FontData.rSizeFactor(repString.fontProp); PenProp pp = new PenProp(e.report, rSizeFactor * type1FontData.fUnderlineThickness / 1000, repString.fontProp.color); p.Write_Pen(pp); Double rD = rSizeFactor * type1FontData.fUnderlinePosition / 1000; p.Write_Point(e.matrixD, 0, -rD); p.Command("m"); p.Write_Point(e.matrixD, rWidth, -rD); p.Command("l"); p.Command("S"); } }