blob: 34d8570a41d8024debf523f5c1b77722d153d9b6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2019 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.swt.internal.graphics;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.internal.*;
import org.eclipse.swt.internal.cocoa.*;
/**
* This class holds utility methods for image manipulation on Cocoa platform
* Not used on other platforms
*
* @since 3.110
*
*/
public class ImageUtil {
/**
* Creates new image representation based on the source image.
*
* @param image Source image object
* @param targetSize the size at which image representation needs to be created
*
* @return image representation
*
* @since 3.110
*/
public static NSBitmapImageRep createImageRep(Image image, NSSize targetSize) {
NSBitmapImageRep rep;
NSImage imgHandle= image.handle;
rep = (NSBitmapImageRep)new NSBitmapImageRep().alloc();
rep = rep.initWithBitmapDataPlanes(0, (int) targetSize.width, (int) targetSize.height, 8, 4, true, false, OS.NSDeviceRGBColorSpace, OS.NSAlphaFirstBitmapFormat, (int) targetSize.width * 4, 32);
C.memset(rep.bitmapData(), 0xFF, (int) targetSize.width * (int)targetSize.height * 4);
NSGraphicsContext context = NSGraphicsContext.graphicsContextWithBitmapImageRep(rep);
NSGraphicsContext.static_saveGraphicsState();
context.setImageInterpolation(OS.NSImageInterpolationHigh);
NSGraphicsContext.setCurrentContext(context);
NSRect target = new NSRect();
target.width = targetSize.width;
target.height = targetSize.height;
NSRect sourceRect = new NSRect();
sourceRect.width = 0;
sourceRect.height = 0;
imgHandle.drawInRect(target, sourceRect, OS.NSCompositeCopy, 1);
NSGraphicsContext.static_restoreGraphicsState();
rep.autorelease();
return rep;
}
}