FilterShowActivity.java revision 0ee91a2b74808fa3f51d370daaddf99f588d72ef
10d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 20d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardpackage com.android.gallery3d.filtershow; 30d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 40ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroardimport java.io.File; 50ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroardimport java.io.IOException; 60d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport java.util.Vector; 70d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 80d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport com.android.gallery3d.filtershow.cache.ImageLoader; 90d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport com.android.gallery3d.filtershow.filters.*; 100d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport com.android.gallery3d.filtershow.imageshow.ImageBorder; 110d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport com.android.gallery3d.filtershow.imageshow.ImageShow; 120d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport com.android.gallery3d.filtershow.imageshow.ImageSmallFilter; 130d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport com.android.gallery3d.filtershow.imageshow.ImageStraighten; 140d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport com.android.gallery3d.filtershow.presets.*; 150ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroardimport com.android.gallery3d.filtershow.provider.SharedImageProvider; 160ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroardimport com.android.gallery3d.filtershow.tools.SaveCopyTask; 170d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport com.android.gallery3d.filtershow.ui.ImageCurves; 180d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport com.android.gallery3d.R; 190d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 200d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.net.Uri; 210d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.os.Bundle; 220d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.annotation.TargetApi; 239594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroardimport android.app.ActionBar; 240d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.app.Activity; 250ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroardimport android.content.ContentValues; 260d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.content.Intent; 270d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.content.res.Resources; 280d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.graphics.drawable.Drawable; 290d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.graphics.drawable.NinePatchDrawable; 300d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.util.Log; 310d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.util.TypedValue; 320d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.view.Gravity; 330d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.view.Menu; 349594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroardimport android.view.MenuItem; 350d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.view.MotionEvent; 360d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.view.View; 370d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.view.View.OnClickListener; 380d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.view.View.OnTouchListener; 390d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.widget.AdapterView; 400d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.widget.AdapterView.OnItemClickListener; 410d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.widget.Button; 42bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroardimport android.widget.FrameLayout; 43bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroardimport android.widget.FrameLayout.LayoutParams; 440d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.widget.ImageButton; 450d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.widget.LinearLayout; 460d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.widget.ListView; 470ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroardimport android.widget.ShareActionProvider; 480ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroardimport android.widget.ShareActionProvider.OnShareTargetSelectedListener; 490d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardimport android.widget.Toast; 500d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 510d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard@TargetApi(16) 520ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroardpublic class FilterShowActivity extends Activity implements OnItemClickListener, 530ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard OnShareTargetSelectedListener { 540d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 550d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private ImageLoader mImageLoader = null; 560d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private ImageShow mImageShow = null; 570d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private ImageCurves mImageCurves = null; 580d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private ImageBorder mImageBorders = null; 590d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private ImageStraighten mImageStraighten = null; 600d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 610d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private View mListFx = null; 620d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private View mListBorders = null; 630d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private View mListGeometry = null; 640d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private View mListColors = null; 650d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 660d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private ImageButton mFxButton = null; 670d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private ImageButton mBorderButton = null; 680d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private ImageButton mGeometryButton = null; 690d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private ImageButton mColorsButton = null; 700d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 710d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private ImageButton mVignetteButton = null; 720d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private ImageButton mCurvesButtonRGB = null; 730d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private ImageButton mSharpenButton = null; 74d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford 750d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private ImageButton mContrastButton = null; 76d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford private ImageButton mSaturationButton = null; 77d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford private ImageButton mTintButton = null; 78d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford private ImageButton mVibranceButton = null; 79d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford private ImageButton mExposureButton = null; 80d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford private ImageButton mShadowRecoveryButton = null; 810d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 820d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private static final int SELECT_PICTURE = 1; 830d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private static final String LOGTAG = "FilterShowActivity"; 840d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard protected static final boolean ANIMATE_PANELS = false; 850d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 860d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private boolean mShowingHistoryPanel = false; 87bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard private boolean mShowingImageStatePanel = false; 88bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard 890d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private Vector<ImageShow> mImageViews = new Vector<ImageShow>(); 900d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private Vector<View> mListViews = new Vector<View>(); 910d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private Vector<ImageButton> mBottomPanelButtons = new Vector<ImageButton>(); 920d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private Vector<ImageButton> mColorsPanelButtons = new Vector<ImageButton>(); 930d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 940ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard private ShareActionProvider mShareActionProvider; 950ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard private File mSharedOutputFile = null; 960ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard 970ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard private boolean mSharingImage = false; 980ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard 990d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 1000d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onCreate(Bundle savedInstanceState) { 1010d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard super.onCreate(savedInstanceState); 1020d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1030d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard setContentView(R.layout.filtershow_activity); 1049594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard ActionBar actionBar = getActionBar(); 105786fe6476e4ccf4b98489ff69d8ef439533cdc2anicolasroard actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 106786fe6476e4ccf4b98489ff69d8ef439533cdc2anicolasroard actionBar.setCustomView(R.layout.filtershow_actionbar); 107786fe6476e4ccf4b98489ff69d8ef439533cdc2anicolasroard 108786fe6476e4ccf4b98489ff69d8ef439533cdc2anicolasroard actionBar.getCustomView().setOnClickListener(new OnClickListener() { 109786fe6476e4ccf4b98489ff69d8ef439533cdc2anicolasroard @Override 110786fe6476e4ccf4b98489ff69d8ef439533cdc2anicolasroard public void onClick(View view) { 111786fe6476e4ccf4b98489ff69d8ef439533cdc2anicolasroard saveImage(); 112786fe6476e4ccf4b98489ff69d8ef439533cdc2anicolasroard } 113786fe6476e4ccf4b98489ff69d8ef439533cdc2anicolasroard }); 1140d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1150d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageLoader = new ImageLoader(getApplicationContext()); 1160d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1170d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard LinearLayout listFilters = (LinearLayout) findViewById(R.id.listFilters); 1180d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard LinearLayout listBorders = (LinearLayout) findViewById(R.id.listBorders); 1190d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1200d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow = (ImageShow) findViewById(R.id.imageShow); 1210d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageCurves = (ImageCurves) findViewById(R.id.imageCurves); 1220d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageBorders = (ImageBorder) findViewById(R.id.imageBorder); 1230d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageStraighten = (ImageStraighten) findViewById(R.id.imageStraighten); 1240d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1250d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageViews.add(mImageShow); 1260d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageViews.add(mImageCurves); 1270d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageViews.add(mImageBorders); 1280d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageViews.add(mImageStraighten); 1290d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1300d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mListFx = findViewById(R.id.fxList); 1310d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mListBorders = findViewById(R.id.bordersList); 1320d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mListGeometry = findViewById(R.id.gemoetryList); 1330d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mListColors = findViewById(R.id.colorsFxList); 1340d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mListViews.add(mListFx); 1350d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mListViews.add(mListBorders); 1360d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mListViews.add(mListGeometry); 1370d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mListViews.add(mListColors); 1380d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1390d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mFxButton = (ImageButton) findViewById(R.id.fxButton); 1400d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mBorderButton = (ImageButton) findViewById(R.id.borderButton); 1410d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mGeometryButton = (ImageButton) findViewById(R.id.geometryButton); 1420d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mColorsButton = (ImageButton) findViewById(R.id.colorsButton); 1430d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mBottomPanelButtons.add(mFxButton); 1440d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mBottomPanelButtons.add(mBorderButton); 1450d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mBottomPanelButtons.add(mGeometryButton); 1460d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mBottomPanelButtons.add(mColorsButton); 1470d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mFxButton.setSelected(true); 1480d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1490d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mVignetteButton = (ImageButton) findViewById(R.id.vignetteButton); 1500d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mCurvesButtonRGB = (ImageButton) findViewById(R.id.curvesButtonRGB); 1510d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mSharpenButton = (ImageButton) findViewById(R.id.sharpenButton); 152d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mVibranceButton = (ImageButton) findViewById(R.id.vibranceButton); 1530d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mContrastButton = (ImageButton) findViewById(R.id.contrastButton); 154d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mSaturationButton = (ImageButton) findViewById(R.id.saturationButton); 155d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mTintButton = (ImageButton) findViewById(R.id.tintButton); 156d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mExposureButton = (ImageButton) findViewById(R.id.exposureButton); 157d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mShadowRecoveryButton = (ImageButton) findViewById(R.id.shadowRecoveryButton); 158d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford 1590d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mColorsPanelButtons.add(mVignetteButton); 1600d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mColorsPanelButtons.add(mCurvesButtonRGB); 1610d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mColorsPanelButtons.add(mSharpenButton); 1620d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mColorsPanelButtons.add(mContrastButton); 163d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mColorsPanelButtons.add(mSaturationButton); 164d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mColorsPanelButtons.add(mTintButton); 165d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mColorsPanelButtons.add(mVibranceButton); 166d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mColorsPanelButtons.add(mExposureButton); 167d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mColorsPanelButtons.add(mShadowRecoveryButton); 1680d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1699594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard // TODO: instead of click listeners, make the activity the single 1709594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard // listener and do a dispatch in the listener callback method. 1710d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard findViewById(R.id.showOriginalButton).setOnTouchListener(createOnTouchShowOriginalButton()); 1720d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard findViewById(R.id.straightenButton).setOnClickListener(createOnClickStraightenButton()); 1730d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard findViewById(R.id.cropButton).setOnClickListener(createOnClickCropButton()); 1740d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard findViewById(R.id.rotateButton).setOnClickListener(createOnClickRotateButton()); 1750d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard findViewById(R.id.flipButton).setOnClickListener(createOnClickFlipButton()); 1760d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1770d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mVignetteButton.setOnClickListener(createOnClickVignetteButton()); 1780d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mCurvesButtonRGB.setOnClickListener(createOnClickCurvesRGBButton()); 1790d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1800d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mSharpenButton.setOnClickListener(createOnClickSharpenButton()); 1810d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mContrastButton.setOnClickListener(createOnClickContrastButton()); 182d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mSaturationButton.setOnClickListener(createOnClickSaturationButton()); 183d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford 184d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mTintButton.setOnClickListener(createOnClickTintButton()); 185d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mVibranceButton.setOnClickListener(createOnClickVibranceButton()); 186d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mExposureButton.setOnClickListener(createOnClickExposureButton()); 187d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mShadowRecoveryButton.setOnClickListener(createOnClickShadowRecoveryButton()); 1880d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1890d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mFxButton.setOnClickListener(createOnClickFxButton()); 1900d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mBorderButton.setOnClickListener(createOnClickBorderButton()); 1910d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mGeometryButton.setOnClickListener(createOnClickGeometryButton()); 1920d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mColorsButton.setOnClickListener(createOnClickColorsButton()); 1930d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1940d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard findViewById(R.id.resetOperationsButton).setOnClickListener( 1950d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard createOnClickResetOperationsButton()); 1960d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 1970d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ListView operationsList = (ListView) findViewById(R.id.operationsList); 198bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard operationsList.setAdapter(mImageShow.getHistoryAdapter()); 1990d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard operationsList.setOnItemClickListener(this); 200bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard ListView imageStateList = (ListView) findViewById(R.id.imageStateList); 201bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard imageStateList.setAdapter(mImageShow.getImageStateAdapter()); 202bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard mImageLoader.setAdapter((HistoryAdapter) mImageShow.getHistoryAdapter()); 2030d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2040d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard fillListImages(listFilters); 2050d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard fillListBorders(listBorders); 2060d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2070d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.setImageLoader(mImageLoader); 2080d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageCurves.setImageLoader(mImageLoader); 2090d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageCurves.setMaster(mImageShow); 2100d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageBorders.setImageLoader(mImageLoader); 2110d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageBorders.setMaster(mImageShow); 2120d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageStraighten.setImageLoader(mImageLoader); 2130d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageStraighten.setMaster(mImageShow); 2140d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2150d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard Intent intent = getIntent(); 2160d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard String data = intent.getDataString(); 2170d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (data != null) { 2180d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard Uri uri = Uri.parse(data); 2190d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageLoader.loadBitmap(uri); 2200d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } else { 2210d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard pickImage(); 2220d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2230d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 2240d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 2250ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard public void completeSaveImage(Uri saveUri) { 2260ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard if (mSharingImage && mSharedOutputFile != null) { 2270ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard // Image saved, we unblock the content provider 2280ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard Uri uri = Uri.withAppendedPath(SharedImageProvider.CONTENT_URI, 2290ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard Uri.encode(mSharedOutputFile.getAbsolutePath())); 2300ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard ContentValues values = new ContentValues(); 2310ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard values.put(SharedImageProvider.PREPARE, false); 2320ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard getContentResolver().insert(uri, values); 2330ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard } 2340ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard setResult(RESULT_OK, new Intent().setData(saveUri)); 2350ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard finish(); 2360ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard } 2370ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard 2380ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard @Override 2390ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard public boolean onShareTargetSelected(ShareActionProvider arg0, Intent arg1) { 2400ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard // First, let's tell the SharedImageProvider that it will need to wait for the image 2410ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard Uri uri = Uri.withAppendedPath(SharedImageProvider.CONTENT_URI, 2420ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard Uri.encode(mSharedOutputFile.getAbsolutePath())); 2430ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard ContentValues values = new ContentValues(); 2440ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard values.put(SharedImageProvider.PREPARE, true); 2450ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard getContentResolver().insert(uri, values); 2460ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard mSharingImage = true; 2470ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard 2480ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard // Process and save the image in the background. 2490ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard mImageShow.saveImage(this, mSharedOutputFile); 2500ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard return true; 2510ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard } 2520ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard 2530ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard private Intent getDefaultShareIntent() { 2540ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard Intent intent = new Intent(Intent.ACTION_SEND); 2550ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 2560ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 2570ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard intent.setType(SharedImageProvider.MIME_TYPE); 2580ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard mSharedOutputFile = SaveCopyTask.getNewFile(this, mImageLoader.getUri()); 2590ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard Uri uri = Uri.withAppendedPath(SharedImageProvider.CONTENT_URI, 2600ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard Uri.encode(mSharedOutputFile.getAbsolutePath())); 2610ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard intent.putExtra(Intent.EXTRA_STREAM, uri); 2620ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard return intent; 2630ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard } 2640ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard 2659594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard @Override 2669594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard public boolean onCreateOptionsMenu(Menu menu) { 2679594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard getMenuInflater().inflate(R.menu.filtershow_activity_menu, menu); 268bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard MenuItem showHistory = menu.findItem(R.id.operationsButton); 2699594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard if (mShowingHistoryPanel) { 270bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard showHistory.setTitle(R.string.hide_history_panel); 271bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } else { 272bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard showHistory.setTitle(R.string.show_history_panel); 273bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } 274bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard MenuItem showState = menu.findItem(R.id.showImageStateButton); 275bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard if (mShowingImageStatePanel) { 276bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard showState.setTitle(R.string.hide_imagestate_panel); 2779594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard } else { 278bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard showState.setTitle(R.string.show_imagestate_panel); 2799594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard } 2800ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard mShareActionProvider = (ShareActionProvider) menu.findItem(R.id.menu_share) 2810ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard .getActionProvider(); 2820ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard mShareActionProvider.setShareIntent(getDefaultShareIntent()); 2830ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard mShareActionProvider.setOnShareTargetSelectedListener(this); 2849594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard return true; 2859594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard } 2869594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard 2879594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard public boolean onOptionsItemSelected(MenuItem item) { 2889594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard switch (item.getItemId()) { 2899594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard case R.id.undoButton: { 2909594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard HistoryAdapter adapter = (HistoryAdapter) mImageShow 291bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard .getHistoryAdapter(); 2929594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard int position = adapter.undo(); 2939594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard mImageShow.onItemClick(position); 2949594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard mImageShow.showToast("Undo"); 2959594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard invalidateViews(); 2969594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard return true; 2979594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard } 2989594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard case R.id.redoButton: { 2999594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard HistoryAdapter adapter = (HistoryAdapter) mImageShow 300bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard .getHistoryAdapter(); 3019594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard int position = adapter.redo(); 3029594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard mImageShow.onItemClick(position); 3039594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard mImageShow.showToast("Redo"); 3049594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard invalidateViews(); 3059594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard return true; 3069594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard } 307bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard case R.id.showImageStateButton: { 308bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard toggleImageStatePanel(); 309bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard return true; 310bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } 3119594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard case R.id.operationsButton: { 3129594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard toggleHistoryPanel(); 3139594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard return true; 3149594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard } 3159594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard case android.R.id.home: { 3169594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard saveImage(); 3179594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard return true; 3189594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard } 3199594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard } 3209594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard return false; 3219594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard } 3229594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard 3230d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private void fillListImages(LinearLayout listFilters) { 3240d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // TODO: use listview 3250d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // TODO: load the filters straight from the filesystem 3260d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImagePreset[] preset = new ImagePreset[9]; 3270d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard int p = 0; 3280d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard preset[p++] = new ImagePreset(); 3290d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard preset[p++] = new ImagePresetSaturated(); 3300d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard preset[p++] = new ImagePresetOld(); 3310d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard preset[p++] = new ImagePresetXProcessing(); 3320d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard preset[p++] = new ImagePresetBW(); 3330d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard preset[p++] = new ImagePresetBWRed(); 3340d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard preset[p++] = new ImagePresetBWGreen(); 3350d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard preset[p++] = new ImagePresetBWBlue(); 3360d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 3370d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard for (int i = 0; i < p; i++) { 3380d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImageSmallFilter filter = new ImageSmallFilter(getBaseContext()); 3390d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard preset[i].setIsFx(true); 3400d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard filter.setImagePreset(preset[i]); 3410d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard filter.setController(this); 3420d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard filter.setImageLoader(mImageLoader); 3430d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard listFilters.addView(filter); 3440d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 3450d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 3460d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // Default preset (original) 3470d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.setImagePreset(preset[0]); 3480d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 3490d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 3500d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private void fillListBorders(LinearLayout listBorders) { 3510d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // TODO: use listview 3520d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // TODO: load the borders straight from the filesystem 3530d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard int p = 0; 3540d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImageFilter[] borders = new ImageFilter[8]; 3550d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard borders[p++] = new ImageFilterBorder(null); 3560d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 3570d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard Drawable npd3 = getResources().getDrawable(R.drawable.filtershow_border_film3); 3580d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard borders[p++] = new ImageFilterBorder(npd3); 3590d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard Drawable npd = getResources().getDrawable( 3600d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard R.drawable.filtershow_border_scratch3); 3610d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard borders[p++] = new ImageFilterBorder(npd); 3620d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard Drawable npd2 = getResources().getDrawable(R.drawable.filtershow_border_black); 3630d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard borders[p++] = new ImageFilterBorder(npd2); 3640d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard Drawable npd6 = getResources().getDrawable( 3650d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard R.drawable.filtershow_border_rounded_black); 3660d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard borders[p++] = new ImageFilterBorder(npd6); 3670d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard Drawable npd4 = getResources().getDrawable(R.drawable.filtershow_border_white); 3680d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard borders[p++] = new ImageFilterBorder(npd4); 3690d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard Drawable npd5 = getResources().getDrawable( 3700d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard R.drawable.filtershow_border_rounded_white); 3710d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard borders[p++] = new ImageFilterBorder(npd5); 3720d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 3730d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard for (int i = 0; i < p; i++) { 3740d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImageSmallFilter filter = new ImageSmallFilter(getBaseContext()); 3750d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard filter.setImageFilter(borders[i]); 3760d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard filter.setController(this); 3770d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard filter.setImageLoader(mImageLoader); 378bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard filter.setShowTitle(false); 3790d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard listBorders.addView(filter); 3800d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 3810d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 3820d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 3830d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // ////////////////////////////////////////////////////////////////////////////// 3840d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // Some utility functions 3850d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 3860d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void showOriginalViews(boolean value) { 3870d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard for (ImageShow views : mImageViews) { 3880d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard views.showOriginal(value); 3890d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 3900d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 3910d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 3920d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void invalidateViews() { 3930d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard for (ImageShow views : mImageViews) { 3940d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard views.invalidate(); 3950d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 3960d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 3970d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 3980d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void hideListViews() { 3990d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard for (View view : mListViews) { 4000d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard view.setVisibility(View.GONE); 4010d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 4020d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 4030d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 4040d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void hideImageViews() { 4050d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.setShowControls(false); // reset 4060d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard for (View view : mImageViews) { 4070d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard view.setVisibility(View.GONE); 4080d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 4090d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 4100d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 4110d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void unselectBottomPanelButtons() { 4120d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard for (ImageButton button : mBottomPanelButtons) { 4130d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard button.setSelected(false); 4140d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 4150d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 4160d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 4170d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void unselectPanelButtons(Vector<ImageButton> buttons) { 4180d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard for (ImageButton button : buttons) { 4190d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard button.setSelected(false); 4200d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 4210d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 4220d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 4230d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // ////////////////////////////////////////////////////////////////////////////// 4240d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // Click handlers for the top row buttons 4250d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 4260d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private OnTouchListener createOnTouchShowOriginalButton() { 4270d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnTouchListener() { 4280d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 4290d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public boolean onTouch(View v, MotionEvent event) { 4300d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard boolean show = false; 4310d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if ((event.getActionMasked() != MotionEvent.ACTION_UP) 4320d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard || (event.getActionMasked() == MotionEvent.ACTION_CANCEL)) { 4330d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard show = true; 4340d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 4350d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard showOriginalViews(show); 4360d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return true; 4370d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 4380d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 4390d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 4400d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 4410d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // ////////////////////////////////////////////////////////////////////////////// 442bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard // imageState panel... 443bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard 444bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard private void toggleImageStatePanel() { 445bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard final View view = findViewById(R.id.mainPanel); 446bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard final View viewList = findViewById(R.id.imageStatePanel); 447bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard 448bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard if (mShowingHistoryPanel) { 449bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard findViewById(R.id.historyPanel).setVisibility(View.INVISIBLE); 450bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard mShowingHistoryPanel = false; 451bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } 452bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard 453bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard if (!mShowingImageStatePanel) { 454bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard mShowingImageStatePanel = true; 455bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard view.animate().setDuration(200).x(-viewList.getWidth()) 456bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard .withLayer().withEndAction(new Runnable() { 457bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard public void run() { 458bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard viewList.setAlpha(0); 459bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard viewList.setVisibility(View.VISIBLE); 460bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard viewList.animate().setDuration(100) 461bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard .alpha(1.0f).start(); 462bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } 463bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard }).start(); 464bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } else { 465bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard mShowingImageStatePanel = false; 466bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard viewList.setVisibility(View.INVISIBLE); 467bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard view.animate().setDuration(200).x(0).withLayer() 468bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard .start(); 469bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } 470bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard invalidateOptionsMenu(); 471bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } 472bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard 473bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard // ////////////////////////////////////////////////////////////////////////////// 4740d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // history panel... 4750d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 4769594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard private void toggleHistoryPanel() { 4779594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard final View view = findViewById(R.id.mainPanel); 4789594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard final View viewList = findViewById(R.id.historyPanel); 479bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard 480bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard if (mShowingImageStatePanel) { 481bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard findViewById(R.id.imageStatePanel).setVisibility(View.INVISIBLE); 482bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard mShowingImageStatePanel = false; 483bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard } 484bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard 4859594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard if (!mShowingHistoryPanel) { 4869594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard mShowingHistoryPanel = true; 4879594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard view.animate().setDuration(200).x(-viewList.getWidth()) 4889594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard .withLayer().withEndAction(new Runnable() { 4899594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard public void run() { 4909594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard viewList.setAlpha(0); 4919594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard viewList.setVisibility(View.VISIBLE); 4929594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard viewList.animate().setDuration(100) 4939594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard .alpha(1.0f).start(); 4949594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard } 4959594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard }).start(); 4969594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard } else { 4979594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard mShowingHistoryPanel = false; 4989594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard viewList.setVisibility(View.INVISIBLE); 4999594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard view.animate().setDuration(200).x(0).withLayer() 500bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard .start(); 5019594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard } 5029594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard invalidateOptionsMenu(); 5039594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard } 5040d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 5059594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard private void resetHistory() { 5069594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard HistoryAdapter adapter = (HistoryAdapter) mImageShow 507bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard .getHistoryAdapter(); 5089594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard adapter.reset(); 5099594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard ImagePreset original = new ImagePreset(adapter.getItem(0)); 5109594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard mImageShow.setImagePreset(original); 5119594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard invalidateViews(); 5120d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 5130d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 5140d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // reset button in the history panel. 5150d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private OnClickListener createOnClickResetOperationsButton() { 5160d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 5170d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 5180d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 5199594c8d3e0dd0d6157710ceae1d1deea8e566db4nicolasroard resetHistory(); 5200d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 5210d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 5220d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 5230d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 5240d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // ////////////////////////////////////////////////////////////////////////////// 5250d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // Now, let's deal with the bottom panel. 5260d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 5270d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private OnClickListener createOnClickFxButton() { 5280d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 5290d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 5300d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 5310d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 5320d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideListViews(); 5330d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard unselectBottomPanelButtons(); 5340d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.setVisibility(View.VISIBLE); 5350d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mListFx.setVisibility(View.VISIBLE); 5360d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mFxButton.setSelected(true); 5370d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 5380d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 5390d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 5400d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 5410d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private OnClickListener createOnClickBorderButton() { 5420d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 5430d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 5440d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 5450d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 5460d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideListViews(); 5470d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard unselectBottomPanelButtons(); 5480d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageBorders.setVisibility(View.VISIBLE); 5490d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mListBorders.setVisibility(View.VISIBLE); 5500d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mBorderButton.setSelected(true); 5510d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 5520d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 5530d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 5540d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 5550d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private OnClickListener createOnClickGeometryButton() { 5560d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 5570d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 5580d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 5590d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 5600d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideListViews(); 5610d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard unselectBottomPanelButtons(); 5620d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageStraighten.setVisibility(View.VISIBLE); 5630d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mListGeometry.setVisibility(View.VISIBLE); 5640d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mGeometryButton.setSelected(true); 5650d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 5660d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (ANIMATE_PANELS) { 5670d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mListGeometry.setX(mListGeometry.getWidth()); 5680d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mListGeometry.animate().setDuration(200).x(0).withLayer().start(); 5690d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 5700d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 5710d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 5720d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 5730d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 5740d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private OnClickListener createOnClickColorsButton() { 5750d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 5760d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 5770d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 5780d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 5790d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideListViews(); 5800d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard unselectBottomPanelButtons(); 5810d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mListColors.setVisibility(View.VISIBLE); 5820c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setVisibility(View.VISIBLE); 5830d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mColorsButton.setSelected(true); 5840d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 5850d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (ANIMATE_PANELS) { 5860d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard View view = findViewById(R.id.listColorsFx); 5870d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard view.setX(mListColors.getWidth()); 5880d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard view.animate().setDuration(200).x(0).withLayer().start(); 5890d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 5900d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 5910d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 5920d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 5930d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 5940d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // ////////////////////////////////////////////////////////////////////////////// 5950d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // Geometry sub-panel 5960d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 5970d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private OnClickListener createOnClickStraightenButton() { 5980d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 5990d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 6000d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 6010d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 6020d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageStraighten.setVisibility(View.VISIBLE); 6030d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageStraighten.showToast("Straighten", true); 6040d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 6050d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 6060d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 6070d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 6080d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private OnClickListener createOnClickCropButton() { 6090d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 6100d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 6110d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 6120d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 6130d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.setVisibility(View.VISIBLE); 6140d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.showToast("Crop", true); 6150d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 6160d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 6170d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 6180d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 6190d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private OnClickListener createOnClickRotateButton() { 6200d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 6210d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 6220d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 6230d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 6240d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.setVisibility(View.VISIBLE); 6250d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.showToast("Rotate", true); 6260d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 6270d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 6280d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 6290d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 6300d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private OnClickListener createOnClickFlipButton() { 6310d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 6320d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 6330d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 6340d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 6350d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.setVisibility(View.VISIBLE); 6360d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.showToast("Flip", true); 6370d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 6380d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 6390d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 6400d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 6410d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // ////////////////////////////////////////////////////////////////////////////// 6420d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // Filters sub-panel 6430d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 6440d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private OnClickListener createOnClickVignetteButton() { 6450d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 6460d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 6470d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 6480d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 6490d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.setVisibility(View.VISIBLE); 6500d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.setShowControls(true); 6510d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImagePreset preset = mImageShow.getImagePreset(); 6520d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImageFilter filter = preset.getFilter("Vignette"); 6530d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (filter == null) { 6540d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImageFilterVignette vignette = new ImageFilterVignette(); 6550d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImagePreset copy = new ImagePreset(preset); 6560d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard copy.add(vignette); 657bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard copy.setHistoryName(vignette.getName()); 6580d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard copy.setIsFx(false); 6599579b81504c16ac77aa7442767fbabe6abcfe24bnicolasroard filter = copy.getFilter("Vignette"); 6600d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.setImagePreset(copy); 6610d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 662863b4e65d172a19111f46e43f97e7e41927a3bc7nicolasroard mImageShow.setCurrentFilter(filter); 6630d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard unselectPanelButtons(mColorsPanelButtons); 6640d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mVignetteButton.setSelected(true); 6650d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard invalidateViews(); 6660d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 6670d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 6680d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 6690d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 6700d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard private OnClickListener createOnClickCurvesRGBButton() { 6710d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 6720d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 6730d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 6740d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 6750d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageCurves.setVisibility(View.VISIBLE); 6760d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard unselectPanelButtons(mColorsPanelButtons); 6770d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mCurvesButtonRGB.setSelected(true); 6780d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageCurves.setUseRed(true); 6790d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageCurves.setUseGreen(true); 6800d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageCurves.setUseBlue(true); 6810d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageCurves.reloadCurve(); 6820d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 6830d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 6840d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 6850d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 6860c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard private OnClickListener createOnClickSharpenButton() { 6870d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 6880d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 6890d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 6900d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 6910c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setVisibility(View.VISIBLE); 6920d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard unselectPanelButtons(mColorsPanelButtons); 6930c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mSharpenButton.setSelected(true); 6940c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.showToast("Sharpen", true); 6950c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setCurrentFilter(null); 6960d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 6970d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 6980d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 6990d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 7000c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard private OnClickListener createOnClickContrastButton() { 7010d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 7020d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 7030d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 7040d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 7050c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setVisibility(View.VISIBLE); 7060c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setShowControls(true); 7070c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImagePreset preset = mImageShow.getImagePreset(); 7080c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImageFilter filter = preset.getFilter("Contrast"); 7090c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard if (filter == null) { 7100c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImageFilterContrast contrast = new ImageFilterContrast(); 7110c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImagePreset copy = new ImagePreset(preset); 7120c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard copy.add(contrast); 713bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard copy.setHistoryName(contrast.getName()); 7140c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard copy.setIsFx(false); 7150c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard filter = copy.getFilter("Contrast"); 7160c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setImagePreset(copy); 7170c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard } 7180c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setCurrentFilter(filter); 7190d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard unselectPanelButtons(mColorsPanelButtons); 7200c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mContrastButton.setSelected(true); 7210c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard invalidateViews(); 7220d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 7230d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 7240d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 7250d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 7260c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard private OnClickListener createOnClickSaturationButton() { 7270d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 7280d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 7290d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 7300d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 7310c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setVisibility(View.VISIBLE); 7320c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setShowControls(true); 7330c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImagePreset preset = mImageShow.getImagePreset(); 7340c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImageFilter filter = preset.getFilter("Saturated"); 7350c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard if (filter == null) { 7360c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImageFilterSaturated sat = new ImageFilterSaturated(); 7370c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImagePreset copy = new ImagePreset(preset); 7380c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard copy.add(sat); 739bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard copy.setHistoryName(sat.getName()); 7400c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard copy.setIsFx(false); 7410c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard filter = copy.getFilter("Saturated"); 7420c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setImagePreset(copy); 7430c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard } 7440c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setCurrentFilter(filter); 7450d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard unselectPanelButtons(mColorsPanelButtons); 7460c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mSaturationButton.setSelected(true); 7470c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard invalidateViews(); 7480d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 7490d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 7500d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 7510d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 7520c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard private OnClickListener createOnClickTintButton() { 7530d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 7540d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 7550d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 7560d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 7570d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.setVisibility(View.VISIBLE); 7580c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setShowControls(true); 7590c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImagePreset preset = mImageShow.getImagePreset(); 7600c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImageFilter filter = preset.getFilter("Hue"); 7610c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard if (filter == null) { 7620c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImageFilterHue contrast = new ImageFilterHue(); 7630c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImagePreset copy = new ImagePreset(preset); 7640c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard copy.add(contrast); 765bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard copy.setHistoryName(contrast.getName()); 7660c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard copy.setIsFx(false); 7670c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard filter = copy.getFilter("Hue"); 7680c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setImagePreset(copy); 7690c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard } 7700c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setCurrentFilter(filter); 7710d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard unselectPanelButtons(mColorsPanelButtons); 7720c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mTintButton.setSelected(true); 7730c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard invalidateViews(); 7740d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 7750d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 7760d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 7770d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 7780c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard private OnClickListener createOnClickVibranceButton() { 7790d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return new View.OnClickListener() { 7800d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 7810d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onClick(View v) { 7820d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard hideImageViews(); 7830d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.setVisibility(View.VISIBLE); 784d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mImageShow.setShowControls(true); 785d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford ImagePreset preset = mImageShow.getImagePreset(); 7860c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImageFilter filter = preset.getFilter("Hue"); 787d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford if (filter == null) { 7880c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImageFilterHue contrast = new ImageFilterHue(); 789d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford ImagePreset copy = new ImagePreset(preset); 790d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford copy.add(contrast); 791bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard copy.setHistoryName(contrast.getName()); 792d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford copy.setIsFx(false); 7930c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard filter = copy.getFilter("Hue"); 794d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mImageShow.setImagePreset(copy); 795d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford } 796d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford mImageShow.setCurrentFilter(filter); 7970d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard unselectPanelButtons(mColorsPanelButtons); 7980c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mVibranceButton.setSelected(true); 799d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford invalidateViews(); 8000d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 8010d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard }; 8020d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 8030d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 804d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford private OnClickListener createOnClickExposureButton() { 8050c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard return new View.OnClickListener() { 8060c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard @Override 8070c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard public void onClick(View v) { 8080c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard hideImageViews(); 8090c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setVisibility(View.VISIBLE); 8100c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setShowControls(true); 8110c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImagePreset preset = mImageShow.getImagePreset(); 812bf97d3aaeddfba06f6a00ee7abb23fcd28eb2e7dJohn Hoford ImageFilter filter = preset.getFilter("Exposure"); 8130c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard if (filter == null) { 814bf97d3aaeddfba06f6a00ee7abb23fcd28eb2e7dJohn Hoford ImageFilterExposure bright = new ImageFilterExposure(); 8150c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImagePreset copy = new ImagePreset(preset); 8160c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard copy.add(bright); 817bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard copy.setHistoryName(bright.getName()); 8180c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard copy.setIsFx(false); 819bf97d3aaeddfba06f6a00ee7abb23fcd28eb2e7dJohn Hoford filter = copy.getFilter("Exposure"); 8200c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setImagePreset(copy); 8210c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard } 8220c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setCurrentFilter(filter); 8230c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard unselectPanelButtons(mColorsPanelButtons); 8240c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mExposureButton.setSelected(true); 8250c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard invalidateViews(); 8260c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard } 8270c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard }; 8280c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard } 829d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford 830d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford private OnClickListener createOnClickShadowRecoveryButton() { 8310c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard return new View.OnClickListener() { 8320c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard @Override 8330c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard public void onClick(View v) { 8340c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard hideImageViews(); 8350c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setVisibility(View.VISIBLE); 8360c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setShowControls(true); 8370c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImagePreset preset = mImageShow.getImagePreset(); 8380c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImageFilter filter = preset.getFilter("Hue"); 8390c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard if (filter == null) { 8400c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImageFilterHue contrast = new ImageFilterHue(); 8410c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard ImagePreset copy = new ImagePreset(preset); 8420c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard copy.add(contrast); 843bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard copy.setHistoryName(contrast.getName()); 8440c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard copy.setIsFx(false); 8450c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard filter = copy.getFilter("Hue"); 8460c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setImagePreset(copy); 8470c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard } 8480c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mImageShow.setCurrentFilter(filter); 8490c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard unselectPanelButtons(mColorsPanelButtons); 8500c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard mShadowRecoveryButton.setSelected(true); 8510c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard invalidateViews(); 8520c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard } 8530c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard }; 8540c3203f1789df3f8bd772dfd655e73b44636b629nicolasroard } 855d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford 8560d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // ////////////////////////////////////////////////////////////////////////////// 8570d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 8580d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public float getPixelsFromDip(float value) { 8590d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard Resources r = getResources(); 8600d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value, 8610d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard r.getDisplayMetrics()); 8620d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 8630d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 8640d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void useImagePreset(ImagePreset preset) { 8650d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (preset == null) { 8660d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return; 8670d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 8680d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImagePreset copy = new ImagePreset(preset); 8690d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.setImagePreset(copy); 8700d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (preset.isFx()) { 8710d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // if it's an FX we rest the curve adjustment too 8720d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageCurves.resetCurve(); 8730d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 8740d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard invalidateViews(); 8750d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 8760d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 8770d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void useImageFilter(ImageFilter imageFilter) { 8780d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (imageFilter == null) { 8790d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard return; 8800d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 8810d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImagePreset oldPreset = mImageShow.getImagePreset(); 8820d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard ImagePreset copy = new ImagePreset(oldPreset); 8830d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard // TODO: use a numerical constant instead. 884bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard if (imageFilter.getName().equalsIgnoreCase("Border")) { 8850d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard copy.remove("Border"); 8860d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard copy.setHistoryName("Border"); 8870d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 8880d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard copy.add(imageFilter); 889bf93da72576b28f4e9dfb27f8f3fef702c8ae82dnicolasroard mImageShow.setImagePreset(copy); 8900d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard invalidateViews(); 8910d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 8920d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 8930d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard @Override 8940d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onItemClick(AdapterView<?> parent, View view, int position, 8950d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard long id) { 8960d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageShow.onItemClick(position); 8970d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard invalidateViews(); 8980d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 8990d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 9000d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void pickImage() { 9010d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard Intent intent = new Intent(); 9020d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard intent.setType("image/*"); 9030d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard intent.setAction(Intent.ACTION_GET_CONTENT); 9040d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard startActivityForResult(Intent.createChooser(intent, getString(R.string.select_image)), 9050d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard SELECT_PICTURE); 9060d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 9070d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 9080d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void onActivityResult(int requestCode, int resultCode, Intent data) { 9090d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard Log.v(LOGTAG, "onActivityResult"); 9100d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (resultCode == RESULT_OK) { 9110d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard if (requestCode == SELECT_PICTURE) { 9120d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard Uri selectedImageUri = data.getData(); 9130d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard mImageLoader.loadBitmap(selectedImageUri); 9140d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 9150d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 9160d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 9170d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 9180d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard public void saveImage() { 9190d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard Toast toast = Toast.makeText(getBaseContext(), getString(R.string.saving_image), 9200d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard Toast.LENGTH_SHORT); 9210d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard toast.setGravity(Gravity.CENTER, 0, 0); 9220d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard toast.show(); 9230d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 9240ee91a2b74808fa3f51d370daaddf99f588d72efnicolasroard mImageShow.saveImage(this, null); 9250d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 9260d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 9270d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard static { 928e3f9f579d73af613a33ba1d0a93dc101ea671a69nicolasroard System.loadLibrary("jni_filtershow_filters"); 9290d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard } 9300d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 9310d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard} 932