Cocoa CGColorRef incompatible pointer types passing float [4]' to parameter of type 'const CGFloat *' (aka 'const double *')

StackOverflow https://stackoverflow.com/questions/21531314

  •  06-10-2022
  •  | 
  •  

Question

I'm getting this error:

my color = CGColorCreate(colorSpace, fillComponents); variable: incompatible pointer types passing 'float [4]' to parameter of type 'const CGFloat *' (aka 'const double *'). 

How do I solve this?

CGColorRef color;

//retrieve some usefull rects
NSRect frame = [self frame];
NSRect imageFrame = [self imageFrame];
NSRect relativeImageFrame = NSMakeRect(imageFrame.origin.x - frame.origin.x, imageFrame.origin.y - frame.origin.y, imageFrame.size.width, imageFrame.size.height);

/* place holder layer */
if(type == IKImageBrowserCellPlaceHolderLayer){
    //create a place holder layer
    CALayer *layer = [CALayer layer];
    layer.frame = CGRectMake(0, 0, frame.size.width, frame.size.height);

    CALayer *placeHolderLayer = [CALayer layer];
    placeHolderLayer.frame = *(CGRect*) &relativeImageFrame;

    float fillComponents[4] = {1.0, 1.0, 1.0, 0.3};
    float strokeComponents[4] = {1.0, 1.0, 1.0, 0.9};
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    //set a background color
    color = CGColorCreate(colorSpace, fillComponents);
    [placeHolderLayer setBackgroundColor:color];
    CFRelease(color);

    //set a stroke color
    color = CGColorCreate(colorSpace, strokeComponents);
    [placeHolderLayer setBorderColor:color];
    CFRelease(color);

    [placeHolderLayer setBorderWidth:2.0];
    [placeHolderLayer setCornerRadius:0];
    CFRelease(colorSpace);

    [layer addSublayer:placeHolderLayer];

    return layer;
}
Was it helpful?

Solution

If you define your fill/stroke components like suggested by the error message it should work:

const CGFloat *components = {1.0, 1.0, 1.0, 0.3};
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top