本文整理汇总了C++中AttributeValue::SimpleCopy方法的典型用法代码示例。如果您正苦于以下问题:C++ AttributeValue::SimpleCopy方法的具体用法?C++ AttributeValue::SimpleCopy怎么用?C++ AttributeValue::SimpleCopy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AttributeValue
的用法示例。
在下文中一共展示了AttributeValue::SimpleCopy方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SaveCurrentFill
BOOL FreeHandEPSFilter::SaveCurrentFill()
{
// get rid of any stored fill
if(OldFill != 0)
delete OldFill;
// create a copy of the current fill attribute
CCRuntimeClass* ObjectType = CurrentAttrs[ATTR_FILLGEOMETRY].pAttr->GetRuntimeClass();
AttributeValue* AttrClone = (AttributeValue*)ObjectType->CreateObject();
if(AttrClone == 0)
return FALSE;
AttrClone->SimpleCopy(CurrentAttrs[ATTR_FILLGEOMETRY].pAttr);
// set the old fill pointer to the nice clone we've made
OldFill = AttrClone;
return TRUE;
}
示例2: Copy
BOOL RenderStack::Copy(const RenderStack *Other, RenderRegion *pRegion)
{
ERROR3IF(Other == NULL || pRegion == NULL, "Illegal NULL params");
// WEBSTER - markn 15/8/97
// This has bee taken out of Webster builds as it can cause fatal access violations with Paper render regions.
// It is new path processor code that not's totally bug-free, and as path processors are not used in Webster,
// it can be safely taken out.
#ifndef WEBSTER
// Make sure all attributes are properly popped && deinitialised, so that any used
// PathProcessors are correctly removed, etc
// (Note: This doesn't deinit the DEFAULT attributes, which we hope will never use
// PathProcessors - this should be OK, because the places where this is called from
// (at present) always make sure all PathProcessors are properly cleaned up too)
CleanUpBeforeDestruct(pRegion);
#endif // WEBSTER
// Make sure we have an empty stack to work with
if (TheStack!=NULL)
{
// Empty the current stack before copying the new one onto it
// For every item in the stack, check to see if it is 'temporary'. If it is,
// we can't use it in our stack - we must take a copy.
for (UINT32 i=0; i<Top; i++)
{
// Get rid of all the temp attrs in the stack
if (TheStack[i].Temporary)
{
// Delete this tempory attr.
CC_ASSERT_VALID(TheStack[i].pAttrValue);
delete TheStack[i].pAttrValue;
}
}
// then get rid of the stack itself
CCFree(TheStack);
TheStack=NULL;
ContextLevel = 0;
StackLimit = 0;
Top = 0;
}
// Sanity check
ENSURE(TheStack == NULL,"RenderStack::Copy called on a non-empty stack");
#if FALSE
// Jason (7/3/97)
// Copying the stack like this is rampant. We must render all the attributes across onto
// the new stack, so that they are properly stacked and initialised
/*
// Copy stack variables
ContextLevel = Other->ContextLevel;
StackLimit = Other->StackLimit;
Top = Other->Top;
// The other stack may be empty, which will often be the case when merging as it may
// not have started rendering yet.
if (Other->TheStack == NULL)
{
// Just to be on the safe side
TheStack = NULL;
// We're done.
return TRUE;
}
// Allocate the same amount of memory for the stack
TheStack = (AttributeRec *) CCMalloc(StackLimit * ITEM_SIZE);
if (TheStack == NULL)
return FALSE;
// Copy the other render region's stack data into this new stack
memcpy(TheStack, Other->TheStack, StackLimit * ITEM_SIZE);
// For every item in the stack, check to see if it is 'temporary'. If it is,
// we can't use it in our stack - we must take a copy.
for (UINT32 i = 0; i < Top; i++)
{
if (TheStack[i].Temporary)
{
// Get the runtime class info on this object
CCRuntimeClass *pCCRuntimeClass = TheStack[i].pAttrValue->GetRuntimeClass();
// Create another object of the same type
AttributeValue *pNewAttr = (AttributeValue *) pCCRuntimeClass->CreateObject();
if (pNewAttr == NULL)
{
// Failed to create object - quit with error, but first ensure that this
// stack is limited to the items copied so far. Otherwise the destructor
// will attempt to delete objects that belong to the other stack.
Top = i;
return FALSE;
}
// Object created ok - get the object to copy its contents across.
pNewAttr->SimpleCopy(TheStack[i].pAttrValue);
// Put it in the stack
//.........这里部分代码省略.........