/** * Copyright 2010 The ForPlay Authors * * 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 forplay.bench.core; import static forplay.core.ForPlay.*; import forplay.core.GroupLayer; import forplay.core.Image; import forplay.core.ImageLayer; import java.util.ArrayList; import java.util.List; class LayerTimeTest extends TimeTest { static final String[] IMAGES = new String[] { "boy", "bug", "gemblue", "gemgreen", "gemorange", "girlcat", "girlhorn", "girlpink", "girlprincess", "heart", "rock", "star", "treeshort" }; private ImageLayer bgLayer; private List<ImageLayer> layers = new ArrayList<ImageLayer>(); private Image[] images; private GroupLayer root; @Override protected void advance() { int image = (int) (random() * images.length); ImageLayer layer = graphics().createImageLayer(images[image]); layers.add(layer); root.add(layer); int w = graphics().width(), h = graphics().height(); layer.transform().translate(random() * w, random() * h); float scale = random() + 1.0f; layer.transform().scale(scale, scale); layer.transform().rotate(random() * (float) Math.PI * 2); } @Override protected int count() { return layers.size(); } @Override protected void retreat() { if (layers.size() == 0) { // TODO(jgw): What can we do about this case? return; } ImageLayer layer = layers.get(layers.size() - 1); layers.remove(layers.size() - 1); root.remove(layer); } @Override void init(GroupLayer root) { this.root = root; Image bg = assetManager().getImage("images/background.png"); images = new Image[IMAGES.length]; for (int i = 0; i < IMAGES.length; ++i) { images[i] = assetManager().getImage("images/" + IMAGES[i] + ".png"); } bgLayer = graphics().createImageLayer(bg); root.add(bgLayer); } @Override String name() { return "Layers"; } @Override void cleanup() { } @Override double score() { return layers.size(); } @Override protected void doPaint() { for (ImageLayer p : layers) { p.transform().rotate(0.01f * (float) Math.PI); } } }