示例#1
0
/*
 * Tries to handle the image with PIEX. If PIEX returns kOk and finds the preview image, create a
 * SkJpegCodec. If PIEX returns kFail, then the file is invalid, return nullptr. In other cases,
 * fallback to create SkRawCodec for DNG images.
 */
SkCodec* SkRawCodec::NewFromStream(SkStream* stream) {
    SkAutoTDelete<SkRawStream> rawStream(new SkRawStream(stream));
    ::piex::PreviewImageData imageData;
    if (::piex::IsRaw(rawStream.get())) {
        ::piex::Error error = ::piex::GetPreviewImageData(rawStream.get(), &imageData);

        if (error == ::piex::Error::kOk && imageData.preview_length > 0) {
#if !defined(GOOGLE3)
            // transferBuffer() is destructive to the rawStream. Abandon the rawStream after this
            // function call.
            // FIXME: one may avoid the copy of memoryStream and use the buffered rawStream.
            SkMemoryStream* memoryStream =
                    rawStream->transferBuffer(imageData.preview_offset, imageData.preview_length);
            return memoryStream ? SkJpegCodec::NewFromStream(memoryStream) : nullptr;
#else
            return nullptr;
#endif
        } else if (error == ::piex::Error::kFail) {
            return nullptr;
        }
    }

    SkAutoTDelete<SkDngImage> dngImage(SkDngImage::NewFromStream(rawStream.release()));
    if (!dngImage) {
        return nullptr;
    }

    return new SkRawCodec(dngImage.release());
}
示例#2
0
bool MainGameScreen::SaveGame(const CEGUI::EventArgs& pEventArgs)
{
	string filename("FirstSave.khav");

	try {
		boost::filesystem::path SaveDirectory("Saves");
		boost::filesystem::path SaveFile(SaveDirectory / filename);
		boost::filesystem::basic_ofstream<char> rawStream(SaveFile, std::ios::binary);
		if (rawStream.is_open())
		{
			GAME->Save(rawStream);
			rawStream.close();
		} else {
			// FILE not Opened?
		}
	} catch (const std::exception& e) {
		//Do something
	}
}
bool IostreamCodedStream::put(const Message& message)
{
    OstreamOutputStream rawStream(os);
    return writeDelimitedTo(message, rawStream);
}
bool IostreamCodedStream::get(Message& message)
{
    IstreamInputStream rawStream(is);
    return readDelimitedFrom(message, rawStream);
}