コード例 #1
0
ファイル: PictureTest.cpp プロジェクト: SummerSnail2014/haiku
BPicture *
FlattenPictureTest::SaveAndRestore(BPicture *picture)
{
	BMallocIO *data = new BMallocIO();
	AutoDelete<BMallocIO> _data(data);
	TEST_AND_RETURN(data == NULL, "BMallocIO could not be allocated for flattening the picture!" , NULL);
	
	picture->Flatten(data);
	
	data->Seek(0, SEEK_SET);
	BPicture *archivedPicture = new BPicture();
	TEST_AND_RETURN(archivedPicture == NULL, "BPicture could not be allocated for unflattening the picture!" , NULL);
	archivedPicture->Unflatten(data);
		
	return archivedPicture;
}
コード例 #2
0
ファイル: PrintJobReader.cpp プロジェクト: AmirAbrams/haiku
status_t PrintJobPage::NextPicture(BPicture& picture, BPoint& point, BRect& rect)
{
	if (fPicture >= fNumberOfPictures)
		return B_ERROR;
	fPicture++;

	fJobFile.Seek(fNextPicture, SEEK_SET);
	fJobFile.Read(&point, sizeof(BPoint));
	fJobFile.Read(&rect, sizeof(BRect));
	status_t rc = picture.Unflatten(&fJobFile);
	fNextPicture = fJobFile.Position();

	if (rc != B_OK)
		fPicture = fNumberOfPictures;

	return rc;
}
コード例 #3
0
ファイル: PictureTest.cpp プロジェクト: looncraz/haiku
void
PictureView::AllAttached()
{	
	BeginPicture(new BPicture);
	
	DrawStuff(this);

	BPicture *picture = EndPicture();
	if (picture == NULL)
		return;

	BMessage message;
	picture->Archive(&message);
	message.PrintToStream();

	BMallocIO stream;
	
	status_t status = picture->Flatten(&stream);
	delete picture;

	if (status != B_OK)
		printf("Error flattening BPicture: %s\n", strerror(status));
	
	if (status == B_OK) {
		stream.Seek(0, SEEK_SET);
		fPicture = new BPicture();
		status = fPicture->Unflatten(&stream);
		if (status != B_OK) {
			printf("Error unflattening BPicture: %s\n", strerror(status));
			return;
		}
	}

	BMessage message2;
	fPicture->Archive(&message2);
	message2.PrintToStream();
}