Title: [94900] trunk/Source/WebCore
Revision
94900
Author
bda...@apple.com
Date
2011-09-09 23:28:00 -0700 (Fri, 09 Sep 2011)

Log Message

Fix for https://bugs.webkit.org/show_bug.cgi?id=67819
Use high resolution platform images when the deviceScaleFactor > 1
-and corresponding-
<rdar://problem/10003098>

Reviewed by Darin Adler.

Add all of the new high resolution images. I also removed some tiffs from the 
project and replaced them with png equivalents (that are already checked into 
WebCore anyway). Since the high resolution images are pngs, it makes sense to use 
pngs for all of the images that load through Image::loadPlatformResource()
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/mac/ImageMac.mm:
(WebCore::Image::loadPlatformResource):

Load the @2x resource for deviceScaleFactors >= 2.
* editing/DeleteButtonController.cpp:
(WebCore::DeleteButtonController::createDeletionUI):

CachedImage::brokenImage() is no longer a static helper function, but a real 
member function. It also now loads the @2x resource for deviceScaleFactors >= 2 
and takes a parameter for the deviceScaleFactor. When CachedImage::image() returns 
the brokenImage(), it just returns the 1x version. brokenImage() has to be called 
directly to reliably return the deviceScaleFactor-appropriate resource.
* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::brokenImage):
(WebCore::CachedImage::image):
* loader/cache/CachedImage.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::drawPlatformResizerImage):
(WebCore::RenderLayer::paintResizer):
* rendering/RenderLayer.h:

New static function to retrieve the deviceScaleFactor for callers that do not have 
direct access to a Page.
* page/Page.cpp:
(WebCore::Page::deviceScaleFactor):
* page/Page.h:

Call CachedImage::brokenImage() for the broken-image image at an accurate 
resolution.
* rendering/RenderImage.cpp:
(WebCore::RenderImage::imageSizeForError):
(WebCore::RenderImage::paintReplaced):

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (94899 => 94900)


--- trunk/Source/WebCore/ChangeLog	2011-09-10 04:00:45 UTC (rev 94899)
+++ trunk/Source/WebCore/ChangeLog	2011-09-10 06:28:00 UTC (rev 94900)
@@ -1,3 +1,50 @@
+2011-09-09  Beth Dakin  <bda...@apple.com>
+
+        Fix for https://bugs.webkit.org/show_bug.cgi?id=67819
+        Use high resolution platform images when the deviceScaleFactor > 1
+        -and corresponding-
+        <rdar://problem/10003098>
+
+        Reviewed by Darin Adler.
+
+        Add all of the new high resolution images. I also removed some tiffs from the 
+        project and replaced them with png equivalents (that are already checked into 
+        WebCore anyway). Since the high resolution images are pngs, it makes sense to use 
+        pngs for all of the images that load through Image::loadPlatformResource()
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/graphics/mac/ImageMac.mm:
+        (WebCore::Image::loadPlatformResource):
+
+        Load the @2x resource for deviceScaleFactors >= 2.
+        * editing/DeleteButtonController.cpp:
+        (WebCore::DeleteButtonController::createDeletionUI):
+
+        CachedImage::brokenImage() is no longer a static helper function, but a real 
+        member function. It also now loads the @2x resource for deviceScaleFactors >= 2 
+        and takes a parameter for the deviceScaleFactor. When CachedImage::image() returns 
+        the brokenImage(), it just returns the 1x version. brokenImage() has to be called 
+        directly to reliably return the deviceScaleFactor-appropriate resource.
+        * loader/cache/CachedImage.cpp:
+        (WebCore::CachedImage::brokenImage):
+        (WebCore::CachedImage::image):
+        * loader/cache/CachedImage.h:
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::drawPlatformResizerImage):
+        (WebCore::RenderLayer::paintResizer):
+        * rendering/RenderLayer.h:
+
+        New static function to retrieve the deviceScaleFactor for callers that do not have 
+        direct access to a Page.
+        * page/Page.cpp:
+        (WebCore::Page::deviceScaleFactor):
+        * page/Page.h:
+
+        Call CachedImage::brokenImage() for the broken-image image at an accurate 
+        resolution.
+        * rendering/RenderImage.cpp:
+        (WebCore::RenderImage::imageSizeForError):
+        (WebCore::RenderImage::paintReplaced):
+
 2011-09-09  Erik Arvidsson  <a...@chromium.org>
 
         Move Element.contains to Node

Added: trunk/Source/WebCore/Resources/deletebut...@2x.png


(Binary files differ)
Property changes on: trunk/Source/WebCore/Resources/deletebut...@2x.png ___________________________________________________________________

Added: svn:mime-type

Added: trunk/Source/WebCore/Resources/deletebuttonpres...@2x.png


(Binary files differ)
Property changes on: trunk/Source/WebCore/Resources/deletebuttonpres...@2x.png ___________________________________________________________________

Added: svn:mime-type

Added: trunk/Source/WebCore/Resources/missingim...@2x.png


(Binary files differ)
Property changes on: trunk/Source/WebCore/Resources/missingim...@2x.png ___________________________________________________________________

Added: svn:mime-type

Added: trunk/Source/WebCore/Resources/nullplu...@2x.png


(Binary files differ)
Property changes on: trunk/Source/WebCore/Resources/nullplu...@2x.png ___________________________________________________________________

Added: svn:mime-type

Added: trunk/Source/WebCore/Resources/textarearesizecor...@2x.png


(Binary files differ)
Property changes on: trunk/Source/WebCore/Resources/textarearesizecor...@2x.png ___________________________________________________________________

Added: svn:mime-type

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (94899 => 94900)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2011-09-10 04:00:45 UTC (rev 94899)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2011-09-10 06:28:00 UTC (rev 94900)
@@ -569,8 +569,6 @@
 		1C11CCC60AA6093700DADB20 /* DOMDocumentFragment.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85089CD30A98C42800A275AA /* DOMDocumentFragment.h */; };
 		1C11CCC70AA6093700DADB20 /* DOMCDATASection.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85089CCF0A98C42700A275AA /* DOMCDATASection.h */; };
 		1C11CCC80AA6093700DADB20 /* DOMHTMLElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF2EEB0AA387CB00AD64C5 /* DOMHTMLElement.h */; };
-		1C14E76B0AD8C81C00B6158B /* deleteButtonPressed.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1C14E7690AD8C81C00B6158B /* deleteButtonPressed.tiff */; };
-		1C14E76C0AD8C81C00B6158B /* deleteButton.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1C14E76A0AD8C81C00B6158B /* deleteButton.tiff */; };
 		1C26497A0D7E248A00BD10F2 /* DocumentLoaderMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C2649790D7E248A00BD10F2 /* DocumentLoaderMac.cpp */; };
 		1C26497C0D7E24EC00BD10F2 /* PageMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C26497B0D7E24EC00BD10F2 /* PageMac.cpp */; };
 		1C4C8F020AD85D87009475CE /* DeleteButtonController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C4C8F000AD85D87009475CE /* DeleteButtonController.h */; };
@@ -1699,7 +1697,6 @@
 		72626E020EF022FE00A07E20 /* FontFastPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 72626E010EF022FE00A07E20 /* FontFastPath.cpp */; };
 		750D029311D0E7F300BD1B27 /* RenderInputSpeech.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 750D029111D0E7F300BD1B27 /* RenderInputSpeech.cpp */; };
 		750D029411D0E7F300BD1B27 /* RenderInputSpeech.h in Headers */ = {isa = PBXBuildFile; fileRef = 750D029211D0E7F300BD1B27 /* RenderInputSpeech.h */; };
-		750D02C111D0EE7D00BD1B27 /* inputSpeech.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 750D02C011D0EE7D00BD1B27 /* inputSpeech.tiff */; };
 		7535BC9412020CFF0037EC45 /* SpeechInputClientMock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7535BC9212020CFF0037EC45 /* SpeechInputClientMock.cpp */; };
 		7535BC9512020CFF0037EC45 /* SpeechInputClientMock.h in Headers */ = {isa = PBXBuildFile; fileRef = 7535BC9312020CFF0037EC45 /* SpeechInputClientMock.h */; };
 		754133A8102E00E800075D00 /* InspectorTimelineAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 754133A7102E00E800075D00 /* InspectorTimelineAgent.h */; };
@@ -2922,6 +2919,14 @@
 		9307F1D80AF2D59000DBA31A /* HitTestResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9307F1D60AF2D59000DBA31A /* HitTestResult.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		930908910AF7EDE40081DF01 /* HitTestRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 930908900AF7EDE40081DF01 /* HitTestRequest.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		930FC68A1072B9280045293E /* TextRenderingMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 930FC6891072B9280045293E /* TextRenderingMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		93153BCD1417FBBF00FCF5BE /* deletebut...@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BCC1417FBBF00FCF5BE /* deletebut...@2x.png */; };
+		93153BCF1417FBDB00FCF5BE /* deletebuttonpres...@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BCE1417FBDB00FCF5BE /* deletebuttonpres...@2x.png */; };
+		93153BDA14181F7A00FCF5BE /* missingim...@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BD914181F7A00FCF5BE /* missingim...@2x.png */; };
+		93153BDC141959BC00FCF5BE /* textAreaResizeCorner.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BDB141959BB00FCF5BE /* textAreaResizeCorner.png */; };
+		93153BDE141959F400FCF5BE /* deleteButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BDD141959F400FCF5BE /* deleteButton.png */; };
+		93153BE014195A2800FCF5BE /* deleteButtonPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BDF14195A2800FCF5BE /* deleteButtonPressed.png */; };
+		93153BE214195A5700FCF5BE /* missingImage.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BE114195A5700FCF5BE /* missingImage.png */; };
+		93153BE414195B2A00FCF5BE /* inputSpeech.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BE314195B2900FCF5BE /* inputSpeech.png */; };
 		931BCC611124DFCB00BE70DD /* MediaCanStartListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 931BCC601124DFCB00BE70DD /* MediaCanStartListener.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		9326DC0C09DAD5D600AFC847 /* CharsetData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 656581AC09D14EE6000E61D7 /* CharsetData.cpp */; };
 		9327A94209968D1A0068A546 /* HTMLOptionsCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9327A94109968D1A0068A546 /* HTMLOptionsCollection.cpp */; };
@@ -3040,6 +3045,7 @@
 		9362640B0DE1137D009D5A00 /* CSSReflectionDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9362640A0DE1137D009D5A00 /* CSSReflectionDirection.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		9363B62C0F8E8FE000803810 /* HistoryPropertyList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9363B62A0F8E8FE000803810 /* HistoryPropertyList.cpp */; };
 		9363B62D0F8E8FE000803810 /* HistoryPropertyList.h in Headers */ = {isa = PBXBuildFile; fileRef = 9363B62B0F8E8FE000803810 /* HistoryPropertyList.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		9370918D1416D86B00477333 /* textarearesizecor...@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9370918C1416D86B00477333 /* textarearesizecor...@2x.png */; };
 		93799EF80BF2743600D0F230 /* RenderWordBreak.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93799EF60BF2743600D0F230 /* RenderWordBreak.cpp */; };
 		93799EF90BF2743600D0F230 /* RenderWordBreak.h in Headers */ = {isa = PBXBuildFile; fileRef = 93799EF70BF2743600D0F230 /* RenderWordBreak.h */; };
 		9380F47309A11AB4001FDB34 /* Widget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9380F47109A11AB4001FDB34 /* Widget.cpp */; };
@@ -4077,7 +4083,6 @@
 		AB247A6C0AFD6383003FA5FD /* RenderSlider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB247A6A0AFD6383003FA5FD /* RenderSlider.cpp */; };
 		AB247A6D0AFD6383003FA5FD /* RenderSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = AB247A6B0AFD6383003FA5FD /* RenderSlider.h */; };
 		AB31C91E10AE1B8E000C7B92 /* LineClampValue.h in Headers */ = {isa = PBXBuildFile; fileRef = AB31C91D10AE1B8E000C7B92 /* LineClampValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
-		AB4261D80A2F6C9700BDD17D /* missingImage.tiff in Resources */ = {isa = PBXBuildFile; fileRef = AB4261D70A2F6C9700BDD17D /* missingImage.tiff */; };
 		AB4CB4EB0B8BDA3D009F40B0 /* JSHTMLSelectElementCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = AB4CB4EA0B8BDA3D009F40B0 /* JSHTMLSelectElementCustom.h */; };
 		AB67D1A8097F3AE300F9392E /* RenderTextControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB67D1A6097F3AE300F9392E /* RenderTextControl.cpp */; };
 		AB67D1A9097F3AE300F9392E /* RenderTextControl.h in Headers */ = {isa = PBXBuildFile; fileRef = AB67D1A7097F3AE300F9392E /* RenderTextControl.h */; };
@@ -5683,7 +5688,6 @@
 		E4D687790ED7AE4F006EA978 /* PurgeableBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D687780ED7AE4F006EA978 /* PurgeableBuffer.h */; };
 		E4EEFFC80D34550C00469A58 /* JSAudioConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4EEFFC60D34550C00469A58 /* JSAudioConstructor.cpp */; };
 		E4EEFFC90D34550C00469A58 /* JSAudioConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = E4EEFFC70D34550C00469A58 /* JSAudioConstructor.h */; };
-		ED048ABC0833F132006E1E67 /* textAreaResizeCorner.tiff in Resources */ = {isa = PBXBuildFile; fileRef = ED048ABB0833F132006E1E67 /* textAreaResizeCorner.tiff */; };
 		ED2BA83C09A24B91006C0AC4 /* DocumentMarker.h in Headers */ = {isa = PBXBuildFile; fileRef = ED2BA83B09A24B91006C0AC4 /* DocumentMarker.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		ED501DC60B249F2900AE18D9 /* EditorMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED501DC50B249F2900AE18D9 /* EditorMac.mm */; };
 		EDE3A5000C7A430600956A37 /* ColorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = EDE3A4FF0C7A430600956A37 /* ColorMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -7096,8 +7100,6 @@
 		1AFE118C0CBFFC4E003017FA /* SQLResultSetRowList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SQLResultSetRowList.idl; sourceTree = "<group>"; };
 		1AFE11970CBFFCC4003017FA /* JSSQLResultSetRowList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLResultSetRowList.cpp; sourceTree = "<group>"; };
 		1AFE11980CBFFCC4003017FA /* JSSQLResultSetRowList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLResultSetRowList.h; sourceTree = "<group>"; };
-		1C14E7690AD8C81C00B6158B /* deleteButtonPressed.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = deleteButtonPressed.tiff; sourceTree = "<group>"; };
-		1C14E76A0AD8C81C00B6158B /* deleteButton.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = deleteButton.tiff; sourceTree = "<group>"; };
 		1C2649790D7E248A00BD10F2 /* DocumentLoaderMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentLoaderMac.cpp; sourceTree = "<group>"; };
 		1C26497B0D7E24EC00BD10F2 /* PageMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageMac.cpp; sourceTree = "<group>"; };
 		1C4C8EFF0AD85D87009475CE /* DeleteButtonController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeleteButtonController.cpp; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
@@ -8363,7 +8365,6 @@
 		72626E010EF022FE00A07E20 /* FontFastPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontFastPath.cpp; sourceTree = "<group>"; };
 		750D029111D0E7F300BD1B27 /* RenderInputSpeech.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderInputSpeech.cpp; sourceTree = "<group>"; };
 		750D029211D0E7F300BD1B27 /* RenderInputSpeech.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderInputSpeech.h; sourceTree = "<group>"; };
-		750D02C011D0EE7D00BD1B27 /* inputSpeech.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = inputSpeech.tiff; sourceTree = "<group>"; };
 		7535BC9212020CFF0037EC45 /* SpeechInputClientMock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SpeechInputClientMock.cpp; path = mock/SpeechInputClientMock.cpp; sourceTree = "<group>"; };
 		7535BC9312020CFF0037EC45 /* SpeechInputClientMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SpeechInputClientMock.h; path = mock/SpeechInputClientMock.h; sourceTree = "<group>"; };
 		754133A7102E00E800075D00 /* InspectorTimelineAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorTimelineAgent.h; sourceTree = "<group>"; };
@@ -9558,6 +9559,14 @@
 		9307F1D60AF2D59000DBA31A /* HitTestResult.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HitTestResult.h; sourceTree = "<group>"; };
 		930908900AF7EDE40081DF01 /* HitTestRequest.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HitTestRequest.h; sourceTree = "<group>"; };
 		930FC6891072B9280045293E /* TextRenderingMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextRenderingMode.h; sourceTree = "<group>"; };
+		93153BCC1417FBBF00FCF5BE /* deletebut...@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "deletebut...@2x.png"; sourceTree = "<group>"; };
+		93153BCE1417FBDB00FCF5BE /* deletebuttonpres...@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "deletebuttonpres...@2x.png"; sourceTree = "<group>"; };
+		93153BD914181F7A00FCF5BE /* missingim...@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "missingim...@2x.png"; sourceTree = "<group>"; };
+		93153BDB141959BB00FCF5BE /* textAreaResizeCorner.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = textAreaResizeCorner.png; sourceTree = "<group>"; };
+		93153BDD141959F400FCF5BE /* deleteButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = deleteButton.png; sourceTree = "<group>"; };
+		93153BDF14195A2800FCF5BE /* deleteButtonPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = deleteButtonPressed.png; sourceTree = "<group>"; };
+		93153BE114195A5700FCF5BE /* missingImage.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = missingImage.png; sourceTree = "<group>"; };
+		93153BE314195B2900FCF5BE /* inputSpeech.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = inputSpeech.png; sourceTree = "<group>"; };
 		931BCC601124DFCB00BE70DD /* MediaCanStartListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaCanStartListener.h; sourceTree = "<group>"; };
 		9327A94109968D1A0068A546 /* HTMLOptionsCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLOptionsCollection.cpp; sourceTree = "<group>"; };
 		932871BF0B20DEB70049035A /* PlatformMenuDescription.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PlatformMenuDescription.h; sourceTree = "<group>"; };
@@ -9677,6 +9686,7 @@
 		9363B62A0F8E8FE000803810 /* HistoryPropertyList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HistoryPropertyList.cpp; sourceTree = "<group>"; };
 		9363B62B0F8E8FE000803810 /* HistoryPropertyList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryPropertyList.h; sourceTree = "<group>"; };
 		936DD03A09CEAC270056AE8C /* Range.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Range.idl; sourceTree = "<group>"; };
+		9370918C1416D86B00477333 /* textarearesizecor...@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "textarearesizecor...@2x.png"; sourceTree = "<group>"; };
 		93799EF60BF2743600D0F230 /* RenderWordBreak.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderWordBreak.cpp; sourceTree = "<group>"; };
 		93799EF70BF2743600D0F230 /* RenderWordBreak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderWordBreak.h; sourceTree = "<group>"; };
 		9380F47109A11AB4001FDB34 /* Widget.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Widget.cpp; sourceTree = "<group>"; };
@@ -10629,7 +10639,6 @@
 		AB247A6A0AFD6383003FA5FD /* RenderSlider.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSlider.cpp; sourceTree = "<group>"; };
 		AB247A6B0AFD6383003FA5FD /* RenderSlider.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderSlider.h; sourceTree = "<group>"; };
 		AB31C91D10AE1B8E000C7B92 /* LineClampValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LineClampValue.h; path = style/LineClampValue.h; sourceTree = "<group>"; };
-		AB4261D70A2F6C9700BDD17D /* missingImage.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = missingImage.tiff; sourceTree = "<group>"; };
 		AB4CB4EA0B8BDA3D009F40B0 /* JSHTMLSelectElementCustom.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLSelectElementCustom.h; sourceTree = "<group>"; };
 		AB67D1A6097F3AE300F9392E /* RenderTextControl.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTextControl.cpp; sourceTree = "<group>"; };
 		AB67D1A7097F3AE300F9392E /* RenderTextControl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderTextControl.h; sourceTree = "<group>"; };
@@ -12461,7 +12470,6 @@
 		E4D687780ED7AE4F006EA978 /* PurgeableBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PurgeableBuffer.h; sourceTree = "<group>"; };
 		E4EEFFC60D34550C00469A58 /* JSAudioConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioConstructor.cpp; sourceTree = "<group>"; };
 		E4EEFFC70D34550C00469A58 /* JSAudioConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioConstructor.h; sourceTree = "<group>"; };
-		ED048ABB0833F132006E1E67 /* textAreaResizeCorner.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = textAreaResizeCorner.tiff; sourceTree = "<group>"; };
 		ED2BA83B09A24B91006C0AC4 /* DocumentMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentMarker.h; sourceTree = "<group>"; };
 		ED501DC50B249F2900AE18D9 /* EditorMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = EditorMac.mm; path = mac/EditorMac.mm; sourceTree = "<group>"; };
 		EDE3A4FF0C7A430600956A37 /* ColorMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColorMac.h; sourceTree = "<group>"; };
@@ -13177,15 +13185,18 @@
 				46D4F2460AF97E810035385A /* cellCursor.png */,
 				46D4F2470AF97E810035385A /* contextMenuCursor.png */,
 				4614A1FD0B23A8D600446E1C /* copyCursor.png */,
-				1C14E76A0AD8C81C00B6158B /* deleteButton.tiff */,
-				1C14E7690AD8C81C00B6158B /* deleteButtonPressed.tiff */,
+				93153BDD141959F400FCF5BE /* deleteButton.png */,
+				93153BCC1417FBBF00FCF5BE /* deletebut...@2x.png */,
+				93153BDF14195A2800FCF5BE /* deleteButtonPressed.png */,
+				93153BCE1417FBDB00FCF5BE /* deletebuttonpres...@2x.png */,
 				85136C890AED665800F90A3D /* eastResizeCursor.png */,
 				85136C8A0AED665800F90A3D /* eastWestResizeCursor.png */,
 				85136C8B0AED665800F90A3D /* helpCursor.png */,
-				750D02C011D0EE7D00BD1B27 /* inputSpeech.tiff */,
+				93153BE314195B2900FCF5BE /* inputSpeech.png */,
 				85136C8C0AED665800F90A3D /* linkCursor.png */,
 				BCAD1808131C7A0D00990406 /* Localizable.strings */,
-				AB4261D70A2F6C9700BDD17D /* missingImage.tiff */,
+				93153BE114195A5700FCF5BE /* missingImage.png */,
+				93153BD914181F7A00FCF5BE /* missingim...@2x.png */,
 				85136C8D0AED665800F90A3D /* moveCursor.png */,
 				46F9D5DB0B0D60170028EE36 /* noDropCursor.png */,
 				46BD16E20B279473001F0839 /* noneCursor.png */,
@@ -13199,7 +13210,8 @@
 				85136C940AED665900F90A3D /* southEastResizeCursor.png */,
 				85136C950AED665900F90A3D /* southResizeCursor.png */,
 				85136C960AED665900F90A3D /* southWestResizeCursor.png */,
-				ED048ABB0833F132006E1E67 /* textAreaResizeCorner.tiff */,
+				93153BDB141959BB00FCF5BE /* textAreaResizeCorner.png */,
+				9370918C1416D86B00477333 /* textarearesizecor...@2x.png */,
 				46D4F2480AF97E810035385A /* verticalTextCursor.png */,
 				85136C970AED665900F90A3D /* waitCursor.png */,
 				85136C980AED665900F90A3D /* westResizeCursor.png */,
@@ -23592,16 +23604,12 @@
 				46D4F2490AF97E810035385A /* cellCursor.png in Resources */,
 				46D4F24A0AF97E810035385A /* contextMenuCursor.png in Resources */,
 				4614A1FE0B23A8D600446E1C /* copyCursor.png in Resources */,
-				1C14E76C0AD8C81C00B6158B /* deleteButton.tiff in Resources */,
-				1C14E76B0AD8C81C00B6158B /* deleteButtonPressed.tiff in Resources */,
 				85136C990AED665900F90A3D /* eastResizeCursor.png in Resources */,
 				85136C9A0AED665900F90A3D /* eastWestResizeCursor.png in Resources */,
 				85136C9B0AED665900F90A3D /* helpCursor.png in Resources */,
-				750D02C111D0EE7D00BD1B27 /* inputSpeech.tiff in Resources */,
 				85136C9C0AED665900F90A3D /* linkCursor.png in Resources */,
 				BCAD180A131C7A0D00990406 /* Localizable.strings in Resources */,
 				1CDC14050DD3934C006EACD3 /* localizedStrings.js in Resources */,
-				AB4261D80A2F6C9700BDD17D /* missingImage.tiff in Resources */,
 				85136C9D0AED665900F90A3D /* moveCursor.png in Resources */,
 				46F9D5DE0B0D60170028EE36 /* noDropCursor.png in Resources */,
 				46BD16E30B279473001F0839 /* noneCursor.png in Resources */,
@@ -23615,12 +23623,20 @@
 				85136CA40AED665900F90A3D /* southEastResizeCursor.png in Resources */,
 				85136CA50AED665900F90A3D /* southResizeCursor.png in Resources */,
 				85136CA60AED665900F90A3D /* southWestResizeCursor.png in Resources */,
-				ED048ABC0833F132006E1E67 /* textAreaResizeCorner.tiff in Resources */,
 				46D4F24B0AF97E810035385A /* verticalTextCursor.png in Resources */,
 				85136CA70AED665900F90A3D /* waitCursor.png in Resources */,
 				85136CA80AED665900F90A3D /* westResizeCursor.png in Resources */,
 				1AB1AE7A0C051FDE00139F4F /* zoomInCursor.png in Resources */,
 				1AB1AE7B0C051FDE00139F4F /* zoomOutCursor.png in Resources */,
+				9370918D1416D86B00477333 /* textarearesizecor...@2x.png in Resources */,
+				93153BCD1417FBBF00FCF5BE /* deletebut...@2x.png in Resources */,
+				93153BCF1417FBDB00FCF5BE /* deletebuttonpres...@2x.png in Resources */,
+				93153BDA14181F7A00FCF5BE /* missingim...@2x.png in Resources */,
+				93153BDC141959BC00FCF5BE /* textAreaResizeCorner.png in Resources */,
+				93153BDE141959F400FCF5BE /* deleteButton.png in Resources */,
+				93153BE014195A2800FCF5BE /* deleteButtonPressed.png in Resources */,
+				93153BE214195A5700FCF5BE /* missingImage.png in Resources */,
+				93153BE414195B2A00FCF5BE /* inputSpeech.png in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

Modified: trunk/Source/WebCore/editing/DeleteButtonController.cpp (94899 => 94900)


--- trunk/Source/WebCore/editing/DeleteButtonController.cpp	2011-09-10 04:00:45 UTC (rev 94899)
+++ trunk/Source/WebCore/editing/DeleteButtonController.cpp	2011-09-10 06:28:00 UTC (rev 94900)
@@ -41,6 +41,7 @@
 #include "HTMLNames.h"
 #include "Image.h"
 #include "Node.h"
+#include "Page.h"
 #include "Range.h"
 #include "RemoveNodeCommand.h"
 #include "RenderBox.h"
@@ -240,7 +241,13 @@
     style->setProperty(CSSPropertyHeight, String::number(buttonHeight) + "px");
     style->setProperty(CSSPropertyVisibility, CSSValueVisible);
 
-    RefPtr<Image> buttonImage = Image::loadPlatformResource("deleteButton");
+    float deviceScaleFactor = Page::deviceScaleFactor(m_frame);
+    RefPtr<Image> buttonImage;
+    if (deviceScaleFactor >= 2)
+        buttonImage = Image::loadPlatformResource("deleteButton@2x");
+    else
+        buttonImage = Image::loadPlatformResource("deleteButton");
+
     if (buttonImage->isNull())
         return;
 

Modified: trunk/Source/WebCore/loader/cache/CachedImage.cpp (94899 => 94900)


--- trunk/Source/WebCore/loader/cache/CachedImage.cpp	2011-09-10 04:00:45 UTC (rev 94899)
+++ trunk/Source/WebCore/loader/cache/CachedImage.cpp	2011-09-10 06:28:00 UTC (rev 94900)
@@ -113,18 +113,27 @@
         m_decodedDataDeletionTimer.startOneShot(interval);
 }
 
-static Image* brokenImage()
+Image* CachedImage::brokenImage(float deviceScaleFactor) const
 {
-    DEFINE_STATIC_LOCAL(RefPtr<Image>, brokenImage, (Image::loadPlatformResource("missingImage")));
-    return brokenImage.get();
+    if (deviceScaleFactor >= 2) {
+        DEFINE_STATIC_LOCAL(Image*, brokenImageHiRes, (Image::loadPlatformResource("missingImage@2x").leakRef()));
+        return brokenImageHiRes;
+    }
+
+    DEFINE_STATIC_LOCAL(Image*, brokenImageLoRes, (Image::loadPlatformResource("missingImage").leakRef()));
+    return brokenImageLoRes;
 }
 
 Image* CachedImage::image() const
 {
     ASSERT(!isPurgeable());
 
-    if (errorOccurred() && m_shouldPaintBrokenImage)
-        return brokenImage();
+    if (errorOccurred() && m_shouldPaintBrokenImage) {
+        // Returning the 1x broken image is non-ideal, but we cannot reliably access the appropriate
+        // deviceScaleFactor from here. It is critical that callers use CachedImage::brokenImage() 
+        // when they need the real, deviceScaleFactor-appropriate broken image icon. 
+        return brokenImage(1);
+    }
 
     if (m_image)
         return m_image.get();

Modified: trunk/Source/WebCore/loader/cache/CachedImage.h (94899 => 94900)


--- trunk/Source/WebCore/loader/cache/CachedImage.h	2011-09-10 04:00:45 UTC (rev 94899)
+++ trunk/Source/WebCore/loader/cache/CachedImage.h	2011-09-10 06:28:00 UTC (rev 94900)
@@ -47,6 +47,8 @@
     Image* image() const; // Returns the nullImage() if the image is not available yet.
     bool hasImage() const { return m_image.get(); }
 
+    Image* brokenImage(float deviceScaleFactor) const;
+
     bool canRender(float multiplier) const { return !errorOccurred() && !imageSize(multiplier).isEmpty(); }
 
     // These are only used for SVGImage right now

Modified: trunk/Source/WebCore/page/Page.cpp (94899 => 94900)


--- trunk/Source/WebCore/page/Page.cpp	2011-09-10 04:00:45 UTC (rev 94899)
+++ trunk/Source/WebCore/page/Page.cpp	2011-09-10 06:28:00 UTC (rev 94900)
@@ -652,6 +652,16 @@
     backForward()->markPagesForFullStyleRecalc();
 }
 
+float Page::deviceScaleFactor(Frame* frame)
+{
+    if (!frame)
+        return 1;
+    Page* page = frame->page();
+    if (!page)
+        return 1;
+    return page->deviceScaleFactor();
+}
+
 void Page::didMoveOnscreen()
 {
     for (Frame* frame = mainFrame(); frame; frame = frame->tree()->traverseNext()) {

Modified: trunk/Source/WebCore/page/Page.h (94899 => 94900)


--- trunk/Source/WebCore/page/Page.h	2011-09-10 04:00:45 UTC (rev 94899)
+++ trunk/Source/WebCore/page/Page.h	2011-09-10 06:28:00 UTC (rev 94900)
@@ -249,6 +249,7 @@
 
         float deviceScaleFactor() const { return m_deviceScaleFactor; }
         void setDeviceScaleFactor(float);
+        static float deviceScaleFactor(Frame*);
 
         // Notifications when the Page starts and stops being presented via a native window.
         void didMoveOnscreen();

Modified: trunk/Source/WebCore/platform/graphics/mac/ImageMac.mm (94899 => 94900)


--- trunk/Source/WebCore/platform/graphics/mac/ImageMac.mm	2011-09-10 04:00:45 UTC (rev 94899)
+++ trunk/Source/WebCore/platform/graphics/mac/ImageMac.mm	2011-09-10 06:28:00 UTC (rev 94900)
@@ -55,7 +55,7 @@
 PassRefPtr<Image> Image::loadPlatformResource(const char *name)
 {
     NSBundle *bundle = [NSBundle bundleForClass:[WebCoreBundleFinder class]];
-    NSString *imagePath = [bundle pathForResource:[NSString stringWithUTF8String:name] ofType:@"tiff"];
+    NSString *imagePath = [bundle pathForResource:[NSString stringWithUTF8String:name] ofType:@"png"];
     NSData *namedImageData = [NSData dataWithContentsOfFile:imagePath];
     if (namedImageData) {
         RefPtr<Image> image = BitmapImage::create();

Modified: trunk/Source/WebCore/rendering/RenderImage.cpp (94899 => 94900)


--- trunk/Source/WebCore/rendering/RenderImage.cpp	2011-09-10 04:00:45 UTC (rev 94899)
+++ trunk/Source/WebCore/rendering/RenderImage.cpp	2011-09-10 06:28:00 UTC (rev 94900)
@@ -84,9 +84,11 @@
     ASSERT_ARG(newImage, newImage);
     ASSERT_ARG(newImage, newImage->image());
 
+    Image* brokenImage = newImage->brokenImage(Page::deviceScaleFactor(frame()));
+
     // imageSize() returns 0 for the error image. We need the true size of the
     // error image, so we have to get it by grabbing image() directly.
-    return IntSize(paddingWidth + newImage->image()->width() * style()->effectiveZoom(), paddingHeight + newImage->image()->height() * style()->effectiveZoom());
+    return IntSize(paddingWidth + brokenImage->width() * style()->effectiveZoom(), paddingHeight + brokenImage->height() * style()->effectiveZoom());
 }
 
 // Sets the image height and width to fit the alt text.  Returns true if the
@@ -268,15 +270,21 @@
             RefPtr<Image> image = m_imageResource->image();
 
             if (m_imageResource->errorOccurred() && !image->isNull() && usableWidth >= image->width() && usableHeight >= image->height()) {
+                float deviceScaleFactor = Page::deviceScaleFactor(frame());
+                // Call brokenImage() explicitly to ensure we get the broken image icon at the appropriate resolution.
+                image = m_imageResource->cachedImage()->brokenImage(deviceScaleFactor);
+                IntSize imageSize = image->size();
+                if (deviceScaleFactor >= 2)
+                    imageSize.scale(0.5);
                 // Center the error image, accounting for border and padding.
-                LayoutUnit centerX = (usableWidth - image->width()) / 2;
+                LayoutUnit centerX = (usableWidth - imageSize.width()) / 2;
                 if (centerX < 0)
                     centerX = 0;
-                LayoutUnit centerY = (usableHeight - image->height()) / 2;
+                LayoutUnit centerY = (usableHeight - imageSize.height()) / 2;
                 if (centerY < 0)
                     centerY = 0;
                 imageOffset = LayoutSize(leftBorder + leftPad + centerX + 1, topBorder + topPad + centerY + 1);
-                context->drawImage(image.get(), style()->colorSpace(), paintOffset + imageOffset);
+                context->drawImage(image.get(), style()->colorSpace(), IntRect(paintOffset + imageOffset, imageSize));
                 errorPictureDrawn = true;
             }
 

Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (94899 => 94900)


--- trunk/Source/WebCore/rendering/RenderLayer.cpp	2011-09-10 04:00:45 UTC (rev 94899)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp	2011-09-10 06:28:00 UTC (rev 94900)
@@ -2414,6 +2414,28 @@
         context->fillRect(absRect, Color::white, box->style()->colorSpace());
 }
 
+void RenderLayer::drawPlatformResizerImage(GraphicsContext* context, LayoutRect resizerCornerRect)
+{
+    float deviceScaleFactor = Page::deviceScaleFactor(renderer()->frame());
+    printf("RenderLayer deviceScaleFactor=%f\n", deviceScaleFactor);
+
+    RefPtr<Image> resizeCornerImage;
+    IntSize cornerResizerSize;
+    if (deviceScaleFactor >= 2) {
+        DEFINE_STATIC_LOCAL(Image*, resizeCornerImageHiRes, (Image::loadPlatformResource("textAreaResizeCorner@2x").leakRef()));
+        resizeCornerImage = resizeCornerImageHiRes;
+        cornerResizerSize = resizeCornerImage->size();
+        cornerResizerSize.scale(0.5);
+    } else {
+        DEFINE_STATIC_LOCAL(Image*, resizeCornerImageLoRes, (Image::loadPlatformResource("textAreaResizeCorner").leakRef()));
+        resizeCornerImage = resizeCornerImageLoRes;
+        cornerResizerSize = resizeCornerImage->size();
+    }
+
+    IntRect imageRect(resizerCornerRect.maxXMaxYCorner() - cornerResizerSize, cornerResizerSize);
+    context->drawImage(resizeCornerImage.get(), renderer()->style()->colorSpace(), imageRect);
+}
+
 void RenderLayer::paintResizer(GraphicsContext* context, const LayoutPoint& paintOffset, const LayoutRect& damageRect)
 {
     if (renderer()->style()->resize() == RESIZE_NONE)
@@ -2437,10 +2459,7 @@
         return;
     }
 
-    // Paint the resizer control.
-    DEFINE_STATIC_LOCAL(RefPtr<Image>, resizeCornerImage, (Image::loadPlatformResource("textAreaResizeCorner")));
-    LayoutPoint imagePoint(absRect.maxX() - resizeCornerImage->width(), absRect.maxY() - resizeCornerImage->height());
-    context->drawImage(resizeCornerImage.get(), box->style()->colorSpace(), imagePoint);
+    drawPlatformResizerImage(context, absRect);
 
     // Draw a frame around the resizer (1px grey line) if there are any scrollbars present.
     // Clipping will exclude the right and bottom edges of this frame.

Modified: trunk/Source/WebCore/rendering/RenderLayer.h (94899 => 94900)


--- trunk/Source/WebCore/rendering/RenderLayer.h	2011-09-10 04:00:45 UTC (rev 94899)
+++ trunk/Source/WebCore/rendering/RenderLayer.h	2011-09-10 06:28:00 UTC (rev 94900)
@@ -611,6 +611,8 @@
     void updateScrollCornerStyle();
     void updateResizerStyle();
 
+    void drawPlatformResizerImage(GraphicsContext*, LayoutRect resizerCornerRect);
+
     void updatePagination();
     bool isPaginated() const { return m_isPaginated; }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to