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

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

Issue 267293007: Fix rendering artifacts in pull-saveLayers-forward mode (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Fix bug in unit test Created 6 years, 7 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
« no previous file with comments | « no previous file | src/core/SkPicturePlayback.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
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 #ifndef SkPicturePlayback_DEFINED 9 #ifndef SkPicturePlayback_DEFINED
10 #define SkPicturePlayback_DEFINED 10 #define SkPicturePlayback_DEFINED
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 // PlaybackReplacements collects op ranges that can be replaced with 266 // PlaybackReplacements collects op ranges that can be replaced with
267 // a single drawBitmap call (using a precomputed bitmap). 267 // a single drawBitmap call (using a precomputed bitmap).
268 class PlaybackReplacements { 268 class PlaybackReplacements {
269 public: 269 public:
270 // All the operations between fStart and fStop (inclusive) will be repla ced with 270 // All the operations between fStart and fStop (inclusive) will be repla ced with
271 // a single drawBitmap call using fPos, fBM and fPaint. 271 // a single drawBitmap call using fPos, fBM and fPaint.
272 // fPaint will be NULL if the picture's paint wasn't copyable 272 // fPaint will be NULL if the picture's paint wasn't copyable
273 struct ReplacementInfo { 273 struct ReplacementInfo {
274 size_t fStart; 274 size_t fStart;
275 size_t fStop; 275 size_t fStop;
276 SkPoint fPos; 276 SkIPoint fPos;
277 SkBitmap* fBM; 277 SkBitmap* fBM;
278 const SkPaint* fPaint; // Note: this object doesn't own the paint 278 const SkPaint* fPaint; // Note: this object doesn't own the paint
279 }; 279 };
280 280
281 ~PlaybackReplacements() { this->freeAll(); } 281 ~PlaybackReplacements() { this->freeAll(); }
282 282
283 // Add a new replacement range. The replacement ranges should be 283 // Add a new replacement range. The replacement ranges should be
284 // sorted in increasing order and non-overlapping (esp. no nested 284 // sorted in increasing order and non-overlapping (esp. no nested
285 // saveLayers). 285 // saveLayers).
286 ReplacementInfo* push(); 286 ReplacementInfo* push();
287 287
288 private: 288 private:
289 friend class SkPicturePlayback; // for access to lookupByStart 289 friend class SkPicturePlayback; // for access to lookupByStart
290 290
291 // look up a replacement range by its start offset 291 // look up a replacement range by its start offset
292 ReplacementInfo* lookupByStart(size_t start); 292 ReplacementInfo* lookupByStart(size_t start);
293 293
294 void freeAll(); 294 void freeAll();
295 295
296 #ifdef SK_DEBUG 296 #ifdef SK_DEBUG
297 void validate() const; 297 void validate() const;
298 #endif 298 #endif
299 299
300 SkTDArray<ReplacementInfo> fReplacements; 300 SkTDArray<ReplacementInfo> fReplacements;
301 }; 301 };
302 302
303
304 // Replace all the draw ops in the replacement ranges in 'replacements' with 303 // Replace all the draw ops in the replacement ranges in 'replacements' with
305 // the associated drawBitmap call 304 // the associated drawBitmap call
306 // Draw replacing cannot be enabled at the same time as draw limiting 305 // Draw replacing cannot be enabled at the same time as draw limiting
307 void setReplacements(PlaybackReplacements* replacements) { 306 void setReplacements(PlaybackReplacements* replacements) {
308 SkASSERT(fStart == 0 && fStop == 0); 307 SkASSERT(fStart == 0 && fStop == 0);
309 fReplacements = replacements; 308 fReplacements = replacements;
310 } 309 }
311 310
312 bool fUseBBH; 311 bool fUseBBH;
313 size_t fStart; 312 size_t fStart;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 static void WriteFactories(SkWStream* stream, const SkFactorySet& rec); 347 static void WriteFactories(SkWStream* stream, const SkFactorySet& rec);
349 static void WriteTypefaces(SkWStream* stream, const SkRefCntSet& rec); 348 static void WriteTypefaces(SkWStream* stream, const SkRefCntSet& rec);
350 349
351 #ifdef SK_BUILD_FOR_ANDROID 350 #ifdef SK_BUILD_FOR_ANDROID
352 SkMutex fDrawMutex; 351 SkMutex fDrawMutex;
353 bool fAbortCurrentPlayback; 352 bool fAbortCurrentPlayback;
354 #endif 353 #endif
355 }; 354 };
356 355
357 #endif 356 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkPicturePlayback.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698