| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2008 The Android Open Source Project | 3 * Copyright 2008 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 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
| (...skipping 816 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 827 fClipStack.save(); | 827 fClipStack.save(); |
| 828 } | 828 } |
| 829 | 829 |
| 830 return saveCount; | 830 return saveCount; |
| 831 } | 831 } |
| 832 | 832 |
| 833 void SkCanvas::willSave(SaveFlags) { | 833 void SkCanvas::willSave(SaveFlags) { |
| 834 // Do nothing. Subclasses may do something. | 834 // Do nothing. Subclasses may do something. |
| 835 } | 835 } |
| 836 | 836 |
| 837 int SkCanvas::save() { |
| 838 this->willSave(kMatrixClip_SaveFlag); |
| 839 return this->internalSave(kMatrixClip_SaveFlag); |
| 840 } |
| 841 |
| 837 int SkCanvas::save(SaveFlags flags) { | 842 int SkCanvas::save(SaveFlags flags) { |
| 838 this->willSave(flags); | 843 this->willSave(flags); |
| 839 // call shared impl | 844 // call shared impl |
| 840 return this->internalSave(flags); | 845 return this->internalSave(flags); |
| 841 } | 846 } |
| 842 | 847 |
| 843 static bool bounds_affects_clip(SkCanvas::SaveFlags flags) { | 848 static bool bounds_affects_clip(SkCanvas::SaveFlags flags) { |
| 844 #ifdef SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG | 849 #ifdef SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG |
| 845 return (flags & SkCanvas::kClipToLayer_SaveFlag) != 0; | 850 return (flags & SkCanvas::kClipToLayer_SaveFlag) != 0; |
| 846 #else | 851 #else |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 891 } | 896 } |
| 892 return true; | 897 return true; |
| 893 } | 898 } |
| 894 | 899 |
| 895 SkCanvas::SaveLayerStrategy SkCanvas::willSaveLayer(const SkRect*, const SkPaint
*, SaveFlags) { | 900 SkCanvas::SaveLayerStrategy SkCanvas::willSaveLayer(const SkRect*, const SkPaint
*, SaveFlags) { |
| 896 | 901 |
| 897 // Do nothing. Subclasses may do something. | 902 // Do nothing. Subclasses may do something. |
| 898 return kFullLayer_SaveLayerStrategy; | 903 return kFullLayer_SaveLayerStrategy; |
| 899 } | 904 } |
| 900 | 905 |
| 906 int SkCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint) { |
| 907 SaveLayerStrategy strategy = this->willSaveLayer(bounds, paint, kARGB_ClipLa
yer_SaveFlag); |
| 908 return this->internalSaveLayer(bounds, paint, kARGB_ClipLayer_SaveFlag, fals
e, strategy); |
| 909 } |
| 910 |
| 901 int SkCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint, | 911 int SkCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint, |
| 902 SaveFlags flags) { | 912 SaveFlags flags) { |
| 903 // Overriding classes may return false to signal that we don't need to creat
e a layer. | |
| 904 SaveLayerStrategy strategy = this->willSaveLayer(bounds, paint, flags); | 913 SaveLayerStrategy strategy = this->willSaveLayer(bounds, paint, flags); |
| 905 return this->internalSaveLayer(bounds, paint, flags, false, strategy); | 914 return this->internalSaveLayer(bounds, paint, flags, false, strategy); |
| 906 } | 915 } |
| 907 | 916 |
| 908 static SkBaseDevice* create_compatible_device(SkCanvas* canvas, | 917 static SkBaseDevice* create_compatible_device(SkCanvas* canvas, |
| 909 const SkImageInfo& info) { | 918 const SkImageInfo& info) { |
| 910 SkBaseDevice* device = canvas->getDevice(); | 919 SkBaseDevice* device = canvas->getDevice(); |
| 911 return device ? device->createCompatibleDevice(info) : NULL; | 920 return device ? device->createCompatibleDevice(info) : NULL; |
| 912 } | 921 } |
| 913 | 922 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 968 device->unref(); | 977 device->unref(); |
| 969 | 978 |
| 970 layer->fNext = fMCRec->fTopLayer; | 979 layer->fNext = fMCRec->fTopLayer; |
| 971 fMCRec->fLayer = layer; | 980 fMCRec->fLayer = layer; |
| 972 fMCRec->fTopLayer = layer; // this field is NOT an owner of layer | 981 fMCRec->fTopLayer = layer; // this field is NOT an owner of layer |
| 973 | 982 |
| 974 fSaveLayerCount += 1; | 983 fSaveLayerCount += 1; |
| 975 return count; | 984 return count; |
| 976 } | 985 } |
| 977 | 986 |
| 987 int SkCanvas::saveLayerAlpha(const SkRect* bounds, U8CPU alpha) { |
| 988 return this->saveLayerAlpha(bounds, alpha, kARGB_ClipLayer_SaveFlag); |
| 989 } |
| 990 |
| 978 int SkCanvas::saveLayerAlpha(const SkRect* bounds, U8CPU alpha, | 991 int SkCanvas::saveLayerAlpha(const SkRect* bounds, U8CPU alpha, |
| 979 SaveFlags flags) { | 992 SaveFlags flags) { |
| 980 if (0xFF == alpha) { | 993 if (0xFF == alpha) { |
| 981 return this->saveLayer(bounds, NULL, flags); | 994 return this->saveLayer(bounds, NULL, flags); |
| 982 } else { | 995 } else { |
| 983 SkPaint tmpPaint; | 996 SkPaint tmpPaint; |
| 984 tmpPaint.setAlpha(alpha); | 997 tmpPaint.setAlpha(alpha); |
| 985 return this->saveLayer(bounds, &tmpPaint, flags); | 998 return this->saveLayer(bounds, &tmpPaint, flags); |
| 986 } | 999 } |
| 987 } | 1000 } |
| (...skipping 1649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2637 if (!supported_for_raster_canvas(info)) { | 2650 if (!supported_for_raster_canvas(info)) { |
| 2638 return NULL; | 2651 return NULL; |
| 2639 } | 2652 } |
| 2640 | 2653 |
| 2641 SkBitmap bitmap; | 2654 SkBitmap bitmap; |
| 2642 if (!bitmap.installPixels(info, pixels, rowBytes)) { | 2655 if (!bitmap.installPixels(info, pixels, rowBytes)) { |
| 2643 return NULL; | 2656 return NULL; |
| 2644 } | 2657 } |
| 2645 return SkNEW_ARGS(SkCanvas, (bitmap)); | 2658 return SkNEW_ARGS(SkCanvas, (bitmap)); |
| 2646 } | 2659 } |
| OLD | NEW |