X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fwireframe%2Fwireframe-visual.cpp;h=ead87c0db16832ecd815aae867e1619f8df412e1;hp=990b25f779af7c0e931f53d5ba6e2355f9f93e4c;hb=ab447436de92a2e8bc8cd1393f4807f19ef6b316;hpb=ec1cd006ed99fe40e444e90c8b3e6eb01ca2bc8b diff --git a/dali-toolkit/internal/visuals/wireframe/wireframe-visual.cpp b/dali-toolkit/internal/visuals/wireframe/wireframe-visual.cpp index 990b25f..ead87c0 100644 --- a/dali-toolkit/internal/visuals/wireframe/wireframe-visual.cpp +++ b/dali-toolkit/internal/visuals/wireframe/wireframe-visual.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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,16 +15,16 @@ * */ - // CLASS HEADER #include "wireframe-visual.h" // INTERNAL INCLUDES -#include +#include #include #include #include #include +#include namespace Dali { @@ -39,44 +39,6 @@ namespace { const char * const POSITION_ATTRIBUTE_NAME("aPosition"); const char * const INDEX_NAME("indices"); - -const char* VERTEX_SHADER = DALI_COMPOSE_SHADER( -attribute mediump vec2 aPosition;\n -uniform mediump mat4 uMvpMatrix;\n -uniform mediump vec3 uSize;\n -\n - -//Visual size and offset -uniform mediump vec2 offset;\n -uniform mediump vec2 size;\n -uniform mediump vec4 offsetSizeMode;\n -uniform mediump vec2 origin;\n -uniform mediump vec2 anchorPoint;\n - -vec4 ComputeVertexPosition()\n -{\n - vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw );\n - vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy);\n - return vec4( (aPosition + anchorPoint)*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 );\n -}\n - -void main()\n -{\n - gl_Position = uMvpMatrix * ComputeVertexPosition();\n -}\n -); - -const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER(\n - uniform lowp vec4 uColor;\n - uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n -\n -void main()\n -{\n - gl_FragColor = uColor * vec4( mixColor, opacity );\n -}\n -); - } WireframeVisualPtr WireframeVisual::New( VisualFactoryCache& factoryCache, const Property::Map& properties ) @@ -88,7 +50,9 @@ WireframeVisualPtr WireframeVisual::New( VisualFactoryCache& factoryCache, const WireframeVisualPtr WireframeVisual::New( VisualFactoryCache& factoryCache, Visual::BasePtr actualVisual ) { - return new WireframeVisual( factoryCache, actualVisual ); + WireframeVisualPtr wireframeVisual(new WireframeVisual(factoryCache, actualVisual)); + wireframeVisual->Initialize(); + return wireframeVisual; } WireframeVisualPtr WireframeVisual::New( VisualFactoryCache& factoryCache, Visual::BasePtr actualVisual, const Property::Map& properties ) @@ -96,18 +60,18 @@ WireframeVisualPtr WireframeVisual::New( VisualFactoryCache& factoryCache, Visua WireframeVisualPtr wireframeVisual( new WireframeVisual( factoryCache, actualVisual ) ); // Instead of calling SetProperties, looking for the only valid property 'transform' - Property::Value* transformValue = properties.Find( DevelVisual::Property::TRANSFORM, TRANSFORM ); + Property::Value* transformValue = properties.Find( Toolkit::Visual::Property::TRANSFORM, TRANSFORM ); Property::Map transformMap; if( transformValue && transformValue->Get( transformMap ) ) { wireframeVisual->SetTransformAndSize( transformMap, Vector2::ZERO ); } - + wireframeVisual->Initialize(); return wireframeVisual; } WireframeVisual::WireframeVisual( VisualFactoryCache& factoryCache, Visual::BasePtr actualVisual ) -: Visual::Base( factoryCache ), +: Visual::Base( factoryCache, Visual::FittingMode::FILL, actualVisual ? actualVisual->GetType() : Toolkit::Visual::WIREFRAME ), mActualVisual( actualVisual ) { } @@ -149,7 +113,7 @@ void WireframeVisual::DoCreatePropertyMap( Property::Map& map ) const else { map.Clear(); - map.Insert( Toolkit::DevelVisual::Property::TYPE, Toolkit::Visual::WIREFRAME ); + map.Insert( Toolkit::Visual::Property::TYPE, Toolkit::Visual::WIREFRAME ); } } @@ -160,7 +124,7 @@ void WireframeVisual::DoCreateInstancePropertyMap( Property::Map& map ) const void WireframeVisual::DoSetProperties( const Property::Map& propertyMap ) { - Property::Value* mixValue = propertyMap.Find( Toolkit::DevelVisual::Property::MIX_COLOR, MIX_COLOR ); + Property::Value* mixValue = propertyMap.Find( Toolkit::Visual::Property::MIX_COLOR, MIX_COLOR ); if( mixValue ) { Vector4 mixColor; @@ -169,19 +133,20 @@ void WireframeVisual::DoSetProperties( const Property::Map& propertyMap ) } } -void WireframeVisual::DoSetOnStage( Actor& actor ) +void WireframeVisual::DoSetOnScene( Actor& actor ) { - InitializeRenderer(); - actor.AddRenderer( mImpl->mRenderer ); + + // Wireframe generated and ready to display + ResourceReady( Toolkit::Visual::ResourceStatus::READY ); } -void WireframeVisual::InitializeRenderer() +void WireframeVisual::OnInitialize() { Shader shader = mFactoryCache.GetShader( VisualFactoryCache::WIREFRAME_SHADER ); if( !shader ) { - shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER ); + shader = Shader::New( SHADER_WIREFRAME_VISUAL_SHADER_VERT, SHADER_WIREFRAME_VISUAL_SHADER_FRAG ); mFactoryCache.SaveShader( VisualFactoryCache::WIREFRAME_SHADER, shader ); } @@ -214,7 +179,7 @@ Geometry WireframeVisual::CreateQuadWireframeGeometry() Property::Map quadVertexFormat; quadVertexFormat[POSITION_ATTRIBUTE_NAME] = Property::VECTOR2; - PropertyBuffer quadVertices = PropertyBuffer::New( quadVertexFormat ); + VertexBuffer quadVertices = VertexBuffer::New( quadVertexFormat ); quadVertices.SetData( quadVertexData, 4 ); // Create indices @@ -238,6 +203,16 @@ void WireframeVisual::OnSetTransform() } } +Visual::Base& WireframeVisual::GetVisualObject() +{ + if( mActualVisual ) + { + return *mActualVisual.Get(); + } + + return *this; +} + } // namespace Internal } // namespace Toolkit