2 * Copyright (c) 2022 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <dali-toolkit/public-api/controls/gl-view/gl-view.h>
22 #include <dali-toolkit/internal/controls/gl-view/drawable-view-impl.h>
23 #include <dali-toolkit/internal/controls/gl-view/gl-view-impl.h>
25 namespace Dali::Toolkit
27 GlView::GlView() = default;
29 GlView::GlView(const GlView& GlView) = default;
31 GlView::GlView(GlView&& rhs) = default;
33 GlView& GlView::operator=(const GlView& GlView) = default;
35 GlView& GlView::operator=(GlView&& rhs) = default;
37 GlView::~GlView() = default;
39 GlView GlView::New(ColorFormat colorFormat)
41 // This function is backward compatible and always returns
42 // backend based on NativeImage.
43 return Internal::GlView::New(colorFormat);
46 GlView GlView::New(BackendMode backendMode, ColorFormat colorFormat)
50 case BackendMode::DIRECT_RENDERING:
51 case BackendMode::DIRECT_RENDERING_THREADED:
53 return Internal::DrawableView::New(backendMode);
55 case BackendMode::EGL_IMAGE_OFFSCREEN_RENDERING:
57 return Internal::GlView::New(colorFormat);
61 DALI_ASSERT_ALWAYS("Invalid BackendMode");
67 GlView GlView::DownCast(BaseHandle handle)
69 return Control::DownCast<GlView, Internal::GlViewImpl>(handle);
72 void GlView::RegisterGlCallbacks(CallbackBase* initCallback, CallbackBase* renderFrameCallback, CallbackBase* terminateCallback)
74 Dali::Toolkit::GetImpl(*this).RegisterGlCallbacks(initCallback, renderFrameCallback, terminateCallback);
77 void GlView::SetResizeCallback(CallbackBase* resizeCallback)
79 Dali::Toolkit::GetImpl(*this).SetResizeCallback(resizeCallback);
82 bool GlView::SetGraphicsConfig(bool depth, bool stencil, int msaa, GraphicsApiVersion version)
84 return Dali::Toolkit::GetImpl(*this).SetGraphicsConfig(depth, stencil, msaa, version);
87 void GlView::SetRenderingMode(RenderingMode mode)
89 Dali::Toolkit::GetImpl(*this).SetRenderingMode(mode);
92 Dali::Toolkit::GlView::RenderingMode GlView::GetRenderingMode() const
94 return Dali::Toolkit::GetImpl(*this).GetRenderingMode();
97 Dali::Toolkit::GlView::BackendMode GlView::GetBackendMode() const
99 return Dali::Toolkit::GetImpl(*this).GetBackendMode();
102 void GlView::RenderOnce()
104 Dali::Toolkit::GetImpl(*this).RenderOnce();
107 void GlView::BindTextureResources(std::vector<Dali::Texture> textures)
109 Dali::Toolkit::GetImpl(*this).BindTextureResources(std::move(textures));
112 GlView::GlView(Internal::GlViewImpl& implementation)
113 : Control(implementation)
117 GlView::GlView(Dali::Internal::CustomActor* internal)
120 VerifyCustomActorPointer<Internal::GlViewImpl>(internal);
123 } // namespace Dali::Toolkit