X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Frendering-cube%2Frendering-cube.cpp;h=756e8415169940fee8b06d94adac95359c23f41e;hb=1b19fd140ff139b5854a1a62447faf31b175d8f6;hp=a42e83245b0fa1dce2c6ede38bf0279869a87854;hpb=4b689cfe8d1517e8efcf76c482a7858b931a7732;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/rendering-cube/rendering-cube.cpp b/examples/rendering-cube/rendering-cube.cpp index a42e832..756e841 100644 --- a/examples/rendering-cube/rendering-cube.cpp +++ b/examples/rendering-cube/rendering-cube.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 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. @@ -15,14 +15,15 @@ * */ -#include #include +#include using namespace Dali; using namespace Toolkit; namespace { +// clang-format off /* * Vertex shader @@ -55,20 +56,20 @@ void main()\n gl_FragColor = vColor;\n }\n ); +// clang-format on -} +} // namespace // This example shows how to create a cube with colors on each side // class DrawCubeController : public ConnectionTracker { public: - - DrawCubeController( Application& application ) - : mApplication( application ) + DrawCubeController(Application& application) + : mApplication(application) { // Connect to the Application's Init signal - mApplication.InitSignal().Connect( this, &DrawCubeController::Create ); + mApplication.InitSignal().Connect(this, &DrawCubeController::Create); } ~DrawCubeController() @@ -77,11 +78,11 @@ public: } // The Init signal is received once (only) during the Application lifetime - void Create( Application& application ) + void Create(Application& application) { - // Get a handle to the stage - Stage stage = Stage::GetCurrent(); - stage.SetBackgroundColor( Color::WHITE ); + // Get a handle to the window + Window window = application.GetWindow(); + window.SetBackgroundColor(Color::WHITE); // Step 1. Create shader CreateCubeShader(); @@ -98,11 +99,14 @@ public: // Step 5. Play animation to rotate the cube PlayAnimation(); - // Respond to a click anywhere on the stage - stage.GetRootLayer().TouchSignal().Connect( this, &DrawCubeController::OnTouch ); + // Respond to a click anywhere on the window + window.GetRootLayer().TouchedSignal().Connect(this, &DrawCubeController::OnTouch); + + // Respond to key events + window.KeyEventSignal().Connect(this, &DrawCubeController::OnKeyEvent); } - bool OnTouch( Actor actor, const TouchData& touch ) + bool OnTouch(Actor actor, const TouchEvent& touch) { // quit the application mApplication.Quit(); @@ -110,6 +114,23 @@ public: } /** + * @brief Called when any key event is received + * + * Will use this to quit the application if Back or the Escape key is received + * @param[in] event The key event information + */ + void OnKeyEvent(const KeyEvent& event) + { + if(event.GetState() == KeyEvent::DOWN) + { + if(IsKey(event, Dali::DALI_KEY_ESCAPE) || IsKey(event, Dali::DALI_KEY_BACK)) + { + mApplication.Quit(); + } + } + } + + /** * This function creates a cube geometry including texture coordinates. * Also it demonstrates using the indexed draw feature by setting an index array. */ @@ -121,78 +142,65 @@ public: Vector3 aColor; }; - const Vector3 COLOR0( 1.0f, 1.0f, 0.0f ); - const Vector3 COLOR1( 0.0f, 1.0f, 1.0f ); - const Vector3 COLOR2( 1.0f, 0.0f, 1.0f ); - const Vector3 COLOR3( 0.0f, 1.0f, 0.0f ); - const Vector3 COLOR4( 0.0f, 0.0f, 1.0f ); - const Vector3 COLOR5( 1.0f, 0.0f, 0.0f ); + const Vector3 COLOR0(1.0f, 1.0f, 0.0f); + const Vector3 COLOR1(0.0f, 1.0f, 1.0f); + const Vector3 COLOR2(1.0f, 0.0f, 1.0f); + const Vector3 COLOR3(0.0f, 1.0f, 0.0f); + const Vector3 COLOR4(0.0f, 0.0f, 1.0f); + const Vector3 COLOR5(1.0f, 0.0f, 0.0f); Vertex vertices[] = { - { Vector3( 1.0f,-1.0f,-1.0f ), COLOR5 }, - { Vector3( -1.0f, 1.0f,-1.0f ), COLOR5 }, - { Vector3( 1.0f, 1.0f,-1.0f ), COLOR5 }, - { Vector3( -1.0f, 1.0f, 1.0f ), COLOR3 }, - { Vector3( 1.0f,-1.0f, 1.0f ), COLOR3 }, - { Vector3( 1.0f, 1.0f, 1.0f ), COLOR3 }, - { Vector3( 1.0f, 1.0f, 1.0f ), COLOR4 }, - { Vector3( 1.0f,-1.0f,-1.0f ), COLOR4 }, - { Vector3( 1.0f, 1.0f,-1.0f ), COLOR4 }, - { Vector3( 1.0f,-1.0f, 1.0f ), COLOR1 }, - { Vector3( -1.0f,-1.0f,-1.0f ), COLOR1 }, - { Vector3( 1.0f,-1.0f,-1.0f ), COLOR1 }, - { Vector3( -1.0f,-1.0f,-1.0f ), COLOR0 }, - { Vector3( -1.0f, 1.0f, 1.0f ), COLOR0 }, - { Vector3( -1.0f, 1.0f,-1.0f ), COLOR0 }, - { Vector3( 1.0f, 1.0f,-1.0f ), COLOR2 }, - { Vector3( -1.0f, 1.0f, 1.0f ), COLOR2 }, - { Vector3( 1.0f, 1.0f, 1.0f ), COLOR2 }, - { Vector3( 1.0f,-1.0f,-1.0f ), COLOR5 }, - { Vector3( -1.0f,-1.0f,-1.0f ), COLOR5 }, - { Vector3( -1.0f, 1.0f,-1.0f ), COLOR5 }, - { Vector3( -1.0f, 1.0f, 1.0f ), COLOR3 }, - { Vector3( -1.0f,-1.0f, 1.0f ), COLOR3 }, - { Vector3( 1.0f,-1.0f, 1.0f ), COLOR3 }, - { Vector3( 1.0f, 1.0f, 1.0f ), COLOR4 }, - { Vector3( 1.0f,-1.0f, 1.0f ), COLOR4 }, - { Vector3( 1.0f,-1.0f,-1.0f ), COLOR4 }, - { Vector3( 1.0f,-1.0f, 1.0f ), COLOR1 }, - { Vector3( -1.0f,-1.0f, 1.0f ), COLOR1 }, - { Vector3( -1.0f,-1.0f,-1.0f ), COLOR1 }, - { Vector3( -1.0f,-1.0f,-1.0f ), COLOR0 }, - { Vector3( -1.0f,-1.0f, 1.0f ), COLOR0 }, - { Vector3( -1.0f, 1.0f, 1.0f ), COLOR0 }, - { Vector3( 1.0f, 1.0f,-1.0f ), COLOR2 }, - { Vector3( -1.0f, 1.0f,-1.0f ), COLOR2 }, - { Vector3( -1.0f, 1.0f, 1.0f ), COLOR2 }, + {Vector3(1.0f, -1.0f, -1.0f), COLOR5}, + {Vector3(-1.0f, 1.0f, -1.0f), COLOR5}, + {Vector3(1.0f, 1.0f, -1.0f), COLOR5}, + {Vector3(-1.0f, 1.0f, 1.0f), COLOR3}, + {Vector3(1.0f, -1.0f, 1.0f), COLOR3}, + {Vector3(1.0f, 1.0f, 1.0f), COLOR3}, + {Vector3(1.0f, 1.0f, 1.0f), COLOR4}, + {Vector3(1.0f, -1.0f, -1.0f), COLOR4}, + {Vector3(1.0f, 1.0f, -1.0f), COLOR4}, + {Vector3(1.0f, -1.0f, 1.0f), COLOR1}, + {Vector3(-1.0f, -1.0f, -1.0f), COLOR1}, + {Vector3(1.0f, -1.0f, -1.0f), COLOR1}, + {Vector3(-1.0f, -1.0f, -1.0f), COLOR0}, + {Vector3(-1.0f, 1.0f, 1.0f), COLOR0}, + {Vector3(-1.0f, 1.0f, -1.0f), COLOR0}, + {Vector3(1.0f, 1.0f, -1.0f), COLOR2}, + {Vector3(-1.0f, 1.0f, 1.0f), COLOR2}, + {Vector3(1.0f, 1.0f, 1.0f), COLOR2}, + {Vector3(1.0f, -1.0f, -1.0f), COLOR5}, + {Vector3(-1.0f, -1.0f, -1.0f), COLOR5}, + {Vector3(-1.0f, 1.0f, -1.0f), COLOR5}, + {Vector3(-1.0f, 1.0f, 1.0f), COLOR3}, + {Vector3(-1.0f, -1.0f, 1.0f), COLOR3}, + {Vector3(1.0f, -1.0f, 1.0f), COLOR3}, + {Vector3(1.0f, 1.0f, 1.0f), COLOR4}, + {Vector3(1.0f, -1.0f, 1.0f), COLOR4}, + {Vector3(1.0f, -1.0f, -1.0f), COLOR4}, + {Vector3(1.0f, -1.0f, 1.0f), COLOR1}, + {Vector3(-1.0f, -1.0f, 1.0f), COLOR1}, + {Vector3(-1.0f, -1.0f, -1.0f), COLOR1}, + {Vector3(-1.0f, -1.0f, -1.0f), COLOR0}, + {Vector3(-1.0f, -1.0f, 1.0f), COLOR0}, + {Vector3(-1.0f, 1.0f, 1.0f), COLOR0}, + {Vector3(1.0f, 1.0f, -1.0f), COLOR2}, + {Vector3(-1.0f, 1.0f, -1.0f), COLOR2}, + {Vector3(-1.0f, 1.0f, 1.0f), COLOR2}, }; - PropertyBuffer vertexBuffer = PropertyBuffer::New( Property::Map() - .Add( "aPosition", Property::VECTOR3 ) - .Add( "aColor", Property::VECTOR3 ) ); - vertexBuffer.SetData( vertices, sizeof(vertices) / sizeof(Vertex) ); + VertexBuffer vertexBuffer = VertexBuffer::New(Property::Map() + .Add("aPosition", Property::VECTOR3) + .Add("aColor", Property::VECTOR3)); + vertexBuffer.SetData(vertices, sizeof(vertices) / sizeof(Vertex)); // create indices const unsigned short INDEX_CUBE[] = { - 2, 1, 0, - 5, 4, 3, - 8, 7, 6, - 11, 10, 9, - 14, 13, 12, - 17, 16, 15, - 20, 19, 18, - 23, 22, 21, - 26, 25, 24, - 29, 28, 27, - 32, 31, 30, - 35, 34, 33 - }; + 2, 1, 0, 5, 4, 3, 8, 7, 6, 11, 10, 9, 14, 13, 12, 17, 16, 15, 20, 19, 18, 23, 22, 21, 26, 25, 24, 29, 28, 27, 32, 31, 30, 35, 34, 33}; mGeometry = Geometry::New(); - mGeometry.AddVertexBuffer( vertexBuffer ); - mGeometry.SetIndexBuffer( INDEX_CUBE, - sizeof(INDEX_CUBE)/sizeof(INDEX_CUBE[0]) - ); - mGeometry.SetType( Geometry::TRIANGLES ); + mGeometry.AddVertexBuffer(vertexBuffer); + mGeometry.SetIndexBuffer(INDEX_CUBE, + sizeof(INDEX_CUBE) / sizeof(INDEX_CUBE[0])); + mGeometry.SetType(Geometry::TRIANGLES); } /** @@ -203,7 +211,7 @@ public: */ void CreateCubeShader() { - mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER ); + mShader = Shader::New(VERTEX_SHADER, FRAGMENT_SHADER); } /** @@ -211,11 +219,11 @@ public: */ void CreateRenderer() { - mRenderer = Renderer::New( mGeometry, mShader ); + mRenderer = Renderer::New(mGeometry, mShader); // Face culling is enabled to hide the backwards facing sides of the cube // This is sufficient to render a single object; for more complex scenes depth-testing might be required - mRenderer.SetProperty( Renderer::Property::FACE_CULLING_MODE, FaceCullingMode::BACK ); + mRenderer.SetProperty(Renderer::Property::FACE_CULLING_MODE, FaceCullingMode::BACK); } /** @@ -223,16 +231,16 @@ public: */ void CreateActor() { - Stage stage = Stage::GetCurrent(); - - float quarterStageWidth = stage.GetSize().x * 0.25f; - mActor = Actor::New(); - mActor.SetAnchorPoint( AnchorPoint::CENTER ); - mActor.SetParentOrigin( ParentOrigin::CENTER ); - mActor.SetPosition( Vector3( 0.0f, 0.0f, 0.0f ) ); - mActor.SetSize( Vector3( quarterStageWidth, quarterStageWidth, quarterStageWidth ) ); - mActor.AddRenderer( mRenderer ); - stage.Add( mActor ); + Window window = mApplication.GetWindow(); + + float quarterWindowWidth = window.GetSize().GetWidth() * 0.25f; + mActor = Actor::New(); + mActor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); + mActor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + mActor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); + mActor.SetProperty(Actor::Property::SIZE, Vector3(quarterWindowWidth, quarterWindowWidth, quarterWindowWidth)); + mActor.AddRenderer(mRenderer); + window.Add(mActor); } /** @@ -240,38 +248,28 @@ public: */ void PlayAnimation() { - mAnimation = Animation::New( 5.0f ); - mAnimation.SetLooping( true ); - mAnimation.AnimateBy( Property( mActor, Actor::Property::ORIENTATION ), Quaternion( Radian( Degree( 360 )), Vector3::ZAXIS ) ); - mAnimation.AnimateBy( Property( mActor, Actor::Property::ORIENTATION ), Quaternion( Radian( Degree( 360 )), Vector3::YAXIS ) ); - mAnimation.AnimateBy( Property( mActor, Actor::Property::ORIENTATION ), Quaternion( Radian( Degree( 360 )), Vector3::XAXIS ) ); + mAnimation = Animation::New(5.0f); + mAnimation.SetLooping(true); + mAnimation.AnimateBy(Property(mActor, Actor::Property::ORIENTATION), Quaternion(Radian(Degree(360)), Vector3::ZAXIS)); + mAnimation.AnimateBy(Property(mActor, Actor::Property::ORIENTATION), Quaternion(Radian(Degree(360)), Vector3::YAXIS)); + mAnimation.AnimateBy(Property(mActor, Actor::Property::ORIENTATION), Quaternion(Radian(Degree(360)), Vector3::XAXIS)); mAnimation.Play(); } private: - Application& mApplication; + Application& mApplication; - Renderer mRenderer; - Shader mShader; - Geometry mGeometry; - Actor mActor; + Renderer mRenderer; + Shader mShader; + Geometry mGeometry; + Actor mActor; Animation mAnimation; }; -void RunTest( Application& application ) +int DALI_EXPORT_API main(int argc, char** argv) { - DrawCubeController test( application ); - + Application application = Application::New(&argc, &argv); + DrawCubeController test(application); application.MainLoop(); -} - -// Entry point for Linux & Tizen applications -// -int DALI_EXPORT_API main( int argc, char **argv ) -{ - Application application = Application::New( &argc, &argv ); - - RunTest( application ); - return 0; }