libcamera v0.4.0+5314-fc77c53d-nvm
Supporting cameras in Linux since 2019
Loading...
Searching...
No Matches
transform.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2/*
3 * Copyright (C) 2020, Raspberry Pi Ltd
4 *
5 * 2D plane transforms
6 */
7
8#pragma once
9
10namespace libcamera {
11
12enum class Orientation;
13
14enum class Transform : int {
15 Identity = 0,
16 Rot0 = Identity,
17 HFlip = 1,
18 VFlip = 2,
19 HVFlip = HFlip | VFlip,
20 Rot180 = HVFlip,
21 Transpose = 4,
25};
26
28{
29 return static_cast<Transform>(static_cast<int>(t0) & static_cast<int>(t1));
30}
31
33{
34 return static_cast<Transform>(static_cast<int>(t0) | static_cast<int>(t1));
35}
36
38{
39 return static_cast<Transform>(static_cast<int>(t0) ^ static_cast<int>(t1));
40}
41
43{
44 return t0 = t0 & t1;
45}
46
48{
49 return t0 = t0 | t1;
50}
51
53{
54 return t0 = t0 ^ t1;
55}
56
58
60
61constexpr bool operator!(Transform t)
62{
63 return t == Transform::Identity;
64}
65
67{
68 return static_cast<Transform>(~static_cast<int>(t) & 7);
69}
70
71Transform transformFromRotation(int angle, bool *success = nullptr);
72
73Transform operator/(const Orientation &o1, const Orientation &o2);
74Orientation operator*(const Orientation &o, const Transform &t);
75
76const char *transformToString(Transform t);
77
78} /* namespace libcamera */
Top-level libcamera namespace.
Definition bound_method.h:15
constexpr Transform operator&(Transform t0, Transform t1)
Apply bitwise AND operator between the bits in the two transforms.
Definition transform.h:27
constexpr bool operator!(Transform t)
Return true if the transform is the Identity, otherwise false
Definition transform.h:61
Transform
Enum to represent a 2D plane transform.
Definition transform.h:14
constexpr Transform operator~(Transform t)
Return the transform with all the bits inverted individually.
Definition transform.h:66
Transform transformFromRotation(int angle, bool *success=nullptr)
Return the transform representing a rotation of the given angle clockwise.
Definition transform.cpp:278
Transform operator*(Transform t0, Transform t1)
Compose two transforms by applying t0 first then t1.
Definition transform.cpp:209
Orientation
The image orientation in a memory buffer.
Definition orientation.h:14
constexpr Transform & operator^=(Transform &t0, Transform t1)
Apply bitwise XOR-assignment operator between the bits in the two transforms.
Definition transform.h:52
const char * transformToString(Transform t)
Return a character string describing the transform.
Definition transform.cpp:393
constexpr Transform & operator|=(Transform &t0, Transform t1)
Apply bitwise OR-assignment operator between the bits in the two transforms.
Definition transform.h:47
constexpr Transform operator|(Transform t0, Transform t1)
Apply bitwise OR operator between the bits in the two transforms.
Definition transform.h:32
constexpr Transform operator^(Transform t0, Transform t1)
Apply bitwise XOR operator between the bits in the two transforms.
Definition transform.h:37
Transform operator/(const Orientation &o1, const Orientation &o2)
Return the Transform that applied to o2 gives o1.
Definition transform.cpp:347
constexpr Transform & operator&=(Transform &t0, Transform t1)
Apply bitwise AND-assignment operator between the bits in the two transforms.
Definition transform.h:42
Transform operator-(Transform t)
Invert a transform.
Definition transform.cpp:235