/** Copyright 2014 Haiku, Inc. All rights reserved.* Distributed under the terms of the MIT License.** Authors:* John Scipione, jscipione@gmail.com** Corresponds to:* headers/os/interface/Picture.h hrev47233* src/kits/interface/Picture.cpp hrev47233*//*!\file Picture.h\ingroup interface\ingroup libbe\brief BPicture class definition.*//*!\class BPicture\ingroup interface\ingroup libbe\brief Records a series of drawing instructions that can be "replayed"later.A BPicture, unlike a BBitmap, is independent of the display resolutionas it contains drawing instructions rather than image data.To begin drawing you first create a new BPicture object and pass it toBView::BeginPicture(). All subsequent drawing instructions are drawninto the BPicture object instead of the BView. When you are done recordingcall BView::EndPicture() which stops drawing into the BPicture object andpasses a pointer to it back to the caller.For example:\codeBPicture* picture;view->BeginPicture(new BPicture);// drawing instructions go herepicture = view->EndPicture();\endcodeOnly drawing instructions performed directly on the view, not its childviews are send to the BPicture object and BPicture captures only primitivegraphics operations. The view must be attached to a window for the drawinginstruction to be recorded. Drawing instructions are recorded even if theview is hidden or resides outside the clipping region or the window isoff-screen.The BPicture object data is erased when passed to BView::BeginPicture().If you'd like to append data to a BPicture object instead useBView::AppendToPicture(). Both BView::BeginPicture() andBView::AppendToPicture() must be followed by a call to BView::EndPicture()to finish recording.\sa BView::AppendToPicture()\sa BView::BeginPicture()\sa BView::EndPicture()\since BeOS R3*//*!\fn BPicture::BPicture()\brief Initializes an empty BPicture object.\since BeOS R3*//*!\fn BPicture::BPicture(const BPicture& otherPicture)\brief Initializes an BPicture object copying the data from \a otherPicture.\since BeOS R3*//*!\fn BPicture::BPicture(BMessage* data)\brief Initializes an BPicture object copying the data from from thepassed in \a data archive.\since BeOS R3*//*!\fn BPicture::~BPicture()\brief Destroys the BPicture object and deletes all associated data.\since BeOS R3*//*!\name Archiving*///! @{/*!\fn BArchivable* BPicture::Instantiate(BMessage* data)\brief Returns a pointer to a new BPicture object created from the BPicturedata archived in \a data.\returns A newly created BPicture object or \c NULL if the message doesn'tcontain an archived BPicture.\see BArchivable::Instantiate()\since BeOS R3*//*!\fn status_t BPicture::Archive(BMessage* data, bool deep) const\brief Archives the BPicture object into the \a data message.\param data A pointer to the BMessage object to archive into.\param deep The parameter has no effect to this method.\return A status code, \c B_OK if everything went well or an error codeotherwise.\retval B_OK The object was archived successfully.\retval B_NO_MEMORY Ran out of memory while archiving the object.\sa BArchivable::Archive()\sa BPicture::Instantiate()\since BeOS R3*///! @}/*!\fn status_t BPicture::Perform(perform_code code, void* arg)\brief Perform some action (internal method defined for binarycompatibility purposes).\since Haiku R1*//*!\fn status_t BPicture::Play(void** callBackTable, int32 tableEntries,void* user)\brief Plays back a picture using the passed in call back functions.See http://haiku-os.org/legacy-docs/bebook/BPicture.html#BPicture_Playfor details.\param callBackTable An array of pointers to pointers of call back functions.\param tableEntries Specifies the number of function pointers found in\a callBackTable.\param user A hook to pass additional data to each call back function.\returns A status code.\retval B_OK The BPicture object was played back successfully.\retval B_ERROR BPicture data is \c NULL.\since BeOS R3*//*!\fn status_t BPicture::Flatten(BDataIO* stream)\brief Flattens the contents of the BPicture object into \a stream.\param stream The stream to write to.\returns A status code, \c B_OK on success or an error code otherwise.\retval B_OK The BPicture object was flattened successfully.\retval B_BAD_VALUE The \a stream pointer was \c NULL or the data was invalid.\retval B_IO_ERROR The number of bytes written does not equal the sizeof the contents of the BPicture object.\since Haiku R1*//*!\fn status_t BPicture::Unflatten(BDataIO* stream)\brief Unflattens the contents from the \a stream into the BPicture object.\param stream The stream to read from.\returns A status code, \c B_OK on success or an error code otherwise.\retval B_OK The object was unflattened successfully.\retval B_BAD_VALUE The \a stream pointer was \c NULL or the data was invalid.\retval B_IO_ERROR The number of bytes read does not equal the sizeof the contents of the BPicture object.\since Haiku R1*/