Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(558)

Side by Side Diff: src/core/SkSecureReadBuffer.h

Issue 23021015: Initial error handling code (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Added ImageFilter derived classes safety checks (retry) Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1
2 /* 1 /*
3 * Copyright 2011 Google Inc. 2 * Copyright 2013 Google Inc.
4 * 3 *
5 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 5 * found in the LICENSE file.
7 */ 6 */
8 7
9 #ifndef SkOrderedReadBuffer_DEFINED 8 #ifndef SkSecureReadBuffer_DEFINED
10 #define SkOrderedReadBuffer_DEFINED 9 #define SkSecureReadBuffer_DEFINED
11 10
12 #include "SkRefCnt.h" 11 #include "SkRefCnt.h"
13 #include "SkBitmapHeap.h" 12 #include "SkBitmapHeap.h"
14 #include "SkFlattenableBuffers.h" 13 #include "SkFlattenableBuffers.h"
15 #include "SkPath.h" 14 #include "SkPath.h"
16 #include "SkPicture.h" 15 #include "SkPicture.h"
17 #include "SkReader32.h" 16 #include "SkReader32.h"
18 17
19 class SkBitmap; 18 class SkBitmap;
20 19
21 #if defined(SK_DEBUG) && defined(SK_BUILD_FOR_MAC) 20 #if defined(SK_DEBUG) && defined(SK_BUILD_FOR_MAC)
22 #define DEBUG_NON_DETERMINISTIC_ASSERT 21 #define DEBUG_NON_DETERMINISTIC_ASSERT
23 #endif 22 #endif
24 23
25 class SkOrderedReadBuffer : public SkFlattenableReadBuffer { 24 class SkSecureReadBuffer : public SkFlattenableReadBuffer {
26 public: 25 public:
27 SkOrderedReadBuffer(); 26 SkSecureReadBuffer();
28 SkOrderedReadBuffer(const void* data, size_t size); 27 SkSecureReadBuffer(const void* data, size_t size);
29 SkOrderedReadBuffer(SkStream* stream); 28 SkSecureReadBuffer(SkStream* stream);
30 virtual ~SkOrderedReadBuffer(); 29 virtual ~SkSecureReadBuffer();
31
32 virtual SkOrderedReadBuffer* getOrderedBinaryBuffer() SK_OVERRIDE { return t his; }
33 30
34 SkReader32* getReader32() { return &fReader; } 31 SkReader32* getReader32() { return &fReader; }
35 32
36 uint32_t size() { return fReader.size(); } 33 uint32_t size() { return fReader.size(); }
37 uint32_t offset() { return fReader.offset(); } 34 uint32_t offset() { return fReader.offset(); }
38 bool eof() { return fReader.eof(); } 35 bool eof() { return fReader.eof(); }
39 const void* skip(size_t size) { return fReader.skip(size); } 36 const void* skip(size_t size);
40 37
41 // primitives 38 // primitives
42 virtual bool readBool() SK_OVERRIDE; 39 virtual bool readBool() SK_OVERRIDE;
43 virtual SkColor readColor() SK_OVERRIDE; 40 virtual SkColor readColor() SK_OVERRIDE;
44 virtual SkFixed readFixed() SK_OVERRIDE; 41 virtual SkFixed readFixed() SK_OVERRIDE;
45 virtual int32_t readInt() SK_OVERRIDE; 42 virtual int32_t readInt() SK_OVERRIDE;
46 virtual SkScalar readScalar() SK_OVERRIDE; 43 virtual SkScalar readScalar() SK_OVERRIDE;
47 virtual uint32_t readUInt() SK_OVERRIDE; 44 virtual uint32_t readUInt() SK_OVERRIDE;
48 virtual int32_t read32() SK_OVERRIDE; 45 virtual int32_t read32() SK_OVERRIDE;
49 46
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 /** 103 /**
107 * Provide a function to decode an SkBitmap from encoded data. Only used if the writer 104 * Provide a function to decode an SkBitmap from encoded data. Only used if the writer
108 * encoded the SkBitmap. If the proper decoder cannot be used, a red bitmap with the 105 * encoded the SkBitmap. If the proper decoder cannot be used, a red bitmap with the
109 * appropriate size will be used. 106 * appropriate size will be used.
110 */ 107 */
111 void setBitmapDecoder(SkPicture::InstallPixelRefProc bitmapDecoder) { 108 void setBitmapDecoder(SkPicture::InstallPixelRefProc bitmapDecoder) {
112 fBitmapDecoder = bitmapDecoder; 109 fBitmapDecoder = bitmapDecoder;
113 } 110 }
114 111
115 private: 112 private:
113 void setMemory(const void* data, size_t size);
114
115 static bool ptr_align_4(const void* ptr) {
116 return (((const char*)ptr - (const char*)NULL) & 3) == 0;
117 }
118
116 SkReader32 fReader; 119 SkReader32 fReader;
117 void* fMemoryPtr; 120 void* fMemoryPtr;
118 121
119 SkBitmapHeapReader* fBitmapStorage; 122 SkBitmapHeapReader* fBitmapStorage;
120 SkTypeface** fTFArray; 123 SkTypeface** fTFArray;
121 int fTFCount; 124 int fTFCount;
122 125
123 SkTDArray<SkFlattenable::Factory>* fFactoryTDArray; 126 SkTDArray<SkFlattenable::Factory>* fFactoryTDArray;
124 SkFlattenable::Factory* fFactoryArray; 127 SkFlattenable::Factory* fFactoryArray;
125 int fFactoryCount; 128 int fFactoryCount;
126 129
127 SkPicture::InstallPixelRefProc fBitmapDecoder; 130 SkPicture::InstallPixelRefProc fBitmapDecoder;
128 131
129 #ifdef DEBUG_NON_DETERMINISTIC_ASSERT 132 #ifdef DEBUG_NON_DETERMINISTIC_ASSERT
130 // Debugging counter to keep track of how many bitmaps we 133 // Debugging counter to keep track of how many bitmaps we
131 // have decoded. 134 // have decoded.
132 int fDecodedBitmapIndex; 135 int fDecodedBitmapIndex;
133 #endif // DEBUG_NON_DETERMINISTIC_ASSERT 136 #endif // DEBUG_NON_DETERMINISTIC_ASSERT
134 137
135 typedef SkFlattenableReadBuffer INHERITED; 138 typedef SkFlattenableReadBuffer INHERITED;
136 }; 139 };
137 140
138 #endif // SkOrderedReadBuffer_DEFINED 141 #endif // SkSecureReadBuffer_DEFINED
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698