source: josm/trunk/src/org/openstreetmap/josm/gui/layer/imagery/ColorfulImageProcessor.java @ 12594

Last change on this file since 12594 was 12594, checked in by bastiK, 2 months ago

fixed #15139 - raster-image filter settings are Not Stored when saving session (color Saturation, Brightness, Sharpness)

  • Property svn:eol-style set to native
File size: 2.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.layer.imagery;
3
4import java.awt.image.BufferedImage;
5import java.util.Collections;
6import java.util.Map;
7
8import org.openstreetmap.josm.gui.layer.ImageProcessor;
9import org.openstreetmap.josm.io.session.SessionAwareReadApply;
10import org.openstreetmap.josm.tools.Utils;
11
12/**
13 * Adds or removes the colorfulness of the image.
14 *
15 * @author Michael Zangl
16 * @since 10547
17 */
18public class ColorfulImageProcessor implements ImageProcessor, SessionAwareReadApply {
19    private ColorfulFilter op;
20    private double colorfulness = 1.0;
21
22    /**
23     * Gets the colorfulness value.
24     * @return The value
25     */
26    public double getColorfulness() {
27        return colorfulness;
28    }
29
30    /**
31     * Sets the colorfulness value. Clamps it to 0+
32     * @param colorfulness The value
33     */
34    public void setColorfulness(double colorfulness) {
35        if (colorfulness < 0) {
36            this.colorfulness = 0;
37        } else {
38            this.colorfulness = colorfulness;
39        }
40
41        if (this.colorfulness < .95 || this.colorfulness > 1.05) {
42            op = new ColorfulFilter(this.colorfulness);
43        } else {
44            op = null;
45        }
46    }
47
48    @Override
49    public BufferedImage process(BufferedImage image) {
50        if (op != null) {
51            return op.filter(image, null);
52        } else {
53            return image;
54        }
55    }
56
57    @Override
58    public void applyFromPropertiesMap(Map<String, String> properties) {
59        String cStr = properties.get("colorfulness");
60        if (cStr != null) {
61            try {
62                setColorfulness(Double.parseDouble(cStr));
63            } catch (NumberFormatException e) {
64                // nothing
65            }
66        }
67    }
68
69    @Override
70    public Map<String, String> toPropertiesMap() {
71        if (Utils.equalsEpsilon(colorfulness, 1.0))
72            return Collections.emptyMap();
73        else
74            return Collections.singletonMap("colorfulness", Double.toString(colorfulness));
75    }
76
77    @Override
78    public String toString() {
79        return "ColorfulImageProcessor [colorfulness=" + colorfulness + ']';
80    }
81}
Note: See TracBrowser for help on using the repository browser.