| OLD | NEW |
| 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 1097 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1108 fClipStack->clipDevRect(ir, SkRegion::kReplace_Op); | 1108 fClipStack->clipDevRect(ir, SkRegion::kReplace_Op); |
| 1109 fMCRec->fRasterClip.setRect(ir); | 1109 fMCRec->fRasterClip.setRect(ir); |
| 1110 } | 1110 } |
| 1111 | 1111 |
| 1112 if (intersection) { | 1112 if (intersection) { |
| 1113 *intersection = ir; | 1113 *intersection = ir; |
| 1114 } | 1114 } |
| 1115 return true; | 1115 return true; |
| 1116 } | 1116 } |
| 1117 | 1117 |
| 1118 #ifdef SK_SUPPORT_LEGACY_SAVEFLAGS | |
| 1119 uint32_t SkCanvas::SaveFlagsToSaveLayerFlags(SaveFlags flags) { | |
| 1120 uint32_t layerFlags = 0; | |
| 1121 | |
| 1122 if (0 == (flags & kClipToLayer_SaveFlag)) { | |
| 1123 layerFlags |= kDontClipToLayer_PrivateSaveLayerFlag; | |
| 1124 } | |
| 1125 if (0 == (flags & kHasAlphaLayer_SaveFlag)) { | |
| 1126 layerFlags |= kIsOpaque_SaveLayerFlag; | |
| 1127 } | |
| 1128 return layerFlags; | |
| 1129 } | |
| 1130 | |
| 1131 uint32_t SkCanvas::SaveLayerFlagsToSaveFlags(SaveLayerFlags layerFlags) { | |
| 1132 uint32_t saveFlags = 0; | |
| 1133 | |
| 1134 if (0 == (layerFlags & kDontClipToLayer_PrivateSaveLayerFlag)) { | |
| 1135 saveFlags |= kClipToLayer_SaveFlag; | |
| 1136 } | |
| 1137 if (0 == (layerFlags & kIsOpaque_SaveLayerFlag)) { | |
| 1138 saveFlags |= kHasAlphaLayer_SaveFlag; | |
| 1139 } | |
| 1140 return saveFlags; | |
| 1141 } | |
| 1142 #endif | |
| 1143 | 1118 |
| 1144 int SkCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint) { | 1119 int SkCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint) { |
| 1145 return this->saveLayer(SaveLayerRec(bounds, paint, 0)); | 1120 return this->saveLayer(SaveLayerRec(bounds, paint, 0)); |
| 1146 } | 1121 } |
| 1147 | 1122 |
| 1148 #ifdef SK_SUPPORT_LEGACY_SAVEFLAGS | |
| 1149 int SkCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint, SaveFlags fl
ags) { | |
| 1150 return this->saveLayer(SaveLayerRec(bounds, paint, SaveFlagsToSaveLayerFlags
(flags))); | |
| 1151 } | |
| 1152 #endif | |
| 1153 | |
| 1154 int SkCanvas::saveLayerPreserveLCDTextRequests(const SkRect* bounds, const SkPai
nt* paint) { | 1123 int SkCanvas::saveLayerPreserveLCDTextRequests(const SkRect* bounds, const SkPai
nt* paint) { |
| 1155 return this->saveLayer(SaveLayerRec(bounds, paint, kPreserveLCDText_SaveLaye
rFlag)); | 1124 return this->saveLayer(SaveLayerRec(bounds, paint, kPreserveLCDText_SaveLaye
rFlag)); |
| 1156 } | 1125 } |
| 1157 | 1126 |
| 1158 int SkCanvas::saveLayer(const SaveLayerRec& origRec) { | 1127 int SkCanvas::saveLayer(const SaveLayerRec& origRec) { |
| 1159 SaveLayerRec rec(origRec); | 1128 SaveLayerRec rec(origRec); |
| 1160 if (gIgnoreSaveLayerBounds) { | 1129 if (gIgnoreSaveLayerBounds) { |
| 1161 rec.fBounds = nullptr; | 1130 rec.fBounds = nullptr; |
| 1162 } | 1131 } |
| 1163 SaveLayerStrategy strategy = this->getSaveLayerStrategy(rec); | 1132 SaveLayerStrategy strategy = this->getSaveLayerStrategy(rec); |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1283 int SkCanvas::saveLayerAlpha(const SkRect* bounds, U8CPU alpha) { | 1252 int SkCanvas::saveLayerAlpha(const SkRect* bounds, U8CPU alpha) { |
| 1284 if (0xFF == alpha) { | 1253 if (0xFF == alpha) { |
| 1285 return this->saveLayer(bounds, nullptr); | 1254 return this->saveLayer(bounds, nullptr); |
| 1286 } else { | 1255 } else { |
| 1287 SkPaint tmpPaint; | 1256 SkPaint tmpPaint; |
| 1288 tmpPaint.setAlpha(alpha); | 1257 tmpPaint.setAlpha(alpha); |
| 1289 return this->saveLayer(bounds, &tmpPaint); | 1258 return this->saveLayer(bounds, &tmpPaint); |
| 1290 } | 1259 } |
| 1291 } | 1260 } |
| 1292 | 1261 |
| 1293 #ifdef SK_SUPPORT_LEGACY_SAVEFLAGS | |
| 1294 int SkCanvas::saveLayerAlpha(const SkRect* bounds, U8CPU alpha, | |
| 1295 SaveFlags flags) { | |
| 1296 if (0xFF == alpha) { | |
| 1297 return this->saveLayer(bounds, nullptr, flags); | |
| 1298 } else { | |
| 1299 SkPaint tmpPaint; | |
| 1300 tmpPaint.setAlpha(alpha); | |
| 1301 return this->saveLayer(bounds, &tmpPaint, flags); | |
| 1302 } | |
| 1303 } | |
| 1304 #endif | |
| 1305 | |
| 1306 void SkCanvas::internalRestore() { | 1262 void SkCanvas::internalRestore() { |
| 1307 SkASSERT(fMCStack.count() != 0); | 1263 SkASSERT(fMCStack.count() != 0); |
| 1308 | 1264 |
| 1309 fDeviceCMDirty = true; | 1265 fDeviceCMDirty = true; |
| 1310 fCachedLocalClipBoundsDirty = true; | 1266 fCachedLocalClipBoundsDirty = true; |
| 1311 | 1267 |
| 1312 fClipStack->restore(); | 1268 fClipStack->restore(); |
| 1313 | 1269 |
| 1314 // reserve our layer (if any) | 1270 // reserve our layer (if any) |
| 1315 DeviceCM* layer = fMCRec->fLayer; // may be null | 1271 DeviceCM* layer = fMCRec->fLayer; // may be null |
| (...skipping 1699 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3015 } | 2971 } |
| 3016 | 2972 |
| 3017 if (matrix) { | 2973 if (matrix) { |
| 3018 canvas->concat(*matrix); | 2974 canvas->concat(*matrix); |
| 3019 } | 2975 } |
| 3020 } | 2976 } |
| 3021 | 2977 |
| 3022 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() { | 2978 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() { |
| 3023 fCanvas->restoreToCount(fSaveCount); | 2979 fCanvas->restoreToCount(fSaveCount); |
| 3024 } | 2980 } |
| OLD | NEW |