Пример #1
0
FRAME
SetEquFrameIndex (FRAMEPTR DstFramePtr, FRAMEPTR SrcFramePtr)
{
	if (DstFramePtr && SrcFramePtr)
		return ((FRAME)(
				(PBYTE)((GetFrameParentDrawable (DstFramePtr))->Frame)
				+ ((PBYTE)SrcFramePtr -
				(PBYTE)((GetFrameParentDrawable (SrcFramePtr))->Frame))
				));

	return (0);
}
Пример #2
0
COUNT
GetFrameCount (FRAMEPTR FramePtr)
{
	DRAWABLEPTR DrawablePtr;

	if (FramePtr == 0)
		return (0);

	DrawablePtr = GetFrameParentDrawable (FramePtr);
	return (INDEX_GET (DrawablePtr->FlagsAndIndex) + 1);
}
Пример #3
0
MEM_HANDLE
GetFrameHandle (FRAMEPTR FramePtr)
{
	DRAWABLEPTR DrawablePtr;

	if (FramePtr == 0)
		return (0);

	DrawablePtr = GetFrameParentDrawable (FramePtr);
	return (DrawablePtr->hDrawable);
}
Пример #4
0
// Reads a piece of screen into a passed FRAME or a newly created one
DRAWABLE
LoadDisplayPixmap (const RECT *area, FRAME frame)
{
	// TODO: This should just return a FRAME instead of DRAWABLE
	DRAWABLE buffer = GetFrameParentDrawable (frame);
	COUNT index;

	if (!buffer)
	{	// asked to create a new DRAWABLE instead
		buffer = CreateDrawable (WANT_PIXMAP | MAPPED_TO_DISPLAY,
				area->extent.width, area->extent.height, 1);
		if (!buffer)
			return NULL;

		index = 0;
	}
	else
	{
		index = GetFrameIndex (frame);
	}

	frame = SetAbsFrameIndex (CaptureDrawable (buffer), index);

	if (_CurFramePtr->Type != SCREEN_DRAWABLE
			|| frame->Type == SCREEN_DRAWABLE
			|| !(GetFrameParentDrawable (frame)->Flags & MAPPED_TO_DISPLAY))
	{
		log_add (log_Warning, "Unimplemented function activated: "
				"LoadDisplayPixmap()");
	}
	else
	{
		TFB_Image *img = frame->image;
		TFB_DrawScreen_CopyToImage (img, area, TFB_SCREEN_MAIN);
	}

	ReleaseDrawable (frame);

	return buffer;
}
Пример #5
0
FRAME
IncFrameIndex (FRAMEPTR FramePtr)
{
	DRAWABLEPTR DrawablePtr;

	if (FramePtr == 0)
		return (0);

	DrawablePtr = GetFrameParentDrawable (FramePtr);
	if (INDEX_GET (FramePtr->TypeIndexAndFlags) < INDEX_GET (DrawablePtr->FlagsAndIndex))
		return ((FRAME)++FramePtr);
	else
		return ((FRAME)DrawablePtr->Frame);
}
Пример #6
0
FRAME
SetAbsFrameIndex (FRAMEPTR FramePtr, COUNT FrameIndex)
{
	if (FramePtr != 0)
	{
		DRAWABLEPTR DrawablePtr;

		DrawablePtr = GetFrameParentDrawable (FramePtr);

		FrameIndex = FrameIndex
				% (INDEX_GET (DrawablePtr->FlagsAndIndex) + 1);
		FramePtr = (FRAMEPTR)&DrawablePtr->Frame[FrameIndex];
	}

	return ((FRAME)FramePtr);
}
Пример #7
0
FRAME
DecFrameIndex (FRAMEPTR FramePtr)
{
	if (FramePtr == 0)
		return (0);

	if (INDEX_GET (FramePtr->TypeIndexAndFlags))
		return ((FRAME)--FramePtr);
	else
	{
		DRAWABLEPTR DrawablePtr;

		DrawablePtr = GetFrameParentDrawable (FramePtr);
		return ((FRAME)&DrawablePtr->Frame[INDEX_GET (DrawablePtr->FlagsAndIndex)]);
	}
}
Пример #8
0
DRAWABLE
ReleaseDrawable (FRAMEPTR FramePtr)
{
	if (FramePtr != 0)
	{
		DRAWABLE Drawable;
		DRAWABLEPTR DrawablePtr;

		DrawablePtr = GetFrameParentDrawable (FramePtr);
		Drawable = BUILD_DRAWABLE (
				DrawablePtr->hDrawable, INDEX_GET (FramePtr->TypeIndexAndFlags)
				);
		UnlockDrawable (Drawable);

		return (Drawable);
	}

	return (0);
}
Пример #9
0
// stretch_frame
// create a new frame of size neww x newh, and blit a scaled version FramePtr
// into it.
// destroy the old frame if 'destroy' is 1
FRAME stretch_frame (FRAME FramePtr, int neww, int newh, int destroy)
{
	FRAME NewFrame;
	CREATE_FLAGS flags;
	TFB_Image *tfbImg;
	TFB_Canvas src, dst;

	flags = GetFrameParentDrawable (FramePtr)->Flags;
	NewFrame = CaptureDrawable (
				CreateDrawable (flags, (SIZE)neww, (SIZE)newh, 1));
	tfbImg = FramePtr->image;
	LockMutex (tfbImg->mutex);
	src = tfbImg->NormalImg;
	dst = NewFrame->image->NormalImg;
	TFB_DrawCanvas_Rescale_Nearest (src, dst, -1, NULL, NULL, NULL);
	UnlockMutex (tfbImg->mutex);
	if (destroy)
		DestroyDrawable (ReleaseDrawable (FramePtr));
	return (NewFrame);
}
Пример #10
0
FRAME
SetRelFrameIndex (FRAMEPTR FramePtr, SIZE FrameOffs)
{
	if (FramePtr != 0)
	{
		COUNT num_frames;
		DRAWABLEPTR DrawablePtr;

		DrawablePtr = GetFrameParentDrawable (FramePtr);
		num_frames = INDEX_GET (DrawablePtr->FlagsAndIndex) + 1;
		if (FrameOffs < 0)
		{
			while ((FrameOffs += num_frames) < 0)
				;
		}

		FrameOffs = (INDEX_GET (FramePtr->TypeIndexAndFlags) + FrameOffs) % num_frames;
		FramePtr = (FRAMEPTR)&DrawablePtr->Frame[FrameOffs];
	}

	return ((FRAME)FramePtr);
}