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

Side by Side Diff: Source/WebKit/chromium/tests/GraphicsContextTest.cpp

Issue 14160005: Track the region where text is painted. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: fixed build on win and mac Created 7 years, 7 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) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 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 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 EXPECT_EQ_RECT(IntRect(40, 30, 60, 70), context.opaqueRegion().asRect()); 698 EXPECT_EQ_RECT(IntRect(40, 30, 60, 70), context.opaqueRegion().asRect());
699 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 699 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
700 700
701 context.fillRoundedRect(IntRect(30, 0, 70, 50), radii, radii, radii, radii, opaque, ColorSpaceDeviceRGB); 701 context.fillRoundedRect(IntRect(30, 0, 70, 50), radii, radii, radii, radii, opaque, ColorSpaceDeviceRGB);
702 EXPECT_EQ_RECT(IntRect(40, 30, 60, 70), context.opaqueRegion().asRect()); 702 EXPECT_EQ_RECT(IntRect(40, 30, 60, 70), context.opaqueRegion().asRect());
703 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 703 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
704 } 704 }
705 705
706 TEST(PlatformContextSkiaTest, trackOpaqueTextTest) 706 TEST(PlatformContextSkiaTest, trackOpaqueTextTest)
707 { 707 {
708 int width = 200, height = 200;
708 SkBitmap bitmap; 709 SkBitmap bitmap;
709 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 710 bitmap.setConfig(SkBitmap::kARGB_8888_Config, width, height);
710 bitmap.allocPixels(); 711 bitmap.allocPixels();
711 bitmap.eraseColor(0); 712 bitmap.eraseColor(0);
712 SkCanvas canvas(bitmap); 713 SkCanvas canvas(bitmap);
714 SkRect textRect = SkRect::MakeWH(width, height);
713 715
714 GraphicsContext context(&canvas); 716 GraphicsContext context(&canvas);
715 context.setTrackOpaqueRegion(true); 717 context.setTrackOpaqueRegion(true);
716 718
717 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 719 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
718 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 720 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
719 721
720 SkPaint opaquePaint; 722 SkPaint opaquePaint;
721 opaquePaint.setColor(opaque.rgb()); 723 opaquePaint.setColor(opaque.rgb());
722 opaquePaint.setXfermodeMode(SkXfermode::kSrc_Mode); 724 opaquePaint.setXfermodeMode(SkXfermode::kSrc_Mode);
723 SkPaint alphaPaint; 725 SkPaint alphaPaint;
724 alphaPaint.setColor(alpha.rgb()); 726 alphaPaint.setColor(alpha.rgb());
725 alphaPaint.setXfermodeMode(SkXfermode::kSrc_Mode); 727 alphaPaint.setXfermodeMode(SkXfermode::kSrc_Mode);
726 728
727 SkPoint point = SkPoint::Make(0, 0); 729 SkPoint point = SkPoint::Make(0, 0);
728 SkScalar pointX = 0; 730 SkScalar pointX = 0;
729 SkPath path; 731 SkPath path;
730 path.moveTo(SkPoint::Make(0, 0)); 732 path.moveTo(SkPoint::Make(0, 0));
731 path.lineTo(SkPoint::Make(100, 0)); 733 path.lineTo(SkPoint::Make(100, 0));
732 734
733 context.fillRect(FloatRect(50, 50, 50, 50), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 735 context.fillRect(FloatRect(50, 50, 50, 50), opaque, ColorSpaceDeviceRGB, Com positeSourceOver);
734 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); 736 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
735 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 737 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
736 738
737 context.drawPosText("A", 1, &point, opaquePaint); 739 context.drawPosText("A", 1, &point, textRect, opaquePaint);
738 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); 740 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
739 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 741 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
740 742
741 context.drawPosText("A", 1, &point, alphaPaint); 743 context.drawPosText("A", 1, &point, textRect, alphaPaint);
742 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect()); 744 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
743 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 745 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
744 746
745 context.fillRect(FloatRect(50, 50, 50, 50), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 747 context.fillRect(FloatRect(50, 50, 50, 50), opaque, ColorSpaceDeviceRGB, Com positeSourceOver);
746 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); 748 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
747 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 749 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
748 750
749 context.drawPosTextH("A", 1, &pointX, 0, opaquePaint); 751 context.drawPosTextH("A", 1, &pointX, 0, textRect, opaquePaint);
750 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); 752 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
751 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 753 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
752 754
753 context.drawPosTextH("A", 1, &pointX, 0, alphaPaint); 755 context.drawPosTextH("A", 1, &pointX, 0, textRect, alphaPaint);
754 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect()); 756 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
755 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 757 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
756 758
757 context.fillRect(FloatRect(50, 50, 50, 50), opaque, ColorSpaceDeviceRGB, Com positeSourceOver); 759 context.fillRect(FloatRect(50, 50, 50, 50), opaque, ColorSpaceDeviceRGB, Com positeSourceOver);
758 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); 760 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
759 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 761 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
760 762
761 context.drawTextOnPath("A", 1, path, 0, opaquePaint); 763 context.drawTextOnPath("A", 1, path, textRect, 0, opaquePaint);
762 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); 764 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
763 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 765 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
764 766
765 context.drawTextOnPath("A", 1, path, 0, alphaPaint); 767 context.drawTextOnPath("A", 1, path, textRect, 0, alphaPaint);
766 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect()); 768 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
767 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 769 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
768 } 770 }
769 771
770 TEST(PlatformContextSkiaTest, trackOpaqueWritePixelsTest) 772 TEST(PlatformContextSkiaTest, trackOpaqueWritePixelsTest)
771 { 773 {
772 SkBitmap bitmap; 774 SkBitmap bitmap;
773 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 775 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200);
774 bitmap.allocPixels(); 776 bitmap.allocPixels();
775 bitmap.eraseColor(0); 777 bitmap.eraseColor(0);
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 path.moveTo(FloatPoint(10, 10)); 1092 path.moveTo(FloatPoint(10, 10));
1091 path.addLineTo(FloatPoint(40, 40)); 1093 path.addLineTo(FloatPoint(40, 40));
1092 context.strokePath(path); 1094 context.strokePath(path);
1093 1095
1094 context.endTransparencyLayer(); 1096 context.endTransparencyLayer();
1095 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 1097 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
1096 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect()); 1098 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect());
1097 } 1099 }
1098 1100
1099 } // namespace 1101 } // namespace
OLDNEW
« no previous file with comments | « Source/WebKit/chromium/src/WebFontImpl.cpp ('k') | Source/core/html/canvas/CanvasRenderingContext2D.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698