本文整理汇总了C++中property::Array类的典型用法代码示例。如果您正苦于以下问题:C++ Array类的具体用法?C++ Array怎么用?C++ Array使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Array类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CreatePropertyMap
void CreatePropertyMap( Actor actor, Property::Map& map )
{
map.Clear();
if ( actor )
{
map[ "type" ] = actor.GetTypeName();
// Default properties
Property::IndexContainer indices;
actor.GetPropertyIndices( indices );
const Property::IndexContainer::ConstIterator endIter = indices.End();
for ( Property::IndexContainer::Iterator iter = indices.Begin(); iter != endIter; ++iter )
{
map[ actor.GetPropertyName( *iter ) ] = actor.GetProperty( *iter );
}
// Children
unsigned int childCount( actor.GetChildCount() );
if ( childCount )
{
Property::Array childArray;
for ( unsigned int child = 0; child < childCount; ++child )
{
Property::Map childMap;
CreatePropertyMap( actor.GetChildAt( child ), childMap );
childArray.PushBack( childMap );
}
map[ "actors" ] = childArray;
}
}
}
示例2: NewActor
Actor NewActor( const Property::Map& map )
{
BaseHandle handle;
// First find type and create Actor
Property::Value* typeValue = map.Find( "type" );
if ( typeValue )
{
TypeInfo type = TypeRegistry::Get().GetTypeInfo( typeValue->Get< std::string >() );
if ( type )
{
handle = type.CreateInstance();
}
}
if ( !handle )
{
DALI_LOG_ERROR( "Actor type not provided\n" );
return Actor();
}
Actor actor( Actor::DownCast( handle ) );
if ( actor )
{
// Now set the properties, or create children
for ( unsigned int i = 0, mapCount = map.Count(); i < mapCount; ++i )
{
const StringValuePair& pair( map.GetPair( i ) );
const std::string& key( pair.first );
if ( key == "type" )
{
continue;
}
const Property::Value& value( pair.second );
if ( key == "actors" )
{
// Create children
Property::Array actorArray = value.Get< Property::Array >();
for ( Property::Array::SizeType i = 0; i < actorArray.Size(); ++i)
{
actor.Add( NewActor( actorArray[i].Get< Property::Map >() ) );
}
}
else
{
Property::Index index( actor.GetPropertyIndex( key ) );
if ( index != Property::INVALID_INDEX )
{
actor.SetProperty( index, value );
}
}
}
}
return actor;
}
示例3: UtcDaliPropertyArrayCapacityP
int UtcDaliPropertyArrayCapacityP(void)
{
Property::Array array;
DALI_TEST_CHECK( array.Empty() );
array.Reserve(3);
DALI_TEST_CHECK( 3 == array.Capacity() );
END_TEST;
}
示例4: UtcDaliPropertyArrayResize
int UtcDaliPropertyArrayResize(void)
{
Property::Array array;
array.Resize(3);
DALI_TEST_CHECK( array.Count() == 3 );
array.Resize(5);
DALI_TEST_CHECK( array.Count() == 5 );
END_TEST;
}
示例5: switch
void Property::Value::SetItem(const int index, const Property::Value &value)
{
switch( GetType() )
{
case Property::MAP:
{
Property::Map *container = AnyCast<Property::Map>(&(mImpl->mValue));
if( container && index < static_cast<int>(container->size()) )
{
int i = 0;
for(Property::Map::iterator iter = container->begin(); iter != container->end(); ++iter)
{
if(i++ == index)
{
iter->second = value;
break;
}
}
}
}
break;
case Property::ARRAY:
{
Property::Array *container = AnyCast<Property::Array>(&(mImpl->mValue));
if( container && index < static_cast<int>(container->size()) )
{
(*container)[index] = value;
}
}
break;
case Property::NONE:
case Property::BOOLEAN:
case Property::FLOAT:
case Property::INTEGER:
case Property::UNSIGNED_INTEGER:
case Property::VECTOR2:
case Property::VECTOR3:
case Property::VECTOR4:
case Property::MATRIX3:
case Property::MATRIX:
case Property::RECTANGLE:
case Property::ROTATION:
case Property::STRING:
case Property::TYPE_COUNT:
{
DALI_ASSERT_ALWAYS(!"Cannot SetItem on property Type; not a container");
break;
}
}
}
示例6: UtcDaliPropertyArrayPushBackP
int UtcDaliPropertyArrayPushBackP(void)
{
Property::Array array;
DALI_TEST_CHECK( 0 == array.Size() );
array.PushBack( 1 );
DALI_TEST_CHECK( 1 == array.Size() );
DALI_TEST_CHECK( array[0].Get<int>() == 1 );
END_TEST;
}
示例7: UtcDaliPropertyArrayIndexOperatorP
int UtcDaliPropertyArrayIndexOperatorP(void)
{
Property::Array array;
array.Reserve(3);
array.PushBack( 1 );
array.PushBack( "world" );
array.PushBack( 3 );
DALI_TEST_CHECK( array[0].Get<int>() == 1 );
DALI_TEST_CHECK( array[1].Get<std::string>() == "world" );
DALI_TEST_CHECK( array[2].Get<int>() == 3 );
END_TEST;
}
示例8: GetType
int Property::Value::AppendItem(const Property::Value &value)
{
DALI_ASSERT_DEBUG(Property::ARRAY == GetType() && "Property type invalid");
Property::Array *container = AnyCast<Property::Array>(&(mImpl->mValue));
if(container)
{
container->push_back(value);
return container->size() - 1;
}
else
{
return -1;
}
}
示例9: UtcDaliPropertyArrayCountP
int UtcDaliPropertyArrayCountP(void)
{
Property::Array array;
DALI_TEST_CHECK( 0 == array.Capacity() );
DALI_TEST_CHECK( 0 == array.Count() );
array.Reserve(3);
DALI_TEST_CHECK( 3 == array.Capacity() );
DALI_TEST_CHECK( 0 == array.Count() );
array.PushBack( 1 );
array.PushBack( "world" );
array.PushBack( 3 );
DALI_TEST_CHECK( 3 == array.Count() );
END_TEST;
}
示例10: UtcDaliPropertyArrayClearP
int UtcDaliPropertyArrayClearP(void)
{
Property::Array array;
DALI_TEST_CHECK( array.Empty() );
array.Reserve(3);
DALI_TEST_CHECK( array.Empty() );
array.PushBack( 1 );
array.PushBack( "world" );
array.PushBack( 3 );
DALI_TEST_CHECK( !array.Empty() );
array.Clear();
DALI_TEST_CHECK( array.Empty() );
END_TEST;
}
示例11: UtcDaliScriptingNewActorChildren
int UtcDaliScriptingNewActorChildren(void)
{
TestApplication application;
Property::Map map;
map[ "type" ] = "Actor";
map[ "position" ] = Vector3::XAXIS;
Property::Map child1Map;
child1Map[ "type" ] = "ImageActor";
child1Map[ "position" ] = Vector3::YAXIS;
Property::Array childArray;
childArray.PushBack( child1Map );
map[ "actors" ] = childArray;
// Create
Actor handle = NewActor( map );
DALI_TEST_CHECK( handle );
Stage::GetCurrent().Add( handle );
application.SendNotification();
application.Render();
DALI_TEST_EQUALS( handle.GetCurrentPosition(), Vector3::XAXIS, TEST_LOCATION );
DALI_TEST_EQUALS( handle.GetChildCount(), 1u, TEST_LOCATION );
Actor child1 = handle.GetChildAt(0);
DALI_TEST_CHECK( child1 );
DALI_TEST_CHECK( ImageActor::DownCast( child1 ) );
DALI_TEST_EQUALS( child1.GetCurrentPosition(), Vector3::YAXIS, TEST_LOCATION );
DALI_TEST_EQUALS( child1.GetChildCount(), 0u, TEST_LOCATION );
Stage::GetCurrent().Remove( handle );
END_TEST;
}
示例12: GetDefaultProperty
Property::Value PathConstrainer::GetDefaultProperty( Property::Index index ) const
{
if( index == Dali::PathConstrainer::Property::FORWARD )
{
return Property::Value( mForward );
}
else
{
if( index == Dali::PathConstrainer::Property::POINTS )
{
Property::Value value( Property::ARRAY );
Property::Array* array = value.GetArray();
const Dali::Vector<Vector3>& point = mPath->GetPoints();
Property::Array::SizeType pointCount = point.Size();
if( array )
{
array->Reserve( pointCount );
for( Property::Array::SizeType i = 0; i < pointCount; ++i )
{
array->PushBack( point[i] );
}
}
return value;
}
else if( index == Dali::PathConstrainer::Property::CONTROL_POINTS )
{
Property::Value value( Property::ARRAY );
Property::Array* array = value.GetArray();
const Dali::Vector<Vector3>& point = mPath->GetControlPoints();
Property::Array::SizeType pointCount = point.Size();
if( array )
{
array->Reserve( pointCount );
for( Property::Array::SizeType i = 0; i < pointCount; ++i )
{
array->PushBack( point[i] );
}
}
return value;
}
}
return Property::Value();
}
示例13: GetDefaultProperty
Property::Value LinearConstrainer::GetDefaultProperty( Property::Index index ) const
{
if( index == Dali::LinearConstrainer::Property::VALUE )
{
Property::Value value( Property::ARRAY );
Property::Array* array = value.GetArray();
size_t count( mValue.Size() );
if( array )
{
array->Reserve( count );
for( size_t i( 0 ); i != count; ++i )
{
array->PushBack( mValue[i] );
}
}
return value;
}
else if( index == Dali::LinearConstrainer::Property::PROGRESS )
{
Property::Value value( Property::ARRAY );
Property::Array* array = value.GetArray();
size_t count( mValue.Size() );
if( array )
{
array->Reserve( count );
for( size_t i( 0 ); i != count; ++i )
{
array->PushBack( mProgress[i] );
}
}
return value;
}
return Property::Value();
}
示例14: UtcDaliControlRendererSize
int UtcDaliControlRendererSize(void)
{
ToolkitTestApplication application;
tet_infoline( "UtcDaliControlRendererGetNaturalSize" );
RendererFactory factory = RendererFactory::Get();
Vector2 rendererSize( 20.f, 30.f );
Vector2 naturalSize;
// color renderer
ControlRenderer colorRenderer = factory.GetControlRenderer( Color::MAGENTA );
colorRenderer.SetSize( rendererSize );
DALI_TEST_EQUALS( colorRenderer.GetSize(), rendererSize, TEST_LOCATION );
colorRenderer.GetNaturalSize(naturalSize);
DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
// image renderer
Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
ControlRenderer imageRenderer = factory.GetControlRenderer( image );
imageRenderer.SetSize( rendererSize );
DALI_TEST_EQUALS( imageRenderer.GetSize(), rendererSize, TEST_LOCATION );
imageRenderer.GetNaturalSize(naturalSize);
DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 200.f), TEST_LOCATION );
// n patch renderer
TestPlatformAbstraction& platform = application.GetPlatform();
Vector2 testSize(80.f, 160.f);
platform.SetClosestImageSize(testSize);
image = ResourceImage::New(TEST_NPATCH_FILE_NAME);
ControlRenderer nPatchRenderer = factory.GetControlRenderer( image );
nPatchRenderer.SetSize( rendererSize );
DALI_TEST_EQUALS( nPatchRenderer.GetSize(), rendererSize, TEST_LOCATION );
nPatchRenderer.GetNaturalSize(naturalSize);
DALI_TEST_EQUALS( naturalSize, testSize, TEST_LOCATION );
// border renderer
float borderSize = 5.f;
ControlRenderer borderRenderer = factory.GetControlRenderer( borderSize, Color::RED );
borderRenderer.SetSize( rendererSize );
DALI_TEST_EQUALS( borderRenderer.GetSize(), rendererSize, TEST_LOCATION );
borderRenderer.GetNaturalSize(naturalSize);
DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
// gradient renderer
Property::Map propertyMap;
propertyMap.Insert("renderer-type", "gradient-renderer");
Vector2 start(-1.f, -1.f);
Vector2 end(1.f, 1.f);
propertyMap.Insert("gradient-start-position", start);
propertyMap.Insert("gradient-end-position", end);
propertyMap.Insert("gradient-stop-offset", Vector2(0.f, 1.f));
Property::Array stopColors;
stopColors.PushBack( Color::RED );
stopColors.PushBack( Color::GREEN );
propertyMap.Insert("gradient-stop-color", stopColors);
ControlRenderer gradientRenderer = factory.GetControlRenderer(propertyMap);
gradientRenderer.SetSize( rendererSize );
DALI_TEST_EQUALS( gradientRenderer.GetSize(), rendererSize, TEST_LOCATION );
gradientRenderer.GetNaturalSize(naturalSize);
DALI_TEST_EQUALS( naturalSize, Vector2::ZERO,TEST_LOCATION );
END_TEST;
}
示例15: SetPropertyFromNode
//.........这里部分代码省略.........
if( OptionalVector4 ov = replacer.IsVector4(node) )
{
const Vector4& v = *ov;
// angle, axis as per spec
value = Quaternion(Radian(Degree(v[3])),
Vector3(v[0],v[1],v[2]));
done = true;
}
}
else
{
// degrees Euler as per spec
if( OptionalVector3 v = replacer.IsVector3(node) )
{
value = Quaternion(Radian(Degree((*v).x)),
Radian(Degree((*v).y)),
Radian(Degree((*v).z)));
done = true;
}
}
break;
}
case Property::STRING:
{
if( OptionalString v = replacer.IsString(node) )
{
value = *v;
done = true;
}
break;
}
case Property::ARRAY:
{
if( replacer.IsArray( node, value ) )
{
done = true;
}
else if(node.Size())
{
value = Property::Value(Property::ARRAY);
Property::Array* array = value.GetArray();
unsigned int i = 0;
TreeNode::ConstIterator iter(node.CBegin());
if( array )
{
for( ; i < node.Size(); ++i, ++iter)
{
Property::Value childValue;
if( SetPropertyFromNode( (*iter).second, childValue, replacer ) )
{
array->PushBack( childValue );
}
}
if( array->Count() == node.Size() )
{
done = true;
}
else
{
done = false;
}
}
}