Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
skia
include
codec
SkEncodedOrigin.h
Go to the documentation of this file.
1
/*
2
* Copyright 2017 Google Inc.
3
*
4
* Use of this source code is governed by a BSD-style license that can be
5
* found in the LICENSE file.
6
*/
7
8
#ifndef SkEncodedOrigin_DEFINED
9
#define SkEncodedOrigin_DEFINED
10
11
#include "
include/core/SkMatrix.h
"
12
13
// These values match the orientation www.exif.org/Exif2-2.PDF.
14
enum
SkEncodedOrigin
{
15
kTopLeft_SkEncodedOrigin
= 1,
// Default
16
kTopRight_SkEncodedOrigin
= 2,
// Reflected across y-axis
17
kBottomRight_SkEncodedOrigin
= 3,
// Rotated 180
18
kBottomLeft_SkEncodedOrigin
= 4,
// Reflected across x-axis
19
kLeftTop_SkEncodedOrigin
= 5,
// Reflected across x-axis, Rotated 90 CCW
20
kRightTop_SkEncodedOrigin
= 6,
// Rotated 90 CW
21
kRightBottom_SkEncodedOrigin
= 7,
// Reflected across x-axis, Rotated 90 CW
22
kLeftBottom_SkEncodedOrigin
= 8,
// Rotated 90 CCW
23
kDefault_SkEncodedOrigin
=
kTopLeft_SkEncodedOrigin
,
24
kLast_SkEncodedOrigin
=
kLeftBottom_SkEncodedOrigin
,
25
};
26
27
/**
28
* Given an encoded origin and the width and height of the source data, returns a matrix
29
* that transforms the source rectangle with upper left corner at [0, 0] and origin to a correctly
30
* oriented destination rectangle of [0, 0, w, h].
31
*/
32
static
inline
SkMatrix
SkEncodedOriginToMatrix
(
SkEncodedOrigin
origin,
int
w
,
int
h
) {
33
switch
(origin) {
34
case
kTopLeft_SkEncodedOrigin
:
return
SkMatrix::I
();
35
case
kTopRight_SkEncodedOrigin
:
return
SkMatrix::MakeAll
(-1, 0,
w
, 0, 1, 0, 0, 0, 1);
36
case
kBottomRight_SkEncodedOrigin
:
return
SkMatrix::MakeAll
(-1, 0,
w
, 0, -1,
h
, 0, 0, 1);
37
case
kBottomLeft_SkEncodedOrigin
:
return
SkMatrix::MakeAll
( 1, 0, 0, 0, -1,
h
, 0, 0, 1);
38
case
kLeftTop_SkEncodedOrigin
:
return
SkMatrix::MakeAll
( 0, 1, 0, 1, 0, 0, 0, 0, 1);
39
case
kRightTop_SkEncodedOrigin
:
return
SkMatrix::MakeAll
( 0, -1,
w
, 1, 0, 0, 0, 0, 1);
40
case
kRightBottom_SkEncodedOrigin
:
return
SkMatrix::MakeAll
( 0, -1,
w
, -1, 0,
h
, 0, 0, 1);
41
case
kLeftBottom_SkEncodedOrigin
:
return
SkMatrix::MakeAll
( 0, 1, 0, -1, 0,
h
, 0, 0, 1);
42
}
43
SK_ABORT
(
"Unexpected origin"
);
44
}
45
46
/**
47
* Return true if the encoded origin includes a 90 degree rotation, in which case the width
48
* and height of the source data are swapped relative to a correctly oriented destination.
49
*/
50
static
inline
bool
SkEncodedOriginSwapsWidthHeight
(
SkEncodedOrigin
origin) {
51
return
origin >=
kLeftTop_SkEncodedOrigin
;
52
}
53
54
#endif
// SkEncodedOrigin_DEFINED
SK_ABORT
#define SK_ABORT(message,...)
Definition
SkAssert.h:70
SkEncodedOrigin
SkEncodedOrigin
Definition
SkEncodedOrigin.h:14
kBottomLeft_SkEncodedOrigin
@ kBottomLeft_SkEncodedOrigin
Definition
SkEncodedOrigin.h:18
kLast_SkEncodedOrigin
@ kLast_SkEncodedOrigin
Definition
SkEncodedOrigin.h:24
kLeftTop_SkEncodedOrigin
@ kLeftTop_SkEncodedOrigin
Definition
SkEncodedOrigin.h:19
kTopRight_SkEncodedOrigin
@ kTopRight_SkEncodedOrigin
Definition
SkEncodedOrigin.h:16
kBottomRight_SkEncodedOrigin
@ kBottomRight_SkEncodedOrigin
Definition
SkEncodedOrigin.h:17
kTopLeft_SkEncodedOrigin
@ kTopLeft_SkEncodedOrigin
Definition
SkEncodedOrigin.h:15
kLeftBottom_SkEncodedOrigin
@ kLeftBottom_SkEncodedOrigin
Definition
SkEncodedOrigin.h:22
kRightBottom_SkEncodedOrigin
@ kRightBottom_SkEncodedOrigin
Definition
SkEncodedOrigin.h:21
kDefault_SkEncodedOrigin
@ kDefault_SkEncodedOrigin
Definition
SkEncodedOrigin.h:23
kRightTop_SkEncodedOrigin
@ kRightTop_SkEncodedOrigin
Definition
SkEncodedOrigin.h:20
SkEncodedOriginSwapsWidthHeight
static bool SkEncodedOriginSwapsWidthHeight(SkEncodedOrigin origin)
Definition
SkEncodedOrigin.h:50
SkEncodedOriginToMatrix
static SkMatrix SkEncodedOriginToMatrix(SkEncodedOrigin origin, int w, int h)
Definition
SkEncodedOrigin.h:32
SkMatrix.h
SkMatrix
Definition
SkMatrix.h:54
SkMatrix::MakeAll
static SkMatrix MakeAll(SkScalar scaleX, SkScalar skewX, SkScalar transX, SkScalar skewY, SkScalar scaleY, SkScalar transY, SkScalar pers0, SkScalar pers1, SkScalar pers2)
Definition
SkMatrix.h:179
SkMatrix::I
static const SkMatrix & I()
Definition
SkMatrix.cpp:1544
w
SkScalar w
Definition
pictureshadertile.cpp:30
h
SkScalar h
Definition
pictureshadertile.cpp:30
Generated on Fri Apr 26 2024 06:16:10 for Flutter Engine by
1.9.8