1 /* Copyright (C) 2005-2011 Fabio Riccardi */ 2 3 package com.lightcrafts.model.ImageEditor; 4 5 import com.lightcrafts.model.GenericOperation; 6 import com.lightcrafts.model.OperationType; 7 import com.lightcrafts.model.SliderConfig; 8 import com.lightcrafts.jai.utils.Transform; 9 10 import com.lightcrafts.mediax.jai.PlanarImage; 11 import java.util.ArrayList; 12 import java.util.HashMap; 13 import java.util.List; 14 import java.util.Map; 15 16 /** A ImageEditor implementation of GenericOperation that does nothing when its 17 * settings are updated. 18 */ 19 20 abstract class GenericOperationImpl extends OperationImpl implements GenericOperation { 21 OperationType type; 22 23 List<String> sliderKeys; 24 List<String> checkboxKeys; 25 List<String> choiceKeys; 26 27 Map<String, List<String>> choiceValues; // Maps choiceKeys Strings to Lists of String values. 28 Map<String, SliderConfig> sliderConfigs; // Maps sliderKeys Strings to SliderConfigs. 29 GenericOperationImpl(Rendering rendering, OperationType type)30 protected GenericOperationImpl(Rendering rendering, OperationType type) { 31 super(rendering, type.getName()); 32 this.type = type; 33 sliderKeys = new ArrayList<String>(); 34 checkboxKeys = new ArrayList<String>(); 35 choiceKeys = new ArrayList<String>(); 36 choiceValues = new HashMap<String, List<String>>(); 37 sliderConfigs = new HashMap<String, SliderConfig>(); 38 } 39 40 @Override getType()41 public OperationType getType() { 42 return type; 43 } 44 addSliderKey(String key)45 void addSliderKey(String key) { 46 sliderKeys.add(key); 47 sliderConfigs.put(key, new SliderConfig()); 48 } 49 addCheckboxKey(String key)50 void addCheckboxKey(String key) { 51 checkboxKeys.add(key); 52 } 53 addChoiceKey(String key)54 void addChoiceKey(String key) { 55 choiceKeys.add(key); 56 choiceValues.put(key, new ArrayList<String>()); 57 } 58 addChoiceValue(String key, String value)59 void addChoiceValue(String key, String value) { 60 choiceValues.get(key).add(value); 61 } 62 setCheckboxKeys(List<String> keys)63 void setCheckboxKeys(List<String> keys) { 64 checkboxKeys = keys; 65 } 66 67 @Override getSliderKeys()68 public List<String> getSliderKeys() { 69 return new ArrayList<String>(sliderKeys); 70 } 71 72 @Override getCheckboxKeys()73 public List<String> getCheckboxKeys() { 74 return new ArrayList<String>(checkboxKeys); 75 } 76 77 @Override getChoiceKeys()78 public List<String> getChoiceKeys() { 79 return new ArrayList<String>(choiceKeys); 80 } 81 82 @Override getChoiceValues(String key)83 public List<String> getChoiceValues(String key) { 84 return new ArrayList<String>(choiceValues.get(key)); 85 } 86 roundValue(String key, double value)87 public double roundValue(String key, double value) { 88 SliderConfig sliderConfig = getSliderConfig(key); 89 double increment = sliderConfig.getIncrement(); 90 return Math.round(value / increment) * increment; 91 } 92 93 @Override setSliderValue(String key, double value)94 public void setSliderValue(String key, double value) { 95 // System.out.println(getName() + " updated: " + key + " = " + value); 96 settingsChanged(); 97 } 98 99 @Override setCheckboxValue(String key, boolean value)100 public void setCheckboxValue(String key, boolean value) { 101 // System.out.println(getName() + " updated: " + key + " = " + value); 102 settingsChanged(); 103 } 104 105 @Override setChoiceValue(String key, String value)106 public void setChoiceValue(String key, String value) { 107 // System.out.println(getName() + " updated: " + key + " = " + value); 108 settingsChanged(); 109 } 110 setSliderConfig(String key, SliderConfig config)111 void setSliderConfig(String key, SliderConfig config) { 112 sliderConfigs.put(key, config); 113 } 114 115 @Override getSliderConfig(String key)116 public SliderConfig getSliderConfig(String key) { 117 return sliderConfigs.get(key); 118 } 119 120 @Override updateOp(Transform op)121 abstract protected void updateOp(Transform op); 122 123 @Override createOp(PlanarImage source)124 abstract protected Transform createOp(PlanarImage source); 125 } 126