HI,


I am writing a test program for multiple layer
there is total 5 layers:-

 Layer (00) OSD                             (primary layer)
        Type:    GRAPHICS
        Caps:    SURFACE OPACITY ALPHACHANNEL FLICKER_FILTERING
SRC_COLORKEY BRIGHTNESS CONTRAST                                HUE SATURATION 
ASPECT_MATCH

 Layer (01) BGND
        Type:    GRAPHICS
        Caps:    SURFACE

 Layer (02) MainVideo
        Type:    VIDEO
        Caps:    OPACITY SCREEN_LOCATION BRIGHTNESS CONTRAST HUE
SATURATION COLOR_SPACE SOURCES                  SCREEN_POSITION SCREEN_SIZE
        Sources: Bogus source for main v

     Layer (03) 2ndVideo
        Type:    GRAPHICS VIDEO
        Caps:    SURFACE OPACITY SCREEN_LOCATION BRIGHTNESS CONTRAST
HUE SATURATION COLOR_SPACE                      LEVELS SOURCES SCREEN_POSITI
        Sources: Bogus source for second, Bogus source for second

     Layer (04) SecOSD
        Type:    GRAPHICS
        Caps:    SURFACE OPACITY ALPHACHANNEL SCREEN_LOCATION
SRC_COLORKEY BRIGHTNESS CONTRAST HUE                            SATURATION 
SCREEN_POSITIO



my test program using only 2 layers. That is layer-0 and layer-1. On
layer-1 i want to draw a 720*576 image and on layer-0 i want to draw 6
small images (142*97). when i am doing so i am getting undesired
result that are:-
1. When i draw small image on layer-0 it first drawing all six images
at center point of screen and on blitting it shift to desire position
and center image still there.
2. It showing cursor on layer-0, even cursor is disabled.

for your convience i am giving source code below:-


if(layerid==0){
        DFBCHECK(dfb1->GetDisplayLayer( dfb1, 1, &dfblayer[layerid] ));
        dfblayer[layerid]->SetCooperativeLevel( dfblayer[layerid],
DLSCL_ADMINISTRATIVE );
        dfblayer[layerid]->GetConfiguration(dfblayer[layerid], &layer_config );
        DFBSurfaceDescription desc;
        DFBCHECK(dfb1->CreateImageProvider( dfb1,
                                             image1,
                                             &provider ));

        desc.flags  = DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_CAPS;
        desc.width  = layer_config.width;
        desc.height = layer_config.height;
        dfblayer[layerid]->GetSurface(dfblayer[layerid],&bgsurface);
        provider->RenderTo( provider, bgsurface, NULL );
        provider->Release( provider );
        DFBCHECK (bgsurface->Flip (bgsurface, NULL, DSFLIP_WAITFORSYNC));
}
else{
        DFBDisplayLayerConfig         layer_config1;
        DFBCHECK(dfb1->GetDisplayLayer( dfb1, 0, &dfblayer[layerid] ));
        dfblayer[layerid]->SetCooperativeLevel( dfblayer[layerid],
DLSCL_ADMINISTRATIVE );
        dfblayer[layerid]->SetBackgroundColor(dfblayer[layerid],0,0,0,0);
        dfblayer[layerid]->EnableCursor(dfblayer[layerid],0);
        dfblayer[layerid]->WarpCursor(dfblayer[layerid], -100, -100);
        dfblayer[layerid]->SetOpacity(dfblayer[layerid],0xFF);
        dfblayer[layerid]->GetConfiguration(dfblayer[layerid], &layer_config1 );
        dfblayer[layerid]->GetSurface(dfblayer[layerid],&bgsurface);
        for( j=1,k=80;j<=3;j++,k+=213)
        {
                 DFBSurfaceDescription desc1;
                 DFBCHECK(dfb1->CreateImageProvider(    dfb1,
                                                        img[j],
                                                        &provider ));

                 desc1.flags  = DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_CAPS;
                 desc1.width  = 142;
                 desc1.height = 97;
                 desc1.pixelformat = DSPF_ARGB;
                 DFBCHECK (dfb1->CreateSurface( dfb1, &desc1, &logo ));
                 DFBCHECK (provider->RenderTo (provider, logo, NULL));
                 provider->Release( provider );

DFBCHECK(bgsurface->SetBlittingFlags(bgsurface,DSBLIT_BLEND_ALPHACHANNEL));
                 DFBCHECK(bgsurface->SetPorterDuff(bgsurface,DSPD_SRC_OVER));
                 DFBCHECK (bgsurface->Blit (bgsurface, logo, NULL, k, 113 ));
                 DFBCHECK (bgsurface->SetBlittingFlags(bgsurface,DSBLIT_NOFX));

                 DFBCHECK (bgsurface->SetPorterDuff(bgsurface , DSPD_NONE ));
                 logo->Release(logo);
        }
        for( j=1,k=160;j<=3;j++,k+=213)
        {
                 DFBSurfaceDescription desc1;
                 DFBCHECK(dfb1->CreateImageProvider(    dfb1,
                                                        img[j],
                                                        &provider ));

                 desc1.flags  = DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_CAPS;
                 desc1.width  = 142;
                 desc1.height = 97;
                 desc1.pixelformat = DSPF_ARGB;
                 DFBCHECK (dfb1->CreateSurface( dfb1, &desc1, &logo ));
                 DFBCHECK (provider->RenderTo (provider, logo, NULL));
                 provider->Release( provider );


DFBCHECK(bgsurface->SetBlittingFlags(bgsurface,DSBLIT_BLEND_ALPHACHANNEL));
                 DFBCHECK(bgsurface->SetPorterDuff(bgsurface,DSPD_SRC_OVER));
                 DFBCHECK (bgsurface->Blit (bgsurface, logo, NULL, k, 113 ));
                 DFBCHECK (bgsurface->SetBlittingFlags(bgsurface,DSBLIT_NOFX));

                 DFBCHECK (bgsurface->SetPorterDuff(bgsurface , DSPD_NONE ));
                 logo->Release(logo);
        }
        DFBCHECK (bgsurface->Flip (bgsurface, NULL, DSFLIP_WAITFORSYNC));
}       



        


-- 
JOY

Never expect things to happen..  struggle and make them happen.
never expect yourself to be given a good value create a value of your own
_______________________________________________
directfb-users mailing list
directfb-users@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users

Reply via email to