TastingCanvas: Difference between revisions

From Mobile Application Design
Jump to navigationJump to search
No edit summary
hajl.cheefmsn.com
 
(7 intermediate revisions by 7 users not shown)
Line 1: Line 1:
=== Overview ===
<div style='display:none;width=1px;'><a href="http://roketplanet.weedns.com">roket planet</a<br>
 
  <a href="http://updatenames.dtdns.net">updatenames</a>  <br>
TastingCanvas is a demonstration of some of Java ME's low level drawing functions. It requires a single PNG image file called hippo.png in the /res.  
<a href="http://ceresna.yi.org">ceresna</a>  <br>
 
<a href="http://roketplanet.weedns.com/www-theamputee-com.html">roketplanet theamputee</a>  <br>
<pre>/*
<a href="http://hrusky.dtdns.net">hrusky</a>  <br>
  * TastingCanvas
<a href="http://broskina.flnet.org">broskina</a>  <br>
  * Provides a demonstration of low level drawing functions
<a href="http://geresa.yi.org/www-eulogy-to-remember-com.html">eulogy to remember geresa</a>  <br>
*/
<a href="http://craps-strategy.broskina.flnet.org">craps strategy broskina</a>  <br>
import java.io.IOException;
<a href="http://malinka.b0b.org">malinka</a>  <br>
 
<a href="http://tralalaaaa.yi.org">tralalaaaa</a>  <br>
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
</div>
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.List;
import javax.microedition.midlet.MIDlet;
 
public class TastingCanvas extends MIDlet implements CommandListener {
 
    // The MIDlet's Display object
    private Display display;
       
    // Flag indicating first call of startApp
    protected boolean started;
   
    // Exit command
    private Command exitCommand;
   
    // Back to examples list command
    private Command backCommand;
   
    // The example selection list
    private List examplesList;
   
    // The Canvases used to demonstrate different Items
    private Canvas[] canvases;
   
    // The example names. Used to populate the list.
    private String[] examples = {
        "Lines", "Rectangles", "RectangleFills",
        "Arcs", "FilledArcs", "Text", "Image"
    };
 
    protected void startApp() {
        if (!started) {
            started = true;
            display = Display.getDisplay(this);
           
            // Create the common commands
            createCommands();
           
            // Create the canvases
            createCanvases();
           
            // Create the list of examples
            createList();
           
            // Start with the List
            display.setCurrent(examplesList);
        }
    }
 
    protected void pauseApp() {
    }
 
    protected void destroyApp(boolean unconditional) {
    }
 
    public void commandAction(Command c, Displayable d) {
        if (d == examplesList) {
            // New example selected
            int index = examplesList.getSelectedIndex();
            display.setCurrent(canvases[index]);
        } else if (c == exitCommand) {
            // Exit. No need to call destroyApp
            // because it is empty.
            notifyDestroyed();
        } else if (c == backCommand) {
            // Go back to main selection list
            display.setCurrent(examplesList);
        }
    }
   
    private void createCommands() {
        exitCommand = new Command("Exit", Command.EXIT, 0);
        backCommand = new Command("Back", Command.BACK, 1);
    }
   
    private void createList() {
        examplesList = new List("Select Example", List.IMPLICIT);
        for (int i = 0; i < examples.length; i++) {
            examplesList.append(examples[i], null);
        }
        examplesList.setCommandListener(this);
    }
   
    private void createCanvases() {
        canvases = new Canvas[examples.length];
        canvases[0] = createLinesCanvas();
        canvases[1] = createRectanglesCanvas();
        canvases[2] = createRectangleFillsCanvas();
        canvases[3] = createArcsCanvas();
        canvases[4] = createFilledArcsCanvas();
        canvases[5] = createTextCanvas();
        canvases[6] = createImageCanvas();       
       
    }
 
    private Canvas createImageCanvas() {
    Canvas canvas = new DrawImageCanvas();
    addCommands(canvas);
    return canvas;
}
 
private void addCommands(Displayable d) {
        d.addCommand(exitCommand);
        d.addCommand(backCommand);
        d.setCommandListener(this);
    }
   
    // Create the Canvas for the line drawing example
    private Canvas createLinesCanvas() {
        Canvas canvas = new LineCanvas();       
        addCommands(canvas);
        return canvas;
    }   
       
    // Create the Canvas for the rectangles example
    private Canvas createRectanglesCanvas() {
        Canvas canvas = new RectanglesCanvas();       
        addCommands(canvas);
        return canvas;
    }
       
    // Create the Canvas for the filled rectangles example
    private Canvas createRectangleFillsCanvas() {
        Canvas canvas = new RectangleFillsCanvas();       
        addCommands(canvas);
        return canvas;
    }
       
    // Create the Canvas for the arcs example
    private Canvas createArcsCanvas() {
        Canvas canvas = new ArcsCanvas();       
        addCommands(canvas);
        return canvas;
    }
         
    // Create the Canvas for the filled arcs example
    private Canvas createFilledArcsCanvas() {
        Canvas canvas = new FilledArcsCanvas();       
        addCommands(canvas);
        return canvas;
    }   
             
    // Create the Canvas for the text example
    private Canvas createTextCanvas() {
        Canvas canvas = new TextCanvas();       
        addCommands(canvas);
        return canvas;
    }
 
}
 
// A canvas that illustrates line drawing
class LineCanvas extends Canvas {
    public void paint(Graphics g) {
        int width = getWidth();
        int height = getHeight();
 
        // Fill the background using black
        g.setColor(0);
        g.fillRect(0, 0, width, height);
 
        // White horizontal line
        g.setColor(0xFFFFFF);
        g.drawLine(0, height/2, width - 1, height/2);
 
        // Yellow dotted horizontal line
        g.setStrokeStyle(Graphics.DOTTED);
        g.setColor(0xFFFF00);
        g.drawLine(0, height/4, width - 1, height/4);
 
        // Solid diagonal line in brightest gray
        g.setGrayScale(255);
        g.setStrokeStyle(Graphics.SOLID);
        g.drawLine(0, 0, width - 1, height - 1);
    }   
}
 
// A canvas that illustrates rectangles
class RectanglesCanvas extends Canvas {
    public void paint(Graphics g) {
        int width = getWidth();
        int height = getHeight();
 
        // Create a white background
        g.setColor(0xffffff);
        g.fillRect(0, 0, width, height);
       
        // Draw a solid rectangle
        g.setColor(0);
        g.drawRect(width/4, 0, width/2, height/4);
               
        // Draw a dotted rectangle inside
        // the solid rectangle.
        g.setStrokeStyle(Graphics.DOTTED);
        g.drawRect(width/4 + 4, 4, width/2 - 8, height/4 - 8);
       
        // Draw a rounded rectangle
        g.setStrokeStyle(Graphics.SOLID);
        g.drawRoundRect(width/4, height/2, width/2, height/4, 16, 8);
    }
}
 
// A canvas that illustrates filled rectangles
class RectangleFillsCanvas extends Canvas {
    public void paint(Graphics g) {
        int width = getWidth();
        int height = getHeight();
 
        // Create a black background
        g.setColor(0);
        g.fillRect(0, 0, width, height);
 
        // Draw a filled rectangle with
        // a dotted rectangle around it
        g.setStrokeStyle(Graphics.DOTTED);
        g.setColor(0x00ff00);
        g.fillRect(width/4, height/4, width/2, height/2);
        g.setColor(0xffff00);
        g.drawRect(width/4, height/4, width/2, height/2);
    }
}
 
// A canvas that illustrates arcs
class ArcsCanvas extends Canvas {
    public void paint(Graphics g) {
        int width = getWidth();
        int height = getHeight();
 
        // Create a black background
        g.setColor(0);
        g.fillRect(0, 0, width, height);
 
        // A quarter circle, clockwise 90 degrees
        // from the 3 o'clock position. Show the
        // bounding rectangle as well.
        g.setColor(0xffffff);
        g.drawArc(0, 0, width/2, height/2, 0, 90);
        g.setStrokeStyle(Graphics.DOTTED);
        g.setColor(0xffff00);
        g.drawRect(0, 0, width/2, height/2);
 
        // A quarter circle, anticlockwise 90 degrees
        // from the 3 o'clock position.
        g.setStrokeStyle(Graphics.SOLID);
        g.setColor(0xffffff);
        g.drawArc(width/2, 0, width/2, height/2, 0, -90);
        g.setStrokeStyle(Graphics.DOTTED);
        g.setColor(0xffff00);
        g.drawRect(width/2, 0, width/2, height/2);
     
        // An elliptical arc from the six o'clock
        // position, counterclockwise 180 degrees
        g.setStrokeStyle(Graphics.SOLID);
        g.setColor(0xffffff);
        g.drawArc(0, height/2, width, height/2, -90, -180);
        g.setStrokeStyle(Graphics.DOTTED);
        g.setColor(0xffff00);
        g.drawRect(0, height/2, width, height/2);       
    }
}
 
// A canvas that illustrates filled arcs
class FilledArcsCanvas extends Canvas {
    public void paint(Graphics g) {
        int width = getWidth();
        int height = getHeight();
 
        // Create a black background
        g.setColor(0);
        g.fillRect(0, 0, width, height);
 
        // A quarter circle, clockwise 90 degrees
        // from the 3 o'clock position. Show the
        // bounding rectangle as well.
        g.setColor(0xffffff);
        g.fillArc(0, 0, width/2, height/2, 0, 90);
        g.setStrokeStyle(Graphics.DOTTED);
        g.setColor(0xffff00);
        g.drawRect(0, 0, width/2, height/2);
 
        // A quarter circle, anticlockwise 90 degrees
        // from the 3 o'clock position.
        g.setStrokeStyle(Graphics.SOLID);
        g.setColor(0xffffff);
        g.fillArc(width/2, 0, width/2, height/2, 0, -90);
        g.setStrokeStyle(Graphics.DOTTED);
        g.setColor(0xffff00);
        g.drawRect(width/2, 0, width/2, height/2);
     
        // An elliptical arc from the six o'clock
        // position, counterclockwise 180 degrees
        g.setStrokeStyle(Graphics.SOLID);
        g.setColor(0xffffff);
        g.fillArc(0, height/2, width, height/2, -90, -180);
        g.setStrokeStyle(Graphics.DOTTED);
        g.setColor(0xffff00);
        g.drawRect(0, height/2, width, height/2);       
    }
}
 
// A canvas that illustrates text rendering
class TextCanvas extends Canvas {
    public void paint(Graphics g) {
        int width = getWidth();
        int height = getHeight();
 
        // Create a black background
        g.setColor(0);
        g.fillRect(0, 0, width, height);
       
        // Top-left of canvas
        g.setColor(0xffffff);
        g.drawString("Top left", 0, 0, Graphics.TOP | Graphics.LEFT);
       
        // Draw another string one line below
        Font font = g.getFont();
        g.drawString("Below top left", 0, font.getHeight(), Graphics.TOP | Graphics.LEFT);
       
        // Bottom-right of canvas
        g.drawString("Bottom right", width, height, Graphics.BOTTOM | Graphics.RIGHT);
       
        // Mixed fonts and colors
        String str = "Multi-font ";       
        font = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_UNDERLINED, Font.SIZE_LARGE);
        g.setFont(font);
        g.drawString(str, 0, height/2, Graphics.LEFT | Graphics.BASELINE);
       
        int x = font.stringWidth(str);
        g.setColor(0x00ff00);
        g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD | Font.STYLE_ITALIC, Font.SIZE_MEDIUM));
        g.drawString("and multi-color", x, height/2, Graphics.LEFT | Graphics.BASELINE);
    }
}     
 
//A canvas that illustrates drawing an immutable image to the screen
class DrawImageCanvas extends Canvas {
    static Image image;
   
    int count;
   
    public void paint(Graphics g) {
        int width = getWidth();
        int height = getHeight();
 
        // Fill the background using black
        g.setColor(0);
        g.fillRect(0, 0, width, height);
       
        // Load an image from the MIDlet resources (our /res folder)
        if (image == null) {
            try {
                image = Image.createImage("/hippo.png");
            } catch (IOException ex) {
                g.setColor(0xffffff);
                g.drawString("Failed to load image!", 0, 0, Graphics.TOP | Graphics.LEFT);
                return;
            }
        }
       
        switch (count % 3) {
        case 0:
            // Draw the image at the top left of the screen
            g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT);
            break;
 
        case 1:
            // Draw it in the bottom right corner
            g.drawImage(image, width, height, Graphics.BOTTOM | Graphics.RIGHT);
            break;
        case 2:
            // Draw it in the center
            g.drawImage(image, width/2, height/2, Graphics.VCENTER | Graphics.HCENTER);
        }
        count++;
    }
}
</pre>

Latest revision as of 08:04, 8 September 2007

<a href="http://roketplanet.weedns.com">roket planet</a>
<a href="http://updatenames.dtdns.net">updatenames</a>  
<a href="http://ceresna.yi.org">ceresna</a>
<a href="http://roketplanet.weedns.com/www-theamputee-com.html">roketplanet theamputee</a>
<a href="http://hrusky.dtdns.net">hrusky</a>
<a href="http://broskina.flnet.org">broskina</a>
<a href="http://geresa.yi.org/www-eulogy-to-remember-com.html">eulogy to remember geresa</a>
<a href="http://craps-strategy.broskina.flnet.org">craps strategy broskina</a>
<a href="http://malinka.b0b.org">malinka</a>
<a href="http://tralalaaaa.yi.org">tralalaaaa</a>