2 * Copyright (c) 2014 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/internal/event/common/system-overlay-impl.h>
22 #include <dali/public-api/common/constants.h>
23 #include <dali/internal/event/actors/camera-actor-impl.h>
24 #include <dali/internal/event/actors/layer-list.h>
25 #include <dali/internal/event/actor-attachments/camera-attachment-impl.h>
26 #include <dali/internal/event/common/stage-impl.h>
27 #include <dali/internal/event/render-tasks/render-task-list-impl.h>
35 SystemOverlay* SystemOverlay::New( Stage& stage )
37 SystemOverlay* overlay = new SystemOverlay( stage );
39 overlay->Initialize();
44 SystemOverlay::~SystemOverlay()
48 // we are closing down so just delete the root, no point emit disconnect
49 // signals or send messages to update
54 void SystemOverlay::Add( Actor& actor )
58 mRootLayer->Add( actor );
61 void SystemOverlay::Remove( Actor& actor )
65 mRootLayer->Remove( actor );
69 RenderTaskList& SystemOverlay::GetOverlayRenderTasks()
71 if ( !mOverlayRenderTaskList )
73 mOverlayRenderTaskList = RenderTaskList::New( mStage.GetUpdateManager(), *this, true/*system-overlay*/ );
76 return *mOverlayRenderTaskList;
79 void SystemOverlay::SetSize( float width, float height )
81 mSize = Vector2( width, height );
85 mRootLayer->SetSize( mSize.width, mSize.height );
88 if ( mDefaultCameraActor )
90 // Sets the default perspective projection for the given size.
91 mDefaultCameraActor->SetPerspectiveProjection( mSize );
95 LayerList& SystemOverlay::GetLayerList()
100 Actor& SystemOverlay::GetDefaultRootActor()
107 CameraActor& SystemOverlay::GetDefaultCameraActor()
109 CreateDefaultCameraActor();
111 return *mDefaultCameraActor;
114 SystemOverlay::SystemOverlay( Stage& stage )
119 void SystemOverlay::Initialize()
121 // Create the ordered list of layers
122 mLayerList = LayerList::New( mStage, true/*system layers*/ );
125 void SystemOverlay::CreateRootLayer()
127 // Lazy initialization; SystemOverlay may never be used
130 mRootLayer = Layer::NewRoot( mStage, *mLayerList, mStage.GetUpdateManager(), true/*system layer*/ );
131 mRootLayer->SetName("SystemOverlayRoot");
132 mRootLayer->SetSize( mSize.width, mSize.height );
136 void SystemOverlay::CreateDefaultCameraActor()
138 // Lazy initialization; SystemOverlay may never be used
139 if ( !mDefaultCameraActor )
141 // Creates a default camera with a default perspective projection.
142 mDefaultCameraActor = CameraActor::New( mSize );
143 mDefaultCameraActor->SetParentOrigin( ParentOrigin::CENTER );
145 Add( *mDefaultCameraActor );
149 } // namespace Internal