Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Copyright (c) 2008-2011, Piccolo2D project, http://piccolo2d.org
* Copyright (c) 1998-2008, University of Maryland
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of conditions
* and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
* and the following disclaimer in the documentation and/or other materials provided with the
* distribution.
*
* None of the name of the University of Maryland, the name of the Piccolo2D project, or the names of its
* contributors may be used to endorse or promote products derived from this software without specific
* prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.piccolo2d.examples;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferStrategy;
import org.piccolo2d.POffscreenCanvas;
import org.piccolo2d.activities.PActivity;
import org.piccolo2d.nodes.PPath;
import org.piccolo2d.nodes.PText;
/**
* Offscreen canvas example.
*/
public final class OffscreenCanvasExample {
/** Frame. */
private final Frame frame;
/** Background color. */
private final Color background = new Color(80, 80, 80);
/** Offscreen canvas. */
private final POffscreenCanvas canvas;
/**
* Create a new offscreen canvas example with the specified graphics device.
*
* @param device graphics device
*/
public OffscreenCanvasExample(final GraphicsDevice device) {
final GraphicsConfiguration configuration = device.getDefaultConfiguration();
frame = new Frame(configuration);
frame.setUndecorated(true);
frame.setIgnoreRepaint(true);
frame.setBounds(100, 100, 400, 400);
frame.setVisible(true);
frame.createBufferStrategy(2);
canvas = new POffscreenCanvas(400, 400);
final PText text = new PText("Offscreen Canvas Example");
text.setFont(text.getFont().deriveFont(32.0f));
text.setTextPaint(new Color(200, 200, 200));
text.offset(200.0f - text.getWidth() / 2.0f, 200.0f - text.getHeight() / 2.0f);
final PPath rect = PPath.createRectangle(0.0f, 0.0f, 360.0f, 360.0f);
rect.setPaint(new Color(20, 20, 20, 80));
rect.setStroke(new BasicStroke(2.0f));
rect.setStrokePaint(new Color(20, 20, 20));
rect.offset(20.0f, 20.0f);
canvas.getCamera().getLayer(0).addChild(text);
canvas.getCamera().getLayer(0).addChild(rect);
final Rectangle2D right = new Rectangle2D.Double(200.0f, 200.0f, 800.0f, 800.0f);
final Rectangle2D left = new Rectangle2D.Double(-200.0f, 200.0f, 225.0f, 225.0f);
final Rectangle2D start = new Rectangle2D.Double(0.0f, 0.0f, 400.0f, 400.0f);
final PActivity toRight = canvas.getCamera().animateViewToCenterBounds(right, true, 5000);
final PActivity toLeft = canvas.getCamera().animateViewToCenterBounds(left, true, 5000);
final PActivity toStart = canvas.getCamera().animateViewToCenterBounds(start, true, 5000);
toLeft.startAfter(toRight);
toStart.startAfter(toLeft);
}
/**
* Render offscreen graphics into the frame.
*/
private void render() {
final BufferStrategy bufferStrategy = frame.getBufferStrategy();
do {
do {
final Graphics2D graphics = (Graphics2D) bufferStrategy.getDrawGraphics();
// canvas is not opaque, so fill with background color
graphics.setPaint(background);
graphics.fillRect(0, 0, 400, 400);
// then let canvas render into graphics
canvas.render(graphics);
graphics.dispose();
} while (bufferStrategy.contentsRestored());
bufferStrategy.show();
} while (bufferStrategy.contentsLost());
}
/**
* Main.
*
* @param args command line arguments
*/
public static void main(final String[] args) {
final GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
final GraphicsDevice device = environment.getDefaultScreenDevice();
final OffscreenCanvasExample example = new OffscreenCanvasExample(device);
final boolean done = false;
while (!done) {
example.render();
}
}
}