Android Open Source - Aviary-Android-SDK Native Effect Range Panel






From Project

Back to project page Aviary-Android-SDK.

License

The source code is released under:

AVIARY API TERMS OF USE Full Legal Agreement The following terms and conditions and the terms and conditions at http://www.aviary.com/terms (collectively, the ?Terms??) govern your use of any and ...

If you think the Android project Aviary-Android-SDK listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.aviary.android.feather.effects;
/*from  w  w  w  .  jav a  2s  . co  m*/
import org.json.JSONException;

import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.os.Bundle;

import com.aviary.android.feather.R;
import com.aviary.android.feather.common.utils.SystemUtils;
import com.aviary.android.feather.common.utils.os.AviaryAsyncTask;
import com.aviary.android.feather.headless.filters.INativeRangeFilter;
import com.aviary.android.feather.headless.moa.Moa;
import com.aviary.android.feather.headless.moa.MoaActionList;
import com.aviary.android.feather.headless.moa.MoaResult;
import com.aviary.android.feather.library.content.ToolEntry;
import com.aviary.android.feather.library.filters.FilterLoaderFactory;
import com.aviary.android.feather.library.filters.FilterLoaderFactory.Filters;
import com.aviary.android.feather.library.services.IAviaryController;
import com.aviary.android.feather.library.utils.BitmapUtils;

public class NativeEffectRangePanel extends SliderEffectPanel {

  ApplyFilterTask mCurrentTask;
  volatile boolean mIsRendering = false;
  boolean enableFastPreview;
  MoaActionList mActions = null;

  public NativeEffectRangePanel ( IAviaryController context, ToolEntry entry, Filters type, String resourcesBaseName ) {
    super( context, entry, type, resourcesBaseName );
    mFilter = FilterLoaderFactory.get( type );
  }

  @Override
  public void onCreate( Bitmap bitmap, Bundle options ) {
    super.onCreate( bitmap, options );
  }

  @Override
  public void onBitmapReplaced( Bitmap bitmap ) {
    super.onBitmapReplaced( bitmap );

    if ( isActive() ) {
      applyFilter( 0, false );
      setValue( 50 );
    }
  }

  @Override
  public void onActivate() {
    super.onActivate();
    mPreview = BitmapUtils.copy( mBitmap, Bitmap.Config.ARGB_8888 );
    onPreviewChanged( mPreview, true, true );
  }

  @Override
  public boolean isRendering() {
    return mIsRendering;
  }

  @Override
  protected void onSliderStart( int value ) {
    if ( enableFastPreview ) {
      onProgressStart();
    }
  }

  @Override
  protected void onSliderEnd( int value ) {
    mLogger.info( "onProgressEnd: " + value );

    value = ( value - 50 ) * 2;
    applyFilter( value, !enableFastPreview );

    if ( enableFastPreview ) {
      onProgressEnd();
    }
  }

  @Override
  protected void onSliderChanged( int value, boolean fromUser ) {
    mLogger.info( "onProgressChanged: " + value + ", fromUser: " + fromUser );

    if ( enableFastPreview || !fromUser ) {
      value = ( value - 50 ) * 2;
      applyFilter( value, !fromUser );
    }
  }

  @Override
  public void onDestroy() {
    super.onDestroy();
  }

  @Override
  public void onDeactivate() {
    onProgressEnd();
    super.onDeactivate();
  }

  @Override
  protected void onGenerateResult() {
    mLogger.info( "onGenerateResult: " + mIsRendering );

    if ( mIsRendering ) {
      GenerateResultTask task = new GenerateResultTask();
      task.execute();
    } else {
      onComplete( mPreview, mActions );
    }
  }

  @Override
  public boolean onBackPressed() {
    mLogger.info( "onBackPressed" );
    killCurrentTask();
    return super.onBackPressed();
  }

  @Override
  public void onCancelled() {
    killCurrentTask();
    mIsRendering = false;
    super.onCancelled();
  }

  @Override
  public boolean getIsChanged() {
    return super.getIsChanged() && ( mIsRendering == true || mActions != null );
  }

  boolean killCurrentTask() {
    if ( mCurrentTask != null ) {
      return mCurrentTask.cancel( true );
    }
    return false;
  }

  protected void applyFilter( float value, boolean showProgress ) {
    mLogger.info( "applyFilter: " + value );
    killCurrentTask();

    if ( value == 0 ) {
      BitmapUtils.copy( mBitmap, mPreview );
      onPreviewChanged( mPreview, false, true );
      setIsChanged( false );
      mActions = null;
    } else {
      mCurrentTask = new ApplyFilterTask( value, showProgress );
      mCurrentTask.execute( mBitmap );
    }
  }

  class ApplyFilterTask extends AviaryAsyncTask<Bitmap, Void, Bitmap> {

    MoaResult mResult;
    boolean mShowProgress;

    public ApplyFilterTask ( float value, boolean showProgress ) {
      mShowProgress = showProgress;
      ( (INativeRangeFilter) mFilter ).setValue( value );
    }

    @Override
    protected void PreExecute() {
      mLogger.info( "PreExecute" );

      try {
        mResult = ( (INativeRangeFilter) mFilter ).prepare( mBitmap, mPreview, 1, 1 );
      } catch ( JSONException e ) {
        e.printStackTrace();
      }

      if ( mShowProgress ) {
        onProgressStart();
      }
    }

    @Override
    protected void onCancelled() {
      super.onCancelled();
      mLogger.info( "onCancelled" );
      if ( mResult != null ) {
        mResult.cancel();
      }

      if ( mShowProgress ) {
        onProgressEnd();
      }
      mIsRendering = false;
    }

    @Override
    protected Bitmap doInBackground( Bitmap... arg0 ) {

      if ( isCancelled() ) return null;
      mIsRendering = true;

      long t1 = System.currentTimeMillis();
      try {
        mResult.execute();
        mActions = ( (INativeRangeFilter) mFilter ).getActions();
      } catch ( Exception exception ) {
        exception.printStackTrace();
        mLogger.error( exception.getMessage() );
        return null;
      }
      long t2 = System.currentTimeMillis();

      if ( null != mTrackingAttributes ) {
        mTrackingAttributes.put( "renderTime", Long.toString( t2 - t1 ) );
      }

      if ( isCancelled() ) return null;
      return mPreview;
    }

    @Override
    protected void PostExecute( Bitmap result ) {

      if ( !isActive() ) return;

      mLogger.info( "PostExecute" );

      if ( mShowProgress ) {
        onProgressEnd();
      }

      if ( result != null ) {
        if ( SystemUtils.isHoneyComb() ) {
          Moa.notifyPixelsChanged( mPreview );
        }
        onPreviewUpdated();
        // onPreviewChanged( mPreview, true );
      } else {
        BitmapUtils.copy( mBitmap, mPreview );
        onPreviewChanged( mPreview, false, true );
        setIsChanged( false );
      }
      mIsRendering = false;
      mCurrentTask = null;
    }
  }

  class GenerateResultTask extends AviaryAsyncTask<Void, Void, Void> {

    ProgressDialog mProgress = new ProgressDialog( getContext().getBaseContext() );

    @Override
    protected void PreExecute() {
      mProgress.setTitle( getContext().getBaseContext().getString( R.string.feather_loading_title ) );
      mProgress.setMessage( getContext().getBaseContext().getString( R.string.feather_effect_loading_message ) );
      mProgress.setIndeterminate( true );
      mProgress.setCancelable( false );
      mProgress.show();
    }

    @Override
    protected Void doInBackground( Void... params ) {
      mLogger.info( "GenerateResultTask::doInBackground", mIsRendering );

      while ( mIsRendering ) {
        // mLogger.log( "waiting...." );
      }
      return null;
    }

    @Override
    protected void PostExecute( Void result ) {
      mLogger.info( "GenerateResultTask::PostExecute" );

      if ( getContext().getBaseActivity().isFinishing() ) return;
      if ( mProgress.isShowing() ) mProgress.dismiss();
      onComplete( mPreview, mActions );
    }
  }
}




Java Source Code List

com.aviary.android.feather.AlertActivity.java
com.aviary.android.feather.AviaryMainController.java
com.aviary.android.feather.FeatherActivity.java
com.aviary.android.feather.async_tasks.AsyncImageManager.java
com.aviary.android.feather.async_tasks.DownloadImageAsyncTask.java
com.aviary.android.feather.async_tasks.ExifTask.java
com.aviary.android.feather.effects.AbstractContentPanel.java
com.aviary.android.feather.effects.AbstractOptionPanel.java
com.aviary.android.feather.effects.AbstractPanelLoaderService.java
com.aviary.android.feather.effects.AbstractPanel.java
com.aviary.android.feather.effects.AdjustEffectPanel.java
com.aviary.android.feather.effects.BordersPanel.java
com.aviary.android.feather.effects.ColorSplashPanel.java
com.aviary.android.feather.effects.CropPanel.java
com.aviary.android.feather.effects.DelayedSpotDrawPanel.java
com.aviary.android.feather.effects.DrawingPanel.java
com.aviary.android.feather.effects.EffectsPanel.java
com.aviary.android.feather.effects.EnhanceEffectPanel.java
com.aviary.android.feather.effects.MemePanel.java
com.aviary.android.feather.effects.NativeEffectRangePanel.java
com.aviary.android.feather.effects.SimpleStatusMachine.java
com.aviary.android.feather.effects.SliderEffectPanel.java
com.aviary.android.feather.effects.StickersPanel.java
com.aviary.android.feather.effects.TextPanel.java
com.aviary.android.feather.effects.TiltShiftPanel.java
com.aviary.android.feather.graphics.CdsPreviewTransformer.java
com.aviary.android.feather.graphics.GalleryBottomIndicatorDrawable.java
com.aviary.android.feather.graphics.GalleryTopIndicatorDrawable.java
com.aviary.android.feather.graphics.GlowBitmapDrawable.java
com.aviary.android.feather.graphics.GlowDrawable.java
com.aviary.android.feather.graphics.PluginDividerDrawable.java
com.aviary.android.feather.graphics.PreviewFillColorDrawable.java
com.aviary.android.feather.graphics.PreviewSpotDrawable.java
com.aviary.android.feather.graphics.RepeatableHorizontalDrawable.java
com.aviary.android.feather.opengl.AviaryGLSurfaceView.java
com.aviary.android.feather.utils.PackIconCallable.java
com.aviary.android.feather.utils.SimpleBitmapCache.java
com.aviary.android.feather.utils.ThreadUtils.java
com.aviary.android.feather.utils.TypefaceUtils.java
com.aviary.android.feather.utils.UIUtils.java
com.aviary.android.feather.widget.AdjustImageView.java
com.aviary.android.feather.widget.AviaryAbsSpinner.java
com.aviary.android.feather.widget.AviaryAdapterView.java
com.aviary.android.feather.widget.AviaryBadgeToolLayout.java
com.aviary.android.feather.widget.AviaryBottomBarViewFlipper.java
com.aviary.android.feather.widget.AviaryButton.java
com.aviary.android.feather.widget.AviaryEdgeEffect.java
com.aviary.android.feather.widget.AviaryGalleryTopIndicatorView.java
com.aviary.android.feather.widget.AviaryGallery.java
com.aviary.android.feather.widget.AviaryHighlightImageButton.java
com.aviary.android.feather.widget.AviaryImageRestoreSwitcher.java
com.aviary.android.feather.widget.AviaryImageSwitcher.java
com.aviary.android.feather.widget.AviaryNavBarViewFlipper.java
com.aviary.android.feather.widget.AviarySeekBar.java
com.aviary.android.feather.widget.AviaryTextView.java
com.aviary.android.feather.widget.AviaryToast.java
com.aviary.android.feather.widget.AviaryToggleButton.java
com.aviary.android.feather.widget.AviaryWheel.java
com.aviary.android.feather.widget.AviaryWorkspaceIndicator.java
com.aviary.android.feather.widget.AviaryWorkspace.java
com.aviary.android.feather.widget.CellLayout.java
com.aviary.android.feather.widget.CropImageView.java
com.aviary.android.feather.widget.DrawableHighlightView.java
com.aviary.android.feather.widget.EffectThumbLayout.java
com.aviary.android.feather.widget.HighlightView.java
com.aviary.android.feather.widget.IAPBuyButton.java
com.aviary.android.feather.widget.IAPDialogDetail.java
com.aviary.android.feather.widget.IAPDialogList.java
com.aviary.android.feather.widget.IAPDialogMain.java
com.aviary.android.feather.widget.ImageViewDrawableOverlay.java
com.aviary.android.feather.widget.ImageViewSpotDraw.java
com.aviary.android.feather.widget.ImageViewTiltiShiftTouch.java
com.aviary.android.feather.widget.ImageViewTouchAndDraw.java
com.aviary.android.feather.widget.PointCloud.java
com.aviary.android.feather.widget.ScrollerRunnable.java
com.aviary.android.feather.widget.VibrationHelper.java
com.aviary.android.feather.widget.VibrationWidget.java