gecko/gfx/thebes/gfxQPainterSurface.cpp
Nicholas Nethercote 6aeed47e98 Bug 1209812 (part 1) - Remove casts between cairo_format_t and gfxImageFormat. r=nical.
cairo_format_t and gfxImageFormat have their equivalent constants in the same
order, so you can just cast between them, which is kind of nasty.

This patch replaces all such casts with explicit conversions via calls to new
conversion functions. These functions will be removed in a subsequent patch.
2015-09-28 21:11:52 -07:00

79 lines
2.1 KiB
C++

/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include <assert.h>
#include "cairo-features.h"
#ifdef CAIRO_HAS_QT_SURFACE
#include "cairo-qt.h"
#include "gfxQPainterSurface.h"
gfxQPainterSurface::gfxQPainterSurface(QPainter *painter)
{
cairo_surface_t *csurf = cairo_qt_surface_create (painter);
mPainter = painter;
Init (csurf);
}
gfxQPainterSurface::gfxQPainterSurface(const mozilla::gfx::IntSize& size, gfxImageFormat format)
{
cairo_format_t cformat = gfxImageFormatToCairoFormat(format);
cairo_surface_t *csurf =
cairo_qt_surface_create_with_qimage(cformat, size.width, size.height);
mPainter = cairo_qt_surface_get_qpainter (csurf);
Init (csurf);
}
gfxQPainterSurface::gfxQPainterSurface(const mozilla::gfx::IntSize& size, gfxContentType content)
{
cairo_surface_t *csurf = cairo_qt_surface_create_with_qpixmap ((cairo_content_t) content,
size.width,
size.height);
mPainter = cairo_qt_surface_get_qpainter (csurf);
Init (csurf);
}
gfxQPainterSurface::gfxQPainterSurface(cairo_surface_t *csurf)
{
mPainter = cairo_qt_surface_get_qpainter (csurf);
Init(csurf, true);
}
gfxQPainterSurface::~gfxQPainterSurface()
{
}
QImage *
gfxQPainterSurface::GetQImage()
{
if (!mSurfaceValid)
return nullptr;
return cairo_qt_surface_get_qimage(CairoSurface());
}
already_AddRefed<gfxImageSurface>
gfxQPainterSurface::GetAsImageSurface()
{
if (!mSurfaceValid)
return nullptr;
cairo_surface_t *isurf = cairo_qt_surface_get_image(CairoSurface());
if (!isurf)
return nullptr;
assert(cairo_surface_get_type(isurf) == CAIRO_SURFACE_TYPE_IMAGE);
RefPtr<gfxImageSurface> asurf = new gfxImageSurface(isurf);
asurf->SetOpaqueRect(GetOpaqueRect());
return asurf.forget();
}
#endif