⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagecmd.java

📁 Hecl编程语言是一个高层次的脚本语言的Java实现。其用意是要小
💻 JAVA
字号:
/* * Copyright 2005-2006 * Wolfgang S. Kechel, data2c GmbH (www.data2c.com) *  * Author: Wolfgang S. Kechel - wolfgang.kechel@data2c.com * * 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 org.hecl.midp20.lcdui;import java.io.IOException;import java.util.Enumeration;import java.util.Vector;import javax.microedition.lcdui.Graphics;import javax.microedition.lcdui.Image;import org.hecl.HeclException;import org.hecl.Interp;import org.hecl.IntThing;import org.hecl.ListThing;import org.hecl.ObjectThing;import org.hecl.Properties;import org.hecl.StringThing;import org.hecl.Thing;import org.hecl.misc.HeclUtils;import org.hecl.rms.RMSInputStream;public class ImageCmd extends OptionCmd {    public static void load(Interp ip) {	ip.addCommand(CMDNAME,cmd);	ip.addClassCmd(Image.class,cmd);    }    public static void unload(Interp ip) {	ip.removeCommand(CMDNAME);	ip.removeClassCmd(Image.class);    }    public Thing cmdCode(Interp ip,Thing[] argv)	throws HeclException {		Image image = null;	Properties p = new Properties();	p.setProps(argv,1);	Thing t = null;		if((t = p.getProp("-file")) != null) {	    p.delProp("-file");	    try {		image = Image.createImage(t.toString());	    }	    catch (IOException e) {		throw new HeclException("Cannot convert resource '"					+ t.toString()					+ "' to image.");	    }	} else if((t = p.getProp("-rms")) != null) {	    p.delProp("-rms");	    RMSInputStream is = null;	    try {		is = new RMSInputStream(t.toString());		System.err.println("creating image from rms...");		image = Image.createImage(is);		System.err.println("done");		is.close();		is = null;	    }	    catch(IOException e) {		e.printStackTrace();		if(is != null) {		    try {			is.close();		    }		    catch(Exception iox){			iox.printStackTrace();			}		    is = null;		}		throw new HeclException(e.toString());	    }	} else if((t = p.getProp("-resource")) != null) {	    p.delProp("-resource");	    image = GUICmds.loadImage(t.toString());	} else if((t = p.getProp("-data")) != null) {	    p.delProp("-data");	    String s = t.toString();//#ifdef notdef	    boolean success = false;	    for(int i=0; i<ISONAMES.length; ++i) {		try {		    byte[] b = s.getBytes(ISONAMES[i]);		    image = Image.createImage(b,0,b.length);		    success = true;		    break;		}		catch (Exception e) {}	    }	    if(!success) {		throw new HeclException("Can't decode image data.");	    }//#else	    byte[] b = asISOBytes(s);	    image = Image.createImage(b,0,b.length);//#endif	} else if((t = p.getProp("-image")) != null) {	    p.delProp("-image");	    image = Image.createImage(GUICmds.asImage(t,false));	} else {	    t = p.getProp(WidgetInfo.NWIDTH);	    Thing t2 = p.getProp(WidgetInfo.NHEIGHT);			    p.delProp(WidgetInfo.NWIDTH);	    p.delProp(WidgetInfo.NHEIGHT);	    	    image = Image.createImage(		t != null ? HeclUtils.thing2int(t,true,0) : 0,		t2 != null ? HeclUtils.thing2int(t2,true,0) : 0		);	}	if(image == null) {	    throw HeclException.createWrongNumArgsException(		argv, 1,		"?option value ...?");	}	return ObjectThing.create(image);    }    protected ImageCmd() {}        public Thing cget(Interp ip,Object target,String optname) throws HeclException {	Image image = (Image)target;		if(optname.equals(WidgetInfo.NHEIGHT))	    return IntThing.create(image.getHeight());	if(optname.equals("-mutable"))	    return IntThing.create(image.isMutable());	if(optname.equals(WidgetInfo.NWIDTH))	    return IntThing.create(image.getWidth());	if(optname.equals("-data")) {	    int w = image.getWidth();	    int h = image.getHeight();	    int n = w*h;	    int buf[] = new int[n];	    	    image.getRGB(buf,0,w,0,0,w,h);	    Vector v = new Vector();	    for(int i = 0; i<n; ++i) {		v.addElement(new Thing(Integer.toHexString(buf[i])));	    }	    return ListThing.create(v);	}	return super.cget(ip,target,optname);    }        public void cset(Interp ip,Object target,String optname,Thing optval)	throws HeclException {	super.cset(ip,target,optname,optval);    }        public Thing handlecmd(Interp ip,Object target,String subcmd,Thing[] argv,int startat)	throws HeclException {	Image image = (Image)target;	if(subcmd.equals("thumbnail")) {	    int destW = startat < argv.length ?		IntThing.get(argv[startat++]) : 64;	    int destH = startat < argv.length ?		IntThing.get(argv[startat++]) : -1;	    	    int sourceWidth = image.getWidth();	    int sourceHeight = image.getHeight();	    if (destH == -1)		destH = destW * sourceHeight / sourceWidth;	    	    Image thumb = Image.createImage(destW, destH);	    Graphics g = thumb.getGraphics();	    for (int y = 0; y < destH; y++) {		for (int x = 0; x < destW; x++) {		    g.setClip(x, y, 1, 1);		    int dx = x * sourceWidth / destW;		    int dy = y * sourceHeight / destH;		    g.drawImage(image, x - dx, y - dy,				Graphics.LEFT | Graphics.TOP);		}	    }	    return ObjectThing.create(Image.createImage(thumb));	}	if(subcmd.equals("graphics")) {	    if(!image.isMutable())		throw new HeclException("immutable image");	    return GraphicsCmd.createDrawable(image.getGraphics(),					      image.getWidth(),					      image.getHeight());	}	return super.handlecmd(ip,target,subcmd,argv,startat);    }    public static byte[] asISOBytes(String s) {	byte[] buf = new byte[s.length()];	for(int i=0; i<s.length(); ++i) {	    char ch = s.charAt(i);	    buf[i] = (byte)ch;	}	return buf;    }    //#ifdef notdef    static private final String ISONAMES[]= {	"ISO-8859-1","ISO8859-1","ISO8859_1","ISO_8859_1","ISO-8859_1","ISO_8859-1",	"iso-8859-1","iso8859-1","iso8859_1","iso_8859_1","iso-8859_1","iso_8859-1"    };//#endif        private static ImageCmd cmd = new ImageCmd();    private static final String CMDNAME = "lcdui.image";}// Variables:// mode:java// coding:utf-8// End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -