Hi Aaron and Babele,

I used to set the widgetDamageRectInPixels coordinates in nsViewManager
before use it in CopyOffScreenBits, how can I do it on the new architecture?
It used to be something like:

widgetDamageRectInPixels.x = valueX;
widgetDamageRectInPixels.y = valueY;
localcx->CopyOffScreenBits(ds, 0, 0, widgetDamageRectInPixels,
NS_COPYBITS_USE_SOURCE_CLIP_REGION);

Can you help me?

Thanks in advance,

Andre Pedralho

On Mon, Oct 6, 2008 at 6:11 AM, Babele Dunnit <[EMAIL PROTECTED]>wrote:

> Hello everybody,
>
> I managed to get to the pixels. Here cometh the snippet. DISCLAIMER:
> this works for me, and it's probably still buggy. I still have to
> understand if and where I have to use smart pointers, and I know never
> free memory, and a lot of other stuff that must be fixed. All I know
> is that "textureBuffer"  points to a memory zone that I can
> subsequently render in a OpenGL texture, so I can tell it works.
>
> Ciao,
> Aaron/Babele
>
> void EmbeddedBrowser::GrabWindow()
> {
>
>    nsCOMPtr<nsIDOMWindow> domWindow;
>    nsresult rv = mWebBrowser-
> >GetContentDOMWindow(getter_AddRefs(domWindow));
>    assert(NS_SUCCEEDED(rv) && domWindow);
>
>    nsCOMPtr<nsICanvasRenderingContextInternal> context;
>    context = do_CreateInstance("@mozilla.org/content/canvas-rendering-
> context;1?id=2d", &rv);
>
>    assert(NS_SUCCEEDED(rv) && context);
>
>    context->SetDimensions(512, 512);
>    context->SetCanvasElement(nsnull);
>
>    nsCOMPtr<nsIDOMCanvasRenderingContext2D> domCanvas;
>    domCanvas = do_QueryInterface(context, &rv);
>    assert(NS_SUCCEEDED(rv) && domCanvas);
>
>    rv = domCanvas->DrawWindow(domWindow, 0, 0, 512, 512,
> NS_LITERAL_STRING("rgb(0,0,0)"));
>    assert (NS_SUCCEEDED(rv));
>
>    gfxASurface* DOMRenderedSurface = NULL;
>    rv = context->GetThebesSurface(&DOMRenderedSurface);
>    assert (NS_SUCCEEDED(rv) && DOMRenderedSurface);
>
>    assert(DOMRenderedSurface->GetType() ==
> gfxASurface::SurfaceTypeWin32);
>    assert(DOMRenderedSurface->GetContentType() ==
> gfxASurface::CONTENT_COLOR_ALPHA);
>
>    nsRefPtr<gfxImageSurface> imgSurface = new
> gfxImageSurface(gfxIntSize(512,
> 512),gfxImageSurface::ImageFormatARGB32);
>    assert(imgSurface);
>
>    gfxContext* dcontext = new gfxContext(imgSurface);
>    assert(dcontext);
>
>    dcontext->SetOperator(gfxContext::OPERATOR_SOURCE);
>    dcontext->SetSource(DOMRenderedSurface);
>    dcontext->Paint();
>
>    PRUint32* imageData = (PRUint32*)imgSurface->Data();
>    textureBuffer = (char*) imageData;
>
> }
>
> _______________________________________________
> dev-embedding mailing list
> [email protected]
> https://lists.mozilla.org/listinfo/dev-embedding
>



-- 
André Pedralho
_______________________________________________
dev-embedding mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-embedding

Reply via email to