Hi, I am trying to make a primary surface transparent, so that I can display text as timer on the display. I am trying to overwrite same string with opposite alpha as a hack that just seems too wrong to do in practice .. :) Please help. I am using DFB 1.4 on embedded platform.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <directfb.h> static IDirectFB *dfb = NULL; static IDirectFBSurface *primary = NULL; static int screen_width = 0; static int screen_height = 0; #define DFBCHECK(x...) \ { \ DFBResult err = x; \ \ if (err != DFB_OK) \ { \ fprintf( stderr, "%s <%d>:\n\t", __FILE__, __LINE__ ); \ DirectFBErrorFatal( #x, err ); \ } \ } static IDirectFBFont *font = NULL; static char *text = "DirectFB Rulez !!!"; int main (int argc, char **argv) { int i, width; DFBFontDescription font_dsc; DFBSurfaceDescription dsc; IDirectFBDisplayLayer *videolayer = NULL; DFBCHECK (DirectFBInit (&argc, &argv)); DFBCHECK (DirectFBCreate (&dfb)); DFBCHECK (dfb->SetCooperativeLevel (dfb, DFSCL_FULLSCREEN)); dsc.flags = DSDESC_CAPS; dsc.caps = DSCAPS_SYSTEMONLY | DSCAPS_PRIMARY | DSCAPS_SUBSURFACE | DSCAPS_STATIC_ALLOC | DSCAPS_INTERLACED | DSCAPS_SEPARATED | DSCAPS_SHARED | DSCAPS_FLIPPING ; DFBCHECK (dfb->CreateSurface( dfb, &dsc, &primary )); DFBCHECK (primary->SetPorterDuff(primary,DSPD_DST_OUT)); DFBCHECK (primary->SetSrcBlendFunction(primary,DSBF_INVSRCCOLOR)); font_dsc.flags = DFDESC_HEIGHT; font_dsc.height = 48; DFBCHECK (dfb->CreateFont (dfb, "/usr/share/directfb-examples/fonts/decker.ttf", &font_dsc, &font)); DFBCHECK (primary->SetFont (primary, font)); DFBCHECK (font->GetStringWidth (font, text, -1, &width)); DFBRectangle tar_rect; tar_rect.x = 300 ; tar_rect.y = 300; tar_rect.w = width ; tar_rect.h = 100; DFBCHECK (primary->MakeSubSurface(primary,primary,&tar_rect)); DFBCHECK (primary->GetSize (primary, &screen_width, &screen_height)); char str[15]; int prev= 300; for (i = 300; i > 0; i--) { DFBCHECK (primary->SetColor (primary, 0x0, 0x0, 0x0, 0x0)); //DFBCHECK (primary->FillRectangle (primary, 0 , 0 , width , 100)); sprintf(str,"%d",prev); DFBCHECK (primary->DrawString (primary, str /* text */, -1, 0, 0, DSTF_TOPLEFT)); DFBCHECK (primary->Flip (primary, NULL, DSFLIP_WAIT)); bzero(str,15); sprintf(str,"%d",i); DFBCHECK (primary->SetColor (primary, 0x0, 0xFF, 0x0, 0x0)); DFBCHECK (primary->DrawString (primary, str /* text */, -1, 0, 0, DSTF_TOPLEFT)); DFBCHECK (primary->Flip (primary, NULL, DSFLIP_WAIT)); bzero(str,15); prev = i; usleep(200); } font->Release (font); primary->Release (primary); dfb->Release (dfb); return 0; } -- Regards, Subodh -- **************** CAUTION - Disclaimer ***************** This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely for the use of the addressee(s). If you are not the intended recipient, please notify the sender by e-mail and delete the original message. Further, you are not to copy, disclose, or distribute this e-mail or its contents to any other person and any such actions are unlawful. This e-mail may contain viruses. UFOMoviez India Ltd. has taken every reasonable precaution to minimize this risk, but is not liable for any damage you may sustain as a result of any virus in this e-mail. You should carry out your own virus checks before opening the e-mail or attachment. UFOMoviez India Ltd. reserves the right to monitor and review the content of all messages sent to or from this e-mail address. Messages sent to or from this e-mail address may be stored on the UFOMoviez India Ltd.'s e-mail system. ***************** End of Disclaimer ******************* _______________________________________________ directfb-dev mailing list directfb-dev@directfb.org http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev