<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[191352] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/191352">191352</a></dd>
<dt>Author</dt> <dd>simon.fraser@apple.com</dd>
<dt>Date</dt> <dd>2015-10-20 13:38:03 -0700 (Tue, 20 Oct 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Add basic TextStream output for Images
https://bugs.webkit.org/show_bug.cgi?id=150350

Reviewed by Darin Adler.

Add a TextStream output operator for Image, and virtual dump() member functions
that the various image types override to dump their own data.

Add isFoo() functions for each image type (surprising that these didn't already
exist) so we can print the image type.

Make isAnimated() const, and isBitmapImage() private.

* platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::dump):
* platform/graphics/BitmapImage.h:
* platform/graphics/CrossfadeGeneratedImage.cpp:
(WebCore::CrossfadeGeneratedImage::dump):
* platform/graphics/CrossfadeGeneratedImage.h:
* platform/graphics/GeneratedImage.cpp:
* platform/graphics/GeneratedImage.h:
* platform/graphics/GradientImage.cpp:
(WebCore::GradientImage::dump):
* platform/graphics/GradientImage.h:
* platform/graphics/Image.cpp:
(WebCore::Image::dump):
(WebCore::operator&lt;&lt;):
* platform/graphics/Image.h:
(WebCore::Image::isGeneratedImage):
(WebCore::Image::isCrossfadeGeneratedImage):
(WebCore::Image::isNamedImageGeneratedImage):
(WebCore::Image::isGradientImage):
(WebCore::Image::isSVGImage):
(WebCore::Image::isAnimated):
* platform/graphics/NamedImageGeneratedImage.cpp:
(WebCore::NamedImageGeneratedImage::dump):
* platform/graphics/NamedImageGeneratedImage.h:
* platform/graphics/cg/PDFDocumentImage.cpp:
(WebCore::PDFDocumentImage::dump):
* platform/graphics/cg/PDFDocumentImage.h:
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::dump):
* svg/graphics/SVGImage.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsBitmapImagecpp">trunk/Source/WebCore/platform/graphics/BitmapImage.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsBitmapImageh">trunk/Source/WebCore/platform/graphics/BitmapImage.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsCrossfadeGeneratedImagecpp">trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsCrossfadeGeneratedImageh">trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsGeneratedImagecpp">trunk/Source/WebCore/platform/graphics/GeneratedImage.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsGeneratedImageh">trunk/Source/WebCore/platform/graphics/GeneratedImage.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsGradientImagecpp">trunk/Source/WebCore/platform/graphics/GradientImage.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsGradientImageh">trunk/Source/WebCore/platform/graphics/GradientImage.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsImagecpp">trunk/Source/WebCore/platform/graphics/Image.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsImageh">trunk/Source/WebCore/platform/graphics/Image.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsNamedImageGeneratedImagecpp">trunk/Source/WebCore/platform/graphics/NamedImageGeneratedImage.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsNamedImageGeneratedImageh">trunk/Source/WebCore/platform/graphics/NamedImageGeneratedImage.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscgPDFDocumentImagecpp">trunk/Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscgPDFDocumentImageh">trunk/Source/WebCore/platform/graphics/cg/PDFDocumentImage.h</a></li>
<li><a href="#trunkSourceWebCoresvggraphicsSVGImagecpp">trunk/Source/WebCore/svg/graphics/SVGImage.cpp</a></li>
<li><a href="#trunkSourceWebCoresvggraphicsSVGImageh">trunk/Source/WebCore/svg/graphics/SVGImage.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/ChangeLog        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -1,3 +1,49 @@
</span><ins>+2015-10-20  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+        Add basic TextStream output for Images
+        https://bugs.webkit.org/show_bug.cgi?id=150350
+
+        Reviewed by Darin Adler.
+
+        Add a TextStream output operator for Image, and virtual dump() member functions
+        that the various image types override to dump their own data.
+        
+        Add isFoo() functions for each image type (surprising that these didn't already
+        exist) so we can print the image type.
+        
+        Make isAnimated() const, and isBitmapImage() private.
+
+        * platform/graphics/BitmapImage.cpp:
+        (WebCore::BitmapImage::dump):
+        * platform/graphics/BitmapImage.h:
+        * platform/graphics/CrossfadeGeneratedImage.cpp:
+        (WebCore::CrossfadeGeneratedImage::dump):
+        * platform/graphics/CrossfadeGeneratedImage.h:
+        * platform/graphics/GeneratedImage.cpp:
+        * platform/graphics/GeneratedImage.h:
+        * platform/graphics/GradientImage.cpp:
+        (WebCore::GradientImage::dump):
+        * platform/graphics/GradientImage.h:
+        * platform/graphics/Image.cpp:
+        (WebCore::Image::dump):
+        (WebCore::operator&lt;&lt;):
+        * platform/graphics/Image.h:
+        (WebCore::Image::isGeneratedImage):
+        (WebCore::Image::isCrossfadeGeneratedImage):
+        (WebCore::Image::isNamedImageGeneratedImage):
+        (WebCore::Image::isGradientImage):
+        (WebCore::Image::isSVGImage):
+        (WebCore::Image::isAnimated):
+        * platform/graphics/NamedImageGeneratedImage.cpp:
+        (WebCore::NamedImageGeneratedImage::dump):
+        * platform/graphics/NamedImageGeneratedImage.h:
+        * platform/graphics/cg/PDFDocumentImage.cpp:
+        (WebCore::PDFDocumentImage::dump):
+        * platform/graphics/cg/PDFDocumentImage.h:
+        * svg/graphics/SVGImage.cpp:
+        (WebCore::SVGImage::dump):
+        * svg/graphics/SVGImage.h:
+
</ins><span class="cx"> 2015-10-20  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Use tighter typing for collections / node lists' item() / namedItem() methods
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsBitmapImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/BitmapImage.cpp (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/BitmapImage.cpp        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/platform/graphics/BitmapImage.cpp        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #include &quot;ImageObserver.h&quot;
</span><span class="cx"> #include &quot;IntRect.h&quot;
</span><span class="cx"> #include &quot;MIMETypeRegistry.h&quot;
</span><ins>+#include &quot;TextStream.h&quot;
</ins><span class="cx"> #include &quot;Timer.h&quot;
</span><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="lines">@@ -709,4 +710,25 @@
</span><span class="cx">     return shouldAnimate() &amp;&amp; frameCount() &gt; 1;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void BitmapImage::dump(TextStream&amp; ts) const
+{
+    Image::dump(ts);
+
+    ts.dumpProperty(&quot;type&quot;, m_source.filenameExtension());
+
+    if (isAnimated()) {
+        ts.dumpProperty(&quot;frame-count&quot;, m_frameCount);
+        ts.dumpProperty(&quot;repetitions&quot;, m_repetitionCount);
+        ts.dumpProperty(&quot;current-frame&quot;, m_currentFrame);
+    }
+    
+    if (allowSubsampling())
+        ts.dumpProperty(&quot;allow-subsampling&quot;, allowSubsampling());
+    if (m_isSolidColor)
+        ts.dumpProperty(&quot;solid-color&quot;, m_isSolidColor);
+    
+    if (m_imageOrientation != OriginTopLeft)
+        ts.dumpProperty(&quot;orientation&quot;, m_imageOrientation);
</ins><span class="cx"> }
</span><ins>+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsBitmapImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/BitmapImage.h (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/BitmapImage.h        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/platform/graphics/BitmapImage.h        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -121,8 +121,6 @@
</span><span class="cx"> #endif
</span><span class="cx">     virtual ~BitmapImage();
</span><span class="cx">     
</span><del>-    virtual bool isBitmapImage() const override { return true; }
-
</del><span class="cx">     virtual bool hasSingleSecurityOrigin() const override;
</span><span class="cx"> 
</span><span class="cx">     // FloatSize due to override.
</span><span class="lines">@@ -179,7 +177,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool currentFrameKnownToBeOpaque() override;
</span><span class="cx"> 
</span><del>-    virtual bool isAnimated() override { return m_frameCount &gt; 1; }
</del><ins>+    virtual bool isAnimated() const override { return m_frameCount &gt; 1; }
</ins><span class="cx">     
</span><span class="cx">     bool canAnimate();
</span><span class="cx"> 
</span><span class="lines">@@ -187,6 +185,8 @@
</span><span class="cx">     void setAllowSubsampling(bool allowSubsampling) { m_allowSubsampling = allowSubsampling; }
</span><span class="cx">     
</span><span class="cx"> private:
</span><ins>+    virtual bool isBitmapImage() const override { return true; }
+
</ins><span class="cx">     void updateSize(ImageOrientationDescription = ImageOrientationDescription()) const;
</span><span class="cx">     void determineMinimumSubsamplingLevel() const;
</span><span class="cx"> 
</span><span class="lines">@@ -291,6 +291,8 @@
</span><span class="cx">     void clearTimer();
</span><span class="cx">     void startTimer(double delay);
</span><span class="cx"> 
</span><ins>+    virtual void dump(TextStream&amp;) const override;
+
</ins><span class="cx">     ImageSource m_source;
</span><span class="cx">     mutable IntSize m_size; // The size to use for the overall image (will just be the size of the first image).
</span><span class="cx">     mutable IntSize m_sizeRespectingOrientation;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsCrossfadeGeneratedImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #include &quot;FloatRect.h&quot;
</span><span class="cx"> #include &quot;GraphicsContext.h&quot;
</span><span class="cx"> #include &quot;ImageBuffer.h&quot;
</span><ins>+#include &quot;TextStream.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -109,4 +110,12 @@
</span><span class="cx">     imageBuffer-&gt;drawPattern(context, srcRect, patternTransform, phase, spacing, styleColorSpace, compositeOp, dstRect, blendMode);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void CrossfadeGeneratedImage::dump(TextStream&amp; ts) const
+{
+    GeneratedImage::dump(ts);
+    ts.dumpProperty(&quot;from-image&quot;, m_fromImage.get());
+    ts.dumpProperty(&quot;to-image&quot;, m_toImage.get());
+    ts.dumpProperty(&quot;percentage&quot;, m_percentage);
</ins><span class="cx"> }
</span><ins>+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsCrossfadeGeneratedImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.h (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.h        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.h        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -55,6 +55,9 @@
</span><span class="cx">     CrossfadeGeneratedImage(Image&amp; fromImage, Image&amp; toImage, float percentage, const FloatSize&amp; crossfadeSize, const FloatSize&amp;);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><ins>+    virtual bool isCrossfadeGeneratedImage() const override { return true; }
+    virtual void dump(TextStream&amp;) const override;
+    
</ins><span class="cx">     void drawCrossfade(GraphicsContext&amp;);
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;Image&gt; m_fromImage;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsGeneratedImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/GeneratedImage.cpp (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/GeneratedImage.cpp        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/platform/graphics/GeneratedImage.cpp        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -33,7 +33,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;FloatSize.h&quot;
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> void GeneratedImage::computeIntrinsicDimensions(Length&amp; intrinsicWidth, Length&amp; intrinsicHeight, FloatSize&amp; intrinsicRatio)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsGeneratedImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/GeneratedImage.h (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/GeneratedImage.h        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/platform/graphics/GeneratedImage.h        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -59,6 +59,8 @@
</span><span class="cx">     GeneratedImage() { }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><ins>+    virtual bool isGeneratedImage() const override { return true; }
+
</ins><span class="cx">     FloatSize m_size;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsGradientImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/GradientImage.cpp (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/GradientImage.cpp        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/platform/graphics/GradientImage.cpp        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> #include &quot;GraphicsContext.h&quot;
</span><span class="cx"> #include &quot;ImageBuffer.h&quot;
</span><span class="cx"> #include &quot;Length.h&quot;
</span><ins>+#include &quot;TextStream.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -94,4 +95,10 @@
</span><span class="cx">     m_cachedImageBuffer-&gt;drawPattern(destContext, adjustedSrcRect, adjustedPatternCTM, phase, spacing, styleColorSpace, compositeOp, destRect, blendMode);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void GradientImage::dump(TextStream&amp; ts) const
+{
+    GeneratedImage::dump(ts);
+    // FIXME: dump the gradient.
</ins><span class="cx"> }
</span><ins>+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsGradientImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/GradientImage.h (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/GradientImage.h        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/platform/graphics/GradientImage.h        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -53,6 +53,9 @@
</span><span class="cx">     GradientImage(PassRefPtr&lt;Gradient&gt;, const FloatSize&amp;);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><ins>+    virtual bool isGradientImage() const override { return true; }
+    virtual void dump(TextStream&amp;) const override;
+    
</ins><span class="cx">     RefPtr&lt;Gradient&gt; m_gradient;
</span><span class="cx">     std::unique_ptr&lt;ImageBuffer&gt; m_cachedImageBuffer;
</span><span class="cx">     FloatSize m_cachedAdjustedSize;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/Image.cpp (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/Image.cpp        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/platform/graphics/Image.cpp        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx"> #include &quot;Length.h&quot;
</span><span class="cx"> #include &quot;MIMETypeRegistry.h&quot;
</span><span class="cx"> #include &quot;SharedBuffer.h&quot;
</span><ins>+#include &quot;TextStream.h&quot;
</ins><span class="cx"> #include &lt;math.h&gt;
</span><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="lines">@@ -270,4 +271,36 @@
</span><span class="cx">     intrinsicHeight = Length(intrinsicRatio.height(), Fixed);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void Image::dump(TextStream&amp; ts) const
+{
+    if (isAnimated())
+        ts.dumpProperty(&quot;animated&quot;, isAnimated());
+
+    if (isNull())
+        ts.dumpProperty(&quot;is-null-image&quot;, true);
+
+    ts.dumpProperty(&quot;size&quot;, size());
</ins><span class="cx"> }
</span><ins>+
+TextStream&amp; operator&lt;&lt;(TextStream&amp; ts, const Image&amp; image)
+{
+    TextStream::GroupScope scope(ts);
+    
+    if (image.isBitmapImage())
+        ts &lt;&lt; &quot;bitmap image&quot;;
+    else if (image.isCrossfadeGeneratedImage())
+        ts &lt;&lt; &quot;crossfade image&quot;;
+    else if (image.isNamedImageGeneratedImage())
+        ts &lt;&lt; &quot;named image&quot;;
+    else if (image.isGradientImage())
+        ts &lt;&lt; &quot;gradient image&quot;;
+    else if (image.isSVGImage())
+        ts &lt;&lt; &quot;svg image&quot;;
+    else if (image.isPDFDocumentImage())
+        ts &lt;&lt; &quot;pdf image&quot;;
+
+    image.dump(ts);
+    return ts;
+}
+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/Image.h (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/Image.h        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/platform/graphics/Image.h        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -80,13 +80,17 @@
</span><span class="cx">     WEBCORE_EXPORT static PassRefPtr&lt;Image&gt; loadPlatformResource(const char* name);
</span><span class="cx">     WEBCORE_EXPORT static bool supportsType(const String&amp;);
</span><span class="cx"> 
</span><ins>+    virtual bool isBitmapImage() const { return false; }
+    virtual bool isGeneratedImage() const { return false; }
+    virtual bool isCrossfadeGeneratedImage() const { return false; }
+    virtual bool isNamedImageGeneratedImage() const { return false; }
+    virtual bool isGradientImage() const { return false; }
</ins><span class="cx">     virtual bool isSVGImage() const { return false; }
</span><del>-    virtual bool isBitmapImage() const { return false; }
</del><span class="cx">     virtual bool isPDFDocumentImage() const { return false; }
</span><ins>+
</ins><span class="cx">     virtual bool currentFrameKnownToBeOpaque() = 0;
</span><ins>+    virtual bool isAnimated() const { return false; }
</ins><span class="cx"> 
</span><del>-    virtual bool isAnimated() { return false; }
-
</del><span class="cx">     // Derived classes should override this if they can assure that 
</span><span class="cx">     // the image contains only resources from its own security origin.
</span><span class="cx">     virtual bool hasSingleSecurityOrigin() const { return false; }
</span><span class="lines">@@ -177,6 +181,8 @@
</span><span class="cx">     virtual bool notSolidColor() { return true; }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    virtual void dump(TextStream&amp;) const;
+
</ins><span class="cx"> protected:
</span><span class="cx">     Image(ImageObserver* = nullptr);
</span><span class="cx"> 
</span><span class="lines">@@ -200,6 +206,8 @@
</span><span class="cx">     ImageObserver* m_imageObserver;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+TextStream&amp; operator&lt;&lt;(TextStream&amp;, const Image&amp;);
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #define SPECIALIZE_TYPE_TRAITS_IMAGE(ToClassName) \
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsNamedImageGeneratedImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/NamedImageGeneratedImage.cpp (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/NamedImageGeneratedImage.cpp        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/platform/graphics/NamedImageGeneratedImage.cpp        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #include &quot;FloatRect.h&quot;
</span><span class="cx"> #include &quot;GraphicsContext.h&quot;
</span><span class="cx"> #include &quot;ImageBuffer.h&quot;
</span><ins>+#include &quot;TextStream.h&quot;
</ins><span class="cx"> #include &quot;Theme.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -85,4 +86,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void NamedImageGeneratedImage::dump(TextStream&amp; ts) const
+{
+    GeneratedImage::dump(ts);
+    ts.dumpProperty(&quot;name&quot;, m_name);
</ins><span class="cx"> }
</span><ins>+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsNamedImageGeneratedImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/NamedImageGeneratedImage.h (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/NamedImageGeneratedImage.h        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/platform/graphics/NamedImageGeneratedImage.h        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -47,6 +47,9 @@
</span><span class="cx">     NamedImageGeneratedImage(String name, const FloatSize&amp;);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><ins>+    virtual bool isNamedImageGeneratedImage() const override { return true; }
+    virtual void dump(TextStream&amp;) const override;
+
</ins><span class="cx">     String m_name;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscgPDFDocumentImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -40,6 +40,7 @@
</span><span class="cx"> #include &quot;IntRect.h&quot;
</span><span class="cx"> #include &quot;Length.h&quot;
</span><span class="cx"> #include &quot;SharedBuffer.h&quot;
</span><ins>+#include &quot;TextStream.h&quot;
</ins><span class="cx"> #include &lt;CoreGraphics/CGContext.h&gt;
</span><span class="cx"> #include &lt;CoreGraphics/CGPDFDocument.h&gt;
</span><span class="cx"> #include &lt;wtf/MathExtras.h&gt;
</span><span class="lines">@@ -264,6 +265,15 @@
</span><span class="cx"> 
</span><span class="cx"> #endif // !USE(PDFKIT_FOR_PDFDOCUMENTIMAGE)
</span><span class="cx"> 
</span><ins>+void PDFDocumentImage::dump(TextStream&amp; ts) const
+{
+    Image::dump(ts);
+    ts.dumpProperty(&quot;page-count&quot;, pageCount());
+    ts.dumpProperty(&quot;crop-box&quot;, m_cropBox);
+    if (m_rotationDegrees)
+        ts.dumpProperty(&quot;rotation&quot;, m_rotationDegrees);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+}
+
</ins><span class="cx"> #endif // USE(CG)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscgPDFDocumentImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/cg/PDFDocumentImage.h (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cg/PDFDocumentImage.h        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/platform/graphics/cg/PDFDocumentImage.h        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -74,6 +74,8 @@
</span><span class="cx">     // FIXME: Implement this to be less conservative.
</span><span class="cx">     virtual bool currentFrameKnownToBeOpaque() override { return false; }
</span><span class="cx"> 
</span><ins>+    virtual void dump(TextStream&amp;) const override;
+
</ins><span class="cx">     void createPDFDocument();
</span><span class="cx">     void computeBoundsForCurrentPage();
</span><span class="cx">     unsigned pageCount() const;
</span></span></pre></div>
<a id="trunkSourceWebCoresvggraphicsSVGImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/graphics/SVGImage.cpp (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/graphics/SVGImage.cpp        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/svg/graphics/SVGImage.cpp        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -45,6 +45,7 @@
</span><span class="cx"> #include &quot;SVGImageClients.h&quot;
</span><span class="cx"> #include &quot;SVGSVGElement.h&quot;
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><ins>+#include &quot;TextStream.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -400,4 +401,11 @@
</span><span class="cx">     return page-&gt;chrome().client().isSVGImageChromeClient();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void SVGImage::dump(TextStream&amp; ts) const
+{
+    Image::dump(ts);
+    ts.dumpProperty(&quot;url&quot;, m_url.string());
</ins><span class="cx"> }
</span><ins>+
+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoresvggraphicsSVGImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/graphics/SVGImage.h (191351 => 191352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/graphics/SVGImage.h        2015-10-20 18:48:26 UTC (rev 191351)
+++ trunk/Source/WebCore/svg/graphics/SVGImage.h        2015-10-20 20:38:03 UTC (rev 191352)
</span><span class="lines">@@ -90,6 +90,8 @@
</span><span class="cx">     // FIXME: Implement this to be less conservative.
</span><span class="cx">     virtual bool currentFrameKnownToBeOpaque() override { return false; }
</span><span class="cx"> 
</span><ins>+    virtual void dump(TextStream&amp;) const override;
+
</ins><span class="cx">     SVGImage(ImageObserver&amp;, const URL&amp;);
</span><span class="cx">     virtual void draw(GraphicsContext&amp;, const FloatRect&amp; fromRect, const FloatRect&amp; toRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode, ImageOrientationDescription) override;
</span><span class="cx">     void drawForContainer(GraphicsContext&amp;, const FloatSize, float, const FloatRect&amp;, const FloatRect&amp;, ColorSpace, CompositeOperator, BlendMode);
</span></span></pre>
</div>
</div>

</body>
</html>