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

Side by Side Diff: src/core/SkCanvas.cpp

Issue 2257643003: remove disable aa/dither flags from Props -- never used (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: restore gm, only remove disable aspects Created 4 years, 4 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
« no previous file with comments | « include/core/SkSurfaceProps.h ('k') | no next file » | 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 * Copyright 2008 The Android Open Source Project 2 * Copyright 2008 The Android Open Source Project
3 * 3 *
4 * 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
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkBitmapDevice.h" 8 #include "SkBitmapDevice.h"
9 #include "SkCanvas.h" 9 #include "SkCanvas.h"
10 #include "SkCanvasPriv.h" 10 #include "SkCanvasPriv.h"
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 if (this->wouldOverwriteEntireSurface(rect, paint, overrideOpacity)) { 168 if (this->wouldOverwriteEntireSurface(rect, paint, overrideOpacity)) {
169 mode = SkSurface::kDiscard_ContentChangeMode; 169 mode = SkSurface::kDiscard_ContentChangeMode;
170 } 170 }
171 } 171 }
172 fSurfaceBase->aboutToDraw(mode); 172 fSurfaceBase->aboutToDraw(mode);
173 } 173 }
174 } 174 }
175 175
176 /////////////////////////////////////////////////////////////////////////////// 176 ///////////////////////////////////////////////////////////////////////////////
177 177
178 static uint32_t filter_paint_flags(const SkSurfaceProps& props, uint32_t flags) {
179 const uint32_t propFlags = props.flags();
180 if (propFlags & SkSurfaceProps::kDisallowDither_Flag) {
181 flags &= ~SkPaint::kDither_Flag;
182 }
183 if (propFlags & SkSurfaceProps::kDisallowAntiAlias_Flag) {
184 flags &= ~SkPaint::kAntiAlias_Flag;
185 }
186 return flags;
187 }
188
189 ///////////////////////////////////////////////////////////////////////////////
190
191 /* This is the record we keep for each SkBaseDevice that the user installs. 178 /* This is the record we keep for each SkBaseDevice that the user installs.
192 The clip/matrix/proc are fields that reflect the top of the save/restore 179 The clip/matrix/proc are fields that reflect the top of the save/restore
193 stack. Whenever the canvas changes, it marks a dirty flag, and then before 180 stack. Whenever the canvas changes, it marks a dirty flag, and then before
194 these are used (assuming we're not on a layer) we rebuild these cache 181 these are used (assuming we're not on a layer) we rebuild these cache
195 values: they reflect the top of the save stack, but translated and clipped 182 values: they reflect the top of the save stack, but translated and clipped
196 by the device's XY offset and bitmap-bounds. 183 by the device's XY offset and bitmap-bounds.
197 */ 184 */
198 struct DeviceCM { 185 struct DeviceCM {
199 DeviceCM* fNext; 186 DeviceCM* fNext;
200 SkBaseDevice* fDevice; 187 SkBaseDevice* fDevice;
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 if (SkDrawLooper* looper = paint.getLooper()) { 487 if (SkDrawLooper* looper = paint.getLooper()) {
501 void* buffer = fLooperContextAllocator.reserveT<SkDrawLooper::Contex t>( 488 void* buffer = fLooperContextAllocator.reserveT<SkDrawLooper::Contex t>(
502 looper->contextSize()); 489 looper->contextSize());
503 fLooperContext = looper->createContext(canvas, buffer); 490 fLooperContext = looper->createContext(canvas, buffer);
504 fIsSimple = false; 491 fIsSimple = false;
505 } else { 492 } else {
506 fLooperContext = nullptr; 493 fLooperContext = nullptr;
507 // can we be marked as simple? 494 // can we be marked as simple?
508 fIsSimple = !fFilter && !fTempLayerForImageFilter; 495 fIsSimple = !fFilter && !fTempLayerForImageFilter;
509 } 496 }
510
511 uint32_t oldFlags = paint.getFlags();
512 fNewPaintFlags = filter_paint_flags(props, oldFlags);
513 if (fIsSimple && (fNewPaintFlags != oldFlags)) {
514 SkPaint* paint = set_if_needed(&fLazyPaintInit, fOrigPaint);
515 paint->setFlags(fNewPaintFlags);
516 fPaint = paint;
517 // if we're not simple, doNext() will take care of calling setFlags( )
518 }
519 } 497 }
520 498
521 ~AutoDrawLooper() { 499 ~AutoDrawLooper() {
522 if (fTempLayerForImageFilter) { 500 if (fTempLayerForImageFilter) {
523 fCanvas->internalRestore(); 501 fCanvas->internalRestore();
524 } 502 }
525 SkASSERT(fCanvas->getSaveCount() == fSaveCount); 503 SkASSERT(fCanvas->getSaveCount() == fSaveCount);
526 } 504 }
527 505
528 const SkPaint& paint() const { 506 const SkPaint& paint() const {
(...skipping 13 matching lines...) Expand all
542 } 520 }
543 521
544 private: 522 private:
545 SkLazyPaint fLazyPaintInit; // base paint storage in case we need to mod ify it 523 SkLazyPaint fLazyPaintInit; // base paint storage in case we need to mod ify it
546 SkLazyPaint fLazyPaintPerLooper; // per-draw-looper storage, so the loo per can modify it 524 SkLazyPaint fLazyPaintPerLooper; // per-draw-looper storage, so the loo per can modify it
547 SkCanvas* fCanvas; 525 SkCanvas* fCanvas;
548 const SkPaint& fOrigPaint; 526 const SkPaint& fOrigPaint;
549 SkDrawFilter* fFilter; 527 SkDrawFilter* fFilter;
550 const SkPaint* fPaint; 528 const SkPaint* fPaint;
551 int fSaveCount; 529 int fSaveCount;
552 uint32_t fNewPaintFlags;
553 bool fTempLayerForImageFilter; 530 bool fTempLayerForImageFilter;
554 bool fDone; 531 bool fDone;
555 bool fIsSimple; 532 bool fIsSimple;
556 SkDrawLooper::Context* fLooperContext; 533 SkDrawLooper::Context* fLooperContext;
557 SkSmallAllocator<1, 32> fLooperContextAllocator; 534 SkSmallAllocator<1, 32> fLooperContextAllocator;
558 535
559 bool doNext(SkDrawFilter::Type drawType); 536 bool doNext(SkDrawFilter::Type drawType);
560 }; 537 };
561 538
562 bool AutoDrawLooper::doNext(SkDrawFilter::Type drawType) { 539 bool AutoDrawLooper::doNext(SkDrawFilter::Type drawType) {
563 fPaint = nullptr; 540 fPaint = nullptr;
564 SkASSERT(!fIsSimple); 541 SkASSERT(!fIsSimple);
565 SkASSERT(fLooperContext || fFilter || fTempLayerForImageFilter); 542 SkASSERT(fLooperContext || fFilter || fTempLayerForImageFilter);
566 543
567 SkPaint* paint = fLazyPaintPerLooper.set(fLazyPaintInit.isValid() ? 544 SkPaint* paint = fLazyPaintPerLooper.set(fLazyPaintInit.isValid() ?
568 *fLazyPaintInit.get() : fOrigPaint) ; 545 *fLazyPaintInit.get() : fOrigPaint) ;
569 paint->setFlags(fNewPaintFlags);
570 546
571 if (fTempLayerForImageFilter) { 547 if (fTempLayerForImageFilter) {
572 paint->setImageFilter(nullptr); 548 paint->setImageFilter(nullptr);
573 paint->setXfermode(nullptr); 549 paint->setXfermode(nullptr);
574 } 550 }
575 551
576 if (fLooperContext && !fLooperContext->next(fCanvas, paint)) { 552 if (fLooperContext && !fLooperContext->next(fCanvas, paint)) {
577 fDone = true; 553 fDone = true;
578 return false; 554 return false;
579 } 555 }
(...skipping 2807 matching lines...) Expand 10 before | Expand all | Expand 10 after
3387 3363
3388 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() { 3364 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() {
3389 fCanvas->restoreToCount(fSaveCount); 3365 fCanvas->restoreToCount(fSaveCount);
3390 } 3366 }
3391 3367
3392 #ifdef SK_SUPPORT_LEGACY_NEW_SURFACE_API 3368 #ifdef SK_SUPPORT_LEGACY_NEW_SURFACE_API
3393 SkSurface* SkCanvas::newSurface(const SkImageInfo& info, const SkSurfaceProps* p rops) { 3369 SkSurface* SkCanvas::newSurface(const SkImageInfo& info, const SkSurfaceProps* p rops) {
3394 return this->makeSurface(info, props).release(); 3370 return this->makeSurface(info, props).release();
3395 } 3371 }
3396 #endif 3372 #endif
OLDNEW
« no previous file with comments | « include/core/SkSurfaceProps.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698