#include <stdio.h>
//C库函数
#include <unistd.h>
//UNIX标准函数,与系统相关<UNIxSTanDard>
#include <directfb.h>
//directfb库函数
static IDirectFB *dfb = NULL;
//directfb入口,最高接口
static IDirectFBSurface *primary = NULL;
//平面接口对象,若CooerativeLevel设为DFSCL_FULLSCREEN,则为首层平面
static int screen_width = 0;
static int screen_height = 0;
//设置两个静态常量来记录屏幕的长宽信息,初始化为0,以适应任何界面
int main(int argc, char **argv)
{
DFBSurfaceDescription *dsc;
//创建DFBSurface描述对象
DirectFBInit(&argc, &argv);
//初始化Directfb,初始化函数的实参为argc,argv的地址,
//即*argc, ***argv(*(*argv[]))
//此函数可使argc和argv参数在directfb中使用。
DirectFBCreate(&dfb);
//创建最高接口,给dfb对象分配了一段内存空间
dfb->SetCooperativeLevel(dfb, DFSCL_FULLSCREEN);
//将dfb的CooperativeLevel设置为DFSCL_FULLSCREEN。
//这样我们所绘的图形将独占显示在显示设备的最上层(primary layer),
//否则只能显示在大鼠标的下方
dsc->flags = DSDESC_CAPS;
//指定要设置的区域,这里为DSDESC_CAPS,则可对caps区域进行设置。有唤醒之意。
dsc->caps = DSCAPS_PRIMARY | DSCAPS_FLIPPING;
//将caps设置为以上两个参数,DSCAPS_PRIMARY即将dfb设为最高层,
//而DSCAPS_FLIPPING参数将其设为要见,此参数在1.0.1版本中是没有的
dfb->CreateSurface(dfb, dsc, &primary);
//利用dsc创建一个 平面,此平面的信息放在primary中
primary->GetSize(primary, &screen_width, &screen_height);
//获取screen_width和screen_height的值,即全屏的长和宽
printf("%d/t%d/n", screen_width, screen_height);
//测试行,查看此获得的长宽值
primary->FillRectangle(primary, 0, 0, screen_width-1, screen_height-1);
//将一个矩形将屏幕覆盖起来,以矩形的左上角和右下角坐标为实参
//默认这个矩形的颜色为黑色,绘制参数为DSDRAW_NOFX,即无特效
primary->SetColor(primary, 0x80, 0x80, 0xff, 0xff);
//设置画笔颜色,从第二个参数起分别为r,g,b,a,a为alpha(透明)值
primary->DrawLine(primary, 0, screen_height/2,
screen_width-1, screen_height/2);
//画一条直线,以起点和终点坐标为实参
primary->Flip(primary, NULL, 0);
//绘制完成后别忘了FLIP一下,让绘制的内容可见
sleep(5);
//暂停5秒
return 0;
}