Subject:
Re: [nanogui] Transparent pixmap
From:
Fredrik Johansson ####@####.####
Date:
25 Feb 2008 06:47:22 -0000
Message-Id: <47C26500.2020307@sectra.se>
Hi
I'm rather new to Nano-X so I do not know if this applies but you could
try using:
GrSetGCUseBackground (gc, GR_FALSE);
Regards
Fredrik Johansson
####@####.#### skrev:
> Hello,
>
> i want to copy the contents of a pixmap on to the screen. The pixmap
> contains a gif with a transparent background (=> alpha = 0). When i
> copy the pixmap to the screen the transparent background is visible. I
> run nano-x for the Linux-X86 platform using the X11 library. When
> drawing the gif directly to the screen the transparent background is,
> correctly, not visisble. I attach a simple example which demonstrates
> the problem. In the example i do not load the gif, instead i have two
> pixmaps: one painted with red color (alpha = 0) and the other with
> blue (alpha = 255). Still, the red is visible. I also tried the
> SRCTRANSCOPY mode as arhument in the GrCopyArea, but i am not sure if
> this mode of operation is actually implemented. Any help is greatly
> appreciated.
>
> -------------------------------------------------------------------------
> #include <stdio.h>
> #include <stdlib.h>
> #define MWINCLUDECOLORS
> #include "nano-X.h"
>
> int main(int argc, char **argv)
> {
> GR_WINDOW_ID pid1, pid2;
> GR_GC_ID gc;
> GR_EVENT event;
> int width, height;
> char c;
>
> if( GrOpen() < 0 )
> {
> printf("cannot open graphics\n");
> exit(1);
> }
>
> width = height = 100;
>
> GrSelectEvents(GR_ROOT_WINDOW_ID, GR_EVENT_MASK_KEY_DOWN);
>
> gc = GrNewGC();
>
> pid1 = GrNewPixmap(width, height, NULL);
> GrSetGCForeground(gc, MWARGB(0,255,0,0));
> GrFillRect(pid1, gc, 0, 0, width, height);
>
> pid2 = GrNewPixmap(width, height, NULL);
> GrSetGCForeground(gc, MWARGB(255,0,0,255));
> GrFillRect(pid2, gc, 0, 0, width, height);
>
> GrCopyArea(GR_ROOT_WINDOW_ID, gc, 100, 100, width, height, pid2, 0,
> 0, MWMODE_COPY);
>
> GrCopyArea(GR_ROOT_WINDOW_ID, gc, 150, 150, width, height, pid1, 0,
> 0, MWMODE_COPY);
>
> while(1)
> {
> GrGetNextEvent(&event);
> switch (event.type)
> {
> case GR_EVENT_TYPE_KEY_DOWN:
> c = event.keystroke.ch;
> if(c == 'q')
> {
> GrClose();
> exit(0);
> }
> break;
> default:
> break;
> }
> }
> }
> --------------------------------------------------------------------------
>
> Thanks in advance
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ####@####.####
> For additional commands, e-mail: ####@####.####
>
>
E