すべての CIFilter とそれぞれの値の範囲を示すチート リストはありますか?
Appleは、可能な範囲を教えずに、すべてのフィルターを一覧表示するこのような文書を作成することから逃れるにはどうすればよいでしょうか?
さあ、アップル。
表示しようとしていたものに対して正しく動作するように更新しました。属性はフィルターごとであり、各入力キーは属性辞書内のキーの名前であることを忘れていました。値自体は、必要な情報を含む辞書です。
ただし、これですべての作業が完了するわけではないことに注意してください。より多くの情報が必要な場合は、いくつかのことを調べて、自分で作業を行う必要があります。これが行うことは、すべてのフィルターのすべてのパラメーターを反復処理し、それらの名前、最小値、および最大値を出力することです (それが意味をなさない場合でも)。(たとえば、画像には最小値または最大値がありません。その場合、"(null)" が出力されます。) 多くのパラメーターには最小値または最大値がないことに注意してください。浮動小数点範囲全体をカバーできます。スライダーを作成しようとしている場合は、andの代わりにkCIAttributeSliderMin
andkCIAttributeSilderMax
属性を使用します。kCIAttributeMin
kCIAttributeMax
属性の型とクラスを取得し、他の型の値の範囲を出力することもできます (それが理にかなっている場合)。たとえば、一部のパラメータはポイント、長方形などです。
// Insert code here to initialize your application
// Get the list of all filters
NSArray* allFilters = [CIFilter filterNamesInCategories:nil];
// Iterate over the filters
NSEnumerator* filterEnum = [allFilters objectEnumerator];
NSString* nextFilter = nil;
while ((nextFilter = [filterEnum nextObject]) != nil)
{
NSLog (@"filter = %@", nextFilter);
// Get all of the input parameters to this filter
CIFilter *filter = [CIFilter filterWithName:nextFilter]; // 3
NSDictionary* attribs = [filter attributes];
NSArray* inputs = [filter inputKeys];
// Iterate over the input keys
NSEnumerator* inputEnum = [inputs objectEnumerator];
NSString* nextInput = nil;
while ((nextInput = [inputEnum nextObject]) != nil)
{
// Note that you'll have to do some work here because some
// parameters return vectors instead of just numbers, but
// this is the general idea
NSDictionary* paramAttrib = [attribs objectForKey:nextInput];
NSString* name = [paramAttrib objectForKey:kCIAttributeDisplayName];
NSNumber* min = [paramAttrib objectForKey:kCIAttributeMin];
NSNumber* max = [paramAttrib objectForKey:kCIAttributeMax];
NSLog (@"param: %@, min = %@, max = %@", name, min, max);
}
}
また、ドキュメントにバグを報告することにも真剣に取り組みました。バグを報告しないと、バグが変更されることはありません。ドキュメントにバグを報告し、修正されました。