text: /*******************************************************************************
   * Copyright 2011 See AUTHORS file.
   * 
   * 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.badlogic.gdx.tests;
  
  import static com.badlogic.gdx.scenes.scene2d.actions.Actions.*;
  
  import com.badlogic.gdx.Gdx;
  import com.badlogic.gdx.graphics.GL20;
  import com.badlogic.gdx.graphics.Texture;
  import com.badlogic.gdx.graphics.g2d.Batch;
  import com.badlogic.gdx.graphics.g2d.TextureRegion;
  import com.badlogic.gdx.scenes.scene2d.Actor;
  import com.badlogic.gdx.scenes.scene2d.Group;
  import com.badlogic.gdx.scenes.scene2d.Stage;
  import com.badlogic.gdx.scenes.scene2d.ui.Skin;
  import com.badlogic.gdx.scenes.scene2d.ui.Table;
  import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
  import com.badlogic.gdx.tests.utils.GdxTest;
  
  /** @author Daniel Holderbaum */
  public class StageDebugTest extends GdxTest {
  	static TextureRegion textureRegion;
  
  	private Stage stage;
  	private Stage stage1;
  	private Stage stage2;
  
  	class DebugActor extends Actor {
  		@Override
  		public void draw (Batch batch, float parentAlpha) {
  			batch.draw(textureRegion, getX(), getY(), getOriginX(), getOriginY(), getWidth(), getHeight(), getScaleX(), getScaleY(),
  				getRotation());
  		}
  	}
  
  	@Override
  	public void create () {
  		textureRegion = new TextureRegion(new Texture("data/badlogic.jpg"));
  
  		Gdx.input.setInputProcessor(this);
  
  		stage1 = new Stage();
  		stage1.getCamera().position.set(100, 100, 0);
  
  		Group group = new Group();
  		// group.setBounds(0, 0, 10, 10);
  		// group.setOrigin(25, 50);
  		group.setRotation(10);
  		group.setScale(1.2f);
  		stage1.addActor(group);
  
  		DebugActor actor = new DebugActor();
  		actor.setBounds(300, 140, 50, 100);
  		actor.setOrigin(25, 50);
  		actor.setRotation(-45);
  		actor.setScale(2f);
  		actor.addAction(forever(rotateBy(360, 8f)));
  		group.addActor(actor);
  
  		group.debugAll();
  
  		stage2 = new Stage();
  		Skin skin = new Skin(Gdx.files.internal("data/uiskin.json"));
  
  		TextButton shortButton = new TextButton("Button short", skin);
  		shortButton.debug();
  
  		TextButton longButton = new TextButton("Button loooooooooong", skin);
  		longButton.debug();
  
  		Table root = new Table(skin);
  		root.setFillParent(true);
  		root.setBackground(skin.getDrawable("default-pane"));
  		root.defaults().space(6);
  		root.setTransform(true);
  		root.rotateBy(10);
  		root.setScale(1.3f, 1);
  		root.debug();
  		stage2.addActor(root);
  
  		root.add(shortButton).pad(5);
  		root.add(longButton).row();
  		root.add("Colspan").colspan(2).row();
  
  		switchStage();
  	}
  
  	@Override
  	public void render () {
  		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
  		stage.act();
  		stage.draw();
  	}
  
  	@Override
  	public boolean touchDown (int screenX, int screenY, int pointer, int button) {
  		switchStage();
  		return false;
  	}
  
  	@Override
  	public void resize (int width, int height) {
  		stage1.getViewport().update(width, height, true);
  		stage2.getViewport().update(width, height, true);
  	}
  
  	private void switchStage () {
  		if (stage != stage2) {
  			stage = stage2;
  		} else {
  			stage = stage1;
  		}
  	}
  
  }
  