X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fimage-view-alpha-blending%2Fimage-view-alpha-blending-example.cpp;h=e1c6a9e76d02eb262e3687191e7831707514cc4c;hb=c70446e9b125ae8bb236b4cbc3fd3f8b548459cd;hp=db6adfa184fc6789cc297fe361c02fc7d91b7379;hpb=24c8baf69f0196d4a9a6ad746b370d026532a585;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/image-view-alpha-blending/image-view-alpha-blending-example.cpp b/examples/image-view-alpha-blending/image-view-alpha-blending-example.cpp index db6adfa..e1c6a9e 100644 --- a/examples/image-view-alpha-blending/image-view-alpha-blending-example.cpp +++ b/examples/image-view-alpha-blending/image-view-alpha-blending-example.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 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. @@ -16,9 +16,16 @@ */ #include +#include +#include using namespace Dali; +namespace +{ +const char* const IMAGE_PATH ( DEMO_IMAGE_DIR "gallery-large-20.jpg" ); +} + class ImageViewAlphaBlendApp : public ConnectionTracker { public: @@ -39,35 +46,34 @@ private: // The Init signal is received once (only) during the Application lifetime void Create( Application& application ) { - // Get a handle to the stage - Stage stage = Stage::GetCurrent(); - stage.KeyEventSignal().Connect(this, &ImageViewAlphaBlendApp::OnKeyEvent); - - Vector4 green0 = Vector4( 0.f, 1.f, 0.f, 0.25f ); - Vector4 green1 = Vector4( 0.f, 0.25f, 0.f, 0.25f ); - BufferImage redGreen0 = CreateBufferImage( Color::RED, green0 ); - BufferImage redGreen1 = CreateBufferImage( Color::RED, green1 ); - ResourceImage testImage = ResourceImage::New( DEMO_IMAGE_DIR "gallery-large-20.jpg" ); + // Get a handle to the window + Window window = application.GetWindow(); + window.KeyEventSignal().Connect(this, &ImageViewAlphaBlendApp::OnKeyEvent); + + auto green0 = Vector4( 0.f, 1.f, 0.f, 0.25f ); + auto green1 = Vector4( 0.f, 0.25f, 0.f, 0.25f ); + auto redGreen0 = CreateTexture( Color::RED, green0 ); + auto redGreen1 = CreateTexture( Color::RED, green1 ); float imageSize = 512.f; - Toolkit::ImageView imageView0 = Toolkit::ImageView::New( testImage ); - imageView0.SetSize(imageSize, imageSize); - imageView0.SetParentOrigin( ParentOrigin::CENTER ); - imageView0.SetY( -imageSize*0.5f ); - stage.Add(imageView0); - Toolkit::ImageView imageView1 = Toolkit::ImageView::New( redGreen0 ); - imageView1.SetParentOrigin( ParentOrigin::CENTER ); - imageView1.SetSize(imageSize, imageSize); + Toolkit::ImageView imageView0 = CreateImageView( IMAGE_PATH ); + imageView0.SetProperty( Actor::Property::SIZE, Vector2(imageSize, imageSize) ); + imageView0.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + imageView0.SetProperty( Actor::Property::POSITION_Y, -imageSize*0.5f ); + window.Add(imageView0); + Toolkit::ImageView imageView1 = CreateImageView( redGreen0 ); + imageView1.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + imageView1.SetProperty( Actor::Property::SIZE, Vector2(imageSize, imageSize) ); imageView0.Add(imageView1); - Toolkit::ImageView imageView2 = Toolkit::ImageView::New( testImage); - imageView2.SetSize(imageSize, imageSize); - imageView2.SetParentOrigin( ParentOrigin::CENTER ); - imageView2.SetY( imageSize*0.5f ); - stage.Add(imageView2); - Toolkit::ImageView imageView3 = Toolkit::ImageView::New( redGreen1); - imageView3.SetParentOrigin( ParentOrigin::CENTER ); - imageView3.SetSize(imageSize, imageSize); + Toolkit::ImageView imageView2 = CreateImageView( IMAGE_PATH ); + imageView2.SetProperty( Actor::Property::SIZE, Vector2(imageSize, imageSize) ); + imageView2.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + imageView2.SetProperty( Actor::Property::POSITION_Y, imageSize*0.5f ); + window.Add(imageView2); + Toolkit::ImageView imageView3 = CreateImageView( redGreen1); + imageView3.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + imageView3.SetProperty( Actor::Property::SIZE, Vector2(imageSize, imageSize) ); imageView2.Add(imageView3); imageView2.SetProperty( Toolkit::ImageView::Property::PRE_MULTIPLIED_ALPHA, true ); @@ -82,7 +88,7 @@ private: void OnKeyEvent(const KeyEvent& event) { - if(event.state == KeyEvent::Down) + if(event.GetState() == KeyEvent::DOWN) { if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) ) { @@ -91,42 +97,51 @@ private: } } - BufferImage CreateBufferImage( const Vector4& color1, const Vector4& color2 ) + std::string CreateTexture( const Vector4& color1, const Vector4& color2 ) { - BufferImage image = BufferImage::New( 2, 1, Pixel::RGBA8888 ); - PixelBuffer* pixelBuffer = image.GetBuffer(); - pixelBuffer[0]=0xFF * color1.x; - pixelBuffer[1]=0xFF * color1.y; - pixelBuffer[2]=0xFF * color1.z; - pixelBuffer[3]=0xFF * color1.w; - pixelBuffer[4]=0xFF * color2.x; - pixelBuffer[5]=0xFF * color2.y; - pixelBuffer[6]=0xFF * color2.z; - pixelBuffer[7]=0xFF * color2.w; - image.Update(); - return image; + const auto width = 2u; + const auto height = 1u; + auto size = width * height * 4; + auto pixelBuffer = new unsigned char[size]; + pixelBuffer[0] = 0xFF * color1.x; + pixelBuffer[1] = 0xFF * color1.y; + pixelBuffer[2] = 0xFF * color1.z; + pixelBuffer[3] = 0xFF * color1.w; + pixelBuffer[4] = 0xFF * color2.x; + pixelBuffer[5] = 0xFF * color2.y; + pixelBuffer[6] = 0xFF * color2.z; + pixelBuffer[7] = 0xFF * color2.w; + + auto pixelData = PixelData::New(pixelBuffer, size, width, height, Pixel::RGBA8888, PixelData::ReleaseFunction::DELETE_ARRAY); + auto texture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, width, height ); + texture.Upload(pixelData); + + return Toolkit::TextureManager::AddTexture(texture); } + template + Toolkit::ImageView CreateImageView(TextT&& filename) + { + auto imageView = Toolkit::ImageView::New(); + + Property::Map propertyMap; + propertyMap.Insert(Toolkit::ImageVisual::Property::URL, std::forward(filename)); + propertyMap.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE); + propertyMap.Insert(Toolkit::DevelVisual::Property::VISUAL_FITTING_MODE, Toolkit::DevelVisual::FILL); + imageView.SetProperty(Toolkit::ImageView::Property::IMAGE, propertyMap ); + + return imageView; + } private: Application& mApplication; unsigned int mIndex; }; -void RunTest( Application& application ) -{ - ImageViewAlphaBlendApp 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 ); - + ImageViewAlphaBlendApp test( application ); + application.MainLoop(); return 0; }