1 /*
2 */
3
4 /*
5
6 Copyright (C) 2014 Ferrero Andrea
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
20
21
22 */
23
24 /*
25
26 These files are distributed with PhotoFlow - http://aferrero2707.github.io/PhotoFlow/
27
28 */
29
30 #include "../base/processor_imp.hh"
31 #include "operations.hh"
32 #include "no_demosaic.hh"
33 #include "amaze_demosaic.hh"
34 #include "basic_adjustments.hh"
35 #include "color_correction.hh"
36 #include "blender.hh"
37 #include "buffer.hh"
38 #include "ca_correct.hh"
39 #include "channel_mixer.hh"
40 #include "clip.hh"
41 #include "clipping_warning.hh"
42 #include "clone_stamp.hh"
43 #include "clone.hh"
44 #include "convert_colorspace.hh"
45 #include "convertformat.hh"
46 #include "crop.hh"
47 #include "curves.hh"
48 #include "defringe.hh"
49 #include "denoise.hh"
50 #include "desaturate.hh"
51 #include "desaturate_luminance.hh"
52 //#include "dynamic_range_compressor.hh"
53 #include "draw.hh"
54 #include "false_color_correction.hh"
55 #include "fast_demosaic.hh"
56 #include "fast_demosaic_xtrans.hh"
57 #include "gaussblur_sii.hh"
58 #include "gaussblur.hh"
59 #include "gradient.hh"
60 #include "hotpixels.hh"
61 #include "hsl_mask.hh"
62 #include "igv_demosaic.hh"
63 #include "image_reader.hh"
64 #include "impulse_nr.hh"
65 #include "invert.hh"
66 #include "lensfun.hh"
67 #include "levels.hh"
68 #include "lmmse_demosaic.hh"
69 //#include "maxrgb.hh"
70 #include "multiraw_developer.hh"
71 #include "nlmeans.hh"
72 #include "path_mask.hh"
73 #include "perspective.hh"
74 #include "raw_developer.hh"
75 #include "raw_loader.hh"
76 #include "raw_output.hh"
77 #include "raw_preprocessor.hh"
78 #include "rcd_demosaic.hh"
79 #include "scale.hh"
80 #include "shadows_highlights.hh"
81 #include "sharpen.hh"
82 #include "subtr_image.hh"
83 #include "threshold.hh"
84 #include "tone_mapping.hh"
85 #include "tone_mapping_v2.hh"
86 #include "local_contrast.hh"
87 //#include "local_contrast_v2.hh"
88 #include "noise_generator.hh"
89 //#include "trcconv.hh"
90
91
new_no_demosaic()92 PF::ProcessorBase* PF::new_no_demosaic()
93 { return( new PF::Processor<PF::NoDemosaicPar,PF::NoDemosaicProc>() ); }
94
new_amaze_demosaic()95 PF::ProcessorBase* PF::new_amaze_demosaic()
96 { return( new PF::Processor<PF::AmazeDemosaicPar,PF::AmazeDemosaicProc>() ); }
97
new_basic_adjustments()98 PF::ProcessorBase* PF::new_basic_adjustments()
99 { return new PF::Processor<PF::BasicAdjustmentsPar,PF::BasicAdjustments>(); }
100
new_color_correction()101 PF::ProcessorBase* PF::new_color_correction()
102 { return new PF::Processor<PF::ColorCorrectionPar,PF::ColorCorrection>(); }
103
new_blender()104 PF::ProcessorBase* PF::new_blender()
105 { return( new PF::Processor<PF::BlenderPar,PF::BlenderProc>() ); }
106
new_buffer()107 PF::ProcessorBase* PF::new_buffer()
108 { return( new PF::Processor<PF::BufferPar,PF::BufferProc>() ); }
109
new_ca_correct()110 PF::ProcessorBase* PF::new_ca_correct()
111 { return( new PF::Processor<PF::CACorrectPar,PF::CACorrectProc>() ); }
112
new_channel_mixer()113 PF::ProcessorBase* PF::new_channel_mixer()
114 { return ( new PF::Processor<PF::ChannelMixerPar,PF::ChannelMixer>() ); }
115
new_clip()116 PF::ProcessorBase* PF::new_clip()
117 { return( new PF::Processor<PF::ClipPar,PF::ClipOp>() ); }
118
new_clipping_warning()119 PF::ProcessorBase* PF::new_clipping_warning()
120 { return( new PF::Processor<PF::ClippingWarningPar,PF::ClippingWarning>() ); }
121
new_clone_stamp()122 PF::ProcessorBase* PF::new_clone_stamp()
123 { return( new PF::Processor<PF::CloneStampPar,PF::CloneStampProc>() ); }
124
new_clone()125 PF::ProcessorBase* PF::new_clone()
126 { return( new PF::Processor<PF::ClonePar,PF::CloneProc>() ); }
127
new_convert_colorspace()128 PF::ProcessorBase* PF::new_convert_colorspace()
129 { return new PF::Processor<PF::ConvertColorspacePar,PF::ConvertColorspace>(); }
130
new_gamut_warning()131 PF::ProcessorBase* PF::new_gamut_warning()
132 { return new PF::Processor<PF::GamutWarningPar,PF::GamutWarningProc>(); }
133
new_convert_format()134 PF::ProcessorBase* PF::new_convert_format()
135 { return new PF::Processor<PF::ConvertFormatPar,PF::ConvertFormatProc>(); }
136
new_crop()137 PF::ProcessorBase* PF::new_crop()
138 { return( new PF::Processor<PF::CropPar,PF::CropProc>() ); }
139
new_curves()140 PF::ProcessorBase* PF::new_curves()
141 { return( new PF::Processor<PF::CurvesPar,PF::Curves>() ); }
142
new_defringe()143 PF::ProcessorBase* PF::new_defringe()
144 { return new PF::Processor<PF::DefringePar,PF::DefringeProc>(); }
145
new_defringe_algo()146 PF::ProcessorBase* PF::new_defringe_algo()
147 { return new PF::Processor<PF::DefringeAlgoPar,PF::DefringeAlgoProc>(); }
148
new_denoise()149 PF::ProcessorBase* PF::new_denoise()
150 { return( new PF::Processor<PF::DenoisePar,PF::DenoiseProc>() ); }
151
new_desaturate_luminance()152 PF::ProcessorBase* PF::new_desaturate_luminance()
153 { return( new PF::Processor<PF::DesaturateLuminancePar,PF::DesaturateLuminanceProc>() ); }
new_desaturate_luminosity()154 PF::ProcessorBase* PF::new_desaturate_luminosity()
155 { return( new PF::Processor<PF::PixelProcessorPar,PF::DesaturateLuminosity>() ); }
new_desaturate_lightness()156 PF::ProcessorBase* PF::new_desaturate_lightness()
157 { return( new PF::Processor<PF::PixelProcessorPar,PF::DesaturateLightness>() ); }
new_desaturate_average()158 PF::ProcessorBase* PF::new_desaturate_average()
159 { return( new PF::Processor<PF::PixelProcessorPar,PF::DesaturateAverage>() ); }
new_desaturate()160 PF::ProcessorBase* PF::new_desaturate()
161 { return( new PF::Processor<PF::DesaturatePar,PF::DesaturateProc>() ); }
162
163 //PF::ProcessorBase* PF::new_dynamic_range_compressor()
164 //{ return( new PF::Processor<PF::DynamicRangeCompressorPar,PF::DynamicRangeCompressorProc>() ); }
165
new_draw()166 PF::ProcessorBase* PF::new_draw()
167 { return( new PF::Processor<PF::DrawPar,PF::DrawProc>() ); }
168
new_false_color_correction()169 PF::ProcessorBase* PF::new_false_color_correction()
170 { return( new PF::Processor<PF::FalseColorCorrectionPar,PF::FalseColorCorrectionProc>() ); }
171
new_fast_demosaic()172 PF::ProcessorBase* PF::new_fast_demosaic()
173 { return( new PF::Processor<PF::FastDemosaicPar,PF::FastDemosaicProc>() ); }
174
new_fast_demosaic_xtrans()175 PF::ProcessorBase* PF::new_fast_demosaic_xtrans()
176 { return( new PF::Processor<PF::FastDemosaicXTransPar,PF::FastDemosaicXTransProc>() ); }
177
new_gaussblur_sii()178 PF::ProcessorBase* PF::new_gaussblur_sii()
179 { return( new PF::Processor<PF::GaussBlurSiiPar,PF::GaussBlurSiiProc>() ); }
new_gaussblur()180 PF::ProcessorBase* PF::new_gaussblur()
181 { return( new PF::Processor<PF::GaussBlurPar,PF::GaussBlurProc>() ); }
182
new_gradient()183 PF::ProcessorBase* PF::new_gradient()
184 { return( new PF::Processor<PF::GradientPar,PF::Gradient>() ); }
185
new_hotpixels()186 PF::ProcessorBase* PF::new_hotpixels()
187 { return new PF::Processor<PF::HotPixelsPar,PF::HotPixels>(); }
188
new_hsl_mask()189 PF::ProcessorBase* PF::new_hsl_mask()
190 { return new PF::Processor<PF::HSLMaskPar,PF::HSLMask>(); }
191
new_igv_demosaic()192 PF::ProcessorBase* PF::new_igv_demosaic()
193 { return( new PF::Processor<PF::IgvDemosaicPar,PF::IgvDemosaicProc>() ); }
194
new_image_reader()195 PF::ProcessorBase* PF::new_image_reader()
196 { return new PF::Processor<PF::ImageReaderPar,PF::ImageReader>(); }
197
new_impulse_nr_algo()198 PF::ProcessorBase* PF::new_impulse_nr_algo()
199 { return new PF::Processor<PF::ImpulseNR_RTAlgo_Par,PF::ImpulseNR_RTAlgo_Proc>(); }
new_impulse_nr()200 PF::ProcessorBase* PF::new_impulse_nr()
201 { return new PF::Processor<PF::ImpulseNRPar,PF::ImpulseNRProc>(); }
202
new_invert()203 PF::ProcessorBase* PF::new_invert()
204 { return( new PF::Processor<PF::InvertPar,PF::Invert>() ); }
205
new_lensfun_step()206 PF::ProcessorBase* PF::new_lensfun_step()
207 { return new PF::Processor<PF::LensFunParStep,PF::LensFunProc>(); }
new_lensfun()208 PF::ProcessorBase* PF::new_lensfun()
209 { return new PF::Processor<PF::LensFunPar,PF::LensFunProc>(); }
210
new_levels()211 PF::ProcessorBase* PF::new_levels()
212 { return new PF::Processor<PF::LevelsPar,PF::Levels>(); }
213
new_lmmse_demosaic()214 PF::ProcessorBase* PF::new_lmmse_demosaic()
215 { return( new PF::Processor<PF::LMMSEDemosaicPar,PF::LMMSEDemosaicProc>() ); }
216
new_multiraw_developer()217 PF::ProcessorBase* PF::new_multiraw_developer()
218 { return new PF::Processor<PF::MultiRawDeveloperPar,PF::MultiRawDeveloper>(); }
219
new_nlmeans_algo()220 PF::ProcessorBase* PF::new_nlmeans_algo()
221 { return( new PF::Processor<PF::NonLocalMeans_DTAlgo_Par,PF::NonLocalMeans_DTAlgo_Proc>() ); }
new_nlmeans()222 PF::ProcessorBase* PF::new_nlmeans()
223 { return( new PF::Processor<PF::NonLocalMeansPar,PF::NonLocalMeansProc>() ); }
224
new_path_mask()225 PF::ProcessorBase* PF::new_path_mask()
226 { return( new PF::Processor<PF::PathMaskPar,PF::PathMask>() ); }
227
new_perspective()228 PF::ProcessorBase* PF::new_perspective()
229 { return( new PF::Processor<PF::PerspectivePar,PF::PerspectiveProc>() ); }
230
new_raw_developer()231 PF::ProcessorBase* PF::new_raw_developer()
232 { return new PF::Processor<PF::RawDeveloperPar,PF::RawDeveloper>(); }
233
new_raw_loader()234 PF::ProcessorBase* PF::new_raw_loader()
235 { return new PF::Processor<PF::RawLoaderPar,PF::RawLoader>(); }
236
new_raw_output()237 PF::ProcessorBase* PF::new_raw_output()
238 { return new PF::Processor<PF::RawOutputPar,PF::RawOutput>(); }
239
new_raw_preprocessor()240 PF::ProcessorBase* PF::new_raw_preprocessor()
241 { return new PF::Processor<PF::RawPreprocessorPar,PF::RawPreprocessor>(); }
242
new_rcd_demosaic()243 PF::ProcessorBase* PF::new_rcd_demosaic()
244 { return( new PF::Processor<PF::RCDDemosaicPar,PF::RCDDemosaicProc>() ); }
245
new_scale()246 PF::ProcessorBase* PF::new_scale()
247 { return( new PF::Processor<PF::ScalePar,PF::ScaleProc>() ); }
248
new_shadows_highlights()249 PF::ProcessorBase* PF::new_shadows_highlights()
250 { return new PF::Processor<PF::ShadowsHighlightsPar,PF::ShadowsHighlightsProc>(); }
251
new_sharpen()252 PF::ProcessorBase* PF::new_sharpen()
253 { return new PF::Processor<PF::SharpenPar,PF::SharpenProc>(); }
254
new_subtrimg_algo()255 PF::ProcessorBase* PF::new_subtrimg_algo()
256 { return new PF::Processor<PF::SubtrImgAlgoPar,PF::SubtrImgAlgoProc>(); }
new_subtrimg()257 PF::ProcessorBase* PF::new_subtrimg()
258 { return new PF::Processor<PF::SubtrImgPar,PF::SubtrImgProc>(); }
259
new_threshold()260 PF::ProcessorBase* PF::new_threshold()
261 { return( new PF::Processor<PF::ThresholdPar,PF::Threshold>() ); }
262
new_tone_mapping()263 PF::ProcessorBase* PF::new_tone_mapping()
264 { return new PF::Processor<PF::ToneMappingPar,PF::ToneMapping>(); }
265
new_tone_mapping_v2()266 PF::ProcessorBase* PF::new_tone_mapping_v2()
267 { return new PF::Processor<PF::ToneMappingParV2,PF::ToneMappingV2>(); }
268
new_local_contrast()269 PF::ProcessorBase* PF::new_local_contrast()
270 { return new PF::Processor<PF::LocalContrastPar,PF::LocalContrastProc>(); }
271
272 //PF::ProcessorBase* PF::new_local_contrast_v2()
273 //{ return new PF::Processor<PF::LocalContrastV2Par,PF::LocalContrastV2Proc>(); }
274
new_noise_generator()275 PF::ProcessorBase* PF::new_noise_generator()
276 { return new PF::Processor<PF::NoiseGeneratorPar,PF::NoiseGeneratorProc>(); }
277
278 #include "uniform.hh"
new_uniform()279 PF::ProcessorBase* PF::new_uniform()
280 { return( new PF::Processor<PF::UniformPar,PF::Uniform>() ); }
281
282 #include "unsharp_mask.hh"
new_unsharp_mask()283 PF::ProcessorBase* PF::new_unsharp_mask()
284 { return ( new PF::Processor<PF::UnsharpMaskPar,PF::UnsharpMask>() ); }
285
286 #include "vips_operation.hh"
new_vips_operation()287 PF::ProcessorBase* PF::new_vips_operation()
288 { return( new PF::Processor<PF::VipsOperationPar,PF::VipsOperationProc>() ); }
289
290 #include "volume.hh"
new_volume()291 PF::ProcessorBase* PF::new_volume()
292 { return new PF::Processor<PF::VolumePar,PF::VolumeProc>(); }
293
294 #include "wavdec.hh"
new_wavdec_algo()295 PF::ProcessorBase* PF::new_wavdec_algo()
296 { return new PF::Processor<PF::WavDecAlgoPar,PF::WavDecAlgoProc>(); }
new_wavdec()297 PF::ProcessorBase* PF::new_wavdec()
298 { return new PF::Processor<PF::WavDecPar,PF::WavDecProc>(); }
299
300 #include "white_balance.hh"
new_white_balance()301 PF::ProcessorBase* PF::new_white_balance()
302 { return new PF::Processor<PF::WhiteBalancePar,PF::WhiteBalance>(); }
303
304 #include "xtrans_demosaic.hh"
new_xtrans_demosaic()305 PF::ProcessorBase* PF::new_xtrans_demosaic()
306 { return( new PF::Processor<PF::XTransDemosaicPar,PF::XTransDemosaicProc>() ); }
307