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

Side by Side Diff: Source/platform/graphics/GraphicsContext.cpp

Issue 1052873003: Explicitly use SkPaint(s) in SVGShapePainter (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2003, 2004, 2005, 2006, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2004, 2005, 2006, 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2013 Google Inc. All rights reserved. 3 * Copyright (C) 2013 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 1095 matching lines...) Expand 10 before | Expand all | Expand 10 after
1106 1106
1107 void GraphicsContext::drawRRect(const SkRRect& rrect, const SkPaint& paint) 1107 void GraphicsContext::drawRRect(const SkRRect& rrect, const SkPaint& paint)
1108 { 1108 {
1109 if (contextDisabled()) 1109 if (contextDisabled())
1110 return; 1110 return;
1111 ASSERT(m_canvas); 1111 ASSERT(m_canvas);
1112 1112
1113 m_canvas->drawRRect(rrect, paint); 1113 m_canvas->drawRRect(rrect, paint);
1114 } 1114 }
1115 1115
1116 void GraphicsContext::fillPath(const Path& pathToFill) 1116 void GraphicsContext::fillPath(const Path& pathToFill, const SkPaint* fillPaint)
1117 { 1117 {
1118 if (contextDisabled() || pathToFill.isEmpty()) 1118 if (contextDisabled() || pathToFill.isEmpty())
1119 return; 1119 return;
1120 1120
1121 // Use const_cast and temporarily modify the fill type instead of copying th e path. 1121 // Use const_cast and temporarily modify the fill type instead of copying th e path.
1122 SkPath& path = const_cast<SkPath&>(pathToFill.skPath()); 1122 SkPath& path = const_cast<SkPath&>(pathToFill.skPath());
1123 SkPath::FillType previousFillType = path.getFillType(); 1123 SkPath::FillType previousFillType = path.getFillType();
1124 1124
1125 SkPath::FillType temporaryFillType = WebCoreWindRuleToSkFillType(immutableSt ate()->fillRule()); 1125 SkPath::FillType temporaryFillType = WebCoreWindRuleToSkFillType(immutableSt ate()->fillRule());
1126 path.setFillType(temporaryFillType); 1126 path.setFillType(temporaryFillType);
1127 1127
1128 drawPath(path, immutableState()->fillPaint()); 1128 drawPath(path, fillPaint ? *fillPaint : immutableState()->fillPaint());
1129 1129
1130 path.setFillType(previousFillType); 1130 path.setFillType(previousFillType);
1131 } 1131 }
1132 1132
1133 void GraphicsContext::fillRect(const FloatRect& rect) 1133 void GraphicsContext::fillRect(const FloatRect& rect, const SkPaint* fillPaint)
1134 { 1134 {
1135 if (contextDisabled()) 1135 if (contextDisabled())
1136 return; 1136 return;
1137 1137
1138 drawRect(rect, immutableState()->fillPaint()); 1138 drawRect(rect, fillPaint ? *fillPaint : immutableState()->fillPaint());
1139 } 1139 }
1140 1140
1141 void GraphicsContext::fillRect(const FloatRect& rect, const Color& color, SkXfer mode::Mode xferMode) 1141 void GraphicsContext::fillRect(const FloatRect& rect, const Color& color, SkXfer mode::Mode xferMode)
1142 { 1142 {
1143 if (contextDisabled()) 1143 if (contextDisabled())
1144 return; 1144 return;
1145 1145
1146 if (color == fillColor() && xferMode == compositeOperation()) { 1146 if (color == fillColor() && xferMode == compositeOperation()) {
1147 drawRect(rect, immutableState()->fillPaint()); 1147 drawRect(rect, immutableState()->fillPaint());
1148 return; 1148 return;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1208 1208
1209 SkRRect rr; 1209 SkRRect rr;
1210 rr.setRectRadii(rect, radii); 1210 rr.setRectRadii(rect, radii);
1211 1211
1212 SkPaint paint(immutableState()->fillPaint()); 1212 SkPaint paint(immutableState()->fillPaint());
1213 paint.setColor(color.rgb()); 1213 paint.setColor(color.rgb());
1214 1214
1215 m_canvas->drawRRect(rr, paint); 1215 m_canvas->drawRRect(rr, paint);
1216 } 1216 }
1217 1217
1218 void GraphicsContext::fillEllipse(const FloatRect& ellipse) 1218 void GraphicsContext::fillEllipse(const FloatRect& ellipse, const SkPaint* fillP aint)
1219 { 1219 {
1220 if (contextDisabled()) 1220 if (contextDisabled())
1221 return; 1221 return;
1222 1222
1223 SkRect rect = ellipse; 1223 SkRect rect = ellipse;
1224 drawOval(rect, immutableState()->fillPaint()); 1224 drawOval(rect, fillPaint ? *fillPaint : immutableState()->fillPaint());
1225 } 1225 }
1226 1226
1227 void GraphicsContext::strokePath(const Path& pathToStroke) 1227 void GraphicsContext::strokePath(const Path& pathToStroke, const SkPaint* stroke Paint)
1228 { 1228 {
1229 if (contextDisabled() || pathToStroke.isEmpty()) 1229 if (contextDisabled() || pathToStroke.isEmpty())
1230 return; 1230 return;
1231 1231
1232 const SkPath& path = pathToStroke.skPath(); 1232 const SkPath& path = pathToStroke.skPath();
1233 drawPath(path, immutableState()->strokePaint()); 1233 drawPath(path, strokePaint ? *strokePaint : immutableState()->strokePaint()) ;
1234 } 1234 }
1235 1235
1236 void GraphicsContext::strokeRect(const FloatRect& rect) 1236 void GraphicsContext::strokeRect(const FloatRect& rect)
1237 { 1237 {
1238 strokeRect(rect, strokeThickness()); 1238 strokeRect(rect, strokeThickness());
1239 } 1239 }
1240 1240
1241 void GraphicsContext::strokeRect(const FloatRect& rect, float lineWidth) 1241 void GraphicsContext::strokeRect(const FloatRect& rect, float lineWidth)
1242 { 1242 {
1243 if (contextDisabled()) 1243 if (contextDisabled())
1244 return; 1244 return;
1245 1245
1246 SkPaint paint(immutableState()->strokePaint()); 1246 SkPaint paint(immutableState()->strokePaint());
1247 paint.setStrokeWidth(WebCoreFloatToSkScalar(lineWidth)); 1247 paint.setStrokeWidth(WebCoreFloatToSkScalar(lineWidth));
1248 // Reset the dash effect to account for the width 1248 // Reset the dash effect to account for the width
1249 immutableState()->strokeData().setupPaintDashPathEffect(&paint, 0); 1249 immutableState()->strokeData().setupPaintDashPathEffect(&paint, 0);
1250
1251 strokeRect(rect, paint);
1252 }
1253
1254 void GraphicsContext::strokeRect(const FloatRect& rect, const SkPaint& strokePai nt)
1255 {
1256 if (contextDisabled())
1257 return;
1258
1259 ASSERT(strokePaint.getStyle() == SkPaint::kStroke_Style);
1260
1250 // strokerect has special rules for CSS when the rect is degenerate: 1261 // strokerect has special rules for CSS when the rect is degenerate:
1251 // if width==0 && height==0, do nothing 1262 // if width==0 && height==0, do nothing
1252 // if width==0 || height==0, then just draw line for the other dimension 1263 // if width==0 || height==0, then just draw line for the other dimension
1253 SkRect r(rect); 1264 SkRect r(rect);
1254 bool validW = r.width() > 0; 1265 bool validW = r.width() > 0;
1255 bool validH = r.height() > 0; 1266 bool validH = r.height() > 0;
1256 if (validW && validH) { 1267 if (validW && validH) {
1257 drawRect(r, paint); 1268 drawRect(r, strokePaint);
1258 } else if (validW || validH) { 1269 } else if (validW || validH) {
1259 // we are expected to respect the lineJoin, so we can't just call 1270 // we are expected to respect the lineJoin, so we can't just call
1260 // drawLine -- we have to create a path that doubles back on itself. 1271 // drawLine -- we have to create a path that doubles back on itself.
1261 SkPath path; 1272 SkPath path;
1262 path.moveTo(r.fLeft, r.fTop); 1273 path.moveTo(r.fLeft, r.fTop);
1263 path.lineTo(r.fRight, r.fBottom); 1274 path.lineTo(r.fRight, r.fBottom);
1264 path.close(); 1275 path.close();
1265 drawPath(path, paint); 1276 drawPath(path, strokePaint);
1266 } 1277 }
1267 } 1278 }
1268 1279
1269 void GraphicsContext::strokeEllipse(const FloatRect& ellipse) 1280 void GraphicsContext::strokeEllipse(const FloatRect& ellipse, const SkPaint* str okePaint)
1270 { 1281 {
1271 if (contextDisabled()) 1282 if (contextDisabled())
1272 return; 1283 return;
1273 1284
1274 drawOval(ellipse, immutableState()->strokePaint()); 1285 drawOval(ellipse, strokePaint ? *strokePaint : immutableState()->strokePaint ());
1275 } 1286 }
1276 1287
1277 void GraphicsContext::clipRoundedRect(const FloatRoundedRect& rect, SkRegion::Op regionOp) 1288 void GraphicsContext::clipRoundedRect(const FloatRoundedRect& rect, SkRegion::Op regionOp)
1278 { 1289 {
1279 if (contextDisabled()) 1290 if (contextDisabled())
1280 return; 1291 return;
1281 1292
1282 if (!rect.isRounded()) { 1293 if (!rect.isRounded()) {
1283 clipRect(rect.rect(), NotAntiAliased, regionOp); 1294 clipRect(rect.rect(), NotAntiAliased, regionOp);
1284 return; 1295 return;
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
1737 // being returned from computeInterpolationQuality. 1748 // being returned from computeInterpolationQuality.
1738 resampling = InterpolationLow; 1749 resampling = InterpolationLow;
1739 } 1750 }
1740 resampling = limitInterpolationQuality(this, resampling); 1751 resampling = limitInterpolationQuality(this, resampling);
1741 paint->setFilterQuality(static_cast<SkFilterQuality>(resampling)); 1752 paint->setFilterQuality(static_cast<SkFilterQuality>(resampling));
1742 1753
1743 return initialSaveCount; 1754 return initialSaveCount;
1744 } 1755 }
1745 1756
1746 } // namespace blink 1757 } // namespace blink
OLDNEW
« Source/platform/graphics/GraphicsContext.h ('K') | « Source/platform/graphics/GraphicsContext.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698