Android Open Source - slider Piece Drawer Factory






From Project

Back to project page slider.

License

The source code is released under:

Apache License

If you think the Android project slider 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 de.devisnik.android.sliding.tile;
/*w w w.  j  av a2  s. c  om*/
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Bitmap.Config;
import de.devisnik.android.sliding.Settings;
import de.devisnik.sliding.Point;

public class PieceDrawerFactory {

  private final int itsWidth;
  private final int itsHeight;
  private final Settings itsSettings;
  private final Point itsPieceSize;

  PieceDrawerFactory(final int width, final int height, final Settings settings) {
    itsWidth = width;
    itsHeight = height;
    itsSettings = settings;
    itsPieceSize = Point.divide(width, height, settings.getFrameSize(width, height));
  }

  public IPieceDrawer create() {
    if (itsSettings.isUseDefaultImage())
      return createCachedNumberDrawer();
    Bitmap storedImage = itsSettings.readImage();
    if (storedImage == null)
      return createCachedNumberDrawer();
    return new ImagePieceDrawer(createTargetBitmap(storedImage), itsPieceSize);
  }

  private Bitmap createTargetBitmap(final Bitmap bitmap) {
    if (bitmap == null)
      return null;
    Config bitmapConfig = bitmap.getConfig();
    Bitmap output = Bitmap.createBitmap(itsWidth, itsHeight, bitmapConfig == null ? Config.ARGB_8888
        : Config.ARGB_8888);
    Canvas canvas = new Canvas(output);
    Paint paint = new Paint();
    Rect clipRect = computeClipRectangle(bitmap);
    Rect targetRect = new Rect(0, 0, itsWidth, itsHeight);
    paint.setAntiAlias(true);
    canvas.drawBitmap(bitmap, clipRect, targetRect, paint);
    return output;
  }

  private Rect computeClipRectangle(final Bitmap bitmap) {
    float targetRatio = ((float) itsWidth) / itsHeight;
    Point bitmapArea = new Point(bitmap.getWidth(), bitmap.getHeight());
    float bitmapRatio = bitmapArea.ratio();
    Point clipArea = bitmapArea.copy();
    if (targetRatio <= bitmapRatio)
      clipArea.x = Math.round(targetRatio * clipArea.y);
    else
      clipArea.y = Math.round(clipArea.x / targetRatio);
    Point shift = Point.diff(bitmapArea, clipArea).divideBy(2);
    return new Rect(shift.x, shift.y, clipArea.x + shift.x, clipArea.y + shift.y);
  }

  private IPieceDrawer createCachedNumberDrawer() {
    return new BitmapCachingPieceDrawer(new NumberPieceDrawer(itsPieceSize));
  }

}




Java Source Code List

de.devisnik.android.sliding.ARandom.java
de.devisnik.android.sliding.FPSCounter.java
de.devisnik.android.sliding.FrameDrawer.java
de.devisnik.android.sliding.ISpeed.java
de.devisnik.android.sliding.ImageCache.java
de.devisnik.android.sliding.ImageFactory.java
de.devisnik.android.sliding.Logger.java
de.devisnik.android.sliding.OpenActivity.java
de.devisnik.android.sliding.OpenPreviewActivity.java
de.devisnik.android.sliding.PropertiesBuilder.java
de.devisnik.android.sliding.RenderHandler.java
de.devisnik.android.sliding.Replayer.java
de.devisnik.android.sliding.Settings.java
de.devisnik.android.sliding.SlidingPreferences.java
de.devisnik.android.sliding.SlidingWallpaper.java
de.devisnik.android.sliding.SpeedFactory.java
de.devisnik.android.sliding.SummaryUpdater.java
de.devisnik.android.sliding.tile.BitmapCachingPieceDrawer.java
de.devisnik.android.sliding.tile.CachingPieceDrawer.java
de.devisnik.android.sliding.tile.IPieceDrawer.java
de.devisnik.android.sliding.tile.ImagePieceDrawer.java
de.devisnik.android.sliding.tile.NumberPieceDrawer.java
de.devisnik.android.sliding.tile.PieceDrawerFactory.java
de.devisnik.android.sliding.tile.TileShifter.java
de.devisnik.android.sliding.tile.TileStore.java
de.devisnik.android.sliding.tile.Tile.java
de.devisnik.sliding.FrameFactory.java
de.devisnik.sliding.FrameScrambler.java
de.devisnik.sliding.FromHomeShiftingEvent.java
de.devisnik.sliding.IFrameListener.java
de.devisnik.sliding.IFrame.java
de.devisnik.sliding.IHole.java
de.devisnik.sliding.IMove.java
de.devisnik.sliding.IPiece.java
de.devisnik.sliding.IRandom.java
de.devisnik.sliding.IRobotFrame.java
de.devisnik.sliding.IShifterListener.java
de.devisnik.sliding.MoveFactory.java
de.devisnik.sliding.Point.java
de.devisnik.sliding.ShiftingEvent.java
de.devisnik.sliding.ToHomeShiftingEvent.java
de.devisnik.sliding.animation.AccelerateDecelerateInterpolator.java
de.devisnik.sliding.animation.AnimationRunner.java
de.devisnik.sliding.animation.Animation.java
de.devisnik.sliding.animation.IInterpolator.java
de.devisnik.sliding.animation.IMovement.java
de.devisnik.sliding.animation.IShiftable.java
de.devisnik.sliding.animation.LinearInterpolator.java
de.devisnik.sliding.animation.MetaShiftable.java
de.devisnik.sliding.animation.ShiftAnimation.java
de.devisnik.sliding.animation.Translation.java
de.devisnik.sliding.impl.Frame.java
de.devisnik.sliding.impl.Hole.java
de.devisnik.sliding.impl.Move.java
de.devisnik.sliding.impl.PieceIterator.java
de.devisnik.sliding.impl.Piece.java
de.devisnik.sliding.impl.RobotFrame.java
de.devisnik.sliding.impl.Scrambler.java