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 #ifdef SK_SUPPORT_LEGACY_SAVEFLAGS |
837 int SkCanvas::save(SaveFlags flags) { | 838 int SkCanvas::save(SaveFlags flags) { |
| 839 #else |
| 840 int SkCanvas::save() { |
| 841 SaveFlags flags = kMatrixClip_SaveFlag; |
| 842 #endif |
| 843 |
838 this->willSave(flags); | 844 this->willSave(flags); |
839 // call shared impl | 845 // call shared impl |
840 return this->internalSave(flags); | 846 return this->internalSave(flags); |
841 } | 847 } |
842 | 848 |
843 static bool bounds_affects_clip(SkCanvas::SaveFlags flags) { | 849 bool SkCanvas::bounds_affects_clip(SkCanvas::SaveFlags flags) { |
844 #ifdef SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG | 850 #ifdef SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG |
845 return (flags & SkCanvas::kClipToLayer_SaveFlag) != 0; | 851 return (flags & SkCanvas::kClipToLayer_SaveFlag) != 0; |
846 #else | 852 #else |
847 return true; | 853 return true; |
848 #endif | 854 #endif |
849 } | 855 } |
850 | 856 |
851 bool SkCanvas::clipRectBounds(const SkRect* bounds, SaveFlags flags, | 857 bool SkCanvas::clipRectBounds(const SkRect* bounds, SaveFlags flags, |
852 SkIRect* intersection, const SkImageFilter* image
Filter) { | 858 SkIRect* intersection, const SkImageFilter* image
Filter) { |
853 SkIRect clipBounds; | 859 SkIRect clipBounds; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
891 } | 897 } |
892 return true; | 898 return true; |
893 } | 899 } |
894 | 900 |
895 SkCanvas::SaveLayerStrategy SkCanvas::willSaveLayer(const SkRect*, const SkPaint
*, SaveFlags) { | 901 SkCanvas::SaveLayerStrategy SkCanvas::willSaveLayer(const SkRect*, const SkPaint
*, SaveFlags) { |
896 | 902 |
897 // Do nothing. Subclasses may do something. | 903 // Do nothing. Subclasses may do something. |
898 return kFullLayer_SaveLayerStrategy; | 904 return kFullLayer_SaveLayerStrategy; |
899 } | 905 } |
900 | 906 |
| 907 #ifdef SK_SUPPORT_LEGACY_SAVEFLAGS |
901 int SkCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint, | 908 int SkCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint, |
902 SaveFlags flags) { | 909 SaveFlags flags) { |
| 910 #else |
| 911 int SkCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint) { |
| 912 SaveFlags flags = kARGB_ClipLayer_SaveFlag; |
| 913 #endif |
| 914 |
903 // Overriding classes may return false to signal that we don't need to creat
e a layer. | 915 // 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); | 916 SaveLayerStrategy strategy = this->willSaveLayer(bounds, paint, flags); |
905 return this->internalSaveLayer(bounds, paint, flags, false, strategy); | 917 return this->internalSaveLayer(bounds, paint, flags, false, strategy); |
906 } | 918 } |
907 | 919 |
908 static SkBaseDevice* create_compatible_device(SkCanvas* canvas, | 920 static SkBaseDevice* create_compatible_device(SkCanvas* canvas, |
909 const SkImageInfo& info) { | 921 const SkImageInfo& info) { |
910 SkBaseDevice* device = canvas->getDevice(); | 922 SkBaseDevice* device = canvas->getDevice(); |
911 return device ? device->createCompatibleDevice(info) : NULL; | 923 return device ? device->createCompatibleDevice(info) : NULL; |
912 } | 924 } |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
968 device->unref(); | 980 device->unref(); |
969 | 981 |
970 layer->fNext = fMCRec->fTopLayer; | 982 layer->fNext = fMCRec->fTopLayer; |
971 fMCRec->fLayer = layer; | 983 fMCRec->fLayer = layer; |
972 fMCRec->fTopLayer = layer; // this field is NOT an owner of layer | 984 fMCRec->fTopLayer = layer; // this field is NOT an owner of layer |
973 | 985 |
974 fSaveLayerCount += 1; | 986 fSaveLayerCount += 1; |
975 return count; | 987 return count; |
976 } | 988 } |
977 | 989 |
| 990 |
| 991 #ifdef SK_SUPPORT_LEGACY_SAVEFLAGS |
978 int SkCanvas::saveLayerAlpha(const SkRect* bounds, U8CPU alpha, | 992 int SkCanvas::saveLayerAlpha(const SkRect* bounds, U8CPU alpha, |
979 SaveFlags flags) { | 993 SaveFlags flags) { |
| 994 #else |
| 995 int SkCanvas::saveLayerAlpha(const SkRect* bounds, U8CPU alpha) { |
| 996 #endif |
| 997 |
980 if (0xFF == alpha) { | 998 if (0xFF == alpha) { |
981 return this->saveLayer(bounds, NULL, flags); | 999 return this->saveLayer(bounds, NULL |
| 1000 #ifdef SK_SUPPORT_LEGACY_SAVEFLAGS |
| 1001 , flags |
| 1002 #endif |
| 1003 ); |
982 } else { | 1004 } else { |
983 SkPaint tmpPaint; | 1005 SkPaint tmpPaint; |
984 tmpPaint.setAlpha(alpha); | 1006 tmpPaint.setAlpha(alpha); |
985 return this->saveLayer(bounds, &tmpPaint, flags); | 1007 return this->saveLayer(bounds, &tmpPaint |
| 1008 #ifdef SK_SUPPORT_LEGACY_SAVEFLAGS |
| 1009 , flags |
| 1010 #endif |
| 1011 ); |
986 } | 1012 } |
987 } | 1013 } |
988 | 1014 |
989 void SkCanvas::willRestore() { | 1015 void SkCanvas::willRestore() { |
990 // Do nothing. Subclasses may do something. | 1016 // Do nothing. Subclasses may do something. |
991 } | 1017 } |
992 | 1018 |
993 void SkCanvas::restore() { | 1019 void SkCanvas::restore() { |
994 // check for underflow | 1020 // check for underflow |
995 if (fMCStack.count() > 1) { | 1021 if (fMCStack.count() > 1) { |
(...skipping 1641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2637 if (!supported_for_raster_canvas(info)) { | 2663 if (!supported_for_raster_canvas(info)) { |
2638 return NULL; | 2664 return NULL; |
2639 } | 2665 } |
2640 | 2666 |
2641 SkBitmap bitmap; | 2667 SkBitmap bitmap; |
2642 if (!bitmap.installPixels(info, pixels, rowBytes)) { | 2668 if (!bitmap.installPixels(info, pixels, rowBytes)) { |
2643 return NULL; | 2669 return NULL; |
2644 } | 2670 } |
2645 return SkNEW_ARGS(SkCanvas, (bitmap)); | 2671 return SkNEW_ARGS(SkCanvas, (bitmap)); |
2646 } | 2672 } |
OLD | NEW |