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"
10 gfxTeeSurface::gfxTeeSurface(cairo_surface_t
*csurf
)
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());
21 for (int32_t i
= 1; i
< aSurfaceCount
; ++i
) {
22 cairo_tee_surface_add(csurf
, aSurfaces
[i
]->CairoSurface());
27 gfxTeeSurface::GetSize() const
29 nsRefPtr
<gfxASurface
> master
= Wrap(cairo_tee_surface_index(mSurface
, 0));
30 return master
->GetSize();
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
))
40 nsRefPtr
<gfxASurface
> *elem
= aSurfaces
->AppendElement();