gfx2DGlue.h (3473B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef GFX_2D_GLUE_H 8 #define GFX_2D_GLUE_H 9 10 #include "gfxMatrix.h" 11 #include "gfxPoint.h" 12 #include "gfxRect.h" 13 #include "gfxTypes.h" 14 #include "mozilla/gfx/Matrix.h" 15 #include "mozilla/gfx/Point.h" 16 #include "mozilla/gfx/Rect.h" 17 #include "mozilla/gfx/Types.h" 18 19 namespace mozilla { 20 namespace gfx { 21 22 inline Rect ToRect(const gfxRect& aRect) { 23 return Rect(Float(aRect.X()), Float(aRect.Y()), Float(aRect.Width()), 24 Float(aRect.Height())); 25 } 26 27 inline RectDouble ToRectDouble(const gfxRect& aRect) { 28 return RectDouble(aRect.X(), aRect.Y(), aRect.Width(), aRect.Height()); 29 } 30 31 inline Matrix ToMatrix(const gfxMatrix& aMatrix) { 32 return Matrix(Float(aMatrix._11), Float(aMatrix._12), Float(aMatrix._21), 33 Float(aMatrix._22), Float(aMatrix._31), Float(aMatrix._32)); 34 } 35 36 inline gfxMatrix ThebesMatrix(const Matrix& aMatrix) { 37 return gfxMatrix(aMatrix._11, aMatrix._12, aMatrix._21, aMatrix._22, 38 aMatrix._31, aMatrix._32); 39 } 40 41 inline Point ToPoint(const gfxPoint& aPoint) { 42 return Point(Float(aPoint.x), Float(aPoint.y)); 43 } 44 45 inline Size ToSize(const gfxSize& aSize) { 46 return Size(Float(aSize.width), Float(aSize.height)); 47 } 48 49 inline gfxPoint ThebesPoint(const Point& aPoint) { 50 return gfxPoint(aPoint.x, aPoint.y); 51 } 52 53 inline gfxSize ThebesSize(const Size& aSize) { 54 return gfxSize(aSize.width, aSize.height); 55 } 56 57 inline gfxRect ThebesRect(const Rect& aRect) { 58 return gfxRect(aRect.X(), aRect.Y(), aRect.Width(), aRect.Height()); 59 } 60 61 inline gfxRect ThebesRect(const IntRect& aRect) { 62 return gfxRect(aRect.X(), aRect.Y(), aRect.Width(), aRect.Height()); 63 } 64 65 inline gfxRect ThebesRect(const RectDouble& aRect) { 66 return gfxRect(aRect.X(), aRect.Y(), aRect.Width(), aRect.Height()); 67 } 68 69 inline gfxImageFormat SurfaceFormatToImageFormat(SurfaceFormat aFormat) { 70 switch (aFormat) { 71 case SurfaceFormat::B8G8R8A8: 72 return SurfaceFormat::A8R8G8B8_UINT32; 73 case SurfaceFormat::B8G8R8X8: 74 return SurfaceFormat::X8R8G8B8_UINT32; 75 case SurfaceFormat::R5G6B5_UINT16: 76 return SurfaceFormat::R5G6B5_UINT16; 77 case SurfaceFormat::A8: 78 return SurfaceFormat::A8; 79 default: 80 return SurfaceFormat::UNKNOWN; 81 } 82 } 83 84 inline SurfaceFormat ImageFormatToSurfaceFormat(gfxImageFormat aFormat) { 85 switch (aFormat) { 86 case SurfaceFormat::A8R8G8B8_UINT32: 87 return SurfaceFormat::B8G8R8A8; 88 case SurfaceFormat::X8R8G8B8_UINT32: 89 return SurfaceFormat::B8G8R8X8; 90 case SurfaceFormat::R5G6B5_UINT16: 91 return SurfaceFormat::R5G6B5_UINT16; 92 case SurfaceFormat::A8: 93 return SurfaceFormat::A8; 94 default: 95 case SurfaceFormat::UNKNOWN: 96 return SurfaceFormat::B8G8R8A8; 97 } 98 } 99 100 inline gfxContentType ContentForFormat(const SurfaceFormat& aFormat) { 101 switch (aFormat) { 102 case SurfaceFormat::R5G6B5_UINT16: 103 case SurfaceFormat::B8G8R8X8: 104 case SurfaceFormat::R8G8B8X8: 105 return gfxContentType::COLOR; 106 case SurfaceFormat::A8: 107 return gfxContentType::ALPHA; 108 case SurfaceFormat::B8G8R8A8: 109 case SurfaceFormat::R8G8B8A8: 110 default: 111 return gfxContentType::COLOR_ALPHA; 112 } 113 } 114 115 } // namespace gfx 116 } // namespace mozilla 117 118 #endif