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