libimgdoc2
Loading...
Searching...
No Matches
LogicalPositionInfo.h
1// SPDX-FileCopyrightText: 2023 Carl Zeiss Microscopy GmbH
2//
3// SPDX-License-Identifier: MIT
4
5#pragma once
6#include <limits>
7#include "utilities.h"
8
9namespace imgdoc2
10{
15 {
18
24 LogicalPositionInfo(double x, double y, double w, double h) : posX(x), posY(y), width(w), height(h), pyrLvl(0)
25 {}
26
33 LogicalPositionInfo(double x, double y, double w, double h, int pyrLvl) : posX(x), posY(y), width(w), height(h), pyrLvl(pyrLvl)
34 {}
35
36 double posX{ std::numeric_limits<double>::quiet_NaN() };
37 double posY{ std::numeric_limits<double>::quiet_NaN() };
38 double width{ std::numeric_limits<double>::quiet_NaN() };
39 double height{ std::numeric_limits<double>::quiet_NaN() };
40 int pyrLvl{ std::numeric_limits<int>::min() };
41
45 bool operator==(const LogicalPositionInfo& rhs) const
46 {
47 constexpr double kDoubleEpsilon = 1e-8;
48 return this->pyrLvl == rhs.pyrLvl &&
49 approximatelyEqual(this->posX, rhs.posX, kDoubleEpsilon) &&
50 approximatelyEqual(this->posY, rhs.posY, kDoubleEpsilon) &&
51 approximatelyEqual(this->width, rhs.width, kDoubleEpsilon) &&
52 approximatelyEqual(this->height, rhs.height, kDoubleEpsilon);
53 }
54
58 bool operator!=(const LogicalPositionInfo& rhs) const
59 {
60 return !this->operator==(rhs);
61 }
62 };
63
68 {
69 double posX{ std::numeric_limits<double>::quiet_NaN() };
70 double posY{ std::numeric_limits<double>::quiet_NaN() };
71 double posZ{ std::numeric_limits<double>::quiet_NaN() };
72 double width{ std::numeric_limits<double>::quiet_NaN() };
73 double height{ std::numeric_limits<double>::quiet_NaN() };
74 double depth{ std::numeric_limits<double>::quiet_NaN() };
75 int pyrLvl{ std::numeric_limits<int>::min() };
76
79
87 LogicalPositionInfo3D(double x, double y, double z, double w, double h, double d) : posX(x), posY(y), posZ(z), width(w), height(h), depth(d), pyrLvl(0)
88 {}
89
98 LogicalPositionInfo3D(double x, double y, double z, double w, double h, double d, int pyrLvl) : posX(x), posY(y), posZ(z), width(w), height(h), depth(d), pyrLvl(pyrLvl)
99 {}
100
104 bool operator==(const LogicalPositionInfo3D& rhs) const
105 {
106 constexpr double kDoubleEpsilon = 1e-8;
107 return this->pyrLvl == rhs.pyrLvl &&
108 imgdoc2::approximatelyEqual(this->posX, rhs.posX, kDoubleEpsilon) &&
109 imgdoc2::approximatelyEqual(this->posY, rhs.posY, kDoubleEpsilon) &&
110 imgdoc2::approximatelyEqual(this->posZ, rhs.posZ, kDoubleEpsilon) &&
111 imgdoc2::approximatelyEqual(this->width, rhs.width, kDoubleEpsilon) &&
112 imgdoc2::approximatelyEqual(this->height, rhs.height, kDoubleEpsilon) &&
113 imgdoc2::approximatelyEqual(this->depth, rhs.depth, kDoubleEpsilon);
114 }
115
119 bool operator!=(const LogicalPositionInfo3D& rhs) const
120 {
121 return !this->operator==(rhs);
122 }
123 };
124}
Definition: LogicalPositionInfo.h:68
LogicalPositionInfo3D()=default
Default constructor, all properties are initialized to invalid values.
int pyrLvl
The pyramid level.
Definition: LogicalPositionInfo.h:75
double depth
The depth.
Definition: LogicalPositionInfo.h:74
LogicalPositionInfo3D(double x, double y, double z, double w, double h, double d, int pyrLvl)
Definition: LogicalPositionInfo.h:98
double height
The height.
Definition: LogicalPositionInfo.h:73
double posY
The y coordinate of the top left point.
Definition: LogicalPositionInfo.h:70
double posZ
The z coordinate of the top left point.
Definition: LogicalPositionInfo.h:71
double posX
The x coordinate of the top left point.
Definition: LogicalPositionInfo.h:69
bool operator!=(const LogicalPositionInfo3D &rhs) const
Definition: LogicalPositionInfo.h:119
double width
The width.
Definition: LogicalPositionInfo.h:72
LogicalPositionInfo3D(double x, double y, double z, double w, double h, double d)
Definition: LogicalPositionInfo.h:87
bool operator==(const LogicalPositionInfo3D &rhs) const
Definition: LogicalPositionInfo.h:104
Definition: LogicalPositionInfo.h:15
LogicalPositionInfo(double x, double y, double w, double h)
Definition: LogicalPositionInfo.h:24
int pyrLvl
The pyramid level.
Definition: LogicalPositionInfo.h:40
double posX
The x coordinate of the top left point.
Definition: LogicalPositionInfo.h:36
double posY
The y coordinate of the top left point.
Definition: LogicalPositionInfo.h:37
double height
The height.
Definition: LogicalPositionInfo.h:39
double width
The width.
Definition: LogicalPositionInfo.h:38
LogicalPositionInfo(double x, double y, double w, double h, int pyrLvl)
Definition: LogicalPositionInfo.h:33
bool operator!=(const LogicalPositionInfo &rhs) const
Definition: LogicalPositionInfo.h:58
LogicalPositionInfo()=default
Default constructor, all properties are initialized to invalid values.
bool operator==(const LogicalPositionInfo &rhs) const
Definition: LogicalPositionInfo.h:45