libcamera  v0.0.4
Supporting cameras in Linux since 2019
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  * transform.h - 2D plane transforms
6  */
7 
8 #pragma once
9 
10 #include <string>
11 
12 namespace libcamera {
13 
14 enum 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,
23  Rot90 = VFlip | Transpose,
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 
61 constexpr 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 
71 Transform transformFromRotation(int angle, bool *success = nullptr);
72 
73 const char *transformToString(Transform t);
74 
75 } /* namespace libcamera */
Top-level libcamera namespace.
Definition: backtrace.h:17
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:276
Transform operator*(Transform t0, Transform t1)
Compose two transforms together.
Definition: transform.cpp:207
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:306
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
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:233