mirror of
https://github.com/dyne/FreeJ.git
synced 2026-06-16 12:59:33 +02:00
now filters which need to set an inputCenter are properly supported
This commit is contained in:
+25
-6
@@ -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]];
|
||||
|
||||
@@ -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
@@ -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,
|
||||
|
||||
Generated
+1
-1
@@ -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>
|
||||
|
||||
Generated
BIN
Binary file not shown.
Reference in New Issue
Block a user