SkBaseDevice* SkBaseDevice::createCompatibleDevice(SkBitmap::Config config, int width, int height, bool isOpaque) { SkImageInfo info = SkImageInfo::Make(width, height, SkBitmapConfigToColorType(config), isOpaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType); return this->createCompatibleDevice(info); }
void SkDrawBitmap::onEndElement(SkAnimateMaker&) { SkASSERT(width != -1); SkASSERT(height != -1); SkASSERT(rowBytes >= 0); SkColorType colorType = SkBitmapConfigToColorType((SkBitmap::Config)format); fBitmap.setInfo(SkImageInfo::Make(width, height, colorType, kPremul_SkAlphaType), rowBytes); fBitmap.allocPixels(); if (fColorSet) fBitmap.eraseColor(fColor); }
static cairo_skia_surface_t * _cairo_skia_surface_create_internal (SkBitmap::Config config, bool opaque, unsigned char *data, int width, int height, int stride) { cairo_skia_surface_t *surface; pixman_image_t *pixman_image; pixman_format_code_t pixman_format; SkColorType colorType; surface = (cairo_skia_surface_t *) malloc (sizeof (cairo_skia_surface_t)); if (unlikely (surface == NULL)) return (cairo_skia_surface_t *) _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); pixman_format = sk_config_to_pixman_format_code (config, opaque); pixman_image = pixman_image_create_bits (pixman_format, width, height, (uint32_t *) data, stride); if (unlikely (pixman_image == NULL)) { free (surface); return (cairo_skia_surface_t *) _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); } _cairo_surface_init (&surface->image.base, &cairo_skia_surface_backend, NULL, /* device */ _cairo_content_from_pixman_format (pixman_format)); _cairo_image_surface_init (&surface->image, pixman_image, pixman_format); surface->bitmap = new SkBitmap; colorType = SkBitmapConfigToColorType(config); surface->bitmap->setAlphaType (opaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType); surface->bitmap->setInfo (SkImageInfo::Make(width, height, colorType, kPremul_SkAlphaType), surface->image.stride); surface->bitmap->setPixels (surface->image.data); surface->image.base.is_clear = data == NULL; return surface; }
static inline bool surface_to_sk_bitmap (cairo_surface_t *surface, SkBitmap& bitmap) { cairo_image_surface_t *img = (cairo_image_surface_t *) surface; SkBitmap::Config config; SkColorType colorType; bool opaque; if (unlikely (! format_to_sk_config (img->format, config, opaque))) return false; bitmap.reset (); bitmap.setAlphaType (opaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType); colorType = SkBitmapConfigToColorType(config); bitmap.setInfo (SkImageInfo::Make(img->width, img->height, colorType, kPremul_SkAlphaType), img->stride); bitmap.setPixels (img->data); return true; }
// TODO: use colortype in fPrefTable, fDefaultPref so we can stop using SkBitmapConfigToColorType() // SkColorType SkImageDecoder::getPrefColorType(SrcDepth srcDepth, bool srcHasAlpha) const { SkColorType ct = fDefaultPref; if (fUsePrefTable) { // Until we kill or change the PrefTable, we have to go into Config land for a moment. SkBitmap::Config config = SkBitmap::kNo_Config; switch (srcDepth) { case kIndex_SrcDepth: config = srcHasAlpha ? fPrefTable.fPrefFor_8Index_YesAlpha_src : fPrefTable.fPrefFor_8Index_NoAlpha_src; break; case k8BitGray_SrcDepth: config = fPrefTable.fPrefFor_8Gray_src; break; case k32Bit_SrcDepth: config = srcHasAlpha ? fPrefTable.fPrefFor_8bpc_YesAlpha_src : fPrefTable.fPrefFor_8bpc_NoAlpha_src; break; } // now return to SkColorType land ct = SkBitmapConfigToColorType(config); } return ct; }