diff options
Diffstat (limited to 'printing/metafile.cc')
-rw-r--r-- | printing/metafile.cc | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/printing/metafile.cc b/printing/metafile.cc new file mode 100644 index 0000000..ece61df --- /dev/null +++ b/printing/metafile.cc @@ -0,0 +1,49 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "printing/metafile.h" + +#include <vector> + +#include "base/files/file.h" +#include "base/numerics/safe_conversions.h" + +namespace printing { + +MetafilePlayer::MetafilePlayer() { +} + +MetafilePlayer::~MetafilePlayer() { +} + +Metafile::Metafile() { +} + +Metafile::~Metafile() { +} + +bool Metafile::GetDataAsVector(std::vector<char>* buffer) const { + buffer->resize(GetDataSize()); + if (buffer->empty()) + return false; + return GetData(&buffer->front(), base::checked_cast<uint32>(buffer->size())); +} + +bool Metafile::SaveTo(base::File* file) const { + if (!file->IsValid()) + return false; + + std::vector<char> buffer; + if (!GetDataAsVector(&buffer)) + return false; + + int size = base::checked_cast<int>(buffer.size()); + if (file->WriteAtCurrentPos(&buffer[0], size) != size) { + DLOG(ERROR) << "Failed to save file."; + return false; + } + return true; +} + +} // namespace printing |