DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION );
Image image = ResourceImage::New("TestImage");
- control.SetBackground( image );
+ control.SetBackgroundImage( image );
DALI_TEST_CHECK( control.GetBackgroundActor() );
DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::WHITE, TEST_LOCATION );
DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION );
control.SetBackgroundColor( Color::YELLOW );
- control.SetBackground( image );
+ control.SetBackgroundImage( image );
DALI_TEST_CHECK( control.GetBackgroundActor() );
DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::YELLOW, TEST_LOCATION );
DALI_TEST_CHECK( !control.GetBackgroundActor() );
DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION );
DALI_TEST_EQUALS( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >(), Color::TRANSPARENT, TEST_LOCATION );
- DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND ).Get< Property::Map >().Empty() );
+ DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND_IMAGE ).Get< Property::Map >().Empty() );
control.SetProperty( Control::Property::BACKGROUND_COLOR, Color::RED );
DALI_TEST_CHECK( control.GetBackgroundActor() );
imageMap[ "filename" ] = "TestImage";
Property::Map map;
map[ "image" ] = imageMap;
- control.SetProperty( Control::Property::BACKGROUND, map );
+ control.SetProperty( Control::Property::BACKGROUND_IMAGE, map );
DALI_TEST_CHECK( control.GetBackgroundActor() );
DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::RED, TEST_LOCATION );
DALI_TEST_EQUALS( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >(), Color::RED, TEST_LOCATION );
- Property::Value propValue = control.GetProperty( Control::Property::BACKGROUND );
+ Property::Value propValue = control.GetProperty( Control::Property::BACKGROUND_IMAGE );
DALI_TEST_CHECK( propValue.HasKey( "image" ) );
DALI_TEST_CHECK( propValue.GetValue( "image" ).HasKey( "filename" ) );
DALI_TEST_CHECK( propValue.GetValue( "image" ).GetValue( "filename" ).Get< std::string>() == "TestImage" );
Property::Map emptyMap;
- control.SetProperty( Control::Property::BACKGROUND, emptyMap );
+ control.SetProperty( Control::Property::BACKGROUND_IMAGE, emptyMap );
DALI_TEST_CHECK( !control.GetBackgroundActor() );
DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION );
DALI_TEST_EQUALS( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >(), Color::TRANSPARENT, TEST_LOCATION );
- DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND ).Get< Property::Map >().Empty() );
+ DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND_IMAGE ).Get< Property::Map >().Empty() );
END_TEST;
}
break;
}
- case Toolkit::Control::Property::BACKGROUND:
+ case Toolkit::Control::Property::BACKGROUND_IMAGE:
{
if ( value.HasKey( "image" ) )
{
if ( image )
{
- controlImpl.SetBackground( image );
+ controlImpl.SetBackgroundImage( image );
}
}
else if ( value.Get< Property::Map >().Empty() )
break;
}
- case Toolkit::Control::Property::BACKGROUND:
+ case Toolkit::Control::Property::BACKGROUND_IMAGE:
{
Property::Map map;
// Properties registered without macro to use specific member variables.
PropertyRegistration Control::Impl::PROPERTY_1( typeRegistration, "background-color", Toolkit::Control::Property::BACKGROUND_COLOR, Property::VECTOR4, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
-PropertyRegistration Control::Impl::PROPERTY_2( typeRegistration, "background", Toolkit::Control::Property::BACKGROUND, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+PropertyRegistration Control::Impl::PROPERTY_2( typeRegistration, "background-image", Toolkit::Control::Property::BACKGROUND_IMAGE, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
PropertyRegistration Control::Impl::PROPERTY_3( typeRegistration, "width-policy", Toolkit::Control::Property::WIDTH_POLICY, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
PropertyRegistration Control::Impl::PROPERTY_4( typeRegistration, "height-policy", Toolkit::Control::Property::HEIGHT_POLICY, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
PropertyRegistration Control::Impl::PROPERTY_5( typeRegistration, "minimum-size", Toolkit::Control::Property::MINIMUM_SIZE, Property::VECTOR3, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
PropertyRegistration Control::Impl::PROPERTY_6( typeRegistration, "maximum-size", Toolkit::Control::Property::MAXIMUM_SIZE, Property::VECTOR3, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
-PropertyRegistration Control::Impl::PROPERTY_7( typeRegistration, "key-input-focus", Toolkit::Control::Property::KEY_INPUT_FOCUS, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+PropertyRegistration Control::Impl::PROPERTY_7( typeRegistration, "key-input-focus", Toolkit::Control::Property::KEY_INPUT_FOCUS, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
Toolkit::Control Control::New()
{
return Color::TRANSPARENT;
}
-void Control::SetBackground( Image image )
+void Control::SetBackgroundImage( Image image )
{
Background& background( mImpl->GetBackground() );
Vector4 GetBackgroundColor() const;
/**
- * @copydoc Dali::Toolkit::Control::SetBackground
+ * @copydoc Dali::Toolkit::Control::SetBackgroundImage
*/
- void SetBackground( Image image );
+ void SetBackgroundImage( Image image );
/**
* @copydoc Dali::Toolkit::Control::ClearBackground
return GetImplementation().GetBackgroundColor();
}
-void Control::SetBackground( Image image )
+void Control::SetBackgroundImage( Image image )
{
- GetImplementation().SetBackground( image );
+ GetImplementation().SetBackgroundImage( image );
}
void Control::ClearBackground()
enum
{
BACKGROUND_COLOR = PROPERTY_START_INDEX, ///< name "background-color", @see SetBackgroundColor, type Vector4
- BACKGROUND, ///< name "background", @see SetBackground, type Map
+ BACKGROUND_IMAGE, ///< name "background-image", @see SetBackgroundImage, type Map
WIDTH_POLICY, ///< name "width-policy", @see SetSizePolicy, type std::string
HEIGHT_POLICY, ///< name "height-policy", @see SetSizePolicy, type std::string
MINIMUM_SIZE, ///< name "minimum-size", @see SetMinimumSize, type Vector3
*
* @param[in] image The image to set as the background.
*/
- void SetBackground( Image image );
+ void SetBackgroundImage( Image image );
/**
* @brief Clears the background.
$(v8_plugin_dir)/animation/animation-api.cpp \
$(v8_plugin_dir)/animation/animation-wrapper.cpp \
$(v8_plugin_dir)/animation/path-api.cpp \
+ $(v8_plugin_dir)/animation/path-constraint-wrapper.cpp \
$(v8_plugin_dir)/animation/path-wrapper.cpp \
$(v8_plugin_dir)/stage/stage-wrapper.cpp \
$(v8_plugin_dir)/events/event-object-generator.cpp \
// INTERNAL INCLUDES
#include <v8-utils.h>
#include <actors/actor-wrapper.h>
+#include <animation/path-constraint-wrapper.h>
namespace Dali
{
actor.ScaleBy( vector );
}
+void ActorApi::ApplyPathConstraint( const v8::FunctionCallbackInfo< v8::Value >& args )
+{
+ v8::Isolate* isolate = args.GetIsolate();
+ v8::HandleScope handleScope( isolate );
+
+ //Get target actor
+ Actor targetActor = GetActor( isolate, args );
+
+ //Get PathConstraint
+ bool found(false);
+ Handle pathConstraintHandle = V8Utils::GetHandleParameter(PARAMETER_0, found, isolate, args );
+ if( !found )
+ {
+ DALI_SCRIPT_EXCEPTION( isolate, "bad parameter 0 (PathConstraint)" );
+ return;
+ }
+ PathConstraint pathConstraint = PathConstraint::DownCast(pathConstraintHandle);
+
+ //Get target property
+ std::string propertyName = V8Utils::GetStringParameter( PARAMETER_1, found, isolate, args );
+ if(!found)
+ {
+ DALI_SCRIPT_EXCEPTION( isolate, "bad parameter 1 (Property name)" );
+ return;
+ }
+
+ // try both properties with dashes and without
+ Property::Index targetPropertyIndex = targetActor.GetPropertyIndex( propertyName );
+ if( targetPropertyIndex == Property::INVALID_INDEX )
+ {
+ std::string convertedName = V8Utils::JavaScriptNameToPropertyName( propertyName );
+ targetPropertyIndex = targetActor.GetPropertyIndex( convertedName );
+
+ if( targetPropertyIndex == Property::INVALID_INDEX )
+ {
+ DALI_SCRIPT_EXCEPTION( isolate, "Property not found" );
+ }
+ }
+
+ //Get source actor
+ Actor sourceActor = V8Utils::GetActorParameter( PARAMETER_2, found, isolate, args );
+ if( !found )
+ {
+ DALI_SCRIPT_EXCEPTION( isolate, "bad parameter 2 (Actor)" );
+ }
+
+ // try both properties with dashes and without
+ propertyName = V8Utils::GetStringParameter( PARAMETER_3, found, isolate, args );
+ if(!found)
+ {
+ DALI_SCRIPT_EXCEPTION( isolate, "bad parameter 3 (Property name)" );
+ return;
+ }
+
+ Property::Index sourcePropertyIndex = sourceActor.GetPropertyIndex( propertyName );
+ if( sourcePropertyIndex == Property::INVALID_INDEX )
+ {
+ std::string convertedName = V8Utils::JavaScriptNameToPropertyName( propertyName );
+ sourcePropertyIndex = sourceActor.GetPropertyIndex( convertedName );
+
+ if( sourcePropertyIndex == Property::INVALID_INDEX )
+ {
+ DALI_SCRIPT_EXCEPTION( isolate, "Property not found" );
+ return;
+ }
+ }
+
+ //Check if forward vector is specified
+ Vector3 forward( 0.0f,0.0f,0.0f);
+ if( args.Length() > 4 )
+ {
+ forward = V8Utils::GetVector3Parameter( PARAMETER_4, found, isolate, args );
+ if( !found )
+ {
+ DALI_SCRIPT_EXCEPTION( isolate, "bad parameter 4 (Vector3)" );
+ return;
+ }
+ }
+
+ pathConstraint.Apply( Dali::Property(sourceActor,sourcePropertyIndex),
+ Dali::Property(targetActor,targetPropertyIndex),
+ forward );
+
+}
+
+void ActorApi::RemovePathConstraint( const v8::FunctionCallbackInfo< v8::Value >& args )
+{
+ v8::Isolate* isolate = args.GetIsolate();
+ v8::HandleScope handleScope( isolate );
+
+ //Get target actor
+ Actor actor = GetActor( isolate, args );
+
+ //Get PathConstraint
+ bool found(false);
+ Handle pathConstraintHandle = V8Utils::GetHandleParameter(PARAMETER_0, found, isolate, args );
+ if( !found )
+ {
+ DALI_SCRIPT_EXCEPTION( isolate, "bad parameter 0 (PathConstraint)" );
+ return;
+ }
+ PathConstraint pathConstraint = PathConstraint::DownCast(pathConstraintHandle);
+ pathConstraint.Remove(actor);
+}
+
} // namespace V8Plugin
} // namespace Dali
void RotateBy( const v8::FunctionCallbackInfo< v8::Value >& args );
void ScaleBy( const v8::FunctionCallbackInfo< v8::Value >& args );
+ // new function just for JavaScript API, to apply a PathConstraint to an actor
+ void ApplyPathConstraint( const v8::FunctionCallbackInfo< v8::Value >& args );
+
+ // new function just for JavaScript API, to remove a PathConstraint from an actor
+ void RemovePathConstraint( const v8::FunctionCallbackInfo< v8::Value >& args );
+
// new function just for JavaScript API, to help developers know what type of actor
// they're dealing with, returns actor name as a string
void GetActorType( const v8::FunctionCallbackInfo< v8::Value >& args );
{ "FindChildById", ActorApi::FindChildById, ACTOR_API },
{ "GetParent" , ActorApi::GetParent, ACTOR_API },
{ "GetActorType" , ActorApi::GetActorType, ACTOR_API }, // custom for javascript
+ { "ApplyPathConstraint", ActorApi::ApplyPathConstraint, ACTOR_API }, // custom for javascript
+ { "RemovePathConstraint", ActorApi::RemovePathConstraint, ACTOR_API }, // custom for javascript
// ignore. SetParentOrigin() use Actor.parentOrigin
// ignore. GetCurrentParentOrigin() use Actor.parentOrigin
--- /dev/null
+/*
+ * 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 "path-constraint-wrapper.h"
+
+// INTERNAL INCLUDES
+#include <v8-utils.h>
+#include <dali-wrapper.h>
+#include <shared/object-template-helper.h>
+
+namespace Dali
+{
+
+namespace V8Plugin
+{
+
+PathConstraintWrapper::PathConstraintWrapper( PathConstraint pathConstraint, GarbageCollectorInterface& gc )
+:HandleWrapper( BaseWrappedObject::PATH_CONSTRAINT, pathConstraint, gc ),
+ mPathConstraint( pathConstraint )
+{
+}
+
+v8::Handle<v8::ObjectTemplate> PathConstraintWrapper::MakePathConstraintTemplate( v8::Isolate* isolate )
+{
+ v8::EscapableHandleScope handleScope( isolate );
+
+ v8::Local<v8::ObjectTemplate> objTemplate = v8::ObjectTemplate::New();
+ objTemplate->SetInternalFieldCount( BaseWrappedObject::FIELD_COUNT );
+
+ // property handle intercepts property getters and setters and signals
+ HandleWrapper::AddInterceptsToTemplate( isolate, objTemplate );
+
+ return handleScope.Escape( objTemplate );
+}
+
+v8::Handle<v8::Object> PathConstraintWrapper::WrapPathConstraint( v8::Isolate* isolate, PathConstraint pathConstraint )
+{
+ v8::EscapableHandleScope handleScope( isolate );
+ v8::Local<v8::ObjectTemplate> objectTemplate;
+
+ objectTemplate = MakePathConstraintTemplate( isolate );
+
+ // create an instance of the template
+ v8::Local<v8::Object> localObject = objectTemplate->NewInstance();
+
+ // create the pathconstraint object
+ PathConstraintWrapper* pointer = new PathConstraintWrapper( pathConstraint, Dali::V8Plugin::DaliWrapper::Get().GetDaliGarbageCollector() );
+
+ // assign the JavaScript object to the wrapper.
+ // This also stores Dali object, in an internal field inside the JavaScript object.
+ pointer->SetJavascriptObject( isolate, localObject );
+
+ return handleScope.Escape( localObject );
+}
+
+PathConstraint PathConstraintWrapper::GetPathConstraint()
+{
+ return mPathConstraint;
+}
+
+/**
+ * Create an initialized PathConstraint handle.
+ * @constructor
+ * @for Path
+ * @method Path
+ */
+void PathConstraintWrapper::NewPathConstraint( const v8::FunctionCallbackInfo< v8::Value >& args)
+{
+ v8::Isolate* isolate = args.GetIsolate();
+ v8::HandleScope handleScope( isolate );
+
+ if( !args.IsConstructCall() )
+ {
+ DALI_SCRIPT_EXCEPTION( isolate, "constructor called without 'new" );
+ return;
+ }
+
+ //Extract Path Handle
+ bool parameterFound;
+ Handle pathHandle = V8Utils::GetHandleParameter( PARAMETER_0, parameterFound, isolate, args );
+ if( !parameterFound )
+ {
+ DALI_SCRIPT_EXCEPTION( isolate, "bad parameter 0 (Path)" );
+ return;
+ }
+ Dali::Path path = Path::DownCast(pathHandle);
+
+ //Extract range
+ Vector2 range = V8Utils::GetVector2Parameter( PARAMETER_1, parameterFound, isolate, args );
+ if( !parameterFound )
+ {
+ DALI_SCRIPT_EXCEPTION( isolate, "bad parameter 1 (Range)" );
+ return;
+ }
+
+ PathConstraint pathConstraint = PathConstraint::New(path, range );
+ v8::Local<v8::Object> localObject = WrapPathConstraint( isolate, pathConstraint );
+ args.GetReturnValue().Set( localObject );
+}
+
+
+} // namespace V8Plugin
+
+} // namespace Dali
--- /dev/null
+#ifndef __DALI_V8PLUGIN_PATH_CONSTRAINT_WRAPPER_H__
+#define __DALI_V8PLUGIN_PATH_CONSTRAINT_WRAPPER_H__
+
+/*
+ * 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.
+ *
+ */
+
+// EXTERNAL INCLUDES
+#include <v8.h>
+#include <dali/public-api/animation/path-constraint.h>
+
+// INTERNAL INCLUDES
+#include <object/handle-wrapper.h>
+
+
+namespace Dali
+{
+
+namespace V8Plugin
+{
+
+/**
+ * Wraps a Path.
+ */
+class PathConstraintWrapper : public HandleWrapper
+{
+
+public:
+
+ /**
+ * Constructor
+ */
+ PathConstraintWrapper( PathConstraint pathConstraint, GarbageCollectorInterface& gc );
+
+ /**
+ * Virtual destructor
+ */
+ virtual ~PathConstraintWrapper(){};
+
+ /**
+ * Creates a new PathConstraint wrapped inside a Javascript Object.
+ * @param[in] args v8 function call arguments interpreted
+ */
+ static void NewPathConstraint( const v8::FunctionCallbackInfo< v8::Value >& args);
+
+ /**
+ * Wraps a PathConstraint inside a Javascript object
+ */
+ static v8::Handle<v8::Object> WrapPathConstraint(v8::Isolate* isolate, PathConstraint pathConstraint );
+
+ /*
+ * Get the wrapped PathConstraint
+ */
+ PathConstraint GetPathConstraint();
+
+private:
+
+ /**
+ * Create a v8 object template for the PathConstraint
+ */
+ static v8::Handle<v8::ObjectTemplate> MakePathConstraintTemplate( v8::Isolate* isolate );
+
+ PathConstraint mPathConstraint;
+};
+
+} // namespace V8Plugin
+
+} // namespace Dali
+
+#endif // header
#include <image/image-wrapper.h>
#include <text/font-wrapper.h>
#include <animation/path-wrapper.h>
+#include <animation/path-constraint-wrapper.h>
#include <animation/animation-wrapper.h>
#include <events/pan-gesture-detector-wrapper.h>
#include <shader-effects/shader-effect-wrapper.h>
{ "Matrix", PropertyValueWrapper::NewMatrix},
{ "Font", FontWrapper::NewFont },
{ "Path", PathWrapper::NewPath },
+ { "PathConstraint", PathConstraintWrapper::NewPathConstraint },
{ "Actor", ActorWrapper::NewActor },
{ "TextActor", ActorWrapper::NewActor },
{ "ImageActor", ActorWrapper::NewActor },
CONNECTION,
ANIMATION,
PATH,
+ PATH_CONSTRAINT,
BUILDER,
STAGE,
FONT,
PARAMETER_1 = 1, ///< second parameter of a function call
PARAMETER_2 = 2, ///< third parameter of a function call
PARAMETER_3 = 3, ///< forth parameter of a function call
+ PARAMETER_4 = 4, ///< fifth parameter of a function call
};
#define DALI_SCRIPT_EXCEPTION( isolate, message ) V8Utils::ScriptError( __FUNCTION__ , isolate, message );