/* * Copyright (C) 2013-2015 RoboVM AB * * 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.robovm.apple.coregraphics; /*<imports>*/ import java.io.*; import java.nio.*; import java.util.*; import org.robovm.objc.*; import org.robovm.objc.annotation.*; import org.robovm.objc.block.*; import org.robovm.rt.*; import org.robovm.rt.annotation.*; import org.robovm.rt.bro.*; import org.robovm.rt.bro.annotation.*; import org.robovm.rt.bro.ptr.*; import org.robovm.apple.corefoundation.*; import org.robovm.apple.foundation.*; import org.robovm.apple.uikit.*; /*</imports>*/ /*<javadoc>*/ /*</javadoc>*/ /*<annotations>*/@Library("CoreGraphics")/*</annotations>*/ /*<visibility>*/public/*</visibility>*/ class /*<name>*/CGColor/*</name>*/ extends /*<extends>*/CFType/*</extends>*/ /*<implements>*//*</implements>*/ { public static class AsListMarshaler { @MarshalsPointer public static List<?> toObject(Class<? extends CFType> cls, long handle, long flags) { CFArray o = (CFArray) CFType.Marshaler.toObject(CFArray.class, handle, flags); if (o == null) { return null; } return o.toList(CGColor.class); } @MarshalsPointer public static long toNative(List<? extends CFType> l, long flags) { if (l == null) { return 0L; } CFArray o = null; if (l instanceof CFArray) { o = (CFArray) l; } else { o = CFArray.create((List<? extends CFType>) l); } return CFType.Marshaler.toNative(o, flags); } } /*<ptr>*/public static class CGColorPtr extends Ptr<CGColor, CGColorPtr> {}/*</ptr>*/ /*<bind>*/static { Bro.bind(CGColor.class); }/*</bind>*/ /*<constants>*//*</constants>*/ /*<constructors>*/ protected CGColor() {} /*</constructors>*/ /*<properties>*//*</properties>*/ /*<members>*//*</members>*/ public static CGColor create(CGColorSpace space, float[] components) { return create(space, components, components != null ? components.length : 0); } public static CGColor create(CGColorSpace space, double[] components) { return create(space, components, components != null ? components.length : 0); } private static CGColor create(CGColorSpace space, Object components, int componentsLength) { if (space == null) { throw new NullPointerException("space == null"); } if (components == null) { throw new NullPointerException("components == null"); } if (componentsLength != space.getNumberOfComponents() + 1) { throw new IllegalArgumentException("components.length != space.numberOfComponents + 1"); } return create(space, VM.getArrayValuesAddress(CoreGraphics.toMachineSizedFloatArray(components))); } public static CGColor create(CGColorSpace space, CGPattern pattern, float[] components) { return create(space, pattern, components, components != null ? components.length : 0); } public static CGColor create(CGColorSpace space, CGPattern pattern, double[] components) { return create(space, pattern, components, components != null ? components.length : 0); } private static CGColor create(CGColorSpace space, CGPattern pattern, Object components, int componentsLength) { if (space == null) { throw new NullPointerException("space == null"); } if (components == null) { throw new NullPointerException("components == null"); } if (componentsLength != space.getNumberOfComponents() + 1) { throw new IllegalArgumentException("components.length != space.numberOfComponents + 1"); } return create(space, pattern, VM.getArrayValuesAddress(CoreGraphics.toMachineSizedFloatArray(components))); } public double[] getComponentsD() { return getComponents(this).toDoubleArray((int) getNumberOfComponents()); } public float[] getComponentsF() { return getComponents(this).toFloatArray((int) getNumberOfComponents()); } /*<methods>*/ /** * @since Available in iOS 2.0 and later. */ @Bridge(symbol="CGColorCreate", optional=true) private static native @org.robovm.rt.bro.annotation.Marshaler(CFType.NoRetainMarshaler.class) CGColor create(CGColorSpace space, @Pointer long components); /** * @since Available in iOS 2.0 and later. */ @Bridge(symbol="CGColorCreateWithPattern", optional=true) private static native @org.robovm.rt.bro.annotation.Marshaler(CFType.NoRetainMarshaler.class) CGColor create(CGColorSpace space, CGPattern pattern, @Pointer long components); /** * @since Available in iOS 2.0 and later. */ @Bridge(symbol="CGColorCreateCopy", optional=true) public static native @org.robovm.rt.bro.annotation.Marshaler(CFType.NoRetainMarshaler.class) CGColor createCopy(CGColor color); /** * @since Available in iOS 2.0 and later. */ @Bridge(symbol="CGColorCreateCopyWithAlpha", optional=true) public static native @org.robovm.rt.bro.annotation.Marshaler(CFType.NoRetainMarshaler.class) CGColor createCopy(CGColor color, @MachineSizedFloat double alpha); /** * @since Available in iOS 2.0 and later. */ @Bridge(symbol="CGColorEqualToColor", optional=true) public native boolean equalsTo(CGColor color2); /** * @since Available in iOS 2.0 and later. */ @Bridge(symbol="CGColorGetNumberOfComponents", optional=true) public native @MachineSizedUInt long getNumberOfComponents(); /** * @since Available in iOS 2.0 and later. */ @Bridge(symbol="CGColorGetComponents", optional=true) private static native MachineSizedFloatPtr getComponents(CGColor color); /** * @since Available in iOS 2.0 and later. */ @Bridge(symbol="CGColorGetAlpha", optional=true) public native @MachineSizedFloat double getAlpha(); /** * @since Available in iOS 2.0 and later. */ @Bridge(symbol="CGColorGetColorSpace", optional=true) public native CGColorSpace getColorSpace(); /** * @since Available in iOS 2.0 and later. */ @Bridge(symbol="CGColorGetPattern", optional=true) public native CGPattern getPattern(); /** * @since Available in iOS 2.0 and later. */ @Bridge(symbol="CGColorGetTypeID", optional=true) public static native @MachineSizedUInt long getClassTypeID(); /*</methods>*/ }