Bug 835381 - Update libnestegg to 38c83d9d4c0c5c84373aa285bd30094a12d6b6f6. r=kinetik
[gecko.git] / gfx / thebes / gfxTeeSurface.cpp
blobecf49f3d66a908d2b8509d260d8fe4539c6a20f5
1 /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 * This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #include "gfxTeeSurface.h"
8 #include "cairo-tee.h"
10 gfxTeeSurface::gfxTeeSurface(cairo_surface_t *csurf)
12 Init(csurf, true);
15 gfxTeeSurface::gfxTeeSurface(gfxASurface **aSurfaces, int32_t aSurfaceCount)
17 NS_ASSERTION(aSurfaceCount > 0, "Must have a least one surface");
18 cairo_surface_t *csurf = cairo_tee_surface_create(aSurfaces[0]->CairoSurface());
19 Init(csurf, false);
21 for (int32_t i = 1; i < aSurfaceCount; ++i) {
22 cairo_tee_surface_add(csurf, aSurfaces[i]->CairoSurface());
26 const gfxIntSize
27 gfxTeeSurface::GetSize() const
29 nsRefPtr<gfxASurface> master = Wrap(cairo_tee_surface_index(mSurface, 0));
30 return master->GetSize();
33 void
34 gfxTeeSurface::GetSurfaces(nsTArray<nsRefPtr<gfxASurface> >* aSurfaces)
36 for (int32_t i = 0; ; ++i) {
37 cairo_surface_t *csurf = cairo_tee_surface_index(mSurface, i);
38 if (cairo_surface_status(csurf))
39 break;
40 nsRefPtr<gfxASurface> *elem = aSurfaces->AppendElement();
41 if (!elem)
42 return;
43 *elem = Wrap(csurf);