/* * 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()); }
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); }