X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fnew-window%2Fnew-window-example.cpp;h=56b74f38e6853904d59329db31386c206c4c4fae;hb=8af5f821087b108c86c7ddedda62aa2b49e5bd6e;hp=f494b9b100c722a74679b527938f114e2de4dfcf;hpb=0ba76b77106d97a946c0ec83b16cbf57394bfffc;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/new-window/new-window-example.cpp b/examples/new-window/new-window-example.cpp index f494b9b..56b74f3 100644 --- a/examples/new-window/new-window-example.cpp +++ b/examples/new-window/new-window-example.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 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,15 +15,18 @@ */ // EXTERNAL INCLUDES -#include +#include +#include #include #include +#include #include #include // INTERNAL INCLUDES #include "shared/view.h" +#include "shared/utility.h" using namespace Dali; using namespace Dali::Toolkit; @@ -32,13 +35,13 @@ class NewWindowController; namespace { -const char * const BACKGROUND_IMAGE( DALI_IMAGE_DIR "background-2.jpg" ); -const char * const TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" ); -const char * const LOSE_CONTEXT_IMAGE( DALI_IMAGE_DIR "icon-cluster-wobble.png" ); -const char * const LOSE_CONTEXT_IMAGE_SELECTED( DALI_IMAGE_DIR "icon-cluster-wobble-selected.png" ); -const char * const BASE_IMAGE( DALI_IMAGE_DIR "gallery-large-14.jpg" ); -const char * const EFFECT_IMAGE( DALI_IMAGE_DIR "gallery-large-18.jpg" ); -const char * const LOGO_IMAGE(DALI_IMAGE_DIR "dali-logo.png"); +const char * const BACKGROUND_IMAGE( DEMO_IMAGE_DIR "background-2.jpg" ); +const char * const TOOLBAR_IMAGE( DEMO_IMAGE_DIR "top-bar.png" ); +const char * const LOSE_CONTEXT_IMAGE( DEMO_IMAGE_DIR "icon-cluster-wobble.png" ); +const char * const LOSE_CONTEXT_IMAGE_SELECTED( DEMO_IMAGE_DIR "icon-cluster-wobble-selected.png" ); +const char * const BASE_IMAGE( DEMO_IMAGE_DIR "gallery-large-14.jpg" ); +const char * const EFFECT_IMAGE( DEMO_IMAGE_DIR "gallery-large-18.jpg" ); +const char * const LOGO_IMAGE(DEMO_IMAGE_DIR "dali-logo.png"); const float EXPLOSION_DURATION(1.2f); const unsigned int EMIT_INTERVAL_IN_MS(40); @@ -99,6 +102,9 @@ void main()\n ); const char* FRAGMENT_BLEND_SHADER = MAKE_SHADER( +varying mediump vec2 vTexCoord;\n +uniform sampler2D sTexture;\n +uniform sampler2D sEffect;\n uniform mediump float alpha;\n \n void main()\n @@ -184,8 +190,7 @@ void NewWindowController::Create( Application& app ) "Context recovery" ); Size stageSize = stage.GetSize(); - Image backgroundImage = ResourceImage::New( BACKGROUND_IMAGE, Dali::ImageDimensions( stageSize.x, stageSize.y ), Dali::FittingMode::SCALE_TO_FILL, Dali::SamplingMode::BOX_THEN_LINEAR ); - ImageView backgroundActor = ImageView::New( backgroundImage ); + ImageView backgroundActor = ImageView::New( BACKGROUND_IMAGE, Dali::ImageDimensions( stageSize.x, stageSize.y ) ); backgroundActor.SetParentOrigin( ParentOrigin::CENTER ); mContentLayer.Add(backgroundActor); @@ -209,16 +214,15 @@ void NewWindowController::Create( Application& app ) logoLayoutActor.SetScale(0.5f); backgroundActor.Add(logoLayoutActor); - Image image = ResourceImage::New(LOGO_IMAGE); - ImageView imageView = ImageView::New(image); + ImageView imageView = ImageView::New( LOGO_IMAGE ); imageView.SetName("daliLogo"); imageView.SetParentOrigin(ParentOrigin::CENTER); imageView.SetAnchorPoint(AnchorPoint::BOTTOM_CENTER); logoLayoutActor.Add(imageView); ImageView mirrorImageView = CreateBlurredMirrorImage(LOGO_IMAGE); - mirrorImageView.SetParentOrigin(ParentOrigin::CENTER); - mirrorImageView.SetAnchorPoint(AnchorPoint::TOP_CENTER); + mirrorImageView.SetParentOrigin(ParentOrigin::TOP_CENTER); + mirrorImageView.SetAnchorPoint(AnchorPoint::BOTTOM_CENTER); logoLayoutActor.Add(mirrorImageView); AddBubbles( backgroundActor, stage.GetSize()); @@ -238,10 +242,10 @@ void NewWindowController::Destroy( Application& app ) void NewWindowController::AddBubbles( Actor& parentActor, const Vector2& stageSize) { mEmitter = Toolkit::BubbleEmitter::New( stageSize, - ResourceImage::New( DALI_IMAGE_DIR "bubble-ball.png" ), + DemoHelper::LoadImage( DEMO_IMAGE_DIR "bubble-ball.png" ), 200, Vector2( 5.0f, 5.0f ) ); - Image background = ResourceImage::New(BACKGROUND_IMAGE); + Image background = DemoHelper::LoadImage(BACKGROUND_IMAGE); mEmitter.SetBackground( background, Vector3(0.5f, 0.f,0.5f) ); mEmitter.SetBubbleDensity( 9.f ); Actor bubbleRoot = mEmitter.GetRootActor(); @@ -260,35 +264,42 @@ void NewWindowController::AddMeshActor( Actor& parentActor ) // Create a coloured mesh Shader shaderColorMesh = Shader::New( VERTEX_COLOR_MESH, FRAGMENT_COLOR_MESH ); - Material colorMeshmaterial = Material::New( shaderColorMesh ); - Renderer colorMeshRenderer = Renderer::New( meshGeometry, colorMeshmaterial ); + Renderer colorMeshRenderer = Renderer::New( meshGeometry, shaderColorMesh ); Actor colorMeshActor = Actor::New(); colorMeshActor.AddRenderer( colorMeshRenderer ); - colorMeshActor.SetSize( 175.f,175.f ); + colorMeshActor.SetSize( 175.f,175.f, 175.f ); colorMeshActor.SetParentOrigin( ParentOrigin::CENTER ); colorMeshActor.SetAnchorPoint(AnchorPoint::TOP_CENTER); colorMeshActor.SetPosition(Vector3(0.0f, 50.0f, 0.0f)); colorMeshActor.SetOrientation( Degree(75.f), Vector3::XAXIS ); colorMeshActor.SetName("ColorMeshActor"); - parentActor.Add( colorMeshActor ); // Create a textured mesh - Image effectImage = ResourceImage::New(EFFECT_IMAGE); + Texture effectTexture = DemoHelper::LoadTexture(EFFECT_IMAGE); Shader shaderTextureMesh = Shader::New( VERTEX_TEXTURE_MESH, FRAGMENT_TEXTURE_MESH ); - Material textureMeshMaterial = Material::New( shaderTextureMesh ); - textureMeshMaterial.AddTexture(effectImage, "sTexture"); - Renderer textureMeshRenderer = Renderer::New( meshGeometry, textureMeshMaterial ); + TextureSet textureSet = TextureSet::New(); + textureSet.SetTexture( 0u, effectTexture ); + Renderer textureMeshRenderer = Renderer::New( meshGeometry, shaderTextureMesh ); + textureMeshRenderer.SetTextures( textureSet ); Actor textureMeshActor = Actor::New(); textureMeshActor.AddRenderer( textureMeshRenderer ); - textureMeshActor.SetSize( 175.f,175.f ); + textureMeshActor.SetSize( 175.f,175.f, 175.f ); textureMeshActor.SetParentOrigin( ParentOrigin::CENTER ); textureMeshActor.SetAnchorPoint(AnchorPoint::TOP_CENTER); textureMeshActor.SetPosition(Vector3(0.0f, 200.0f, 0.0f)); textureMeshActor.SetOrientation( Degree(75.f), Vector3::XAXIS ); textureMeshActor.SetName("TextureMeshActor"); - parentActor.Add( textureMeshActor ); + + Layer layer3d = Layer::New(); + layer3d.SetParentOrigin( ParentOrigin::CENTER ); + layer3d.SetAnchorPoint( AnchorPoint::CENTER ); + layer3d.SetBehavior(Layer::LAYER_3D); + + layer3d.Add( colorMeshActor ); + layer3d.Add( textureMeshActor ); + parentActor.Add(layer3d); } void NewWindowController::AddBlendingImageActor( Actor& parentActor ) @@ -305,18 +316,23 @@ void NewWindowController::AddBlendingImageActor( Actor& parentActor ) tmpActor.SetScale(0.25f); // create blending shader effect - ShaderEffect blendShader = ShaderEffect::New( "", FRAGMENT_BLEND_SHADER ); - blendShader.SetEffectImage( fb2 ); - blendShader.SetUniform("alpha", 0.5f); + Property::Map customShader; + customShader[ "fragmentShader" ] = FRAGMENT_BLEND_SHADER; + Property::Map map; + map[ "shader" ] = customShader; + + ImageView blendActor = ImageView::New( BASE_IMAGE ); + blendActor.SetProperty( ImageView::Property::IMAGE, map ); + blendActor.RegisterProperty( "alpha", 0.5f ); - Image baseImage = ResourceImage::New(BASE_IMAGE); - ImageActor blendActor = ImageActor::New( baseImage ); blendActor.SetParentOrigin(ParentOrigin::CENTER_RIGHT); blendActor.SetAnchorPoint(AnchorPoint::BOTTOM_RIGHT); blendActor.SetPosition(Vector3(0.0f, 100.0f, 0.0f)); blendActor.SetSize(140, 140); - blendActor.SetShaderEffect( blendShader ); parentActor.Add(blendActor); + + TextureSet textureSet = blendActor.GetRendererAt(0u).GetTextures(); + TextureSetImage( textureSet, 1u, fb2 ); } void NewWindowController::AddTextLabel( Actor& parentActor ) @@ -330,10 +346,9 @@ void NewWindowController::AddTextLabel( Actor& parentActor ) ImageView NewWindowController::CreateBlurredMirrorImage(const char* imageName) { - Image image = ResourceImage::New(imageName); + Image image = DemoHelper::LoadImage(imageName); - Uint16Pair intFboSize = ResourceImage::GetImageSize(imageName); - Vector2 FBOSize = Vector2( intFboSize.GetWidth(), intFboSize.GetHeight() ); + Vector2 FBOSize = Vector2( image.GetWidth(), image.GetHeight() ); FrameBufferImage fbo = FrameBufferImage::New( FBOSize.width, FBOSize.height, Pixel::RGBA8888); GaussianBlurView gbv = GaussianBlurView::New(5, 2.0f, Pixel::RGBA8888, 0.5f, 0.5f, true); @@ -431,20 +446,16 @@ Geometry NewWindowController::CreateMeshGeometry() vertexFormat["aPosition"] = Property::VECTOR3; vertexFormat["aTexCoord"] = Property::VECTOR2; vertexFormat["aColor"] = Property::VECTOR3; - PropertyBuffer vertices = PropertyBuffer::New( vertexFormat, 5 ); - vertices.SetData( vertexData ); + PropertyBuffer vertices = PropertyBuffer::New( vertexFormat ); + vertices.SetData( vertexData, 5 ); // Specify all the faces - unsigned int indexData[12] = { 0,1,3,0,2,4,0,3,4,0,2,1 }; - Property::Map indexFormat; - indexFormat["indices"] = Property::INTEGER; - PropertyBuffer indices = PropertyBuffer::New( indexFormat, 12 ); - indices.SetData( indexData ); + unsigned short indexData[12] = { 0,1,3,0,2,4,0,3,4,0,2,1 }; // Create the geometry object Geometry geometry = Geometry::New(); geometry.AddVertexBuffer( vertices ); - geometry.SetIndexBuffer( indices ); + geometry.SetIndexBuffer( &indexData[0], 12 ); return geometry; } @@ -546,9 +557,9 @@ void RunTest(Application& app) // Entry point for Linux & Tizen applications // -int main(int argc, char **argv) +int DALI_EXPORT_API main(int argc, char **argv) { - gApplication = Application::New(&argc, &argv, DALI_DEMO_THEME_PATH); + gApplication = Application::New(&argc, &argv, DEMO_THEME_PATH); RunTest(gApplication); return 0;