X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fimage-view-alpha-blending%2Fimage-view-alpha-blending-example.cpp;h=ef05f6fc3a4656828dd6aabc25cba2ad6301c6d7;hb=1b19fd140ff139b5854a1a62447faf31b175d8f6;hp=3a4ce7f7b2baf63c3a148faf1386f07984c8e6f0;hpb=a70ecbcb1da52ba43a31e6412d7e476e74338a2e;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 3a4ce7f..ef05f6f 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,23 +16,25 @@ */ #include +#include +#include using namespace Dali; namespace { -const char* const IMAGE_PATH ( DEMO_IMAGE_DIR "gallery-large-20.jpg" ); +const char* const IMAGE_PATH(DEMO_IMAGE_DIR "gallery-large-20.jpg"); } class ImageViewAlphaBlendApp : public ConnectionTracker { public: - ImageViewAlphaBlendApp( Application& application ) - : mApplication( application ), + ImageViewAlphaBlendApp(Application& application) + : mApplication(application), mIndex(0u) { // Connect to the Application's Init signal - mApplication.InitSignal().Connect( this, &ImageViewAlphaBlendApp::Create ); + mApplication.InitSignal().Connect(this, &ImageViewAlphaBlendApp::Create); } ~ImageViewAlphaBlendApp() @@ -42,95 +44,104 @@ public: private: // 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.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 ); + // 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( IMAGE_PATH ); - 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( IMAGE_PATH ); - 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 ); - imageView3.SetProperty( Toolkit::ImageView::Property::PRE_MULTIPLIED_ALPHA, true ); + imageView2.SetProperty(Toolkit::ImageView::Property::PRE_MULTIPLIED_ALPHA, true); + imageView3.SetProperty(Toolkit::ImageView::Property::PRE_MULTIPLIED_ALPHA, true); - Animation animation = Animation::New( 10.f ); - animation.AnimateTo(Property(imageView0, Actor::Property::COLOR), Vector4(1.0f, 1.0f, 1.0f, 0.0f), AlphaFunction::BOUNCE, TimePeriod( 2.f, 8.f )); - animation.AnimateTo(Property(imageView2, Actor::Property::COLOR), Vector4(1.0f, 1.0f, 1.0f, 0.0f), AlphaFunction::BOUNCE, TimePeriod( 2.f, 8.f )); - animation.SetLooping( true ); + Animation animation = Animation::New(10.f); + animation.AnimateTo(Property(imageView0, Actor::Property::COLOR), Vector4(1.0f, 1.0f, 1.0f, 0.0f), AlphaFunction::BOUNCE, TimePeriod(2.f, 8.f)); + animation.AnimateTo(Property(imageView2, Actor::Property::COLOR), Vector4(1.0f, 1.0f, 1.0f, 0.0f), AlphaFunction::BOUNCE, TimePeriod(2.f, 8.f)); + animation.SetLooping(true); animation.Play(); } 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) ) + if(IsKey(event, Dali::DALI_KEY_ESCAPE) || IsKey(event, Dali::DALI_KEY_BACK)) { mApplication.Quit(); } } } - 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; + Application& mApplication; unsigned int mIndex; }; -void RunTest( Application& application ) +int DALI_EXPORT_API main(int argc, char** argv) { - ImageViewAlphaBlendApp test( application ); - + Application application = Application::New(&argc, &argv); + 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 ); - return 0; }