<div dir="ltr">On 25 April 2013 03:37, Jianhua Shao <span dir="ltr">&lt;<a href="mailto:alex.sjh@gmail.com" target="_blank">alex.sjh@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5">On Thu, Apr 25, 2013 at 5:32 AM, Emmanuel Rodriguez <span dir="ltr">&lt;<a href="mailto:emmanuel.rodriguez@gmail.com" target="_blank">emmanuel.rodriguez@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">
<div><span style="color:rgb(34,34,34)">Thanks for sharing your experience.  </span><br></div></div></div></div></blockquote></div></div><div>The version 1.6.3 does not meet my requirements. &quot;enable-accelerated-compositing&quot; is what I need in the newer version, from the dev document I found it is available from version 1.7.5.<br>

Seems I can give a try on version 1.7.x.<br></div></div></div></div></blockquote><div style>I just ment to try it and see if the transparencies where still enabled in 1.6.3</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br>And have you read my another mail, <br><br>cairo_surface_t* surface = webkit_web_view_get_snapshot(view);<br><div dir="ltr">cairo_surface_write_to_png(surface, &quot;/home/meego/dump.png&quot;);<br>

<br>will result a transparent png file...<br>Maybe I need to do some configuration on cario/gtk, but I am new on this subject, anyone can give me some hint?</div></div></div></div></div></blockquote><div style><br></div>
<div style>By the looks of the code of 1.6.3 and 1.10.2 it seems that  webkit_web_view_get_snapshot() behaves like the old webkit_web_view_draw().<br></div><div style><br></div><div style>In 1.6.3 the draw operation is done with:</div>
<div style><br></div><div style><div>static void paintWebView(Frame* frame, gboolean transparent, GraphicsContext&amp; context, const IntRect&amp; clipRect, const Vector&lt;IntRect&gt;&amp; rects)</div><div>{</div><div>    bool coalesce = true;</div>
<div><br></div><div>    if (rects.size() &gt; 0)</div><div>        coalesce = shouldCoalesce(clipRect, rects);</div><div><br></div><div>    if (coalesce) {</div><div>        context.clip(clipRect);</div><div>        if (transparent)</div>
<div>            context.clearRect(clipRect);</div><div>        frame-&gt;view()-&gt;paint(&amp;context, clipRect);</div><div>    } else {</div><div>        for (size_t i = 0; i &lt; rects.size(); i++) {</div><div>            IntRect rect = rects[i];</div>
<div>            context.save();</div><div>            context.clip(rect);</div><div>            if (transparent)</div><div>                context.clearRect(rect);</div><div>            frame-&gt;view()-&gt;paint(&amp;context, rect);</div>
<div>            context.restore();</div><div>        }</div><div>    }</div><div><br></div><div>    context.save();</div><div>    context.clip(clipRect);</div><div>    frame-&gt;page()-&gt;inspectorController()-&gt;drawHighlight(context);</div>
<div>    context.restore();</div><div>}</div><div><br></div><div><br></div></div><div style>In 1.10.2 webkit_web_view_get_snapshot is done with:</div><div style><br></div><div style><div>cairo_surface_t*</div><div>webkit_web_view_get_snapshot(WebKitWebView* webView)</div>
<div>{</div><div>    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);</div><div><br></div><div>    Frame* frame = core(webView)-&gt;mainFrame();</div><div>    if (!frame || !frame-&gt;contentRenderer() || !frame-&gt;view())</div>
<div>        return 0;</div><div><br></div><div>    frame-&gt;view()-&gt;updateLayoutAndStyleIfNeededRecursive();</div><div>    GtkAllocation allocation;</div><div>    gtk_widget_get_allocation(GTK_WIDGET(webView), &amp;allocation);</div>
<div>    cairo_surface_t* surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, allocation.width, allocation.height);</div><div>    RefPtr&lt;cairo_t&gt; cr = adoptRef(cairo_create(surface));</div><div>    GraphicsContext gc(cr.get());</div>
<div><br></div><div>    IntRect rect = allocation;</div><div>    gc.applyDeviceScaleFactor(frame-&gt;page()-&gt;deviceScaleFactor());</div><div>    gc.save();</div><div>    gc.clip(rect);</div><div>    if (webView-&gt;priv-&gt;transparent)</div>
<div>        gc.clearRect(rect);</div><div>    frame-&gt;view()-&gt;paint(&amp;gc, rect);</div><div>    gc.restore();</div><div><br></div><div>    return surface;</div><div>}</div><div><br></div></div><div style><br></div>
<div style>Both functions have the same drawing logic:</div><div style><br></div><div style><div>        context.clip(clipRect);</div><div>        if (transparent)</div><div>            context.clearRect(clipRect);</div><div>
        frame-&gt;view()-&gt;paint(&amp;context, clipRect);</div><div>        context.restore();<br></div></div><div style><br></div><div style>Wit the exception that webkit_web_view_get_snapshot() forces the drawing into an image surface except of accepting a cairo context.</div>
<div style><br></div><div style>-- <br></div></div>Emmanuel Rodriguez
</div></div>