Tue, 06 Jan 2015 21:39:09 +0100
Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.
1 /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
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 #ifndef MOZILLA_GFX_TYPES_H_
7 #define MOZILLA_GFX_TYPES_H_
9 #include "mozilla/NullPtr.h"
10 #include "mozilla/TypedEnum.h"
12 #include <stddef.h>
13 #include <stdint.h>
15 namespace mozilla {
16 namespace gfx {
18 typedef float Float;
20 MOZ_BEGIN_ENUM_CLASS(SurfaceType, int8_t)
21 DATA, /* Data surface - bitmap in memory */
22 D2D1_BITMAP, /* Surface wrapping a ID2D1Bitmap */
23 D2D1_DRAWTARGET, /* Surface made from a D2D draw target */
24 CAIRO, /* Surface wrapping a cairo surface */
25 CAIRO_IMAGE, /* Data surface wrapping a cairo image surface */
26 COREGRAPHICS_IMAGE, /* Surface wrapping a CoreGraphics Image */
27 COREGRAPHICS_CGCONTEXT, /* Surface wrapping a CG context */
28 SKIA, /* Surface wrapping a Skia bitmap */
29 DUAL_DT, /* Snapshot of a dual drawtarget */
30 D2D1_1_IMAGE, /* A D2D 1.1 ID2D1Image SourceSurface */
31 RECORDING /* Surface used for recording */
32 MOZ_END_ENUM_CLASS(SurfaceType)
34 MOZ_BEGIN_ENUM_CLASS(SurfaceFormat, int8_t)
35 B8G8R8A8,
36 B8G8R8X8,
37 R8G8B8A8,
38 R8G8B8X8,
39 R5G6B5,
40 A8,
41 YUV,
42 UNKNOWN
43 MOZ_END_ENUM_CLASS(SurfaceFormat)
45 MOZ_BEGIN_ENUM_CLASS(FilterType, int8_t)
46 BLEND = 0,
47 TRANSFORM,
48 MORPHOLOGY,
49 COLOR_MATRIX,
50 FLOOD,
51 TILE,
52 TABLE_TRANSFER,
53 DISCRETE_TRANSFER,
54 LINEAR_TRANSFER,
55 GAMMA_TRANSFER,
56 CONVOLVE_MATRIX,
57 DISPLACEMENT_MAP,
58 TURBULENCE,
59 ARITHMETIC_COMBINE,
60 COMPOSITE,
61 DIRECTIONAL_BLUR,
62 GAUSSIAN_BLUR,
63 POINT_DIFFUSE,
64 POINT_SPECULAR,
65 SPOT_DIFFUSE,
66 SPOT_SPECULAR,
67 DISTANT_DIFFUSE,
68 DISTANT_SPECULAR,
69 CROP,
70 PREMULTIPLY,
71 UNPREMULTIPLY
72 MOZ_END_ENUM_CLASS(FilterType)
74 MOZ_BEGIN_ENUM_CLASS(BackendType, int8_t)
75 NONE = 0,
76 DIRECT2D,
77 COREGRAPHICS,
78 COREGRAPHICS_ACCELERATED,
79 CAIRO,
80 SKIA,
81 RECORDING,
82 DIRECT2D1_1
83 MOZ_END_ENUM_CLASS(BackendType)
85 MOZ_BEGIN_ENUM_CLASS(FontType, int8_t)
86 DWRITE,
87 GDI,
88 MAC,
89 SKIA,
90 CAIRO,
91 COREGRAPHICS
92 MOZ_END_ENUM_CLASS(FontType)
94 MOZ_BEGIN_ENUM_CLASS(NativeSurfaceType, int8_t)
95 D3D10_TEXTURE,
96 CAIRO_SURFACE,
97 CAIRO_CONTEXT,
98 CGCONTEXT,
99 CGCONTEXT_ACCELERATED,
100 OPENGL_TEXTURE
101 MOZ_END_ENUM_CLASS(NativeSurfaceType)
103 MOZ_BEGIN_ENUM_CLASS(NativeFontType, int8_t)
104 DWRITE_FONT_FACE,
105 GDI_FONT_FACE,
106 MAC_FONT_FACE,
107 SKIA_FONT_FACE,
108 CAIRO_FONT_FACE
109 MOZ_END_ENUM_CLASS(NativeFontType)
111 MOZ_BEGIN_ENUM_CLASS(FontStyle, int8_t)
112 NORMAL,
113 ITALIC,
114 BOLD,
115 BOLD_ITALIC
116 MOZ_END_ENUM_CLASS(FontStyle)
118 MOZ_BEGIN_ENUM_CLASS(FontHinting, int8_t)
119 NONE,
120 LIGHT,
121 NORMAL,
122 FULL
123 MOZ_END_ENUM_CLASS(FontHinting)
125 MOZ_BEGIN_ENUM_CLASS(CompositionOp, int8_t)
126 OP_OVER,
127 OP_ADD,
128 OP_ATOP,
129 OP_OUT,
130 OP_IN,
131 OP_SOURCE,
132 OP_DEST_IN,
133 OP_DEST_OUT,
134 OP_DEST_OVER,
135 OP_DEST_ATOP,
136 OP_XOR,
137 OP_MULTIPLY,
138 OP_SCREEN,
139 OP_OVERLAY,
140 OP_DARKEN,
141 OP_LIGHTEN,
142 OP_COLOR_DODGE,
143 OP_COLOR_BURN,
144 OP_HARD_LIGHT,
145 OP_SOFT_LIGHT,
146 OP_DIFFERENCE,
147 OP_EXCLUSION,
148 OP_HUE,
149 OP_SATURATION,
150 OP_COLOR,
151 OP_LUMINOSITY,
152 OP_COUNT
153 MOZ_END_ENUM_CLASS(CompositionOp)
155 MOZ_BEGIN_ENUM_CLASS(ExtendMode, int8_t)
156 CLAMP,
157 REPEAT,
158 REFLECT
159 MOZ_END_ENUM_CLASS(ExtendMode)
161 MOZ_BEGIN_ENUM_CLASS(FillRule, int8_t)
162 FILL_WINDING,
163 FILL_EVEN_ODD
164 MOZ_END_ENUM_CLASS(FillRule)
166 MOZ_BEGIN_ENUM_CLASS(AntialiasMode, int8_t)
167 NONE,
168 GRAY,
169 SUBPIXEL,
170 DEFAULT
171 MOZ_END_ENUM_CLASS(AntialiasMode)
173 MOZ_BEGIN_ENUM_CLASS(Filter, int8_t)
174 GOOD,
175 LINEAR,
176 POINT
177 MOZ_END_ENUM_CLASS(Filter)
179 MOZ_BEGIN_ENUM_CLASS(PatternType, int8_t)
180 COLOR,
181 SURFACE,
182 LINEAR_GRADIENT,
183 RADIAL_GRADIENT
184 MOZ_END_ENUM_CLASS(PatternType)
186 MOZ_BEGIN_ENUM_CLASS(JoinStyle, int8_t)
187 BEVEL,
188 ROUND,
189 MITER,
190 MITER_OR_BEVEL
191 MOZ_END_ENUM_CLASS(JoinStyle)
193 MOZ_BEGIN_ENUM_CLASS(CapStyle, int8_t)
194 BUTT,
195 ROUND,
196 SQUARE
197 MOZ_END_ENUM_CLASS(CapStyle)
199 MOZ_BEGIN_ENUM_CLASS(SamplingBounds, int8_t)
200 UNBOUNDED,
201 BOUNDED
202 MOZ_END_ENUM_CLASS(SamplingBounds)
204 /* Color is stored in non-premultiplied form */
205 struct Color
206 {
207 public:
208 Color()
209 : r(0.0f), g(0.0f), b(0.0f), a(0.0f)
210 {}
211 Color(Float aR, Float aG, Float aB, Float aA)
212 : r(aR), g(aG), b(aB), a(aA)
213 {}
214 Color(Float aR, Float aG, Float aB)
215 : r(aR), g(aG), b(aB), a(1.0f)
216 {}
218 static Color FromABGR(uint32_t aColor)
219 {
220 Color newColor(((aColor >> 0) & 0xff) * (1.0f / 255.0f),
221 ((aColor >> 8) & 0xff) * (1.0f / 255.0f),
222 ((aColor >> 16) & 0xff) * (1.0f / 255.0f),
223 ((aColor >> 24) & 0xff) * (1.0f / 255.0f));
225 return newColor;
226 }
228 uint32_t ToABGR() const
229 {
230 return uint32_t(r * 255.0f) | uint32_t(g * 255.0f) << 8 |
231 uint32_t(b * 255.0f) << 16 | uint32_t(a * 255.0f) << 24;
232 }
234 Float r, g, b, a;
235 };
237 struct GradientStop
238 {
239 bool operator<(const GradientStop& aOther) const {
240 return offset < aOther.offset;
241 }
243 Float offset;
244 Color color;
245 };
247 }
248 }
250 #if defined(XP_WIN) && defined(MOZ_GFX)
251 #ifdef GFX2D_INTERNAL
252 #define GFX2D_API __declspec(dllexport)
253 #else
254 #define GFX2D_API __declspec(dllimport)
255 #endif
256 #else
257 #define GFX2D_API
258 #endif
260 // Side constants for use in various places
261 namespace mozilla {
262 namespace css {
263 enum Side {eSideTop, eSideRight, eSideBottom, eSideLeft};
264 }
265 }
267 // XXX - These don't really belong here. But for now this is where they go.
268 #define NS_SIDE_TOP mozilla::css::eSideTop
269 #define NS_SIDE_RIGHT mozilla::css::eSideRight
270 #define NS_SIDE_BOTTOM mozilla::css::eSideBottom
271 #define NS_SIDE_LEFT mozilla::css::eSideLeft
273 #endif /* MOZILLA_GFX_TYPES_H_ */