Index: pdf/chunk_stream.h |
=================================================================== |
--- pdf/chunk_stream.h (revision 0) |
+++ pdf/chunk_stream.h (revision 0) |
@@ -0,0 +1,48 @@ |
+// Copyright (c) 2010 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. |
+ |
+#ifndef PDF_CHUNK_STREAM_H_ |
+#define PDF_CHUNK_STREAM_H_ |
+ |
+#include <stddef.h> |
+ |
+#include <map> |
+#include <vector> |
+ |
+namespace chrome_pdf { |
+ |
+// This class collects a chunks of data into one data stream. Client can check |
+// if data in certain range is available, and get missing chunks of data. |
+class ChunkStream { |
+ public: |
+ ChunkStream(); |
+ ~ChunkStream(); |
+ |
+ void Clear(); |
+ |
+ void Preallocate(size_t stream_size); |
+ size_t GetSize(); |
+ |
+ bool WriteData(size_t offset, void* buffer, size_t size); |
+ bool ReadData(size_t offset, size_t size, void* buffer) const; |
+ |
+ // Returns vector of pairs where first is an offset, second is a size. |
+ bool GetMissedRanges(size_t offset, size_t size, |
+ std::vector<std::pair<size_t, size_t> >* ranges) const; |
+ bool IsRangeAvailable(size_t offset, size_t size) const; |
+ size_t GetFirstMissingByte() const; |
+ |
+ size_t GetLastByteBefore(size_t offset) const; |
+ size_t GetFirstByteAfter(size_t offset) const; |
+ |
+ private: |
+ std::vector<unsigned char> data_; |
+ |
+ // Pair, first - begining of the chunk, second - size of the chunk. |
+ std::map<size_t, size_t> chunks_; |
+}; |
+ |
+}; // namespace chrome_pdf |
+ |
+#endif |
Property changes on: pdf\chunk_stream.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |