1 #ifndef DALI_OFFSCREEN_WINDOW_H
2 #define DALI_OFFSCREEN_WINDOW_H
5 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
23 #include <dali/public-api/actors/actor.h>
24 #include <dali/public-api/math/uint-16-pair.h>
25 #include <dali/public-api/signals/dali-signal.h>
26 #include <dali/public-api/object/any.h>
29 #include <dali/devel-api/adaptor-framework/offscreen-application.h>
35 * @addtogroup dali_adaptor_framework
43 class OffscreenWindow;
46 class DALI_IMPORT_API OffscreenWindow : public Dali::BaseHandle
50 typedef Uint16Pair WindowSize;
51 typedef Signal<void (OffscreenWindow, Any)> PostRenderSignalType;
56 * @brief Creates an initialized handle to a new OffscreenWindow
57 * @note You should hold the returned handle. If you missed the handle, the OffscreenWindow will be released
59 * @param[in] width The initial width of the OffscreenWindow
60 * @param[in] height The initial height of the OffscreenWindow
61 * @param[in] isTranslucent Whether the OffscreenWindow is translucent or not
63 static OffscreenWindow New( uint16_t width, uint16_t height, bool isTranslucent );
66 * @brief Creates an initialized handle to a new OffscreenWindow
67 * @note You should hold the returned handle. If you missed the handle, the OffscreenWindow will be released
69 * @param[in] surface The native surface handle of your platform
71 static OffscreenWindow New( Any surface );
74 * @brief Constructs an empty handle
79 * @brief Copy constructor
81 OffscreenWindow( const OffscreenWindow& window );
84 * @brief Assignment operator
86 OffscreenWindow& operator=( const OffscreenWindow& window );
95 * @brief Adds a child Actor to the OffscreenWindow.
97 * The child will be referenced.
99 * @param[in] actor The child
100 * @pre The actor has been initialized.
101 * @pre The actor does not have a parent.
103 void Add( Actor actor );
106 * @brief Removes a child Actor from the OffscreenWindow.
108 * The child will be unreferenced.
110 * @param[in] actor The child
111 * @pre The actor has been added to the OffscreenWindow.
113 void Remove( Actor actor );
116 * @brief Sets the background color of the OffscreenWindow.
118 * @param[in] color The new background color
120 void SetBackgroundColor( const Vector4& color );
123 * @brief Gets the background color of the OffscreenWindow.
125 * @return The background color
127 Vector4 GetBackgroundColor() const;
130 * @brief Returns the root Layer of the OffscreenWindow.
132 * @return The root layer
134 Layer GetRootLayer() const;
137 * @brief Queries the number of on-scene layers.
139 * Note that a default layer is always provided (count >= 1).
141 * @return The number of layers
143 uint32_t GetLayerCount() const;
146 * @brief Retrieves the layer at a specified depth in the OffscreenWindow.
148 * @param[in] depth The depth
149 * @return The layer found at the given depth
150 * @pre Depth is less than layer count; see GetLayerCount().
152 Layer GetLayer( uint32_t depth ) const;
155 * @brief Returns the size of the OffscreenWindow in pixels as a Vector.
157 * The x component will be the width of the OffscreenWindow in pixels.
158 * The y component will be the height of the OffscreenWindow in pixels.
160 * @return The size of the OffscreenWindow as a Vector
162 WindowSize GetSize() const;
165 * @brief Gets the native handle.
166 * @note When users call this function, it wraps the actual type used by the underlying system.
167 * @return The native handle or an empty handle
169 Any GetNativeHandle() const;
172 * @brief Retrieves the DPI of the window.
174 * @return The DPI of the window
176 Uint16Pair GetDpi() const;
181 * @brief This signal is emitted when the OffscreenWindow is rendered.
185 PostRenderSignalType& PostRenderSignal();
187 public: // Not intended for application developers
190 * @brief Internal constructor
192 explicit DALI_INTERNAL OffscreenWindow( Internal::OffscreenWindow* window );
202 #endif // DALI_OFFSCREEN_WINDOW_H