diff -r f5050f1da672 -r 04becd199f91 javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/DirectUtils.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/DirectUtils.java Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,155 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: This class is a placeholder of utility methods. +* +*/ + + + +package com.nokia.mid.ui; + +import javax.microedition.lcdui.Graphics; +import javax.microedition.lcdui.Image; +import javax.microedition.lcdui.Font; + +/** + * This class is a placeholder of utility methods. It contains + * methods for converting standard lcdui classes to Nokia UI classes + * and vice versa, and method for creating Image out of ARGB pixel + * array, creating empty transparent or specific + * background colored images, creating mutable image from encoded + * image byte array. + * + * @see javax.microedition.lcdui.Graphics + * @see com.nokia.mid.ui.DirectGraphics + * @see javax.microedition.lcdui.Canvas + * @see com.nokia.mid.ui.DirectCanvas + * @version 0.11 + * @since 1.0 + */ +public class DirectUtils +{ + + private DirectUtils() + { + } + + /** + * Converts standard javax.microedition.lcdui.Graphics to DirectGraphics. The + * returned Graphics context is the same, e.g. calling draw operations + * via original Graphics reference affect the DirectGraphics context + * and vice versa. Note that eventhough the graphics context is the same + * the returned object reference may or may not be the same as passed. + * This means that purely casting Graphics (g) passed in paint of lcdui + * Canvas to DirectGraphics may not work ok. The safe way is to always + * do the conversion with this method. + * + * @return the DirectGraphics object based on Graphics + * @param g Graphics object for which DirectGraphics should be returned + * @since 1.0 + */ + + public static DirectGraphics getDirectGraphics(Graphics aG) + { + return com.nokia.mid.ui.DirectGraphicsInvoker.getDirectGraphics(aG); + } + + /** + * Creates a mutable image which is decoded from the data stored + * in the specified byte array at the specified offset and length. + * The data must be in a self-identifying image file format + * supported by the implementation, such as PNG. + *

+ * Note that the semantics of this method are exactly the same + * as + * {@link javax.microedition.lcdui.Image#createImage(byte[],int,int)} + * except that the returned image is mutable. + * + * @param imageData the array of image data in a supported image format + * @param imageOffset the offset of the start of the data in the array + * @param imageLength the length of the data in the array + * @return the created mutable image + * @throws ArrayIndexOutOfBoundsException if imageOffset and + * imageLength specify an invalid range + * @throws NullPointerException if imageData is null + * @throws IllegalArgumentException if imageData is incorrectly + * formatted or otherwise cannot be decoded + * @see javax.microedition.lcdui.Image#createImage(byte[],int,int) + * @since 1.0 + */ + public static Image createImage(byte[] aImageData, int aImageOffset, + int aImageLength) + { + Image source = Image.createImage(aImageData, aImageOffset, aImageLength); + Image copy = Image.createImage(source.getWidth(), source.getHeight()); + DirectGraphics dg = getDirectGraphics(copy.getGraphics()); + DirectGraphicsInvoker.setColorValues(dg, 0x00FFFFFF, copy); + dg.drawImage(source, 0, 0, 0, 0); + return copy; + } + + /** + *

+ * The method will return a newly created mutable Image with specified + * dimension with all pixels of an image of defined ARGB color. The color + * can contain alpha channel transparency information. + *

+ * + * @param width the width of the new image, in pixels + * @param height the height of the new image, in pixels + * @return the created image + * @throws IllegalArgumentException if either width or height is + * zero or less + * @since 1.0 + */ + public static Image createImage(int aWidth, int aHeight, int aColor) + { + Image result = Image.createImage(aWidth, aHeight); + DirectGraphics dg = getDirectGraphics(result.getGraphics()); + DirectGraphicsInvoker.setColorValues(dg, aColor, result); + return result; + } + + /** + *

+ * The method returns new instance of {@link javax.microedition.lcdui.Font} + * with custom font height. System provides a font that matches + * the requested attributes as closely as possible. + *

+ *

+ * Font created in this way can be used only for Graphics instance + * (Canvas, CustomItem, Image). This font is not supported + * for high-level UI components (ChoiceGroup, StringItem and List). + * If font with custom height is set to some high-level component, it's + * replaced by default font. + *

+ *

+ * Actual font height could be affected by system limitations, there may be + * a maximum height defined by the system. + *

+ * + * @param face one of FACE_SYSTEM, FACE_MONOSPACE, or FACE_PROPORTIONAL + * @param style STYLE_PLAIN, or a combination of STYLE_BOLD, STYLE_ITALIC, + * and STYLE_UNDERLINED + * @param height font height in pixels + * @return new instance of Font + * @throws IllegalArgumentException if height is negative, if face or style + * are not legal values + * @since 1.2 + */ + public static Font getFont(int face, int style, int height) + { + return com.nokia.mid.ui.FreeSizeFontInvoker.getFont(face, style, height); + } +}