|
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/. */ |
|
5 |
|
6 #ifndef GFX_TEESURFACE_H |
|
7 #define GFX_TEESURFACE_H |
|
8 |
|
9 #include "gfxASurface.h" |
|
10 #include "nsTArrayForwardDeclare.h" |
|
11 #include "nsSize.h" |
|
12 |
|
13 template<class T> class nsRefPtr; |
|
14 |
|
15 /** |
|
16 * Wraps a cairo_tee_surface. The first surface in the surface list is the |
|
17 * primary surface, which answers all surface queries (including size). |
|
18 * All drawing is performed on all the surfaces. |
|
19 * |
|
20 * The device transform of a tee surface is applied before drawing to the |
|
21 * underlying surfaces --- which also applies the device transforms of the |
|
22 * underlying surfaces. |
|
23 */ |
|
24 class gfxTeeSurface : public gfxASurface { |
|
25 public: |
|
26 gfxTeeSurface(cairo_surface_t *csurf); |
|
27 gfxTeeSurface(gfxASurface **aSurfaces, int32_t aSurfaceCount); |
|
28 |
|
29 virtual const gfxIntSize GetSize() const; |
|
30 |
|
31 /** |
|
32 * Returns the list of underlying surfaces. |
|
33 */ |
|
34 void GetSurfaces(nsTArray<nsRefPtr<gfxASurface> > *aSurfaces); |
|
35 }; |
|
36 |
|
37 #endif /* GFX_TEESURFACE_H */ |