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

Side by Side Diff: webkit/port/platform/graphics/skia/ImageSkia.cpp

Issue 13375: Fix incorrect pattern offsets, and rebaseline associated test results. (Closed)
Patch Set: New fix plus rebaselines Created 12 years 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 // Copyright (c) 2008, Google Inc. 1 // Copyright (c) 2008, Google Inc.
2 // All rights reserved. 2 // 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 15 matching lines...) Expand all
26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 29
30 #include "config.h" 30 #include "config.h"
31 31
32 #include "AffineTransform.h" 32 #include "AffineTransform.h"
33 #include "BitmapImage.h" 33 #include "BitmapImage.h"
34 #include "BitmapImageSingleFrameSkia.h" 34 #include "BitmapImageSingleFrameSkia.h"
35 #include "ChromiumBridge.h" 35 #include "ChromiumBridge.h"
36 #include "FloatConversion.h"
36 #include "FloatRect.h" 37 #include "FloatRect.h"
37 #include "GraphicsContext.h" 38 #include "GraphicsContext.h"
38 #include "Logging.h" 39 #include "Logging.h"
39 #include "NativeImageSkia.h" 40 #include "NativeImageSkia.h"
40 #include "NotImplemented.h" 41 #include "NotImplemented.h"
41 #include "PlatformContextSkia.h" 42 #include "PlatformContextSkia.h"
42 #include "PlatformString.h" 43 #include "PlatformString.h"
43 #include "SkiaUtils.h" 44 #include "SkiaUtils.h"
44 #include "SkShader.h" 45 #include "SkShader.h"
45 46
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 } else { 365 } else {
365 // No need to do nice resampling. 366 // No need to do nice resampling.
366 shader = SkShader::CreateBitmapShader( 367 shader = SkShader::CreateBitmapShader(
367 src_subset, SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode); 368 src_subset, SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode);
368 } 369 }
369 370
370 // We also need to translate it such that the origin of the pattern is the 371 // We also need to translate it such that the origin of the pattern is the
371 // origin of the destination rect, which is what WebKit expects. Skia uses 372 // origin of the destination rect, which is what WebKit expects. Skia uses
372 // the coordinate system origin as the base for the patter. If WebKit wants 373 // the coordinate system origin as the base for the patter. If WebKit wants
373 // a shifted image, it will shift it from there using the patternTransform. 374 // a shifted image, it will shift it from there using the patternTransform.
374 matrix.postTranslate(SkFloatToScalar(phase.x()), 375 float adjustedX = phase.x() + floatSrcRect.x() *
375 SkFloatToScalar(phase.y())); 376 narrowPrecisionToFloat(patternTransform.a());
377 float adjustedY = phase.y() + floatSrcRect.y() *
378 narrowPrecisionToFloat(patternTransform.d());
379 matrix.postTranslate(SkFloatToScalar(adjustedX),
380 SkFloatToScalar(adjustedY));
376 shader->setLocalMatrix(matrix); 381 shader->setLocalMatrix(matrix);
377 382
378 SkPaint paint; 383 SkPaint paint;
379 paint.setShader(shader)->unref(); 384 paint.setShader(shader)->unref();
380 paint.setPorterDuffXfermode(WebCoreCompositeToSkiaComposite(compositeOp)); 385 paint.setPorterDuffXfermode(WebCoreCompositeToSkiaComposite(compositeOp));
381 paint.setFilterBitmap(resampling == RESAMPLE_LINEAR); 386 paint.setFilterBitmap(resampling == RESAMPLE_LINEAR);
382 387
383 context->platformContext()->paintSkPaint(destRect, paint); 388 context->platformContext()->paintSkPaint(destRect, paint);
384 } 389 }
385 390
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 PassRefPtr<BitmapImageSingleFrameSkia> BitmapImageSingleFrameSkia::create( 452 PassRefPtr<BitmapImageSingleFrameSkia> BitmapImageSingleFrameSkia::create(
448 const SkBitmap& bitmap) 453 const SkBitmap& bitmap)
449 { 454 {
450 RefPtr<BitmapImageSingleFrameSkia> image(new BitmapImageSingleFrameSkia()); 455 RefPtr<BitmapImageSingleFrameSkia> image(new BitmapImageSingleFrameSkia());
451 if (!bitmap.copyTo(&image->m_nativeImage, bitmap.config())) 456 if (!bitmap.copyTo(&image->m_nativeImage, bitmap.config()))
452 return 0; 457 return 0;
453 return image.release(); 458 return image.release();
454 } 459 }
455 460
456 } // namespace WebCore 461 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698