diff --git a/com.samsung.dali-demo.xml b/com.samsung.dali-demo.xml index 17fba75..59fceae 100644 --- a/com.samsung.dali-demo.xml +++ b/com.samsung.dali-demo.xml @@ -397,6 +397,9 @@ + + + diff --git a/examples-reel/dali-examples-reel.cpp b/examples-reel/dali-examples-reel.cpp index 7d5af30..b6c5e66 100644 --- a/examples-reel/dali-examples-reel.cpp +++ b/examples-reel/dali-examples-reel.cpp @@ -111,6 +111,7 @@ int DALI_EXPORT_API main(int argc, char** argv) demo.AddExample(Example("tooltip.example", DALI_DEMO_STR_TITLE_TOOLTIP)); demo.AddExample(Example("transitions.example", DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS)); demo.AddExample(Example("web-view.example", DALI_DEMO_STR_TITLE_WEB_VIEW)); + demo.AddExample(Example("window.example", DALI_DEMO_STR_TITLE_WINDOW)); demo.SortAlphabetically(true); diff --git a/examples/window/window-example.cpp b/examples/window/window-example.cpp new file mode 100644 index 0000000..7eb40d5 --- /dev/null +++ b/examples/window/window-example.cpp @@ -0,0 +1,585 @@ +/* + * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include +#include +#include + +using namespace Dali; +using namespace Dali::Toolkit; + +const int MARGIN = 50; +static int count = 0; + +// This example shows how to create and display Hello World! using a simple TextActor +// +class WindowExampleController : public ConnectionTracker +{ +public: + WindowExampleController(Application &application) + : mApplication(application), + manual_rotation_flag(false), + rotation_count(0), + rot(0), + bColor(0) + { + // Connect to the Application's Init signal + mApplication.InitSignal().Connect(this, &WindowExampleController::Create); + mApplication.PauseSignal().Connect(this, &WindowExampleController::Pause); + mApplication.ResumeSignal().Connect(this, &WindowExampleController::Resume); + mApplication.DeviceOrientationChangedSignal().Connect(this, &WindowExampleController::OnDeviceOrientationChanged); + mApplication.LowMemorySignal().Connect(this, &WindowExampleController::OnLowMemory); + } + + ~WindowExampleController() = default; + + // The Init signal is received once (only) during the Application lifetime + void Create(Application &application) + { + // Get a handle to the window and set the background colour + Window window = application.GetWindow(); + window.AddAuxiliaryHint("wm.policy.win.user.geometry", "1"); + window.SetBackgroundColor(Color::WHITE); + window.SetTransparency(false); + + window.SetType(WindowType::NOTIFICATION); + window.SetNotificationLevel(WindowNotificationLevel::MEDIUM); + + currentOrientation = Dali::WindowOrientation::PORTRAIT; + enableTimer = false; + bChangedOrientation = false; + manual_rotation_flag = false; + + // Add a text label to the window + TextLabel textLabel = TextLabel::New("Window Example"); + textLabel.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); + textLabel.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + textLabel.SetProperty(Actor::Property::NAME, "WindowExampleLabel"); + textLabel.SetBackgroundColor(Color::RED); + window.Add(textLabel); + + // Create a clipping control and add a child to it + mClipControl = Control::New(); + mClipControl.SetProperty(Actor::Property::SIZE, Vector2(250.0f, 100.0f)); + mClipControl.SetProperty(Actor::Property::PARENT_ORIGIN, Vector3(0.75f, 0.75f, 0.5f)); + mClipControl.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); + mClipControl.SetBackgroundColor(Color::BLUE); + window.Add(mClipControl); + + auto child = Control::New(); + child.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 250.0f)); + child.SetProperty(Actor::Property::PARENT_ORIGIN, AnchorPoint::CENTER); + child.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); + child.SetBackgroundColor(Color::GREEN); + mClipControl.Add(child); + + // Respond to key events + window.KeyEventSignal().Connect(this, &WindowExampleController::OnKeyEvent); + + // Respond to a click anywhere on the window + window.GetRootLayer().TouchedSignal().Connect(this, &WindowExampleController::OnTouch); + window.ResizeSignal().Connect(this, &WindowExampleController::OnWindowResized); + DevelWindow::MovedSignal(window).Connect(this, &WindowExampleController::OnWindowMoved); + DevelWindow::OrientationChangedSignal(window).Connect(this, &WindowExampleController::OnWindowOrientationChanged); + DevelWindow::MoveCompletedSignal(window).Connect(this, &WindowExampleController::OnWindowMovedByServer); + DevelWindow::ResizeCompletedSignal(window).Connect(this, &WindowExampleController::OnWindowResizedByServer); + + + window.AddAvailableOrientation(Dali::WindowOrientation::PORTRAIT); + window.AddAvailableOrientation(Dali::WindowOrientation::LANDSCAPE); + window.AddAvailableOrientation(Dali::WindowOrientation::PORTRAIT_INVERSE); + window.AddAvailableOrientation(Dali::WindowOrientation::LANDSCAPE_INVERSE); + + window.Show(); + + mTimer = Timer::New(50); + mTimer.TickSignal().Connect(this, &WindowExampleController::OnTimerTick); + } + + void Pause(Application &application) + { + DALI_LOG_RELEASE_INFO("Application is paused..***********************\n"); + } + + void Resume(Application &application) + { + DALI_LOG_RELEASE_INFO("Application is resumed..***********************\n"); + } + + void PresentedCallback( int frameId ) + { + DALI_LOG_RELEASE_INFO("PresentedCallback: FrameId %d\n",frameId); + } + + void OnDeviceOrientationChanged(DeviceStatus::Orientation::Status status) + { + DALI_LOG_RELEASE_INFO("orientation status: %d\n",status); + } + + void OnLowMemory(DeviceStatus::Memory::Status status) + { + DALI_LOG_RELEASE_INFO("low memory status: %d\n",status); + } + + bool OnTimerTick() + { + Dali::Window window = mApplication.GetWindow(); + bool ret = true; + + if (DevelWindow::IsWindowRotating(window) == true) + { + isRotating = true; + DALI_LOG_RELEASE_INFO("Window is rotating!!!!\n"); + count++; + if(count > 100) + { + DALI_LOG_RELEASE_INFO("Send AckWindowRotation in Timer\n"); + DevelWindow::SendRotationCompletedAcknowledgement(window); + count = 0; + ret = false; + } + } + else + { + DALI_LOG_RELEASE_INFO("Window is not rotating!!!!\n"); + } + return ret; + } + + void OnWindowMoved(Dali::Window winHandle, Dali::Window::WindowPosition position) + { + DALI_LOG_RELEASE_INFO("OnWindowMoved, x:%d, y:%d, width:%d\n", position.GetX(), position.GetY()); + } + + void OnWindowMovedByServer(Dali::Window winHandle, Dali::Window::WindowPosition position) + { + DALI_LOG_RELEASE_INFO("OnWindowMovedByServer, x:%d, y:%d, width:%d\n", position.GetX(), position.GetY()); + } + + void OnWindowResizedByServer(Dali::Window winHandle, Dali::Window::WindowSize size) + { + DALI_LOG_RELEASE_INFO("OnWindowResizedByServer, x:%d, y:%d, width:%d\n", size.GetWidth(), size.GetHeight()); + } + + void OnWindowOrientationChanged(Dali::Window window, Dali::WindowOrientation orientation) + { + DALI_LOG_RELEASE_INFO("OnWindowOrientationChanged, changed window orientation: %d\n", orientation); + } + + void OnWindowResized(Dali::Window winHandle, Dali::Window::WindowSize size) + { + DALI_LOG_RELEASE_INFO("Resize finish %d x heigt %d\n", size.GetWidth(), size.GetHeight()); + if(bChangedOrientation) + { + if( DevelWindow::GetCurrentOrientation(winHandle) == Dali::WindowOrientation::PORTRAIT) + { + DALI_LOG_RELEASE_INFO("DevelWindow::OnWindowResized, current orientation is Dali::WindowOrientation::PORTRAIT\n"); + PositionSize newWindowPosition(0, 0, 400, 300); + DALI_LOG_RELEASE_INFO("DevelWindow::OnWindowResized, SetPositionSize(720 * 1280)\n"); + DevelWindow::SetPositionSize(winHandle, newWindowPosition); + } + else if( DevelWindow::GetCurrentOrientation(winHandle) == Dali::WindowOrientation::LANDSCAPE) + { + DALI_LOG_RELEASE_INFO("DevelWindow::OnWindowResized, current orientation is Dali::WindowOrientation::LANDSCAPE\n"); + PositionSize newWindowPosition(0, 0, 1280, 720); + DALI_LOG_RELEASE_INFO("DevelWindow::OnWindowResized, SetPositionSize(1280 * 720)\n"); + DevelWindow::SetPositionSize(winHandle, newWindowPosition); + } + else if( DevelWindow::GetCurrentOrientation(winHandle) == Dali::WindowOrientation::PORTRAIT_INVERSE) + { + DALI_LOG_RELEASE_INFO("DevelWindow::OnWindowResized, current orientation is Dali::WindowOrientation::PORTRAIT_INVERSE\n"); + PositionSize newWindowPosition(100, 100, 720, 1280); + DALI_LOG_RELEASE_INFO("DevelWindow::OnWindowResized, SetPositionSize(100, 100, 720 * 1280)\n"); + DevelWindow::SetPositionSize(winHandle, newWindowPosition); + } + else if( DevelWindow::GetCurrentOrientation(winHandle) == Dali::WindowOrientation::LANDSCAPE_INVERSE) + { + DALI_LOG_RELEASE_INFO("DevelWindow::OnWindowResized, current orientation is Dali::WindowOrientation::LANDSCAPE_INVERSE\n"); + PositionSize newWindowPosition(100, 100, 1280, 720); + DALI_LOG_RELEASE_INFO("DevelWindow::OnWindowResized, SetPositionSize(100, 100, 1280 * 720)\n"); + DevelWindow::SetPositionSize(winHandle, newWindowPosition); + } + } + } + + bool OnTouch(Actor actor, const TouchEvent &touch) + { + if (touch.GetState(0) == PointState::DOWN) + { + const int local_x = static_cast(touch.GetLocalPosition(0).x); + const int local_y = static_cast(touch.GetLocalPosition(0).y); + const int global_x = static_cast(touch.GetScreenPosition(0).x); + const int global_y = static_cast(touch.GetScreenPosition(0).y); + + DALI_LOG_RELEASE_INFO("Main Window Touch Event : x:%d, y:%d\n", local_x, local_y); + DALI_LOG_RELEASE_INFO("global position: x:%d, y:%d\n", global_x, global_y); + + Dali::Window window = mApplication.GetWindow(); + Window::WindowSize windowSize = window.GetSize(); + + DALI_LOG_RELEASE_INFO("window size: w:%d, h:%d\n", windowSize.GetWidth(), windowSize.GetHeight()); + DevelWindow::EnableFloatingMode(window, true); + + if ((local_x < MARGIN) && (local_y < MARGIN)) // left top corner + { + DALI_LOG_RELEASE_INFO("RequestResizeToServer: TOP_LEFT\n", local_x, local_y); + DevelWindow::RequestResizeToServer(window, WindowResizeDirection::TOP_LEFT); + } + else if ((local_x > (windowSize.GetWidth() - MARGIN)) && (local_y < MARGIN)) // rigth top corner + { + DALI_LOG_RELEASE_INFO("RequestResizeToServer: TOP_RIGHT\n", local_x, local_y); + DevelWindow::RequestResizeToServer(window, WindowResizeDirection::TOP_RIGHT); + } + else if ((local_x > MARGIN) && (local_x < (windowSize.GetWidth() - MARGIN)) && (local_y < MARGIN)) + { + DALI_LOG_RELEASE_INFO("RequestResizeToServer: TOP\n", local_x, local_y); + DevelWindow::RequestResizeToServer(window, WindowResizeDirection::TOP); + } + else if ((local_x < MARGIN) && (local_y < (windowSize.GetHeight() - MARGIN)) && (local_y > MARGIN)) + { + DALI_LOG_RELEASE_INFO("RequestResizeToServer: TOP\n", local_x, local_y); + DevelWindow::RequestResizeToServer(window, WindowResizeDirection::LEFT); + } + else if ((local_x > (windowSize.GetWidth() - MARGIN)) && (local_y < (windowSize.GetHeight() - MARGIN)) && (local_y > MARGIN)) + { + DALI_LOG_RELEASE_INFO("RequestResizeToServer: LEFT\n", local_x, local_y); + DevelWindow::RequestResizeToServer(window, WindowResizeDirection::RIGHT); + } + else if ((local_x < MARGIN) && (local_y > (windowSize.GetHeight() - MARGIN))) // left bottom corner + { + DALI_LOG_RELEASE_INFO("RequestResizeToServer: RIGHT\n", local_x, local_y); + DevelWindow::RequestResizeToServer(window, WindowResizeDirection::BOTTOM_LEFT); + } + else if ((local_x > (windowSize.GetWidth() - MARGIN)) && (local_y > (windowSize.GetHeight() - MARGIN))) // right bottom corner + { + DALI_LOG_RELEASE_INFO("RequestResizeToServer: BOTTOM_RIGHT\n", local_x, local_y); + DevelWindow::RequestResizeToServer(window, WindowResizeDirection::BOTTOM_RIGHT); + } + else + { + DALI_LOG_RELEASE_INFO("RequestMoveToServer\n", local_x, local_y); + DevelWindow::RequestMoveToServer(window); + } + } + return true; + } + + ////////////////////////////////////////////////////////////////////////// + // Test Sub Window Resize + + void CreateSubWindow() + { + mSecondWindow = Window::New(PositionSize(0, 0, 600, 400), "", false); + mSecondWindow.SetTransparency(true); + mSecondWindow.SetBackgroundColor(Vector4(1.0, 0.3, 0.3, 0.5)); + + mTextLabel2 = TextLabel::New( "Second window" ); + mTextLabel2.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + mTextLabel2.SetProperty( Actor::Property::NAME, "Second Window"); + mSecondWindow.Add( mTextLabel2 ); + + mSecondWindow.GetRootLayer().TouchedSignal().Connect(this, &WindowExampleController::OnSubWindowTouch); + mSecondWindow.ResizeSignal().Connect(this, &WindowExampleController::OnSubWindowResized); + DevelWindow::MovedSignal(mSecondWindow).Connect(this, &WindowExampleController::OnSubWindowMoved); + DevelWindow::MoveCompletedSignal(mSecondWindow).Connect(this, &WindowExampleController::OnSubWindowMovedByServer); + DevelWindow::ResizeCompletedSignal(mSecondWindow).Connect(this, &WindowExampleController::OnSubWindowResizedByServer); + + mSecondWindow.AddAvailableOrientation( Dali::WindowOrientation::PORTRAIT ); + mSecondWindow.AddAvailableOrientation( Dali::WindowOrientation::LANDSCAPE ); + mSecondWindow.AddAvailableOrientation( Dali::WindowOrientation::PORTRAIT_INVERSE ); + mSecondWindow.AddAvailableOrientation( Dali::WindowOrientation::LANDSCAPE_INVERSE ); + mSecondWindow.Show(); + + Rect setInputRegion(0, 0, 1920, 1080); + //mSecondWindow.SetInputRegion(setInputRegion); + DevelWindow::ExcludeInputRegion(mSecondWindow, setInputRegion); + + Dali::Window window = mApplication.GetWindow(); + DevelWindow::SetParent(mSecondWindow, window); + } + + void OnSubWindowMoved(Dali::Window winHandle, Dali::Window::WindowPosition position) + { + DALI_LOG_RELEASE_INFO("OnWindowMoved, x:%d, y:%d, width:%d\n", position.GetX(), position.GetY()); + } + + void OnSubWindowResized(Dali::Window winHandle, Dali::Window::WindowSize size) + { + DALI_LOG_RELEASE_INFO("OnSubWindowResized %d x heigt %d\n", size.GetWidth(), size.GetHeight()); + } + + void OnSubWindowMovedByServer(Dali::Window winHandle, Dali::Window::WindowPosition position) + { + DALI_LOG_RELEASE_INFO("OnWindowMovedByServer, x:%d, y:%d, width:%d\n", position.GetX(), position.GetY()); + } + + void OnSubWindowResizedByServer(Dali::Window winHandle, Dali::Window::WindowSize size) + { + DALI_LOG_RELEASE_INFO("OnWindowResizedByServer, x:%d, y:%d, width:%d\n", size.GetWidth(), size.GetHeight()); + } + + bool OnSubWindowTouch(Actor actor, const TouchEvent &touch) + { + if (touch.GetState(0) == PointState::DOWN) + { + const int local_x = static_cast(touch.GetLocalPosition(0).x); + const int local_y = static_cast(touch.GetLocalPosition(0).y); + const int global_x = static_cast(touch.GetScreenPosition(0).x); + const int global_y = static_cast(touch.GetScreenPosition(0).y); + + DALI_LOG_RELEASE_INFO("SubWindow Touch Event : x:%d, y:%d\n", local_x, local_y); + DALI_LOG_RELEASE_INFO("global position: x:%d, y:%d\n", global_x, global_y); + + Dali::Window window = mSecondWindow; + Window::WindowSize windowSize = window.GetSize(); + + DALI_LOG_RELEASE_INFO("window size: w:%d, h:%d\n", windowSize.GetWidth(), windowSize.GetHeight()); + DevelWindow::EnableFloatingMode(window, true); + + if ((local_x < MARGIN) && (local_y < MARGIN)) // left top corner + { + DALI_LOG_RELEASE_INFO("RequestResizeToServer: TOP_LEFT\n", local_x, local_y); + DevelWindow::RequestResizeToServer(window, WindowResizeDirection::TOP_LEFT); + } + else if ((local_x > (windowSize.GetWidth() - MARGIN)) && (local_y < MARGIN)) // rigth top corner + { + DALI_LOG_RELEASE_INFO("RequestResizeToServer: TOP_RIGHT\n", local_x, local_y); + DevelWindow::RequestResizeToServer(window, WindowResizeDirection::TOP_RIGHT); + } + else if ((local_x > MARGIN) && (local_x < (windowSize.GetWidth() - MARGIN)) && (local_y < MARGIN)) + { + DALI_LOG_RELEASE_INFO("RequestResizeToServer: TOP\n", local_x, local_y); + DevelWindow::RequestResizeToServer(window, WindowResizeDirection::TOP); + } + else if ((local_x < MARGIN) && (local_y < (windowSize.GetHeight() - MARGIN)) && (local_y > MARGIN)) + { + DALI_LOG_RELEASE_INFO("RequestResizeToServer: TOP\n", local_x, local_y); + DevelWindow::RequestResizeToServer(window, WindowResizeDirection::LEFT); + } + else if ((local_x > (windowSize.GetWidth() - MARGIN)) && (local_y < (windowSize.GetHeight() - MARGIN)) && (local_y > MARGIN)) + { + DALI_LOG_RELEASE_INFO("RequestResizeToServer: LEFT\n", local_x, local_y); + DevelWindow::RequestResizeToServer(window, WindowResizeDirection::RIGHT); + } + else if ((local_x < MARGIN) && (local_y > (windowSize.GetHeight() - MARGIN))) // left bottom corner + { + DALI_LOG_RELEASE_INFO("RequestResizeToServer: RIGHT\n", local_x, local_y); + DevelWindow::RequestResizeToServer(window, WindowResizeDirection::BOTTOM_LEFT); + } + else if ((local_x > (windowSize.GetWidth() - MARGIN)) && (local_y > (windowSize.GetHeight() - MARGIN))) // right bottom corner + { + DALI_LOG_RELEASE_INFO("RequestResizeToServer: BOTTOM_RIGHT\n", local_x, local_y); + DevelWindow::RequestResizeToServer(window, WindowResizeDirection::BOTTOM_RIGHT); + } + else + { + DALI_LOG_RELEASE_INFO("RequestMoveToServer\n", local_x, local_y); + DevelWindow::RequestMoveToServer(window); + } + } + return true; + } + + void OnKeyEvent(const KeyEvent &event) + { + Dali::Window window = mApplication.GetWindow(); + if (event.GetState() == KeyEvent::DOWN) + { + if (IsKey(event, Dali::DALI_KEY_ESCAPE) || IsKey(event, Dali::DALI_KEY_BACK)) + { + mApplication.Quit(); + } + else if (event.GetKeyName() == "1") + { + DALI_LOG_RELEASE_INFO("Move/Resize Test ::: window move and resize (10, 10) (600 x 400)\n"); + PositionSize windowPosition(10, 10, 600, 400); + DevelWindow::SetPositionSize(window, windowPosition); + } + else if (event.GetKeyName() == "2") + { + DALI_LOG_RELEASE_INFO("Present Callback Test\n"); + + Dali::Window window = mApplication.GetWindow(); + if(bColor == 0) + { + window.SetBackgroundColor(Color::WHITE); + bColor = 1; + } + else + { + window.SetBackgroundColor(Color::BLACK); + bColor = 0; + } + + DevelWindow::AddFramePresentedCallback(window, std::unique_ptr(MakeCallback(this, &WindowExampleController::PresentedCallback)), count); + } + else if (event.GetKeyName() == "3") + { + DALI_LOG_RELEASE_INFO("Send AckWindowRotation test\n"); + if(manual_rotation_flag == true) + { + if(isRotating) + { + DALI_LOG_RELEASE_INFO("Send AckWindowRotation in Key Event Callback\n"); + DevelWindow::SendRotationCompletedAcknowledgement(window); + manual_rotation_flag = false; + isRotating = false; + } + else + { + DALI_LOG_RELEASE_INFO("is not Rotating\n"); + } + } + else if (event.GetKeyName() == "4") + { + DALI_LOG_RELEASE_INFO("Set Manual Window Rotation Test\n"); + if(manual_rotation_flag) + { + mTimer.Start(); + } + else + { + mTimer.Stop(); + } + DALI_LOG_RELEASE_INFO("call SetNeedsRotationCompletedAcknowledgement with flag %d\n", manual_rotation_flag); + DevelWindow::SetNeedsRotationCompletedAcknowledgement(window, manual_rotation_flag); + } + else + { + DALI_LOG_RELEASE_INFO("set flag %d\n", manual_rotation_flag); + manual_rotation_flag = true; + } + } + else if (event.GetKeyName() == "5") + { + DALI_LOG_RELEASE_INFO("Window Rotation and Resize test together\n"); + if(!bChangedOrientation) + { + DALI_LOG_RELEASE_INFO("Both Window Rotation and Resize Test\n"); + bChangedOrientation = true; + } + else + { + DALI_LOG_RELEASE_INFO("Only Window Rotation Test\n"); + bChangedOrientation = false; + } + } + else if (event.GetKeyName() == "6") + { + DALI_LOG_RELEASE_INFO("Maximize Test\n"); + if(DevelWindow::IsMaximized(window)) + { + DevelWindow::Maximize(window, false); + } + else + { + DevelWindow::Maximize(window, true); + } + } + else if (event.GetKeyName() == "7") + { + DALI_LOG_RELEASE_INFO("Minimize Test\n"); + if(DevelWindow::IsMinimized(window)) + { + DevelWindow::Minimize(window, false); + } + else + { + DevelWindow::Minimize(window, true); + } + } + + else if (event.GetKeyName() == "8") + { + DALI_LOG_RELEASE_INFO("Set/Get Full Screen window Test\n"); + if(DevelWindow::GetFullScreen(window)) + { + DevelWindow::SetFullScreen(window, false); + } + else + { + DevelWindow::SetFullScreen(window, true); + } + + } + else if (event.GetKeyName() == "9") + { + DALI_LOG_RELEASE_INFO("Sub window Test\n"); + CreateSubWindow(); + } + else if(event.GetKeyName() == "0") + { + // scissor test for Window Rotation + // Toggle the clipping mode on mClippingControl if any other actor by pressing any key + DALI_LOG_RELEASE_INFO("Scissor Test\n"); + ClippingMode::Type currentMode; + mClipControl.GetProperty( Actor::Property::CLIPPING_MODE ).Get( currentMode ); + mClipControl.SetProperty( Actor::Property::CLIPPING_MODE, + ( ( currentMode == ClippingMode::DISABLED ) ? ClippingMode::CLIP_TO_BOUNDING_BOX : ClippingMode::DISABLED ) ); + } + + } + } + + void OnAuxMessageEvent(const std::string &key, const std::string &value, const Property::Array &options) + { + if (!key.empty()) + { + std::cout << "Key: " << key << std::endl; + if (!value.empty()) + { + std::cout << "Value : " << value << std::endl; + } + + if (!options.Empty()) + { + uint32_t options_count = static_cast(options.Count()); + for (uint32_t i(0); i != options_count; ++i) + { + std::cout << "Option : " << options.GetElementAt(i) << std::endl; + } + } + } + } + +private: + Application &mApplication; + Control mClipControl; + bool manual_rotation_flag; + int rotation_count; + int rot; + Timer mTimer; + TextLabel mTextLabel2; + bool enableTimer; + bool bChangedOrientation; + bool isRotating; + bool bColor; + + Dali::Window mSecondWindow; + Dali::WindowOrientation currentOrientation; + + CallbackBase* mPresentCallback{}; +}; + +int DALI_EXPORT_API main(int argc, char **argv) +{ + Application application = Application::New(&argc, &argv); + WindowExampleController test(application); + application.MainLoop(); + return 0; +} diff --git a/resources/po/en_GB.po b/resources/po/en_GB.po index 89b8938..ad38e07 100755 --- a/resources/po/en_GB.po +++ b/resources/po/en_GB.po @@ -331,6 +331,9 @@ msgstr "Waves" msgid "DALI_DEMO_STR_TITLE_WEB_VIEW" msgstr "Web View" +msgid "DALI_DEMO_STR_TITLE_WINDOW" +msgstr "Window" + msgid "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES" msgstr "Animated Vector Images" diff --git a/resources/po/en_US.po b/resources/po/en_US.po index 6ffb4b4..7c96551 100755 --- a/resources/po/en_US.po +++ b/resources/po/en_US.po @@ -337,6 +337,9 @@ msgstr "PBR" msgid "DALI_DEMO_STR_TITLE_WEB_VIEW" msgstr "Web View" +msgid "DALI_DEMO_STR_TITLE_WINDOW" +msgstr "Window" + msgid "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES" msgstr "Animated Vector Images" diff --git a/shared/dali-demo-strings.h b/shared/dali-demo-strings.h index 3e8f37d..90e16f1 100644 --- a/shared/dali-demo-strings.h +++ b/shared/dali-demo-strings.h @@ -148,6 +148,7 @@ extern "C" #define DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS") #define DALI_DEMO_STR_TITLE_WAVES dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_WAVES") #define DALI_DEMO_STR_TITLE_WEB_VIEW dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_WEB_VIEW") +#define DALI_DEMO_STR_TITLE_WINDOW dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_WINDOW") #define DALI_DEMO_STR_TITLE_TEXT_RENDERER dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_RENDERER") #define DALI_DEMO_STR_TITLE_TEXT_VISUAL dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_VISUAL") #define DALI_DEMO_STR_TITLE_TEXT_LABEL_BITMAP_FONT dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_LABEL_BITMAP_FONT") @@ -269,6 +270,7 @@ extern "C" #define DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS "Visual Transitions" #define DALI_DEMO_STR_TITLE_WAVES "Waves" #define DALI_DEMO_STR_TITLE_WEB_VIEW "Web View" +#define DALI_DEMO_STR_TITLE_WINDOW "Window" #define DALI_DEMO_STR_TITLE_TEXT_RENDERER "Text Renderer" #define DALI_DEMO_STR_TITLE_TEXT_VISUAL "Text Visual" #define DALI_DEMO_STR_TITLE_TEXT_LABEL_BITMAP_FONT "Text Bitmap Font"