/*
- * 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.
*/
// EXTERNAL INCLUDES
-#include <dali/devel-api/rendering/renderer.h>
+#include <dali/devel-api/images/texture-set-image.h>
+#include <dali/public-api/rendering/renderer.h>
#include <dali-toolkit/dali-toolkit.h>
#include <dali-toolkit/devel-api/controls/bubble-effect/bubble-emitter.h>
+#include <dali-toolkit/devel-api/controls/gaussian-blur-view/gaussian-blur-view.h>
#include <cstdio>
#include <iostream>
// INTERNAL INCLUDES
#include "shared/view.h"
+#include "shared/utility.h"
using namespace Dali;
using namespace Dali::Toolkit;
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);
);
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
"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);
logoLayoutActor.SetScale(0.5f);
backgroundActor.Add(logoLayoutActor);
- Image image = ResourceImage::New(LOGO_IMAGE);
- ImageView imageView = ImageView::New(image);
- imageView.SetName("dali-logo");
+ 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());
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();
// 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 )
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 )
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);
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;
}
Property::Map map;
Property::Map customShader;
- customShader[ "fragment-shader" ] = fragmentShader;
+ customShader[ "fragmentShader" ] = fragmentShader;
map[ "shader" ] = customShader;
return map;
// 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;