You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PSTextPainterTestCase.java 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements. See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License. You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. /* $Id$ */
  18. package org.apache.fop.svg;
  19. import java.awt.Graphics2D;
  20. import java.io.ByteArrayOutputStream;
  21. import java.io.IOException;
  22. import java.io.OutputStream;
  23. import org.junit.Assert;
  24. import org.junit.Test;
  25. import org.apache.batik.bridge.TextPainter;
  26. import org.apache.xmlgraphics.java2d.GraphicContext;
  27. import org.apache.xmlgraphics.java2d.ps.PSGraphics2D;
  28. import org.apache.xmlgraphics.ps.PSGenerator;
  29. import org.apache.fop.fonts.FontInfo;
  30. import org.apache.fop.render.ps.PSTextPainter;
  31. public class PSTextPainterTestCase extends NativeTextPainterTest {
  32. private static class OperatorCheckingPSGraphics2D extends PSGraphics2D {
  33. OperatorCheckingPSGraphics2D(FontInfo fontInfo, final OperatorValidator validator) {
  34. super(false, new PSGenerator(new ByteArrayOutputStream()) {
  35. @Override
  36. public void writeln(String cmd) throws IOException {
  37. super.writeln(cmd);
  38. validator.check(cmd);
  39. }
  40. });
  41. }
  42. }
  43. @Override
  44. protected TextPainter createTextPainter(FontInfo fontInfo) {
  45. return new PSTextPainter(fontInfo);
  46. }
  47. @Override
  48. protected Graphics2D createGraphics2D(FontInfo fontInfo, OperatorValidator validator) {
  49. PSGraphics2D g2d = new OperatorCheckingPSGraphics2D(fontInfo, validator);
  50. g2d.setGraphicContext(new GraphicContext());
  51. return g2d;
  52. }
  53. @Test
  54. public void testRotatedGlyph() throws Exception {
  55. runTest("rotated-glyph.svg", new OperatorValidator()
  56. .addOperatorMatch("Tm", "1 0 0 -1 40 110 Tm")
  57. .addOperatorMatch("xshow", "(A)\n[0] xshow")
  58. .addOperatorMatch("Tm", "0.70711 0.70711 0.70711 -0.70711 106.7 110 Tm")
  59. .addOperatorMatch("xshow", "(B)\n[0] xshow")
  60. .addOperatorMatch("Tm", "1 0 0 -1 173.39999 110 Tm")
  61. .addOperatorMatch("xshow", "(C)\n[0] xshow"));
  62. }
  63. @Test
  64. public void testWatermark() throws Exception {
  65. PSGraphics2D g2d = (PSGraphics2D) runTest("watermark.svg",
  66. new OperatorValidator().addOperatorMatch("GS", "GS"));
  67. OutputStream os = g2d.getPSGenerator().getOutputStream();
  68. Assert.assertFalse(os.toString().contains("( ) false charpath"));
  69. }
  70. }