xref: /haiku/src/add-ons/translators/wonderbrush/WonderBrushImage.cpp (revision 25a7b01d15612846f332751841da3579db313082)
173a2ffbaSStephan Aßmus /*
273a2ffbaSStephan Aßmus  * Copyright 2006, Haiku. All rights reserved.
373a2ffbaSStephan Aßmus  * Distributed under the terms of the MIT License.
473a2ffbaSStephan Aßmus  *
573a2ffbaSStephan Aßmus  * Authors:
673a2ffbaSStephan Aßmus  *		Stephan Aßmus <superstippi@gmx.de>
773a2ffbaSStephan Aßmus  */
873a2ffbaSStephan Aßmus 
973a2ffbaSStephan Aßmus #include "WonderBrushImage.h"
1073a2ffbaSStephan Aßmus 
1173a2ffbaSStephan Aßmus #include "Canvas.h"
1273a2ffbaSStephan Aßmus 
WonderBrushImage()1373a2ffbaSStephan Aßmus WonderBrushImage::WonderBrushImage()
14*2b861dd2SAlex Smith 	: fArchive((uint32)0)
1573a2ffbaSStephan Aßmus {
1673a2ffbaSStephan Aßmus }
1773a2ffbaSStephan Aßmus 
1873a2ffbaSStephan Aßmus 
~WonderBrushImage()1973a2ffbaSStephan Aßmus WonderBrushImage::~WonderBrushImage()
2073a2ffbaSStephan Aßmus {
2173a2ffbaSStephan Aßmus }
2273a2ffbaSStephan Aßmus 
2373a2ffbaSStephan Aßmus 
2473a2ffbaSStephan Aßmus status_t
SetTo(BPositionIO * stream)2573a2ffbaSStephan Aßmus WonderBrushImage::SetTo(BPositionIO* stream)
2673a2ffbaSStephan Aßmus {
2773a2ffbaSStephan Aßmus 	if (!stream)
2873a2ffbaSStephan Aßmus 		return B_BAD_VALUE;
2973a2ffbaSStephan Aßmus 
3073a2ffbaSStephan Aßmus 	// try to load the stream as a BMessage and probe it
310e35d5d2SJohn Scipione 	// to see whether it might be a WonderBrush image
3273a2ffbaSStephan Aßmus 	fArchive.MakeEmpty();
3373a2ffbaSStephan Aßmus 	status_t status = fArchive.Unflatten(stream);
3473a2ffbaSStephan Aßmus 	if (status < B_OK)
3573a2ffbaSStephan Aßmus 		return status;
3673a2ffbaSStephan Aßmus 
3773a2ffbaSStephan Aßmus 	if (fArchive.HasMessage("layer") && fArchive.HasRect("bounds"))
3873a2ffbaSStephan Aßmus 		return B_OK;
3973a2ffbaSStephan Aßmus 
4073a2ffbaSStephan Aßmus 	return B_ERROR;
4173a2ffbaSStephan Aßmus }
4273a2ffbaSStephan Aßmus 
4373a2ffbaSStephan Aßmus 
4473a2ffbaSStephan Aßmus BBitmap*
Bitmap() const4573a2ffbaSStephan Aßmus WonderBrushImage::Bitmap() const
4673a2ffbaSStephan Aßmus {
4773a2ffbaSStephan Aßmus 	Canvas canvas(BRect(0.0, 0.0, -1.0, -1.0));
4873a2ffbaSStephan Aßmus 
4973a2ffbaSStephan Aßmus 	if (canvas.Unarchive(&fArchive) < B_OK)
5073a2ffbaSStephan Aßmus 		return NULL;
5173a2ffbaSStephan Aßmus 
5273a2ffbaSStephan Aßmus 	return canvas.Bitmap();
5373a2ffbaSStephan Aßmus }
5473a2ffbaSStephan Aßmus 
5573a2ffbaSStephan Aßmus 
56