Ignore:
Timestamp:
2017-08-12T11:24:39+02:00 (2 years ago)
Author:
bastiK
Message:

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

Location:
trunk/src/org/openstreetmap/josm/io/session
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java

    r12267 r12594  
    55import java.awt.GridBagLayout;
    66import java.io.IOException;
     7import java.util.HashMap;
    78import java.util.LinkedHashMap;
    89import java.util.Map;
     
    2021import org.openstreetmap.josm.gui.layer.WMSLayer;
    2122import org.openstreetmap.josm.gui.layer.WMTSLayer;
     23import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
    2224import org.openstreetmap.josm.io.session.SessionWriter.ExportSupport;
    2325import org.openstreetmap.josm.tools.GBC;
     26import org.openstreetmap.josm.tools.Utils;
    2427import org.w3c.dom.Element;
    2528
     
    9598            }
    9699        }
     100        ImageryFilterSettings filters = layer.getFilterSettings();
     101        if (filters != null) {
     102            Map<String, String> filterProps = new HashMap<>();
     103            filters.getProcessors().stream()
     104                    .flatMap(Utils.castToStream(SessionAwareReadApply.class))
     105                    .forEach(proc -> filterProps.putAll(proc.toPropertiesMap()));
     106            if (!filterProps.isEmpty()) {
     107                Element filterEl = support.createElement("filters");
     108                layerElem.appendChild(filterEl);
     109                addAttributes(filterEl, filterProps, support);
     110            }
     111        }
    97112        return layerElem;
    98113    }
  • trunk/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java

    r12267 r12594  
    1818import org.openstreetmap.josm.gui.layer.WMSLayer;
    1919import org.openstreetmap.josm.gui.layer.WMTSLayer;
     20import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
    2021import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    2122import org.openstreetmap.josm.io.IllegalDataException;
    2223import org.openstreetmap.josm.io.session.SessionReader.ImportSupport;
     24import org.openstreetmap.josm.tools.Utils;
    2325import org.w3c.dom.Element;
    2426import org.w3c.dom.Node;
     
    4547            AbstractTileSourceLayer<?> tsLayer = (AbstractTileSourceLayer<?>) layer;
    4648            tsLayer.getDisplaySettings().loadFrom(attributes);
    47             NodeList nodes = elem.getChildNodes();
    48             for (int i = 0; i < nodes.getLength(); ++i) {
    49                 Node node = nodes.item(i);
    50                 if (node.getNodeType() == Node.ELEMENT_NODE && "offset".equals(node.getLocalName())) {
    51                     Map<String, String> offsetAttributes = readProperties((Element) node);
    52                     OffsetBookmark offset = OffsetBookmark.fromPropertiesMap(offsetAttributes);
    53                     tsLayer.getDisplaySettings().setOffsetBookmark(offset);
    54                     break;
    55                 }
     49            Element offsetEl = getFirstElementByTagName(elem, "offset");
     50            if (offsetEl != null) {
     51                Map<String, String> offsetAttributes = readProperties(offsetEl);
     52                OffsetBookmark offset = OffsetBookmark.fromPropertiesMap(offsetAttributes);
     53                tsLayer.getDisplaySettings().setOffsetBookmark(offset);
     54            }
     55        }
     56        Element filtersEl = getFirstElementByTagName(elem, "filters");
     57        if (filtersEl != null) {
     58            ImageryFilterSettings filterSettings = layer.getFilterSettings();
     59            if (filterSettings != null) {
     60                Map<String, String> filtersProps = readProperties(filtersEl);
     61                filterSettings.getProcessors().stream()
     62                        .flatMap(Utils.castToStream(SessionAwareReadApply.class))
     63                        .forEach(proc -> proc.applyFromPropertiesMap(filtersProps));
    5664            }
    5765        }
    5866        return layer;
     67    }
     68
     69    private static Element getFirstElementByTagName(Element el, String name) {
     70        NodeList nl = el.getElementsByTagName(name);
     71        if (nl.getLength() == 0)
     72            return null;
     73        return (Element) nl.item(0);
    5974    }
    6075
Note: See TracChangeset for help on using the changeset viewer.