Exemple #1
0
void ColourGallery::ReadNewColourList(void)
{
	ColourList *Colours = ColourManager::GetColourList();

	RemoveAllItemsFromDisplay();

	if (Colours == NULL)
	{
		ForceRedrawOfList();
		return;
	}

	IndexedColour *Ptr = (IndexedColour *) Colours->GetHead();
	while (Ptr != NULL)
	{
		if (!Ptr->IsDeleted())
			AddItemToDisplay(Ptr);

		Ptr = (IndexedColour *) Colours->GetNext(Ptr);
	}

	SetSelectionFromDocument();
	ForceRedrawOfList();
}
Exemple #2
0
void PrintComponent::ImportColourPlate(CXaraFileRecord* Rec, CamelotRecordHandler *pHandler)
{
#if !defined(EXCLUDE_FROM_RALPH)
	BOOL ok = TRUE;

	PORTNOTETRACE("print","PrintComponent::ImportColourPlate - do nothing");
	TypesetInfo *TInfo = GetPrintControl()->GetTypesetInfo();
	if (TInfo == NULL)
		return;
	
	ColourPlate *NewPlate = TInfo->CreateColourPlate();
	if (NewPlate == NULL)
		return;

	BYTE Type;
	if (ok)  ok = Rec->ReadBYTE(&Type);

	ColourPlateType PlateType = COLOURPLATE_NONE;
	if (ok)
	{
		switch(Type)
		{
			case 1: PlateType = COLOURPLATE_CYAN;		break;
			case 2: PlateType = COLOURPLATE_MAGENTA;	break;
			case 3: PlateType = COLOURPLATE_YELLOW;		break;
			case 4: PlateType = COLOURPLATE_KEY;		break;
			case 5: PlateType = COLOURPLATE_SPOT;		break;
		}
	}

	IndexedColour *pCol = NULL;
	if (ok)
	{
		INT32 ColRecordNum;
		ok = Rec->ReadINT32(&ColRecordNum);
		if (ok && PlateType == COLOURPLATE_SPOT)
		{
			DocColour SpotCol;
			ok = pHandler->GetDocColour(ColRecordNum, &SpotCol);
			if (ok)
				pCol = SpotCol.FindParentIndexedColour();
		}
	}

	// If this is a spot plate, it must reference a valid spot colour
	if (PlateType == COLOURPLATE_SPOT &&
		(pCol == NULL || pCol->GetType() != COLOURTYPE_SPOT || pCol->IsDeleted()) )
	{
		// Poohs. No point in keeping this plate around
		delete NewPlate;
		return;
	}

	NewPlate->SetType(NULL, PlateType, pCol);

	if (ok)
	{
		double Angle = 0.0;
		double Frequency = 60.0;

		ok = Rec->ReadDOUBLE(&Angle);
		if (ok)  ok = Rec->ReadDOUBLE(&Frequency);
		if (ok)  NewPlate->SetScreenInfo(Angle, Frequency);
	}

	BYTE Flags;
	if (ok)  ok = Rec->ReadBYTE(&Flags);

	if (ok)
	{
		NewPlate->SetDisabled( (Flags & 0x01) == 0);		// NOTE Flag is ENabled state!
		NewPlate->SetOverprint((Flags & 0x02) != 0);
	}


	if (ok)
	{
		// Now, it'll be quite handy if we add the new plate to the plate list!
		TInfo->AddPlate(NewPlate);
	}
#endif
}
Exemple #3
0
BOOL ColourDragInformation::GetStatusLineText(String_256 * TheText, DragTarget* pDragTarget)
{
	ERROR2IF(TheText==NULL,FALSE,"NULL string in GetStatusLineText()");

	String_256 DragString(_R(IDS_DRAGCOL_DRAGGING_COLOUR)); // "Dragging colour '");

	if (TheColour.IsTransparent())
		DragString = _R(IDS_DRAGCOL_DRAGGING_NO_COLOUR);	// "Dragging 'no colour' : ";
	else
	{
		IndexedColour *TheIxCol = GetInitiallyDraggedColour();
		if (TheIxCol != NULL)
			DragString += *(TheIxCol->GetName());		// Document IndexedColour
		else
			DragString += ColourName;					// Library colour

		DragString += String_16(_R(IDS_DRAGCOL_DRAGGING_COLOUR_RIGHT_BIT)); // "' : ";
	}

	if (pDragTarget->IS_KIND_OF(ViewDragTarget))
	{
		PageDropInfo PageDropInfo;
		((ViewDragTarget*)pDragTarget)->GetDropInfo(&PageDropInfo);

		NodeRenderableInk* pObjectHit 	= PageDropInfo.pObjectHit;
		ObjectDragTarget TargetHit 		= PageDropInfo.TargetHit;

		String_256 ObjectDesc = _R(IDS_DRAGCOL_THIS_OBJECT); //" this object";

		if (pObjectHit)
		{
			ObjectDesc = pObjectHit->Describe(FALSE);
		}

		ClickModifiers ClickMods = ClickModifiers::GetClickModifiers();
		BOOL IsInside = ClickMods.Constrain;

		if (!IsInside && pObjectHit && pObjectHit->IsCompound())
		{
			TargetHit = MANY_TARGET;
		}

		switch (TargetHit)
		{
			case FILL_TARGET:
				DragString += String_64(_R(IDS_DRAGCOL_DROP_SET_FILL)); // "Drop to set the fill colour of this ";
				DragString += ObjectDesc;
				if (IsInside)
					DragString += String_64(_R(IDS_DRAGCOL_ALONE)); // " alone";
				break;
			case LINE_TARGET:
				DragString += String_64(_R(IDS_DRAGCOL_DROP_SET_LINE)); //"Drop to set the line colour of this ";
				DragString += ObjectDesc;
				if (IsInside)
					DragString += String_64(_R(IDS_DRAGCOL_ALONE)); // " alone";
				break;
			case STARTCOL_TARGET:
				DragString += String_64(_R(IDS_DRAGCOL_DROP_SET_FILL_START)); //"Drop to set the fill start colour of this ";
				DragString += ObjectDesc;
				break;
			case ENDCOL_TARGET:
				DragString += String_64(_R(IDS_DRAGCOL_DROP_SET_FILL_END)); //"Drop to set the fill end colour of this ";
				DragString += ObjectDesc;
				break;
			case ENDCOL2_TARGET:
				DragString += String_64(_R(IDS_DRAGCOL_DROP_SET_FILL_END2)); //"Drop to set the fill end colour of this ";
				DragString += ObjectDesc;
				break;
			case ENDCOL3_TARGET:
				DragString += String_64(_R(IDS_DRAGCOL_DROP_SET_FILL_END3)); //"Drop to set the fill end colour of this ";
				DragString += ObjectDesc;
				break;
			case MANY_TARGET:
				DragString += String_64(_R(IDS_DRAGCOL_DROP_SET_FILL)); //"Drop to set the fill colour of this ";
				DragString += ObjectDesc;
				DragString += String_64(_R(IDS_DRAGCOL_PRESS_CONTROL)); // "; Press 'Control' to drop 'Inside'";
				break;

			case NO_TARGET:
				if (IsInside)
				{
					DragString += String_256(_R(IDS_DRAGCOL_DROP_SETPAGEBACKGROUND)); // "Drop to set the fill colour of the page background";
				}
				else
				{
					DragString += String_64(_R(IDS_DRAGCOL_DROP_SET_CURRENT_FILL_COLOUR)); // "Drop to set the 'current fill colour' attribute";
				}
				break;
		};

	 	*TheText = DragString;
		return TRUE;
	}
 	
	return FALSE;
}
Exemple #4
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


}