now filters which need to set an inputCenter are properly supported

This commit is contained in:
xant
2009-03-05 02:27:54 +01:00
parent 38b5b5bec6
commit a17a5fd29d
5 changed files with 32 additions and 15 deletions
+25 -6
View File
@@ -390,8 +390,9 @@ static CVReturn renderCallback(CVDisplayLinkRef displayLink,
float deg = 0;
float x = 0;
float y = 0;
NSAffineTransform *rotateTransform;
NSAffineTransform *translateTransform;
NSAffineTransform *rotateTransform;
NSAffineTransform *translateTransform;
NSString *paramName = NULL;
pool = [[NSAutoreleasePool alloc] init];
[lock lock];
switch([sender tag])
@@ -454,20 +455,38 @@ static CVReturn renderCallback(CVDisplayLinkRef displayLink,
} else {
[paramNames insertObject:pLabel atIndex:i];
}
[effectFilter setValue:[NSNumber numberWithFloat:pdescr->params[i].min] forKey:pLabel];
if ([pLabel isEqual:@"CenterY"])
[slider setMaxValue:layer->geo.h];
else if ([pLabel isEqual:@"CenterX"])
[slider setMaxValue:layer->geo.w];
else
[effectFilter setValue:[NSNumber numberWithFloat:pdescr->params[i].min] forKey:pLabel];
} else {
[label setHidden:YES];
[slider setHidden:YES];
}
cView = slider;
}
[[filterPanel window]makeKeyAndOrderFront:self];
break;
case 7:
[effectFilter setValue:[NSNumber numberWithFloat:[sender floatValue]] forKey:[paramNames objectAtIndex:0]];
paramName = [paramNames objectAtIndex:0];
if ([paramName isEqual:@"CenterX"]) {
NSSlider *y = (NSSlider *)[[sender nextKeyView] nextKeyView];
[effectFilter setValue:[CIVector vectorWithX:[sender floatValue] Y:[y floatValue]]
forKey:@"inputCenter"];
} else {
[effectFilter setValue:[NSNumber numberWithFloat:[sender floatValue]] forKey:paramName];
}
break;
case 8:
[effectFilter setValue:[NSNumber numberWithFloat:[sender floatValue]] forKey:[paramNames objectAtIndex:1]];
paramName = [paramNames objectAtIndex:1];
if ([paramName isEqual:@"CenterY"]) {
NSSlider *x = (NSSlider *)[[sender previousKeyView] previousKeyView];
[effectFilter setValue:[CIVector vectorWithX:[x floatValue] Y:[sender floatValue]]
forKey:@"inputCenter"];
} else {
[effectFilter setValue:[NSNumber numberWithFloat:[sender floatValue]] forKey:paramName];
}
break;
case 9:
[effectFilter setValue:[NSNumber numberWithFloat:[sender floatValue]] forKey:[paramNames objectAtIndex:2]];
+3 -3
View File
@@ -18,11 +18,11 @@ static FilterParams fParams[FILTERS_MAX] =
{ 1, { { "inputRadius", 0.0, 100.0 } } }, // GaussianBlur
{ 1, { { "inputLevels", 2.0, 30.0 } } }, // ColorPosterize
{ 0, { { NULL, 0.0, 0.0 } } }, // ComicEffect
{ 3, { { "inputRadius", 1.0, 100.0 }, { "CenterX", 0.0, 100.0 }, { "CenterY", 0.0, 100.0 } } }, // Crystalize
{ 3, { { "CenterX", 0.0, 100.0 }, { "CenterY", 0.0, 100.0 }, { "inputRadius", 1.0, 100.0 } } }, // Crystalize
{ 1, { { "inputIntensity", 0.0, 10.0 } } }, // Edges
{ 1, { { "inputRadius", 0.0, 20.0 } } }, // EdgeWork
{ 3, { { "CenterX", 0.0, 100.0 }, { "CenterY", 0.0, 100.0 }, { "Scale", 1.0, 100.0 } } }, // HexagonalPixellate
{ 3, { { "CenterX", 0.0, 100.0 }, { "CenterY", 0.0, 100.0 }, { "Radius", 0.01, 1000.0 } } }, // HoleDistortion
{ 3, { { "CenterX", 0.0, 100.0 }, { "CenterY", 0.0, 100.0 }, { "inputScale", 1.0, 100.0 } } }, // HexagonalPixellate
{ 3, { { "CenterX", 0.0, 100.0 }, { "CenterY", 0.0, 100.0 }, { "inputRadius", 0.01, 1000.0 } } }, // HoleDistortion
{ 1, { { "inputAngle", -3.14, 3.14 } } } // HueAdjust
};
+3 -5
View File
@@ -29,7 +29,7 @@
#import "CVLayer.h"
#import "CVScreen.h"
#define _ARGB2BGRA(__buf, __size) \
#define _BGRA2ARGB(__buf, __size) \
{\
long *__bgra = (long *)__buf;\
for (int __i = 0; __i < __size; __i++)\
@@ -274,14 +274,12 @@ static CVReturn renderCallback(CVDisplayLinkRef displayLink,
} else { // freej 'unknown' layer type
CVPixelBufferRef pixelBufferOut;
//layer->lock(); // expensive lock
_ARGB2BGRA(layer->buffer, layer->geo.w*layer->geo.h); // XXX
//layer->unlock();
_BGRA2ARGB(layer->buffer, layer->geo.w*layer->geo.h); // XXX - expensive conversion
CVReturn cvRet = CVPixelBufferCreateWithBytes (
NULL,
layer->geo.w,
layer->geo.h,
k32BGRAPixelFormat,
k32ARGBPixelFormat,
layer->buffer,
layer->geo.w*4,
NULL,
+1 -1
View File
@@ -10,7 +10,7 @@
<integer>5</integer>
<key>IBOpenObjects</key>
<array>
<integer>161</integer>
<integer>133</integer>
</array>
<key>IBSystem Version</key>
<string>9G55</string>
Binary file not shown.