/* * @(#)DefaultImageAdjustmentModel.java 1.0 2012-01-18 * * Copyright (c) 2012 Werner Randelshofer, Goldau, Switzerland. * All rights reserved. * * You may not use, copy or modify this file, except in compliance with the * license agreement you entered into with Werner Randelshofer. * For details see accompanying license terms. */ package org.monte.media.converter; import org.monte.media.beans.AbstractBean; /** * {@code DefaultImageAdjustmentModel}. * * @author Werner Randelshofer * @version 1.0 2012-01-18 Created. */ public class DefaultColorAdjustModel extends AbstractBean implements ColorAdjustModel { /** Level adjustment: white point in the range [0,1]. */ protected float whitePoint = 1.0f; /** Level adjustment: black point in the range [0,1]. */ protected float blackPoint = 0.0f; /** Level adjustment: mid point in the range [0,1]. */ protected float midPoint = 0.5f; /** Brightness adjustment in the range [-1,1]. */ protected float brightness = 0f; /** Exposure adjustment in the range [-1,1]. */ protected float exposure = 0f; /** Contrast adjustment in the range [-1,1]. */ protected float contrast = 0f; /** Saturation adjustment in the range [0,1]. */ protected float saturation = 0.5f; /** Definition adjustment in the range [0,1]. */ protected float definition = 0f; /** Higlights adjustment in the range [0,1]. */ protected float highlights = 0f; /** Shadows adjustment in the range [0,1]. */ protected float shadows = 0f; /** Sharpness adjustment in the range [0,1]. */ protected float sharpness = 0f; /** De-noise adjustment in the range [0,1]. */ protected float denoise = 0f; /** Temperature adjustment in the range [-1,1]. */ protected float temperature = 0f; /** Tint adjustment in the range [-1,1]. */ protected float tint = 0f; /** White balance terms {Rmu,Rnu, Bmu, Bnu}. */ private float[] whiteBalanceQM = {0, 1, 0, 1}; private boolean whiteBalanceTTEnabled = true; private boolean whiteBalanceQMEnabled = true; public DefaultColorAdjustModel() { reset(); } @Override public void reset() { setWhitePoint(1); setBlackPoint(0); setMidPoint(0.5f); setBrightness(0f); setExposure(0f); setContrast(0f); setSaturation(0.5f); setDefinition(0f); setHighlights(0f); setShadows(0f); setSharpness(0f); setDenoise(0f); setTemperature(0f); setTint(0f); setWhiteBalanceQM(new float[]{0, 1, 0, 1}); setWhiteBalanceQMEnabled(false); setWhiteBalanceTTEnabled(true); } /** * Get the value of whitePoint * * @return the value of whitePoint */ @Override public float getWhitePoint() { return whitePoint; } /** * Set the value of whitePoint * * @param newValue new value of whitePoint */ @Override public void setWhitePoint(float newValue) { float oldValue = whitePoint; whitePoint = newValue; firePropertyChange(WHITE_POINT_PROPERTY, oldValue, newValue); } @Override public float getBlackPoint() { return blackPoint; } @Override public void setBlackPoint(float newValue) { float oldValue = blackPoint; blackPoint = newValue; firePropertyChange(BLACK_POINT_PROPERTY, oldValue, newValue); } @Override public float getMidPoint() { return midPoint; } @Override public void setMidPoint(float newValue) { float oldValue = midPoint; midPoint = newValue; firePropertyChange(MID_POINT_PROPERTY, oldValue, newValue); } @Override public float getContrast() { return contrast; } @Override public void setContrast(float newValue) { float oldValue = contrast; this.contrast = newValue; firePropertyChange(CONTRAST_PROPERTY, oldValue, newValue); } @Override public float getDefinition() { return definition; } @Override public void setDefinition(float newValue) { float oldValue = definition; this.definition = newValue; firePropertyChange(DEFINITION_PROPERTY, oldValue, newValue); } @Override public float getDenoise() { return denoise; } @Override public void setDenoise(float newValue) { float oldValue = denoise; this.denoise = newValue; firePropertyChange(DENOISE_PROPERTY, oldValue, newValue); } @Override public float getBrightness() { return brightness; } @Override public void setBrightness(float newValue) { float oldValue = brightness; this.brightness = newValue; firePropertyChange(BRIGHTNESS_PROPERTY, oldValue, newValue); } @Override public float getExposure() { return exposure; } @Override public void setExposure(float newValue) { float oldValue = exposure; this.exposure = newValue; firePropertyChange(EXPOSURE_PROPERTY, oldValue, newValue); } @Override public float getHighlights() { return highlights; } @Override public void setHighlights(float newValue) { float oldValue = highlights; this.highlights = newValue; firePropertyChange(HIGHLIGHTS_PROPERTY, oldValue, newValue); } @Override public float getSaturation() { return saturation; } @Override public void setSaturation(float newValue) { float oldValue = saturation; this.saturation = newValue; firePropertyChange(SATURATION_PROPERTY, oldValue, newValue); } @Override public float getShadows() { return shadows; } @Override public void setShadows(float newValue) { float oldValue = shadows; this.shadows = newValue; firePropertyChange(SHADOWS_PROPERTY, oldValue, newValue); } @Override public float getSharpness() { return sharpness; } @Override public void setSharpness(float newValue) { float oldValue = sharpness; this.sharpness = newValue; firePropertyChange(SHARPNESS_PROPERTY, oldValue, newValue); } @Override public float getTemperature() { return temperature; } @Override public void setTemperature(float newValue) { float oldValue = temperature; this.temperature = newValue; firePropertyChange(TEMPERATURE_PROPERTY, oldValue, newValue); } @Override public float getTint() { return tint; } @Override public void setTint(float newValue) { float oldValue = tint; this.tint = newValue; firePropertyChange(TINT_PROPERTY, oldValue, newValue); } @Override public void setWhiteBalanceQM(float[] newValue) { float[] oldValue = whiteBalanceQM; this.whiteBalanceQM = newValue; firePropertyChange(WHITE_BALANCE_QM_PROPERTY, oldValue, newValue); } @Override public float[] getWhiteBalanceQM() { return whiteBalanceQM == null ? null : whiteBalanceQM.clone(); } @Override public void setWhiteBalanceQMEnabled(boolean newValue) { boolean oldValue = whiteBalanceQMEnabled; this.whiteBalanceQMEnabled = newValue; firePropertyChange(WHITE_BALANCE_QM_ENABLED_PROPERTY, oldValue, newValue); } @Override public boolean isWhiteBalanceQMEnabled() { return whiteBalanceQMEnabled; } @Override public void setWhiteBalanceTTEnabled(boolean newValue) { boolean oldValue = whiteBalanceTTEnabled; this.whiteBalanceTTEnabled = newValue; firePropertyChange(WHITE_BALANCE_TT_ENABLED_PROPERTY, oldValue, newValue); } @Override public boolean isWhiteBalanceTTEnabled() { return whiteBalanceTTEnabled; } @Override public void setTo(ColorAdjustModel that) { whitePoint = that.getWhitePoint(); blackPoint = that.getBlackPoint(); midPoint = that.getMidPoint(); brightness=that.getBrightness(); exposure = that.getExposure(); contrast = that.getContrast(); saturation = that.getSaturation(); definition = that.getDefinition(); highlights = that.getHighlights(); shadows = that.getShadows(); sharpness = that.getSharpness(); denoise = that.getDenoise(); temperature = that.getTemperature(); tint = that.getTint(); whiteBalanceQM = that.getWhiteBalanceQM(); whiteBalanceQMEnabled = that.isWhiteBalanceQMEnabled(); whiteBalanceTTEnabled = that.isWhiteBalanceTTEnabled(); firePropertyChange(null, false, true); } @Override public boolean isIdentity() { return whitePoint == 1// && blackPoint == 0// && midPoint == 0.5// && brightness == 0// && exposure == 0// && contrast == 0// && saturation == 0.5// && definition == 0// && highlights == 0// && shadows == 0// && sharpness == 0// && denoise == 0// && (!whiteBalanceTTEnabled || temperature == 0// && tint == 0)// && (!whiteBalanceQMEnabled || whiteBalanceQM[0] == 0// && whiteBalanceQM[1] == 1// && whiteBalanceQM[2] == 0// && whiteBalanceQM[3] == 1)// ; } }