/**
* Copyright 2011 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.test.manualtests.core;
import static forplay.core.ForPlay.*;
import forplay.core.CanvasLayer;
import forplay.core.Color;
import forplay.core.GroupLayer;
import forplay.core.Image;
import forplay.core.ImageLayer;
import forplay.core.ResourceCallback;
import forplay.core.SurfaceLayer;
public class ImageTypeTest extends ManualTest {
GroupLayer rootLayer;
static float width = 100;
static float height = 100;
static int offset = 5;
static String imageSrc = "images/imagetypetest.png";
static String imageGroundTruthSrc = "images/imagetypetest_expected.png";
Image image1;
Image imageGroundTruth;
ImageLayer imageLayer1;
SurfaceLayer surfaceLayer1;
CanvasLayer canvasLayer1;
ImageLayer imageLayer2;
SurfaceLayer surfaceLayer2;
CanvasLayer canvasLayer2;
ImageLayer groundTruthLayer;
@Override
public String getName() {
return "ImageTypeTest";
}
@Override
public String getDescription() {
return "Test that image types display the same. Left-to-right: ImageLayer, SurfaceLayer, CanvasLayer, ground truth (expected).";
}
@Override
public void init() {
rootLayer = graphics().rootLayer();
// add a half white, half blue background
SurfaceLayer bg = graphics().createSurfaceLayer((int) (4 * width), (int) (4 * height));
bg.surface().setFillColor(Color.rgb(255, 255, 255));
bg.surface().fillRect(0, 0, bg.surface().width(), bg.surface().height());
bg.surface().setFillColor(Color.rgb(0, 0, 255));
bg.surface().fillRect(0, bg.surface().width() / 2, bg.surface().width(),
bg.surface().height() / 2);
rootLayer.add(bg);
image1 = assetManager().getImage(imageSrc);
image1.addCallback(new ResourceCallback<Image>() {
@Override
public void done(Image image) {
// once the image loads, create our layers
imageLayer1 = graphics().createImageLayer(image);
surfaceLayer1 = graphics().createSurfaceLayer(image.width(), image.height());
surfaceLayer1.surface().drawImage(image, 0, 0);
canvasLayer1 = graphics().createCanvasLayer(image.width(), image.height());
canvasLayer1.canvas().drawImage(image, 0, 0);
imageLayer2 = graphics().createImageLayer(image);
surfaceLayer2 = graphics().createSurfaceLayer(image.width(), image.height());
surfaceLayer2.surface().drawImage(image, 0, 0);
canvasLayer2 = graphics().createCanvasLayer(image.width(), image.height());
canvasLayer2.canvas().drawImage(image, 0, 0);
// add layers to the rootLayer
imageLayer1.transform().translate(offset, offset);
rootLayer.add(imageLayer1);
surfaceLayer1.transform().translate(offset + width, offset);
rootLayer.add(surfaceLayer1);
canvasLayer1.transform().translate(offset + 2 * width, offset);
rootLayer.add(canvasLayer1);
imageLayer2.transform().translate(offset, offset + 2 * height);
rootLayer.add(imageLayer2);
surfaceLayer2.transform().translate(offset + width, offset + 2 * height);
rootLayer.add(surfaceLayer2);
canvasLayer2.transform().translate(offset + 2 * width, offset + 2 * height);
rootLayer.add(canvasLayer2);
}
@Override
public void error(Throwable err) {
log().error("Error loading image", err);
}
});
// add ground truth image
imageGroundTruth = assetManager().getImage(imageGroundTruthSrc);
imageGroundTruth.addCallback(new ResourceCallback<Image>() {
@Override
public void done(Image image) {
groundTruthLayer = graphics().createImageLayer(image);
groundTruthLayer.transform().translate(3 * width, 0);
rootLayer.add(groundTruthLayer);
}
@Override
public void error(Throwable err) {
log().error("Error loading image", err);
}
});
}
}