picrate 2.3.0-java → 2.4.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +2 -0
 - data/README.md +1 -1
 - data/lib/picrate/app.rb +1 -5
 - data/lib/picrate/version.rb +1 -1
 - data/library/pdf/pdf.rb +1 -0
 - data/library/svg/svg.rb +7 -0
 - data/picrate.gemspec +3 -2
 - data/pom.rb +17 -9
 - data/pom.xml +16 -3
 - data/src/main/java/monkstone/FastNoiseModuleJava.java +127 -0
 - data/src/main/java/monkstone/PicrateLibrary.java +2 -0
 - data/src/main/java/monkstone/SmoothNoiseModuleJava.java +127 -0
 - data/src/main/java/monkstone/noise/OpenSimplex2F.java +752 -820
 - data/src/main/java/monkstone/noise/OpenSimplex2S.java +1138 -1106
 - data/src/main/java/processing/core/PApplet.java +1 -92
 - data/src/main/java/processing/pdf/PGraphicsPDF.java +61 -139
 - data/src/main/java/processing/svg/PGraphicsSVG.java +378 -0
 - data/test/respond_to_test.rb +0 -1
 - data/vendors/Rakefile +1 -1
 - metadata +15 -15
 - data/src/main/java/monkstone/noise/FastTerrain.java +0 -874
 - data/src/main/java/monkstone/noise/Noise.java +0 -90
 - data/src/main/java/monkstone/noise/NoiseGenerator.java +0 -75
 - data/src/main/java/monkstone/noise/NoiseMode.java +0 -28
 - data/src/main/java/monkstone/noise/SmoothTerrain.java +0 -1099
 
| 
         @@ -39,7 +39,6 @@ import java.util.zip.*; 
     | 
|
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
            // loadXML() error handling
         
     | 
| 
       41 
41 
     | 
    
         
             
            import javax.xml.parsers.ParserConfigurationException;
         
     | 
| 
       42 
     | 
    
         
            -
            import monkstone.noise.NoiseGenerator;
         
     | 
| 
       43 
42 
     | 
    
         
             
            import org.xml.sax.SAXException;
         
     | 
| 
       44 
43 
     | 
    
         | 
| 
       45 
44 
     | 
    
         
             
            // TODO have this removed by 4.0 final
         
     | 
| 
         @@ -48,8 +47,6 @@ import processing.awt.ShimAWT; 
     | 
|
| 
       48 
47 
     | 
    
         
             
            import processing.data.*;
         
     | 
| 
       49 
48 
     | 
    
         
             
            import processing.event.*;
         
     | 
| 
       50 
49 
     | 
    
         
             
            import processing.opengl.*;
         
     | 
| 
       51 
     | 
    
         
            -
            import monkstone.noise.Noise;
         
     | 
| 
       52 
     | 
    
         
            -
            import monkstone.noise.NoiseMode;
         
     | 
| 
       53 
50 
     | 
    
         | 
| 
       54 
51 
     | 
    
         
             
            /**
         
     | 
| 
       55 
52 
     | 
    
         
             
             * Base class for all sketches that use processing.core.
         
     | 
| 
         @@ -106,7 +103,6 @@ public class PApplet implements PConstants { 
     | 
|
| 
       106 
103 
     | 
    
         
             
                    }
         
     | 
| 
       107 
104 
     | 
    
         
             
                }
         
     | 
| 
       108 
105 
     | 
    
         | 
| 
       109 
     | 
    
         
            -
                Noise noiseGenerator = new NoiseGenerator();
         
     | 
| 
       110 
106 
     | 
    
         
             
                /**
         
     | 
| 
       111 
107 
     | 
    
         
             
                 * Whether to use native (AWT) dialogs for selectInput and selectOutput. The
         
     | 
| 
       112 
108 
     | 
    
         
             
                 * native dialogs on some platforms can be ugly, buggy, or missing features.
         
     | 
| 
         @@ -4887,9 +4883,6 @@ public class PApplet implements PConstants { 
     | 
|
| 
       4887 
4883 
     | 
    
         
             
                    internalRandom.setSeed(seed);
         
     | 
| 
       4888 
4884 
     | 
    
         
             
                }
         
     | 
| 
       4889 
4885 
     | 
    
         | 
| 
       4890 
     | 
    
         
            -
                public void noiseMode(NoiseMode mode) {
         
     | 
| 
       4891 
     | 
    
         
            -
                    noiseGenerator.noiseMode(mode);
         
     | 
| 
       4892 
     | 
    
         
            -
                }
         
     | 
| 
       4893 
4886 
     | 
    
         
             
                /**
         
     | 
| 
       4894 
4887 
     | 
    
         
             
                 * 
         
     | 
| 
       4895 
4888 
     | 
    
         
             
                 * @param lod
         
     | 
| 
         @@ -4913,91 +4906,7 @@ public class PApplet implements PConstants { 
     | 
|
| 
       4913 
4906 
     | 
    
         | 
| 
       4914 
4907 
     | 
    
         
             
                }
         
     | 
| 
       4915 
4908 
     | 
    
         | 
| 
       4916 
     | 
    
         
            -
             
     | 
| 
       4917 
     | 
    
         
            -
                 * @param x
         
     | 
| 
       4918 
     | 
    
         
            -
                 * @return
         
     | 
| 
       4919 
     | 
    
         
            -
                 */
         
     | 
| 
       4920 
     | 
    
         
            -
                public float noise(float x) {
         
     | 
| 
       4921 
     | 
    
         
            -
                    return noiseGenerator.noise(x);
         
     | 
| 
       4922 
     | 
    
         
            -
                }
         
     | 
| 
       4923 
     | 
    
         
            -
             
     | 
| 
       4924 
     | 
    
         
            -
                /**
         
     | 
| 
       4925 
     | 
    
         
            -
                 * @param x
         
     | 
| 
       4926 
     | 
    
         
            -
                 * @param y
         
     | 
| 
       4927 
     | 
    
         
            -
                 * @return
         
     | 
| 
       4928 
     | 
    
         
            -
                 */
         
     | 
| 
       4929 
     | 
    
         
            -
                public float noise(float x, float y) {
         
     | 
| 
       4930 
     | 
    
         
            -
                    return noiseGenerator.noise(x, y);
         
     | 
| 
       4931 
     | 
    
         
            -
                }
         
     | 
| 
       4932 
     | 
    
         
            -
             
     | 
| 
       4933 
     | 
    
         
            -
                /**
         
     | 
| 
       4934 
     | 
    
         
            -
                 * ( begin auto-generated from noise.xml )
         
     | 
| 
       4935 
     | 
    
         
            -
                 *
         
     | 
| 
       4936 
     | 
    
         
            -
                 * Returns the Perlin noise value at specified coordinates.Perlin noise is a
         
     | 
| 
       4937 
     | 
    
         
            -
                 * random sequence generator producing a more natural ordered, harmonic
         
     | 
| 
       4938 
     | 
    
         
            -
                 * succession of numbers compared to the standard <b>random()</b> function.
         
     | 
| 
       4939 
     | 
    
         
            -
                 * It was invented by Ken Perlin in the 1980s and been used since in
         
     | 
| 
       4940 
     | 
    
         
            -
                 * graphical applications to produce procedural textures, natural motion,
         
     | 
| 
       4941 
     | 
    
         
            -
                 * shapes, terrains etc. The main difference to the
         
     | 
| 
       4942 
     | 
    
         
            -
                 * <b>random()</b> function is that Perlin noise is defined in an infinite
         
     | 
| 
       4943 
     | 
    
         
            -
                 * n-dimensional space where each pair of coordinates corresponds to a fixed
         
     | 
| 
       4944 
     | 
    
         
            -
                 * semi-random value (fixed only for the lifespan of the program). The
         
     | 
| 
       4945 
     | 
    
         
            -
                 * resulting value will always be between 0.0 and 1.0. Processing can
         
     | 
| 
       4946 
     | 
    
         
            -
                 * compute 1D, 2D and 3D noise, depending on the number of coordinates
         
     | 
| 
       4947 
     | 
    
         
            -
                 * given. The noise value can be animated by moving through the noise space
         
     | 
| 
       4948 
     | 
    
         
            -
                 * as demonstrated in the example above. The 2nd and 3rd dimension can also
         
     | 
| 
       4949 
     | 
    
         
            -
                 * be interpreted as time.The actual noise is structured similar to an audio
         
     | 
| 
       4950 
     | 
    
         
            -
                 * signal, in respect to the function's use of frequencies. Similar to the
         
     | 
| 
       4951 
     | 
    
         
            -
                 * concept of harmonics in physics, perlin noise is computed over several
         
     | 
| 
       4952 
     | 
    
         
            -
                 * octaves which are added together for the final result. Another way to
         
     | 
| 
       4953 
     | 
    
         
            -
                 * adjust the character of the resulting sequence is the scale of the input
         
     | 
| 
       4954 
     | 
    
         
            -
                 * coordinates. As the function works within an infinite space the value of
         
     | 
| 
       4955 
     | 
    
         
            -
                 * the coordinates doesn't matter as such, only the distance between
         
     | 
| 
       4956 
     | 
    
         
            -
                 * successive coordinates does (eg. when using <b>noise()</b> within a
         
     | 
| 
       4957 
     | 
    
         
            -
                 * loop). As a general rule the smaller the difference between coordinates,
         
     | 
| 
       4958 
     | 
    
         
            -
                 * the smoother the resulting noise sequence will be. Steps of 0.005-0.03
         
     | 
| 
       4959 
     | 
    
         
            -
                 * work best for most applications, but this will differ depending on use.
         
     | 
| 
       4960 
     | 
    
         
            -
                 *
         
     | 
| 
       4961 
     | 
    
         
            -
                 *
         
     | 
| 
       4962 
     | 
    
         
            -
                 *
         
     | 
| 
       4963 
     | 
    
         
            -
                 * @return
         
     | 
| 
       4964 
     | 
    
         
            -
                 * @webref math:random
         
     | 
| 
       4965 
     | 
    
         
            -
                 * @param x x-coordinate in noise space
         
     | 
| 
       4966 
     | 
    
         
            -
                 * @param y y-coordinate in noise space
         
     | 
| 
       4967 
     | 
    
         
            -
                 * @param z z-coordinate in noise space
         
     | 
| 
       4968 
     | 
    
         
            -
                 * @see PApplet#noiseSeed(long)
         
     | 
| 
       4969 
     | 
    
         
            -
                 * @see PApplet#noiseDetail(int, float)
         
     | 
| 
       4970 
     | 
    
         
            -
                 * @see PApplet#random(float,float)
         
     | 
| 
       4971 
     | 
    
         
            -
                 */
         
     | 
| 
       4972 
     | 
    
         
            -
                public float noise(float x, float y, float z) {
         
     | 
| 
       4973 
     | 
    
         
            -
                    return noiseGenerator.noise(x, y, z);
         
     | 
| 
       4974 
     | 
    
         
            -
                }
         
     | 
| 
       4975 
     | 
    
         
            -
             
     | 
| 
       4976 
     | 
    
         
            -
                public float noise(float x, float y, float z, float w) {
         
     | 
| 
       4977 
     | 
    
         
            -
                    return noiseGenerator.noise(x, y, z, w);
         
     | 
| 
       4978 
     | 
    
         
            -
                }
         
     | 
| 
       4979 
     | 
    
         
            -
             
     | 
| 
       4980 
     | 
    
         
            -
                /**
         
     | 
| 
       4981 
     | 
    
         
            -
                 *
         
     | 
| 
       4982 
     | 
    
         
            -
                 *
         
     | 
| 
       4983 
     | 
    
         
            -
                 * Sets the seed value for <b>noise()</b>. By default, <b>noise()</b>
         
     | 
| 
       4984 
     | 
    
         
            -
                 * produces different results each time the program is run. Set the
         
     | 
| 
       4985 
     | 
    
         
            -
                 * <b>value</b> parameter to a constant to return the same pseudo-random
         
     | 
| 
       4986 
     | 
    
         
            -
                 * numbers each time the software is run.
         
     | 
| 
       4987 
     | 
    
         
            -
                 *
         
     | 
| 
       4988 
     | 
    
         
            -
                 *
         
     | 
| 
       4989 
     | 
    
         
            -
                 * @webref math:random
         
     | 
| 
       4990 
     | 
    
         
            -
                 * @param seed seed value
         
     | 
| 
       4991 
     | 
    
         
            -
                 * @see PApplet#noise(float, float, float)
         
     | 
| 
       4992 
     | 
    
         
            -
                 * @see PApplet#noiseDetail(int, float)
         
     | 
| 
       4993 
     | 
    
         
            -
                 * @see PApplet#random(float,float)
         
     | 
| 
       4994 
     | 
    
         
            -
                 * @see PApplet#randomSeed(long)
         
     | 
| 
       4995 
     | 
    
         
            -
                 */
         
     | 
| 
       4996 
     | 
    
         
            -
                public void noiseSeed(long seed) {
         
     | 
| 
       4997 
     | 
    
         
            -
                    noiseGenerator.noiseSeed(seed);
         
     | 
| 
       4998 
     | 
    
         
            -
                }
         
     | 
| 
       4999 
     | 
    
         
            -
             
     | 
| 
       5000 
     | 
    
         
            -
                // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
         
     | 
| 
      
 4909 
     | 
    
         
            +
               // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
         
     | 
| 
       5001 
4910 
     | 
    
         
             
                /**
         
     | 
| 
       5002 
4911 
     | 
    
         
             
                 * ( begin auto-generated from loadImage.xml )
         
     | 
| 
       5003 
4912 
     | 
    
         
             
                 *
         
     | 
| 
         @@ -21,37 +21,39 @@ 
     | 
|
| 
       21 
21 
     | 
    
         
             
            package processing.pdf;
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
            import com.itextpdf.awt.DefaultFontMapper;
         
     | 
| 
       24 
     | 
    
         
            -
            import com.itextpdf. 
     | 
| 
      
 24 
     | 
    
         
            +
            import com.itextpdf.awt.PdfGraphics2D;
         
     | 
| 
       25 
25 
     | 
    
         
             
            import com.itextpdf.text.Document;
         
     | 
| 
       26 
26 
     | 
    
         
             
            import com.itextpdf.text.DocumentException;
         
     | 
| 
      
 27 
     | 
    
         
            +
            import com.itextpdf.text.Rectangle;
         
     | 
| 
       27 
28 
     | 
    
         
             
            import com.itextpdf.text.pdf.ByteBuffer;
         
     | 
| 
       28 
29 
     | 
    
         
             
            import com.itextpdf.text.pdf.PdfContentByte;
         
     | 
| 
       29 
30 
     | 
    
         
             
            import com.itextpdf.text.pdf.PdfWriter;
         
     | 
| 
       30 
31 
     | 
    
         
             
            import java.awt.Font;
         
     | 
| 
       31 
32 
     | 
    
         
             
            import java.awt.Graphics2D;
         
     | 
| 
       32 
33 
     | 
    
         
             
            import java.awt.Image;
         
     | 
| 
       33 
     | 
    
         
            -
            import java.io 
     | 
| 
       34 
     | 
    
         
            -
            import java. 
     | 
| 
      
 34 
     | 
    
         
            +
            import java.io.BufferedOutputStream;
         
     | 
| 
      
 35 
     | 
    
         
            +
            import java.io.File;
         
     | 
| 
      
 36 
     | 
    
         
            +
            import java.io.FileNotFoundException;
         
     | 
| 
      
 37 
     | 
    
         
            +
            import java.io.FileOutputStream;
         
     | 
| 
      
 38 
     | 
    
         
            +
            import java.io.OutputStream;
         
     | 
| 
      
 39 
     | 
    
         
            +
            import java.util.Arrays;
         
     | 
| 
      
 40 
     | 
    
         
            +
            import java.util.HashMap;
         
     | 
| 
       35 
41 
     | 
    
         
             
            import java.util.logging.Level;
         
     | 
| 
       36 
42 
     | 
    
         
             
            import java.util.logging.Logger;
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
            //import com.lowagie.text.*;
         
     | 
| 
       39 
     | 
    
         
            -
            //import com.lowagie.text.pdf.*;
         
     | 
| 
       40 
     | 
    
         
            -
            //import com.lowagie.text.pdf.ByteBuffer;
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
43 
     | 
    
         
             
            import processing.awt.PGraphicsJava2D;
         
     | 
| 
       43 
     | 
    
         
            -
            import processing.core 
     | 
| 
      
 44 
     | 
    
         
            +
            import processing.core.PApplet;
         
     | 
| 
      
 45 
     | 
    
         
            +
            import processing.core.PConstants;
         
     | 
| 
      
 46 
     | 
    
         
            +
            import processing.core.PFont;
         
     | 
| 
      
 47 
     | 
    
         
            +
            import processing.core.PImage;
         
     | 
| 
      
 48 
     | 
    
         
            +
            import processing.core.PStyle;
         
     | 
| 
      
 49 
     | 
    
         
            +
            import processing.core.PSurface;
         
     | 
| 
      
 50 
     | 
    
         
            +
            import processing.core.PSurfaceNone;
         
     | 
| 
       44 
51 
     | 
    
         | 
| 
       45 
52 
     | 
    
         
             
            /**
         
     | 
| 
       46 
53 
     | 
    
         
             
             * Thin wrapper for the iText PDF library that handles writing PDF files. The
         
     | 
| 
       47 
54 
     | 
    
         
             
             * majority of the work in this library is done by
         
     | 
| 
       48 
     | 
    
         
            -
             * <a href=" 
     | 
| 
       49 
     | 
    
         
            -
             *  
     | 
| 
       50 
     | 
    
         
            -
             * The issue is that versions from the 5.x series were slow to handle lots of
         
     | 
| 
       51 
     | 
    
         
            -
             * fonts with the DefaultFontMapper. 2.x seemed a little slower than 1.x, but
         
     | 
| 
       52 
     | 
    
         
            -
             * 5.x took up to 10 times the time to load, meaning a lag of several seconds
         
     | 
| 
       53 
     | 
    
         
            -
             * when starting sketches on a machine that had a good handful of fonts
         
     | 
| 
       54 
     | 
    
         
            -
             * installed. (Like, say, anyone in our target audience. Or me.)
         
     | 
| 
      
 55 
     | 
    
         
            +
             * <a href="https://github.com/itext/itextpdf">itextpdf</a>. This is currently using
         
     | 
| 
      
 56 
     | 
    
         
            +
             * itextpdf-5.5.13.2.
         
     | 
| 
       55 
57 
     | 
    
         
             
             */
         
     | 
| 
       56 
58 
     | 
    
         
             
            public class PGraphicsPDF extends PGraphicsJava2D {
         
     | 
| 
       57 
59 
     | 
    
         | 
| 
         @@ -67,20 +69,13 @@ public class PGraphicsPDF extends PGraphicsJava2D { 
     | 
|
| 
       67 
69 
     | 
    
         
             
                protected Document document;
         
     | 
| 
       68 
70 
     | 
    
         
             
                protected PdfWriter writer;
         
     | 
| 
       69 
71 
     | 
    
         
             
                protected PdfContentByte content;
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
      
 72 
     | 
    
         
            +
                protected PdfGraphics2D graphicContent;
         
     | 
| 
       71 
73 
     | 
    
         
             
                /**
         
     | 
| 
       72 
74 
     | 
    
         
             
                 * Shared across instances because it's incredibly time-consuming to create.
         
     | 
| 
       73 
75 
     | 
    
         
             
                 */
         
     | 
| 
       74 
76 
     | 
    
         
             
                static protected DefaultFontMapper mapper;
         
     | 
| 
       75 
77 
     | 
    
         
             
                static protected String[] fontList;
         
     | 
| 
       76 
78 
     | 
    
         | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
                /*
         
     | 
| 
       79 
     | 
    
         
            -
              public PGraphicsPDF() {
         
     | 
| 
       80 
     | 
    
         
            -
                // PDF always likes native fonts. Always.
         
     | 
| 
       81 
     | 
    
         
            -
                hint(ENABLE_NATIVE_FONTS);
         
     | 
| 
       82 
     | 
    
         
            -
              }
         
     | 
| 
       83 
     | 
    
         
            -
                 */
         
     | 
| 
       84 
79 
     | 
    
         
             
                @Override
         
     | 
| 
       85 
80 
     | 
    
         
             
                public void setPath(String path) {
         
     | 
| 
       86 
81 
     | 
    
         
             
                    this.path = path;
         
     | 
| 
         @@ -104,15 +99,6 @@ public class PGraphicsPDF extends PGraphicsJava2D { 
     | 
|
| 
       104 
99 
     | 
    
         
             
                    this.output = output;
         
     | 
| 
       105 
100 
     | 
    
         
             
                }
         
     | 
| 
       106 
101 
     | 
    
         | 
| 
       107 
     | 
    
         
            -
            //  /**
         
     | 
| 
       108 
     | 
    
         
            -
            //   * all the init stuff happens in here, in case someone calls size()
         
     | 
| 
       109 
     | 
    
         
            -
            //   * along the way and wants to hork things up.
         
     | 
| 
       110 
     | 
    
         
            -
            //   */
         
     | 
| 
       111 
     | 
    
         
            -
            //  protected void allocate() {
         
     | 
| 
       112 
     | 
    
         
            -
            //    // can't do anything here, because this will be called by the
         
     | 
| 
       113 
     | 
    
         
            -
            //    // superclass PGraphics, and the file/path object won't be set yet
         
     | 
| 
       114 
     | 
    
         
            -
            //    // (since super() called right at the beginning of the constructor)
         
     | 
| 
       115 
     | 
    
         
            -
            //  }
         
     | 
| 
       116 
102 
     | 
    
         
             
                @Override
         
     | 
| 
       117 
103 
     | 
    
         
             
                public PSurface createSurface() {
         
     | 
| 
       118 
104 
     | 
    
         
             
                    return surface = new PSurfaceNone(this);
         
     | 
| 
         @@ -126,19 +112,17 @@ public class PGraphicsPDF extends PGraphicsJava2D { 
     | 
|
| 
       126 
112 
     | 
    
         | 
| 
       127 
113 
     | 
    
         
             
                @Override
         
     | 
| 
       128 
114 
     | 
    
         
             
                public void beginDraw() {
         
     | 
| 
       129 
     | 
    
         
            -
            //    long t0 = System.currentTimeMillis();
         
     | 
| 
       130 
     | 
    
         
            -
             
     | 
| 
       131 
115 
     | 
    
         
             
                    if (document == null) {
         
     | 
| 
       132 
     | 
    
         
            -
                        // https://github.com/processing/processing/issues/5801#issuecomment-466632459
         
     | 
| 
       133 
116 
     | 
    
         
             
                        ByteBuffer.HIGH_PRECISION = true;
         
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
       135 
117 
     | 
    
         
             
                        document = new Document(new Rectangle(width, height));
         
     | 
| 
       136 
118 
     | 
    
         
             
                        boolean missingPath = false;
         
     | 
| 
       137 
119 
     | 
    
         
             
                        try {
         
     | 
| 
       138 
120 
     | 
    
         
             
                            if (file != null) {
         
     | 
| 
       139 
     | 
    
         
            -
                                 
     | 
| 
       140 
     | 
    
         
            -
             
     | 
| 
       141 
     | 
    
         
            -
             
     | 
| 
      
 121 
     | 
    
         
            +
                                try {
         
     | 
| 
      
 122 
     | 
    
         
            +
                                    output = new BufferedOutputStream(new FileOutputStream(file), 16384);
         
     | 
| 
      
 123 
     | 
    
         
            +
                                } catch (FileNotFoundException ex) {
         
     | 
| 
      
 124 
     | 
    
         
            +
                                    Logger.getLogger(PGraphicsPDF.class.getName()).log(Level.SEVERE, null, ex);
         
     | 
| 
      
 125 
     | 
    
         
            +
                                }
         
     | 
| 
       142 
126 
     | 
    
         
             
                            } else if (output == null) {
         
     | 
| 
       143 
127 
     | 
    
         
             
                                missingPath = true;
         
     | 
| 
       144 
128 
     | 
    
         
             
                                throw new RuntimeException("PGraphicsPDF requires a path "
         
     | 
| 
         @@ -159,13 +143,8 @@ public class PGraphicsPDF extends PGraphicsJava2D { 
     | 
|
| 
       159 
143 
     | 
    
         
             
                            } else {
         
     | 
| 
       160 
144 
     | 
    
         
             
                                throw new RuntimeException("Problem saving the PDF file.", re);
         
     | 
| 
       161 
145 
     | 
    
         
             
                            }
         
     | 
| 
       162 
     | 
    
         
            -
             
     | 
| 
       163 
     | 
    
         
            -
                        } catch (FileNotFoundException fnfe) {
         
     | 
| 
       164 
     | 
    
         
            -
                            throw new RuntimeException("Can't save the PDF file to " + path, fnfe);
         
     | 
| 
       165 
     | 
    
         
            -
             
     | 
| 
       166 
146 
     | 
    
         
             
                        }
         
     | 
| 
       167 
     | 
    
         
            -
             
     | 
| 
       168 
     | 
    
         
            -
                        g2 = content.createGraphicsShapes(width, height);
         
     | 
| 
      
 147 
     | 
    
         
            +
                        g2 = new PdfGraphics2D(content, width, height);
         
     | 
| 
       169 
148 
     | 
    
         
             
                    }
         
     | 
| 
       170 
149 
     | 
    
         | 
| 
       171 
150 
     | 
    
         
             
                    // super in Java2D now creates an image buffer, don't do that
         
     | 
| 
         @@ -173,24 +152,16 @@ public class PGraphicsPDF extends PGraphicsJava2D { 
     | 
|
| 
       173 
152 
     | 
    
         
             
                    checkSettings();
         
     | 
| 
       174 
153 
     | 
    
         
             
                    resetMatrix(); // reset model matrix
         
     | 
| 
       175 
154 
     | 
    
         
             
                    vertexCount = 0;
         
     | 
| 
       176 
     | 
    
         
            -
             
     | 
| 
       177 
     | 
    
         
            -
                    // Also need to push the matrix since the matrix doesn't reset on each run
         
     | 
| 
       178 
     | 
    
         
            -
                    // http://dev.processing.org/bugs/show_bug.cgi?id=1227
         
     | 
| 
       179 
155 
     | 
    
         
             
                    pushMatrix();
         
     | 
| 
       180 
156 
     | 
    
         
             
                }
         
     | 
| 
       181 
157 
     | 
    
         | 
| 
       182 
158 
     | 
    
         
             
                static protected DefaultFontMapper getMapper() {
         
     | 
| 
       183 
159 
     | 
    
         
             
                    if (mapper == null) {
         
     | 
| 
       184 
     | 
    
         
            -
            //      long t = System.currentTimeMillis();
         
     | 
| 
       185 
160 
     | 
    
         
             
                        mapper = new DefaultFontMapper();
         
     | 
| 
       186 
     | 
    
         
            -
             
     | 
| 
       187 
     | 
    
         
            -
             
     | 
| 
       188 
     | 
    
         
            -
             
     | 
| 
       189 
     | 
    
         
            -
                            checkDir("/usr/local/share/fonts/", mapper);
         
     | 
| 
       190 
     | 
    
         
            -
                            checkDir(System.getProperty("user.home") + "/.fonts", mapper);
         
     | 
| 
      
 161 
     | 
    
         
            +
                                checkDir("/usr/share/fonts/", mapper);
         
     | 
| 
      
 162 
     | 
    
         
            +
                                checkDir("/usr/local/share/fonts/", mapper);
         
     | 
| 
      
 163 
     | 
    
         
            +
                                checkDir(System.getProperty("user.home") + "/.fonts", mapper);
         
     | 
| 
       191 
164 
     | 
    
         
             
                        }
         
     | 
| 
       192 
     | 
    
         
            -
            //      System.out.println("mapping " + (System.currentTimeMillis() - t));
         
     | 
| 
       193 
     | 
    
         
            -
                    }
         
     | 
| 
       194 
165 
     | 
    
         
             
                    return mapper;
         
     | 
| 
       195 
166 
     | 
    
         
             
                }
         
     | 
| 
       196 
167 
     | 
    
         | 
| 
         @@ -204,8 +175,10 @@ public class PGraphicsPDF extends PGraphicsJava2D { 
     | 
|
| 
       204 
175 
     | 
    
         | 
| 
       205 
176 
     | 
    
         
             
                /**
         
     | 
| 
       206 
177 
     | 
    
         
             
                 * Recursive walk to get all subdirectories for font fun.Patch submitted by
         
     | 
| 
       207 
     | 
    
         
            -
             Matthias 
     | 
| 
       208 
     | 
    
         
            -
             1566 
     | 
| 
      
 178 
     | 
    
         
            +
                 * Matthias
         
     | 
| 
      
 179 
     | 
    
         
            +
                 * Breuer.(<a href="http://dev.processing.org/bugs/show_bug.cgi?id=1566">Bug
         
     | 
| 
      
 180 
     | 
    
         
            +
                 * 1566</a>)
         
     | 
| 
      
 181 
     | 
    
         
            +
                 *
         
     | 
| 
       209 
182 
     | 
    
         
             
                 * @param folder
         
     | 
| 
       210 
183 
     | 
    
         
             
                 * @param mapper
         
     | 
| 
       211 
184 
     | 
    
         
             
                 */
         
     | 
| 
         @@ -249,9 +222,9 @@ public class PGraphicsPDF extends PGraphicsJava2D { 
     | 
|
| 
       249 
222 
     | 
    
         | 
| 
       250 
223 
     | 
    
         
             
                protected Graphics2D createGraphics() {
         
     | 
| 
       251 
224 
     | 
    
         
             
                    if (textMode == SHAPE) {
         
     | 
| 
       252 
     | 
    
         
            -
                      return content 
     | 
| 
      
 225 
     | 
    
         
            +
                      return new PdfGraphics2D(content, width, height);
         
     | 
| 
       253 
226 
     | 
    
         
             
                    } else if (textMode == MODEL) {
         
     | 
| 
       254 
     | 
    
         
            -
                        return content 
     | 
| 
      
 227 
     | 
    
         
            +
                        return new PdfGraphics2D(content, width, height, getMapper());
         
     | 
| 
       255 
228 
     | 
    
         
             
                    }
         
     | 
| 
       256 
229 
     | 
    
         
             
                    // Should not be reachable...
         
     | 
| 
       257 
230 
     | 
    
         
             
                    throw new RuntimeException("Invalid textMode() selected for PDF.");
         
     | 
| 
         @@ -276,45 +249,6 @@ public class PGraphicsPDF extends PGraphicsJava2D { 
     | 
|
| 
       276 
249 
     | 
    
         
             
                    return false;
         
     | 
| 
       277 
250 
     | 
    
         
             
                }
         
     | 
| 
       278 
251 
     | 
    
         | 
| 
       279 
     | 
    
         
            -
                /*
         
     | 
| 
       280 
     | 
    
         
            -
              protected void finalize() throws Throwable {
         
     | 
| 
       281 
     | 
    
         
            -
                System.out.println("calling finalize");
         
     | 
| 
       282 
     | 
    
         
            -
              //document.close();  // do this in dispose instead?
         
     | 
| 
       283 
     | 
    
         
            -
              }
         
     | 
| 
       284 
     | 
    
         
            -
                 */
         
     | 
| 
       285 
     | 
    
         
            -
                //////////////////////////////////////////////////////////////
         
     | 
| 
       286 
     | 
    
         
            -
                /*
         
     | 
| 
       287 
     | 
    
         
            -
              public void endRecord() {
         
     | 
| 
       288 
     | 
    
         
            -
                super.endRecord();
         
     | 
| 
       289 
     | 
    
         
            -
                dispose();
         
     | 
| 
       290 
     | 
    
         
            -
              }
         
     | 
| 
       291 
     | 
    
         
            -
             
     | 
| 
       292 
     | 
    
         
            -
             
     | 
| 
       293 
     | 
    
         
            -
              public void endRaw() {
         
     | 
| 
       294 
     | 
    
         
            -
                System.out.println("ending raw");
         
     | 
| 
       295 
     | 
    
         
            -
                super.endRaw();
         
     | 
| 
       296 
     | 
    
         
            -
                System.out.println("disposing");
         
     | 
| 
       297 
     | 
    
         
            -
                dispose();
         
     | 
| 
       298 
     | 
    
         
            -
                System.out.println("done");
         
     | 
| 
       299 
     | 
    
         
            -
              }
         
     | 
| 
       300 
     | 
    
         
            -
                 */
         
     | 
| 
       301 
     | 
    
         
            -
                //////////////////////////////////////////////////////////////
         
     | 
| 
       302 
     | 
    
         
            -
                /*
         
     | 
| 
       303 
     | 
    
         
            -
              protected void rectImpl(float x1, float y1, float x2, float y2) {
         
     | 
| 
       304 
     | 
    
         
            -
                //rect.setFrame(x1, y1, x2-x1, y2-y1);
         
     | 
| 
       305 
     | 
    
         
            -
                //draw_shape(rect);
         
     | 
| 
       306 
     | 
    
         
            -
                System.out.println("rect implements");
         
     | 
| 
       307 
     | 
    
         
            -
                g2.fillRect((int)x1, (int)y1, (int) (x2-x1), (int) (y2-y1));
         
     | 
| 
       308 
     | 
    
         
            -
              }
         
     | 
| 
       309 
     | 
    
         
            -
              *
         
     | 
| 
       310 
     | 
    
         
            -
             
     | 
| 
       311 
     | 
    
         
            -
              /*
         
     | 
| 
       312 
     | 
    
         
            -
              public void clear() {
         
     | 
| 
       313 
     | 
    
         
            -
                g2.setColor(Color.red);
         
     | 
| 
       314 
     | 
    
         
            -
                g2.fillRect(0, 0, width, height);
         
     | 
| 
       315 
     | 
    
         
            -
              }
         
     | 
| 
       316 
     | 
    
         
            -
                 */
         
     | 
| 
       317 
     | 
    
         
            -
                //////////////////////////////////////////////////////////////
         
     | 
| 
       318 
252 
     | 
    
         
             
                @Override
         
     | 
| 
       319 
253 
     | 
    
         
             
                protected void imageImpl(PImage image,
         
     | 
| 
       320 
254 
     | 
    
         
             
                        float x1, float y1, float x2, float y2,
         
     | 
| 
         @@ -339,49 +273,36 @@ public class PGraphicsPDF extends PGraphicsJava2D { 
     | 
|
| 
       339 
273 
     | 
    
         
             
                public void textFont(PFont which) {
         
     | 
| 
       340 
274 
     | 
    
         
             
                    super.textFont(which);
         
     | 
| 
       341 
275 
     | 
    
         
             
                    checkFont();
         
     | 
| 
       342 
     | 
    
         
            -
                    // Make sure a native version of the font is available.
         
     | 
| 
       343 
     | 
    
         
            -
            //    if (textFont.getFont() == null) {
         
     | 
| 
       344 
     | 
    
         
            -
            //      throw new RuntimeException("Use createFont() instead of loadFont() " +
         
     | 
| 
       345 
     | 
    
         
            -
            //                                 "when drawing text using the PDF library.");
         
     | 
| 
       346 
     | 
    
         
            -
            //    }
         
     | 
| 
       347 
     | 
    
         
            -
                    // Make sure that this is a font that the PDF library can deal with.
         
     | 
| 
       348 
     | 
    
         
            -
            //    if ((textMode != SHAPE) && !checkFont(which.getName())) {
         
     | 
| 
       349 
     | 
    
         
            -
            //      System.err.println("Use PGraphicsPDF.listFonts() to get a list of available fonts.");
         
     | 
| 
       350 
     | 
    
         
            -
            //      throw new RuntimeException("The font “" + which.getName() + "” cannot be used with PDF Export.");
         
     | 
| 
       351 
     | 
    
         
            -
            //    }
         
     | 
| 
       352 
276 
     | 
    
         
             
                }
         
     | 
| 
       353 
277 
     | 
    
         | 
| 
       354 
278 
     | 
    
         
             
                /**
         
     | 
| 
       355 
     | 
    
         
            -
                 * Change the textMode() to either SHAPE or MODEL.
         
     | 
| 
       356 
     | 
    
         
            -
                 *  
     | 
| 
      
 279 
     | 
    
         
            +
                 * Change the textMode() to either SHAPE or MODEL. This resets all renderer
         
     | 
| 
      
 280 
     | 
    
         
            +
                 * settings, and therefore must be called
         
     | 
| 
       357 
281 
     | 
    
         
             
                 * <EM>before</EM> any other commands that set the fill() or the textFont()
         
     | 
| 
       358 
282 
     | 
    
         
             
                 * or anything. Unlike other renderers, use textMode() directly after the
         
     | 
| 
       359 
283 
     | 
    
         
             
                 * size() command.
         
     | 
| 
       360 
284 
     | 
    
         
             
                 */
         
     | 
| 
       361 
     | 
    
         
            -
             
     | 
| 
       362 
     | 
    
         
            -
             
     | 
| 
       363 
     | 
    
         
            -
             
     | 
| 
       364 
     | 
    
         
            -
             
     | 
| 
       365 
     | 
    
         
            -
             
     | 
| 
       366 
     | 
    
         
            -
             
     | 
| 
       367 
     | 
    
         
            -
             
     | 
| 
       368 
     | 
    
         
            -
             
     | 
| 
       369 
     | 
    
         
            -
             
     | 
| 
       370 
     | 
    
         
            -
             
     | 
| 
       371 
     | 
    
         
            -
             
     | 
| 
       372 
     | 
    
         
            -
             
     | 
| 
       373 
     | 
    
         
            -
             
     | 
| 
       374 
     | 
    
         
            -
             
     | 
| 
       375 
     | 
    
         
            -
             
     | 
| 
       376 
     | 
    
         
            -
             
     | 
| 
       377 
     | 
    
         
            -
             
     | 
| 
       378 
     | 
    
         
            -
             
     | 
| 
       379 
     | 
    
         
            -
             
     | 
| 
       380 
     | 
    
         
            -
             
     | 
| 
       381 
     | 
    
         
            -
             
     | 
| 
       382 
     | 
    
         
            -
                        }
         
     | 
| 
       383 
     | 
    
         
            -
                    }
         
     | 
| 
       384 
     | 
    
         
            -
                }
         
     | 
| 
      
 285 
     | 
    
         
            +
                 @Override
         
     | 
| 
      
 286 
     | 
    
         
            +
                 public void textMode(int mode) {
         
     | 
| 
      
 287 
     | 
    
         
            +
                     if (textMode != mode) {
         
     | 
| 
      
 288 
     | 
    
         
            +
                         switch (mode) {
         
     | 
| 
      
 289 
     | 
    
         
            +
                             case SHAPE:
         
     | 
| 
      
 290 
     | 
    
         
            +
                                 textMode = SHAPE;
         
     | 
| 
      
 291 
     | 
    
         
            +
                                 g2.dispose();
         
     | 
| 
      
 292 
     | 
    
         
            +
                                 g2 = createGraphics();
         
     | 
| 
      
 293 
     | 
    
         
            +
                                 break;
         
     | 
| 
      
 294 
     | 
    
         
            +
                             case MODEL:
         
     | 
| 
      
 295 
     | 
    
         
            +
                                 textMode = MODEL;
         
     | 
| 
      
 296 
     | 
    
         
            +
                                 g2.dispose();
         
     | 
| 
      
 297 
     | 
    
         
            +
                                 g2 = createGraphics();
         
     | 
| 
      
 298 
     | 
    
         
            +
                                 break;
         
     | 
| 
      
 299 
     | 
    
         
            +
                             case SCREEN:
         
     | 
| 
      
 300 
     | 
    
         
            +
                                 throw new RuntimeException("textMode(SCREEN) not supported with PDF");
         
     | 
| 
      
 301 
     | 
    
         
            +
                             default:
         
     | 
| 
      
 302 
     | 
    
         
            +
                                 throw new RuntimeException("That textMode() does not exist");
         
     | 
| 
      
 303 
     | 
    
         
            +
                         }
         
     | 
| 
      
 304 
     | 
    
         
            +
                     }
         
     | 
| 
      
 305 
     | 
    
         
            +
                 }
         
     | 
| 
       385 
306 
     | 
    
         | 
| 
       386 
307 
     | 
    
         
             
                @Override
         
     | 
| 
       387 
308 
     | 
    
         
             
                protected void textLineImpl(char buffer[], int start, int stop,
         
     | 
| 
         @@ -436,7 +357,6 @@ public class PGraphicsPDF extends PGraphicsJava2D { 
     | 
|
| 
       436 
357 
     | 
    
         
             
                }
         
     | 
| 
       437 
358 
     | 
    
         | 
| 
       438 
359 
     | 
    
         
             
                //
         
     | 
| 
       439 
     | 
    
         
            -
             
     | 
| 
       440 
360 
     | 
    
         
             
                /**
         
     | 
| 
       441 
361 
     | 
    
         
             
                 *
         
     | 
| 
       442 
362 
     | 
    
         
             
                 * @param alpha
         
     | 
| 
         @@ -534,6 +454,7 @@ public class PGraphicsPDF extends PGraphicsJava2D { 
     | 
|
| 
       534 
454 
     | 
    
         
             
                 * On Linux or any other platform, you'll need to add the directories by
         
     | 
| 
       535 
455 
     | 
    
         
             
                 * hand. (If there are actual standards here that we can use as a starting
         
     | 
| 
       536 
456 
     | 
    
         
             
                 * point, please file a bug to make a note of it)
         
     | 
| 
      
 457 
     | 
    
         
            +
                 *
         
     | 
| 
       537 
458 
     | 
    
         
             
                 * @param directory
         
     | 
| 
       538 
459 
     | 
    
         
             
                 */
         
     | 
| 
       539 
460 
     | 
    
         
             
                public void addFonts(String directory) {
         
     | 
| 
         @@ -573,7 +494,8 @@ public class PGraphicsPDF extends PGraphicsJava2D { 
     | 
|
| 
       573 
494 
     | 
    
         | 
| 
       574 
495 
     | 
    
         
             
                /**
         
     | 
| 
       575 
496 
     | 
    
         
             
                 * List the fonts known to the PDF renderer.This is like PFont.list(),
         
     | 
| 
       576 
     | 
    
         
            -
             however not all those fonts are available by default.
         
     | 
| 
      
 497 
     | 
    
         
            +
                 * however not all those fonts are available by default.
         
     | 
| 
      
 498 
     | 
    
         
            +
                 *
         
     | 
| 
       577 
499 
     | 
    
         
             
                 * @return
         
     | 
| 
       578 
500 
     | 
    
         
             
                 */
         
     | 
| 
       579 
501 
     | 
    
         
             
                static public String[] listFonts() {
         
     | 
| 
         @@ -595,7 +517,7 @@ public class PGraphicsPDF extends PGraphicsJava2D { 
     | 
|
| 
       595 
517 
     | 
    
         
             
            //        //System.out.println(entry.getKey() + "-->" + entry.getValue());
         
     | 
| 
       596 
518 
     | 
    
         
             
            //        fontList[count++] = (String) entry.getKey();
         
     | 
| 
       597 
519 
     | 
    
         
             
            //      }
         
     | 
| 
       598 
     | 
    
         
            -
                         
     | 
| 
      
 520 
     | 
    
         
            +
                        Arrays.sort(fontList);
         
     | 
| 
       599 
521 
     | 
    
         
             
                    }
         
     | 
| 
       600 
522 
     | 
    
         
             
                    return fontList;
         
     | 
| 
       601 
523 
     | 
    
         
             
                }
         
     |