gfxWindowsSurface::gfxWindowsSurface(HDC dc, const mozilla::gfx::IntSize& realSize, gfxImageFormat imageFormat) : mOwnsDC(false), mForPrinting(false), mWnd(nullptr) { mozilla::gfx::IntSize size(realSize); if (!CheckSurfaceSize(size)) MakeInvalid(size); cairo_format_t cformat = gfxImageFormatToCairoFormat(imageFormat); cairo_surface_t *surf = cairo_win32_surface_create_with_ddb(dc, cformat, size.width, size.height); Init(surf); if (mSurfaceValid) { // DDBs will generally only use 3 bytes per pixel when RGB24 int bytesPerPixel = ((imageFormat == gfxImageFormat::RGB24) ? 3 : 4); RecordMemoryUsed(size.width * size.height * bytesPerPixel + sizeof(gfxWindowsSurface)); } if (CairoStatus() == 0) mDC = cairo_win32_surface_get_dc(CairoSurface()); else mDC = nullptr; }
gfxQuartzSurface::gfxQuartzSurface(unsigned char *data, const gfxSize& desiredSize, long stride, gfxImageFormat format, bool aForPrinting) : mCGContext(nullptr), mSize(desiredSize), mForPrinting(aForPrinting) { gfxIntSize size((unsigned int) floor(desiredSize.width), (unsigned int) floor(desiredSize.height)); if (!CheckSurfaceSize(size)) MakeInvalid(); unsigned int width = static_cast<unsigned int>(mSize.width); unsigned int height = static_cast<unsigned int>(mSize.height); cairo_surface_t *surf = cairo_quartz_surface_create_for_data (data, (cairo_format_t) format, width, height, stride); mCGContext = cairo_quartz_surface_get_cg_context (surf); CGContextRetain(mCGContext); Init(surf); if (mSurfaceValid) { RecordMemoryUsed(mSize.height * stride + sizeof(gfxQuartzSurface)); } }
gfxWindowsSurface::gfxWindowsSurface(const gfxIntSize& realSize, gfxImageFormat imageFormat) : mOwnsDC(false), mForPrinting(false), mWnd(nullptr) { gfxIntSize size(realSize); if (!CheckSurfaceSize(size)) MakeInvalid(size); cairo_surface_t *surf = cairo_win32_surface_create_with_dib((cairo_format_t)(int)imageFormat, size.width, size.height); Init(surf); if (CairoStatus() == CAIRO_STATUS_SUCCESS) { mDC = cairo_win32_surface_get_dc(CairoSurface()); RecordMemoryUsed(size.width * size.height * 4 + sizeof(gfxWindowsSurface)); } else { mDC = nullptr; } }
gfxQuartzSurface::gfxQuartzSurface(CGContextRef context, const gfxIntSize& size, bool aForPrinting) : mCGContext(context), mSize(size), mForPrinting(aForPrinting) { if (!CheckSurfaceSize(size)) MakeInvalid(); unsigned int width = static_cast<unsigned int>(mSize.width); unsigned int height = static_cast<unsigned int>(mSize.height); cairo_surface_t *surf = cairo_quartz_surface_create_for_cg_context(context, width, height); CGContextRetain(mCGContext); Init(surf); }
gfxWindowsSurface::gfxWindowsSurface(const mozilla::gfx::IntSize& realSize, gfxImageFormat imageFormat) : mOwnsDC(false), mWnd(nullptr) { mozilla::gfx::IntSize size(realSize); if (!mozilla::gfx::Factory::CheckSurfaceSize(size)) MakeInvalid(size); cairo_format_t cformat = GfxFormatToCairoFormat(imageFormat); cairo_surface_t *surf = cairo_win32_surface_create_with_dib(cformat, size.width, size.height); Init(surf); if (CairoStatus() == CAIRO_STATUS_SUCCESS) { mDC = cairo_win32_surface_get_dc(CairoSurface()); RecordMemoryUsed(size.width * size.height * 4 + sizeof(gfxWindowsSurface)); } else { mDC = nullptr; } }
gfxQuartzSurface::gfxQuartzSurface(CGContextRef context, const mozilla::gfx::IntSize& size) : mCGContext(context), mSize(size) { if (!CheckSurfaceSize(size)) MakeInvalid(); unsigned int width = static_cast<unsigned int>(mSize.width); unsigned int height = static_cast<unsigned int>(mSize.height); cairo_surface_t *surf = cairo_quartz_surface_create_for_cg_context(context, width, height); CGContextRetain(mCGContext); Init(surf); if (mSurfaceValid) { RecordMemoryUsed(mSize.height * 4 + sizeof(gfxQuartzSurface)); } }
gfxQuartzSurface::gfxQuartzSurface(const gfxSize& desiredSize, gfxImageFormat format, bool aForPrinting) : mCGContext(NULL), mSize(desiredSize), mForPrinting(aForPrinting) { gfxIntSize size((unsigned int) floor(desiredSize.width), (unsigned int) floor(desiredSize.height)); if (!CheckSurfaceSize(size)) MakeInvalid(); unsigned int width = static_cast<unsigned int>(mSize.width); unsigned int height = static_cast<unsigned int>(mSize.height); cairo_surface_t *surf = cairo_quartz_surface_create ((cairo_format_t) format, width, height); mCGContext = cairo_quartz_surface_get_cg_context (surf); CGContextRetain(mCGContext); Init(surf); }
gfxQuartzSurface::gfxQuartzSurface(unsigned char *data, const gfxIntSize& aSize, long stride, gfxImageFormat format, bool aForPrinting) : mCGContext(nullptr), mSize(aSize.width, aSize.height), mForPrinting(aForPrinting) { if (!CheckSurfaceSize(aSize)) MakeInvalid(); cairo_surface_t *surf = cairo_quartz_surface_create_for_data (data, (cairo_format_t) format, aSize.width, aSize.height, stride); mCGContext = cairo_quartz_surface_get_cg_context (surf); CGContextRetain(mCGContext); Init(surf); if (mSurfaceValid) { RecordMemoryUsed(mSize.height * stride + sizeof(gfxQuartzSurface)); } }
gfxQuartzSurface::gfxQuartzSurface(unsigned char *data, const mozilla::gfx::IntSize& aSize, long stride, gfxImageFormat format) : mCGContext(nullptr), mSize(aSize.width, aSize.height) { if (!CheckSurfaceSize(aSize)) MakeInvalid(); cairo_format_t cformat = GfxFormatToCairoFormat(format); cairo_surface_t *surf = cairo_quartz_surface_create_for_data (data, cformat, aSize.width, aSize.height, stride); mCGContext = cairo_quartz_surface_get_cg_context (surf); CGContextRetain(mCGContext); Init(surf); if (mSurfaceValid) { RecordMemoryUsed(mSize.height * stride + sizeof(gfxQuartzSurface)); } }
gfxQuartzSurface::gfxQuartzSurface(const gfxSize& desiredSize, gfxImageFormat format) : mCGContext(nullptr), mSize(desiredSize) { mozilla::gfx::IntSize size((unsigned int) floor(desiredSize.width), (unsigned int) floor(desiredSize.height)); if (!CheckSurfaceSize(size)) MakeInvalid(); unsigned int width = static_cast<unsigned int>(mSize.width); unsigned int height = static_cast<unsigned int>(mSize.height); cairo_format_t cformat = gfxImageFormatToCairoFormat(format); cairo_surface_t *surf = cairo_quartz_surface_create(cformat, width, height); mCGContext = cairo_quartz_surface_get_cg_context (surf); CGContextRetain(mCGContext); Init(surf); if (mSurfaceValid) { RecordMemoryUsed(mSize.height * 4 + sizeof(gfxQuartzSurface)); } }
gfxQuartzSurface::gfxQuartzSurface(CGContextRef context, const gfxSize& desiredSize, bool aForPrinting) : mCGContext(context), mSize(desiredSize), mForPrinting(aForPrinting) { gfxIntSize size((unsigned int) floor(desiredSize.width), (unsigned int) floor(desiredSize.height)); if (!CheckSurfaceSize(size)) MakeInvalid(); unsigned int width = static_cast<unsigned int>(mSize.width); unsigned int height = static_cast<unsigned int>(mSize.height); cairo_surface_t *surf = cairo_quartz_surface_create_for_cg_context(context, width, height); CGContextRetain(mCGContext); Init(surf); if (mSurfaceValid) { RecordMemoryUsed(mSize.height * 4 + sizeof(gfxQuartzSurface)); } }