From e4ace0da6e0d702b90e5a70d477aa7a0e0f6f44f Mon Sep 17 00:00:00 2001 From: Xiangyin Ma Date: Thu, 21 Apr 2016 11:01:08 +0100 Subject: [PATCH] Select the renderer type based on the image url Change-Id: I394fdccd108871aaa234dc95b3e7b98142a9e7c7 --- .../src/dali-toolkit/utc-Dali-Control.cpp | 16 +-- .../src/dali-toolkit/utc-Dali-ControlRenderer.cpp | 58 +++++----- .../src/dali-toolkit/utc-Dali-DebugRenderer.cpp | 6 +- .../src/dali-toolkit/utc-Dali-RendererFactory.cpp | 14 +-- .../devel-api/controls/bloom-view/bloom-view.h | 4 +- .../devel-api/controls/shadow-view/shadow-view.h | 18 ++-- .../controls/renderers/border/border-renderer.cpp | 6 +- .../controls/renderers/color/color-renderer.cpp | 5 +- .../renderers/gradient/gradient-renderer.cpp | 6 +- .../controls/renderers/image/image-renderer.cpp | 42 ++++---- .../controls/renderers/npatch/npatch-renderer.cpp | 7 +- .../controls/renderers/renderer-factory-impl.cpp | 118 +++++++++++++++------ .../controls/renderers/renderer-factory-impl.h | 20 +++- .../renderers/renderer-string-constants.cpp | 43 ++++++++ .../controls/renderers/renderer-string-constants.h | 45 ++++++++ .../controls/renderers/svg/svg-renderer.cpp | 9 +- dali-toolkit/internal/file.list | 1 + .../styles/480x800/dali-toolkit-default-theme.json | 4 +- .../720x1280/dali-toolkit-default-theme.json | 4 +- node-addon/examples/scripts/item-template.json | 4 +- node-addon/item-template.json | 4 +- 21 files changed, 289 insertions(+), 145 deletions(-) create mode 100644 dali-toolkit/internal/controls/renderers/renderer-string-constants.cpp create mode 100644 dali-toolkit/internal/controls/renderers/renderer-string-constants.h diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Control.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Control.cpp index 588c7c5..9a7e6ff 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Control.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Control.cpp @@ -428,16 +428,16 @@ int UtcDaliControlBackgroundImage(void) Property::Map* resultMap = propValue.GetMap(); DALI_TEST_CHECK( resultMap->Find( "rendererType" ) ); DALI_TEST_CHECK( resultMap->Find( "rendererType" )->Get() == "image" ); - DALI_TEST_CHECK( resultMap->Find( "imageUrl" ) ); - DALI_TEST_CHECK( resultMap->Find( "imageUrl" )->Get() == "TestImage" ); + DALI_TEST_CHECK( resultMap->Find( "url" ) ); + DALI_TEST_CHECK( resultMap->Find( "url" )->Get() == "TestImage" ); image = ResourceImage::New("TestImage2"); control.SetBackgroundImage( image ); propValue = control.GetProperty( Control::Property::BACKGROUND ); resultMap = propValue.GetMap(); - DALI_TEST_CHECK( resultMap->Find( "imageUrl" ) ); - DALI_TEST_CHECK( resultMap->Find( "imageUrl" )->Get() == "TestImage2" ); + DALI_TEST_CHECK( resultMap->Find( "url" ) ); + DALI_TEST_CHECK( resultMap->Find( "url" )->Get() == "TestImage2" ); END_TEST; } @@ -452,14 +452,14 @@ int UtcDaliControlBackgroundProperties(void) Property::Map imageMap; imageMap[ "rendererType" ] = "image"; - imageMap[ "imageUrl" ] = "TestImage"; + imageMap[ "url" ] = "TestImage"; control.SetProperty( Control::Property::BACKGROUND, imageMap ); Property::Value propValue = control.GetProperty( Control::Property::BACKGROUND ); Property::Map* resultMap = propValue.GetMap(); DALI_TEST_CHECK( resultMap->Find( "rendererType" ) ); DALI_TEST_CHECK( resultMap->Find( "rendererType" )->Get() == "image" ); - DALI_TEST_CHECK( resultMap->Find( "imageUrl" ) ); - DALI_TEST_CHECK( resultMap->Find( "imageUrl" )->Get() == "TestImage" ); + DALI_TEST_CHECK( resultMap->Find( "url" ) ); + DALI_TEST_CHECK( resultMap->Find( "url" )->Get() == "TestImage" ); Property::Map rendererMap; rendererMap["rendererType"] = "color"; @@ -487,7 +487,7 @@ int UtcDaliControlBackgroundProperties(void) control.SetProperty( Control::Property::BACKGROUND_IMAGE, deprecatedImageMap ); propValue = control.GetProperty( Control::Property::BACKGROUND_IMAGE ); resultMap = propValue.GetMap(); - DALI_TEST_CHECK( resultMap->Find( "imageUrl" )->Get< std::string >() == "TestImage" ); + DALI_TEST_CHECK( resultMap->Find( "url" )->Get< std::string >() == "TestImage" ); control.SetProperty( Control::Property::BACKGROUND_IMAGE, emptyMap ); DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND_IMAGE ).Get< Property::Map >().Empty() ); diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ControlRenderer.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ControlRenderer.cpp index 9a89c9c..810079f 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ControlRenderer.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ControlRenderer.cpp @@ -478,11 +478,11 @@ int UtcDaliControlRendererGetPropertyMap5(void) RendererFactory factory = RendererFactory::Get(); Property::Map propertyMap; propertyMap.Insert( "rendererType", "image" ); - propertyMap.Insert( "imageUrl", TEST_IMAGE_FILE_NAME ); - propertyMap.Insert( "imageDesiredWidth", 20 ); - propertyMap.Insert( "imageDesiredHeight", 30 ); - propertyMap.Insert( "imageFittingMode", "fitHeight" ); - propertyMap.Insert( "imageSamplingMode", "boxThenNearest" ); + propertyMap.Insert( "url", TEST_IMAGE_FILE_NAME ); + propertyMap.Insert( "desiredWidth", 20 ); + propertyMap.Insert( "desiredHeight", 30 ); + propertyMap.Insert( "fittingMode", "FIT_HEIGHT" ); + propertyMap.Insert( "samplingMode", "BOX_THEN_NEAREST" ); ControlRenderer imageRenderer = factory.GetControlRenderer(propertyMap); DALI_TEST_CHECK( imageRenderer ); @@ -495,23 +495,23 @@ int UtcDaliControlRendererGetPropertyMap5(void) DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == "image" ); - value = resultMap.Find( "imageUrl", Property::STRING ); + value = resultMap.Find( "url", Property::STRING ); DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == TEST_IMAGE_FILE_NAME ); - value = resultMap.Find( "imageFittingMode", Property::STRING ); + value = resultMap.Find( "fittingMode", Property::STRING ); DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == "fitHeight" ); + DALI_TEST_CHECK( value->Get() == "FIT_HEIGHT" ); - value = resultMap.Find( "imageSamplingMode", Property::STRING ); + value = resultMap.Find( "samplingMode", Property::STRING ); DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == "boxThenNearest" ); + DALI_TEST_CHECK( value->Get() == "BOX_THEN_NEAREST" ); - value = resultMap.Find( "imageDesiredWidth", Property::INTEGER ); + value = resultMap.Find( "desiredWidth", Property::INTEGER ); DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == 20 ); - value = resultMap.Find( "imageDesiredHeight", Property::INTEGER ); + value = resultMap.Find( "desiredHeight", Property::INTEGER ); DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == 30 ); @@ -524,23 +524,23 @@ int UtcDaliControlRendererGetPropertyMap5(void) DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == "image" ); - value = resultMap.Find( "imageUrl", Property::STRING ); + value = resultMap.Find( "url", Property::STRING ); DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == TEST_IMAGE_FILE_NAME ); - value = resultMap.Find( "imageFittingMode", Property::STRING ); + value = resultMap.Find( "fittingMode", Property::STRING ); DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == "shrinkToFit" ); + DALI_TEST_CHECK( value->Get() == "SHRINK_TO_FIT" ); - value = resultMap.Find( "imageSamplingMode", Property::STRING ); + value = resultMap.Find( "samplingMode", Property::STRING ); DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == "box" ); + DALI_TEST_CHECK( value->Get() == "BOX" ); - value = resultMap.Find( "imageDesiredWidth", Property::INTEGER ); + value = resultMap.Find( "desiredWidth", Property::INTEGER ); DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == 100 ); - value = resultMap.Find( "imageDesiredHeight", Property::INTEGER ); + value = resultMap.Find( "desiredHeight", Property::INTEGER ); DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == 200 ); @@ -554,8 +554,8 @@ int UtcDaliControlRendererGetPropertyMap6(void) RendererFactory factory = RendererFactory::Get(); Property::Map propertyMap; - propertyMap.Insert( "rendererType", "nPatch" ); - propertyMap.Insert( "imageUrl", TEST_NPATCH_FILE_NAME ); + propertyMap.Insert( "rendererType", "image" ); + propertyMap.Insert( "url", TEST_NPATCH_FILE_NAME ); propertyMap.Insert( "borderOnly", true ); ControlRenderer nPatchRenderer = factory.GetControlRenderer( propertyMap ); @@ -565,9 +565,9 @@ int UtcDaliControlRendererGetPropertyMap6(void) // check the property values from the returned map from control renderer Property::Value* value = resultMap.Find( "rendererType", Property::STRING ); DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == "nPatch" ); + DALI_TEST_CHECK( value->Get() == "image" ); - value = resultMap.Find( "imageUrl", Property::STRING ); + value = resultMap.Find( "url", Property::STRING ); DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == TEST_NPATCH_FILE_NAME ); @@ -586,8 +586,8 @@ int UtcDaliControlRendererGetPropertyMap7(void) // request SvgRenderer with a property map RendererFactory factory = RendererFactory::Get(); Property::Map propertyMap; - propertyMap.Insert( "rendererType", "svg" ); - propertyMap.Insert( "imageUrl", TEST_SVG_FILE_NAME ); + propertyMap.Insert( "rendererType", "image" ); + propertyMap.Insert( "url", TEST_SVG_FILE_NAME ); ControlRenderer svgRenderer = factory.GetControlRenderer( propertyMap ); Property::Map resultMap; @@ -595,9 +595,9 @@ int UtcDaliControlRendererGetPropertyMap7(void) // check the property values from the returned map from control renderer Property::Value* value = resultMap.Find( "rendererType", Property::STRING ); DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == "svg" ); + DALI_TEST_CHECK( value->Get() == "image" ); - value = resultMap.Find( "imageUrl", Property::STRING ); + value = resultMap.Find( "url", Property::STRING ); DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == TEST_SVG_FILE_NAME ); @@ -608,9 +608,9 @@ int UtcDaliControlRendererGetPropertyMap7(void) // check the property values from the returned map from control renderer value = resultMap.Find( "rendererType", Property::STRING ); DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == "svg" ); + DALI_TEST_CHECK( value->Get() == "image" ); - value = resultMap.Find( "imageUrl", Property::STRING ); + value = resultMap.Find( "url", Property::STRING ); DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == TEST_SVG_FILE_NAME ); diff --git a/automated-tests/src/dali-toolkit/utc-Dali-DebugRenderer.cpp b/automated-tests/src/dali-toolkit/utc-Dali-DebugRenderer.cpp index 1429161..28999a0 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-DebugRenderer.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-DebugRenderer.cpp @@ -110,15 +110,15 @@ int UtcDaliDebugRendererGetRenderer1(void) // Test that image renderer is replaced with debug renderer Property::Map propertyMap4; propertyMap4.Insert( "rendererType", "image" ); - propertyMap4.Insert( "imageUrl", TEST_IMAGE_FILE_NAME ); + propertyMap4.Insert( "url", TEST_IMAGE_FILE_NAME ); ControlRenderer imageRenderer = factory.GetControlRenderer( propertyMap4 ); DALI_TEST_CHECK( imageRenderer ); DALI_TEST_CHECK( IsDebugRenderer( imageRenderer ) ); // Test that n patch renderer is replaced with debug renderer Property::Map propertyMap5; - propertyMap5.Insert( "rendererType", "nPatch" ); - propertyMap5.Insert( "imageUrl", TEST_NPATCH_FILE_NAME ); + propertyMap5.Insert( "rendererType", "image" ); + propertyMap5.Insert( "url", TEST_NPATCH_FILE_NAME ); ControlRenderer nPatchRenderer = factory.GetControlRenderer( propertyMap4 ); DALI_TEST_CHECK( nPatchRenderer ); DALI_TEST_CHECK( IsDebugRenderer( nPatchRenderer ) ); diff --git a/automated-tests/src/dali-toolkit/utc-Dali-RendererFactory.cpp b/automated-tests/src/dali-toolkit/utc-Dali-RendererFactory.cpp index 6e22042..f37298c 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-RendererFactory.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-RendererFactory.cpp @@ -561,7 +561,7 @@ int UtcDaliRendererFactoryGetImageRenderer1(void) Property::Map propertyMap; propertyMap.Insert( "rendererType", "image" ); - propertyMap.Insert( "imageUrl", TEST_IMAGE_FILE_NAME ); + propertyMap.Insert( "url", TEST_IMAGE_FILE_NAME ); ControlRenderer controlRenderer = factory.GetControlRenderer( propertyMap ); DALI_TEST_CHECK( controlRenderer ); @@ -642,8 +642,8 @@ int UtcDaliRendererFactoryGetNPatchRenderer1(void) Integration::ResourcePointer ninePatchResource = CustomizeNinePatch( application, ninePatchImageWidth, ninePatchImageHeight, stretchRangesX, stretchRangesY ); Property::Map propertyMap; - propertyMap.Insert( "rendererType", "nPatch" ); - propertyMap.Insert( "imageUrl", TEST_NPATCH_FILE_NAME ); + propertyMap.Insert( "rendererType", "image" ); + propertyMap.Insert( "url", TEST_NPATCH_FILE_NAME ); { tet_infoline( "whole grid" ); ControlRenderer controlRenderer = factory.GetControlRenderer( propertyMap ); @@ -706,8 +706,8 @@ int UtcDaliRendererFactoryGetNPatchRenderer2(void) Integration::ResourcePointer ninePatchResource = CustomizeNinePatch( application, ninePatchImageWidth, ninePatchImageHeight, stretchRangesX, stretchRangesY ); Property::Map propertyMap; - propertyMap.Insert( "rendererType", "nPatch" ); - propertyMap.Insert( "imageUrl", TEST_NPATCH_FILE_NAME ); + propertyMap.Insert( "rendererType", "image" ); + propertyMap.Insert( "url", TEST_NPATCH_FILE_NAME ); { ControlRenderer controlRenderer = factory.GetControlRenderer( propertyMap ); DALI_TEST_CHECK( controlRenderer ); @@ -868,8 +868,8 @@ int UtcDaliRendererFactoryGetNPatchRendererN2(void) DALI_TEST_CHECK( factory ); Property::Map propertyMap; - propertyMap.Insert( "rendererType", "nPatch" ); - propertyMap.Insert( "imageUrl", 111 ); + propertyMap.Insert( "rendererType", 111 ); + propertyMap.Insert( "url", "ERROR.9.jpg" ); ControlRenderer controlRenderer = factory.GetControlRenderer( propertyMap ); DALI_TEST_CHECK( controlRenderer ); diff --git a/dali-toolkit/devel-api/controls/bloom-view/bloom-view.h b/dali-toolkit/devel-api/controls/bloom-view/bloom-view.h index 9353f13..50ae2a8 100644 --- a/dali-toolkit/devel-api/controls/bloom-view/bloom-view.h +++ b/dali-toolkit/devel-api/controls/bloom-view/bloom-view.h @@ -69,8 +69,8 @@ class BloomView; * * // create and add some visible actors to the BloomView, all these child actors will therefore get bloomed\n * Image image = Image::New(...);\n - * ImageActor imageActor = ImageActor::New(image);\n - * bloomView.Add(imageActor);\n + * ImageView imageView = ImageView::New(image);\n + * bloomView.Add(imageView);\n * ...\n * * // Start rendering the BloomView\n diff --git a/dali-toolkit/devel-api/controls/shadow-view/shadow-view.h b/dali-toolkit/devel-api/controls/shadow-view/shadow-view.h index 188c3c3..bbe4f91 100644 --- a/dali-toolkit/devel-api/controls/shadow-view/shadow-view.h +++ b/dali-toolkit/devel-api/controls/shadow-view/shadow-view.h @@ -66,17 +66,17 @@ class ShadowView; * * // create and add some visible actors to the ShadowView, all these child actors will therefore cast a shadow. * Image image = Image::New(...); - * ImageActor imageActor = ImageActor::New(image); - * imageActor.SetParentOrigin( ParentOrigin::CENTER ); - * imageActor.SetAnchorPoint( AnchorPoint::CENTER ); + * ImageView imageView = ImageView::New(image); + * imageView.SetParentOrigin( ParentOrigin::CENTER ); + * imageView.SetAnchorPoint( AnchorPoint::CENTER ); * shadowView.Add(imageActor);\n Add the renderable actor to the shadow view * - * ImageActor shadowPlane = ImageActor::New(); //This will be the shadow plane - * shadowPlane.SetParentOrigin( ParentOrigin::CENTER ); - * shadowPlane.SetAnchorPoint( AnchorPoint::CENTER ); - * shadowPlane.SetSize(700.0f, 700.0f); - * shadowPlane.SetPosition( Vector3(0.0f, 0.0f, -30.0f) ); //Just behind the image actor. - * shadowPlane.SetShadowPlane(ShadowPlane); + * ImageView shadowPlaneBg = ImageView::New(); //This will be the shadow plane + * shadowPlaneBg.SetParentOrigin( ParentOrigin::CENTER ); + * shadowPlaneBg.SetAnchorPoint( AnchorPoint::CENTER ); + * shadowPlaneBg.SetSize(700.0f, 700.0f); + * shadowPlaneBg.SetPosition( Vector3(0.0f, 0.0f, -30.0f) ); //Just behind the image actor. + * shadowView.SetShadowPlaneBackground(ShadowPlane); * * Actor pointLight = Actor::New(); // This will be the light source * pointLight.SetPosition(300.0f, 250.0f, 600.0f); diff --git a/dali-toolkit/internal/controls/renderers/border/border-renderer.cpp b/dali-toolkit/internal/controls/renderers/border/border-renderer.cpp index 9ae46a1..bbe44a9 100644 --- a/dali-toolkit/internal/controls/renderers/border/border-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/border/border-renderer.cpp @@ -24,6 +24,7 @@ //INTERNAL INCLUDES #include #include +#include #include namespace Dali @@ -37,9 +38,6 @@ namespace Internal namespace { -const char * const RENDERER_TYPE("rendererType"); -const char * const RENDERER_TYPE_VALUE("border"); - const char * const COLOR_NAME("borderColor"); const char * const SIZE_NAME("borderSize"); const char * const ANTI_ALIASING("antiAliasing"); @@ -160,7 +158,7 @@ void BorderRenderer::DoSetOnStage( Actor& actor ) void BorderRenderer::DoCreatePropertyMap( Property::Map& map ) const { map.Clear(); - map.Insert( RENDERER_TYPE, RENDERER_TYPE_VALUE ); + map.Insert( RENDERER_TYPE, BORDER_RENDERER ); map.Insert( COLOR_NAME, mBorderColor ); map.Insert( SIZE_NAME, mBorderSize ); } diff --git a/dali-toolkit/internal/controls/renderers/color/color-renderer.cpp b/dali-toolkit/internal/controls/renderers/color/color-renderer.cpp index abdee4e..c054a5e 100644 --- a/dali-toolkit/internal/controls/renderers/color/color-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/color/color-renderer.cpp @@ -24,6 +24,7 @@ //INTERNAL INCLUDES #include #include +#include #include namespace Dali @@ -37,8 +38,6 @@ namespace Internal namespace { -const char * const RENDERER_TYPE("rendererType"); -const char * const RENDERER_TYPE_VALUE("color"); const char * const COLOR_NAME("blendColor"); const char* VERTEX_SHADER = DALI_COMPOSE_SHADER( @@ -111,7 +110,7 @@ void ColorRenderer::DoSetOnStage( Actor& actor ) void ColorRenderer::DoCreatePropertyMap( Property::Map& map ) const { map.Clear(); - map.Insert( RENDERER_TYPE, RENDERER_TYPE_VALUE ); + map.Insert( RENDERER_TYPE, COLOR_RENDERER ); map.Insert( COLOR_NAME, mBlendColor ); } diff --git a/dali-toolkit/internal/controls/renderers/gradient/gradient-renderer.cpp b/dali-toolkit/internal/controls/renderers/gradient/gradient-renderer.cpp index f1838ae..eec8029 100644 --- a/dali-toolkit/internal/controls/renderers/gradient/gradient-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/gradient/gradient-renderer.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -43,9 +44,6 @@ namespace Internal namespace { -const char * const RENDERER_TYPE("rendererType"); -const char * const RENDERER_TYPE_VALUE("gradient"); - // properties: linear gradient const char * const START_POSITION_NAME("startPosition"); // Property::VECTOR2 const char * const END_POSITION_NAME("endPosition"); // Property::VECTOR2 @@ -245,7 +243,7 @@ void GradientRenderer::DoSetOnStage( Actor& actor ) void GradientRenderer::DoCreatePropertyMap( Property::Map& map ) const { map.Clear(); - map.Insert( RENDERER_TYPE, RENDERER_TYPE_VALUE ); + map.Insert( RENDERER_TYPE, GRADIENT_RENDERER ); Gradient::GradientUnits units = mGradient->GetGradientUnits(); if( units == Gradient::USER_SPACE_ON_USE ) diff --git a/dali-toolkit/internal/controls/renderers/image/image-renderer.cpp b/dali-toolkit/internal/controls/renderers/image/image-renderer.cpp index c2bec85..d0c6c91 100644 --- a/dali-toolkit/internal/controls/renderers/image/image-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/image/image-renderer.cpp @@ -25,6 +25,7 @@ #include // INTERNAL HEADER +#include #include #include #include @@ -45,33 +46,28 @@ namespace const char HTTP_URL[] = "http://"; const char HTTPS_URL[] = "https://"; -const char * const RENDERER_TYPE("rendererType"); -const char * const RENDERER_TYPE_VALUE("image"); - // property names -const char * const IMAGE_URL_NAME( "imageUrl" ); -const char * const IMAGE_FITTING_MODE( "imageFittingMode" ); -const char * const IMAGE_SAMPLING_MODE( "imageSamplingMode" ); -const char * const IMAGE_DESIRED_WIDTH( "imageDesiredWidth" ); -const char * const IMAGE_DESIRED_HEIGHT( "imageDesiredHeight" ); +const char * const IMAGE_FITTING_MODE( "fittingMode" ); +const char * const IMAGE_SAMPLING_MODE( "samplingMode" ); +const char * const IMAGE_DESIRED_WIDTH( "desiredWidth" ); +const char * const IMAGE_DESIRED_HEIGHT( "desiredHeight" ); // fitting modes -const char * const SHRINK_TO_FIT("shrinkToFit"); -const char * const SCALE_TO_FILL("scaleToFill"); -const char * const FIT_WIDTH("fitWidth"); -const char * const FIT_HEIGHT("fitHeight"); -const char * const DEFAULT("default"); +const char * const SHRINK_TO_FIT("SHRINK_TO_FIT"); +const char * const SCALE_TO_FILL("SCALE_TO_FILL"); +const char * const FIT_WIDTH("FIT_WIDTH"); +const char * const FIT_HEIGHT("FIT_HEIGHT"); +const char * const DEFAULT("DEFAULT"); // sampling modes -const char * const BOX("box"); -const char * const NEAREST("nearest"); -const char * const LINEAR("linear"); -const char * const BOX_THEN_NEAREST("boxThenNearest"); -const char * const BOX_THEN_LINEAR("boxThenLinear"); -const char * const NO_FILTER("noFilter"); -const char * const DONT_CARE("dontCare"); - -const std::string ATLAS_RECT_UNIFORM_NAME = "uAtlasRect"; +const char * const BOX("BOX"); +const char * const NEAREST("NEAREST"); +const char * const LINEAR("LINEAR"); +const char * const BOX_THEN_NEAREST("BOX_THEN_NEAREST"); +const char * const BOX_THEN_LINEAR("BOX_THEN_LINEAR"); +const char * const NO_FILTER("NO_FILTER"); +const char * const DONT_CARE("DONT_CARE"); + const std::string PIXEL_AREA_UNIFORM_NAME = "pixelArea"; const Vector4 FULL_TEXTURE_RECT(0.f, 0.f, 1.f, 1.f); @@ -505,7 +501,7 @@ void ImageRenderer::DoSetOffStage( Actor& actor ) void ImageRenderer::DoCreatePropertyMap( Property::Map& map ) const { map.Clear(); - map.Insert( RENDERER_TYPE, RENDERER_TYPE_VALUE ); + map.Insert( RENDERER_TYPE, IMAGE_RENDERER ); if( !mImageUrl.empty() ) { map.Insert( IMAGE_URL_NAME, mImageUrl ); diff --git a/dali-toolkit/internal/controls/renderers/npatch/npatch-renderer.cpp b/dali-toolkit/internal/controls/renderers/npatch/npatch-renderer.cpp index df0e8f5..028da4c 100644 --- a/dali-toolkit/internal/controls/renderers/npatch/npatch-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/npatch/npatch-renderer.cpp @@ -26,6 +26,7 @@ // INTERNAL IINCLUDES #include #include +#include #include #include @@ -41,10 +42,6 @@ namespace Internal namespace { -const char * const RENDERER_TYPE("rendererType"); -const char * const RENDERER_TYPE_VALUE("nPatch"); - -const char * const IMAGE_URL_NAME("imageUrl"); const char * const BORDER_ONLY("borderOnly"); const char* VERTEX_SHADER = DALI_COMPOSE_SHADER( @@ -407,7 +404,7 @@ void NPatchRenderer::DoSetOffStage( Actor& actor ) void NPatchRenderer::DoCreatePropertyMap( Property::Map& map ) const { map.Clear(); - map.Insert( RENDERER_TYPE, RENDERER_TYPE_VALUE ); + map.Insert( RENDERER_TYPE, IMAGE_RENDERER ); if( !mImageUrl.empty() ) { map.Insert( IMAGE_URL_NAME, mImageUrl ); diff --git a/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp b/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp index 2c88562..8ac1b74 100644 --- a/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp +++ b/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp @@ -33,21 +33,12 @@ #include #include #include +#include #include namespace { -const char * const RENDERER_TYPE_NAME( "rendererType" ); - -const char * const COLOR_RENDERER("color"); -const char * const BORDER_RENDERER("border"); -const char * const GRADIENT_RENDERER("gradient"); -const char * const IMAGE_RENDERER("image"); -const char * const N_PATCH_RENDERER("nPatch"); -const char * const SVG_RENDERER("svg"); - const char * const BROKEN_RENDERER_IMAGE_URL( DALI_IMAGE_DIR "broken.png"); - } namespace Dali @@ -83,14 +74,64 @@ RendererFactory::~RendererFactory() { } -Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Property::Map& propertyMap ) +RendererFactory::RendererType RendererFactory::GetRendererType( const Property::Map& propertyMap ) { - ControlRenderer* rendererPtr = NULL; + RendererType rendererType = UNDEFINED; - Property::Value* type = propertyMap.Find( RENDERER_TYPE_NAME ); + Property::Value* type = propertyMap.Find( RENDERER_TYPE ); std::string typeValue ; if( type && type->Get( typeValue )) { + if( typeValue == COLOR_RENDERER ) + { + rendererType = COLOR; + } + else if( typeValue == BORDER_RENDERER ) + { + rendererType = BORDER; + } + else if( typeValue == GRADIENT_RENDERER ) + { + rendererType = GRADIENT; + } + else if( typeValue == IMAGE_RENDERER ) + { + rendererType = IMAGE; + } + } + + // check the url if exist, to decide the renderer type + if( rendererType == IMAGE || rendererType == UNDEFINED ) + { + Property::Value* imageURLValue = propertyMap.Find( IMAGE_URL_NAME ); + std::string imageUrl; + if( imageURLValue && imageURLValue->Get( imageUrl )) + { + if( NinePatchImage::IsNinePatchUrl( imageUrl ) ) + { + rendererType = N_PATCH; + } + else if( SvgRenderer::IsSvgUrl( imageUrl ) ) + { + rendererType = SVG; + } + else + { + rendererType = IMAGE; + } + } + } + + return rendererType; +} + +Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Property::Map& propertyMap ) +{ + ControlRenderer* rendererPtr = NULL; + + RendererType type = GetRendererType( propertyMap ); + if( type != UNDEFINED) + { if( !mFactoryCache ) { mFactoryCache = new RendererFactoryCache(); @@ -100,32 +141,46 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Property::Ma { return Toolkit::ControlRenderer( new DebugRenderer( *( mFactoryCache.Get() ) ) ); } + } - if( typeValue == COLOR_RENDERER ) + switch( type ) + { + case COLOR: { rendererPtr = new ColorRenderer( *( mFactoryCache.Get() ) ); + break; } - else if( typeValue == GRADIENT_RENDERER ) + case GRADIENT: + { + rendererPtr = new GradientRenderer( *( mFactoryCache.Get() ) ); + break; + } + case BORDER: { - rendererPtr = new GradientRenderer( *( mFactoryCache.Get() ) ); + rendererPtr = new BorderRenderer( *( mFactoryCache.Get() ) ); + break; } - else if( typeValue == IMAGE_RENDERER ) + case IMAGE: { CreateAtlasManager(); rendererPtr = new ImageRenderer( *( mFactoryCache.Get() ), *( mAtlasManager.Get() ) ); + break; } - else if( typeValue == N_PATCH_RENDERER ) + case N_PATCH: { rendererPtr = new NPatchRenderer( *( mFactoryCache.Get() ) ); + break; } - else if( typeValue == BORDER_RENDERER ) - { - rendererPtr = new BorderRenderer( *( mFactoryCache.Get() ) ); - } - else if( typeValue == SVG_RENDERER ) + case SVG: { CreateAtlasManager(); rendererPtr = new SvgRenderer( *( mFactoryCache.Get() ), *( mAtlasManager.Get() ) ); + break; + } + case UNDEFINED: + default: + { + break; } } @@ -385,17 +440,16 @@ void RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, Actor& { ControlRenderer& controlRenderer = GetImplementation( renderer ); - Property::Value* type = propertyMap.Find( RENDERER_TYPE_NAME ); - std::string typeValue ; + RendererType type = GetRendererType( propertyMap ); //If there's no renderer type specified or if there hasn't been a renderer type change then we can reuse the renderer - if( !type || !type->Get( typeValue ) || - ( typeValue == IMAGE_RENDERER && typeid( controlRenderer ) == typeid( ImageRenderer ) ) || - ( typeValue == N_PATCH_RENDERER && typeid( controlRenderer ) == typeid( NPatchRenderer ) ) || - ( typeValue == COLOR_RENDERER && typeid( controlRenderer ) == typeid( ColorRenderer ) )|| - ( typeValue == GRADIENT_RENDERER && typeid( controlRenderer ) == typeid( GradientRenderer ) ) || - ( typeValue == BORDER_RENDERER && typeid( controlRenderer ) == typeid( BorderRenderer ) ) || - ( typeValue == SVG_RENDERER && typeid( controlRenderer ) == typeid( SvgRenderer ) ) ) + if( type == UNDEFINED || + ( type == IMAGE && typeid( controlRenderer ) == typeid( ImageRenderer ) ) || + ( type == N_PATCH && typeid( controlRenderer ) == typeid( NPatchRenderer ) ) || + ( type == COLOR && typeid( controlRenderer ) == typeid( ColorRenderer ) )|| + ( type == GRADIENT && typeid( controlRenderer ) == typeid( GradientRenderer ) ) || + ( type == BORDER && typeid( controlRenderer ) == typeid( BorderRenderer ) ) || + ( type == SVG && typeid( controlRenderer ) == typeid( SvgRenderer ) ) ) { controlRenderer.Initialize( actor, propertyMap ); return; diff --git a/dali-toolkit/internal/controls/renderers/renderer-factory-impl.h b/dali-toolkit/internal/controls/renderers/renderer-factory-impl.h index e129aef..b9d5cf1 100644 --- a/dali-toolkit/internal/controls/renderers/renderer-factory-impl.h +++ b/dali-toolkit/internal/controls/renderers/renderer-factory-impl.h @@ -44,9 +44,19 @@ typedef IntrusivePtr ImageAtlasManagerPtr; */ class RendererFactory : public BaseObject { - public: + enum RendererType + { + COLOR, + BORDER, + GRADIENT, + IMAGE, + N_PATCH, + SVG, + UNDEFINED + }; + /** * @brief Constructor * @@ -115,6 +125,14 @@ protected: private: /** + * Get the renderer type from the property map. + * + * @param[in] propertyMap The map contains the properties of the control renderer + * @return The rendererType + */ + RendererType GetRendererType( const Property::Map& propertyMap ); + + /** * Prepare the atlas manager */ void CreateAtlasManager(); diff --git a/dali-toolkit/internal/controls/renderers/renderer-string-constants.cpp b/dali-toolkit/internal/controls/renderers/renderer-string-constants.cpp new file mode 100644 index 0000000..ef01bd1 --- /dev/null +++ b/dali-toolkit/internal/controls/renderers/renderer-string-constants.cpp @@ -0,0 +1,43 @@ + /* + * Copyright (c) 2015 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// CLASS HEADER +#include "renderer-string-constants.h" + +namespace Dali +{ + +namespace Toolkit +{ + +namespace Internal +{ + +const char * const RENDERER_TYPE("rendererType"); +const char * const COLOR_RENDERER("color"); +const char * const BORDER_RENDERER("border"); +const char * const GRADIENT_RENDERER("gradient"); +const char * const IMAGE_RENDERER("image"); + +const char * const IMAGE_URL_NAME("url"); +const char * const ATLAS_RECT_UNIFORM_NAME ( "uAtlasRect" ); + +} // namespace Internal + +} // namespace Toolkit + +} // namespace Dali diff --git a/dali-toolkit/internal/controls/renderers/renderer-string-constants.h b/dali-toolkit/internal/controls/renderers/renderer-string-constants.h new file mode 100644 index 0000000..ebaf29f --- /dev/null +++ b/dali-toolkit/internal/controls/renderers/renderer-string-constants.h @@ -0,0 +1,45 @@ +#ifndef __DALI_TOOLKIT_INTERNAL_RENDERER_STRING_CONSTANTS_H__ +#define __DALI_TOOLKIT_INTERNAL_RENDERER_STRING_CONSTANTS_H__ + +/* + * 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +namespace Dali +{ + +namespace Toolkit +{ + +namespace Internal +{ + +extern const char * const RENDERER_TYPE; +extern const char * const COLOR_RENDERER; +extern const char * const BORDER_RENDERER; +extern const char * const GRADIENT_RENDERER; +extern const char * const IMAGE_RENDERER; + +extern const char * const IMAGE_URL_NAME; +extern const char * const ATLAS_RECT_UNIFORM_NAME; + +} // namespace Internal + +} // namespace Toolkit + +} // namespace Dali + +#endif /* __DALI_TOOLKIT_INTERNAL_RENDERER_STRING_CONSTANTS_H__ */ diff --git a/dali-toolkit/internal/controls/renderers/svg/svg-renderer.cpp b/dali-toolkit/internal/controls/renderers/svg/svg-renderer.cpp index 2642c74..d6619d3 100644 --- a/dali-toolkit/internal/controls/renderers/svg/svg-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/svg/svg-renderer.cpp @@ -30,19 +30,14 @@ #include "svg-rasterize-thread.h" #include #include +#include #include namespace { -const char * const RENDERER_TYPE("rendererType"); -const char * const RENDERER_TYPE_VALUE("svg"); -const char * const IMAGE_URL_NAME("imageUrl"); const char * const UNITS("px"); -const std::string TEXTURE_UNIFORM_NAME = "sTexture"; -const std::string ATLAS_RECT_UNIFORM_NAME = "uAtlasRect"; - const Dali::Vector4 FULL_TEXTURE_RECT(0.f, 0.f, 1.f, 1.f); } @@ -147,7 +142,7 @@ void SvgRenderer::SetSize( const Vector2& size ) void SvgRenderer::DoCreatePropertyMap( Property::Map& map ) const { map.Clear(); - map.Insert( RENDERER_TYPE, RENDERER_TYPE_VALUE ); + map.Insert( RENDERER_TYPE, IMAGE_RENDERER ); if( !mImageUrl.empty() ) { map.Insert( IMAGE_URL_NAME, mImageUrl ); diff --git a/dali-toolkit/internal/file.list b/dali-toolkit/internal/file.list index 758160f..cd24d24 100644 --- a/dali-toolkit/internal/file.list +++ b/dali-toolkit/internal/file.list @@ -16,6 +16,7 @@ toolkit_src_files = \ $(toolkit_src_dir)/controls/renderers/image-atlas-manager.cpp \ $(toolkit_src_dir)/controls/renderers/renderer-factory-cache.cpp \ $(toolkit_src_dir)/controls/renderers/renderer-factory-impl.cpp \ + $(toolkit_src_dir)/controls/renderers/renderer-string-constants.cpp \ $(toolkit_src_dir)/controls/renderers/border/border-renderer.cpp \ $(toolkit_src_dir)/controls/renderers/color/color-renderer.cpp \ $(toolkit_src_dir)/controls/renderers/debug/debug-renderer.cpp \ diff --git a/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json b/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json index 46ee52d..4ecc335 100644 --- a/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json +++ b/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json @@ -94,8 +94,8 @@ "popupIconColor":[1.0,1.0,1.0,1.0], "popupPressedColor":[0.24,0.72,0.8,0.11], "background": { - "rendererType": "nPatch", - "imageUrl": "{DALI_IMAGE_DIR}selection-popup-bg.9.png" + "rendererType": "image", + "url": "{DALI_IMAGE_DIR}selection-popup-bg.9.png" }, "popupFadeInDuration":0.25, "popupFadeOutDuration":0.25 diff --git a/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json b/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json index 26b3c80..ffe9326 100644 --- a/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json +++ b/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json @@ -94,8 +94,8 @@ "popupIconColor":[1.0,1.0,1.0,1.0], "popupPressedColor":[0.24,0.72,0.8,0.11], "background": { - "rendererType": "nPatch", - "imageUrl": "{DALI_IMAGE_DIR}selection-popup-bg.9.png" + "rendererType": "image", + "url": "{DALI_IMAGE_DIR}selection-popup-bg.9.png" }, "popupFadeInDuration":0.25, "popupFadeOutDuration":0.25 diff --git a/node-addon/examples/scripts/item-template.json b/node-addon/examples/scripts/item-template.json index 1161765..2016ea7 100644 --- a/node-addon/examples/scripts/item-template.json +++ b/node-addon/examples/scripts/item-template.json @@ -16,7 +16,7 @@ "image": { "rendererType" : "image", - "imageUrl": "{icon_path}" + "url": "{icon_path}" }, "position":[20.0, 0.0, 0.0], "size":[70.0, 70.0, 0.0], @@ -60,7 +60,7 @@ "image": { "rendererType" : "image", - "imageUrl": "{icon_path}" + "url": "{icon_path}" }, "position":[0.0, -10.0, 0.0], "size":[70.0, 70.0, 0.0], diff --git a/node-addon/item-template.json b/node-addon/item-template.json index 1161765..2016ea7 100644 --- a/node-addon/item-template.json +++ b/node-addon/item-template.json @@ -16,7 +16,7 @@ "image": { "rendererType" : "image", - "imageUrl": "{icon_path}" + "url": "{icon_path}" }, "position":[20.0, 0.0, 0.0], "size":[70.0, 70.0, 0.0], @@ -60,7 +60,7 @@ "image": { "rendererType" : "image", - "imageUrl": "{icon_path}" + "url": "{icon_path}" }, "position":[0.0, -10.0, 0.0], "size":[70.0, 70.0, 0.0], -- 2.7.4