[php-directfb-cvs] PHP-DirectFB/src datatypes.c,1.8,1.9 idisplaylayer.c,1.4,1.5 iscreen.c,1.4,1.5 is
Status: Pre-Alpha
Brought to you by:
klan
From: Claudio C. <kl...@us...> - 2005-03-06 11:43:04
|
Update of /cvsroot/php-directfb/PHP-DirectFB/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31926/src Modified Files: datatypes.c idisplaylayer.c iscreen.c isurface.c php_directfb.c Log Message: Updated API to DirectFB 0.9.22. Index: datatypes.c =================================================================== RCS file: /cvsroot/php-directfb/PHP-DirectFB/src/datatypes.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- datatypes.c 30 Jan 2005 11:02:47 -0000 1.8 +++ datatypes.c 6 Mar 2005 11:42:51 -0000 1.9 @@ -611,9 +611,10 @@ { DFBDisplayLayerConfig config; - if (zend_parse_parameters( ht, "lllllll", &config.flags, &config.width, - &config.height, &config.pixelformat, &config.buffermode, - &config.options, &config.source ) != SUCCESS) + if (zend_parse_parameters( ht, "llllllll", &config.flags, &config.width, + &config.height, &config.pixelformat, + &config.buffermode, &config.options, + &config.source, &config.surface_caps ) != SUCCESS) return false; DFBDisplayLayerConfig_init( &config, this ); @@ -630,6 +631,7 @@ add_property_long( ret, "buffermode", config->buffermode ); add_property_long( ret, "options", config->options ); add_property_long( ret, "source", config->source ); + add_property_long( ret, "surface_caps", config->surface_caps ); } void @@ -656,6 +658,9 @@ if (ret->flags & DLCONF_SOURCE) GET_ENTRY_LONG( source, &ret->source ); + + if (ret->flags & DLCONF_SURFACE_CAPS) + GET_ENTRY_LONG( surface_caps, &ret->surface_caps ); } DIRECTFB_DATATYPE_DEFINITION( DFBDisplayLayerConfig ) Index: isurface.c =================================================================== RCS file: /cvsroot/php-directfb/PHP-DirectFB/src/isurface.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- isurface.c 30 Jan 2005 11:02:47 -0000 1.7 +++ isurface.c 6 Mar 2005 11:42:52 -0000 1.8 @@ -147,6 +147,26 @@ } static +INTERFACE_METHOD( SetAlphaRamp ) +{ + IDirectFBSurface *surface; + int a0; + int a1; + int a2; + int a3; + + DIRECTFB_GET_THIS( surface ); + + if (zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, + "llll", &a0, &a1, &a2, &a3 ) != SUCCESS) + INVARG(); + + dfb_errno = surface->SetAlphaRamp( surface, a0, a1, a2, a3 ); + + DIRECTFB_RESULT(); +} + +static INTERFACE_METHOD( Flip ) { IDirectFBSurface *surface; @@ -729,60 +749,6 @@ } static -INTERFACE_METHOD( FillSpans ) -{ - IDirectFBSurface *surface; - int y; - DFBSpan *spans = NULL; - int num = 0; - zval *sp; - - DIRECTFB_GET_THIS( surface ); - - if (zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, - "la|l", &y, &sp, &num ) != SUCCESS) - INVARG(); - - if (num < 0) - num = 0; - - if (num) { - int i; - - spans = (DFBSpan*) safe_emalloc( num, sizeof(DFBSpan), 0 ); - - for (i = 0; i < num; i++) { - zval **s; - if (zend_hash_index_find( Z_ARRVAL_P( sp ), i, (void**) &s ) != SUCCESS || - Z_TYPE_PP( s ) != IS_OBJECT || Z_OBJCE_PP( s ) != DFBSpan_ce) { - efree( spans ); - spans = NULL; - break; - } - DIRECTFB_TRANSLATE_DATA( DFBSpan, *s, &spans[i] ); - } - - } else { - zval **s; - - while (zend_hash_index_find( Z_ARRVAL_P( sp ), - num, (void**) &s ) == SUCCESS) { - if (Z_TYPE_PP( s ) != IS_OBJECT || - Z_OBJCE_PP( s ) != DFBSpan_ce) - break; - spans = erealloc( spans, ++num * sizeof(DFBSpan) ); - DIRECTFB_TRANSLATE_DATA( DFBSpan, *s, &spans[num-1] ); - } - } - - if (spans) { - dfb_errno = surface->FillSpans( surface, y, spans, num ); - efree( spans ); - } else - dfb_errno = DFB_INVARG; -} - -static INTERFACE_METHOD( DrawLine ) { IDirectFBSurface *surface; @@ -868,6 +834,113 @@ } static +INTERFACE_METHOD( FillRectangles ) +{ + IDirectFBSurface *surface; + DFBRectangle *rects = NULL; + int num = 0; + zval *z; + + DIRECTFB_GET_THIS( surface ); + + if (zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, + "a|l", &z, &num ) != SUCCESS) + INVARG(); + + if (num < 0) + num = 0; + + if (num) { + int i; + + rects = (DFBRectangle*) safe_emalloc( num, sizeof(DFBRectangle), 0 ); + + for (i = 0; i < num; i++) { + zval **r; + if (zend_hash_index_find( Z_ARRVAL_P( z ), i, (void**) &r ) != SUCCESS || + Z_TYPE_PP( r ) != IS_OBJECT || Z_OBJCE_PP( r ) != DFBRectangle_ce) { + efree( rects ); + rects = NULL; + break; + } + DIRECTFB_TRANSLATE_DATA( DFBRectangle, *r, &rects[i] ); + } + } + else { + zval **r; + + while (zend_hash_index_find( Z_ARRVAL_P( z ), + num, (void**) &r ) == SUCCESS) { + if (Z_TYPE_PP( r ) != IS_OBJECT || + Z_OBJCE_PP( r ) != DFBRectangle_ce) + break; + rects = erealloc( rects, ++num * sizeof(DFBRectangle) ); + DIRECTFB_TRANSLATE_DATA( DFBRectangle, *r, &rects[num-1] ); + } + } + + if (rects) { + dfb_errno = surface->FillRectangles( surface, rects, num ); + efree( rects ); + } else + dfb_errno = DFB_INVARG; +} + +static +INTERFACE_METHOD( FillSpans ) +{ + IDirectFBSurface *surface; + int y; + DFBSpan *spans = NULL; + int num = 0; + zval *z; + + DIRECTFB_GET_THIS( surface ); + + if (zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, + "la|l", &y, &z, &num ) != SUCCESS) + INVARG(); + + if (num < 0) + num = 0; + + if (num) { + int i; + + spans = (DFBSpan*) safe_emalloc( num, sizeof(DFBSpan), 0 ); + + for (i = 0; i < num; i++) { + zval **s; + if (zend_hash_index_find( Z_ARRVAL_P( z ), i, (void**) &s ) != SUCCESS || + Z_TYPE_PP( s ) != IS_OBJECT || Z_OBJCE_PP( s ) != DFBSpan_ce) { + efree( spans ); + spans = NULL; + break; + } + DIRECTFB_TRANSLATE_DATA( DFBSpan, *s, &spans[i] ); + } + + } else { + zval **s; + + while (zend_hash_index_find( Z_ARRVAL_P( z ), + num, (void**) &s ) == SUCCESS) { + if (Z_TYPE_PP( s ) != IS_OBJECT || + Z_OBJCE_PP( s ) != DFBSpan_ce) + break; + spans = erealloc( spans, ++num * sizeof(DFBSpan) ); + DIRECTFB_TRANSLATE_DATA( DFBSpan, *s, &spans[num-1] ); + } + } + + if (spans) { + dfb_errno = surface->FillSpans( surface, y, spans, num ); + efree( spans ); + } else + dfb_errno = DFB_INVARG; +} + +static INTERFACE_METHOD( SetFont ) { IDirectFBSurface *surface; @@ -1002,6 +1075,21 @@ DIRECTFB_RESULT(); } +static +INTERFACE_METHOD( DisableAcceleration ) +{ + IDirectFBSurface *surface; + DFBAccelerationMask mask = DFXL_NONE; + + DIRECTFB_GET_THIS( surface ); + + if (zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, + "|l", &mask ) != SUCCESS) + INVARG(); + + dfb_errno = surface->DisableAcceleration( surface, mask ); +} + INTERFACE_DESTRUCTOR() { IDirectFBSurface *surface = (IDirectFBSurface*) wrp->interface; @@ -1028,6 +1116,7 @@ METHOD( GetAccelerationMask ) METHOD( GetPalette ) METHOD( SetPalette ) + METHOD( SetAlphaRamp ) METHOD( Flip ) METHOD( SetField ) METHOD( Clear ) @@ -1050,15 +1139,17 @@ METHOD( SetDrawingFlags ) METHOD( FillRectangle ) METHOD( DrawRectangle ) - METHOD( FillSpans ) METHOD( DrawLine ) METHOD( DrawLines ) METHOD( FillTriangle ) + METHOD( FillRectangles ) + METHOD( FillSpans ) METHOD( SetFont ) METHOD( GetFont ) METHOD( DrawString ) METHOD( DrawGlyph ) METHOD( GetSubSurface ) METHOD( Dump ) + METHOD( DisableAcceleration ) ) Index: idisplaylayer.c =================================================================== RCS file: /cvsroot/php-directfb/PHP-DirectFB/src/idisplaylayer.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- idisplaylayer.c 2 Jan 2005 16:27:08 -0000 1.4 +++ idisplaylayer.c 6 Mar 2005 11:42:52 -0000 1.5 @@ -78,6 +78,49 @@ } static +INTERFACE_METHOD( GetSourceDescriptions ) +{ + IDirectFBDisplayLayer *layer; + DFBDisplayLayerDescription dsc; + + DIRECTFB_GET_THIS( layer ); + + dfb_errno = layer->GetDescription( layer, &dsc ); + + array_init( return_value ); + + if ((dsc.caps & DLCAPS_SOURCES) && dsc.sources > 0) { + DFBDisplayLayerSourceDescription sdscs[dsc.sources]; + int i; + + memset( &sdscs[0], 0, dsc.sources * sizeof(sdscs[0]) ); + dfb_errno = layer->GetSourceDescriptions( layer, &sdscs[0] ); + + for (i = 0; i < dsc.sources; i++) { + zval *sdsc; + MAKE_STD_ZVAL( sdsc ); + object_init( sdsc ); + add_property_long( sdsc, "source_id", sdscs[i].source_id ); + add_property_string( sdsc, "name", &sdscs[i].name[0], 1 ); + add_index_zval( return_value, i, sdsc ); + } + } +} + +static +INTERFACE_METHOD( GetCurrentOutputField ) +{ + IDirectFBDisplayLayer *layer; + int field = 0; + + DIRECTFB_GET_THIS( layer ); + + dfb_errno = layer->GetCurrentOutputField( layer, &field ); + + RETURN_LONG( field ); +} + +static INTERFACE_METHOD( GetSurface ) { IDirectFBDisplayLayer *layer; @@ -177,6 +220,44 @@ } static +INTERFACE_METHOD( SetScreenPosition ) +{ + IDirectFBDisplayLayer *layer; + int x; + int y; + + DIRECTFB_GET_THIS( layer ); + + if (zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, + "ll", &x, &y ) != SUCCESS) + INVARG(); + + dfb_errno = layer->SetScreenPosition( layer, x, y ); + + DIRECTFB_RESULT(); +} + +static +INTERFACE_METHOD( SetScreenRectangle ) +{ + IDirectFBDisplayLayer *layer; + int x; + int y; + int w; + int h; + + DIRECTFB_GET_THIS( layer ); + + if (zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, + "llll", &x, &y, &w, &h ) != SUCCESS) + INVARG(); + + dfb_errno = layer->SetScreenRectangle( layer, x, y, w, h ); + + DIRECTFB_RESULT(); +} + +static INTERFACE_METHOD( SetSrcColorKey ) { IDirectFBDisplayLayer *layer; @@ -239,19 +320,6 @@ } static -INTERFACE_METHOD( GetCurrentOutputField ) -{ - IDirectFBDisplayLayer *layer; - int field = 0; - - DIRECTFB_GET_THIS( layer ); - - dfb_errno = layer->GetCurrentOutputField( layer, &field ); - - RETURN_LONG( field ); -} - -static INTERFACE_METHOD( SetFieldParity ) { IDirectFBDisplayLayer *layer; @@ -554,36 +622,6 @@ dfb_errno = layer->WaitForSync( layer ); } -static -INTERFACE_METHOD( GetSourceDescriptions ) -{ - IDirectFBDisplayLayer *layer; - DFBDisplayLayerDescription dsc; - - DIRECTFB_GET_THIS( layer ); - - dfb_errno = layer->GetDescription( layer, &dsc ); - - array_init( return_value ); - - if ((dsc.caps & DLCAPS_SOURCES) && dsc.sources > 0) { - DFBDisplayLayerSourceDescription sdscs[dsc.sources]; - int i; - - memset( &sdscs[0], 0, dsc.sources * sizeof(sdscs[0]) ); - dfb_errno = layer->GetSourceDescriptions( layer, &sdscs[0] ); - - for (i = 0; i < dsc.sources; i++) { - zval *sdsc; - MAKE_STD_ZVAL( sdsc ); - object_init( sdsc ); - add_property_long( sdsc, "source_id", sdscs[i].source_id ); - add_property_string( sdsc, "name", &sdscs[i].name[0], 1 ); - add_index_zval( return_value, i, sdsc ); - } - } -} - STANDARD_INTERFACE_DESTRUCTOR() @@ -592,17 +630,20 @@ DIRECTFB_INTERFACE_DEFINITION( IDirectFBDisplayLayer, METHOD( GetID ) METHOD( GetDescription ) + METHOD( GetCurrentOutputField ) + METHOD( GetSourceDescriptions ) METHOD( GetSurface ) METHOD( GetScreen ) METHOD( SetCooperativeLevel ) METHOD( SetOpacity ) METHOD( SetSourceRectangle ) METHOD( SetScreenLocation ) + METHOD( SetScreenPosition ) + METHOD( SetScreenRectangle ) METHOD( SetSrcColorKey ) METHOD( SetDstColorKey ) METHOD( GetLevel ) METHOD( SetLevel ) - METHOD( GetCurrentOutputField ) METHOD( SetFieldParity ) METHOD( GetConfiguration ) METHOD( TestConfiguration ) @@ -621,6 +662,5 @@ METHOD( SetCursorShape ) METHOD( SetCursorOpacity ) METHOD( WaitForSync ) - METHOD( GetSourceDescriptions ) ) Index: iscreen.c =================================================================== RCS file: /cvsroot/php-directfb/PHP-DirectFB/src/iscreen.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- iscreen.c 2 Jan 2005 16:27:08 -0000 1.4 +++ iscreen.c 6 Mar 2005 11:42:52 -0000 1.5 @@ -107,7 +107,10 @@ add_property_long( args[1], "regions", desc.regions ); - + add_property_long( args[1], + "source", + desc.sources ); + if (!ctx[1]) { MAKE_STD_ZVAL( args[2] ); ZVAL_NULL( args[2] ); Index: php_directfb.c =================================================================== RCS file: /cvsroot/php-directfb/PHP-DirectFB/src/php_directfb.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- php_directfb.c 2 Jan 2005 16:27:08 -0000 1.10 +++ php_directfb.c 6 Mar 2005 11:42:52 -0000 1.11 @@ -144,6 +144,11 @@ DIRECTFB_REGISTER_DEF( DSECAPS_MIXER_SEL ); DIRECTFB_REGISTER_DEF( DSECAPS_OUT_SIGNALS ); DIRECTFB_REGISTER_DEF( DSECAPS_SCANMODE ); + DIRECTFB_REGISTER_DEF( DSECAPS_BRIGHTNESS ); + DIRECTFB_REGISTER_DEF( DSECAPS_CONTRAST ); + DIRECTFB_REGISTER_DEF( DSECAPS_HUE ); + DIRECTFB_REGISTER_DEF( DSECAPS_SATURATION ); + DIRECTFB_REGISTER_DEF( DSECAPS_ALL ); /* DFBScreenEncoderType */ DIRECTFB_REGISTER_DEF( DSET_CRTC ); DIRECTFB_REGISTER_DEF( DSET_TV ); @@ -161,6 +166,7 @@ DIRECTFB_REGISTER_DEF( DSECONF_OUT_SIGNALS ); DIRECTFB_REGISTER_DEF( DSECONF_SCANMODE ); DIRECTFB_REGISTER_DEF( DSECONF_TEST_COLOR ); + DIRECTFB_REGISTER_DEF( DSECONF_ADJUSTMENT ); DIRECTFB_REGISTER_DEF( DSECONF_ALL ); /* DFBScreenEncoderTestPicture */ DIRECTFB_REGISTER_DEF( DSETP_OFF ); @@ -226,6 +232,10 @@ DIRECTFB_REGISTER_DEF( DLCAPS_FIELD_PARITY ); DIRECTFB_REGISTER_DEF( DLCAPS_WINDOWS ); DIRECTFB_REGISTER_DEF( DLCAPS_SOURCES ); + DIRECTFB_REGISTER_DEF( DLCAPS_ALPHA_RAMP ); + DIRECTFB_REGISTER_DEF( DLCAPS_PREMULTIPLIED ); + DIRECTFB_REGISTER_DEF( DLCAPS_SCREEN_POSITION ); + DIRECTFB_REGISTER_DEF( DLCAPS_SCREEN_SIZE ); DIRECTFB_REGISTER_DEF( DLCAPS_ALL ); /* DFBDisplayLayerConfigFlags */ DIRECTFB_REGISTER_DEF( DLCONF_WIDTH ); @@ -234,6 +244,7 @@ DIRECTFB_REGISTER_DEF( DLCONF_BUFFERMODE ); DIRECTFB_REGISTER_DEF( DLCONF_OPTIONS ); DIRECTFB_REGISTER_DEF( DLCONF_SOURCE ); + DIRECTFB_REGISTER_DEF( DLCONF_SURFACE_CAPS ); DIRECTFB_REGISTER_DEF( DLCONF_ALL ); /* DFBDisplayLayerBufferMode */ DIRECTFB_REGISTER_DEF( DLBM_FRONTONLY ); @@ -272,6 +283,7 @@ DIRECTFB_REGISTER_DEF( DSCAPS_SEPARATED ); DIRECTFB_REGISTER_DEF( DSCAPS_STATIC_ALLOC ); DIRECTFB_REGISTER_DEF( DSCAPS_TRIPLE ); + DIRECTFB_REGISTER_DEF( DSCAPS_PREMULTIPLIED ); DIRECTFB_REGISTER_DEF( DSCAPS_DEPTH ); DIRECTFB_REGISTER_DEF( DSCAPS_FLIPPING ); /* DFBSurfacePixelFormat */ @@ -292,6 +304,9 @@ DIRECTFB_REGISTER_DEF( DSPF_A1 ); DIRECTFB_REGISTER_DEF( DSPF_NV12 ); DIRECTFB_REGISTER_DEF( DSPF_NV16 ); + DIRECTFB_REGISTER_DEF( DSPF_ARGB2554 ); + DIRECTFB_REGISTER_DEF( DSPF_ARGB4444 ); + DIRECTFB_REGISTER_DEF( DSPF_NV21 ); /* DFBSurfaceFlipFlags */ DIRECTFB_REGISTER_DEF( DSFLIP_WAIT ); DIRECTFB_REGISTER_DEF( DSFLIP_BLIT ); |