本文整理汇总了C++中NodeAttribute类的典型用法代码示例。如果您正苦于以下问题:C++ NodeAttribute类的具体用法?C++ NodeAttribute怎么用?C++ NodeAttribute使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了NodeAttribute类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetNextAssoc
void CCAttrMap::TransformForBrush(TransformBase& Trans)
{
CCRuntimeClass *pType;
void *pVal;
for( iterator Pos = GetStartPosition(); Pos != GetEndPosition(); )
{
GetNextAssoc(Pos,pType,pVal);
if (pVal != NULL)
{
NodeAttribute* pNodeAttr = (NodeAttribute *)pVal;
// check that we are not about to set line width to zero
if( pNodeAttr->IsALineWidthAttr() && Trans.TransLines != FALSE )
{
double Test = Trans.GetScalar().MakeDouble() * (double)((AttrLineWidth*)pNodeAttr)->Value.LineWidth;
// TRACEUSER( "Diccon", _T("Scale line width by %f\n"), Test);
if (Test <= 1.0)
{
// TRACEUSER( "Diccon", _T("Setting line width scaling OFF\n"));
Trans.TransLines = FALSE;
}
}
if (pNodeAttr->NeedsToRenderAtEachBrushStroke())
pNodeAttr->Transform(Trans);
}
}
}
示例2: CCAttrMap
CCAttrMap* CCAttrMap::Copy()
{
CCAttrMap *pNewAttrMap = new CCAttrMap( GetCount() );
if( pNewAttrMap != NULL )
{
// iterating all (key, value) pairs
for( iterator Pos = GetStartPosition(); Pos != GetEndPosition(); )
{
CCRuntimeClass *pType;
void *pVal;
GetNextAssoc( Pos, pType, pVal );
// Get the attribute value of this attribute
NodeAttribute* pAttr = (NodeAttribute*)pVal;
// Copy the attribute
NodeAttribute* pNewAttr = (NodeAttribute*) (pAttr->SimpleCopy());
// Stick the new attr into the new attr map
if (pNewAttr != NULL)
pNewAttrMap->SetAt(pNewAttr->GetAttributeType(),pNewAttr);
}
}
pNewAttrMap->attrMapCreator = attrMapCreator;
return pNewAttrMap;
}
示例3: reBuildPrimaryKeyFromAttribute
void ERModel::reBuildPrimaryKeyFromAttribute( int attributeID, int entityID )
{
NodeAttribute* attributeNode = static_cast<NodeAttribute*>(searchComponent(attributeID));
NodeEntity* entityNode = static_cast<NodeEntity*>(searchComponent(entityID));
attributeNode->setIsPrimaryKey(true);
entityNode->setPrimaryKey(attributeID);
}
示例4: FindFirstChild
void NodeRenderableInk::DeleteFactoredOutAttribs(BOOL Global, AttrTypeSet* pAffectedAttrTypes)
{
Node* pGroupNode = FindFirstChild();
while(pGroupNode!=NULL)
{
// Karim 30/08/2000
// Non-optimisable attributes, like feathers and names,
// must not be automatically deleted - only automatically delete optimisable ones.
if (pGroupNode->IsAnAttribute() && ((NodeAttribute*)pGroupNode)->ShouldBeOptimized())
{
NodeAttribute* pGroupAttr = (NodeAttribute*)pGroupNode;
CCRuntimeClass* GrouptAttrType = pGroupAttr->GetAttributeType();
if (pAffectedAttrTypes==NULL || pAffectedAttrTypes->InSet(GrouptAttrType))
{
// delete this group attr type from all child objects of this group
// BUT if obj discards child attrs only delete attr if it also has same value
for (Node* pNode=FindFirstChild(); pNode!=NULL; pNode=pNode->FindNext())
{
if (pNode->IsAnObject())
{
NodeRenderableInk* pObject = (NodeRenderableInk*)pNode;
NodeAttribute* pDeadAttr = pObject->GetChildAttrOfType(GrouptAttrType);
if (pDeadAttr!=NULL)
{
// This code used to only test the attribute for equality if pObject
// returned TRUE from DiscardsAttributeChildren, otherwise it would
// just assume that they are identical and delete it.
// The DiscardAttributeChildren checks are now done elsewhere so
// this code now just assumes it can delete any attributes that have
// got this far.
// This optimisation relies on the tree being in a "legal" state
// at the start (i.e. correctly optimised) and also helps to correct
// problems where attributes may have been incorrectly left on children
// (though such "corrections" may change the appearance of the document).
pDeadAttr->CascadeDelete();
delete pDeadAttr;
}
}
}
}
}
pGroupNode = pGroupNode->FindNext();
}
// Do we need to delete any parent compound's attributes
if (Global)
{
Node* pParent = FindParent();
if (pParent && (pParent->IsCompound()))
{
// We need to delete the parent's attributes first (Recursive bit)
((NodeRenderableInk*)pParent)->DeleteFactoredOutAttribs(Global, pAffectedAttrTypes);
}
}
}
示例5:
vector<pair<int, bool>> ERModel::reBuildPrimaryKey( Component* oldAttributeNode, int newEntityNodeID, int newAttributeNodeID )
{
vector<pair<int, bool>> reBuildPrimaryKeySet;
vector<int> primaryKey;
NodeAttribute* tempOldAttributeNode = static_cast<NodeAttribute*>(oldAttributeNode);
if (tempOldAttributeNode->getIsPrimaryKey())
{
primaryKey.push_back(newAttributeNodeID);
setPrimaryKey(newEntityNodeID, primaryKey);
reBuildPrimaryKeySet.push_back(make_pair(newAttributeNodeID, true));
return reBuildPrimaryKeySet;
}
return reBuildPrimaryKeySet;
}
示例6: ENSURE
BOOL NodeRenderableInk::FactorOutCommonChildAttrHelper(BOOL Global, AttrTypeSet* pAffectedAttrTypes)
{
// This function should only ever get called on a compound object
ENSURE(IsCompound(), "FactorOutCommonChildAttributes called on a non compound object");
CommonAttrSet CommonAttributeSet; // A list of CommonAttributeItems
if (!FindCommonAttributesToFactorOut(&CommonAttributeSet)) // Ignores attr discard nodes
{
return FALSE;
}
NodeAttribute* pFactoredOutAttr;
// Ok let's add the common attributes to the first child of the group
CommonAttributeItem* pCommonAttr;
for (pCommonAttr = (CommonAttributeItem*)CommonAttributeSet.GetHead();
pCommonAttr != NULL;
pCommonAttr = (CommonAttributeItem*)CommonAttributeSet.GetNext(pCommonAttr))
{
// Is the common attribute an attribute which should be factored out ?
if (!pAffectedAttrTypes || (pAffectedAttrTypes->InSet(pCommonAttr->pAttr->GetAttributeType())) )
{
//pCommonAttr->pAttr->MoveNode(this, FIRSTCHILD);
// Take a copy of the node and insert it as a first child
pFactoredOutAttr = (NodeAttribute*)(pCommonAttr->pAttr->SimpleCopy());
if (!pFactoredOutAttr)
return FALSE;
pFactoredOutAttr->AttachNode(this, FIRSTCHILD, TRUE, FALSE);
}
}
// The CommonAttributeSet is no longer required
CommonAttributeSet.DeleteAll();
// Do we need to factor out the parents attributes ?
if (Global)
{
Node* pParent = FindParent();
if (pParent && (pParent->IsCompound()))
{
// We need to localise the parent's attributes first (Recursive bit)
if (!(((NodeRenderableInk*)pParent)->FactorOutCommonChildAttrHelper(TRUE, pAffectedAttrTypes)))
{
return FALSE; // Failed
}
}
}
return TRUE; // Success
}
示例7: FindCommonWebAttribute
WebCommonAttributeResult WebAddressDlg::FindCommonWebAttribute(WebAddressAttribute* pwaaReturn)
{
//First we need to get the current selection
SelRange* pSelRange=GetApplication()->FindSelection();
//If pSelRange doesn't exist, return No Selection
if (!pSelRange)
return WCA_NOSELECTION;
//Find the common Web Attribute on the selection
Range::CommonAttribResult carResult;
NodeAttribute* pnaApplied;
carResult=pSelRange->FindCommonAttribute(CC_RUNTIME_CLASS(AttrWebAddress), &pnaApplied);
//If this function has returned ATTR_NONE or ATTR_MANY, return our
//analogous value
if (carResult==SelRange::ATTR_NONE)
return WCA_NOSELECTION;
if (carResult==SelRange::ATTR_MANY)
return WCA_MANY;
//Otherwise, we know we have one Web Address attribute on the selection.
//We must find out whether it is the default attribute
//First extract the attribute value from the node we have found
WebAddressAttribute* pWebAddressAttribute=
(WebAddressAttribute*) pnaApplied->GetAttributeValue();
WebAddressAttribute waaApplied=*pWebAddressAttribute;
//And if the user wants this value returned, make a copy of it now
if (pwaaReturn)
*pwaaReturn=waaApplied;
//And get the default Web Address attribute
WebAddressAttribute waaDefault;
if (AttributeManager::GetDefaultAttribute(ATTR_WEBADDRESS, &waaDefault))
{
//If they are the same, return WCA_DEFAULT.
//If they are different, return WCA_SINGLE
if (!waaApplied.IsDifferent(&waaDefault))
return WCA_DEFAULT;
}
return WCA_SINGLE;
}
示例8: ERROR3IF
BOOL LoadBrushDirect::OnLoadDocument(Document* pDoc)
{
ERROR3IF(pDoc==NULL,"No doc pointer during PrintMarksMan::ConvertAllDocColours!");
Node *CurNode = Node::DocFindFirstDepthFirst(pDoc);
Node *NextNode;
while (CurNode !=NULL)
{
// We may be about to chop this node out of the tree, so get the next node now
NextNode = CurNode->DocFindNextDepthFirst();
// Use to scan the colour fields of the attribute.
UINT32 Context = 0;
DocColour *pColour;
if (CurNode->IsAnAttribute())
{
NodeAttribute *pNodeAttr = (NodeAttribute *) CurNode;
// Get the next colour field from the attribute
pColour = pNodeAttr->EnumerateColourFields(Context++);
while (pColour != NULL)
{
// For each colour field, make sure the colour is a local DocColour so that
// the sub-tree is entirely stand-alone
if (pColour->FindParentIndexedColour() != NULL)
{
ColourGeneric ColDef;
ColourContext *cc = ColourManager::GetColourContext(pColour->GetColourModel());
ERROR3IF(cc == NULL, "Can't find colour context?!");
// Get the IndexedColour definition as a standalone colour definition
cc->ConvertColour(pColour->FindParentIndexedColour(), &ColDef);
// Make the DocColour into a simple standalone "lookalike" of the parent colour
*pColour = DocColour(pColour->GetColourModel(), &ColDef);
}
pColour = pNodeAttr->EnumerateColourFields(Context++);
}
}
CurNode = NextNode;
}
// All is well we hope.
return TRUE;
}
示例9: ERROR2IF
BOOL OpBackground::GetPageColour(Spread *pSpread, KernelBitmap **ppOutBitmap,
DocColour **ppOutColour)
{
ERROR2IF(pSpread == NULL,FALSE,"OpBackground::GetPageColour Bad params error!");
ERROR2IF(ppOutBitmap == NULL || ppOutColour == NULL,FALSE,"OpBackground::GetPageColour Bad params error!");
// Search for our special page background layer
Layer* pFoundLayer = pSpread->FindFirstPageBackgroundLayer();
if (pFoundLayer == NULL)
return FALSE;
// search for our page node
NodeRegularShape *pNode = DoFindPageRectangle(pSpread, pFoundLayer);
if (!pNode)
return FALSE;
// find the fill attribute applied to the page
NodeAttribute *pAppliedAttr = NULL;
pNode->FindAppliedAttribute(CC_RUNTIME_CLASS(AttrFillGeometry),&pAppliedAttr);
if (pAppliedAttr != NULL)
{
if (IS_A(pAppliedAttr, AttrFlatColourFill)) // flat colour fill?
{
// get the colour attribute
ColourFillAttribute *pColAttr = (ColourFillAttribute *)(pAppliedAttr->GetAttributeValue());
// set the colour pointer to the doc colour, and the bitmap pointer to NULL
*ppOutBitmap = NULL;
*ppOutColour = pColAttr->GetStartColour();
}
else if (IS_A(pAppliedAttr, AttrBitmapColourFill)) // bitmap fill
{
// set the colour pointer to NULL, and the bitmap pointer to the kernel bitmap
*ppOutBitmap = ((AttrFillGeometry *)pAppliedAttr)->GetBitmap();
*ppOutColour = NULL;
}
else
return FALSE;
}
else
return FALSE;
return TRUE;
}
示例10: Karim_MacDonald
/********************************************************************************************
> BOOL CCAttrMap::IsSeeThrough()
Author: Karim_MacDonald (Xara Group Ltd) <[email protected]>
Created: 19/02/2001
Returns: TRUE if at least one of our attrs IsSeeThrough(),
FALSE otherwise.
Purpose: Test each of the attributes in this map for see-through-ness.
This is not the same as transparency - what it means is: if I draw something
in white, then draw its outline as retrieved from PathBecomeA in black over
the top, will I still be able to see white bits?
IsSeeThrough() therefore depends partly on the implementation of PathBecomeA.
Examples:
Transparency is always see-through unless it is a zero transparency.
Line width is not see through - PathBecomeA can cope with this attr.
Fill colour is not see-through unless it is COLOUR_NONE.
Brush attrs are normally see-through, as PathBecomeA ignores them.
See Also: NodeRenderableInk::IsSeeThrough()
********************************************************************************************/
BOOL CCAttrMap::IsSeeThrough()
{
CCRuntimeClass *pKey;
void *pVal;
BOOL bIsSeeThrough = FALSE;
for ( iterator pos = GetStartPosition();
pos != GetEndPosition() && !bIsSeeThrough; )
{
GetNextAssoc(pos, pKey, pVal);
NodeAttribute* pAttr = (NodeAttribute*)pVal;
bIsSeeThrough = pAttr->IsSeeThrough(FALSE);
}
return bIsSeeThrough;
}
示例11: David_McClarnon
/********************************************************************************************
> static CCAttrMap * CCAttrMap::MakeAttrMapFromRenderRegion(RenderRegion * pRegion)
Author: David_McClarnon (Xara Group Ltd) <[email protected]>
Created: 24/2/2000
Inputs: The render region to get the attribute map from
Outputs: An attribute map (copied) from the render region
Returns: -
Purpose: Makes an attribute out of the render region's current attribute state
Notes: You MUST call DeleteAttributes afterwards to release memory - delete is
not sufficient
SeeAlso: -
********************************************************************************************/
CCAttrMap * CCAttrMap::MakeAttrMapFromRenderRegion(RenderRegion * pRegion)
{
CCAttrMap * pMap = new CCAttrMap;
ENSURE(pMap,"No mem for attrmap");
if(!pMap)
return NULL;
// let's get every attribute in the render region
AttributeValue * pAttrVal = NULL;
NodeAttribute * pNewAttr = NULL;
for (UINT32 i = 0; i < ATTR_FIRST_FREE_ID; i++)
{
pAttrVal = pRegion->GetCurrentAttribute(i);
// make a new node out of this attribute value
pNewAttr = pAttrVal->MakeNode();
// Karim 12/04/2000
// AttributeValues _do_not_have_to_have_ a corresponding NodeAttribute,
// so can we please *check* that MakeNode didn't just return NULL!
if (pNewAttr != NULL)
{
if(!pNewAttr->IsLinkedToNodeGeometry())
pMap->SetAt(pNewAttr->GetAttributeType(),pNewAttr);
else
{
delete pNewAttr;
pNewAttr = AttributeManager::GetDefaultAttribute((AttrIndex) i);
if(pNewAttr)
{
ENSURE(pNewAttr->IsLinkedToNodeGeometry(),"Incorrect NodeAttribute returned by GetDefaultAttribute");
pMap->SetAt(pNewAttr->GetAttributeType(), pNewAttr);
}
else
return NULL;
}
}
}
pMap->attrMapCreator = NULL;
return pMap;
}
示例12: GetStartPosition
void CCAttrMap::ApplyAttributesToNode(NodeRenderableInk * pInk)
{
iterator pos = GetStartPosition();
while( pos != GetEndPosition() )
{
CCRuntimeClass *pKey;
void *pVal;
GetNextAssoc(pos, pKey, pVal);
NodeAttribute * pAttr = (NodeAttribute *)pVal;
// copy the attribute
if( pAttr->CanBeAppliedToObject() )
{
NodeAttribute * pAttrCopy = NULL;
pAttr->NodeCopy((Node **)(&pAttrCopy));
pAttrCopy->AttachNode(pInk, LASTCHILD);
// nb now that GLAs have an independent flag to indicate when
// they are copied from the default, it is safe to fix linkages
// this ensures that GLA defaults get copied when BlendRefs are
// made from complex nodes, and that they are found when MakeAppliedAttributes
// calls FindAppliedAttributes on the unattached subtree
// TODO??
// What about just copying compound node's Parent pointers to
// pseudo attach the tree, rather than copying applied attrs to unattached tree
// Just need to watch when deleting that it doesn't do anything to the
// parents pointers - which it shouldn't surely?
pAttrCopy->LinkToGeometry(pInk);
}
}
}
示例13: PostBlendDeinit
// Required for all GLA's
void CCAttrMap::PostBlendDeinit()
{
INT32 curr = 0;
do
{
CCRuntimeClass *pType = (CCRuntimeClass *)GeometryLinkedAttributeClasses[curr];
void *pVal;
if( Lookup( pType, pVal ) )
{
if (pVal != NULL)
{
NodeAttribute * pAttr = (NodeAttribute *)pVal;
pAttr->PostDynCreateDeInit();
}
}
curr++;
}
while(curr<NumGLAs);
}
示例14: TRACEUSER
// Required for all GLA's
// NB must only be called on attrmaps with copied attributes
// DO NOT CALL on maps with 'live' attributes - ie pointers to attrs in the tree
// (eg a mpa made by MakeAppliedAttrMap(pInk))
void CCAttrMap::PostBlendInit(Path* pPath, CCRuntimeClass* pCreatorClass)
{
INT32 curr = 0;
// NB this function is called on a Blended attr map
// The Blend() function should return false if it doesn't want to be in the blended attr map
// ie default GLAs shouldn't be in here!
do
{
CCRuntimeClass *pType = (CCRuntimeClass *)GeometryLinkedAttributeClasses[curr];
void *pVal;
if( Lookup( pType, pVal ) )
{
if (pVal != NULL)
{
NodeAttribute * pAttr = (NodeAttribute *)pVal;
// call the attributes routine to initialise itself
if(!pAttr->PostDynCreateInit(this, pPath, pCreatorClass))
{
// make sure the node is not going to try and render itself
TRACEUSER( "Ilan", wxT("Dynamically created attribute failed to post init itself. Removing attribute from map.\n") );
// NB map must contain copied attrs
RemoveKey( pType );
// Must cast to NodeAttribute before deleting, otherwise wrong destructor gets called
delete (NodeAttribute*)pVal;
}
}
}
curr++;
}
while(curr<NumGLAs);
}
示例15: ERROR3IF
BOOL NodeAttribute::Blend(BlendAttrParam* pBlendParam)
{
// Check NULL entry param
ERROR3IF(pBlendParam == NULL,"pBlendParam == NULL");
if (pBlendParam == NULL) return FALSE;
// Make a copy of this node, and make this the blended attribute
NodeAttribute* pBlendedAttr = NULL;
NodeAttribute* pAttrToCopy = NULL;
if (pBlendParam->GetBlendRatio() <= 0.5)
pAttrToCopy = this;
else
pAttrToCopy = pBlendParam->GetOtherAttr();
if (pAttrToCopy != NULL)
{
pBlendedAttr = (NodeAttribute*) pAttrToCopy->SimpleCopy();
pBlendParam->SetBlendedAttr(pBlendedAttr);
}
// Return TRUE if we were able to make a copy of this node
return (pBlendedAttr != NULL);
}