Checking in Image extension.
This commit is contained in:
parent
a31f2cee77
commit
6157bb0943
2 changed files with 111 additions and 0 deletions
110
src/helma/scripting/rhino/ImageObject.java
Normal file
110
src/helma/scripting/rhino/ImageObject.java
Normal file
|
@ -0,0 +1,110 @@
|
|||
/*
|
||||
* Helma License Notice
|
||||
*
|
||||
* The contents of this file are subject to the Helma License
|
||||
* Version 2.0 (the "License"). You may not use this file except in
|
||||
* compliance with the License. A copy of the License is available at
|
||||
* http://adele.helma.org/download/helma/license.txt
|
||||
*
|
||||
* Copyright 1998-2003 Helma Software. All Rights Reserved.
|
||||
*
|
||||
* $RCSfile$
|
||||
* $Author$
|
||||
* $Revision$
|
||||
* $Date$
|
||||
*/
|
||||
|
||||
package helma.scripting.rhino;
|
||||
|
||||
import helma.image.*;
|
||||
import helma.util.*;
|
||||
import java.awt.image.*;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import org.mozilla.javascript.Context;
|
||||
import org.mozilla.javascript.Function;
|
||||
import org.mozilla.javascript.FunctionObject;
|
||||
import org.mozilla.javascript.Scriptable;
|
||||
import org.mozilla.javascript.ScriptableObject;
|
||||
import org.mozilla.javascript.NativeJavaArray;
|
||||
import org.mozilla.javascript.NativeJavaObject;
|
||||
import java.lang.reflect.Member;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
* Extension to do Image manipulation from HOP.
|
||||
*/
|
||||
public class ImageObject {
|
||||
static ImageGenerator imggen;
|
||||
static Scriptable global;
|
||||
|
||||
/**
|
||||
* Called by the evaluator after the extension is loaded.
|
||||
*/
|
||||
public static void init(Scriptable scope) {
|
||||
Method[] methods = ImageObject.class.getDeclaredMethods();
|
||||
Member ctorMember = null;
|
||||
for (int i=0; i<methods.length; i++) {
|
||||
if ("imageCtor".equals(methods[i].getName())) {
|
||||
ctorMember = methods[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
FunctionObject ctor = new FunctionObject("Image", ctorMember, scope);
|
||||
((ScriptableObject)scope).defineProperty(scope, "Image", ctor, ScriptableObject.DONTENUM);
|
||||
global = scope;
|
||||
// ctor.addAsConstructor(scope, proto);
|
||||
}
|
||||
|
||||
public static Object imageCtor (Context cx, Object[] args,
|
||||
Function ctorObj, boolean inNewExpr) {
|
||||
Object img = null;
|
||||
try {
|
||||
if (imggen == null) {
|
||||
try {
|
||||
imggen = new ImageGenerator();
|
||||
} catch (UnsatisfiedLinkError noawt) {
|
||||
System.err.println("Error creating Image: " + noawt);
|
||||
throw new RuntimeException("Error creating Image: " + noawt);
|
||||
}
|
||||
}
|
||||
|
||||
if (args.length == 1) {
|
||||
if (args[0] instanceof NativeJavaArray) {
|
||||
Object obj = ((NativeJavaArray) args[0]).unwrap();
|
||||
if (obj instanceof byte[]) {
|
||||
img = imggen.createImage((byte[]) obj);
|
||||
}
|
||||
} else if (args[0] instanceof byte[]) {
|
||||
img = imggen.createImage((byte[]) args[0]);
|
||||
} else if (args[0] instanceof String) {
|
||||
String imgurl = args[0].toString();
|
||||
img = imggen.createPaintableImage(imgurl);
|
||||
}
|
||||
} else if (args.length == 2) {
|
||||
if (args[0] instanceof Number &&
|
||||
args[1] instanceof Number) {
|
||||
img = imggen.createPaintableImage(((Number) args[0]).intValue(),
|
||||
((Number) args[1]).intValue());
|
||||
} else if (args[0] instanceof NativeJavaObject &&
|
||||
args[1] instanceof NativeJavaObject) {
|
||||
// create a new image from an existing one and an image filter
|
||||
Object wrapper = ((NativeJavaObject) args[0]).unwrap();
|
||||
Object filter = ((NativeJavaObject) args[1]).unwrap();
|
||||
img = imggen.createPaintableImage((ImageWrapper) wrapper,
|
||||
(ImageFilter) filter);
|
||||
} else {
|
||||
throw new RuntimeException("Error creating Image from args "+args[0]+","+args[1]);
|
||||
}
|
||||
}
|
||||
} catch (Exception error) {
|
||||
System.err.println("Error creating Image: " + error);
|
||||
}
|
||||
|
||||
if (img == null) {
|
||||
throw new RuntimeException("Error creating image: Bad parameters or setup problem.");
|
||||
}
|
||||
|
||||
return cx.toObject(img, global);
|
||||
}
|
||||
}
|
|
@ -76,6 +76,7 @@ public final class RhinoCore implements WrapHandler {
|
|||
ScriptableObject.defineClass(global, HopObject.class);
|
||||
ScriptableObject.defineClass(global, FileObject.class);
|
||||
ScriptableObject.defineClass(global, FtpObject.class);
|
||||
ImageObject.init(global);
|
||||
putPrototype("hopobject",
|
||||
ScriptableObject.getClassPrototype(global, "HopObject"));
|
||||
putPrototype("global", global);
|
||||
|
|
Loading…
Add table
Reference in a new issue