/*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 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.
auto defaultScene = application.GetScene();
DALI_TEST_CHECK(defaultScene);
+ // consume the resize flag by first rendering
+ defaultScene.IsSurfaceRectChanged();
+
// Ensure stage size matches the scene size
auto stage = Stage::GetCurrent();
DALI_TEST_EQUALS(stage.GetSize(), defaultScene.GetSize(), TEST_LOCATION);
+ bool surfaceResized;
+ // check resized flag before surface is resized.
+ surfaceResized = defaultScene.IsSurfaceRectChanged();
+ DALI_TEST_EQUALS(surfaceResized, false, TEST_LOCATION);
+
// Resize the scene
Vector2 newSize(1000.0f, 2000.0f);
std::string viewportParams("0, 0, 1000, 2000"); // to match newSize
application.SendNotification();
application.Render(0);
+ surfaceResized = defaultScene.IsSurfaceRectChanged();
+ DALI_TEST_EQUALS(surfaceResized, true, TEST_LOCATION);
+
// Check that the viewport is handled properly
DALI_TEST_CHECK(callStack.FindMethodAndGetParameters("Viewport", viewportParams));
END_TEST;
}
-#define CLIPPING_RECT_X (16)
-#define CLIPPING_RECT_Y (768)
-#define CLIPPING_RECT_WIDTH (32)
-#define CLIPPING_RECT_HEIGHT (32)
+#define CLIPPING_RECT_X (16)
+#define CLIPPING_RECT_Y (768)
+#define CLIPPING_RECT_WIDTH (32)
+#define CLIPPING_RECT_HEIGHT (32)
int UtcDaliSceneSurfaceRotatedWithAngle0(void)
{
damagedRects.clear();
application.GetScene().SurfaceRotated(TestApplication::DEFAULT_SURFACE_WIDTH,
- TestApplication::DEFAULT_SURFACE_HEIGHT, 0);
+ TestApplication::DEFAULT_SURFACE_HEIGHT,
+ 0);
application.SendNotification();
application.PreRenderWithPartialUpdate(TestApplication::RENDER_FRAME_INTERVAL, nullptr, damagedRects);
DALI_TEST_EQUALS(damagedRects.size(), 1, TEST_LOCATION);
damagedRects.clear();
application.GetScene().SurfaceRotated(TestApplication::DEFAULT_SURFACE_WIDTH,
- TestApplication::DEFAULT_SURFACE_HEIGHT, 90);
+ TestApplication::DEFAULT_SURFACE_HEIGHT,
+ 90);
application.SendNotification();
application.PreRenderWithPartialUpdate(TestApplication::RENDER_FRAME_INTERVAL, nullptr, damagedRects);
DALI_TEST_EQUALS(damagedRects.size(), 1, TEST_LOCATION);
// It is recalculation for glScissor.
// Because surface is rotated and glScissor is called with recalcurated value.
- clippingRect.x = TestApplication::DEFAULT_SURFACE_HEIGHT - (CLIPPING_RECT_Y + CLIPPING_RECT_HEIGHT);
- clippingRect.y = CLIPPING_RECT_X;
- clippingRect.width = CLIPPING_RECT_HEIGHT;
+ clippingRect.x = TestApplication::DEFAULT_SURFACE_HEIGHT - (CLIPPING_RECT_Y + CLIPPING_RECT_HEIGHT);
+ clippingRect.y = CLIPPING_RECT_X;
+ clippingRect.width = CLIPPING_RECT_HEIGHT;
clippingRect.height = CLIPPING_RECT_WIDTH;
DALI_TEST_EQUALS(clippingRect.x, glScissorParams.x, TEST_LOCATION);
damagedRects.clear();
application.GetScene().SurfaceRotated(TestApplication::DEFAULT_SURFACE_WIDTH,
- TestApplication::DEFAULT_SURFACE_HEIGHT, 180);
+ TestApplication::DEFAULT_SURFACE_HEIGHT,
+ 180);
application.SendNotification();
application.PreRenderWithPartialUpdate(TestApplication::RENDER_FRAME_INTERVAL, nullptr, damagedRects);
DALI_TEST_EQUALS(damagedRects.size(), 1, TEST_LOCATION);
// It is recalculation for glScissor.
// Because surface is rotated and glScissor is called with recalcurated value.
- clippingRect.x = TestApplication::DEFAULT_SURFACE_WIDTH - (CLIPPING_RECT_X + CLIPPING_RECT_WIDTH);
- clippingRect.y = TestApplication::DEFAULT_SURFACE_HEIGHT - (CLIPPING_RECT_Y +CLIPPING_RECT_HEIGHT);
- clippingRect.width = CLIPPING_RECT_WIDTH;
+ clippingRect.x = TestApplication::DEFAULT_SURFACE_WIDTH - (CLIPPING_RECT_X + CLIPPING_RECT_WIDTH);
+ clippingRect.y = TestApplication::DEFAULT_SURFACE_HEIGHT - (CLIPPING_RECT_Y + CLIPPING_RECT_HEIGHT);
+ clippingRect.width = CLIPPING_RECT_WIDTH;
clippingRect.height = CLIPPING_RECT_HEIGHT;
DALI_TEST_EQUALS(clippingRect.x, glScissorParams.x, TEST_LOCATION);
damagedRects.clear();
application.GetScene().SurfaceRotated(TestApplication::DEFAULT_SURFACE_WIDTH,
- TestApplication::DEFAULT_SURFACE_HEIGHT, 270);
+ TestApplication::DEFAULT_SURFACE_HEIGHT,
+ 270);
application.SendNotification();
application.PreRenderWithPartialUpdate(TestApplication::RENDER_FRAME_INTERVAL, nullptr, damagedRects);
DALI_TEST_EQUALS(damagedRects.size(), 1, TEST_LOCATION);
// It is recalculation for glScissor.
// Because surface is rotated and glScissor is called with recalcurated value.
- clippingRect.x = CLIPPING_RECT_Y;
- clippingRect.y = TestApplication::DEFAULT_SURFACE_WIDTH - (CLIPPING_RECT_X + CLIPPING_RECT_WIDTH);
- clippingRect.width = CLIPPING_RECT_HEIGHT;
+ clippingRect.x = CLIPPING_RECT_Y;
+ clippingRect.y = TestApplication::DEFAULT_SURFACE_WIDTH - (CLIPPING_RECT_X + CLIPPING_RECT_WIDTH);
+ clippingRect.width = CLIPPING_RECT_HEIGHT;
clippingRect.height = CLIPPING_RECT_WIDTH;
DALI_TEST_EQUALS(clippingRect.x, glScissorParams.x, TEST_LOCATION);
application.Render();
// Check scissor test was enabled.
- DALI_TEST_CHECK(enabledDisableTrace.FindMethodAndParams("Enable", "3089")); // 3089 = 0xC11 (GL_SCISSOR_TEST)
+ std::ostringstream scissor;
+ scissor << std::hex << GL_SCISSOR_TEST;
+ DALI_TEST_CHECK(enabledDisableTrace.FindMethodAndParams("Enable", scissor.str()));
// Check the scissor was set, and the coordinates are correct.
DALI_TEST_CHECK(scissorTrace.FindMethodAndParams("Scissor", "0, 700, 100, 100"));