Package org.pentaho.reporting.engine.classic.core.layout.model

Examples of org.pentaho.reporting.engine.classic.core.layout.model.RenderableText


   *
   * @return
   */
  public long getMinimumWidth(final RenderNode node)
  {
    final RenderableText text = (RenderableText) node;
    return text.getMinimumWidth();
  }
View Full Code Here


   *
   * @return
   */
  public long getMaximumWidth(final RenderNode node)
  {
    final RenderableText text = (RenderableText) node;
    return text.getPreferredWidth();
  }
View Full Code Here

      {
        if (ellipseDrawn == false)
        {
          if (clipOnWordBoundary == false && type == LayoutNodeTypes.TYPE_NODE_TEXT)
          {
            final RenderableText text = (RenderableText) node;
            final long ellipseSize = extractEllipseSize(node);
            final long x1 = text.getX();
            final long effectiveAreaX2 = (contentAreaX2 - ellipseSize);

            if (x1 >= contentAreaX2)
            {
              // Skip, the node will not be visible.
            }
            else
            {
              // The text node that is printed will overlap with the ellipse we need to print.
              drawText(text, effectiveAreaX2);
            }
          }

          ellipseDrawn = true;

          final RenderBox parent = node.getParent();
          if (parent != null)
          {
            final RenderBox textEllipseBox = parent.getTextEllipseBox();
            if (textEllipseBox != null)
            {
              processBoxChilds(textEllipseBox);
            }
          }
          return;
        }
      }
    }

    if (type == LayoutNodeTypes.TYPE_NODE_TEXT)
    {
      final RenderableText text = (RenderableText) node;
      if (underline != null)
      {
        final ExtendedBaselineInfo baselineInfo = text.getBaselineInfo();
        final long underlinePos = text.getY() + baselineInfo.getUnderlinePosition();
        underline.updateVerticalPosition(StrictGeomUtility.toExternalValue(underlinePos));
        underline.updateStart(StrictGeomUtility.toExternalValue(text.getX()));
        underline.updateEnd(StrictGeomUtility.toExternalValue(text.getX() + text.getWidth()));
      }

      if (strikeThrough != null)
      {
        final ExtendedBaselineInfo baselineInfo = text.getBaselineInfo();
        final long strikethroughPos = text.getY() + baselineInfo.getStrikethroughPosition();
        strikeThrough.updateVerticalPosition(StrictGeomUtility.toExternalValue(strikethroughPos));
        strikeThrough.updateStart(StrictGeomUtility.toExternalValue(text.getX()));
        strikeThrough.updateEnd(StrictGeomUtility.toExternalValue(text.getX() + text.getWidth()));
      }

      if (isTextLineOverflow())
      {
        if (node.isNodeVisible(drawArea) == false)
        {
          return;
        }

        final long ellipseSize = extractEllipseSize(node);
        final long x1 = text.getX();
        final long x2 = x1 + text.getWidth();
        final long effectiveAreaX2 = (contentAreaX2 - ellipseSize);
        if (x2 <= effectiveAreaX2)
        {
          // the text will be fully visible.
          drawText(text);
View Full Code Here

        return;
      }

      if (clipOnWordBoundary == false)
      {
        final RenderableText text = (RenderableText) node;
        final long ellipseSize = extractEllipseSize(node);
        final long x1 = text.getX();
        final long effectiveAreaX2 = (contentAreaX2 - ellipseSize);

        if (x1 >= contentAreaX2)
        {
          // Skip, the node will not be visible.
View Full Code Here

    {
      breakState.addNode(node);
      return;
    }

    final RenderableText text = (RenderableText) node;
    breakState.addNode(text);
    if (text.isForceLinebreak() == false)
    {
      return;
    }

    if (breakState.isBreakRequested())
View Full Code Here

  {
    try
    {
      if (node.getNodeType() == LayoutNodeTypes.TYPE_NODE_TEXT)
      {
        final RenderableText text = (RenderableText) node;
        final AttributeList attributeList = new AttributeList();
        attributeList.setAttribute(XmlDocumentWriter.LAYOUT_OUTPUT_NAMESPACE, "x",
            String.valueOf(StrictGeomUtility.toExternalValue(node.getX())));
        attributeList.setAttribute(XmlDocumentWriter.LAYOUT_OUTPUT_NAMESPACE, "y",
            String.valueOf(StrictGeomUtility.toExternalValue(node.getY())));
        attributeList.setAttribute(XmlDocumentWriter.LAYOUT_OUTPUT_NAMESPACE, "width",
            String.valueOf(StrictGeomUtility.toExternalValue(node.getWidth())));
        attributeList.setAttribute(XmlDocumentWriter.LAYOUT_OUTPUT_NAMESPACE, "height",
            String.valueOf(StrictGeomUtility.toExternalValue(node.getHeight())));
        xmlWriter.writeTag(XmlDocumentWriter.LAYOUT_OUTPUT_NAMESPACE, "text", attributeList, XmlWriter.OPEN);
        xmlWriter.writeTextNormalized(text.getRawText(), true);
        xmlWriter.writeCloseTag();

      }
      else if (node.getNodeType() == LayoutNodeTypes.TYPE_NODE_SPACER)
      {
View Full Code Here

      }
      if (forceLinebreak)
      {
        final ExtendedBaselineInfo info = getBaselineInfo('\n');
///        TextUtility.createBaselineInfo('\n', fontMetrics, baselineInfo);
        final RenderableText text = new RenderableText(layoutContext, elementType, instanceId, attributeMap,
            info, DefaultRenderableTextFactory.EMPTY_GLYPHS, 0, 0, lastLanguage, true);
        words.add(text);
      }
      leadingMargin = 0;
      spaceCount = 0;
      return;
    }

    //final DefaultGlyph[] glyphs = (DefaultGlyph[]) glyphList.toArray(new DefaultGlyph[glyphList.size()]);
    if (leadingMargin > 0)// && words.isEmpty() == false)
    {
      final SpacerRenderNode spacer = new SpacerRenderNode(leadingMargin, 0, true, spaceCount);
      words.add(spacer);
    }

    // Compute a suitable text-metrics object for this text. We simply assume that the first character is representive
    // for all characters of the text chunk. This may be a wrong assumption in complex-text environments but will work
    // for now.
    final int codePoint = glyphList.getGlyph(0).getCodepoint();

    final ExtendedBaselineInfo baselineInfo = getBaselineInfo(codePoint);
//    final ExtendedBaselineInfo baselineInfo = TextUtility.createBaselineInfo(codePoint, fontMetrics, this.baselineInfo);
    final RenderableText text = new RenderableText(layoutContext, elementType, instanceId, attributeMap,
        baselineInfo, glyphList.lock(), 0, glyphList.getSize(), lastLanguage, forceLinebreak);
    words.add(text);

    glyphList.clear();
    leadingMargin = 0;
View Full Code Here

        ellipseDrawn = true;

        if (clipOnWordBoundary == false &&
            node.getNodeType() == LayoutNodeTypes.TYPE_NODE_TEXT)
        {
          final RenderableText text = (RenderableText) node;
          final long ellipseSize = extractEllipseSize(node);
          final long x1 = text.getX();
          final long effectiveAreaX2 = (contentAreaX2 - ellipseSize);

          if (x1 >= contentAreaX2)
          {
            // Skip, the node will not be visible.
          }
          else
          {
            // The text node that is printed will overlap with the ellipse we need to print.
            drawText(text, effectiveAreaX2);
          }
        }

        final RenderBox parent = node.getParent();
        if (parent != null)
        {
          final RenderBox textEllipseBox = parent.getTextEllipseBox();
          if (textEllipseBox != null)
          {
            processBoxChilds(textEllipseBox);
          }
        }
        return;
      }
    }

    if (node.getNodeType() == LayoutNodeTypes.TYPE_NODE_TEXT)
    {
      final RenderableText textNode = (RenderableText) node;
      if (isTextLineOverflow())
      {
        if (textNode.isNodeVisible(paragraphBounds, overflowX, overflowY) == false)
        {
          return;
        }

        final long ellipseSize = extractEllipseSize(node);
        final long x1 = node.getX();
        final long x2 = x1 + node.getWidth();
        final long effectiveAreaX2 = (contentAreaX2 - ellipseSize);
        if (x2 <= effectiveAreaX2)
        {
          // the text will be fully visible.
          drawText(textNode, x2);
        }
        else if (x1 >= contentAreaX2)
        {
          // Skip, the node will not be visible.
        }
        else
        {
          // The text node that is printed will overlap with the ellipse we need to print.
          drawText(textNode, effectiveAreaX2);
          final RenderBox parent = node.getParent();
          if (parent != null)
          {
            final RenderBox textEllipseBox = parent.getTextEllipseBox();
            if (textEllipseBox != null)
            {
              processBoxChilds(textEllipseBox);
            }
          }
        }

      }
      else
      {
        drawText(textNode, textNode.getX() + textNode.getWidth());
      }
      if (textNode.isForceLinebreak())
      {
        manualBreak = true;
      }
    }
    else if (node.getNodeType() == LayoutNodeTypes.TYPE_NODE_SPACER)
View Full Code Here

  {
    try
    {
      if (node.getNodeType() == LayoutNodeTypes.TYPE_NODE_TEXT)
      {
        final RenderableText text = (RenderableText) node;
        final AttributeList attributeList = new AttributeList();
        attributeList.setAttribute(XmlDocumentWriter.LAYOUT_OUTPUT_NAMESPACE, "x",
            String.valueOf(StrictGeomUtility.toExternalValue(node.getX())));
        attributeList.setAttribute(XmlDocumentWriter.LAYOUT_OUTPUT_NAMESPACE, "y",
            String.valueOf(StrictGeomUtility.toExternalValue(node.getY())));
        attributeList.setAttribute(XmlDocumentWriter.LAYOUT_OUTPUT_NAMESPACE, "width",
            String.valueOf(StrictGeomUtility.toExternalValue(node.getWidth())));
        attributeList.setAttribute(XmlDocumentWriter.LAYOUT_OUTPUT_NAMESPACE, "height",
            String.valueOf(StrictGeomUtility.toExternalValue(node.getHeight())));
        xmlWriter.writeTag(XmlDocumentWriter.LAYOUT_OUTPUT_NAMESPACE, "text", attributeList, XmlWriter.OPEN);
        xmlWriter.writeTextNormalized(text.getRawText(), true);
        xmlWriter.writeCloseTag();

      }
      else if (node.getNodeType() == LayoutNodeTypes.TYPE_NODE_SPACER)
      {
View Full Code Here

      if ((node.getX() + node.getWidth()) > (paragraphBounds.getX() + paragraphBounds.getWidth()))
      {
        // This node will only be partially visible. The end-of-line marker will not apply.
        return;
      }
      final RenderableText text = (RenderableText) node;
      if (text.isForceLinebreak())
      {
        final StyleContext currentContext = getCurrentContext();
        if (getTextLength() > 0)
        {
          currentContext.add(getText());
          clearText();
        }
        context.pop();
        final StyleContext cellContext = getCurrentContext();
        cellContext.add(currentContext.getTarget());

        context.push(new StyleContext(new Paragraph(), text.getStyleSheet(), metaData));
      }
    }
  }
View Full Code Here

TOP

Related Classes of org.pentaho.reporting.engine.classic.core.layout.model.RenderableText

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.