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#include "effect.h"
174d949f91Sopenharmony_ci#include "effect_log.h"
184d949f91Sopenharmony_ci
194d949f91Sopenharmony_cinamespace OHOS {
204d949f91Sopenharmony_cinamespace Media {
214d949f91Sopenharmony_cinamespace Effect {
224d949f91Sopenharmony_civoid Effect::AddEFilter(const std::shared_ptr<EFilter> &efilter)
234d949f91Sopenharmony_ci{
244d949f91Sopenharmony_ci    efilters_.emplace_back(efilter);
254d949f91Sopenharmony_ci}
264d949f91Sopenharmony_ci
274d949f91Sopenharmony_ciErrorCode Effect::InsertEFilter(const std::shared_ptr<EFilter> &efilter, uint32_t index)
284d949f91Sopenharmony_ci{
294d949f91Sopenharmony_ci    if (index > static_cast<uint32_t>(efilters_.size())) {
304d949f91Sopenharmony_ci        EFFECT_LOGE("index is invalid! index=%{public}d, efilterSize=%{public}zu", index, efilters_.size());
314d949f91Sopenharmony_ci        return ErrorCode::ERR_INVALID_INDEX;
324d949f91Sopenharmony_ci    }
334d949f91Sopenharmony_ci    efilters_.emplace(efilters_.begin() + index, efilter);
344d949f91Sopenharmony_ci    return ErrorCode::SUCCESS;
354d949f91Sopenharmony_ci}
364d949f91Sopenharmony_ci
374d949f91Sopenharmony_civoid Effect::RemoveEFilter(const std::shared_ptr<EFilter> &efilter)
384d949f91Sopenharmony_ci{
394d949f91Sopenharmony_ci    for (auto it = efilters_.begin(); it != efilters_.end();) {
404d949f91Sopenharmony_ci        if (*it == efilter) {
414d949f91Sopenharmony_ci            it = efilters_.erase(it);
424d949f91Sopenharmony_ci        } else {
434d949f91Sopenharmony_ci            ++it;
444d949f91Sopenharmony_ci        }
454d949f91Sopenharmony_ci    }
464d949f91Sopenharmony_ci}
474d949f91Sopenharmony_ci
484d949f91Sopenharmony_ciErrorCode Effect::RemoveEFilter(uint32_t index)
494d949f91Sopenharmony_ci{
504d949f91Sopenharmony_ci    CHECK_AND_RETURN_RET_LOG(index < static_cast<uint32_t>(efilters_.size()), ErrorCode::ERR_INVALID_INDEX,
514d949f91Sopenharmony_ci        "RemoveEFilter: index is invalid! index=%{public}d, efilterSize=%{public}zu", index, efilters_.size());
524d949f91Sopenharmony_ci
534d949f91Sopenharmony_ci    efilters_.erase(efilters_.begin() + index);
544d949f91Sopenharmony_ci    return ErrorCode::SUCCESS;
554d949f91Sopenharmony_ci}
564d949f91Sopenharmony_ci
574d949f91Sopenharmony_ciErrorCode Effect::ReplaceEFilter(const std::shared_ptr<EFilter> &efilter, uint32_t index)
584d949f91Sopenharmony_ci{
594d949f91Sopenharmony_ci    CHECK_AND_RETURN_RET_LOG(index < static_cast<uint32_t>(efilters_.size()), ErrorCode::ERR_INVALID_INDEX,
604d949f91Sopenharmony_ci        "ReplaceEFilter: index is invalid! index=%{public}d, efilterSize=%{public}zu", index, efilters_.size());
614d949f91Sopenharmony_ci    efilters_[index] = efilter;
624d949f91Sopenharmony_ci    return ErrorCode::SUCCESS;
634d949f91Sopenharmony_ci}
644d949f91Sopenharmony_ci} // namespace Effect
654d949f91Sopenharmony_ci} // namespace Media
664d949f91Sopenharmony_ci} // namespace OHOS