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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to