forked from mirrors/gecko-dev
		
	 37efe4d0e6
			
		
	
	
		37efe4d0e6
		
	
	
	
	
		
			
			MozReview-Commit-ID: DCPTnyBooIe --HG-- extra : rebase_source : cfec2d96faeb11656d86d760a34e0a04cacddb13 extra : intermediate-source : 6176724d63788b0fe8caa3f91607c2d93dbaa7ec extra : source : eebbb0600447f9b64aae3bcd47b4be66c02a51ea
		
			
				
	
	
		
			73 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 | |
| /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 | |
| /* 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/. */
 | |
| 
 | |
| #ifndef _MOZILLA_GFX_OP_SOURCESURFACE_CAIRO_H
 | |
| #define _MOZILLA_GFX_OP_SOURCESURFACE_CAIRO_H
 | |
| 
 | |
| #include "2D.h"
 | |
| 
 | |
| namespace mozilla {
 | |
| namespace gfx {
 | |
| 
 | |
| class DrawTargetCairo;
 | |
| 
 | |
| class SourceSurfaceCairo : public SourceSurface
 | |
| {
 | |
| public:
 | |
|   MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(SourceSurfaceCairo, override)
 | |
| 
 | |
|   // Create a SourceSurfaceCairo. The surface will not be copied, but simply
 | |
|   // referenced.
 | |
|   // If aDrawTarget is non-nullptr, it is assumed that this is a snapshot source
 | |
|   // surface, and we'll call DrawTargetCairo::RemoveSnapshot(this) on it when
 | |
|   // we're destroyed.
 | |
|   SourceSurfaceCairo(cairo_surface_t* aSurface, const IntSize& aSize,
 | |
|                      const SurfaceFormat& aFormat,
 | |
|                      DrawTargetCairo* aDrawTarget = nullptr);
 | |
|   virtual ~SourceSurfaceCairo();
 | |
| 
 | |
|   virtual SurfaceType GetType() const override { return SurfaceType::CAIRO; }
 | |
|   virtual IntSize GetSize() const override;
 | |
|   virtual SurfaceFormat GetFormat() const override;
 | |
|   virtual already_AddRefed<DataSourceSurface> GetDataSurface() override;
 | |
| 
 | |
|   cairo_surface_t* GetSurface() const;
 | |
| 
 | |
| private: // methods
 | |
|   friend class DrawTargetCairo;
 | |
|   void DrawTargetWillChange();
 | |
| 
 | |
| private: // data
 | |
|   IntSize mSize;
 | |
|   SurfaceFormat mFormat;
 | |
|   cairo_surface_t* mSurface;
 | |
|   DrawTargetCairo* mDrawTarget;
 | |
| };
 | |
| 
 | |
| class DataSourceSurfaceCairo : public DataSourceSurface
 | |
| {
 | |
| public:
 | |
|   MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(DataSourceSurfaceCairo, override)
 | |
| 
 | |
|   explicit DataSourceSurfaceCairo(cairo_surface_t* imageSurf);
 | |
|   virtual ~DataSourceSurfaceCairo();
 | |
|   virtual unsigned char *GetData() override;
 | |
|   virtual int32_t Stride() override;
 | |
| 
 | |
|   virtual SurfaceType GetType() const override { return SurfaceType::CAIRO_IMAGE; }
 | |
|   virtual IntSize GetSize() const override;
 | |
|   virtual SurfaceFormat GetFormat() const override;
 | |
| 
 | |
|   cairo_surface_t* GetSurface() const;
 | |
| 
 | |
| private:
 | |
|   cairo_surface_t* mImageSurface;
 | |
| };
 | |
| 
 | |
| } // namespace gfx
 | |
| } // namespace mozilla
 | |
| 
 | |
| #endif // _MOZILLA_GFX_OP_SOURCESURFACE_CAIRO_H
 |