50f5772cabf1ee0024e4ec81fcc39b6ff68454c4
[platform/core/uifw/dali-adaptor.git] / dali / devel-api / adaptor-framework / application-devel.cpp
1 /*
2  * Copyright (c) 2020 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 // INTERNAL INCLUDES
19 #include <dali/devel-api/adaptor-framework/application-devel.h>
20 #include <dali/integration-api/adaptor-framework/scene-holder.h>
21 #include <dali/internal/adaptor/common/application-impl.h>
22
23 namespace Dali
24 {
25 namespace DevelApplication
26 {
27 Application New(int* argc, char** argv[], const std::string& stylesheet, Application::WINDOW_MODE windowMode, PositionSize positionSize, WindowType type)
28 {
29   Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
30   if(internal)
31   {
32     // Set Defaut Window type
33     internal->SetDefaultWindowType(type);
34
35     // pre-initialized application
36     internal->SetCommandLineOptions(argc, argv);
37     if(argc && (*argc > 0))
38     {
39       internal->GetWindow().SetClass((*argv)[0], "");
40     }
41     internal->SetStyleSheet(stylesheet);
42
43     internal->GetWindow().SetTransparency((windowMode == Application::OPAQUE ? false : true));
44
45     //Store only the value before adaptor is created
46     internal->StoreWindowPositionSize(positionSize);
47   }
48   else
49   {
50     internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, windowMode, positionSize, Internal::Adaptor::Framework::NORMAL, type);
51   }
52   return Application(internal.Get());
53 }
54
55 bool AddIdleWithReturnValue(Application application, CallbackBase* callback)
56 {
57   return Internal::Adaptor::GetImplementation(application).AddIdle(callback, true);
58 }
59
60 std::string GetDataPath()
61 {
62   return Internal::Adaptor::Application::GetDataPath();
63 }
64
65 Application DownCast(Dali::RefObject* refObject)
66 {
67   return Application(dynamic_cast<Dali::Internal::Adaptor::Application*>(refObject));
68 }
69
70 } // namespace DevelApplication
71
72 } // namespace Dali
73
74 extern "C" void ApplicationPreInitialize(int* argc, char** argv[])
75 {
76   Dali::Internal::Adaptor::Application::PreInitialize(argc, argv);
77 }