From: <ha...@us...> - 2011-10-11 01:09:20
|
Revision: 16310 http://jmol.svn.sourceforge.net/jmol/?rev=16310&view=rev Author: hansonr Date: 2011-10-11 01:09:13 +0000 (Tue, 11 Oct 2011) Log Message: ----------- almost done! Modified Paths: -------------- trunk/Jmol-Android/src/org/openscience/jmolandroid/api/AndroidSurface.java trunk/Jmol-Android/src/org/openscience/jmolandroid/api/Image.java trunk/Jmol-Android/src/org/openscience/jmolandroid/api/Platform.java Modified: trunk/Jmol-Android/src/org/openscience/jmolandroid/api/AndroidSurface.java =================================================================== --- trunk/Jmol-Android/src/org/openscience/jmolandroid/api/AndroidSurface.java 2011-10-11 01:09:00 UTC (rev 16309) +++ trunk/Jmol-Android/src/org/openscience/jmolandroid/api/AndroidSurface.java 2011-10-11 01:09:13 UTC (rev 16310) @@ -9,6 +9,7 @@ public class AndroidSurface { Canvas canvas; + private static int BACKGROUND = 0x0; public AndroidSurface(Canvas canvas) { this.canvas = canvas; @@ -17,7 +18,7 @@ public AndroidSurface(){} public void drawImage(Object image, int x, int y) { - canvas.drawBitmap((Bitmap) image, x, y, null); + canvas.drawBitmap(((Image) image).bitmap, x, y, null); } public void drawImage(Image image, Rectangle source, Rectangle destination) { @@ -26,18 +27,11 @@ public void erase() { Paint paint = new Paint(); - paint.setColor(background); + paint.setColor(BACKGROUND ); canvas.drawPaint(paint); } - public void drawText(String text, Object font, int x, int y, int color) { - // TODO: map color argument to the correspondent Android color - Paint paint = (Paint) font; - paint.setColor(Color.WHITE); - canvas.drawText(text, x, y, paint); - } - public void setPixels(int[] pixels) { if (canvas == null) { Log.w("AMOL", "Requested to paint on a null canvas"); Modified: trunk/Jmol-Android/src/org/openscience/jmolandroid/api/Image.java =================================================================== --- trunk/Jmol-Android/src/org/openscience/jmolandroid/api/Image.java 2011-10-11 01:09:00 UTC (rev 16309) +++ trunk/Jmol-Android/src/org/openscience/jmolandroid/api/Image.java 2011-10-11 01:09:13 UTC (rev 16310) @@ -25,6 +25,7 @@ package org.openscience.jmolandroid.api; +import java.io.InputStream; import java.net.URL; import org.jmol.api.ApiPlatform; @@ -33,9 +34,12 @@ import org.jmol.viewer.Viewer; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.Bitmap.Config; /** * methods required by Jmol that access java.awt.Image @@ -47,7 +51,19 @@ Bitmap bitmap; Canvas canvas; + Config type; + Image(int width, int height, Config type) { + this.type = (type == null ? Bitmap.Config.ARGB_8888 : type); + bitmap = Bitmap.createBitmap(width, height, type); + } + + Image(InputStream stream) { + bitmap = BitmapFactory.decodeStream(stream); + type = bitmap.getConfig(); + } + + static Object createImage(Object data) { // can be ignored return null; @@ -65,25 +81,19 @@ return ((Image) image).bitmap.getHeight(); } - static Object getJpgImage(ApiPlatform apiPlatform, Viewer viewer, int quality, String comment) { - // can be ignored - return null; - } - - static void grabPixels(Object imageobj, int imageWidth, - int imageHeight, int[] values) { - // can be ignored - } - - static int[] grabPixels(Object imageobj, int x, int y, int width, - int height) { + static int[] grabPixels(Object imageobj, int width, int height) { int[] pixels = new int[width * height]; - ((Image) imageobj).bitmap.getPixels(pixels, 0, width, x, y, width, height); + ((Image) imageobj).bitmap.getPixels(pixels, 0, width, 0, 0, width, height); return pixels; } static int[] drawImageToBuffer(Object gOffscreen, Object imageOffscreen, Object imageobj, int width, int height, int bgcolor) { + // goffscreen is not necessary. imageOffscreen will have its own canvas object + return null; + // for now we can ignore this, as it is only for image objects being created + // for background images and text images. + /* Bitmap bitmap = ((Image) imageOffscreen).bitmap; Canvas canvas = (Canvas) gOffscreen; int width0 = bitmap.getWidth(); @@ -98,26 +108,55 @@ g.clearRect(0, 0, width, height); g.drawImage(image, 0, 0, width, height, 0, 0, width0, height0, null); } - return org.jmolImage.grabPixels(imageOffscreen, - 0, 0, width, height); + return grabPixels(imageOffscreen, width, height); + */ } - static void renderOffScreen(String text, Font3D font3d, Object gObj, - int mapWidth, int height, int ascent) { + /** + * + * @param text + * @param font3d + * @param gObj UNUSED + * @param imgObj + * @param width + * @param height + * @param ascent + * @return + */ + public static int[] getTextPixels(String text, Font3D font3d, Object gObj, + Object imgObj, int width, int height, + int ascent) { + + Image image = (Image) imgObj; + image.canvas.clipRect(new Rect(0, 0, width, height)); + image.canvas.drawColor(Color.BLACK); + Paint paint = (Paint) (font3d.font); + paint.setColor(Color.WHITE); + image.canvas.drawText(text, 0, 0, paint); + // ascent is missing here + + /* Graphics g = (Graphics) gObj; g.setColor(Color.black); g.fillRect(0, 0, mapWidth, height); g.setColor(Color.white); g.setFont((Font) font3d.font); g.drawString(text, 0, ascent); + */ + return grabPixels(image, width, height); } + static Object getJpgImage(ApiPlatform apiPlatform, Viewer viewer, int quality, String comment) { + // can be ignored + return null; + } + static Object newBufferedImage(Object image, int w, int h) { - return new BufferedImage(w, h, ((BufferedImage) image).getType()); + return new Image(w, h, ((Image) image).type); } static Object newBufferedImage(int w, int h) { - return new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); + return new Image(w, h, null); } /** @@ -129,23 +168,7 @@ * @return an Image */ static Object allocateRgbImage(int windowWidth, int windowHeight, - int[] pBuffer, int windowSize, boolean backgroundTransparent) { - - //backgroundTransparent not working with antialiasDisplay. I have no idea why. BH 9/24/08 - /* DEAD CODE if (false && backgroundTransparent) - return new BufferedImage( - rgbColorModelT, - Raster.createWritableRaster( - new SinglePixelPackedSampleModel( - DataBuffer.TYPE_INT, - windowWidth, - windowHeight, - sampleModelBitMasksT), - new DataBufferInt(pBuffer, windowSize), - null), - false, - null); - */ + int[] pBuffer, int windowSize, boolean backgroundTransparent) { return new BufferedImage( rgbColorModel, Raster.createWritableRaster( @@ -185,7 +208,7 @@ // unnecessary? } - static void disposeGraphics(Object g) { + static void disposeGraphics(Object graphicForText) { // unnecessary? } @@ -199,4 +222,6 @@ } */ + + } Modified: trunk/Jmol-Android/src/org/openscience/jmolandroid/api/Platform.java =================================================================== --- trunk/Jmol-Android/src/org/openscience/jmolandroid/api/Platform.java 2011-10-11 01:09:00 UTC (rev 16309) +++ trunk/Jmol-Android/src/org/openscience/jmolandroid/api/Platform.java 2011-10-11 01:09:13 UTC (rev 16310) @@ -6,14 +6,6 @@ import org.jmol.viewer.ActionManager; import org.jmol.viewer.Viewer; -import android.graphics.Typeface; - -import org.jmol.api.ApiPlatform; -import org.jmol.api.JmolViewer; -import org.jmol.g3d.Font3D; -import org.jmol.viewer.ActionManager; -import org.jmol.viewer.Viewer; - public class Platform implements ApiPlatform { private Mouse mouse; @@ -82,19 +74,28 @@ return Image.createImage(data); } - public void disposeGraphics(Object gOffscreen) { - Image.disposeGraphics(gOffscreen); + public void disposeGraphics(Object graphicForText) { + Image.disposeGraphics(graphicForText); } public void drawImage(Object g, Object img, int x, int y) { Image.drawImage(g, img, x, y); } + public int[] grabPixels(Object imageobj, int width, int height) { + return Image.grabPixels(imageobj, width, height); + } + public int[] drawImageToBuffer(Object gOffscreen, Object imageOffscreen, Object imageobj, int width, int height, int bgcolor) { return Image.drawImageToBuffer(gOffscreen, imageOffscreen, imageobj, width, height, bgcolor); } + public int[] getTextPixels(String text, Font3D font3d, Object gObj, + Object image, int width, int height, int ascent) { + return Image.getTextPixels(text, font3d, gObj, image, width, height, ascent); + } + public void flushImage(Object imagePixelBuffer) { Image.flush(imagePixelBuffer); } @@ -119,16 +120,6 @@ return Image.getStaticGraphics(image, backgroundTransparent); } - public void grabPixels(Object image, int imageWidth, int imageHeight, - int[] values) { - Image.grabPixels(image, imageWidth, imageHeight, values); - } - - public int[] grabPixels(Object image, int x, int y, int width, - int height) { - return Image.grabPixels(image, x, y, width, height); - } - public Object newBufferedImage(Object image, int w, int h) { return Image.newBufferedImage(image, w, h); } @@ -137,11 +128,6 @@ return Image.newBufferedImage(w, h); } - public void renderOffScreen(String text, Font3D font3d, Object gObj, - int mapWidth, int height, int ascent) { - Image.renderOffScreen(text, font3d, gObj, mapWidth, height, ascent); - } - public boolean waitForDisplay(Object display, Object image) throws InterruptedException { Image.waitForDisplay(display, image); return true; @@ -171,84 +157,3 @@ } } -public class xPlatform implements ApiPlatform { - - ////// Image - - public Object allocateRgbImage(int windowWidth, int windowHeight, - int[] pBuffer, int windowSize, - boolean backgroundTransparent) { - return Image.allocateRgbImage(windowWidth, windowHeight, pBuffer, windowSize, backgroundTransparent); - } - - public Object createImage(Object data) { - // ignore - return null; - } - - public void disposeGraphics(Object gOffscreen) { - Image.disposeGraphics(gOffscreen); - } - - public void drawImage(Object g, Object img, int x, int y) { - Image.drawImage(g, img, x, y); - } - - public int[] drawImageToBuffer(Object gOffscreen, Object imageOffscreen, - Object imageobj, int width, int height, int bgcolor) { - return Image.drawImageToBuffer(gOffscreen, imageOffscreen, imageobj, width, height, bgcolor); - } - - public void flushImage(Object imagePixelBuffer) { - Image.flush(imagePixelBuffer); - } - - public Object getGraphics(Object image) { - return Image.getGraphics(image); - } - - public int getImageHeight(Object image) { - return Image.getHeight(image); - } - - public int getImageWidth(Object image) { - return Image.getWidth(image); - } - - public Object getJpgImage(Viewer viewer, int quality, String comment) { - return Image.getJpgImage(this, viewer, quality, comment); - } - - public Object getStaticGraphics(Object image, boolean backgroundTransparent) { - return Image.getStaticGraphics(image, backgroundTransparent); - } - - public void grabPixels(Object image, int imageWidth, int imageHeight, - int[] values) { - Image.grabPixels(image, imageWidth, imageHeight, values); - } - - public int[] grabPixels(Object image, int x, int y, int width, - int height) { - return Image.grabPixels(image, x, y, width, height); - } - - public Object newBufferedImage(Object image, int w, int h) { - return Image.newBufferedImage(image, w, h); - } - - public Object newBufferedRgbImage(int w, int h) { - return Image.newBufferedImage(w, h); - } - - public void renderOffScreen(String text, Font3D font3d, Object gObj, - int mapWidth, int height, int ascent) { - Image.renderOffScreen(text, font3d, gObj, mapWidth, height, ascent); - } - - public boolean waitForDisplay(Object display, Object image) throws InterruptedException { - return false; - } - - -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |