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

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

Issue 23021015: Initial error handling code (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Integrating readFoo changes Created 7 years, 2 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
(Empty)
1 /*
2 * Copyright 2013 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 #ifndef SkValidatingReadBuffer_DEFINED
9 #define SkValidatingReadBuffer_DEFINED
10
11 #include "SkRefCnt.h"
12 #include "SkBitmapHeap.h"
13 #include "SkFlattenableBuffers.h"
14 #include "SkPath.h"
15 #include "SkPicture.h"
16 #include "SkReader32.h"
17
18 class SkBitmap;
19
20 class SkValidatingReadBuffer : public SkFlattenableReadBuffer {
21 public:
22 SkValidatingReadBuffer(const void* data, size_t size);
23 virtual ~SkValidatingReadBuffer();
24
25 const void* skip(size_t size);
26
27 // primitives
28 virtual bool readBool() SK_OVERRIDE;
29 virtual SkColor readColor() SK_OVERRIDE;
30 virtual SkFixed readFixed() SK_OVERRIDE;
31 virtual int32_t readInt() SK_OVERRIDE;
32 virtual SkScalar readScalar() SK_OVERRIDE;
33 virtual uint32_t readUInt() SK_OVERRIDE;
34 virtual int32_t read32() SK_OVERRIDE;
35
36 // strings -- the caller is responsible for freeing the string contents
37 virtual void readString(SkString* string) SK_OVERRIDE;
38 virtual void* readEncodedString(size_t* length, SkPaint::TextEncoding encodi ng) SK_OVERRIDE;
39
40 // common data structures
41 virtual void readPoint(SkPoint* point) SK_OVERRIDE;
42 virtual void readMatrix(SkMatrix* matrix) SK_OVERRIDE;
43 virtual void readIRect(SkIRect* rect) SK_OVERRIDE;
44 virtual void readRect(SkRect* rect) SK_OVERRIDE;
45 virtual void readRegion(SkRegion* region) SK_OVERRIDE;
46 virtual void readPath(SkPath* path) SK_OVERRIDE;
47
48 // binary data and arrays
49 virtual uint32_t readByteArray(void* value) SK_OVERRIDE;
50 virtual uint32_t readColorArray(SkColor* colors) SK_OVERRIDE;
51 virtual uint32_t readIntArray(int32_t* values) SK_OVERRIDE;
52 virtual uint32_t readPointArray(SkPoint* points) SK_OVERRIDE;
53 virtual uint32_t readScalarArray(SkScalar* values) SK_OVERRIDE;
54
55 // helpers to get info about arrays and binary data
56 virtual uint32_t getArrayCount() SK_OVERRIDE;
57
58 virtual void readBitmap(SkBitmap* bitmap) SK_OVERRIDE;
59 // TODO: Implement this (securely) when needed
60 virtual SkTypeface* readTypeface() SK_OVERRIDE { return NULL; }
61
62 virtual void validate(bool isValid) SK_OVERRIDE {
63 fError = fError || !isValid;
64 }
65
66 protected:
67 virtual SkFlattenable* readFlattenable(SkEffectType type) SK_OVERRIDE;
68
69 private:
70 void setMemory(const void* data, size_t size);
71
72 static bool IsPtrAlign4(const void* ptr) {
73 return SkIsAlign4((uintptr_t)ptr);
74 }
75
76 SkReader32 fReader;
77 bool fError;
78
79 typedef SkFlattenableReadBuffer INHERITED;
80 };
81
82 #endif // SkValidatingReadBuffer_DEFINED
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698