package com.nutiteq.controls;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import com.nutiteq.utils.Utils;
/**
* <p>
* Zoom controls to be used on touch screen. Displays images on screen and also
* handles pressing on them.
* </p>
* <p>
* Used image needs to have zoom images in one image - zoom in is first frame
* and zoom out second frame. Frames need to be the same size.
* </p>
*/
public class OnScreenZoomControls {
/**
* Default zoom controls image path for library.
*/
public static final String DEFAULT_ZOOM_IMAGE = "/images/m-l-controlls.png";
public static final int CONTROL_ZOOM_IN = 0;
public static final int CONTROL_ZOOM_OUT = 1;
private final int[][] controlPositions;
private final Image[] images;
private final int imageWidth;
private final int imageHeight;
/**
* Create zoom controls with given image.
*
* @param controlsImage
* image to be used
*/
public OnScreenZoomControls(final Image controlsImage) {
imageWidth = controlsImage.getWidth() / 2;
imageHeight = controlsImage.getHeight();
controlPositions = new int[][] { { 5, 5 }, { 5, 5 + imageHeight + 1 } };
images = new Image[2];
for (int i = 0; i < images.length; i++) {
images[i] = Image.createImage(controlsImage, i * imageWidth, 0, imageWidth, imageHeight, 0);
}
}
/**
* Not part of public API
*
* @param g
* @param displayWidth
* @param displayHeight
*/
public void paint(final Graphics g, final int displayWidth, final int displayHeight) {
//TODO jaanus : this clip can be smaller
g.setClip(0, 0, displayWidth, displayHeight);
for (int i = 0; i < images.length; i++) {
g.drawImage(images[i], controlPositions[i][0], controlPositions[i][1], Graphics.TOP
| Graphics.LEFT);
}
}
/**
* Not part of public API
*
* @param x
* @param y
* @return action code
*/
public int getControlAction(final int x, final int y) {
for (int i = 0; i < controlPositions.length; i++) {
if (Utils.rectanglesIntersect(controlPositions[i][0], controlPositions[i][1], imageWidth,
imageHeight, x, y, 1, 1)) {
return i;
}
}
return -1;
}
}