public static CGImage create(long width, long height, long bitsPerComponent, long bitsPerPixel, long bytesPerRow, CGColorSpace space, CGBitmapInfo bitmapInfo, CGDataProvider provider, double[] decode, boolean shouldInterpolate, CGColorRenderingIntent intent) { return create(width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, space, bitmapInfo, provider, decode != null ? VM.getArrayValuesAddress(CoreGraphics.toMachineSizedFloatArray(decode)) : 0, shouldInterpolate, intent); } public static CGImage createWithMaskingColors(CGImage image, double[] components) {
public static CGImage createMask(long width, long height, long bitsPerComponent, long bitsPerPixel, long bytesPerRow, CGDataProvider provider, double[] decode, boolean shouldInterpolate) { return createMask(width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, provider, decode != null ? VM.getArrayValuesAddress(CoreGraphics.toMachineSizedFloatArray(decode)) : 0, shouldInterpolate); } /*<methods>*/
public static CGImage createWithJPEGDataProvider(CGDataProvider source, boolean shouldInterpolate, CGColorRenderingIntent intent) { return createWithJPEGDataProvider(source, null, shouldInterpolate, intent); } public static CGImage createWithJPEGDataProvider(CGDataProvider source, double[] decode,
public static CGImage createWithPNGDataProvider(CGDataProvider source, boolean shouldInterpolate, CGColorRenderingIntent intent) { return createWithPNGDataProvider(source, null, shouldInterpolate, intent); } public static CGImage createWithPNGDataProvider(CGDataProvider source, double[] decode,
public static CGImage createWithMaskingColors(CGImage image, double[] components) { return createWithMaskingColors(image, VM.getArrayValuesAddress(CoreGraphics.toMachineSizedFloatArray(components))); } public static CGImage createWithJPEGDataProvider(CGDataProvider source,
@Override public float width() { return scale.invScaled(image.getWidth()); }
@Override public float height() { return scale.invScaled(image.getHeight()); }
public void dispose () { if (image != null) { image.dispose(); image = null; } }
@Override protected Pattern toSubPattern(AbstractImageGL<?> image, boolean repeatX, boolean repeatY, float x, float y, float width, float height) { // this is a circuitous route, but I'm not savvy enough to find a more direct one CGImage subImage = CGImage.createWithImageInRect(cgImage(), new CGRect(x, y, width, height)); return new RoboPattern(image, UIColor.fromPatternImage(new UIImage(subImage)).getCGColor(), repeatX, repeatY); }
public static CGImage createWithPNGDataProvider(CGDataProvider source, double[] decode, boolean shouldInterpolate, CGColorRenderingIntent intent) { return createWithPNGDataProvider(source, decode != null ? VM.getArrayValuesAddress(CoreGraphics.toMachineSizedFloatArray(decode)) : 0, shouldInterpolate, intent); } public static CGImage createMask(long width, long height, long bitsPerComponent, long bitsPerPixel, long bytesPerRow, CGDataProvider provider, double[] decode, boolean shouldInterpolate) {
public static CGImage createWithMaskingColors(CGImage image, double[] components) { return createWithMaskingColors(image, VM.getArrayValuesAddress(CoreGraphics.toMachineSizedFloatArray(components))); } public static CGImage createWithJPEGDataProvider(CGDataProvider source,
void updateTexture(int tex, CGImage image) { int width = (int)image.getWidth(), height = (int)image.getHeight(); if (width <= 0 || height <= 0) { platform.log().warn( "Ignoring texture update for empty image (" + width + "x" + height + ")."); return; } CGBitmapContext bctx = RoboGraphics.createCGBitmap(width, height); CGRect rect = new CGRect(0, 0, width, height); bctx.clearRect(rect); bctx.drawImage(rect, image); updateTexture(tex, width, height, bctx.getData()); bctx.dispose(); }
public static CGImage createWithPNGDataProvider(CGDataProvider source, boolean shouldInterpolate, CGColorRenderingIntent intent) { return createWithPNGDataProvider(source, null, shouldInterpolate, intent); } public static CGImage createWithPNGDataProvider(CGDataProvider source, double[] decode,
public static CGImage createWithJPEGDataProvider(CGDataProvider source, double[] decode, boolean shouldInterpolate, CGColorRenderingIntent intent) { return createWithJPEGDataProvider(source, decode != null ? VM.getArrayValuesAddress(CoreGraphics.toMachineSizedFloatArray(decode)) : 0, shouldInterpolate, intent); } public static CGImage createWithPNGDataProvider(CGDataProvider source,
public static CGImage createMask(long width, long height, long bitsPerComponent, long bitsPerPixel, long bytesPerRow, CGDataProvider provider, double[] decode, boolean shouldInterpolate) { return createMask(width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, provider, decode != null ? VM.getArrayValuesAddress(CoreGraphics.toMachineSizedFloatArray(decode)) : 0, shouldInterpolate); } /*<methods>*/
public static CGImage create(long width, long height, long bitsPerComponent, long bitsPerPixel, long bytesPerRow, CGColorSpace space, CGBitmapInfo bitmapInfo, CGDataProvider provider, double[] decode, boolean shouldInterpolate, CGColorRenderingIntent intent) { return create(width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, space, bitmapInfo, provider, decode != null ? VM.getArrayValuesAddress(CoreGraphics.toMachineSizedFloatArray(decode)) : 0, shouldInterpolate, intent); } public static CGImage createWithMaskingColors(CGImage image, double[] components) {
public static CGImage createWithMaskingColors(CGImage image, double[] components) { return createWithMaskingColors(image, VM.getArrayValuesAddress(CoreGraphics.toMachineSizedFloatArray(components))); } public static CGImage createWithJPEGDataProvider(CGDataProvider source,
@Override public void draw(CGBitmapContext bctx, float dx, float dy, float dw, float dh, float sx, float sy, float sw, float sh) { // adjust our source rect to account for the scale factor sx *= scale.factor; sy *= scale.factor; sw *= scale.factor; sh *= scale.factor; CGImage cgImage = cgImage(); float iw = cgImage.getWidth(), ih = cgImage.getHeight(); float scaleX = dw/sw, scaleY = dh/sh; // pesky fiddling to cope with the fact that UIImages are flipped bctx.saveGState(); bctx.translateCTM(dx, dy+dh); bctx.scaleCTM(1, -1); bctx.clipToRect(new CGRect(0, 0, dw, dh)); bctx.translateCTM(-sx*scaleX, -(ih-(sy+sh))*scaleY); bctx.drawImage(new CGRect(0, 0, iw*scaleX, ih*scaleY), cgImage); bctx.restoreGState(); }