// cairo_public cairo_surface_t * // cairo_quartz_surface_create (cairo_format_t format, // unsigned int width, // unsigned int height); static int l_cairo_quartz_surface_create(lua_State* L) { cairo_format_t format = (cairo_format_t) luaL_checkinteger(L, 1); unsigned int width = luaL_checknumber(L, 2); unsigned int height = luaL_checknumber(L, 3); cairo_surface_t *v = cairo_quartz_surface_create (format, width, height); lua_pushlightuserdata(L, v); return 1; }
static cairo_surface_t * _cairo_boilerplate_quartz_create_surface (const char *name, cairo_content_t content, double width, double height, double max_width, double max_height, cairo_boilerplate_mode_t mode, void **closure) { cairo_format_t format; format = cairo_boilerplate_format_from_content (content); *closure = NULL; return cairo_quartz_surface_create (format, width, height); }
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(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)); } }
static cairo_surface_t * create_source_surface (int size) { return cairo_quartz_surface_create (CAIRO_FORMAT_ARGB32, size, size); }
static VALUE cr_quartz_surface_initialize (int argc, VALUE *argv, VALUE self) { id objc_object = nil; CGContextRef context; unsigned int width, height; cairo_surface_t *surface = NULL; cairo_format_t format = CAIRO_FORMAT_ARGB32; VALUE arg1, arg2, arg3, rb_width, rb_height; static VALUE rb_cOSXCGContextRef = Qnil; rb_scan_args (argc, argv, "21", &arg1, &arg2, &arg3); if (argc == 2) { rb_width = arg1; rb_height = arg2; } else { switch (TYPE (arg1)) { case T_NIL: break; case T_STRING: case T_SYMBOL: case T_FIXNUM: format = RVAL2CRFORMAT (arg1); break; default: if (NIL_P (rb_cOSXCGContextRef)) rb_cOSXCGContextRef = rb_const_get (rb_const_get (rb_cObject, rb_intern ("OSX")), rb_intern ("CGContextRef")); if (RTEST (rb_obj_is_kind_of (arg1, rb_cOSXCGContextRef))) rbobj_to_nsobj (arg1, &objc_object); else rb_raise (rb_eArgError, "invalid argument (expect " "(width, height), " "(format, width, height) or " "(cg_context, width, height)): %s", inspect (rb_ary_new3 (3, arg1, arg2, arg3))); break; } rb_width = arg2; rb_height = arg3; } width = NUM2UINT (rb_width); height = NUM2UINT (rb_height); if (objc_object == nil) { surface = cairo_quartz_surface_create (format, width, height); } else { context = (CGContextRef)objc_object; surface = cairo_quartz_surface_create_for_cg_context (context, width, height); } cr_surface_check_status (surface); DATA_PTR (self) = surface; if (rb_block_given_p ()) yield_and_finish (self); return Qnil; }