Picture.h revision df48d3f9
1/*
2 * Copyright 2001-2014 Haiku Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef	_PICTURE_H
6#define	_PICTURE_H
7
8
9#include <InterfaceDefs.h>
10#include <Rect.h>
11#include <Archivable.h>
12
13
14class BDataIO;
15class BView;
16struct _BPictureExtent_;
17
18
19class BPicture : public BArchivable {
20public:
21								BPicture();
22								BPicture(const BPicture& other);
23								BPicture(BMessage* data);
24	virtual						~BPicture();
25
26	static	BArchivable*		Instantiate(BMessage* data);
27	virtual	status_t			Archive(BMessage* data, bool deep = true) const;
28	virtual	status_t			Perform(perform_code code, void* arg);
29
30			status_t			Play(void** callBackTable,
31									int32 tableEntries,
32									void* userData);
33
34			status_t			Flatten(BDataIO* stream);
35			status_t			Unflatten(BDataIO* stream);
36
37	class Private;
38private:
39	// FBC padding and forbidden methods
40	virtual	void				_ReservedPicture1();
41	virtual	void				_ReservedPicture2();
42	virtual	void				_ReservedPicture3();
43
44			BPicture&			operator=(const BPicture&);
45
46private:
47	friend class BWindow;
48	friend class BView;
49	friend class BPrintJob;
50	friend class Private;
51
52			void				_InitData();
53			void				_DisposeData();
54
55			void				_ImportOldData(const void* data, int32 size);
56
57			void				SetToken(int32 token);
58			int32				Token() const;
59
60			bool				_AssertLocalCopy();
61			bool				_AssertOldLocalCopy();
62			bool				_AssertServerCopy();
63
64			status_t			_Upload();
65			status_t			_Download();
66
67	// Deprecated API
68								BPicture(const void* data, int32 size);
69			const void*			Data() const;
70			int32				DataSize() const;
71
72			void				Usurp(BPicture* lameDuck);
73			BPicture*			StepDown();
74
75private:
76			int32				fToken;
77			_BPictureExtent_*	fExtent;
78			BPicture*			fUsurped;
79
80			uint32				_reserved[3];
81};
82
83#endif // _PICTURE_H
84
85