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

Side by Side Diff: sky/engine/platform/graphics/skia/NativeImageSkia.cpp

Issue 1013463003: Update from https://crrev.com/320931 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 9 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2008, Google Inc. All rights reserved. 2 * Copyright (c) 2008, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * 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 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 SkMatrix localMatrix; 232 SkMatrix localMatrix;
233 // We also need to translate it such that the origin of the pattern is the 233 // We also need to translate it such that the origin of the pattern is the
234 // origin of the destination rect, which is what WebKit expects. Skia uses 234 // origin of the destination rect, which is what WebKit expects. Skia uses
235 // the coordinate system origin as the base for the pattern. If WebKit wants 235 // the coordinate system origin as the base for the pattern. If WebKit wants
236 // a shifted image, it will shift it from there using the localMatrix. 236 // a shifted image, it will shift it from there using the localMatrix.
237 const float adjustedX = phase.x() + normSrcRect.x() * scale.width(); 237 const float adjustedX = phase.x() + normSrcRect.x() * scale.width();
238 const float adjustedY = phase.y() + normSrcRect.y() * scale.height(); 238 const float adjustedY = phase.y() + normSrcRect.y() * scale.height();
239 localMatrix.setTranslate(SkFloatToScalar(adjustedX), SkFloatToScalar(adjuste dY)); 239 localMatrix.setTranslate(SkFloatToScalar(adjustedX), SkFloatToScalar(adjuste dY));
240 240
241 RefPtr<SkShader> shader; 241 RefPtr<SkShader> shader;
242 SkPaint::FilterLevel filterLevel = static_cast<SkPaint::FilterLevel>(resampl ing); 242 SkFilterQuality filterLevel = static_cast<SkFilterQuality>(resampling);
243 243
244 // Bicubic filter is only applied to defer-decoded images, see 244 // Bicubic filter is only applied to defer-decoded images, see
245 // NativeImageSkia::draw for details. 245 // NativeImageSkia::draw for details.
246 if (resampling == InterpolationHigh && !isLazyDecoded) { 246 if (resampling == InterpolationHigh && !isLazyDecoded) {
247 // Do nice resampling. 247 // Do nice resampling.
248 filterLevel = SkPaint::kNone_FilterLevel; 248 filterLevel = kNone_SkFilterQuality;
249 float scaleX = destBitmapWidth / normSrcRect.width(); 249 float scaleX = destBitmapWidth / normSrcRect.width();
250 float scaleY = destBitmapHeight / normSrcRect.height(); 250 float scaleY = destBitmapHeight / normSrcRect.height();
251 SkRect scaledSrcRect; 251 SkRect scaledSrcRect;
252 252
253 // Since we are resizing the bitmap, we need to remove the scale 253 // Since we are resizing the bitmap, we need to remove the scale
254 // applied to the pixels in the bitmap shader. This means we need 254 // applied to the pixels in the bitmap shader. This means we need
255 // CTM * localMatrix to have identity scale. Since we 255 // CTM * localMatrix to have identity scale. Since we
256 // can't modify CTM (or the rectangle will be drawn in the wrong 256 // can't modify CTM (or the rectangle will be drawn in the wrong
257 // place), we must set localMatrix's scale to the inverse of 257 // place), we must set localMatrix's scale to the inverse of
258 // CTM scale. 258 // CTM scale.
(...skipping 25 matching lines...) Expand all
284 shader = adoptRef(SkShader::CreateBitmapShader( 284 shader = adoptRef(SkShader::CreateBitmapShader(
285 createBitmapWithSpace(srcSubset, repeatSpacing.width() * ctmScal eX, repeatSpacing.height() * ctmScaleY), 285 createBitmapWithSpace(srcSubset, repeatSpacing.width() * ctmScal eX, repeatSpacing.height() * ctmScaleY),
286 SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode, &localMa trix)); 286 SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode, &localMa trix));
287 } 287 }
288 } 288 }
289 289
290 SkPaint paint; 290 SkPaint paint;
291 paint.setShader(shader.get()); 291 paint.setShader(shader.get());
292 paint.setXfermodeMode(WebCoreCompositeToSkiaComposite(compositeOp, blendMode )); 292 paint.setXfermodeMode(WebCoreCompositeToSkiaComposite(compositeOp, blendMode ));
293 paint.setColorFilter(context->colorFilter()); 293 paint.setColorFilter(context->colorFilter());
294 paint.setFilterLevel(filterLevel); 294 paint.setFilterQuality(filterLevel);
295 context->drawRect(destRect, paint); 295 context->drawRect(destRect, paint);
296 } 296 }
297 297
298 bool NativeImageSkia::shouldCacheResampling(const SkISize& scaledImageSize, cons t SkIRect& scaledImageSubset) const 298 bool NativeImageSkia::shouldCacheResampling(const SkISize& scaledImageSize, cons t SkIRect& scaledImageSubset) const
299 { 299 {
300 // Check whether the requested dimensions match previous request. 300 // Check whether the requested dimensions match previous request.
301 bool matchesPreviousRequest = m_cachedImageInfo.isEqual(scaledImageSize, sca ledImageSubset); 301 bool matchesPreviousRequest = m_cachedImageInfo.isEqual(scaledImageSize, sca ledImageSubset);
302 if (matchesPreviousRequest) 302 if (matchesPreviousRequest)
303 ++m_resizeRequests; 303 ++m_resizeRequests;
304 else { 304 else {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 SkIRect NativeImageSkia::ImageResourceInfo::rectInSubset(const SkIRect& otherSca ledImageSubset) 361 SkIRect NativeImageSkia::ImageResourceInfo::rectInSubset(const SkIRect& otherSca ledImageSubset)
362 { 362 {
363 if (!scaledImageSubset.contains(otherScaledImageSubset)) 363 if (!scaledImageSubset.contains(otherScaledImageSubset))
364 return SkIRect::MakeEmpty(); 364 return SkIRect::MakeEmpty();
365 SkIRect subsetRect = otherScaledImageSubset; 365 SkIRect subsetRect = otherScaledImageSubset;
366 subsetRect.offset(-scaledImageSubset.x(), -scaledImageSubset.y()); 366 subsetRect.offset(-scaledImageSubset.x(), -scaledImageSubset.y());
367 return subsetRect; 367 return subsetRect;
368 } 368 }
369 369
370 } // namespace blink 370 } // namespace blink
OLDNEW
« no previous file with comments | « sky/engine/platform/graphics/filters/SkiaImageFilterBuilder.cpp ('k') | sky/engine/platform/graphics/skia/SkiaUtils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698