1 /* 2 * Copyright (c) 2023 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 "skia_runtime_blender_builder.h" 17 18 #include "skia_blender.h" 19 #include "skia_runtime_effect.h" 20 21 namespace OHOS { 22 namespace Rosen { 23 namespace Drawing { SkiaRuntimeBlenderBuilder(std::shared_ptr<RuntimeEffect> effect)24SkiaRuntimeBlenderBuilder::SkiaRuntimeBlenderBuilder(std::shared_ptr<RuntimeEffect> effect) noexcept 25 { 26 auto effectImpl = effect ? effect->GetImpl<SkiaRuntimeEffect>() : nullptr; 27 if (effectImpl != nullptr) { 28 skRuntimeBlendBuilder_ = std::make_shared<SkRuntimeBlendBuilder>(effectImpl->GetRuntimeEffect()); 29 } 30 } 31 MakeBlender()32std::shared_ptr<Blender> SkiaRuntimeBlenderBuilder::MakeBlender() 33 { 34 if (!skRuntimeBlendBuilder_) { 35 return nullptr; 36 } 37 sk_sp<SkBlender> skBlender = skRuntimeBlendBuilder_->makeBlender(); 38 auto blender = std::make_shared<Blender>(); 39 blender->GetImpl<SkiaBlender>()->SetSkBlender(skBlender); 40 return blender; 41 } 42 SetUniform(const std::string & name,float val)43void SkiaRuntimeBlenderBuilder::SetUniform(const std::string& name, float val) 44 { 45 if (!skRuntimeBlendBuilder_) { 46 return; 47 } 48 skRuntimeBlendBuilder_->uniform(name.c_str()) = val; 49 } 50 } // namespace Drawing 51 } // namespace Rosen 52 } // namespace OHOS