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

Side by Side Diff: include/core/SkPicture.h

Issue 784643002: Replace EncodeBitmap with an interface. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Undefine macro, fix callsites, define in chrome, leave EncodeBitmap for PDF. Created 6 years 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
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2007 The Android Open Source Project 3 * Copyright 2007 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #ifndef SkPicture_DEFINED 10 #ifndef SkPicture_DEFINED
(...skipping 17 matching lines...) Expand all
28 class SkWStream; 28 class SkWStream;
29 29
30 struct SkPictInfo; 30 struct SkPictInfo;
31 31
32 class SkRecord; 32 class SkRecord;
33 33
34 namespace SkRecords { 34 namespace SkRecords {
35 class CollectLayers; 35 class CollectLayers;
36 }; 36 };
37 37
38 //#define SK_LEGACY_ENCODE_BITMAP
39
40 #ifdef SK_LEGACY_ENCODE_BITMAP
41 #include "SkPixelSerializer.h"
42 #else
43 class SkPixelSerializer;
44 #endif
45
38 /** \class SkPicture 46 /** \class SkPicture
39 47
40 The SkPicture class records the drawing commands made to a canvas, to 48 The SkPicture class records the drawing commands made to a canvas, to
41 be played back at a later time. 49 be played back at a later time.
42 */ 50 */
43 class SK_API SkPicture : public SkNVRefCnt<SkPicture> { 51 class SK_API SkPicture : public SkNVRefCnt<SkPicture> {
44 public: 52 public:
45 // AccelData provides a base class for device-specific acceleration 53 // AccelData provides a base class for device-specific acceleration
46 // data. It is added to the picture via EXPERIMENTAL_addAccelData. 54 // data. It is added to the picture via EXPERIMENTAL_addAccelData.
47 class AccelData : public SkRefCnt { 55 class AccelData : public SkRefCnt {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 * signature can be passed to serialize() and SkWriteBuffer. 145 * signature can be passed to serialize() and SkWriteBuffer.
138 * Returning NULL will tell the SkWriteBuffer to use 146 * Returning NULL will tell the SkWriteBuffer to use
139 * SkBitmap::flatten() to store the bitmap. 147 * SkBitmap::flatten() to store the bitmap.
140 * 148 *
141 * @param pixelRefOffset DEPRECATED -- caller assumes it will return 0. 149 * @param pixelRefOffset DEPRECATED -- caller assumes it will return 0.
142 * @return SkData If non-NULL, holds encoded data representing the passed 150 * @return SkData If non-NULL, holds encoded data representing the passed
143 * in bitmap. The caller is responsible for calling unref(). 151 * in bitmap. The caller is responsible for calling unref().
144 */ 152 */
145 typedef SkData* (*EncodeBitmap)(size_t* pixelRefOffset, const SkBitmap& bm); 153 typedef SkData* (*EncodeBitmap)(size_t* pixelRefOffset, const SkBitmap& bm);
146 154
155 #ifdef SK_LEGACY_ENCODE_BITMAP
147 /** 156 /**
148 * Serialize to a stream. If non NULL, encoder will be used to encode 157 * Serialize to a stream. If non NULL, encoder will be used to encode
149 * any bitmaps in the picture. 158 * any bitmaps in the picture.
150 * encoder will never be called with a NULL pixelRefOffset. 159 * encoder will never be called with a NULL pixelRefOffset.
151 */ 160 */
152 void serialize(SkWStream*, EncodeBitmap encoder = NULL) const; 161 void serialize(SkWStream* wStream, EncodeBitmap encoder) const {
162 EncodeBitmapSerializer serializer(encoder);
163 this->serialize(wStream, &serializer);
164 }
165 #endif
166
167 void serialize(SkWStream*, SkPixelSerializer* serializer = NULL) const;
153 168
154 /** 169 /**
155 * Serialize to a buffer. 170 * Serialize to a buffer.
156 */ 171 */
157 void flatten(SkWriteBuffer&) const; 172 void flatten(SkWriteBuffer&) const;
158 173
159 /** 174 /**
160 * Returns true if any bitmaps may be produced when this SkPicture 175 * Returns true if any bitmaps may be produced when this SkPicture
161 * is replayed. 176 * is replayed.
162 */ 177 */
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 303
289 bool fWillPlaybackBitmaps; 304 bool fWillPlaybackBitmaps;
290 bool fHasText; 305 bool fHasText;
291 int fNumPaintWithPathEffectUses; 306 int fNumPaintWithPathEffectUses;
292 int fNumFastPathDashEffects; 307 int fNumFastPathDashEffects;
293 int fNumAAConcavePaths; 308 int fNumAAConcavePaths;
294 int fNumAAHairlineConcavePaths; 309 int fNumAAHairlineConcavePaths;
295 int fNumAADFEligibleConcavePaths; 310 int fNumAADFEligibleConcavePaths;
296 } fAnalysis; 311 } fAnalysis;
297 312
313 #ifdef SK_LEGACY_ENCODE_BITMAP
314 // Helper to use the new API.
315 class EncodeBitmapSerializer : public SkPixelSerializer {
316 public:
317 explicit EncodeBitmapSerializer(EncodeBitmap encoder)
318 : fEncoder(encoder)
319 {
320 SkASSERT(fEncoder);
321 }
322
323 bool useEncodedData(SkData*) SK_OVERRIDE { return true; }
324
325 SkData* encodePixels(const SkImageInfo& info, void* pixels, size_t rowBy tes) SK_OVERRIDE {
326 size_t unused;
327 SkBitmap bm;
328 bm.installPixels(info, pixels, rowBytes);
329 return fEncoder(&unused, bm);
330 }
331
332 private:
333 EncodeBitmap fEncoder;
334 };
335 #endif
336
298 friend class SkPictureRecorder; // SkRecord-based constructor. 337 friend class SkPictureRecorder; // SkRecord-based constructor.
299 friend class GrLayerHoister; // access to fRecord 338 friend class GrLayerHoister; // access to fRecord
300 friend class ReplaceDraw; 339 friend class ReplaceDraw;
301 friend class SkPictureUtils; 340 friend class SkPictureUtils;
302 friend class SkRecordedDrawable; 341 friend class SkRecordedDrawable;
303 }; 342 };
304 SK_COMPILE_ASSERT(sizeof(SkPicture) <= 96, SkPictureSize); 343 SK_COMPILE_ASSERT(sizeof(SkPicture) <= 96, SkPictureSize);
305 344
306 #endif 345 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698