@@ -257,16 +257,16 @@ let filterOperations: Array<FilterOperationInterface> = [
257257 sliderUpdateCallback: nil ,
258258 filterOperationType: . singleInput
259259 ) ,
260- // FilterOperation(
261- // filter:{Solarize()},
262- // listName:"Solarize",
263- // titleName:"Solarize",
264- // sliderConfiguration:.enabled(minimumValue:0.0, maximumValue:1.0, initialValue:0.5),
265- // sliderUpdateCallback: {(filter, sliderValue) in
266- // filter.threshold = sliderValue
267- // },
268- // filterOperationType:.singleInput
269- // ),
260+ FilterOperation (
261+ filter: { Solarize ( ) } ,
262+ listName: " Solarize " ,
263+ titleName: " Solarize " ,
264+ sliderConfiguration: . enabled( minimumValue: 0.0 , maximumValue: 1.0 , initialValue: 0.5 ) ,
265+ sliderUpdateCallback: { ( filter, sliderValue) in
266+ filter. threshold = sliderValue
267+ } ,
268+ filterOperationType: . singleInput
269+ ) ,
270270 FilterOperation (
271271 filter: { Vibrance ( ) } ,
272272 listName: " Vibrance " ,
@@ -451,26 +451,26 @@ let filterOperations: Array<FilterOperationInterface> = [
451451// },
452452// filterOperationType:.singleInput
453453// ),
454- // FilterOperation(
455- // filter:{Crosshatch()},
456- // listName:"Crosshatch",
457- // titleName:"Crosshatch",
458- // sliderConfiguration:.enabled(minimumValue:0.01, maximumValue:0.06, initialValue:0.03),
459- // sliderUpdateCallback: {(filter, sliderValue) in
460- // filter.crossHatchSpacing = sliderValue
461- // },
462- // filterOperationType:.singleInput
463- // ),
464- // FilterOperation(
465- // filter:{SobelEdgeDetection()},
466- // listName:"Sobel edge detection",
467- // titleName:"Sobel Edge Detection",
468- // sliderConfiguration:.enabled(minimumValue:0.0, maximumValue:1.0, initialValue:0.25),
469- // sliderUpdateCallback: {(filter, sliderValue) in
470- // filter.edgeStrength = sliderValue
471- // },
472- // filterOperationType:.singleInput
473- // ),
454+ FilterOperation (
455+ filter: { Crosshatch ( ) } ,
456+ listName: " Crosshatch " ,
457+ titleName: " Crosshatch " ,
458+ sliderConfiguration: . enabled( minimumValue: 0.01 , maximumValue: 0.06 , initialValue: 0.03 ) ,
459+ sliderUpdateCallback: { ( filter, sliderValue) in
460+ filter. crossHatchSpacing = sliderValue
461+ } ,
462+ filterOperationType: . singleInput
463+ ) ,
464+ FilterOperation (
465+ filter: { SobelEdgeDetection ( ) } ,
466+ listName: " Sobel edge detection " ,
467+ titleName: " Sobel Edge Detection " ,
468+ sliderConfiguration: . enabled( minimumValue: 0.0 , maximumValue: 1.0 , initialValue: 0.25 ) ,
469+ sliderUpdateCallback: { ( filter, sliderValue) in
470+ filter. edgeStrength = sliderValue
471+ } ,
472+ filterOperationType: . singleInput
473+ ) ,
474474// FilterOperation(
475475// filter:{PrewittEdgeDetection()},
476476// listName:"Prewitt edge detection",
@@ -491,16 +491,16 @@ let filterOperations: Array<FilterOperationInterface> = [
491491// },
492492// filterOperationType:.singleInput
493493// ),
494- // FilterOperation(
495- // filter:{ThresholdSobelEdgeDetection()},
496- // listName:"Threshold edge detection",
497- // titleName:"Threshold Edge Detection",
498- // sliderConfiguration:.enabled(minimumValue:0.0, maximumValue:1.0, initialValue:0.25),
499- // sliderUpdateCallback: {(filter, sliderValue) in
500- // filter.threshold = sliderValue
501- // },
502- // filterOperationType:.singleInput
503- // ),
494+ FilterOperation (
495+ filter: { ThresholdSobelEdgeDetection ( ) } ,
496+ listName: " Threshold edge detection " ,
497+ titleName: " Threshold Edge Detection " ,
498+ sliderConfiguration: . enabled( minimumValue: 0.0 , maximumValue: 1.0 , initialValue: 0.25 ) ,
499+ sliderUpdateCallback: { ( filter, sliderValue) in
500+ filter. threshold = sliderValue
501+ } ,
502+ filterOperationType: . singleInput
503+ ) ,
504504// FilterOperation(
505505// filter:{HarrisCornerDetector()},
506506// listName:"Harris corner detector",
@@ -625,34 +625,34 @@ let filterOperations: Array<FilterOperationInterface> = [
625625// ),
626626// // TODO: Motion detector
627627//
628- // FilterOperation(
629- // filter:{SketchFilter()},
630- // listName:"Sketch",
631- // titleName:"Sketch",
632- // sliderConfiguration:.enabled(minimumValue:0.0, maximumValue:1.0, initialValue:0.5),
633- // sliderUpdateCallback: {(filter, sliderValue) in
634- // filter.edgeStrength = sliderValue
635- // },
636- // filterOperationType:.singleInput
637- // ),
638- // FilterOperation(
639- // filter:{ThresholdSketchFilter()},
640- // listName:"Threshold Sketch",
641- // titleName:"Threshold Sketch",
642- // sliderConfiguration:.enabled(minimumValue:0.0, maximumValue:1.0, initialValue:0.25),
643- // sliderUpdateCallback: {(filter, sliderValue) in
644- // filter.threshold = sliderValue
645- // },
646- // filterOperationType:.singleInput
647- // ),
648- // FilterOperation(
649- // filter:{ToonFilter()},
650- // listName:"Toon",
651- // titleName:"Toon",
652- // sliderConfiguration:.disabled,
653- // sliderUpdateCallback: nil,
654- // filterOperationType:.singleInput
655- // ),
628+ FilterOperation (
629+ filter: { SketchFilter ( ) } ,
630+ listName: " Sketch " ,
631+ titleName: " Sketch " ,
632+ sliderConfiguration: . enabled( minimumValue: 0.0 , maximumValue: 1.0 , initialValue: 0.5 ) ,
633+ sliderUpdateCallback: { ( filter, sliderValue) in
634+ filter. edgeStrength = sliderValue
635+ } ,
636+ filterOperationType: . singleInput
637+ ) ,
638+ FilterOperation (
639+ filter: { ThresholdSketchFilter ( ) } ,
640+ listName: " Threshold Sketch " ,
641+ titleName: " Threshold Sketch " ,
642+ sliderConfiguration: . enabled( minimumValue: 0.0 , maximumValue: 1.0 , initialValue: 0.25 ) ,
643+ sliderUpdateCallback: { ( filter, sliderValue) in
644+ filter. threshold = sliderValue
645+ } ,
646+ filterOperationType: . singleInput
647+ ) ,
648+ FilterOperation (
649+ filter: { ToonFilter ( ) } ,
650+ listName: " Toon " ,
651+ titleName: " Toon " ,
652+ sliderConfiguration: . disabled,
653+ sliderUpdateCallback: nil ,
654+ filterOperationType: . singleInput
655+ ) ,
656656// FilterOperation(
657657// filter:{SmoothToonFilter()},
658658// listName:"Smooth toon",
@@ -674,21 +674,22 @@ let filterOperations: Array<FilterOperationInterface> = [
674674// },
675675// filterOperationType:.singleInput
676676// ),
677+ FilterOperation (
678+ filter: { CGAColorspaceFilter ( ) } ,
679+ listName: " CGA colorspace " ,
680+ titleName: " CGA Colorspace " ,
681+ sliderConfiguration: . disabled,
682+ sliderUpdateCallback: nil ,
683+ filterOperationType: . singleInput
684+ ) ,
677685// FilterOperation(
678- // filter:{CGAColorspaceFilter()},
679- // listName:"CGA colorspace",
680- // titleName:"CGA Colorspace",
681- // sliderConfiguration:.disabled,
682- // sliderUpdateCallback: nil,
683- // filterOperationType:.singleInput
684- // ),
685- // FilterOperation(
686- // filter:{Posterize()},
686+ // filter:{() -> GPUImage.Posterize in
687+ // return GPUImage.Posterize()},
687688// listName:"Posterize",
688689// titleName:"Posterize",
689690// sliderConfiguration:.enabled(minimumValue:1.0, maximumValue:20.0, initialValue:10.0),
690691// sliderUpdateCallback: {(filter, sliderValue) in
691- // filter. colorLevels = round(sliderValue)
692+ // ( filter as! GPUImage.Posterize). colorLevels = round(Float( sliderValue) )
692693// },
693694// filterOperationType:.singleInput
694695// ),
@@ -721,36 +722,36 @@ let filterOperations: Array<FilterOperationInterface> = [
721722// },
722723// filterOperationType:.singleInput
723724// ),
724- // FilterOperation(
725- // filter:{Laplacian()},
726- // listName:"Laplacian",
727- // titleName:"Laplacian",
728- // sliderConfiguration:.disabled,
729- // sliderUpdateCallback: nil,
730- // filterOperationType:.singleInput
731- // ),
732- // FilterOperation(
733- // filter:{ChromaKeying()},
734- // listName:"Chroma key",
735- // titleName:"Chroma Key",
736- // sliderConfiguration:.enabled(minimumValue:0.0, maximumValue:1.00, initialValue:0.40),
737- // sliderUpdateCallback: {(filter, sliderValue) in
738- // filter.thresholdSensitivity = sliderValue
739- // },
740- // filterOperationType:.custom(filterSetupFunction:{(camera, filter, outputView) in
741- // let castFilter = filter as! ChromaKeying
742- //
743- // let blendFilter = AlphaBlend()
744- // blendFilter.mix = 1.0
745- //
746- // let inputImage = PictureInput(imageName:blendImageName)
747- //
748- // inputImage --> blendFilter
749- // camera --> castFilter --> blendFilter --> outputView
750- // inputImage.processImage()
751- // return blendFilter
752- // })
753- // ),
725+ FilterOperation (
726+ filter: { Laplacian ( ) } ,
727+ listName: " Laplacian " ,
728+ titleName: " Laplacian " ,
729+ sliderConfiguration: . disabled,
730+ sliderUpdateCallback: nil ,
731+ filterOperationType: . singleInput
732+ ) ,
733+ FilterOperation (
734+ filter: { ChromaKeying ( ) } ,
735+ listName: " Chroma key " ,
736+ titleName: " Chroma Key " ,
737+ sliderConfiguration: . enabled( minimumValue: 0.0 , maximumValue: 1.00 , initialValue: 0.40 ) ,
738+ sliderUpdateCallback: { ( filter, sliderValue) in
739+ filter. thresholdSensitivity = sliderValue
740+ } ,
741+ filterOperationType: . custom( filterSetupFunction: { ( camera, filter, outputView) in
742+ let castFilter = filter as! ChromaKeying
743+
744+ let blendFilter = AlphaBlend ( )
745+ blendFilter. mix = 1.0
746+
747+ let inputImage = PictureInput ( imageName: blendImageName)
748+
749+ inputImage --> blendFilter
750+ camera --> castFilter --> blendFilter --> outputView
751+ inputImage. processImage ( )
752+ return blendFilter
753+ } )
754+ ) ,
754755// FilterOperation(
755756// filter:{KuwaharaFilter()},
756757// listName:"Kuwahara",
@@ -827,16 +828,16 @@ let filterOperations: Array<FilterOperationInterface> = [
827828// },
828829// filterOperationType:.singleInput
829830// ),
830- // FilterOperation(
831- // filter:{ZoomBlur()},
832- // listName:"Zoom blur",
833- // titleName:"Zoom Blur",
834- // sliderConfiguration:.enabled(minimumValue:0.0, maximumValue:2.5, initialValue:1.0),
835- // sliderUpdateCallback: {(filter, sliderValue) in
836- // filter.blurSize = sliderValue
837- // },
838- // filterOperationType:.singleInput
839- // ),
831+ FilterOperation (
832+ filter: { ZoomBlur ( ) } ,
833+ listName: " Zoom blur " ,
834+ titleName: " Zoom Blur " ,
835+ sliderConfiguration: . enabled( minimumValue: 0.0 , maximumValue: 2.5 , initialValue: 1.0 ) ,
836+ sliderUpdateCallback: { ( filter, sliderValue) in
837+ filter. blurSize = sliderValue
838+ } ,
839+ filterOperationType: . singleInput
840+ ) ,
840841// FilterOperation( // TODO: Make this only partially applied to the view
841842// filter:{iOSBlur()},
842843// listName:"iOS 7 blur",
@@ -845,16 +846,16 @@ let filterOperations: Array<FilterOperationInterface> = [
845846// sliderUpdateCallback: nil,
846847// filterOperationType:.singleInput
847848// ),
848- // FilterOperation(
849- // filter:{SwirlDistortion()},
850- // listName:"Swirl",
851- // titleName:"Swirl",
852- // sliderConfiguration:.enabled(minimumValue:0.0, maximumValue:2.0, initialValue:1.0),
853- // sliderUpdateCallback: {(filter, sliderValue) in
854- // filter.angle = sliderValue
855- // },
856- // filterOperationType:.singleInput
857- // ),
849+ FilterOperation (
850+ filter: { SwirlDistortion ( ) } ,
851+ listName: " Swirl " ,
852+ titleName: " Swirl " ,
853+ sliderConfiguration: . enabled( minimumValue: 0.0 , maximumValue: 2.0 , initialValue: 1.0 ) ,
854+ sliderUpdateCallback: { ( filter, sliderValue) in
855+ filter. angle = sliderValue
856+ } ,
857+ filterOperationType: . singleInput
858+ ) ,
858859// FilterOperation(
859860// filter:{BulgeDistortion()},
860861// listName:"Bulge",
@@ -924,14 +925,14 @@ let filterOperations: Array<FilterOperationInterface> = [
924925// return blendFilter
925926// })
926927// ),
927- // FilterOperation (
928- // filter:{StretchDistortion()},
929- // listName:"Stretch",
930- // titleName:"Stretch",
931- // sliderConfiguration:.disabled,
932- // sliderUpdateCallback: nil,
933- // filterOperationType:.singleInput
934- // ),
928+ FilterOperation (
929+ filter: { StretchDistortion ( ) } ,
930+ listName: " Stretch " ,
931+ titleName: " Stretch " ,
932+ sliderConfiguration: . disabled,
933+ sliderUpdateCallback: nil ,
934+ filterOperationType: . singleInput
935+ ) ,
935936// FilterOperation(
936937// filter:{Dilation()},
937938// listName:"Dilation",
@@ -967,22 +968,22 @@ let filterOperations: Array<FilterOperationInterface> = [
967968// // TODO: Perlin noise
968969// // TODO: JFAVoronoi
969970// // TODO: Mosaic
970- // FilterOperation(
971- // filter:{LocalBinaryPattern()},
972- // listName:"Local binary pattern",
973- // titleName:"Local Binary Pattern",
974- // sliderConfiguration:.disabled,
975- // sliderUpdateCallback:nil,
976- // filterOperationType:.singleInput
977- // ),
978- // FilterOperation(
979- // filter:{ColorLocalBinaryPattern()},
980- // listName:"Local binary pattern (color)",
981- // titleName:"Local Binary Pattern (Color)",
982- // sliderConfiguration:.disabled,
983- // sliderUpdateCallback:nil,
984- // filterOperationType:.singleInput
985- // ),
971+ FilterOperation (
972+ filter: { LocalBinaryPattern ( ) } ,
973+ listName: " Local binary pattern " ,
974+ titleName: " Local Binary Pattern " ,
975+ sliderConfiguration: . disabled,
976+ sliderUpdateCallback: nil ,
977+ filterOperationType: . singleInput
978+ ) ,
979+ FilterOperation (
980+ filter: { ColorLocalBinaryPattern ( ) } ,
981+ listName: " Local binary pattern (color) " ,
982+ titleName: " Local Binary Pattern (Color) " ,
983+ sliderConfiguration: . disabled,
984+ sliderUpdateCallback: nil ,
985+ filterOperationType: . singleInput
986+ ) ,
986987 FilterOperation (
987988 filter: { DissolveBlend ( ) } ,
988989 listName: " Dissolve blend " ,
0 commit comments