ImagePreset.java revision 0a32b7afc5286a5c7aa334b9338591d61a49731f
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 308537d097f8827caedc8c39564de54d36eae8b16fRuben Brunk public final GeometryMetadata mGeoData = new GeometryMetadata(); 318537d097f8827caedc8c39564de54d36eae8b16fRuben Brunk 3293dfe7a1df07a64701369b480578410efb740a27nicolasroard enum FullRotate { 3393dfe7a1df07a64701369b480578410efb740a27nicolasroard ZERO, NINETY, HUNDRED_EIGHTY, TWO_HUNDRED_SEVENTY 348537d097f8827caedc8c39564de54d36eae8b16fRuben Brunk } 350d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 360d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public ImagePreset() { 370d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard setup(); 380d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 390d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 400a32b7afc5286a5c7aa334b9338591d61a49731fRuben Brunk public ImagePreset(String historyName) { 410a32b7afc5286a5c7aa334b9338591d61a49731fRuben Brunk setHistoryName(historyName); 420a32b7afc5286a5c7aa334b9338591d61a49731fRuben Brunk setup(); 430a32b7afc5286a5c7aa334b9338591d61a49731fRuben Brunk } 440a32b7afc5286a5c7aa334b9338591d61a49731fRuben Brunk 45a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford public ImagePreset(ImagePreset source, String historyName) { 46a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford this(source); 4755550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard if (historyName != null) { 4855550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard setHistoryName(historyName); 4955550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard } 50a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford } 51a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford 520d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public ImagePreset(ImagePreset source) { 53bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard try { 5493dfe7a1df07a64701369b480578410efb740a27nicolasroard if (source.mImageBorder != null) { 5593dfe7a1df07a64701369b480578410efb740a27nicolasroard mImageBorder = source.mImageBorder.clone(); 5693dfe7a1df07a64701369b480578410efb740a27nicolasroard } 57bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard for (int i = 0; i < source.mFilters.size(); i++) { 58e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford ImageFilter filter = source.mFilters.elementAt(i).clone(); 59e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford filter.setImagePreset(this); 60e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford add(filter); 61bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } 62bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } catch (java.lang.CloneNotSupportedException e) { 63bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard Log.v(LOGTAG, "Exception trying to clone: " + e); 640d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 650d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mName = source.name(); 660d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mHistoryName = source.name(); 670d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mIsFxPreset = source.isFx(); 68e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford mImageLoader = source.getImageLoader(); 690d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 708537d097f8827caedc8c39564de54d36eae8b16fRuben Brunk mGeoData.set(source.mGeoData); 710d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 720d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 7355550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard public boolean hasModifications() { 7455550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard if (mImageBorder != null && !mImageBorder.isNil()) { 7555550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard return true; 7655550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard } 7755550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard if (mGeoData.hasModifications()) { 7855550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard return true; 7955550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard } 8055550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard for (int i = 0; i < mFilters.size(); i++) { 8155550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard ImageFilter filter = mFilters.elementAt(i); 8255550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard if (!filter.isNil()) { 8355550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard return true; 8455550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard } 8555550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard } 8655550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard return false; 8755550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard } 8855550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard 89014a111f10a7523415ca210bc6fe1e4f00183d31John Reck public boolean isPanoramaSafe() { 90014a111f10a7523415ca210bc6fe1e4f00183d31John Reck if (mImageBorder != null && !mImageBorder.isNil()) { 91014a111f10a7523415ca210bc6fe1e4f00183d31John Reck return false; 92014a111f10a7523415ca210bc6fe1e4f00183d31John Reck } 93014a111f10a7523415ca210bc6fe1e4f00183d31John Reck if (mGeoData.hasModifications()) { 94014a111f10a7523415ca210bc6fe1e4f00183d31John Reck return false; 95014a111f10a7523415ca210bc6fe1e4f00183d31John Reck } 96014a111f10a7523415ca210bc6fe1e4f00183d31John Reck for (ImageFilter filter : mFilters) { 97014a111f10a7523415ca210bc6fe1e4f00183d31John Reck if (filter.getFilterType() == ImageFilter.TYPE_VIGNETTE 98014a111f10a7523415ca210bc6fe1e4f00183d31John Reck && !filter.isNil()) { 99014a111f10a7523415ca210bc6fe1e4f00183d31John Reck return false; 100014a111f10a7523415ca210bc6fe1e4f00183d31John Reck } 101014a111f10a7523415ca210bc6fe1e4f00183d31John Reck } 102014a111f10a7523415ca210bc6fe1e4f00183d31John Reck return true; 103014a111f10a7523415ca210bc6fe1e4f00183d31John Reck } 104014a111f10a7523415ca210bc6fe1e4f00183d31John Reck 105014a111f10a7523415ca210bc6fe1e4f00183d31John Reck 10693dfe7a1df07a64701369b480578410efb740a27nicolasroard public void setGeometry(GeometryMetadata m) { 10793dfe7a1df07a64701369b480578410efb740a27nicolasroard mGeoData.set(m); 10893dfe7a1df07a64701369b480578410efb740a27nicolasroard } 10993dfe7a1df07a64701369b480578410efb740a27nicolasroard 110a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford private void setBorder(ImageFilter filter) { 11193dfe7a1df07a64701369b480578410efb740a27nicolasroard mImageBorder = filter; 11293dfe7a1df07a64701369b480578410efb740a27nicolasroard } 11393dfe7a1df07a64701369b480578410efb740a27nicolasroard 1140d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public boolean isFx() { 1150d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return mIsFxPreset; 1160d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1170d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1180d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void setIsFx(boolean value) { 1190d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mIsFxPreset = value; 1200d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1210d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1220d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void setName(String name) { 1230d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mName = name; 1240d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mHistoryName = name; 1250d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1260d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 127e533f65961ed601ded1803caeab6cef0a778d2f2nicolasroard public void setHistoryName(String name) { 1280d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mHistoryName = name; 1290d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1300d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 131e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford public ImageLoader getImageLoader() { 132e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford return mImageLoader; 133e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford } 134e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford 135e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford public void setImageLoader(ImageLoader mImageLoader) { 136e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford this.mImageLoader = mImageLoader; 137e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford } 138e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford 1390d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public boolean same(ImagePreset preset) { 1400d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (preset.mFilters.size() != mFilters.size()) { 1410d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return false; 1420d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1430d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (!mName.equalsIgnoreCase(preset.name())) { 1440d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return false; 1450d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1468537d097f8827caedc8c39564de54d36eae8b16fRuben Brunk 1478537d097f8827caedc8c39564de54d36eae8b16fRuben Brunk if (!mGeoData.equals(preset.mGeoData)) { 1480d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return false; 1490d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 15093dfe7a1df07a64701369b480578410efb740a27nicolasroard 15193dfe7a1df07a64701369b480578410efb740a27nicolasroard if (mImageBorder != preset.mImageBorder) { 15293dfe7a1df07a64701369b480578410efb740a27nicolasroard return false; 15393dfe7a1df07a64701369b480578410efb740a27nicolasroard } 15493dfe7a1df07a64701369b480578410efb740a27nicolasroard 15593dfe7a1df07a64701369b480578410efb740a27nicolasroard if (mImageBorder != null && !mImageBorder.same(preset.mImageBorder)) { 15693dfe7a1df07a64701369b480578410efb740a27nicolasroard return false; 15793dfe7a1df07a64701369b480578410efb740a27nicolasroard } 15893dfe7a1df07a64701369b480578410efb740a27nicolasroard 1590d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard for (int i = 0; i < preset.mFilters.size(); i++) { 1600d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImageFilter a = preset.mFilters.elementAt(i); 1610d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImageFilter b = mFilters.elementAt(i); 1620d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (!a.same(b)) { 1630d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return false; 1640d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1650d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1660d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return true; 1670d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1680d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1690d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public String name() { 1700d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return mName; 1710d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1720d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1730d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public String historyName() { 1740d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return mHistoryName; 1750d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 1760d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 177bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard public void add(ImageFilter filter) { 178fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford 17955550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard if (filter.getFilterType() == ImageFilter.TYPE_BORDER) { 1800a32b7afc5286a5c7aa334b9338591d61a49731fRuben Brunk setHistoryName(filter.getName()); 181a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford setBorder(filter); 18255550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard } else if (filter.getFilterType() == ImageFilter.TYPE_FX) { 183a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford boolean found = false; 184a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford for (int i = 0; i < mFilters.size(); i++) { 185fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford byte type = mFilters.get(i).getFilterType(); 186a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford if (found) { 18755550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard if (type != ImageFilter.TYPE_VIGNETTE) { 188fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford mFilters.remove(i); 189fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford continue; 190a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford } 191fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford } 19255550694a3f40fbf5dfc95c35a8e253aedab931enicolasroard if (type == ImageFilter.TYPE_FX) { 193fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford mFilters.remove(i); 194fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford mFilters.add(i, filter); 195a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford setHistoryName(filter.getName()); 196a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford found = true; 197a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford } 198a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford } 199fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford if (!found) { 200fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford mFilters.add(filter); 201fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford setHistoryName(filter.getName()); 202fafb2edbb9928039b887f59685d82593bd79e06aJohn Hoford } 203a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford } else { 204a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford mFilters.add(filter); 205a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford setHistoryName(filter.getName()); 206a19830b4fd9050b48386cd904d99cfd2566cc515John Hoford } 207e9c55b28a4a155c2e1c1f5aec615a0c56e38ade4John Hoford filter.setImagePreset(this); 2080d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2090d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2100d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void remove(String filterName) { 2110d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImageFilter filter = getFilter(filterName); 2120d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (filter != null) { 2130d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mFilters.remove(filter); 2140d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2150d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2160d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2170d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public int getCount() { 2180d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return mFilters.size(); 2190d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2200d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2210d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public ImageFilter getFilter(String name) { 2220d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard for (int i = 0; i < mFilters.size(); i++) { 2230d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImageFilter filter = mFilters.elementAt(i); 224bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard if (filter.getName().equalsIgnoreCase(name)) { 2250d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return filter; 2260d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2270d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2280d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return null; 2290d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2300d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2310d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void setup() { 2320d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // do nothing here 2330d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2340d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2350d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void setEndpoint(ImageShow image) { 2360d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mEndPoint = image; 2370d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2380d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2390d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public Bitmap apply(Bitmap original) { 2400d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // First we apply any transform -- 90 rotate, flip, straighten, crop 2417bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk Bitmap bitmap = mGeoData.apply(original, mScaleFactor, mIsHighQuality); 2420d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2430d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard for (int i = 0; i < mFilters.size(); i++) { 2440d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImageFilter filter = mFilters.elementAt(i); 24593dfe7a1df07a64701369b480578410efb740a27nicolasroard bitmap = filter.apply(bitmap, mScaleFactor, mIsHighQuality); 2460d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 24793dfe7a1df07a64701369b480578410efb740a27nicolasroard 24808458dc637d92ee5f12e34d49c34cc10f4e19c7dnicolasroard if (mImageBorder != null) { 24908458dc637d92ee5f12e34d49c34cc10f4e19c7dnicolasroard bitmap = mImageBorder.apply(bitmap, mScaleFactor, mIsHighQuality); 25008458dc637d92ee5f12e34d49c34cc10f4e19c7dnicolasroard } 25108458dc637d92ee5f12e34d49c34cc10f4e19c7dnicolasroard 2520d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (mEndPoint != null) { 2530d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mEndPoint.updateFilteredImage(bitmap); 2540d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2550d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return bitmap; 2560d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2570d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 258bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard public void fillImageStateAdapter(ImageStateAdapter imageStateAdapter) { 259bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard if (imageStateAdapter == null) { 260bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard return; 261bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } 262bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard imageStateAdapter.clear(); 263bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard imageStateAdapter.addAll(mFilters); 264bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard imageStateAdapter.notifyDataSetChanged(); 265bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } 266bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard 26781eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard public float getScaleFactor() { 26881eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard return mScaleFactor; 26981eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard } 27081eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard 27181eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard public boolean isHighQuality() { 27281eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard return mIsHighQuality; 27381eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard } 27481eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard 27581eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard public void setIsHighQuality(boolean value) { 27681eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard mIsHighQuality = value; 27781eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard } 27881eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard 27981eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard public void setScaleFactor(float value) { 28081eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard mScaleFactor = value; 28181eb9976f967d9b3faa1749a8ab29d1743cf347dnicolasroard } 282bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard} 283