package de.hft.stuttgart.citygml.viewer.parser; import java.awt.Color; import java.io.FileReader; import java.nio.file.Path; import java.util.Properties; import java.util.logging.Logger; public class ColorHandler { private static final Logger logger = Logger.getLogger(ColorHandler.class.getName()); private Color groundColor = new Color(0.9411765f, 0.9019608f, 0.54901963f); private Color roofColor = Color.RED; private Color doorColor = Color.ORANGE; private Color windowColor = new Color(0.0f, 0.5019608f, 0.5019608f); private Color wallColor = Color.WHITE; private Color bridgeColor = new Color(1.0f, 0.49803922f, 0.3137255f); private Color landColor = new Color(0.64705884f, 0.16470589f, 0.16470589f); private Color transportationColor = new Color(1.0f, 1.0f, 0.0f); private Color vegetationColor = new Color(0.5647059f, 0.93333334f, 0.5647059f); private Color waterColor = new Color(0.5294118f, 0.80784315f, 0.98039216f); public ColorHandler(Path path) { try (FileReader reader = new FileReader(path.toFile())) { Properties props = new Properties(); props.load(reader); Color parsedGroundColor = parseColor(props.getProperty("groundColor")); if (parsedGroundColor != null) { groundColor = parsedGroundColor; } Color parsedRoofColor = parseColor(props.getProperty("roofColor")); if (parsedRoofColor != null) { roofColor = parsedRoofColor; } Color parsedDoorColor = parseColor(props.getProperty("doorColor")); if (parsedDoorColor != null) { doorColor = parsedDoorColor; } Color parsedWindowColor = parseColor(props.getProperty("windowColor")); if (parsedWindowColor != null) { windowColor = parsedWindowColor; } Color parsedWallColor = parseColor(props.getProperty("wallColor")); if (parsedWallColor != null) { wallColor = parsedWallColor; } Color parsedBridgeColor = parseColor(props.getProperty("bridgeColor")); if (parsedBridgeColor != null) { bridgeColor = parsedBridgeColor; } Color parsedLandColor = parseColor(props.getProperty("landColor")); if (parsedLandColor != null) { landColor = parsedLandColor; } Color parsedTransportationColor = parseColor(props.getProperty("transportationColor")); if (parsedTransportationColor != null) { transportationColor = parsedTransportationColor; } Color parsedVegetationColor = parseColor(props.getProperty("vegetationColor")); if (parsedVegetationColor != null) { vegetationColor = parsedVegetationColor; } Color parsedWaterColor = parseColor(props.getProperty("waterColor")); if (parsedWaterColor != null) { waterColor = parsedWaterColor; } }catch (Exception e) { logger.warning(() -> "Failed to read color properties file: " + e.getMessage()); } } private Color parseColor(String colorString) { if (colorString == null) { return null; } try { String[] split = colorString.split(" "); float r = Float.parseFloat(split[0]); float g = Float.parseFloat(split[1]); float b = Float.parseFloat(split[2]); return new Color(r, g, b); } catch (Exception e) { e.printStackTrace(); return null; } } public Color getGroundColor() { return groundColor; } public Color getRoofColor() { return roofColor; } public Color getDoorColor() { return doorColor; } public Color getWindowColor() { return windowColor; } public Color getWallColor() { return wallColor; } public Color getBridgeColor() { return bridgeColor; } public Color getLandColor() { return landColor; } public Color getTransportationColor() { return transportationColor; } public Color getVegetationColor() { return vegetationColor; } public Color getWaterColor() { return waterColor; } }