Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/jfree/AreaFillPattern.java @ 8913:924cd9943337
Configured some real fill patterns
author | gernotbelger |
---|---|
date | Mon, 26 Feb 2018 18:10:03 +0100 |
parents | d9c89651bd67 |
children |
rev | line source |
---|---|
8910
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
2 * Software engineering by |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
3 * Björnsen Beratende Ingenieure GmbH |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
5 * |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
6 * This file is Free Software under the GNU AGPL (>=v3) |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
8 * documentation coming with Dive4Elements River for details. |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
9 */ |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
10 package org.dive4elements.river.jfree; |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
11 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
12 import java.awt.Color; |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
13 import java.awt.image.BufferedImage; |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
14 import java.awt.image.BufferedImageOp; |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
15 import java.awt.image.LookupOp; |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
16 import java.io.IOException; |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
17 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
18 import javax.imageio.ImageIO; |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
19 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
20 import org.apache.log4j.Logger; |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
21 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
22 /** |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
23 * Fill patterns for area styles. |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
24 * REMARK: if this enum is changed, probably the ui in StyleEditorWindow must be changed too |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
25 * |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
26 * @author Gernot Belger |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
27 */ |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
28 public enum AreaFillPattern { |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
29 |
8913 | 30 patternFill("/images/areapatterns/patternFill.png"), // |
31 patternPoints("/images/areapatterns/patternPoints.png"), // | |
32 paternCross("/images/areapatterns/paternCross.png"), // | |
33 patternDagonalLeft("/images/areapatterns/patternDagonalLeft.png"), // | |
34 patternDiagonalRight("/images/areapatterns/patternDiagonalRight.png"); | |
8910
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
35 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
36 private static Logger log = Logger.getLogger(AreaFillPattern.class); |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
37 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
38 private static final BufferedImage MISSING_IMAGE = new BufferedImage(16, 16, BufferedImage.TYPE_INT_RGB); |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
39 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
40 private final String imagePath; |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
41 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
42 private BufferedImage image = null; |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
43 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
44 AreaFillPattern(final String imagePath) { |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
45 this.imagePath = imagePath; |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
46 } |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
47 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
48 public BufferedImage getImage(final Color color) { |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
49 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
50 if (this.image == null) |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
51 this.image = loadImage(); |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
52 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
53 if (color == null) |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
54 return this.image; |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
55 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
56 /* |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
57 * apply color and transparency, the .png must be encoded as 32bit images (rgba), with only black as non transparent |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
58 * color |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
59 */ |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
60 final int numComponents = this.image.getColorModel().getNumComponents(); |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
61 if (numComponents != 4) { |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
62 log.warn(String.format("Pattern image must be a 32bit image (rgba): %s", this.imagePath)); |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
63 return this.image; |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
64 } |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
65 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
66 final BufferedImageOp lookup = new LookupOp(new ColorMapper(Color.black, color), null); |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
67 return lookup.filter(this.image, null); |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
68 } |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
69 |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
70 private BufferedImage loadImage() { |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
71 try { |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
72 return ImageIO.read(getClass().getResource(this.imagePath)); |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
73 } |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
74 catch (final IOException e) { |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
75 log.error(String.format("failed ot load pattern: %s", this.imagePath), e); |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
76 return MISSING_IMAGE; |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
77 } |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
78 } |
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
diff
changeset
|
79 } |