forked from mirrors/gecko-dev
		
	 126bd9e1a4
			
		
	
	
		126bd9e1a4
		
	
	
	
	
		
			
			This patch was generated automatically by the "modeline.py" script, available here: https://github.com/amccreight/moz-source-tools/blob/master/modeline.py For every file that is modified in this patch, the changes are as follows: (1) The patch changes the file to use the exact C++ mode lines from the Mozilla coding style guide, available here: https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line (2) The patch deletes any blank lines between the mode line & the MPL boilerplate comment. (3) If the file previously had the mode lines and MPL boilerplate in a single contiguous C++ comment, then the patch splits them into separate C++ comments, to match the boilerplate in the coding style. MozReview-Commit-ID: 77D61xpSmIl --HG-- extra : rebase_source : c6162fa3cf539a07177a19838324bf368faa162b
		
			
				
	
	
		
			148 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
	
		
			5.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_DATASURFACEHELPERS_H
 | |
| #define _MOZILLA_GFX_DATASURFACEHELPERS_H
 | |
| 
 | |
| #include "2D.h"
 | |
| 
 | |
| #include "mozilla/UniquePtr.h"
 | |
| 
 | |
| namespace mozilla {
 | |
| namespace gfx {
 | |
| 
 | |
| int32_t
 | |
| StrideForFormatAndWidth(SurfaceFormat aFormat, int32_t aWidth);
 | |
| 
 | |
| /**
 | |
|  * Create a DataSourceSurface and init the surface with the |aData|. The stride
 | |
|  * of this source surface might be different from the input data's |aDataStride|.
 | |
|  * System will try to use the optimal one.
 | |
|  */
 | |
| already_AddRefed<DataSourceSurface>
 | |
| CreateDataSourceSurfaceFromData(const IntSize& aSize,
 | |
|                                 SurfaceFormat aFormat,
 | |
|                                 const uint8_t* aData,
 | |
|                                 int32_t aDataStride);
 | |
| 
 | |
| /**
 | |
|  * Similar to CreateDataSourceSurfaceFromData(), but could setup the stride for
 | |
|  * this surface.
 | |
|  */
 | |
| already_AddRefed<DataSourceSurface>
 | |
| CreateDataSourceSurfaceWithStrideFromData(const IntSize &aSize,
 | |
|                                           SurfaceFormat aFormat,
 | |
|                                           int32_t aStride,
 | |
|                                           const uint8_t* aData,
 | |
|                                           int32_t aDataStride);
 | |
| 
 | |
| /**
 | |
|  * Copy the pixel data from aSrc and pack it into aDst. aSrcSize, aSrcStride
 | |
|  * and aBytesPerPixel give the size, stride and bytes per pixel for aSrc's
 | |
|  * surface. Callers are responsible for making sure that aDst is big enough to
 | |
|  * contain |aSrcSize.width * aSrcSize.height * aBytesPerPixel| bytes.
 | |
|  */
 | |
| void
 | |
| CopySurfaceDataToPackedArray(uint8_t* aSrc, uint8_t* aDst, IntSize aSrcSize,
 | |
|                              int32_t aSrcStride, int32_t aBytesPerPixel);
 | |
| 
 | |
| /**
 | |
|  * Convert aSurface to a packed buffer in BGRA format.
 | |
|  */
 | |
| UniquePtr<uint8_t[]>
 | |
| SurfaceToPackedBGRA(DataSourceSurface *aSurface);
 | |
| 
 | |
| /**
 | |
|  * Convert aSurface to a packed buffer in BGR format. The pixel data is
 | |
|  * returned in a buffer allocated with new uint8_t[]. The caller then has
 | |
|  * ownership of the buffer and is responsible for delete[]'ing it.
 | |
|  *
 | |
|  * This function is currently only intended for use with surfaces of format
 | |
|  * SurfaceFormat::B8G8R8X8 since the X components of the pixel data (if any)
 | |
|  * are simply dropped (no attempt is made to un-pre-multiply alpha from the
 | |
|  * color components).
 | |
|  */
 | |
| uint8_t*
 | |
| SurfaceToPackedBGR(DataSourceSurface *aSurface);
 | |
| 
 | |
| /**
 | |
|  * Clears all the bytes in a DataSourceSurface's data array to zero (so to
 | |
|  * transparent black for SurfaceFormat::B8G8R8A8, for example).
 | |
|  * Note that DataSourceSurfaces can be initialized to zero, which is
 | |
|  * more efficient than zeroing the surface after initialization.
 | |
|  */
 | |
| void
 | |
| ClearDataSourceSurface(DataSourceSurface *aSurface);
 | |
| 
 | |
| /**
 | |
|  * Multiplies aStride and aHeight and makes sure the result is limited to
 | |
|  * something sane. To keep things consistent, this should always be used
 | |
|  * wherever we allocate a buffer based on surface stride and height.
 | |
|  *
 | |
|  * @param aExtra Optional argument to specify an additional number of trailing
 | |
|  *   bytes (useful for creating intermediate surfaces for filters, for
 | |
|  *   example).
 | |
|  *
 | |
|  * @return The result of the multiplication if it is acceptable, or else zero.
 | |
|  */
 | |
| size_t
 | |
| BufferSizeFromStrideAndHeight(int32_t aStride,
 | |
|                               int32_t aHeight,
 | |
|                               int32_t aExtraBytes = 0);
 | |
| 
 | |
| /**
 | |
|  * Multiplies aWidth, aHeight, aDepth and makes sure the result is limited to
 | |
|  * something sane. To keep things consistent, this should always be used
 | |
|  * wherever we allocate a buffer based on surface dimensions.
 | |
|  *
 | |
|  * @param aExtra Optional argument to specify an additional number of trailing
 | |
|  *   bytes (useful for creating intermediate surfaces for filters, for
 | |
|  *   example).
 | |
|  *
 | |
|  * @return The result of the multiplication if it is acceptable, or else zero.
 | |
|  */
 | |
| size_t
 | |
| BufferSizeFromDimensions(int32_t aWidth,
 | |
|                          int32_t aHeight,
 | |
|                          int32_t aDepth,
 | |
|                          int32_t aExtraBytes = 0);
 | |
| /**
 | |
|  * Copy aSrcRect from aSrc to aDest starting at aDestPoint.
 | |
|  * @returns false if the copy is not successful or the aSrc's size is empty.
 | |
|  */
 | |
| bool
 | |
| CopyRect(DataSourceSurface* aSrc, DataSourceSurface* aDest,
 | |
|          IntRect aSrcRect, IntPoint aDestPoint);
 | |
| 
 | |
| /**
 | |
|  * Create a non aliasing copy of aSource. This creates a new DataSourceSurface
 | |
|  * using the factory and copies the bits.
 | |
|  *
 | |
|  * @return a dss allocated by Factory that contains a copy a aSource.
 | |
|  */
 | |
| already_AddRefed<DataSourceSurface>
 | |
| CreateDataSourceSurfaceByCloning(DataSourceSurface* aSource);
 | |
| 
 | |
| /**
 | |
|  * Return the byte at aPoint.
 | |
|  */
 | |
| uint8_t*
 | |
| DataAtOffset(DataSourceSurface* aSurface,
 | |
|              const DataSourceSurface::MappedSurface* aMap,
 | |
|              IntPoint aPoint);
 | |
| 
 | |
| /**
 | |
|  * Check if aPoint is contained by the surface.
 | |
|  *
 | |
|  * @returns true if and only if aPoint is inside the surface.
 | |
|  */
 | |
| bool
 | |
| SurfaceContainsPoint(SourceSurface* aSurface, const IntPoint& aPoint);
 | |
| 
 | |
| } // namespace gfx
 | |
| } // namespace mozilla
 | |
| 
 | |
| #endif // _MOZILLA_GFX_DATASURFACEHELPERS_H
 |