Exemple #1
0
IndexedColour *ColourDragInformation::GetColourForDocument(Document *pDestDoc)
{
	// If no document supplied, assume the selected docuemnt is the destination
	if (pDestDoc == NULL)
		pDestDoc = Document::GetSelected();

	// If there is no destination document, or if the colour is transparent, return NULL
	if (pDestDoc == NULL || TheColour.IsTransparent())
		return(NULL);

	// If it's a document colour and already in the destination document, return it
	if (pParentDoc == pDestDoc)
		return(TheColour.FindParentIndexedColour());

	// Copy the dragged colour into a temporary DocColour
	DocColour Temp = TheColour;
	IndexedColour *TempIxCol = NULL;

	// Check if we've got an IndexedColour to use...
	if (Temp.FindParentIndexedColour() == NULL)
	{
		// It's a library colour, so we must create a new IndexedColour to use
		TempIxCol = new IndexedColour(Temp);
		if (TempIxCol == NULL)
			return(NULL);			// Failure - return "no colour"

		TempIxCol->SetName(ColourName);

		if (LibColIsSpot)			// If a spot colour, make it so
			TempIxCol->SetLinkedParent(TempIxCol->FindLastLinkedParent(), COLOURTYPE_SPOT);

		// And make the DocColour reference it
		Temp.MakeRefToIndexedColour(TempIxCol);
	}

	// Ensure the colour (or a safe equivalent) is in the dest doc, by copying/merging it
	ColourManager::EnsureColourIsInDocument(pParentDoc, pDestDoc, &Temp);

	// And delete any temporary IndexedColour we created
	if (TempIxCol != NULL)
		delete TempIxCol;

	// And finally, return the resulting colour
	return(Temp.FindParentIndexedColour());
}
Exemple #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


}