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-impl.h>
25 #include <dali/internal/event/actors/layer-list.h>
26 #include <dali/internal/event/actor-attachments/camera-attachment-impl.h>
27 #include <dali/internal/event/common/event-thread-services.h>
28 #include <dali/internal/event/render-tasks/render-task-list-impl.h>
36 SystemOverlay* SystemOverlay::New( EventThreadServices& eventThreadServices )
38 SystemOverlay* overlay = new SystemOverlay( eventThreadServices );
40 overlay->Initialize();
45 SystemOverlay::~SystemOverlay()
49 // we are closing down so just delete the root, no point emit disconnect
50 // signals or send messages to update
55 void SystemOverlay::Add( Actor& actor )
59 mRootLayer->Add( actor );
62 void SystemOverlay::Remove( Actor& actor )
66 mRootLayer->Remove( actor );
70 RenderTaskList& SystemOverlay::GetOverlayRenderTasks()
72 if ( !mOverlayRenderTaskList )
74 mOverlayRenderTaskList = RenderTaskList::New( mEventThreadServices, *this, true/*system-overlay*/ );
77 return *mOverlayRenderTaskList;
80 void SystemOverlay::SetSize( float width, float height )
82 mSize = Vector2( width, height );
86 mRootLayer->SetSize( mSize.width, mSize.height );
89 if ( mDefaultCameraActor )
91 // Sets the default perspective projection for the given size.
92 mDefaultCameraActor->SetPerspectiveProjection( mSize );
96 LayerList& SystemOverlay::GetLayerList()
101 Actor& SystemOverlay::GetDefaultRootActor()
108 CameraActor& SystemOverlay::GetDefaultCameraActor()
110 CreateDefaultCameraActor();
112 return *mDefaultCameraActor;
115 SystemOverlay::SystemOverlay( EventThreadServices& eventThreadServices )
116 : mEventThreadServices( eventThreadServices )
120 void SystemOverlay::Initialize()
122 // Create the ordered list of layers
123 mLayerList = LayerList::New( mEventThreadServices.GetUpdateManager(), true/*system layers*/ );
126 void SystemOverlay::CreateRootLayer()
128 // Lazy initialization; SystemOverlay may never be used
131 mRootLayer = Layer::NewRoot( *mLayerList, mEventThreadServices.GetUpdateManager(), true/*system layer*/ );
132 mRootLayer->SetName("SystemOverlayRoot");
133 mRootLayer->SetSize( mSize.width, mSize.height );
137 void SystemOverlay::CreateDefaultCameraActor()
139 // Lazy initialization; SystemOverlay may never be used
140 if ( !mDefaultCameraActor )
142 // Creates a default camera with a default perspective projection.
143 mDefaultCameraActor = CameraActor::New( mSize );
144 mDefaultCameraActor->SetParentOrigin( ParentOrigin::CENTER );
146 Add( *mDefaultCameraActor );
150 } // namespace Internal