static DFBResult IDirectFBImageProvider_ANDROID_GetSurfaceDescription( IDirectFBImageProvider *thiz, DFBSurfaceDescription *desc ) { DFBResult ret; DFBSurfacePixelFormat primary_format = dfb_primary_layer_pixelformat(); DIRECT_INTERFACE_GET_DATA (IDirectFBImageProvider_ANDROID) if (!desc) return DFB_INVARG; ret = decodeImage( data ); if (ret) return ret; desc->flags = DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT; if (data->alpha) desc->pixelformat = DFB_PIXELFORMAT_HAS_ALPHA(primary_format) ? primary_format : DSPF_ARGB; //desc->pixelformat = DSPF_ABGR; else desc->pixelformat = primary_format; desc->width = data->width; desc->height = data->height; D_DEBUG_AT( imageProviderANDROID, "GetSurfaceDescription: width=%d height=%d pitch=%d has_alpha=%d pixelformat=%s/%s\n", data->width, data->height, data->pitch, data->alpha, dfb_pixelformat_name(data->format), dfb_pixelformat_name(desc->pixelformat) ); return DFB_OK; }
static DFBResult besSetRegion( CoreLayer *layer, void *driver_data, void *layer_data, void *region_data, CoreLayerRegionConfig *config, CoreLayerRegionConfigFlags updated, CoreSurface *surface, CorePalette *palette, CoreSurfaceBufferLock *lock ) { MatroxDriverData *mdrv = (MatroxDriverData*) driver_data; MatroxBesLayerData *mbes = (MatroxBesLayerData*) layer_data; volatile u8 *mmio = mdrv->mmio_base; /* remember configuration */ mbes->config = *config; /* set main configuration */ if (updated & (CLRCF_WIDTH | CLRCF_HEIGHT | CLRCF_FORMAT | CLRCF_OPTIONS | CLRCF_DEST | CLRCF_OPACITY | CLRCF_SOURCE)) { bes_calc_regs( mdrv, mbes, config, surface, lock ); bes_set_regs( mdrv, mbes, true ); } /* set color key */ if (updated & CLRCF_DSTKEY) { DFBColorKey key = config->dst_key; switch (dfb_primary_layer_pixelformat()) { case DSPF_RGB555: case DSPF_ARGB1555: key.r >>= 3; key.g >>= 3; key.b >>= 3; break; case DSPF_RGB16: key.r >>= 3; key.g >>= 2; key.b >>= 3; break; default: ; } mga_out_dac( mmio, XCOLKEY0RED, key.r ); mga_out_dac( mmio, XCOLKEY0GREEN, key.g ); mga_out_dac( mmio, XCOLKEY0BLUE, key.b ); }
static DFBResult IDirectFBImageProvider_GIF_GetSurfaceDescription( IDirectFBImageProvider *thiz, DFBSurfaceDescription *dsc ) { DIRECT_INTERFACE_GET_DATA (IDirectFBImageProvider_GIF) dsc->flags = DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT; dsc->width = data->image_width; dsc->height = data->image_height; dsc->pixelformat = dfb_primary_layer_pixelformat(); return DFB_OK; }
return DFB_OK; } static DFBResult IDirectFBImageProvider_JPEG2000_GetSurfaceDescription( IDirectFBImageProvider *thiz, DFBSurfaceDescription *desc ) { DIRECT_INTERFACE_GET_DATA( IDirectFBImageProvider_JPEG2000 ) if (!desc) return DFB_INVARG; desc->flags = DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT; desc->width = jas_image_width(data->image); desc->height = jas_image_height(data->image); desc->pixelformat = dfb_primary_layer_pixelformat(); return DFB_OK; } static DFBResult IDirectFBImageProvider_JPEG2000_GetImageDescription( IDirectFBImageProvider *thiz, DFBImageDescription *desc ) { DIRECT_INTERFACE_GET_DATA( IDirectFBImageProvider_JPEG2000 ) if (!desc) return DFB_INVARG; desc->caps = DICAPS_NONE;