Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
BOOL ColourGallery::DoRedefineItem(ListItem *ItemToRedefine)
{
	// Bring up the colour editor on the new colour
	if (ItemToRedefine != NULL)
		DoSpecialClick(ItemToRedefine);

	return(TRUE);

#if FALSE
	ColourList *ColList = ColourManager::GetColourList();
	if (ColList == NULL)
		return(FALSE);

	DocColour *SourceColour = NULL;
	if (ColourManager::GetCurrentLineAndFillColours(NULL, &SourceColour))
		SourceColour = NULL;				// Sourcecolour returned was current attr - don't use

	if (SourceColour == NULL)
	{
		// Nothing to copy to redefine the colour. Report this to the user
		InformError(_R(IDE_COLGAL_NOSOURCE), _R(IDS_OK));
		return(FALSE);
	}

	// We have a colour to copy...
	INT32 Result;
	IndexedColour *ParentColour = SourceColour->FindParentIndexedColour();
	if (ParentColour == NULL)
	{
		Result = AskQuestion(_R(IDS_COLGAL_QREDEFINE), _R(IDS_COLGAL_YREDEFINE), _R(IDS_CANCEL));

		if (Result == 1)		// The user said to go ahead...
		{
			// Source is an immediate colour - generate an IndexedColour from its definition
			ColourGeneric Bob;
			SourceColour->GetSourceColour(&Bob);
			*((IndexedColour *)ItemToRedefine) = IndexedColour(SourceColour->GetColourModel(), &Bob);
			return(TRUE);
		}

		return(FALSE);			// The user cancelled
	}

	if (ParentColour == (IndexedColour *) ItemToRedefine)
	{
		InformError(_R(IDE_COLGAL_SAMEITEM));
		return(FALSE);
	}

	Result = 3;			// Default to making a copy of the colour

	{
		IndexedColour *NewCol = (IndexedColour *)ItemToRedefine;
		
		*NewCol = *ParentColour;
		if (ParentColour->IsNamed())
		{
			String_128 NewName;		// Accomodate overflow- SetName clips this to String_64
			NewName.MakeMsg(_R(IDS_COPYOFCOLOUR), (TCHAR *) (*ParentColour->GetName()));
			((IndexedColour *)ItemToRedefine)->SetName(NewName);

			// If the parent was named, then remember it as the 'parent' colour, even
			// if it was not tint/linked. This will allow the colour editor to default
			// to linking to a useful colour if tint/link is turned on at a later date.
			NewCol->SetLinkedParent(ParentColour, NewCol->GetType());
		}
	}

	if (Result != 0)				// Finally, inform the world if this item has changed
		ColourManager::ColourHasChanged(GetGalleryDocument(),
										ColList, (IndexedColour *) ItemToRedefine);

	return(Result != 0);			// if Cancelled, return FALSE (no change), else TRUE

#endif


}