Re: Issues with CIFilters and CALayers
Re: Issues with CIFilters and CALayers
- Subject: Re: Issues with CIFilters and CALayers
- From: Kevin Meaney <email@hidden>
- Date: Thu, 27 Feb 2014 15:42:06 +0000
First a note. The name property is declared as a CACIFilterAdditions in CACIFilterAdditions.h.
I think you will need to draw the CIImage to your CIContext and then generate a CGImage to capture its state for future reference and then generate a new CIImage from the CGImage. I believe the CIImage that is the output of a filter is more a recipe about how to generate an image and not a bitmap representation of the image which I think is where your problem lies.
Kevin
Sent from my iPhone
On 24 Feb 2014, at 17:28, Gordon Apple <email@hidden> wrote:
> Apparently, my comment about not understanding this construct for
> setValueForKeyPath was correct. It actually works. I finally got the
> highlighting filter to work and update properly. Now I¹m trying to do
> something much simpler, i.e., construct a freezeFilter. Nothing I¹ve tried
> so far works. Apparently, a CIFilter is expected to be stateless function
> such as outputImage = f(inputImage, parameters). Not accepting this premiss,
> I decided to try caching the first output image ( from the outputImage
> method), then return the cashed image thereafter, an ultra simple concept,
> except that it does not work. Any reason, besides what I postulated, why
> this shouldn¹t work?
>
>
> On 2/23/14 3:06 PM, "Gordon Apple" <email@hidden> wrote:
>
>> We have run into a number is issues trying to use CIFilters with CALayers:
>>
>> 1. When a layer is hidden, its filters, especially background filters, should
>> be temporarily removed, or at least bypassed. Hiding the layer should make if
>> effectively non-existent in the displayed layer stack.
>>
>> 2. The docs should tell you that in a CIFilter you cannot auto-synthesize
>> filter input parameters. This simply does not work, especially for inputImage.
>>
>> 3. The docs for CALayer filters and background filters say you should name
>> your filters for use in changing parameters. I.e., filter.name = @²myFilter².
>> Amazingly, this works, in spite of the fact that there is no public property
>> called ³name² for a CIFilter.
>>
>> 4. The example keyPath makes no sense whatsoever, unless we just don¹t
>> understand keyPaths:
>>
>> [layer setValue:XXX forKeyPath:@²backgroundFilters.myFilter.filterParam²];
>>
>> backgroundFilters is an array of filters. myFilter is a property value of some
>> element of the array. (huh?)
>>
>> 5. We need some decent documentation of what in GL Shading Language is
>> actually relevant to writing ciKernels, besides the one page addendum
>> provided.
>>
>> 6. And, of course, the problem we have already mentioned in a previous post
>> about getting a CALayer to update when a filter parameter is changed.
>
>
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden