/projects/jasperreports-3.7.4/src/net/sf/jasperreports/engine/export/draw/TextDrawer.java

https://gitlab.com/essere.lab.public/qualitas.class-corpus · Java · 203 lines · 120 code · 27 blank · 56 comment · 6 complexity · cee8070df89d5266035df2efc58b6c8d MD5 · raw file

  1. /*
  2. * JasperReports - Free Java Reporting Library.
  3. * Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved.
  4. * http://www.jaspersoft.com
  5. *
  6. * Unless you have purchased a commercial license agreement from Jaspersoft,
  7. * the following license terms apply:
  8. *
  9. * This program is part of JasperReports.
  10. *
  11. * JasperReports is free software: you can redistribute it and/or modify
  12. * it under the terms of the GNU Lesser General Public License as published by
  13. * the Free Software Foundation, either version 3 of the License, or
  14. * (at your option) any later version.
  15. *
  16. * JasperReports is distributed in the hope that it will be useful,
  17. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  19. * GNU Lesser General Public License for more details.
  20. *
  21. * You should have received a copy of the GNU Lesser General Public License
  22. * along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
  23. */
  24. /*
  25. * Contributors:
  26. * Eugene D - eugenedruy@users.sourceforge.net
  27. * Adrian Jackson - iapetus@users.sourceforge.net
  28. * David Taylor - exodussystems@users.sourceforge.net
  29. * Lars Kristensen - llk@users.sourceforge.net
  30. */
  31. package net.sf.jasperreports.engine.export.draw;
  32. import java.awt.Graphics2D;
  33. import net.sf.jasperreports.engine.JRCommonText;
  34. import net.sf.jasperreports.engine.JRPrintElement;
  35. import net.sf.jasperreports.engine.JRPrintText;
  36. import net.sf.jasperreports.engine.JRStyledTextAttributeSelector;
  37. import net.sf.jasperreports.engine.export.TextRenderer;
  38. import net.sf.jasperreports.engine.type.ModeEnum;
  39. import net.sf.jasperreports.engine.util.JRStyledText;
  40. /**
  41. * @author Teodor Danciu (teodord@users.sourceforge.net)
  42. * @version $Id: TextDrawer.java 3653 2010-03-30 16:12:52Z teodord $
  43. */
  44. public class TextDrawer extends ElementDrawer
  45. {
  46. /**
  47. *
  48. */
  49. protected TextRenderer textRenderer = null;
  50. /**
  51. *
  52. */
  53. public TextDrawer(
  54. TextRenderer textRenderer
  55. )
  56. {
  57. this.textRenderer = textRenderer;
  58. }
  59. /**
  60. *
  61. */
  62. public void draw(Graphics2D grx, JRPrintElement element, int offsetX, int offsetY)
  63. {
  64. JRPrintText text = (JRPrintText)element;
  65. JRStyledText styledText = getStyledText(text);
  66. if (styledText == null)
  67. {
  68. return;
  69. }
  70. String allText = styledText.getText();
  71. int x = text.getX() + offsetX;
  72. int y = text.getY() + offsetY;
  73. int width = text.getWidth();
  74. int height = text.getHeight();
  75. int topPadding = text.getLineBox().getTopPadding().intValue();
  76. int leftPadding = text.getLineBox().getLeftPadding().intValue();
  77. int bottomPadding = text.getLineBox().getBottomPadding().intValue();
  78. int rightPadding = text.getLineBox().getRightPadding().intValue();
  79. double angle = 0;
  80. switch (text.getRotationValue())
  81. {
  82. case LEFT :
  83. {
  84. y = text.getY() + offsetY + text.getHeight();
  85. width = text.getHeight();
  86. height = text.getWidth();
  87. int tmpPadding = topPadding;
  88. topPadding = leftPadding;
  89. leftPadding = bottomPadding;
  90. bottomPadding = rightPadding;
  91. rightPadding = tmpPadding;
  92. angle = - Math.PI / 2;
  93. break;
  94. }
  95. case RIGHT :
  96. {
  97. x = text.getX() + offsetX + text.getWidth();
  98. width = text.getHeight();
  99. height = text.getWidth();
  100. int tmpPadding = topPadding;
  101. topPadding = rightPadding;
  102. rightPadding = bottomPadding;
  103. bottomPadding = leftPadding;
  104. leftPadding = tmpPadding;
  105. angle = Math.PI / 2;
  106. break;
  107. }
  108. case UPSIDE_DOWN :
  109. {
  110. int tmpPadding = topPadding;
  111. x = text.getX() + offsetX + text.getWidth();
  112. y = text.getY() + offsetY + text.getHeight();
  113. topPadding = bottomPadding;
  114. bottomPadding = tmpPadding;
  115. tmpPadding = leftPadding;
  116. leftPadding = rightPadding;
  117. rightPadding = tmpPadding;
  118. angle = Math.PI;
  119. break;
  120. }
  121. case NONE :
  122. default :
  123. {
  124. }
  125. }
  126. grx.rotate(angle, x, y);
  127. if (text.getModeValue() == ModeEnum.OPAQUE)
  128. {
  129. grx.setColor(text.getBackcolor());
  130. grx.fillRect(x, y, width, height);
  131. }
  132. // else
  133. // {
  134. // /*
  135. // grx.setColor(text.getForecolor());
  136. // grx.setStroke(new BasicStroke(1));
  137. // grx.drawRect(x, y, width, height);
  138. // */
  139. // }
  140. if (allText.length() > 0)
  141. {
  142. grx.setColor(text.getForecolor());
  143. /* */
  144. textRenderer.render(
  145. grx,
  146. x,
  147. y,
  148. width,
  149. height,
  150. topPadding,
  151. leftPadding,
  152. bottomPadding,
  153. rightPadding,
  154. text.getTextHeight(),
  155. text.getHorizontalAlignmentValue(),
  156. text.getVerticalAlignmentValue(),
  157. text.getLineSpacingFactor(),
  158. text.getLeadingOffset(),
  159. text.getFontSize(),
  160. !JRCommonText.MARKUP_NONE.equals(text.getMarkup()),
  161. styledText,
  162. allText
  163. );
  164. }
  165. grx.rotate(-angle, x, y);
  166. /* */
  167. drawBox(grx, text.getLineBox(), text, offsetX, offsetY);
  168. }
  169. /**
  170. *
  171. */
  172. protected JRStyledText getStyledText(JRPrintText textElement)
  173. {
  174. return textElement.getStyledText(JRStyledTextAttributeSelector.NO_BACKCOLOR);
  175. }
  176. }