Subodh Chiwate
2014-09-22 06:07:46 UTC
-------- Original Message --------
Subject: [directfb-dev] How to make primary surface transparent ??
Date: Fri, 19 Sep 2014 19:00:55 +0530
From: Subodh Chiwate <***@ufomoviez.com><mailto:***@ufomoviez.com>
To: <directfb-***@diretfb.org><mailto:directfb-***@diretfb.org>
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
_______________________________________________
directfb-dev mailing list
directfb-***@directfb.org<mailto:directfb-***@directfb.org>
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev
.
--
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 *******************
Subject: [directfb-dev] How to make primary surface transparent ??
Date: Fri, 19 Sep 2014 19:00:55 +0530
From: Subodh Chiwate <***@ufomoviez.com><mailto:***@ufomoviez.com>
To: <directfb-***@diretfb.org><mailto:directfb-***@diretfb.org>
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
_______________________________________________
directfb-dev mailing list
directfb-***@directfb.org<mailto:directfb-***@directfb.org>
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev
.
--
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 *******************