1 /* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include "ec_log.h" 17 #include "saturation_filter.h" 18 #include "brightness_filter.h" 19 #include "contrast_filter.h" 20 #include "scale_filter.h" 21 #include "gaussian_blur_filter.h" 22 #include "input.h" 23 #include "output.h" 24 #include "filter_factory.h" 25 26 namespace OHOS { 27 namespace Rosen { GetFilter(std::string filterType)28std::shared_ptr<Filter> FilterFactory::GetFilter(std::string filterType) 29 { 30 if (!filterSet_.count(filterType)) { 31 LOGE("The filter type of %{public}s is not registered.", filterType.c_str()); 32 return nullptr; 33 } 34 35 if (filterType == "Input") { 36 std::shared_ptr<Input> inputFilter = std::make_shared<Input>(); 37 std::shared_ptr<Filter> filter = std::static_pointer_cast<Filter>(inputFilter); 38 return filter; 39 } else if (filterType == "Output") { 40 std::shared_ptr<Output> outputFilter = std::make_shared<Output>(); 41 std::shared_ptr<Filter> filter = std::static_pointer_cast<Filter>(outputFilter); 42 return filter; 43 } else if (filterType == "Saturation") { 44 std::shared_ptr<SaturationFilter> saturationFilter = std::make_shared<SaturationFilter>(); 45 std::shared_ptr<Filter> filter = std::static_pointer_cast<Filter>(saturationFilter); 46 return filter; 47 } else if (filterType == "Brightness") { 48 std::shared_ptr<BrightnessFilter> brightnessFilter = std::make_shared<BrightnessFilter>(); 49 std::shared_ptr<Filter> filter = std::static_pointer_cast<Filter>(brightnessFilter); 50 return filter; 51 } else if (filterType == "Contrast") { 52 std::shared_ptr<ContrastFilter> contrastFilter = std::make_shared<ContrastFilter>(); 53 std::shared_ptr<Filter> filter = std::static_pointer_cast<Filter>(contrastFilter); 54 return filter; 55 } else if (filterType == "GaussianBlur") { 56 std::shared_ptr<GaussianBlurFilter> gaussianBlurFilter = std::make_shared<GaussianBlurFilter>(); 57 std::shared_ptr<Filter> filter = std::static_pointer_cast<Filter>(gaussianBlurFilter); 58 return filter; 59 } else if (filterType == "HorizontalBlur") { 60 std::shared_ptr<HorizontalBlurFilter> horizontalBlurFilter = std::make_shared<HorizontalBlurFilter>(); 61 std::shared_ptr<Filter> filter = std::static_pointer_cast<Filter>(horizontalBlurFilter); 62 return filter; 63 } else if (filterType == "VerticalBlur") { 64 std::shared_ptr<VerticalBlurFilter> verticalBlurFilter = std::make_shared<VerticalBlurFilter>(); 65 std::shared_ptr<Filter> filter = std::static_pointer_cast<Filter>(verticalBlurFilter); 66 return filter; 67 } else if (filterType == "Scale") { 68 std::shared_ptr<ScaleFilter> scaleFilter = std::make_shared<ScaleFilter>(); 69 std::shared_ptr<Filter> filter = std::static_pointer_cast<Filter>(scaleFilter); 70 return filter; 71 } 72 return nullptr; 73 } 74 } // namespcae Rosen 75 } // namespace OHOS 76