[REBOL] Re: Capturing transparent faces.
From: volker:nitsch:gmai:l at: 25-Jun-2005 23:47
On 6/25/05, Petr Krenzelok <[petr--krenzelok--trz--cz]> wrote:
> Carl Read wrote:
>
> >Hi all,
> >
> >If you have a transparent face in View, it can be used to grab an image of the faces
under it. However, I can only get this to work on a layout in an open window - when
I attempt it on layout, all I get is a black image.
> >
> >Here's an example of this: Just run it, click on the "Grab Area" button and you'll
see what I mean...
> >
> >
> >rebol []
> >lo: layout [
> > title "Grab area test."
> > at 30x20
> > b: box 80x30 with [color: none] ; Transparent box.
> > button "Grab Area" [
> > window-grab: to-image b
> > unview/all
> > ]
> >]
> >lo-grab: to-image b
> >
> >
>
> Look, I am no guru at View, but imo following happens. Feel free to
> correct me eventually:
>
> you create snapshot of 'b (lo-grab), even before it is being shown for
> the first time. Imo layout just defines structures, but does not apply
> effect, until the face is actually shown.
Pekr, if you continue at that pace, you will be guru shortly ;)
And the solution is:
You can show things without viewing them.
That forces /view to paint into the internal buffers.
A to-image just dumps these buffers, without a 'show there is just black. So
!>> lo: layout [
[ title "Grab area test."
[ at 30x20
[ b: box 80x30 with [color: none] ; Transparent box.
[ button "Grab Area" [
[ window-grab: to-image b
[ unview/all
[ ]
[ ]
!>> show lo
; ^^^^^^^^!!!!!!!!!
!>> lo-grab: to-image lo
== make image! [220x102 #{
C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8
C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C...
!>> view layout[image lo-grab]
> But - even if you first apply
> "view lo" and then "lo-grab: to-image b", you apply 'unview after the
> button press. 'lo object still remains in memory, but who knows what
> 'unview causes internally.
>
> Better ask some guru ...
>
> -pekr-
>
> >view lo
> >view layout [
> > backdrop green
> > text "Image grab from layout..."
> > image lo-grab
> > text "Image grab from window..."
> > image window-grab
> >]
> >
> >
> >So, is there a way to do this on just a layout?
> >
> >Thanks in advance,
> >
> >-- Carl Read.
> >
> >
> >
>
> --
> To unsubscribe from the list, just send an email to
> lists at rebol.com with unsubscribe as the subject.
>
--
-Volker
Any problem in computer science can be solved with another layer of
indirection. But that usually will create another problem.
David
Wheeler