Milán Major

netscape-revival

1 branch
Code

lib/mac/VText/V_PowerPlant_Mods/LClipboardTube.h

//	===========================================================================
//	LClipboardTube.h			©1995 Metrowerks Inc. All rights reserved.
//	===========================================================================

#pragma	once

#include	<LFlatTube.h>

class	LClipboardTube
			:	public	LFlatTube
{
public:
				//	Maintenance
						LClipboardTube();
						LClipboardTube(
							const LTubeableItem	*inTubeableItem,
							Boolean				inReqdFlavorsOnly = false);
	virtual				~LClipboardTube();
	virtual FlavorForT	GetFlavorForType(void) const	{return flavorForClipboard;}

				//	Implementation
	virtual	Boolean		FlavorExists(FlavorType inFlavor) const;
	virtual	Int32		GetFlavorSize(FlavorType inFlavor) const;
	virtual void *		GetFlavorData(
							FlavorType	inFlavor,
							void		*outFlavorData) const;

	virtual void		AddFlavor(FlavorType inFlavor);
	virtual void		SetFlavorData(
							FlavorType	inFlavor,
							const void	*inFlavorData,
							Int32		inFlavorSize);

protected:
	Handle				mScrapHandle;
};

//	===========================================================================
//	UScrap (helps w/ multiple items on the scrap):

typedef struct {
	FlavorType	type;
	Size		size;	//	May be odd
	char		data;	//	variable amount of data.
						//		Padded to even number of bytes.
} ScrapRecT;

class	UScrap
{
public:

	static	Int32		CountItems(Handle inScrap, FlavorType inFlavor);
	static	ScrapRecT *	NthItem(Handle inScrap, FlavorType inFlavor, Int32 inIndex);
	static	ScrapRecT *	Next(ScrapRecT *inItemPtr);
	static	ScrapRecT *	Terminal(Handle inScrap);
};