ImagePreset.java revision 31529940021b9a18611b1a3fb4a0317ab8c89618
10d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 20d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardpackage com.android.gallery3d.filtershow.presets; 30d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 40d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.graphics.Bitmap; 50d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.util.Log; 60d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 7bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroardimport com.android.gallery3d.filtershow.ImageStateAdapter; 8e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hofordimport com.android.gallery3d.filtershow.cache.ImageLoader; 90d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport com.android.gallery3d.filtershow.filters.ImageFilter; 108537d097f8827caedc8c39564de54d36eae8b16fRuben Brunkimport com.android.gallery3d.filtershow.imageshow.GeometryMetadata; 110d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport com.android.gallery3d.filtershow.imageshow.ImageShow; 120d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1392e2341248e99c691f38820503984bc5e2f18811nicolasroardimport java.util.Vector; 1492e2341248e99c691f38820503984bc5e2f18811nicolasroard 150d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardpublic class ImagePreset { 160d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 170d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private static final String LOGTAG = "ImagePreset"; 1893dfe7a1df07a64701369b480578410efb740a27nicolasroard 1993dfe7a1df07a64701369b480578410efb740a27nicolasroard private ImageShow mEndPoint = null; 2093dfe7a1df07a64701369b480578410efb740a27nicolasroard private ImageFilter mImageBorder = null; 2193dfe7a1df07a64701369b480578410efb740a27nicolasroard private float mScaleFactor = 1.0f; 2293dfe7a1df07a64701369b480578410efb740a27nicolasroard private boolean mIsHighQuality = false; 23e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford private ImageLoader mImageLoader = null; 2493dfe7a1df07a64701369b480578410efb740a27nicolasroard 250d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard protected Vector<ImageFilter> mFilters = new Vector<ImageFilter>(); 260d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard protected String mName = "Original"; 270a32b7afc5286a5c7aa334b9338591d61a49731fRuben Brunk private String mHistoryName = "Original"; 280d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard protected boolean mIsFxPreset = false; 290d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 3031529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard private boolean mDoApplyGeometry = true; 3131529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard private boolean mDoApplyFilters = true; 3231529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard 338537d097f8827caedc8c39564de54d36eae8b16fRuben Brunk public final GeometryMetadata mGeoData = new GeometryMetadata(); 348537d097f8827caedc8c39564de54d36eae8b16fRuben Brunk 3593dfe7a1df07a64701369b480578410efb740a27nicolasroard enum FullRotate { 3693dfe7a1df07a64701369b480578410efb740a27nicolasroard ZERO, NINETY, HUNDRED_EIGHTY, TWO_HUNDRED_SEVENTY 378537d097f8827caedc8c39564de54d36eae8b16fRuben Brunk } 380d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 390d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public ImagePreset() { 400d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard setup(); 410d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 420d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 430a32b7afc5286a5c7aa334b9338591d61a49731fRuben Brunk public ImagePreset(String historyName) { 440a32b7afc5286a5c7aa334b9338591d61a49731fRuben Brunk setHistoryName(historyName); 450a32b7afc5286a5c7aa334b9338591d61a49731fRuben Brunk setup(); 460a32b7afc5286a5c7aa334b9338591d61a49731fRuben Brunk } 470a32b7afc5286a5c7aa334b9338591d61a49731fRuben Brunk 48a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford public ImagePreset(ImagePreset source, String historyName) { 49a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford this(source); 5055550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard if (historyName != null) { 5155550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard setHistoryName(historyName); 5255550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard } 53a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford } 54a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford 550d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public ImagePreset(ImagePreset source) { 56bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard try { 5793dfe7a1df07a64701369b480578410efb740a27nicolasroard if (source.mImageBorder != null) { 5893dfe7a1df07a64701369b480578410efb740a27nicolasroard mImageBorder = source.mImageBorder.clone(); 5993dfe7a1df07a64701369b480578410efb740a27nicolasroard } 60bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard for (int i = 0; i < source.mFilters.size(); i++) { 61e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford ImageFilter filter = source.mFilters.elementAt(i).clone(); 62e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford filter.setImagePreset(this); 63e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford add(filter); 64bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } 65bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } catch (java.lang.CloneNotSupportedException e) { 66bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard Log.v(LOGTAG, "Exception trying to clone: " + e); 670d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 680d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mName = source.name(); 690d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mHistoryName = source.name(); 700d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mIsFxPreset = source.isFx(); 71e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford mImageLoader = source.getImageLoader(); 720d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 738537d097f8827caedc8c39564de54d36eae8b16fRuben Brunk mGeoData.set(source.mGeoData); 740d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 750d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 7631529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard public void setDoApplyGeometry(boolean value) { 7731529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard mDoApplyGeometry = value; 7831529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard } 7931529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard 8031529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard public void setDoApplyFilters(boolean value) { 8131529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard mDoApplyFilters = value; 8231529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard } 8331529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard 8455550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard public boolean hasModifications() { 8555550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard if (mImageBorder != null && !mImageBorder.isNil()) { 8655550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard return true; 8755550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard } 8855550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard if (mGeoData.hasModifications()) { 8955550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard return true; 9055550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard } 9155550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard for (int i = 0; i < mFilters.size(); i++) { 9255550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard ImageFilter filter = mFilters.elementAt(i); 9355550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard if (!filter.isNil()) { 9455550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard return true; 9555550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard } 9655550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard } 9755550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard return false; 9855550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard } 9955550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard 100014a111f10a7523415ca210bc6fe1e4f00183d31John Reck public boolean isPanoramaSafe() { 101014a111f10a7523415ca210bc6fe1e4f00183d31John Reck if (mImageBorder != null && !mImageBorder.isNil()) { 102014a111f10a7523415ca210bc6fe1e4f00183d31John Reck return false; 103014a111f10a7523415ca210bc6fe1e4f00183d31John Reck } 104014a111f10a7523415ca210bc6fe1e4f00183d31John Reck if (mGeoData.hasModifications()) { 105014a111f10a7523415ca210bc6fe1e4f00183d31John Reck return false; 106014a111f10a7523415ca210bc6fe1e4f00183d31John Reck } 107014a111f10a7523415ca210bc6fe1e4f00183d31John Reck for (ImageFilter filter : mFilters) { 108014a111f10a7523415ca210bc6fe1e4f00183d31John Reck if (filter.getFilterType() == ImageFilter.TYPE_VIGNETTE 109014a111f10a7523415ca210bc6fe1e4f00183d31John Reck && !filter.isNil()) { 110014a111f10a7523415ca210bc6fe1e4f00183d31John Reck return false; 111014a111f10a7523415ca210bc6fe1e4f00183d31John Reck } 112014a111f10a7523415ca210bc6fe1e4f00183d31John Reck } 113014a111f10a7523415ca210bc6fe1e4f00183d31John Reck return true; 114014a111f10a7523415ca210bc6fe1e4f00183d31John Reck } 115014a111f10a7523415ca210bc6fe1e4f00183d31John Reck 11693dfe7a1df07a64701369b480578410efb740a27nicolasroard public void setGeometry(GeometryMetadata m) { 11793dfe7a1df07a64701369b480578410efb740a27nicolasroard mGeoData.set(m); 11893dfe7a1df07a64701369b480578410efb740a27nicolasroard } 11993dfe7a1df07a64701369b480578410efb740a27nicolasroard 120a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford private void setBorder(ImageFilter filter) { 12193dfe7a1df07a64701369b480578410efb740a27nicolasroard mImageBorder = filter; 12293dfe7a1df07a64701369b480578410efb740a27nicolasroard } 12393dfe7a1df07a64701369b480578410efb740a27nicolasroard 1240d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public boolean isFx() { 1250d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return mIsFxPreset; 1260d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1270d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1280d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void setIsFx(boolean value) { 1290d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mIsFxPreset = value; 1300d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1310d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1320d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void setName(String name) { 1330d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mName = name; 1340d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mHistoryName = name; 1350d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1360d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 137e533f65961ed601ded1803caeab6cef0a778d2f2nicolasroard public void setHistoryName(String name) { 1380d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mHistoryName = name; 1390d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1400d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 141e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford public ImageLoader getImageLoader() { 142e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford return mImageLoader; 143e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford } 144e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford 145e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford public void setImageLoader(ImageLoader mImageLoader) { 146e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford this.mImageLoader = mImageLoader; 147e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford } 148e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford 1490d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public boolean same(ImagePreset preset) { 1500d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (preset.mFilters.size() != mFilters.size()) { 1510d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return false; 1520d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1530d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (!mName.equalsIgnoreCase(preset.name())) { 1540d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return false; 1550d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1568537d097f8827caedc8c39564de54d36eae8b16fRuben Brunk 1578537d097f8827caedc8c39564de54d36eae8b16fRuben Brunk if (!mGeoData.equals(preset.mGeoData)) { 1580d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return false; 1590d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 16093dfe7a1df07a64701369b480578410efb740a27nicolasroard 16193dfe7a1df07a64701369b480578410efb740a27nicolasroard if (mImageBorder != preset.mImageBorder) { 16293dfe7a1df07a64701369b480578410efb740a27nicolasroard return false; 16393dfe7a1df07a64701369b480578410efb740a27nicolasroard } 16493dfe7a1df07a64701369b480578410efb740a27nicolasroard 16593dfe7a1df07a64701369b480578410efb740a27nicolasroard if (mImageBorder != null && !mImageBorder.same(preset.mImageBorder)) { 16693dfe7a1df07a64701369b480578410efb740a27nicolasroard return false; 16793dfe7a1df07a64701369b480578410efb740a27nicolasroard } 16893dfe7a1df07a64701369b480578410efb740a27nicolasroard 1690d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard for (int i = 0; i < preset.mFilters.size(); i++) { 1700d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImageFilter a = preset.mFilters.elementAt(i); 1710d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImageFilter b = mFilters.elementAt(i); 1720d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (!a.same(b)) { 1730d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return false; 1740d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1750d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1760d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return true; 1770d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1780d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1790d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public String name() { 1800d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return mName; 1810d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1820d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1830d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public String historyName() { 1840d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return mHistoryName; 1850d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1860d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 187bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard public void add(ImageFilter filter) { 188fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford 18955550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard if (filter.getFilterType() == ImageFilter.TYPE_BORDER) { 1900a32b7afc5286a5c7aa334b9338591d61a49731fRuben Brunk setHistoryName(filter.getName()); 191a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford setBorder(filter); 19255550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard } else if (filter.getFilterType() == ImageFilter.TYPE_FX) { 193a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford boolean found = false; 194a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford for (int i = 0; i < mFilters.size(); i++) { 195fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford byte type = mFilters.get(i).getFilterType(); 196a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford if (found) { 19755550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard if (type != ImageFilter.TYPE_VIGNETTE) { 198fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford mFilters.remove(i); 199fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford continue; 200a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford } 201fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford } 20255550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard if (type == ImageFilter.TYPE_FX) { 203fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford mFilters.remove(i); 204fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford mFilters.add(i, filter); 205a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford setHistoryName(filter.getName()); 206a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford found = true; 207a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford } 208a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford } 209fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford if (!found) { 210fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford mFilters.add(filter); 211fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford setHistoryName(filter.getName()); 212fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford } 213a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford } else { 214a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford mFilters.add(filter); 215a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford setHistoryName(filter.getName()); 216a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford } 217e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford filter.setImagePreset(this); 2180d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2190d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2200d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void remove(String filterName) { 2210d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImageFilter filter = getFilter(filterName); 2220d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (filter != null) { 2230d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mFilters.remove(filter); 2240d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2250d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2260d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2270d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public int getCount() { 2280d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return mFilters.size(); 2290d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2300d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2310d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public ImageFilter getFilter(String name) { 2320d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard for (int i = 0; i < mFilters.size(); i++) { 2330d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImageFilter filter = mFilters.elementAt(i); 234bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard if (filter.getName().equalsIgnoreCase(name)) { 2350d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return filter; 2360d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2370d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2380d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return null; 2390d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2400d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2410d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void setup() { 2420d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // do nothing here 2430d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2440d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2450d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void setEndpoint(ImageShow image) { 2460d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mEndPoint = image; 2470d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2480d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2490d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public Bitmap apply(Bitmap original) { 2500d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // First we apply any transform -- 90 rotate, flip, straighten, crop 25131529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard Bitmap bitmap = original; 2520d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 25331529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard if (mDoApplyGeometry) { 25431529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard bitmap = mGeoData.apply(original, mScaleFactor, mIsHighQuality); 25531529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard } 25631529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard 25731529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard if (mDoApplyFilters) { 25831529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard for (int i = 0; i < mFilters.size(); i++) { 25931529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard ImageFilter filter = mFilters.elementAt(i); 26031529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard bitmap = filter.apply(bitmap, mScaleFactor, mIsHighQuality); 26131529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard } 2620d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 26393dfe7a1df07a64701369b480578410efb740a27nicolasroard 26408458dc637d92ee5f12e34d49c34cc10f4e19c7dnicolasroard if (mImageBorder != null) { 26508458dc637d92ee5f12e34d49c34cc10f4e19c7dnicolasroard bitmap = mImageBorder.apply(bitmap, mScaleFactor, mIsHighQuality); 26608458dc637d92ee5f12e34d49c34cc10f4e19c7dnicolasroard } 26708458dc637d92ee5f12e34d49c34cc10f4e19c7dnicolasroard 2680d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (mEndPoint != null) { 2690d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mEndPoint.updateFilteredImage(bitmap); 2700d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 27131529940021b9a18611b1a3fb4a0317ab8c89618nicolasroard 2720d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return bitmap; 2730d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2740d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 275bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard public void fillImageStateAdapter(ImageStateAdapter imageStateAdapter) { 276bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard if (imageStateAdapter == null) { 277bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard return; 278bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } 279bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard imageStateAdapter.clear(); 280bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard imageStateAdapter.addAll(mFilters); 281bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard imageStateAdapter.notifyDataSetChanged(); 282bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } 283bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard 28481eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard public float getScaleFactor() { 28581eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard return mScaleFactor; 28681eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard } 28781eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard 28881eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard public boolean isHighQuality() { 28981eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard return mIsHighQuality; 29081eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard } 29181eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard 29281eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard public void setIsHighQuality(boolean value) { 29381eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard mIsHighQuality = value; 29481eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard } 29581eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard 29681eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard public void setScaleFactor(float value) { 29781eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard mScaleFactor = value; 29881eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard } 299bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard} 300