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: 2; 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 nsTransform2D_h___
7 #define nsTransform2D_h___
9 #include "gfxCore.h"
10 #include "nsCoord.h"
12 class NS_GFX nsTransform2D
13 {
14 private:
15 /**
16 * This represents the following matrix (note that the order of row/column
17 * indices is opposite to usual notation)
18 *
19 * / m00 0 m20 \
20 * M = | 0 m11 m21 |
21 * \ 0 0 1 /
22 *
23 * Transformation of a coordinate (x, y) is obtained by setting
24 * v = (x, y, 1)^T and evaluating M . v
25 **/
27 float m00, m11, m20, m21;
29 public:
30 nsTransform2D(void) { m20 = m21 = 0.0f; m00 = m11 = 1.0f; }
31 nsTransform2D(nsTransform2D *aTransform2D) {
32 m00 = aTransform2D->m00;
33 m11 = aTransform2D->m11;
34 m20 = aTransform2D->m20;
35 m21 = aTransform2D->m21;
36 }
38 ~nsTransform2D(void) { }
40 /**
41 * set this transform to a translation
42 *
43 * @param tx, x translation
44 * @param ty, y translation
45 **/
47 void SetToTranslate(float tx, float ty) { m00 = m11 = 1.0f; m20 = tx; m21 = ty; }
49 /**
50 * get the translation portion of this transform
51 *
52 * @param pt, Point to return translation values in
53 **/
55 void GetTranslationCoord(nscoord *ptX, nscoord *ptY) const { *ptX = NSToCoordRound(m20); *ptY = NSToCoordRound(m21); }
57 /**
58 * apply matrix to vector
59 *
60 * @param pt Point to transform
61 **/
63 void TransformCoord(nscoord *ptX, nscoord *ptY) const;
65 /**
66 * apply matrix to rect
67 *
68 * @param rect Rect to transform
69 **/
71 void TransformCoord(nscoord *aX, nscoord *aY, nscoord *aWidth, nscoord *aHeight) const;
73 /**
74 * add a scale to a Transform via x, y pair
75 *
76 * @param ptX x value to add as x scale
77 * @param ptY y value to add as y scale
78 **/
80 void AddScale(float ptX, float ptY) { m00 *= ptX; m11 *= ptY; }
82 /**
83 * Set the scale (overriding any previous calls to AddScale, but leaving
84 * any existing translation).
85 *
86 * @param ptX x value to add as x scale
87 * @param ptY y value to add as y scale
88 **/
90 void SetScale(float ptX, float ptY) { m00 = ptX; m11 = ptY; }
91 };
93 #endif