Example usage for com.badlogic.gdx.graphics.g2d Batch setTransformMatrix

List of usage examples for com.badlogic.gdx.graphics.g2d Batch setTransformMatrix

Introduction

In this page you can find the example usage for com.badlogic.gdx.graphics.g2d Batch setTransformMatrix.

Prototype

public void setTransformMatrix(Matrix4 transform);

Source Link

Document

Sets the transform matrix to be used by this Batch.

Usage

From source file:CB_UI_Base.GL_UI.GL_View_Base.java

License:Open Source License

/**
 * Die renderChilds() Methode wird vom GL_Listener bei jedem Render-Vorgang aufgerufen.
 * Hier wird dann zuerst die render() Methode dieser View aufgerufen.
 * Danach werden alle Childs iteriert und deren renderChilds() Methode aufgerufen, wenn die View sichtbar ist (Visibility).
 *
 * @param batch/*from www.j a v a2s .c o m*/
 */
public void renderChilds(final Batch batch, ParentInfo parentInfo) {
    if (myParentInfo == null)
        return;

    if (this.isDisposed)
        return;

    if (thisInvalidate) {
        myParentInfo.setParentInfo(parentInfo);
        CalcMyInfoForChild();
    }

    if (!withoutScissor) {
        if (intersectRec == null || intersectRec.getHeight() + 1 < 0 || intersectRec.getWidth() + 1 < 0)
            return; // hier gibt es nichts zu rendern
        if (!disableScissor)
            Gdx.gl.glEnable(GL20.GL_SCISSOR_TEST);
        Gdx.gl.glScissor((int) intersectRec.getX(), (int) intersectRec.getY(),
                (int) intersectRec.getWidth() + 1, (int) intersectRec.getHeight() + 1);
    }

    float A = 0, R = 0, G = 0, B = 0; // Farbwerte der batch um diese wieder einzustellen, wenn ein ColorFilter angewandt wurde!

    boolean ColorFilterSeted = false; // Wir benutzen hier dieses Boolean um am ende dieser Methode zu entscheiden, ob wir die alte
    // Farbe des Batches wieder herstellen mssen. Wir verlassen uns hier nicht darauf, das
    // mColorFilter!= null ist, da dies in der zwichenzeit passiert sein kann.

    // Set Colorfilter ?
    if (mColorFilter != null) {
        ColorFilterSeted = true;
        // zuerst alte Farbe abspeichern, um sie Wieder Herstellen zu knnen
        // hier muss jeder Wert einzeln abgespeichert werden, da bei getColor()
        // nur eine Referenz zurck gegeben wird
        Color c = batch.getColor();
        A = c.a;
        R = c.r;
        G = c.g;
        B = c.b;

        batch.setColor(mColorFilter);
    }

    // first Draw Background?

    if (drawableBackground != null) {
        drawableBackground.draw(batch, 0, 0, getWidth(), getHeight());
    }

    // set rotation
    boolean isRotated = false;

    if (mRotate != 0 || mScale != 1) {
        isRotated = true;

        rotateMatrix.idt();
        rotateMatrix.translate(mOriginX, mOriginY, 0);
        rotateMatrix.rotate(0, 0, 1, mRotate);
        rotateMatrix.scale(mScale, mScale, 1);
        rotateMatrix.translate(-mOriginX, -mOriginY, 0);

        batch.setTransformMatrix(rotateMatrix);
    }

    try {
        this.render(batch);
    } catch (IllegalStateException e) {
        e.printStackTrace();
        // reset Colorfilter ?
        if (ColorFilterSeted) {
            // alte abgespeicherte Farbe des Batches wieder herstellen!
            batch.setColor(R, G, B, A);
        }
        return;
    }

    // reverse rotation
    if (isRotated) {
        rotateMatrix.idt();
        // rotateMatrix.rotate(0, 0, 1, 0);
        // rotateMatrix.scale(1, 1, 1);

        batch.setTransformMatrix(rotateMatrix);
    }

    if (childs != null && childs.size() > 0) {
        for (int i = 0, n = childs.size(); i < n; i++) {

            if (i >= childs.size()) {
                break; // ConcurrentModificationException
            }

            // alle renderChilds() der in dieser GL_View_Base
            // enthaltenen Childs auf rufen.

            try {
                GL_View_Base view = childs.get(i);
                // hier nicht view.render(batch) aufrufen, da sonnst die in der
                // view enthaldenen Childs nicht aufgerufen werden.
                try {
                    if (view != null && !view.isDisposed() && view.isVisible()) {
                        synchronized (view) {
                            if (childsInvalidate)
                                view.invalidate();

                            getMyInfoForChild().setParentInfo(myParentInfo);
                            getMyInfoForChild().setWorldDrawRec(intersectRec);

                            getMyInfoForChild().add(view.getX(), view.getY());

                            batch.setProjectionMatrix(getMyInfoForChild().Matrix());
                            nDepthCounter++;

                            view.renderChilds(batch, getMyInfoForChild());
                            nDepthCounter--;
                        }
                    } else {
                        if (view != null && view.isDisposed()) {
                            // Remove disposedView from child list
                            this.removeChild(view);
                        }
                    }
                } catch (java.lang.IllegalStateException e) {
                    if (view != null && view.isDisposed()) {
                        // Remove disposedView from child list
                        this.removeChild(view);
                    }
                }

            } catch (java.util.NoSuchElementException e) {
                break; // da die Liste nicht mehr gltig ist, brechen wir hier den Iterator ab
            } catch (java.util.ConcurrentModificationException e) {
                break; // da die Liste nicht mehr gltig ist, brechen wir hier den Iterator ab
            } catch (java.lang.IndexOutOfBoundsException e) {
                break; // da die Liste nicht mehr gltig ist, brechen wir hier den Iterator ab
            }
        }
        childsInvalidate = false;
    }

    // Draw Debug REC
    if (debug) {

        if (DebugSprite != null) {
            batch.flush();
            DebugSprite.draw(batch);

        }

    }

    // reset Colorfilter ?
    if (ColorFilterSeted) {
        // alte abgespeicherte Farbe des Batches wieder herstellen!
        batch.setColor(R, G, B, A);
    }

}

From source file:com.kotcrab.vis.runtime.entity.TextEntity.java

License:Apache License

@Override
public void render(Batch spriteBatch) {
    spriteBatch.setTransformMatrix(translationMatrix);
    cache.draw(spriteBatch);//w w w .  j av a  2  s.c  o m
    spriteBatch.flush();
    spriteBatch.setTransformMatrix(idtMatrix);
}

From source file:com.trgk.touchwave.tgengine.ui.TGText.java

License:Open Source License

@Override
public void draw(Batch batch, float parentAlpha) {
    Matrix4 oldTransform = new Matrix4(batch.getTransformMatrix());
    Affine2 localTransform = new Affine2();
    localTransform.setToTrnScl(getX() + getOriginX(), getY() + getOriginY(), getScaleX(), getScaleY());
    localTransform.translate(-getOriginX(), -getOriginY());
    localTransform.scale(1f / TGResources.baseFontSize, 1f / TGResources.baseFontSize);

    Matrix4 localTransformMatrix = new Matrix4();
    localTransformMatrix.set(localTransform);

    Matrix4 newTransform = new Matrix4(oldTransform);
    newTransform.mul(localTransformMatrix);
    batch.setTransformMatrix(newTransform);

    Color alphaMultipliedColor = new Color(getColor());
    alphaMultipliedColor.a *= parentAlpha;
    drawCache.tint(alphaMultipliedColor);
    drawCache.draw(batch);//w  w  w. j ava 2s  .  c om

    batch.setTransformMatrix(oldTransform);
}