/*
 * Copyright (C) 2014 Pedro Vicente Gómez Sánchez.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.github.pedrovgs.transformer;

import android.view.View;

import com.nineoldandroids.view.ViewHelper;

/**
 * Transformer extension created to scale the view instead of resize it as the other
 * implementation does. This implementation is based on Nineoldanroids library to scale
 * the view.
 *
 * @author Pedro Vicente Gómez Sánchez
 */
class ScaleTransformer extends Transformer {

    ScaleTransformer(View view, View parent) {
        super(view, parent);
    }

    /**
     * Uses Nineoldandroids to change the scale in the X axis.
     *
     * @param verticalDragOffset used to calculate the new scale.
     */
    @Override
    public void updateWidth(float verticalDragOffset) {
        ViewHelper.setScaleX(getView(), 1 - verticalDragOffset / getXScaleFactor());
    }

    /**
     * Uses Nineoldandroids to change the scale in the Y axis.
     *
     * @param verticalDragOffset used to calculate the new scale.
     */
    @Override
    public void updateHeight(float verticalDragOffset) {
        ViewHelper.setScaleY(getView(), 1 - verticalDragOffset / getYScaleFactor());
    }

    /**
     * Uses Nineoldandroids to change the X position of the view.
     *
     * @param verticalDragOffset used to calculate the new X position.
     */
    @Override
    public void updateXPosition(float verticalDragOffset) {
        ViewHelper.setPivotX(getView(), getView().getWidth() - getMarginRight());
    }

    /**
     * Uses Nineoldandroids to change the Y position of the view.
     *
     * @param verticalDragOffset used to calculate the new Y position.
     */
    @Override
    public void updateYPosition(float verticalDragOffset) {
        ViewHelper.setPivotY(getView(), getView().getHeight() - getMarginBottom());
    }

    /**
     * @return true if the right corner of the view matches with the parent view width.
     */
    @Override
    public boolean isViewAtRight() {
        return getView().getRight() == getParentView().getWidth();
    }

    /**
     * @return true if the bottom corner of the view matches with the parent view height.
     */
    @Override
    public boolean isViewAtBottom() {
        return getView().getBottom() == getParentView().getHeight();
    }

    /**
     * @return true if the left position of the view is to the right of the twenty five percent of
     * the parent width.
     */
    @Override
    public boolean isNextToRightBound() {
        return (getView().getLeft() - getMarginRight()) > getParentView().getWidth() * 0.25;
    }

    /**
     * @return true if the left position of the view is to the left of the twenty five percent of
     * the parent width.
     */
    @Override
    public boolean isNextToLeftBound() {
        return (getView().getLeft() - getMarginRight()) < getParentView().getWidth() * 0.25;
    }

    /**
     * @return min view height taking into account the configured margin.
     */
    @Override
    public int getMinHeightPlusMargin() {
        return getView().getHeight();
    }

    /**
     * @return min view width.
     */
    @Override
    public int getMinWidth() {
        return (int) getOriginalWidth();
    }

    @Override
    public int getLastLeftPosition() {
        return 0;
    }

}

@@ -2851,35 +2851,36 @@
 urn true if the 
-lef
+righ
 t position of th
@@ -2900,32 +2900,21 @@
 the 
-righ
+lef
 t of 
-the twenty five
+sixty
  per
@@ -2995,20 +2995,19 @@
 isNextTo
-Righ
+Lef
 tBound()
@@ -3030,35 +3030,36 @@
 n (getView().get
-Lef
+Righ
 t() - getMarginR
@@ -3070,9 +3070,9 @@
 ()) 
-%3E
+%3C
  get
@@ -3091,34 +3091,33 @@
 .getWidth() * 0.
-25
+6
 ;%0A    %7D%0A%0A    /**
@@ -3144,19 +3144,20 @@
  if the 
-lef
+righ
 t positi
@@ -3177,27 +3177,28 @@
 w is to the 
-lef
+righ
 t of the twe
@@ -3194,16 +3194,28 @@
  of the 
+one hundred 
 twenty f
@@ -3218,16 +3218,21 @@
 ty five 
+five 
 percent 
@@ -3233,35 +3233,35 @@
 rcent of
+ the
 %0A     *
- the
  parent 
 width.%0A 
@@ -3244,32 +3244,37 @@
 e%0A     * parent 
+view 
 width.%0A     */%0A 
@@ -3305,35 +3305,36 @@
 boolean isNextTo
-Lef
+Righ
 tBound() %7B%0A     
@@ -3357,19 +3357,20 @@
 ew().get
-Lef
+Righ
 t() - ge
@@ -3377,33 +3377,33 @@
 tMarginRight()) 
-%3C
+%3E
  getParentView()
@@ -3416,17 +3416,17 @@
 dth() * 
-0
+1
 .25;%0A   

Change ScaleTransformer isNextToLeftBound and isNextToRightBound method implementation.