2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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.
18 #include <dali/internal/event/common/system-overlay-impl.h>
21 #include <dali/public-api/common/constants.h>
22 #include <dali/internal/event/actors/camera-actor-impl.h>
23 #include <dali/internal/event/actors/layer-list.h>
24 #include <dali/internal/event/actor-attachments/camera-attachment-impl.h>
25 #include <dali/internal/event/common/stage-impl.h>
26 #include <dali/internal/event/render-tasks/render-task-list-impl.h>
34 SystemOverlay* SystemOverlay::New( Stage& stage )
36 SystemOverlay* overlay = new SystemOverlay( stage );
38 overlay->Initialize();
43 SystemOverlay::~SystemOverlay()
47 // we are closing down so just delete the root, no point emit disconnect
48 // signals or send messages to update
53 void SystemOverlay::Add( Actor& actor )
57 mRootLayer->Add( actor );
60 void SystemOverlay::Remove( Actor& actor )
64 mRootLayer->Remove( actor );
68 RenderTaskList& SystemOverlay::GetOverlayRenderTasks()
70 if ( !mOverlayRenderTaskList )
72 mOverlayRenderTaskList = RenderTaskList::New( mStage.GetUpdateManager(), *this, true/*system-overlay*/ );
75 return *mOverlayRenderTaskList;
78 void SystemOverlay::SetSize( float width, float height )
80 mSize = Vector2( width, height );
84 mRootLayer->SetSize( mSize.width, mSize.height );
87 if ( mDefaultCameraActor )
89 // Sets the default perspective projection for the given size.
90 mDefaultCameraActor->SetPerspectiveProjection( mSize );
94 LayerList& SystemOverlay::GetLayerList()
99 Actor& SystemOverlay::GetDefaultRootActor()
106 CameraActor& SystemOverlay::GetDefaultCameraActor()
108 CreateDefaultCameraActor();
110 return *mDefaultCameraActor;
113 SystemOverlay::SystemOverlay( Stage& stage )
118 void SystemOverlay::Initialize()
120 // Create the ordered list of layers
121 mLayerList = LayerList::New( mStage, true/*system layers*/ );
124 void SystemOverlay::CreateRootLayer()
126 // Lazy initialization; SystemOverlay may never be used
129 mRootLayer = Layer::NewRoot( mStage, *mLayerList, mStage.GetUpdateManager(), true/*system layer*/ );
130 mRootLayer->SetName("SystemOverlayRoot");
131 mRootLayer->SetSize( mSize.width, mSize.height );
135 void SystemOverlay::CreateDefaultCameraActor()
137 // Lazy initialization; SystemOverlay may never be used
138 if ( !mDefaultCameraActor )
140 // Creates a default camera with a default perspective projection.
141 mDefaultCameraActor = CameraActor::New( mSize );
142 mDefaultCameraActor->SetParentOrigin( ParentOrigin::CENTER );
144 Add( *mDefaultCameraActor );
148 } // namespace Internal