14d949f91Sopenharmony_ci/*
24d949f91Sopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd.
34d949f91Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44d949f91Sopenharmony_ci * you may not use this file except in compliance with the License.
54d949f91Sopenharmony_ci * You may obtain a copy of the License at
64d949f91Sopenharmony_ci *
74d949f91Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84d949f91Sopenharmony_ci *
94d949f91Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104d949f91Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114d949f91Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124d949f91Sopenharmony_ci * See the License for the specific language governing permissions and
134d949f91Sopenharmony_ci * limitations under the License.
144d949f91Sopenharmony_ci */
154d949f91Sopenharmony_ci
164d949f91Sopenharmony_ci#ifndef IMAGE_EFFECT_EFFECT_H
174d949f91Sopenharmony_ci#define IMAGE_EFFECT_EFFECT_H
184d949f91Sopenharmony_ci
194d949f91Sopenharmony_ci#include "efilter.h"
204d949f91Sopenharmony_ci
214d949f91Sopenharmony_cinamespace OHOS {
224d949f91Sopenharmony_cinamespace Media {
234d949f91Sopenharmony_cinamespace Effect {
244d949f91Sopenharmony_ciclass Effect {
254d949f91Sopenharmony_cipublic:
264d949f91Sopenharmony_ci    Effect() = default;
274d949f91Sopenharmony_ci
284d949f91Sopenharmony_ci    virtual ~Effect() = default;
294d949f91Sopenharmony_ci
304d949f91Sopenharmony_ci    virtual void AddEFilter(const std::shared_ptr<EFilter> &efilter);
314d949f91Sopenharmony_ci
324d949f91Sopenharmony_ci    virtual ErrorCode InsertEFilter(const std::shared_ptr<EFilter> &efilter, uint32_t index);
334d949f91Sopenharmony_ci
344d949f91Sopenharmony_ci    virtual void RemoveEFilter(const std::shared_ptr<EFilter> &efilter);
354d949f91Sopenharmony_ci
364d949f91Sopenharmony_ci    virtual ErrorCode RemoveEFilter(uint32_t index);
374d949f91Sopenharmony_ci
384d949f91Sopenharmony_ci    virtual ErrorCode ReplaceEFilter(const std::shared_ptr<EFilter> &efilter, uint32_t index);
394d949f91Sopenharmony_ci
404d949f91Sopenharmony_ci    virtual ErrorCode Start() = 0;
414d949f91Sopenharmony_ci
424d949f91Sopenharmony_ci    virtual ErrorCode Save(EffectJsonPtr &res) = 0;
434d949f91Sopenharmony_ci
444d949f91Sopenharmony_ci    std::vector<std::shared_ptr<EFilter>> &GetEFilters()
454d949f91Sopenharmony_ci    {
464d949f91Sopenharmony_ci        return efilters_;
474d949f91Sopenharmony_ci    }
484d949f91Sopenharmony_ciprotected:
494d949f91Sopenharmony_ci    std::vector<std::shared_ptr<EFilter>> efilters_;
504d949f91Sopenharmony_ci};
514d949f91Sopenharmony_ci} // namespace Effect
524d949f91Sopenharmony_ci} // namespace Media
534d949f91Sopenharmony_ci} // namespace OHOS
544d949f91Sopenharmony_ci#endif // IMAGE_EFFECT_EFFECT_H
55