Example usage for com.badlogic.gdx.scenes.scene2d Actor setScale

List of usage examples for com.badlogic.gdx.scenes.scene2d Actor setScale

Introduction

In this page you can find the example usage for com.badlogic.gdx.scenes.scene2d Actor setScale.

Prototype

public void setScale(float scaleX, float scaleY) 

Source Link

Document

Sets the scale X and scale Y.

Usage

From source file:com.bagon.matchteam.mtx.utils.UtilsActor.java

License:Apache License

/**
 * Set scale of multiple actors at once/* www .j  a  va 2  s.co m*/
 * */
public static void setScale(float sx, float sy, Actor... actors) {
    for (Actor a : actors) {
        a.setScale(sx, sy);
    }
}

From source file:com.redthirddivision.astilade.render.tweens.ActorAccessor.java

License:Apache License

@Override
public void setValues(Actor target, int type, float[] newValues) {
    switch (type) {
    case TweenTypes.ALPHA:
        target.setColor(target.getColor().r, target.getColor().g, target.getColor().g, newValues[0]);
        break;/*from www.  j  a  v a  2 s  .  co m*/
    case TweenTypes.RGB:
        target.setColor(newValues[0], newValues[1], newValues[2], target.getColor().a);
        break;
    case TweenTypes.Y:
        target.setY(newValues[0]);
        break;
    case TweenTypes.SIZE:
        target.setScale(newValues[0], newValues[1]);
        break;
    default:
        assert false;
    }
}

From source file:es.eucm.ead.editor.view.widgets.groupeditor.Grouper.java

License:Open Source License

/**
 * @param group/*  w  w  w  . j a v a2 s . co  m*/
 *            an empty group to be the parent
 * @return the group with the current selection
 */
public Group createGroup(Group group) {
    // New group has the same transformation as this
    group.setBounds(getX(), getY(), getWidth(), getHeight());
    group.setOrigin(getOriginX(), getOriginY());
    group.setRotation(getRotation());
    group.setScale(getScaleX(), getScaleY());

    // Each children in the group must be contained by the new group
    Array<Actor> children = getChildren();
    children.sort(new Comparator<Actor>() {
        @Override
        public int compare(Actor actor, Actor actor2) {
            return ((SelectionGhost) actor).getRepresentedActor().getZIndex()
                    - ((SelectionGhost) actor2).getRepresentedActor().getZIndex();
        }
    });

    for (Actor actor : children) {
        SelectionGhost ghost = (SelectionGhost) actor;
        Actor representedActor = ghost.getRepresentedActor();
        representedActor.setPosition(ghost.getX(), ghost.getY());
        representedActor.setRotation(ghost.getRotation());
        representedActor.setScale(ghost.getScaleX(), ghost.getScaleY());
        group.addActor(representedActor);
    }
    return group;
}

From source file:es.eucm.ead.editor.view.widgets.groupeditor.Modifier.java

License:Open Source License

/**
 * Applies the current transformation represented by the handles to given
 * actor/* w  w  w. j ava 2 s .c om*/
 */
public void applyTransformation(Actor influencedActor, Vector2 origin, Vector2 tangent, Vector2 normal) {
    /*
     * We are going to calculate the affine transformation for the actor to
     * fit the bounds represented by the handles. The affine transformation
     * is defined as follows:
     */
    // |a b tx|
    // |c d ty|=|Translation Matrix| x |Scale Matrix| x |Rotation
    // Matrix|
    // |0 0 1 |
    /*
     * More info about affine transformations:
     * https://people.gnome.org/~mathieu
     * /libart/libart-affine-transformation-matrices.html, To obtain the
     * matrix, we want to resolve the following equation system:
     */
    // | a b tx| |0| |o.x|
    // | c d ty|*|0|=|o.y|
    // | 0 0 1 | |1| | 1 |
    //
    // | a b tx| |w| |t.x|
    // | c d ty|*|0|=|t.y|
    // | 0 0 1 | |1| | 1 |
    //
    // | a b tx| |0| |n.x|
    // | c d ty|*|h|=|n.y|
    // | 0 0 1 | |1| | 1 |
    /*
     * where o is handles[0] (origin), t is handles[2] (tangent) and n is
     * handles[6] (normal), w is actor.getWidth() and h is
     * actor.getHeight().
     * 
     * This matrix defines that the 3 points defining actor bounds are
     * transformed to the 3 points defining modifier bounds. E.g., we want
     * that actor origin (0,0) is transformed to (handles[0].x,
     * handles[0].y), and that is expressed in the first equation.
     * 
     * Resolving these equations is obtained:
     */
    // a = (t.x - o.y) / w
    // b = (t.y - o.y) / w
    // c = (n.x - o.x) / h
    // d = (n.y - o.y) / h
    /*
     * Values for translation, scale and rotation contained by the matrix
     * can be obtained directly making operations over a, b, c and d:
     */
    // tx = o.x
    // ty = o.y
    // sx = sqrt(a^2+b^2)
    // sy = sqrt(c^2+d^2)
    // rotation = atan(c/d)
    // or
    // rotation = atan(-b/a)
    /*
     * Rotation can give two different values (this happens when there is
     * more than one way of obtaining the same transformation). To avoid
     * that, we ignore the rotation to obtain the final values.
     */

    Vector2 o = tmp1.set(origin.x, origin.y);
    Vector2 t = tmp2.set(tangent.x, tangent.y);
    Vector2 n = tmp3.set(normal.x, normal.y);

    Vector2 vt = tmp4.set(t).sub(o);
    Vector2 vn = tmp5.set(n).sub(o);

    // Ignore rotation
    float rotation = influencedActor.getRotation();
    vt.rotate(-rotation);
    vn.rotate(-rotation);

    t.set(vt).add(o);
    n.set(vn).add(o);

    float a = (t.x - o.x) / influencedActor.getWidth();
    float c = (t.y - o.y) / influencedActor.getWidth();
    float b = (n.x - o.x) / influencedActor.getHeight();
    float d = (n.y - o.y) / influencedActor.getHeight();

    // Math.sqrt gives a positive value, but it also have a negatives.
    // The
    // signum is calculated computing the current rotation
    float signumX = vt.angle() > 90.0f && vt.angle() < 270.0f ? -1.0f : 1.0f;
    float signumY = vn.angle() > 180.0f ? -1.0f : 1.0f;

    float scaleX = (float) Math.sqrt(a * a + b * b) * signumX;
    float scaleY = (float) Math.sqrt(c * c + d * d) * signumY;

    influencedActor.setScale(scaleX, scaleY);

    /*
     * To obtain the correct translation value we need to subtract the
     * amount of translation due to the origin.
     */
    tmpMatrix.setToTranslation(influencedActor.getOriginX(), influencedActor.getOriginY());
    tmpMatrix.rotate(influencedActor.getRotation());
    tmpMatrix.scale(influencedActor.getScaleX(), influencedActor.getScaleY());
    tmpMatrix.translate(-influencedActor.getOriginX(), -influencedActor.getOriginY());

    /*
     * Now, the matrix has how much translation is due to the origin
     * involved in the rotation and scaling operations
     */
    float x = o.x - tmpMatrix.getValues()[Matrix3.M02];
    float y = o.y - tmpMatrix.getValues()[Matrix3.M12];
    influencedActor.setPosition(x, y);
}

From source file:es.eucm.ead.engine.utils.EngineUtils.java

License:Open Source License

/**
 * Sets position, rotation, scale and origin in actor to meet the 3 given
 * points/*from  w ww . jav  a 2s .  co  m*/
 */
public static void applyTransformation(Actor actor, Vector2 origin, Vector2 tangent, Vector2 normal) {
    /*
     * We are going to calculate the affine transformation for the actor to
     * fit the bounds represented by the handles. The affine transformation
     * is defined as follows:
     */
    // |a b tx|
    // |c d ty|=|Translation Matrix| x |Scale Matrix| x |Rotation
    // Matrix|
    // |0 0 1 |
    /*
     * More info about affine transformations:
     * https://people.gnome.org/~mathieu
     * /libart/libart-affine-transformation-matrices.html, To obtain the
     * matrix, we want to resolve the following equation system:
     */
    // | a b tx| |0| |o.x|
    // | c d ty|*|0|=|o.y|
    // | 0 0 1 | |1| | 1 |
    //
    // | a b tx| |w| |t.x|
    // | c d ty|*|0|=|t.y|
    // | 0 0 1 | |1| | 1 |
    //
    // | a b tx| |0| |n.x|
    // | c d ty|*|h|=|n.y|
    // | 0 0 1 | |1| | 1 |
    /*
     * where o is handles[0] (origin), t is handles[2] (tangent) and n is
     * handles[6] (normal), w is actor.getWidth() and h is
     * actor.getHeight().
     * 
     * This matrix defines that the 3 points defining actor bounds are
     * transformed to the 3 points defining modifier bounds. E.g., we want
     * that actor origin (0,0) is transformed to (handles[0].x,
     * handles[0].y), and that is expressed in the first equation.
     * 
     * Resolving these equations is obtained:
     */
    // a = (t.x - o.y) / w
    // b = (t.y - o.y) / w
    // c = (n.x - o.x) / h
    // d = (n.y - o.y) / h
    /*
     * Values for translation, scale and rotation contained by the matrix
     * can be obtained directly making operations over a, b, c and d:
     */
    // tx = o.x
    // ty = o.y
    // sx = sqrt(a^2+b^2)
    // sy = sqrt(c^2+d^2)
    // rotation = atan(c/d)
    // or
    // rotation = atan(-b/a)
    /*
     * Rotation can give two different values (this happens when there is
     * more than one way of obtaining the same transformation). To avoid
     * that, we ignore the rotation to obtain the final values.
     */

    Vector2 tmp1 = Pools.obtain(Vector2.class);
    Vector2 tmp2 = Pools.obtain(Vector2.class);
    Vector2 tmp3 = Pools.obtain(Vector2.class);
    Vector2 tmp4 = Pools.obtain(Vector2.class);
    Vector2 tmp5 = Pools.obtain(Vector2.class);

    Vector2 o = tmp1.set(origin.x, origin.y);
    Vector2 t = tmp2.set(tangent.x, tangent.y);
    Vector2 n = tmp3.set(normal.x, normal.y);

    Vector2 vt = tmp4.set(t).sub(o);
    Vector2 vn = tmp5.set(n).sub(o);

    // Ignore rotation
    float rotation = actor.getRotation();
    vt.rotate(-rotation);
    vn.rotate(-rotation);

    t.set(vt).add(o);
    n.set(vn).add(o);

    Vector2 bottomLeft = Pools.obtain(Vector2.class);
    Vector2 size = Pools.obtain(Vector2.class);

    calculateBounds(actor, bottomLeft, size);

    float a = (t.x - o.x) / size.x;
    float c = (t.y - o.y) / size.x;
    float b = (n.x - o.x) / size.y;
    float d = (n.y - o.y) / size.y;

    Pools.free(tmp1);
    Pools.free(tmp2);
    Pools.free(tmp3);
    Pools.free(tmp4);
    Pools.free(tmp5);
    Pools.free(bottomLeft);
    Pools.free(size);

    // Math.sqrt gives a positive value, but it also have a negatives.
    // The
    // signum is calculated computing the current rotation
    float signumX = vt.angle() > 90.0f && vt.angle() < 270.0f ? -1.0f : 1.0f;
    float signumY = vn.angle() > 180.0f ? -1.0f : 1.0f;

    float scaleX = (float) Math.sqrt(a * a + b * b) * signumX;
    float scaleY = (float) Math.sqrt(c * c + d * d) * signumY;

    actor.setScale(scaleX, scaleY);

    /*
     * To obtain the correct translation value we need to subtract the
     * amount of translation due to the origin.
     */
    tmpMatrix.setToTranslation(actor.getOriginX(), actor.getOriginY());
    tmpMatrix.rotate(actor.getRotation());
    tmpMatrix.scale(actor.getScaleX(), actor.getScaleY());
    tmpMatrix.translate(-actor.getOriginX(), -actor.getOriginY());

    /*
     * Now, the matrix has how much translation is due to the origin
     * involved in the rotation and scaling operations
     */
    float x = o.x - tmpMatrix.getValues()[Matrix3.M02];
    float y = o.y - tmpMatrix.getValues()[Matrix3.M12];
    actor.setPosition(x, y);
}

From source file:mobi.shad.s3lib.gfx.g2d.EffectCreator.java

License:Apache License

/**
 * @param actor/*  w  w  w. j a  v a 2 s .c om*/
 * @param effectType
 * @param value
 * @param duration
 * @param type
 */
public static void createEffect(Actor actor, ScreenEffectType effectType, float value, float duration,
        InterpolationType type) {
    if (actor == null) {
        return;
    }
    Interpolation interp = InterpolationType.getInterpolation(type);
    float x = 0;//actor.getX();
    float y = 0;//actor.getY();
    switch (effectType) {
    case SlideLeft:
        actor.setPosition(999, y);
        actor.addAction(Actions.moveTo(x, y, duration, interp));
        break;
    case SlideRight:
        actor.setPosition(-999, y);
        actor.addAction(Actions.moveTo(x, y, duration, interp));
        break;
    case SlideUp:
        actor.setPosition(x, -999);
        actor.addAction(Actions.moveTo(x, y, duration, interp));
        break;
    case SlideDown:
        actor.setPosition(x, 999);
        actor.addAction(Actions.moveTo(x, y, duration, interp));
        break;
    case FadeIn:
        Color color = actor.getColor();
        color.a = 0f;
        actor.setColor(color);
        actor.addAction(Actions.fadeIn(duration, interp));
        break;
    case FadeOut:
        Color color2 = actor.getColor();
        color2.a = 1f;
        actor.setColor(color2);
        actor.addAction(Actions.fadeOut(duration, interp));
        break;
    case FadeInOut:
        actor.addAction(fadeInOut(value, duration, interp));
        break;
    case ScaleIn:
        actor.setScale(0, 0);
        actor.addAction(Actions.scaleTo(1, 1, duration, interp));
        break;
    case ScaleOut:
        actor.setScale(1, 1);
        actor.addAction(Actions.scaleTo(0, 0, duration, interp));
        break;
    case None:
        break;
    default:
        break;
    }
}

From source file:mobi.shad.s3lib.gui.GuiUtil.java

License:Apache License

/**
 * @param source//  w  w w. ja  va  2 s.co  m
 * @param destination
 */
public static void copyActor(Actor source, Actor destination) {
    destination.setBounds(source.getX(), source.getY(), source.getWidth(), source.getHeight());
    destination.setColor(source.getColor());
    destination.setName(source.getName());
    destination.setOrigin(source.getOriginX(), source.getOriginY());
    destination.setRotation(source.getRotation());
    destination.setScale(source.getScaleX(), source.getScaleY());
    destination.setTouchable(source.getTouchable());
    destination.setUserObject(source.getUserObject());
    destination.setVisible(source.isVisible());
    destination.setZIndex(source.getZIndex());
    destination.getStage();
}

From source file:net.mwplay.cocostudio.ui.BaseWidgetParser.java

License:Apache License

/**
 * common attribute parser//w  w w. j av  a 2  s. co  m
 * according cocstudio ui setting properties of the configuration file
 *
 * @param editor
 * @param widget
 * @param parent
 * @param actor
 * @return
 */
public Actor commonParse(CocoStudioUIEditor editor, ObjectData widget, Group parent, Actor actor) {
    this.editor = editor;
    actor.setName(widget.getName());
    actor.setSize(widget.getSize().getX(), widget.getSize().getY());
    // set origin
    if (widget.getAnchorPoint() != null) {
        actor.setOrigin(widget.getAnchorPoint().getScaleX() * actor.getWidth(),
                widget.getAnchorPoint().getScaleY() * actor.getHeight());
    }

    //?Postion
    if (widget.getPosition() != null) {
        actor.setPosition(widget.getPosition().getX() - actor.getOriginX(),
                widget.getPosition().getY() - actor.getOriginY());
    }

    // CocoStudioScaleX,ScaleY 
    //?Scale
    if (widget.getScale() != null) {
        actor.setScale(widget.getScale().getScaleX(), widget.getScale().getScaleY());
    }

    if (widget.getRotation() != 0) {// CocoStudio ?,?.
        actor.setRotation(360 - widget.getRotation() % 360);
    }
    //
    if (widget.getRotationSkewX() != 0 && widget.getRotationSkewX() == widget.getRotationSkewY()) {
        actor.setRotation(360 - widget.getRotationSkewX() % 360);
    }

    // ??
    actor.setVisible(widget.isVisibleForFrame());

    Color color = editor.getColor(widget.getCColor(), widget.getAlpha());

    actor.setColor(color);

    actor.setTouchable(deduceTouchable(actor, widget));

    // callback

    addCallback(actor, widget);
    // callback

    addActor(editor, actor, widget);

    if (widget.getChildren() == null || widget.getChildren().size() == 0) {
        //Action
        parseAction(actor, widget);

        return actor;
    }

    return null;
}

From source file:net.mwplay.cocostudio.ui.parser.WidgetParser.java

License:Apache License

/**
 * ??/* w w w .  j  av a 2  s  .  c  o m*/
 */
public Group widgetChildrenParse(CocoStudioUIEditor editor, ObjectData widget, Group parent, Actor actor) {
    Table table = new Table();
    table.setClip(widget.isClipAble());
    table.setName(actor.getName());

    Scale scale = widget.getScale();

    if (scale != null) {
        table.setScale(scale.getScaleX(), scale.getScaleY());
    }

    table.setRotation(actor.getRotation());
    table.setVisible(actor.isVisible());

    table.setTouchable(widget.isTouchEnable() ? Touchable.enabled : Touchable.childrenOnly);

    // editor.getActors().get(actor.getName()).removeValue(actor, true);
    //
    // addActor(editor, table, option);

    actor.setVisible(true);
    actor.setTouchable(Touchable.disabled);

    if (scale != null || widget.getRotation() != 0) {
        table.setTransform(true);
    }

    table.setSize(actor.getWidth(), actor.getHeight());
    table.setPosition(actor.getX(), actor.getY());

    // ?

    Scale anchorPoint = widget.getAnchorPoint();
    if (anchorPoint != null) {

        table.setOrigin(anchorPoint.getScaleX() * table.getWidth(),
                anchorPoint.getScaleY() * table.getHeight());
    }
    for (ObjectData childrenWidget : widget.getChildren()) {
        Actor childrenActor = editor.parseWidget(table, childrenWidget);
        if (childrenActor == null) {
            continue;
        }
        table.addActor(childrenActor);
    }
    sort(widget, table);

    // Widget?Table??.Widget?Table
    actor.setPosition(0, 0);
    actor.setScale(1, 1);
    table.addActorAt(0, actor);
    return table;
}