Android Open Source - Aviary-Android-SDK Cds Preview Transformer






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.graphics;
//  w ww. j  av  a 2 s  . c  o  m
import java.util.concurrent.Callable;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;

import com.aviary.android.feather.cds.AviaryCds;
import com.aviary.android.feather.common.log.LoggerFactory;
import com.aviary.android.feather.common.log.LoggerFactory.Logger;
import com.aviary.android.feather.common.log.LoggerFactory.LoggerType;
import com.aviary.android.feather.library.utils.BitmapUtils;
import com.squareup.picasso.Transformation;

public class CdsPreviewTransformer implements Transformation, Callable<Bitmap> {

  static Logger logger = LoggerFactory.getLogger( CdsPreviewTransformer.class.getSimpleName(), LoggerType.ConsoleLoggerType );

  final String mPath;
  final String mDisplayName;
  final String mType;
  int mTargetDensity;
  int mInputDensity;
  int mMaxW = -1;
  int mMaxH = -1;

  public CdsPreviewTransformer ( String path, String displayName, String type ) {
    mDisplayName = displayName;
    mType = type;
    mPath = path;
  }

  public CdsPreviewTransformer ( String path, String displayName, String type, int inputDensity, int targetDensity, int maxW, int maxH ) {
    this( path, displayName, type );
    mTargetDensity = targetDensity;
    mInputDensity = inputDensity;
    mMaxW = maxW;
    mMaxH = maxH;
  }

  @Override
  public Bitmap transform( Bitmap bitmap ) {
    // ok, first resize to the max size, if necessary
    if ( null != bitmap && ( mMaxW > 0 && mMaxH > 0 ) ) {
      logger.log( "need to resize to: %dx%d", mMaxW, mMaxH );
      Bitmap resized = BitmapUtils.resizeBitmap( bitmap, mMaxW, mMaxH );
      if ( !resized.equals( bitmap ) ) {
        bitmap.recycle();
        bitmap = resized;
      }
    }

    if ( AviaryCds.PACKTYPE_EFFECT.equals( mType ) ) {
      if ( !bitmap.isMutable() ) {
        Bitmap newBitmap = bitmap.copy( bitmap.getConfig(), true );
        if ( newBitmap != bitmap ) {
          bitmap.recycle();
          bitmap = newBitmap;
        }
      }

      if ( null != bitmap && bitmap.isMutable() ) {
        Canvas canvas = new Canvas( bitmap );
        Paint paint = new Paint( Paint.ANTI_ALIAS_FLAG | Paint.SUBPIXEL_TEXT_FLAG );
        paint.setColor( Color.WHITE );
        paint.setTextSize( bitmap.getHeight() / 10 );

        Rect bounds = new Rect();
        paint.getTextBounds( mDisplayName, 0, mDisplayName.length(), bounds );
        canvas.drawText( mDisplayName, ( bitmap.getWidth() - bounds.width() ) / 2, bitmap.getHeight() - paint.descent() - 2, paint );
      }
    }
    logger.log( "final bitmap.size: %dx%d", bitmap.getWidth(), bitmap.getHeight() );
    return bitmap;
  }

  @Override
  public String key() {
    return mPath;
  }

  @Override
  public Bitmap call() throws Exception {
    Bitmap bitmap = decode();
    return transform( bitmap );
  }

  private Bitmap decode() {
    Bitmap bitmap = null;
    Options options = new Options();
    options.inPreferredConfig = Bitmap.Config.RGB_565;
    options.inInputShareable = true;
    options.inPurgeable = true;
    options.inTargetDensity = mTargetDensity;
    options.inDensity = mInputDensity;
    bitmap = BitmapFactory.decodeFile( mPath, options );

    logger.log( "input.density: %d, target.density: %d", mInputDensity, mTargetDensity );
    logger.log( "options.size: %dx%d", options.outWidth, options.outHeight );

    return bitmap;
  }
}




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