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

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


    RenderNode node = box.getFirstChild();
    while (node != null)
    {
      if (node.getNodeType() == LayoutNodeTypes.TYPE_NODE_COMPLEX_TEXT)
      {
        final RenderableComplexText complexNode = (RenderableComplexText) node;
        chunks.add(new AttributedStringChunk(complexNode.getRawText(), computeStyle(node.getStyleSheet()),
            node.getAttributes(), node.getStyleSheet(), node.getInstanceId(), node));
      }
      else if (node.getNodeType() == LayoutNodeTypes.TYPE_BOX_CONTENT)
      {
        final RenderableReplacedContentBox contentBox = (RenderableReplacedContentBox) node;
View Full Code Here


          lineBox.addGeneratedChild(lineBoxChild);
        }
      }
      else if (child instanceof RenderableComplexText)
      {
        RenderableComplexText childAsText = (RenderableComplexText) child;
        RenderNode n = lineBox.getLastChild();
        if (n instanceof RenderableComplexText)
        {
          RenderableComplexText lastLine = (RenderableComplexText) n;
          if (lastLine.isSameSource(childAsText))
          {
            lineBox.replaceChild(n, lastLine.merge(childAsText));
          }
          else
          {
            lineBox.addGeneratedChild(child);
          }
View Full Code Here

      final RenderableText text = (RenderableText) node;
      processText(text);
    }
    else if (node.getNodeType() == LayoutNodeTypes.TYPE_NODE_COMPLEX_TEXT)
    {
      final RenderableComplexText text = (RenderableComplexText) node;
      processText(text);
    }
    else
    {
      breakState.addNode(node);
View Full Code Here

  protected void processOtherNode(final RenderNode node)
  {
    if (node instanceof RenderableComplexText)
    {
      RenderableComplexText t = (RenderableComplexText) node;
      t.computeMinimumChunkWidth(metaData, resourceManager);
    }

    chunkWidthUpdate.update(node.getMinimumChunkWidth());
  }
View Full Code Here

        manualBreak = true;
      }
    }
    else if (nodeType == LayoutNodeTypes.TYPE_NODE_COMPLEX_TEXT)
    {
      final RenderableComplexText textNode = (RenderableComplexText) node;
      if (processComplexText(textNode))
      {
        return;
      }
      if (textNode.isForceLinebreak())
      {
        manualBreak = true;
      }
    }
    else if (nodeType == LayoutNodeTypes.TYPE_NODE_SPACER)
View Full Code Here

        }
      }
      else if (clipOnWordBoundary == false &&
          nodeType == LayoutNodeTypes.TYPE_NODE_COMPLEX_TEXT)
      {
        final RenderableComplexText text = (RenderableComplexText) node;
        final long x1 = text.getX();

        if (x1 < contentAreaX2)
        {
          // The text node that is printed will overlap with the ellipse we need to print.
          drawComplexText(text);
View Full Code Here

              drawText(text, effectiveAreaX2);
            }
          }
          else if (isClipOnWordBoundary() == false && type == LayoutNodeTypes.TYPE_NODE_COMPLEX_TEXT)
          {
            final RenderableComplexText text = (RenderableComplexText) node;
            //final long ellipseSize = extractEllipseSize(node);
            final long x1 = text.getX();
            //final long effectiveAreaX2 = (contentAreaX2 - ellipseSize);

            if (x1 < contentAreaX2)
            {
              // The text node that is printed will overlap with the ellipse we need to print.
              final Graphics2D g2;
              if (getTextSpec() == null)
              {
                g2 = (Graphics2D) getGraphics().create();
                final StyleSheet layoutContext = text.getStyleSheet();
                configureGraphics(layoutContext, g2);
                g2.setStroke(LogicalPageDrawable.DEFAULT_STROKE);

                if (RenderUtility.isFontSmooth(layoutContext, metaData))
                {
                  g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
                }
                else
                {
                  g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
                }
              }
              else
              {
                g2 = getTextSpec().getGraphics();
              }

              drawComplexText(text, g2);
            }
          }

          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())
      {
        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);
        }
        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(text, effectiveAreaX2);
          }

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

          ellipseDrawn = true;
        }
      }
      else
      {
        drawText(text);
      }
    }
    else if (type == LayoutNodeTypes.TYPE_NODE_COMPLEX_TEXT)
    {
      final RenderableComplexText text = (RenderableComplexText) node;
      final long x1 = text.getX();

      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.
        final Graphics2D g2;
        if (getTextSpec() == null)
        {
          g2 = (Graphics2D) getGraphics().create();
          final StyleSheet layoutContext = text.getStyleSheet();
          configureGraphics(layoutContext, g2);
          g2.setStroke(LogicalPageDrawable.DEFAULT_STROKE);

          if (RenderUtility.isFontSmooth(layoutContext, metaData))
          {
View Full Code Here

      {
        // ignore the last line, it acted as indicator for a forced linebreak
        continue;
      }

      RenderableComplexText rct =
          new RenderableComplexText(layoutContext, instanceId, elementType, attributeMap, next);
      rct.setForceLinebreak(lines.hasNext());
      result.add(rct);
    }

    return result.toArray(new RenderNode[result.size()]);
  }
View Full Code Here

    plainTextPage.addTextChunk(x, y, w, rawText, text.getStyleSheet());
  }

  protected void drawComplexText(final RenderNode node)
  {
    final RenderableComplexText renderableComplexText = (RenderableComplexText) node;

    // The text node that is printed will overlap with the ellipse we need to print.
    if (renderableComplexText.isNodeVisible(drawArea) == false)
    {
      return;
    }
    if (renderableComplexText.getRawText().length() == 0)
    {
      // This text is empty.
      return;
    }

    final String text;
    TextLayout textLayout = renderableComplexText.getTextLayout();
    String debugInfo = textLayout.toString();
    String startPos = debugInfo.substring(debugInfo.indexOf("[start:"), debugInfo.indexOf(", len:")).replace("[start:", "");
    int startPosIntValue = -1;

    try
    {
      startPosIntValue = Integer.parseInt(startPos);
    }
    catch (NumberFormatException e)
    {
      // do nothing
    }

    // workaround for line breaking (since the text cannot be extracted directly from textLayout as stream or String)
    // in order to avoid duplicates of same source raw text on multiple lines
    if ((renderableComplexText.getRawText().length() > textLayout.getCharacterCount()) && startPosIntValue >= 0)
    {
      text = renderableComplexText.getRawText().substring(startPosIntValue, textLayout.getCharacterCount() + startPosIntValue);
    }
    else
    {
      text = renderableComplexText.getRawText();
    }

    final int x = PlainTextPage.correctedDivisionFloor((renderableComplexText.getX() - drawArea.getX()),
        characterWidthInMicroPoint);
    final int y = PlainTextPage.correctedDivisionFloor((renderableComplexText.getY() - drawArea.getY()),
        characterHeightInMicroPoint);
    int w = text.length();

    // filter out results that do not belong to the current physical page
    if (x + w > plainTextPage.getWidth())
    {
      w = Math.max(0, plainTextPage.getWidth() - x);
    }
    if (w == 0)
    {
      return;
    }
    if (y < 0)
    {
      return;
    }
    if (y >= plainTextPage.getHeight())
    {
      return;
    }

    plainTextPage.addTextChunk(x, y, w, text, renderableComplexText.getStyleSheet());
  }
View Full Code Here

            drawText(text, effectiveAreaX2);
          }
        }
        else if (node.getNodeType() == LayoutNodeTypes.TYPE_NODE_COMPLEX_TEXT)
        {
          final RenderableComplexText text = (RenderableComplexText) node;
          final long x1 = text.getX();

          if (x1 < contentAreaX2)
          {
            drawComplexText(node);
          }
View Full Code Here

TOP

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

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.