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ßmusWonderBrushImage::WonderBrushImage() 14*2b861dd2SAlex Smith : fArchive((uint32)0) 1573a2ffbaSStephan Aßmus { 1673a2ffbaSStephan Aßmus } 1773a2ffbaSStephan Aßmus 1873a2ffbaSStephan Aßmus ~WonderBrushImage()1973a2ffbaSStephan AßmusWonderBrushImage::~WonderBrushImage() 2073a2ffbaSStephan Aßmus { 2173a2ffbaSStephan Aßmus } 2273a2ffbaSStephan Aßmus 2373a2ffbaSStephan Aßmus 2473a2ffbaSStephan Aßmus status_t SetTo(BPositionIO * stream)2573a2ffbaSStephan AßmusWonderBrushImage::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ßmusWonderBrushImage::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