Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 31 additions & 7 deletions src/common/include/display_device/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,8 @@
#pragma once

// system includes
#include <algorithm>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <functional>
Expand DownExpand Up@@ -70,7 +72,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Resolution &lhs, const Resolution &rhs);
friend bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}
};

/**
Expand All@@ -83,7 +87,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Point &lhs, const Point &rhs);
friend bool operator==(const Point &lhs, const Point &rhs) = default;
};

/**
Expand All@@ -96,14 +100,30 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Rational &lhs, const Rational &rhs);
friend bool operator==(const Rational &lhs, const Rational &rhs) = default;
};

/**
* @brief Floating point type.
*/
using FloatingPoint = std::variant<double, Rational>;

namespace detail {
inline bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

inline bool fuzzyCompare(const FloatingPoint &lhs, const FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}
} // namespace detail

/**
* @brief Parsed EDID data.
*/
Expand All@@ -122,7 +142,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EdidData &lhs, const EdidData &rhs);
friend bool operator==(const EdidData &lhs, const EdidData &rhs) = default;
};

/**
Expand All@@ -143,7 +163,11 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Info &lhs, const Info &rhs);
friend bool operator==(const Info &lhs, const Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && detail::fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
detail::fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}
};

std::string m_device_id {}; /**< A unique device ID used by this API to identify the device. */
Expand All@@ -155,7 +179,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs);
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) = default;
};

/**
Expand DownExpand Up@@ -189,6 +213,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs);
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) = default;
};
} // namespace display_device
44 changes: 0 additions & 44 deletions src/common/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,20 +14,6 @@
#include "display_device/logging.h"

namespace {
bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

bool fuzzyCompare(const display_device::FloatingPoint &lhs, const display_device::FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}

std::byte operator+(const std::byte lhs, const std::byte &rhs) {
return std::byte {static_cast<std::uint8_t>(static_cast<int>(lhs) + static_cast<int>(rhs))};
}
Expand All@@ -49,18 +35,6 @@ namespace {
} // namespace

namespace display_device {
bool operator==(const Rational &lhs, const Rational &rhs) {
return lhs.m_numerator == rhs.m_numerator && lhs.m_denominator == rhs.m_denominator;
}

bool operator==(const Point &lhs, const Point &rhs) {
return lhs.m_x == rhs.m_x && lhs.m_y == rhs.m_y;
}

bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}

std::optional<EdidData> EdidData::parse(const std::vector<std::byte> &data) {
if (data.empty()) {
return std::nullopt;
Expand DownExpand Up@@ -139,22 +113,4 @@ namespace display_device {

return edid;
}

bool operator==(const EdidData &lhs, const EdidData &rhs) {
return lhs.m_manufacturer_id == rhs.m_manufacturer_id && lhs.m_product_code == rhs.m_product_code && lhs.m_serial_number == rhs.m_serial_number;
}

bool operator==(const EnumeratedDevice::Info &lhs, const EnumeratedDevice::Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}

bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_display_name == rhs.m_display_name && lhs.m_friendly_name == rhs.m_friendly_name && lhs.m_edid == rhs.m_edid && lhs.m_info == rhs.m_info;
}

bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_device_prep == rhs.m_device_prep && lhs.m_resolution == rhs.m_resolution && lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_hdr_state == rhs.m_hdr_state;
}
} // namespace display_device
22 changes: 17 additions & 5 deletions src/windows/include/display_device/windows/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -61,6 +61,16 @@ namespace display_device {
std::map<UINT32, std::size_t> m_source_id_to_path_index {}; /**< Maps source ids to its index in the path list. */
LUID m_adapter_id {}; /**< Adapter id shared by all source ids. */
std::optional<UINT32> m_active_source {}; /**< Currently active source id. */

/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index &&
lhs.m_adapter_id.HighPart == rhs.m_adapter_id.HighPart &&
lhs.m_adapter_id.LowPart == rhs.m_adapter_id.LowPart &&
lhs.m_active_source == rhs.m_active_source;
}
};

/**
Expand DownExpand Up@@ -95,7 +105,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs);
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}
};

/**
Expand DownExpand Up@@ -123,7 +135,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Initial &lhs, const Initial &rhs);
friend bool operator==(const Initial &lhs, const Initial &rhs) = default;
};

/**
Expand DownExpand Up@@ -151,7 +163,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Modified &lhs, const Modified &rhs);
friend bool operator==(const Modified &lhs, const Modified &rhs) = default;
};

Initial m_initial;
Expand All@@ -160,7 +172,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs);
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) = default;
};

/**
Expand All@@ -177,6 +189,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs);
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) = default;
};
} // namespace display_device
20 changes: 0 additions & 20 deletions src/windows/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,27 +6,7 @@
#include "display_device/windows/types.h"

namespace display_device {
bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}

bool SingleDisplayConfigState::Modified::hasModifications() const {
return !m_original_modes.empty() || !m_original_hdr_states.empty() || !m_original_primary_device.empty();
}

bool operator==(const SingleDisplayConfigState::Initial &lhs, const SingleDisplayConfigState::Initial &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_primary_devices == rhs.m_primary_devices;
}

bool operator==(const SingleDisplayConfigState::Modified &lhs, const SingleDisplayConfigState::Modified &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_original_modes == rhs.m_original_modes && lhs.m_original_hdr_states == rhs.m_original_hdr_states && lhs.m_original_primary_device == rhs.m_original_primary_device;
}

bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) {
return lhs.m_initial == rhs.m_initial && lhs.m_modified == rhs.m_modified;
}

bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) {
return lhs.m_hdr_blank_delay == rhs.m_hdr_blank_delay;
}
} // namespace display_device
12 changes: 4 additions & 8 deletions tests/unit/general/test_json.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,22 +19,18 @@ namespace display_device {
struct TestStruct {
struct Nested {
int m_c {};

friend bool operator==(const Nested &lhs, const Nested &rhs) = default;
};

std::string m_a {};
Nested m_b {};

friend bool operator==(const TestStruct &lhs, const TestStruct &rhs) = default;
};

using TestVariant = std::variant<double, Rational>;

bool operator==(const TestStruct::Nested &lhs, const TestStruct::Nested &rhs) {
return lhs.m_c == rhs.m_c;
}

bool operator==(const TestStruct &lhs, const TestStruct &rhs) {
return lhs.m_a == rhs.m_a && lhs.m_b == rhs.m_b;
}

DD_JSON_DEFINE_SERIALIZE_ENUM_GCOVR_EXCL_BR_LINE(TestEnum, {{TestEnum::Value1, "Value1"}, {TestEnum::Value2, "ValueMaybe2"}})
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct::Nested, c)
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct, a, b)
Expand Down
32 changes: 13 additions & 19 deletions tests/unit/windows/utils/comparison.cpp
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
// local includes
#include "comparison.h"

bool operator==(const LUID &lhs, const LUID &rhs) {
bool operator==(const LUID &lhs, const LUID &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.HighPart == rhs.HighPart && lhs.LowPart == rhs.LowPart;
}

bool operator==(const POINTL &lhs, const POINTL &rhs) {
bool operator==(const POINTL &lhs, const POINTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.x == rhs.x && lhs.y == rhs.y;
}

bool operator==(const RECTL &lhs, const RECTL &rhs) {
bool operator==(const RECTL &lhs, const RECTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.bottom == rhs.bottom && lhs.left == rhs.left && lhs.right == rhs.right && lhs.top == rhs.top;
}

bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) {
bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.Denominator == rhs.Denominator && lhs.Numerator == rhs.Numerator;
}

bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) {
bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.cx == rhs.cx && lhs.cy == rhs.cy;
}

bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -31,7 +31,7 @@ bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -47,15 +47,15 @@ bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.sourceInfo == rhs.sourceInfo && lhs.targetInfo == rhs.targetInfo && lhs.flags == rhs.flags;
}

bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.width == rhs.width && lhs.height == rhs.height && lhs.pixelFormat == rhs.pixelFormat && lhs.position == rhs.position;
}

bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format on
return lhs.pixelRate == rhs.pixelRate &&
lhs.hSyncFreq == rhs.hSyncFreq &&
Expand All@@ -67,15 +67,15 @@ bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_
// clang-format oon
}

bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.targetVideoSignalInfo == rhs.targetVideoSignalInfo;
}

bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.PathSourceSize == rhs.PathSourceSize && lhs.DesktopImageRegion == rhs.DesktopImageRegion && lhs.DesktopImageClip == rhs.DesktopImageClip;
}

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
if (lhs.infoType == rhs.infoType && lhs.id == rhs.id && lhs.adapterId == rhs.adapterId) {
if (lhs.infoType == DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE) {
return lhs.sourceMode == rhs.sourceMode;
Expand All@@ -90,9 +90,3 @@ bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INF
}
return false;
}

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index && lhs.m_adapter_id == rhs.m_adapter_id && lhs.m_active_source == rhs.m_active_source;
}
} // namespace display_device
4 changes: 0 additions & 4 deletions tests/unit/windows/utils/comparison.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,7 +29,3 @@ bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs);

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs);

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs);
} // namespace display_device
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 31 additions & 7 deletions src/common/include/display_device/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,8 @@
#pragma once

// system includes
#include <algorithm>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <functional>
Expand DownExpand Up@@ -70,7 +72,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Resolution &lhs, const Resolution &rhs);
friend bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}
};

/**
Expand All@@ -83,7 +87,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Point &lhs, const Point &rhs);
friend bool operator==(const Point &lhs, const Point &rhs) = default;
};

/**
Expand All@@ -96,14 +100,30 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Rational &lhs, const Rational &rhs);
friend bool operator==(const Rational &lhs, const Rational &rhs) = default;
};

/**
* @brief Floating point type.
*/
using FloatingPoint = std::variant<double, Rational>;

namespace detail {
inline bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

inline bool fuzzyCompare(const FloatingPoint &lhs, const FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}
} // namespace detail

/**
* @brief Parsed EDID data.
*/
Expand All@@ -122,7 +142,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EdidData &lhs, const EdidData &rhs);
friend bool operator==(const EdidData &lhs, const EdidData &rhs) = default;
};

/**
Expand All@@ -143,7 +163,11 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Info &lhs, const Info &rhs);
friend bool operator==(const Info &lhs, const Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && detail::fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
detail::fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}
};

std::string m_device_id {}; /**< A unique device ID used by this API to identify the device. */
Expand All@@ -155,7 +179,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs);
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) = default;
};

/**
Expand DownExpand Up@@ -189,6 +213,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs);
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) = default;
};
} // namespace display_device
44 changes: 0 additions & 44 deletions src/common/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,20 +14,6 @@
#include "display_device/logging.h"

namespace {
bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

bool fuzzyCompare(const display_device::FloatingPoint &lhs, const display_device::FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}

std::byte operator+(const std::byte lhs, const std::byte &rhs) {
return std::byte {static_cast<std::uint8_t>(static_cast<int>(lhs) + static_cast<int>(rhs))};
}
Expand All@@ -49,18 +35,6 @@ namespace {
} // namespace

namespace display_device {
bool operator==(const Rational &lhs, const Rational &rhs) {
return lhs.m_numerator == rhs.m_numerator && lhs.m_denominator == rhs.m_denominator;
}

bool operator==(const Point &lhs, const Point &rhs) {
return lhs.m_x == rhs.m_x && lhs.m_y == rhs.m_y;
}

bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}

std::optional<EdidData> EdidData::parse(const std::vector<std::byte> &data) {
if (data.empty()) {
return std::nullopt;
Expand DownExpand Up@@ -139,22 +113,4 @@ namespace display_device {

return edid;
}

bool operator==(const EdidData &lhs, const EdidData &rhs) {
return lhs.m_manufacturer_id == rhs.m_manufacturer_id && lhs.m_product_code == rhs.m_product_code && lhs.m_serial_number == rhs.m_serial_number;
}

bool operator==(const EnumeratedDevice::Info &lhs, const EnumeratedDevice::Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}

bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_display_name == rhs.m_display_name && lhs.m_friendly_name == rhs.m_friendly_name && lhs.m_edid == rhs.m_edid && lhs.m_info == rhs.m_info;
}

bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_device_prep == rhs.m_device_prep && lhs.m_resolution == rhs.m_resolution && lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_hdr_state == rhs.m_hdr_state;
}
} // namespace display_device
22 changes: 17 additions & 5 deletions src/windows/include/display_device/windows/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -61,6 +61,16 @@ namespace display_device {
std::map<UINT32, std::size_t> m_source_id_to_path_index {}; /**< Maps source ids to its index in the path list. */
LUID m_adapter_id {}; /**< Adapter id shared by all source ids. */
std::optional<UINT32> m_active_source {}; /**< Currently active source id. */

/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index &&
lhs.m_adapter_id.HighPart == rhs.m_adapter_id.HighPart &&
lhs.m_adapter_id.LowPart == rhs.m_adapter_id.LowPart &&
lhs.m_active_source == rhs.m_active_source;
}
};

/**
Expand DownExpand Up@@ -95,7 +105,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs);
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}
};

/**
Expand DownExpand Up@@ -123,7 +135,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Initial &lhs, const Initial &rhs);
friend bool operator==(const Initial &lhs, const Initial &rhs) = default;
};

/**
Expand DownExpand Up@@ -151,7 +163,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Modified &lhs, const Modified &rhs);
friend bool operator==(const Modified &lhs, const Modified &rhs) = default;
};

Initial m_initial;
Expand All@@ -160,7 +172,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs);
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) = default;
};

/**
Expand All@@ -177,6 +189,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs);
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) = default;
};
} // namespace display_device
20 changes: 0 additions & 20 deletions src/windows/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,27 +6,7 @@
#include "display_device/windows/types.h"

namespace display_device {
bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}

bool SingleDisplayConfigState::Modified::hasModifications() const {
return !m_original_modes.empty() || !m_original_hdr_states.empty() || !m_original_primary_device.empty();
}

bool operator==(const SingleDisplayConfigState::Initial &lhs, const SingleDisplayConfigState::Initial &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_primary_devices == rhs.m_primary_devices;
}

bool operator==(const SingleDisplayConfigState::Modified &lhs, const SingleDisplayConfigState::Modified &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_original_modes == rhs.m_original_modes && lhs.m_original_hdr_states == rhs.m_original_hdr_states && lhs.m_original_primary_device == rhs.m_original_primary_device;
}

bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) {
return lhs.m_initial == rhs.m_initial && lhs.m_modified == rhs.m_modified;
}

bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) {
return lhs.m_hdr_blank_delay == rhs.m_hdr_blank_delay;
}
} // namespace display_device
12 changes: 4 additions & 8 deletions tests/unit/general/test_json.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,22 +19,18 @@ namespace display_device {
struct TestStruct {
struct Nested {
int m_c {};

friend bool operator==(const Nested &lhs, const Nested &rhs) = default;
};

std::string m_a {};
Nested m_b {};

friend bool operator==(const TestStruct &lhs, const TestStruct &rhs) = default;
};

using TestVariant = std::variant<double, Rational>;

bool operator==(const TestStruct::Nested &lhs, const TestStruct::Nested &rhs) {
return lhs.m_c == rhs.m_c;
}

bool operator==(const TestStruct &lhs, const TestStruct &rhs) {
return lhs.m_a == rhs.m_a && lhs.m_b == rhs.m_b;
}

DD_JSON_DEFINE_SERIALIZE_ENUM_GCOVR_EXCL_BR_LINE(TestEnum, {{TestEnum::Value1, "Value1"}, {TestEnum::Value2, "ValueMaybe2"}})
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct::Nested, c)
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct, a, b)
Expand Down
32 changes: 13 additions & 19 deletions tests/unit/windows/utils/comparison.cpp
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
// local includes
#include "comparison.h"

bool operator==(const LUID &lhs, const LUID &rhs) {
bool operator==(const LUID &lhs, const LUID &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.HighPart == rhs.HighPart && lhs.LowPart == rhs.LowPart;
}

bool operator==(const POINTL &lhs, const POINTL &rhs) {
bool operator==(const POINTL &lhs, const POINTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.x == rhs.x && lhs.y == rhs.y;
}

bool operator==(const RECTL &lhs, const RECTL &rhs) {
bool operator==(const RECTL &lhs, const RECTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.bottom == rhs.bottom && lhs.left == rhs.left && lhs.right == rhs.right && lhs.top == rhs.top;
}

bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) {
bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.Denominator == rhs.Denominator && lhs.Numerator == rhs.Numerator;
}

bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) {
bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.cx == rhs.cx && lhs.cy == rhs.cy;
}

bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -31,7 +31,7 @@ bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -47,15 +47,15 @@ bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.sourceInfo == rhs.sourceInfo && lhs.targetInfo == rhs.targetInfo && lhs.flags == rhs.flags;
}

bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.width == rhs.width && lhs.height == rhs.height && lhs.pixelFormat == rhs.pixelFormat && lhs.position == rhs.position;
}

bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format on
return lhs.pixelRate == rhs.pixelRate &&
lhs.hSyncFreq == rhs.hSyncFreq &&
Expand All@@ -67,15 +67,15 @@ bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_
// clang-format oon
}

bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.targetVideoSignalInfo == rhs.targetVideoSignalInfo;
}

bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.PathSourceSize == rhs.PathSourceSize && lhs.DesktopImageRegion == rhs.DesktopImageRegion && lhs.DesktopImageClip == rhs.DesktopImageClip;
}

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
if (lhs.infoType == rhs.infoType && lhs.id == rhs.id && lhs.adapterId == rhs.adapterId) {
if (lhs.infoType == DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE) {
return lhs.sourceMode == rhs.sourceMode;
Expand All@@ -90,9 +90,3 @@ bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INF
}
return false;
}

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index && lhs.m_adapter_id == rhs.m_adapter_id && lhs.m_active_source == rhs.m_active_source;
}
} // namespace display_device
4 changes: 0 additions & 4 deletions tests/unit/windows/utils/comparison.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,7 +29,3 @@ bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs);

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs);

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs);
} // namespace display_device
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 31 additions & 7 deletions src/common/include/display_device/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,8 @@
#pragma once

// system includes
#include <algorithm>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <functional>
Expand DownExpand Up@@ -70,7 +72,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Resolution &lhs, const Resolution &rhs);
friend bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}
};

/**
Expand All@@ -83,7 +87,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Point &lhs, const Point &rhs);
friend bool operator==(const Point &lhs, const Point &rhs) = default;
};

/**
Expand All@@ -96,14 +100,30 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Rational &lhs, const Rational &rhs);
friend bool operator==(const Rational &lhs, const Rational &rhs) = default;
};

/**
* @brief Floating point type.
*/
using FloatingPoint = std::variant<double, Rational>;

namespace detail {
inline bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

inline bool fuzzyCompare(const FloatingPoint &lhs, const FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}
} // namespace detail

/**
* @brief Parsed EDID data.
*/
Expand All@@ -122,7 +142,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EdidData &lhs, const EdidData &rhs);
friend bool operator==(const EdidData &lhs, const EdidData &rhs) = default;
};

/**
Expand All@@ -143,7 +163,11 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Info &lhs, const Info &rhs);
friend bool operator==(const Info &lhs, const Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && detail::fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
detail::fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}
};

std::string m_device_id {}; /**< A unique device ID used by this API to identify the device. */
Expand All@@ -155,7 +179,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs);
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) = default;
};

/**
Expand DownExpand Up@@ -189,6 +213,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs);
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) = default;
};
} // namespace display_device
44 changes: 0 additions & 44 deletions src/common/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,20 +14,6 @@
#include "display_device/logging.h"

namespace {
bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

bool fuzzyCompare(const display_device::FloatingPoint &lhs, const display_device::FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}

std::byte operator+(const std::byte lhs, const std::byte &rhs) {
return std::byte {static_cast<std::uint8_t>(static_cast<int>(lhs) + static_cast<int>(rhs))};
}
Expand All@@ -49,18 +35,6 @@ namespace {
} // namespace

namespace display_device {
bool operator==(const Rational &lhs, const Rational &rhs) {
return lhs.m_numerator == rhs.m_numerator && lhs.m_denominator == rhs.m_denominator;
}

bool operator==(const Point &lhs, const Point &rhs) {
return lhs.m_x == rhs.m_x && lhs.m_y == rhs.m_y;
}

bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}

std::optional<EdidData> EdidData::parse(const std::vector<std::byte> &data) {
if (data.empty()) {
return std::nullopt;
Expand DownExpand Up@@ -139,22 +113,4 @@ namespace display_device {

return edid;
}

bool operator==(const EdidData &lhs, const EdidData &rhs) {
return lhs.m_manufacturer_id == rhs.m_manufacturer_id && lhs.m_product_code == rhs.m_product_code && lhs.m_serial_number == rhs.m_serial_number;
}

bool operator==(const EnumeratedDevice::Info &lhs, const EnumeratedDevice::Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}

bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_display_name == rhs.m_display_name && lhs.m_friendly_name == rhs.m_friendly_name && lhs.m_edid == rhs.m_edid && lhs.m_info == rhs.m_info;
}

bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_device_prep == rhs.m_device_prep && lhs.m_resolution == rhs.m_resolution && lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_hdr_state == rhs.m_hdr_state;
}
} // namespace display_device
22 changes: 17 additions & 5 deletions src/windows/include/display_device/windows/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -61,6 +61,16 @@ namespace display_device {
std::map<UINT32, std::size_t> m_source_id_to_path_index {}; /**< Maps source ids to its index in the path list. */
LUID m_adapter_id {}; /**< Adapter id shared by all source ids. */
std::optional<UINT32> m_active_source {}; /**< Currently active source id. */

/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index &&
lhs.m_adapter_id.HighPart == rhs.m_adapter_id.HighPart &&
lhs.m_adapter_id.LowPart == rhs.m_adapter_id.LowPart &&
lhs.m_active_source == rhs.m_active_source;
}
};

/**
Expand DownExpand Up@@ -95,7 +105,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs);
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}
};

/**
Expand DownExpand Up@@ -123,7 +135,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Initial &lhs, const Initial &rhs);
friend bool operator==(const Initial &lhs, const Initial &rhs) = default;
};

/**
Expand DownExpand Up@@ -151,7 +163,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Modified &lhs, const Modified &rhs);
friend bool operator==(const Modified &lhs, const Modified &rhs) = default;
};

Initial m_initial;
Expand All@@ -160,7 +172,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs);
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) = default;
};

/**
Expand All@@ -177,6 +189,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs);
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) = default;
};
} // namespace display_device
20 changes: 0 additions & 20 deletions src/windows/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,27 +6,7 @@
#include "display_device/windows/types.h"

namespace display_device {
bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}

bool SingleDisplayConfigState::Modified::hasModifications() const {
return !m_original_modes.empty() || !m_original_hdr_states.empty() || !m_original_primary_device.empty();
}

bool operator==(const SingleDisplayConfigState::Initial &lhs, const SingleDisplayConfigState::Initial &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_primary_devices == rhs.m_primary_devices;
}

bool operator==(const SingleDisplayConfigState::Modified &lhs, const SingleDisplayConfigState::Modified &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_original_modes == rhs.m_original_modes && lhs.m_original_hdr_states == rhs.m_original_hdr_states && lhs.m_original_primary_device == rhs.m_original_primary_device;
}

bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) {
return lhs.m_initial == rhs.m_initial && lhs.m_modified == rhs.m_modified;
}

bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) {
return lhs.m_hdr_blank_delay == rhs.m_hdr_blank_delay;
}
} // namespace display_device
12 changes: 4 additions & 8 deletions tests/unit/general/test_json.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,22 +19,18 @@ namespace display_device {
struct TestStruct {
struct Nested {
int m_c {};

friend bool operator==(const Nested &lhs, const Nested &rhs) = default;
};

std::string m_a {};
Nested m_b {};

friend bool operator==(const TestStruct &lhs, const TestStruct &rhs) = default;
};

using TestVariant = std::variant<double, Rational>;

bool operator==(const TestStruct::Nested &lhs, const TestStruct::Nested &rhs) {
return lhs.m_c == rhs.m_c;
}

bool operator==(const TestStruct &lhs, const TestStruct &rhs) {
return lhs.m_a == rhs.m_a && lhs.m_b == rhs.m_b;
}

DD_JSON_DEFINE_SERIALIZE_ENUM_GCOVR_EXCL_BR_LINE(TestEnum, {{TestEnum::Value1, "Value1"}, {TestEnum::Value2, "ValueMaybe2"}})
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct::Nested, c)
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct, a, b)
Expand Down
32 changes: 13 additions & 19 deletions tests/unit/windows/utils/comparison.cpp
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
// local includes
#include "comparison.h"

bool operator==(const LUID &lhs, const LUID &rhs) {
bool operator==(const LUID &lhs, const LUID &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.HighPart == rhs.HighPart && lhs.LowPart == rhs.LowPart;
}

bool operator==(const POINTL &lhs, const POINTL &rhs) {
bool operator==(const POINTL &lhs, const POINTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.x == rhs.x && lhs.y == rhs.y;
}

bool operator==(const RECTL &lhs, const RECTL &rhs) {
bool operator==(const RECTL &lhs, const RECTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.bottom == rhs.bottom && lhs.left == rhs.left && lhs.right == rhs.right && lhs.top == rhs.top;
}

bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) {
bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.Denominator == rhs.Denominator && lhs.Numerator == rhs.Numerator;
}

bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) {
bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.cx == rhs.cx && lhs.cy == rhs.cy;
}

bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -31,7 +31,7 @@ bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -47,15 +47,15 @@ bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.sourceInfo == rhs.sourceInfo && lhs.targetInfo == rhs.targetInfo && lhs.flags == rhs.flags;
}

bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.width == rhs.width && lhs.height == rhs.height && lhs.pixelFormat == rhs.pixelFormat && lhs.position == rhs.position;
}

bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format on
return lhs.pixelRate == rhs.pixelRate &&
lhs.hSyncFreq == rhs.hSyncFreq &&
Expand All@@ -67,15 +67,15 @@ bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_
// clang-format oon
}

bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.targetVideoSignalInfo == rhs.targetVideoSignalInfo;
}

bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.PathSourceSize == rhs.PathSourceSize && lhs.DesktopImageRegion == rhs.DesktopImageRegion && lhs.DesktopImageClip == rhs.DesktopImageClip;
}

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
if (lhs.infoType == rhs.infoType && lhs.id == rhs.id && lhs.adapterId == rhs.adapterId) {
if (lhs.infoType == DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE) {
return lhs.sourceMode == rhs.sourceMode;
Expand All@@ -90,9 +90,3 @@ bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INF
}
return false;
}

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index && lhs.m_adapter_id == rhs.m_adapter_id && lhs.m_active_source == rhs.m_active_source;
}
} // namespace display_device
4 changes: 0 additions & 4 deletions tests/unit/windows/utils/comparison.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,7 +29,3 @@ bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs);

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs);

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs);
} // namespace display_device
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 31 additions & 7 deletions src/common/include/display_device/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,8 @@
#pragma once

// system includes
#include <algorithm>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <functional>
Expand DownExpand Up@@ -70,7 +72,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Resolution &lhs, const Resolution &rhs);
friend bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}
};

/**
Expand All@@ -83,7 +87,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Point &lhs, const Point &rhs);
friend bool operator==(const Point &lhs, const Point &rhs) = default;
};

/**
Expand All@@ -96,14 +100,30 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Rational &lhs, const Rational &rhs);
friend bool operator==(const Rational &lhs, const Rational &rhs) = default;
};

/**
* @brief Floating point type.
*/
using FloatingPoint = std::variant<double, Rational>;

namespace detail {
inline bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

inline bool fuzzyCompare(const FloatingPoint &lhs, const FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}
} // namespace detail

/**
* @brief Parsed EDID data.
*/
Expand All@@ -122,7 +142,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EdidData &lhs, const EdidData &rhs);
friend bool operator==(const EdidData &lhs, const EdidData &rhs) = default;
};

/**
Expand All@@ -143,7 +163,11 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Info &lhs, const Info &rhs);
friend bool operator==(const Info &lhs, const Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && detail::fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
detail::fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}
};

std::string m_device_id {}; /**< A unique device ID used by this API to identify the device. */
Expand All@@ -155,7 +179,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs);
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) = default;
};

/**
Expand DownExpand Up@@ -189,6 +213,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs);
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) = default;
};
} // namespace display_device
44 changes: 0 additions & 44 deletions src/common/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,20 +14,6 @@
#include "display_device/logging.h"

namespace {
bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

bool fuzzyCompare(const display_device::FloatingPoint &lhs, const display_device::FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}

std::byte operator+(const std::byte lhs, const std::byte &rhs) {
return std::byte {static_cast<std::uint8_t>(static_cast<int>(lhs) + static_cast<int>(rhs))};
}
Expand All@@ -49,18 +35,6 @@ namespace {
} // namespace

namespace display_device {
bool operator==(const Rational &lhs, const Rational &rhs) {
return lhs.m_numerator == rhs.m_numerator && lhs.m_denominator == rhs.m_denominator;
}

bool operator==(const Point &lhs, const Point &rhs) {
return lhs.m_x == rhs.m_x && lhs.m_y == rhs.m_y;
}

bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}

std::optional<EdidData> EdidData::parse(const std::vector<std::byte> &data) {
if (data.empty()) {
return std::nullopt;
Expand DownExpand Up@@ -139,22 +113,4 @@ namespace display_device {

return edid;
}

bool operator==(const EdidData &lhs, const EdidData &rhs) {
return lhs.m_manufacturer_id == rhs.m_manufacturer_id && lhs.m_product_code == rhs.m_product_code && lhs.m_serial_number == rhs.m_serial_number;
}

bool operator==(const EnumeratedDevice::Info &lhs, const EnumeratedDevice::Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}

bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_display_name == rhs.m_display_name && lhs.m_friendly_name == rhs.m_friendly_name && lhs.m_edid == rhs.m_edid && lhs.m_info == rhs.m_info;
}

bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_device_prep == rhs.m_device_prep && lhs.m_resolution == rhs.m_resolution && lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_hdr_state == rhs.m_hdr_state;
}
} // namespace display_device
22 changes: 17 additions & 5 deletions src/windows/include/display_device/windows/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -61,6 +61,16 @@ namespace display_device {
std::map<UINT32, std::size_t> m_source_id_to_path_index {}; /**< Maps source ids to its index in the path list. */
LUID m_adapter_id {}; /**< Adapter id shared by all source ids. */
std::optional<UINT32> m_active_source {}; /**< Currently active source id. */

/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index &&
lhs.m_adapter_id.HighPart == rhs.m_adapter_id.HighPart &&
lhs.m_adapter_id.LowPart == rhs.m_adapter_id.LowPart &&
lhs.m_active_source == rhs.m_active_source;
}
};

/**
Expand DownExpand Up@@ -95,7 +105,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs);
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}
};

/**
Expand DownExpand Up@@ -123,7 +135,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Initial &lhs, const Initial &rhs);
friend bool operator==(const Initial &lhs, const Initial &rhs) = default;
};

/**
Expand DownExpand Up@@ -151,7 +163,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Modified &lhs, const Modified &rhs);
friend bool operator==(const Modified &lhs, const Modified &rhs) = default;
};

Initial m_initial;
Expand All@@ -160,7 +172,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs);
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) = default;
};

/**
Expand All@@ -177,6 +189,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs);
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) = default;
};
} // namespace display_device
20 changes: 0 additions & 20 deletions src/windows/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,27 +6,7 @@
#include "display_device/windows/types.h"

namespace display_device {
bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}

bool SingleDisplayConfigState::Modified::hasModifications() const {
return !m_original_modes.empty() || !m_original_hdr_states.empty() || !m_original_primary_device.empty();
}

bool operator==(const SingleDisplayConfigState::Initial &lhs, const SingleDisplayConfigState::Initial &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_primary_devices == rhs.m_primary_devices;
}

bool operator==(const SingleDisplayConfigState::Modified &lhs, const SingleDisplayConfigState::Modified &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_original_modes == rhs.m_original_modes && lhs.m_original_hdr_states == rhs.m_original_hdr_states && lhs.m_original_primary_device == rhs.m_original_primary_device;
}

bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) {
return lhs.m_initial == rhs.m_initial && lhs.m_modified == rhs.m_modified;
}

bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) {
return lhs.m_hdr_blank_delay == rhs.m_hdr_blank_delay;
}
} // namespace display_device
12 changes: 4 additions & 8 deletions tests/unit/general/test_json.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,22 +19,18 @@ namespace display_device {
struct TestStruct {
struct Nested {
int m_c {};

friend bool operator==(const Nested &lhs, const Nested &rhs) = default;
};

std::string m_a {};
Nested m_b {};

friend bool operator==(const TestStruct &lhs, const TestStruct &rhs) = default;
};

using TestVariant = std::variant<double, Rational>;

bool operator==(const TestStruct::Nested &lhs, const TestStruct::Nested &rhs) {
return lhs.m_c == rhs.m_c;
}

bool operator==(const TestStruct &lhs, const TestStruct &rhs) {
return lhs.m_a == rhs.m_a && lhs.m_b == rhs.m_b;
}

DD_JSON_DEFINE_SERIALIZE_ENUM_GCOVR_EXCL_BR_LINE(TestEnum, {{TestEnum::Value1, "Value1"}, {TestEnum::Value2, "ValueMaybe2"}})
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct::Nested, c)
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct, a, b)
Expand Down
32 changes: 13 additions & 19 deletions tests/unit/windows/utils/comparison.cpp
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
// local includes
#include "comparison.h"

bool operator==(const LUID &lhs, const LUID &rhs) {
bool operator==(const LUID &lhs, const LUID &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.HighPart == rhs.HighPart && lhs.LowPart == rhs.LowPart;
}

bool operator==(const POINTL &lhs, const POINTL &rhs) {
bool operator==(const POINTL &lhs, const POINTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.x == rhs.x && lhs.y == rhs.y;
}

bool operator==(const RECTL &lhs, const RECTL &rhs) {
bool operator==(const RECTL &lhs, const RECTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.bottom == rhs.bottom && lhs.left == rhs.left && lhs.right == rhs.right && lhs.top == rhs.top;
}

bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) {
bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.Denominator == rhs.Denominator && lhs.Numerator == rhs.Numerator;
}

bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) {
bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.cx == rhs.cx && lhs.cy == rhs.cy;
}

bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -31,7 +31,7 @@ bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -47,15 +47,15 @@ bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.sourceInfo == rhs.sourceInfo && lhs.targetInfo == rhs.targetInfo && lhs.flags == rhs.flags;
}

bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.width == rhs.width && lhs.height == rhs.height && lhs.pixelFormat == rhs.pixelFormat && lhs.position == rhs.position;
}

bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format on
return lhs.pixelRate == rhs.pixelRate &&
lhs.hSyncFreq == rhs.hSyncFreq &&
Expand All@@ -67,15 +67,15 @@ bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_
// clang-format oon
}

bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.targetVideoSignalInfo == rhs.targetVideoSignalInfo;
}

bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.PathSourceSize == rhs.PathSourceSize && lhs.DesktopImageRegion == rhs.DesktopImageRegion && lhs.DesktopImageClip == rhs.DesktopImageClip;
}

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
if (lhs.infoType == rhs.infoType && lhs.id == rhs.id && lhs.adapterId == rhs.adapterId) {
if (lhs.infoType == DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE) {
return lhs.sourceMode == rhs.sourceMode;
Expand All@@ -90,9 +90,3 @@ bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INF
}
return false;
}

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index && lhs.m_adapter_id == rhs.m_adapter_id && lhs.m_active_source == rhs.m_active_source;
}
} // namespace display_device
4 changes: 0 additions & 4 deletions tests/unit/windows/utils/comparison.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,7 +29,3 @@ bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs);

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs);

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs);
} // namespace display_device
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 31 additions & 7 deletions src/common/include/display_device/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,8 @@
#pragma once

// system includes
#include <algorithm>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <functional>
Expand DownExpand Up@@ -70,7 +72,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Resolution &lhs, const Resolution &rhs);
friend bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}
};

/**
Expand All@@ -83,7 +87,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Point &lhs, const Point &rhs);
friend bool operator==(const Point &lhs, const Point &rhs) = default;
};

/**
Expand All@@ -96,14 +100,30 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Rational &lhs, const Rational &rhs);
friend bool operator==(const Rational &lhs, const Rational &rhs) = default;
};

/**
* @brief Floating point type.
*/
using FloatingPoint = std::variant<double, Rational>;

namespace detail {
inline bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

inline bool fuzzyCompare(const FloatingPoint &lhs, const FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}
} // namespace detail

/**
* @brief Parsed EDID data.
*/
Expand All@@ -122,7 +142,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EdidData &lhs, const EdidData &rhs);
friend bool operator==(const EdidData &lhs, const EdidData &rhs) = default;
};

/**
Expand All@@ -143,7 +163,11 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Info &lhs, const Info &rhs);
friend bool operator==(const Info &lhs, const Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && detail::fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
detail::fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}
};

std::string m_device_id {}; /**< A unique device ID used by this API to identify the device. */
Expand All@@ -155,7 +179,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs);
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) = default;
};

/**
Expand DownExpand Up@@ -189,6 +213,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs);
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) = default;
};
} // namespace display_device
44 changes: 0 additions & 44 deletions src/common/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,20 +14,6 @@
#include "display_device/logging.h"

namespace {
bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

bool fuzzyCompare(const display_device::FloatingPoint &lhs, const display_device::FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}

std::byte operator+(const std::byte lhs, const std::byte &rhs) {
return std::byte {static_cast<std::uint8_t>(static_cast<int>(lhs) + static_cast<int>(rhs))};
}
Expand All@@ -49,18 +35,6 @@ namespace {
} // namespace

namespace display_device {
bool operator==(const Rational &lhs, const Rational &rhs) {
return lhs.m_numerator == rhs.m_numerator && lhs.m_denominator == rhs.m_denominator;
}

bool operator==(const Point &lhs, const Point &rhs) {
return lhs.m_x == rhs.m_x && lhs.m_y == rhs.m_y;
}

bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}

std::optional<EdidData> EdidData::parse(const std::vector<std::byte> &data) {
if (data.empty()) {
return std::nullopt;
Expand DownExpand Up@@ -139,22 +113,4 @@ namespace display_device {

return edid;
}

bool operator==(const EdidData &lhs, const EdidData &rhs) {
return lhs.m_manufacturer_id == rhs.m_manufacturer_id && lhs.m_product_code == rhs.m_product_code && lhs.m_serial_number == rhs.m_serial_number;
}

bool operator==(const EnumeratedDevice::Info &lhs, const EnumeratedDevice::Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}

bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_display_name == rhs.m_display_name && lhs.m_friendly_name == rhs.m_friendly_name && lhs.m_edid == rhs.m_edid && lhs.m_info == rhs.m_info;
}

bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_device_prep == rhs.m_device_prep && lhs.m_resolution == rhs.m_resolution && lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_hdr_state == rhs.m_hdr_state;
}
} // namespace display_device
22 changes: 17 additions & 5 deletions src/windows/include/display_device/windows/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -61,6 +61,16 @@ namespace display_device {
std::map<UINT32, std::size_t> m_source_id_to_path_index {}; /**< Maps source ids to its index in the path list. */
LUID m_adapter_id {}; /**< Adapter id shared by all source ids. */
std::optional<UINT32> m_active_source {}; /**< Currently active source id. */

/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index &&
lhs.m_adapter_id.HighPart == rhs.m_adapter_id.HighPart &&
lhs.m_adapter_id.LowPart == rhs.m_adapter_id.LowPart &&
lhs.m_active_source == rhs.m_active_source;
}
};

/**
Expand DownExpand Up@@ -95,7 +105,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs);
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}
};

/**
Expand DownExpand Up@@ -123,7 +135,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Initial &lhs, const Initial &rhs);
friend bool operator==(const Initial &lhs, const Initial &rhs) = default;
};

/**
Expand DownExpand Up@@ -151,7 +163,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Modified &lhs, const Modified &rhs);
friend bool operator==(const Modified &lhs, const Modified &rhs) = default;
};

Initial m_initial;
Expand All@@ -160,7 +172,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs);
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) = default;
};

/**
Expand All@@ -177,6 +189,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs);
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) = default;
};
} // namespace display_device
20 changes: 0 additions & 20 deletions src/windows/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,27 +6,7 @@
#include "display_device/windows/types.h"

namespace display_device {
bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}

bool SingleDisplayConfigState::Modified::hasModifications() const {
return !m_original_modes.empty() || !m_original_hdr_states.empty() || !m_original_primary_device.empty();
}

bool operator==(const SingleDisplayConfigState::Initial &lhs, const SingleDisplayConfigState::Initial &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_primary_devices == rhs.m_primary_devices;
}

bool operator==(const SingleDisplayConfigState::Modified &lhs, const SingleDisplayConfigState::Modified &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_original_modes == rhs.m_original_modes && lhs.m_original_hdr_states == rhs.m_original_hdr_states && lhs.m_original_primary_device == rhs.m_original_primary_device;
}

bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) {
return lhs.m_initial == rhs.m_initial && lhs.m_modified == rhs.m_modified;
}

bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) {
return lhs.m_hdr_blank_delay == rhs.m_hdr_blank_delay;
}
} // namespace display_device
12 changes: 4 additions & 8 deletions tests/unit/general/test_json.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,22 +19,18 @@ namespace display_device {
struct TestStruct {
struct Nested {
int m_c {};

friend bool operator==(const Nested &lhs, const Nested &rhs) = default;
};

std::string m_a {};
Nested m_b {};

friend bool operator==(const TestStruct &lhs, const TestStruct &rhs) = default;
};

using TestVariant = std::variant<double, Rational>;

bool operator==(const TestStruct::Nested &lhs, const TestStruct::Nested &rhs) {
return lhs.m_c == rhs.m_c;
}

bool operator==(const TestStruct &lhs, const TestStruct &rhs) {
return lhs.m_a == rhs.m_a && lhs.m_b == rhs.m_b;
}

DD_JSON_DEFINE_SERIALIZE_ENUM_GCOVR_EXCL_BR_LINE(TestEnum, {{TestEnum::Value1, "Value1"}, {TestEnum::Value2, "ValueMaybe2"}})
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct::Nested, c)
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct, a, b)
Expand Down
32 changes: 13 additions & 19 deletions tests/unit/windows/utils/comparison.cpp
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
// local includes
#include "comparison.h"

bool operator==(const LUID &lhs, const LUID &rhs) {
bool operator==(const LUID &lhs, const LUID &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.HighPart == rhs.HighPart && lhs.LowPart == rhs.LowPart;
}

bool operator==(const POINTL &lhs, const POINTL &rhs) {
bool operator==(const POINTL &lhs, const POINTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.x == rhs.x && lhs.y == rhs.y;
}

bool operator==(const RECTL &lhs, const RECTL &rhs) {
bool operator==(const RECTL &lhs, const RECTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.bottom == rhs.bottom && lhs.left == rhs.left && lhs.right == rhs.right && lhs.top == rhs.top;
}

bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) {
bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.Denominator == rhs.Denominator && lhs.Numerator == rhs.Numerator;
}

bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) {
bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.cx == rhs.cx && lhs.cy == rhs.cy;
}

bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -31,7 +31,7 @@ bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -47,15 +47,15 @@ bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.sourceInfo == rhs.sourceInfo && lhs.targetInfo == rhs.targetInfo && lhs.flags == rhs.flags;
}

bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.width == rhs.width && lhs.height == rhs.height && lhs.pixelFormat == rhs.pixelFormat && lhs.position == rhs.position;
}

bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format on
return lhs.pixelRate == rhs.pixelRate &&
lhs.hSyncFreq == rhs.hSyncFreq &&
Expand All@@ -67,15 +67,15 @@ bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_
// clang-format oon
}

bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.targetVideoSignalInfo == rhs.targetVideoSignalInfo;
}

bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.PathSourceSize == rhs.PathSourceSize && lhs.DesktopImageRegion == rhs.DesktopImageRegion && lhs.DesktopImageClip == rhs.DesktopImageClip;
}

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
if (lhs.infoType == rhs.infoType && lhs.id == rhs.id && lhs.adapterId == rhs.adapterId) {
if (lhs.infoType == DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE) {
return lhs.sourceMode == rhs.sourceMode;
Expand All@@ -90,9 +90,3 @@ bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INF
}
return false;
}

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index && lhs.m_adapter_id == rhs.m_adapter_id && lhs.m_active_source == rhs.m_active_source;
}
} // namespace display_device
4 changes: 0 additions & 4 deletions tests/unit/windows/utils/comparison.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,7 +29,3 @@ bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs);

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs);

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs);
} // namespace display_device
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 31 additions & 7 deletions src/common/include/display_device/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,8 @@
#pragma once

// system includes
#include <algorithm>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <functional>
Expand DownExpand Up@@ -70,7 +72,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Resolution &lhs, const Resolution &rhs);
friend bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}
};

/**
Expand All@@ -83,7 +87,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Point &lhs, const Point &rhs);
friend bool operator==(const Point &lhs, const Point &rhs) = default;
};

/**
Expand All@@ -96,14 +100,30 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Rational &lhs, const Rational &rhs);
friend bool operator==(const Rational &lhs, const Rational &rhs) = default;
};

/**
* @brief Floating point type.
*/
using FloatingPoint = std::variant<double, Rational>;

namespace detail {
inline bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

inline bool fuzzyCompare(const FloatingPoint &lhs, const FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}
} // namespace detail

/**
* @brief Parsed EDID data.
*/
Expand All@@ -122,7 +142,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EdidData &lhs, const EdidData &rhs);
friend bool operator==(const EdidData &lhs, const EdidData &rhs) = default;
};

/**
Expand All@@ -143,7 +163,11 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Info &lhs, const Info &rhs);
friend bool operator==(const Info &lhs, const Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && detail::fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
detail::fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}
};

std::string m_device_id {}; /**< A unique device ID used by this API to identify the device. */
Expand All@@ -155,7 +179,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs);
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) = default;
};

/**
Expand DownExpand Up@@ -189,6 +213,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs);
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) = default;
};
} // namespace display_device
44 changes: 0 additions & 44 deletions src/common/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,20 +14,6 @@
#include "display_device/logging.h"

namespace {
bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

bool fuzzyCompare(const display_device::FloatingPoint &lhs, const display_device::FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}

std::byte operator+(const std::byte lhs, const std::byte &rhs) {
return std::byte {static_cast<std::uint8_t>(static_cast<int>(lhs) + static_cast<int>(rhs))};
}
Expand All@@ -49,18 +35,6 @@ namespace {
} // namespace

namespace display_device {
bool operator==(const Rational &lhs, const Rational &rhs) {
return lhs.m_numerator == rhs.m_numerator && lhs.m_denominator == rhs.m_denominator;
}

bool operator==(const Point &lhs, const Point &rhs) {
return lhs.m_x == rhs.m_x && lhs.m_y == rhs.m_y;
}

bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}

std::optional<EdidData> EdidData::parse(const std::vector<std::byte> &data) {
if (data.empty()) {
return std::nullopt;
Expand DownExpand Up@@ -139,22 +113,4 @@ namespace display_device {

return edid;
}

bool operator==(const EdidData &lhs, const EdidData &rhs) {
return lhs.m_manufacturer_id == rhs.m_manufacturer_id && lhs.m_product_code == rhs.m_product_code && lhs.m_serial_number == rhs.m_serial_number;
}

bool operator==(const EnumeratedDevice::Info &lhs, const EnumeratedDevice::Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}

bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_display_name == rhs.m_display_name && lhs.m_friendly_name == rhs.m_friendly_name && lhs.m_edid == rhs.m_edid && lhs.m_info == rhs.m_info;
}

bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_device_prep == rhs.m_device_prep && lhs.m_resolution == rhs.m_resolution && lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_hdr_state == rhs.m_hdr_state;
}
} // namespace display_device
22 changes: 17 additions & 5 deletions src/windows/include/display_device/windows/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -61,6 +61,16 @@ namespace display_device {
std::map<UINT32, std::size_t> m_source_id_to_path_index {}; /**< Maps source ids to its index in the path list. */
LUID m_adapter_id {}; /**< Adapter id shared by all source ids. */
std::optional<UINT32> m_active_source {}; /**< Currently active source id. */

/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index &&
lhs.m_adapter_id.HighPart == rhs.m_adapter_id.HighPart &&
lhs.m_adapter_id.LowPart == rhs.m_adapter_id.LowPart &&
lhs.m_active_source == rhs.m_active_source;
}
};

/**
Expand DownExpand Up@@ -95,7 +105,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs);
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}
};

/**
Expand DownExpand Up@@ -123,7 +135,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Initial &lhs, const Initial &rhs);
friend bool operator==(const Initial &lhs, const Initial &rhs) = default;
};

/**
Expand DownExpand Up@@ -151,7 +163,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Modified &lhs, const Modified &rhs);
friend bool operator==(const Modified &lhs, const Modified &rhs) = default;
};

Initial m_initial;
Expand All@@ -160,7 +172,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs);
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) = default;
};

/**
Expand All@@ -177,6 +189,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs);
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) = default;
};
} // namespace display_device
20 changes: 0 additions & 20 deletions src/windows/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,27 +6,7 @@
#include "display_device/windows/types.h"

namespace display_device {
bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}

bool SingleDisplayConfigState::Modified::hasModifications() const {
return !m_original_modes.empty() || !m_original_hdr_states.empty() || !m_original_primary_device.empty();
}

bool operator==(const SingleDisplayConfigState::Initial &lhs, const SingleDisplayConfigState::Initial &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_primary_devices == rhs.m_primary_devices;
}

bool operator==(const SingleDisplayConfigState::Modified &lhs, const SingleDisplayConfigState::Modified &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_original_modes == rhs.m_original_modes && lhs.m_original_hdr_states == rhs.m_original_hdr_states && lhs.m_original_primary_device == rhs.m_original_primary_device;
}

bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) {
return lhs.m_initial == rhs.m_initial && lhs.m_modified == rhs.m_modified;
}

bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) {
return lhs.m_hdr_blank_delay == rhs.m_hdr_blank_delay;
}
} // namespace display_device
12 changes: 4 additions & 8 deletions tests/unit/general/test_json.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,22 +19,18 @@ namespace display_device {
struct TestStruct {
struct Nested {
int m_c {};

friend bool operator==(const Nested &lhs, const Nested &rhs) = default;
};

std::string m_a {};
Nested m_b {};

friend bool operator==(const TestStruct &lhs, const TestStruct &rhs) = default;
};

using TestVariant = std::variant<double, Rational>;

bool operator==(const TestStruct::Nested &lhs, const TestStruct::Nested &rhs) {
return lhs.m_c == rhs.m_c;
}

bool operator==(const TestStruct &lhs, const TestStruct &rhs) {
return lhs.m_a == rhs.m_a && lhs.m_b == rhs.m_b;
}

DD_JSON_DEFINE_SERIALIZE_ENUM_GCOVR_EXCL_BR_LINE(TestEnum, {{TestEnum::Value1, "Value1"}, {TestEnum::Value2, "ValueMaybe2"}})
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct::Nested, c)
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct, a, b)
Expand Down
32 changes: 13 additions & 19 deletions tests/unit/windows/utils/comparison.cpp
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
// local includes
#include "comparison.h"

bool operator==(const LUID &lhs, const LUID &rhs) {
bool operator==(const LUID &lhs, const LUID &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.HighPart == rhs.HighPart && lhs.LowPart == rhs.LowPart;
}

bool operator==(const POINTL &lhs, const POINTL &rhs) {
bool operator==(const POINTL &lhs, const POINTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.x == rhs.x && lhs.y == rhs.y;
}

bool operator==(const RECTL &lhs, const RECTL &rhs) {
bool operator==(const RECTL &lhs, const RECTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.bottom == rhs.bottom && lhs.left == rhs.left && lhs.right == rhs.right && lhs.top == rhs.top;
}

bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) {
bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.Denominator == rhs.Denominator && lhs.Numerator == rhs.Numerator;
}

bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) {
bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.cx == rhs.cx && lhs.cy == rhs.cy;
}

bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -31,7 +31,7 @@ bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -47,15 +47,15 @@ bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.sourceInfo == rhs.sourceInfo && lhs.targetInfo == rhs.targetInfo && lhs.flags == rhs.flags;
}

bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.width == rhs.width && lhs.height == rhs.height && lhs.pixelFormat == rhs.pixelFormat && lhs.position == rhs.position;
}

bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format on
return lhs.pixelRate == rhs.pixelRate &&
lhs.hSyncFreq == rhs.hSyncFreq &&
Expand All@@ -67,15 +67,15 @@ bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_
// clang-format oon
}

bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.targetVideoSignalInfo == rhs.targetVideoSignalInfo;
}

bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.PathSourceSize == rhs.PathSourceSize && lhs.DesktopImageRegion == rhs.DesktopImageRegion && lhs.DesktopImageClip == rhs.DesktopImageClip;
}

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
if (lhs.infoType == rhs.infoType && lhs.id == rhs.id && lhs.adapterId == rhs.adapterId) {
if (lhs.infoType == DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE) {
return lhs.sourceMode == rhs.sourceMode;
Expand All@@ -90,9 +90,3 @@ bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INF
}
return false;
}

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index && lhs.m_adapter_id == rhs.m_adapter_id && lhs.m_active_source == rhs.m_active_source;
}
} // namespace display_device
4 changes: 0 additions & 4 deletions tests/unit/windows/utils/comparison.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,7 +29,3 @@ bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs);

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs);

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs);
} // namespace display_device
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 31 additions & 7 deletions src/common/include/display_device/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,8 @@
#pragma once

// system includes
#include <algorithm>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <functional>
Expand DownExpand Up@@ -70,7 +72,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Resolution &lhs, const Resolution &rhs);
friend bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}
};

/**
Expand All@@ -83,7 +87,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Point &lhs, const Point &rhs);
friend bool operator==(const Point &lhs, const Point &rhs) = default;
};

/**
Expand All@@ -96,14 +100,30 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Rational &lhs, const Rational &rhs);
friend bool operator==(const Rational &lhs, const Rational &rhs) = default;
};

/**
* @brief Floating point type.
*/
using FloatingPoint = std::variant<double, Rational>;

namespace detail {
inline bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

inline bool fuzzyCompare(const FloatingPoint &lhs, const FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}
} // namespace detail

/**
* @brief Parsed EDID data.
*/
Expand All@@ -122,7 +142,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EdidData &lhs, const EdidData &rhs);
friend bool operator==(const EdidData &lhs, const EdidData &rhs) = default;
};

/**
Expand All@@ -143,7 +163,11 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Info &lhs, const Info &rhs);
friend bool operator==(const Info &lhs, const Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && detail::fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
detail::fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}
};

std::string m_device_id {}; /**< A unique device ID used by this API to identify the device. */
Expand All@@ -155,7 +179,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs);
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) = default;
};

/**
Expand DownExpand Up@@ -189,6 +213,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs);
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) = default;
};
} // namespace display_device
44 changes: 0 additions & 44 deletions src/common/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,20 +14,6 @@
#include "display_device/logging.h"

namespace {
bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

bool fuzzyCompare(const display_device::FloatingPoint &lhs, const display_device::FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}

std::byte operator+(const std::byte lhs, const std::byte &rhs) {
return std::byte {static_cast<std::uint8_t>(static_cast<int>(lhs) + static_cast<int>(rhs))};
}
Expand All@@ -49,18 +35,6 @@ namespace {
} // namespace

namespace display_device {
bool operator==(const Rational &lhs, const Rational &rhs) {
return lhs.m_numerator == rhs.m_numerator && lhs.m_denominator == rhs.m_denominator;
}

bool operator==(const Point &lhs, const Point &rhs) {
return lhs.m_x == rhs.m_x && lhs.m_y == rhs.m_y;
}

bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}

std::optional<EdidData> EdidData::parse(const std::vector<std::byte> &data) {
if (data.empty()) {
return std::nullopt;
Expand DownExpand Up@@ -139,22 +113,4 @@ namespace display_device {

return edid;
}

bool operator==(const EdidData &lhs, const EdidData &rhs) {
return lhs.m_manufacturer_id == rhs.m_manufacturer_id && lhs.m_product_code == rhs.m_product_code && lhs.m_serial_number == rhs.m_serial_number;
}

bool operator==(const EnumeratedDevice::Info &lhs, const EnumeratedDevice::Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}

bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_display_name == rhs.m_display_name && lhs.m_friendly_name == rhs.m_friendly_name && lhs.m_edid == rhs.m_edid && lhs.m_info == rhs.m_info;
}

bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_device_prep == rhs.m_device_prep && lhs.m_resolution == rhs.m_resolution && lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_hdr_state == rhs.m_hdr_state;
}
} // namespace display_device
22 changes: 17 additions & 5 deletions src/windows/include/display_device/windows/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -61,6 +61,16 @@ namespace display_device {
std::map<UINT32, std::size_t> m_source_id_to_path_index {}; /**< Maps source ids to its index in the path list. */
LUID m_adapter_id {}; /**< Adapter id shared by all source ids. */
std::optional<UINT32> m_active_source {}; /**< Currently active source id. */

/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index &&
lhs.m_adapter_id.HighPart == rhs.m_adapter_id.HighPart &&
lhs.m_adapter_id.LowPart == rhs.m_adapter_id.LowPart &&
lhs.m_active_source == rhs.m_active_source;
}
};

/**
Expand DownExpand Up@@ -95,7 +105,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs);
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}
};

/**
Expand DownExpand Up@@ -123,7 +135,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Initial &lhs, const Initial &rhs);
friend bool operator==(const Initial &lhs, const Initial &rhs) = default;
};

/**
Expand DownExpand Up@@ -151,7 +163,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Modified &lhs, const Modified &rhs);
friend bool operator==(const Modified &lhs, const Modified &rhs) = default;
};

Initial m_initial;
Expand All@@ -160,7 +172,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs);
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) = default;
};

/**
Expand All@@ -177,6 +189,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs);
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) = default;
};
} // namespace display_device
20 changes: 0 additions & 20 deletions src/windows/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,27 +6,7 @@
#include "display_device/windows/types.h"

namespace display_device {
bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}

bool SingleDisplayConfigState::Modified::hasModifications() const {
return !m_original_modes.empty() || !m_original_hdr_states.empty() || !m_original_primary_device.empty();
}

bool operator==(const SingleDisplayConfigState::Initial &lhs, const SingleDisplayConfigState::Initial &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_primary_devices == rhs.m_primary_devices;
}

bool operator==(const SingleDisplayConfigState::Modified &lhs, const SingleDisplayConfigState::Modified &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_original_modes == rhs.m_original_modes && lhs.m_original_hdr_states == rhs.m_original_hdr_states && lhs.m_original_primary_device == rhs.m_original_primary_device;
}

bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) {
return lhs.m_initial == rhs.m_initial && lhs.m_modified == rhs.m_modified;
}

bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) {
return lhs.m_hdr_blank_delay == rhs.m_hdr_blank_delay;
}
} // namespace display_device
12 changes: 4 additions & 8 deletions tests/unit/general/test_json.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,22 +19,18 @@ namespace display_device {
struct TestStruct {
struct Nested {
int m_c {};

friend bool operator==(const Nested &lhs, const Nested &rhs) = default;
};

std::string m_a {};
Nested m_b {};

friend bool operator==(const TestStruct &lhs, const TestStruct &rhs) = default;
};

using TestVariant = std::variant<double, Rational>;

bool operator==(const TestStruct::Nested &lhs, const TestStruct::Nested &rhs) {
return lhs.m_c == rhs.m_c;
}

bool operator==(const TestStruct &lhs, const TestStruct &rhs) {
return lhs.m_a == rhs.m_a && lhs.m_b == rhs.m_b;
}

DD_JSON_DEFINE_SERIALIZE_ENUM_GCOVR_EXCL_BR_LINE(TestEnum, {{TestEnum::Value1, "Value1"}, {TestEnum::Value2, "ValueMaybe2"}})
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct::Nested, c)
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct, a, b)
Expand Down
32 changes: 13 additions & 19 deletions tests/unit/windows/utils/comparison.cpp
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
// local includes
#include "comparison.h"

bool operator==(const LUID &lhs, const LUID &rhs) {
bool operator==(const LUID &lhs, const LUID &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.HighPart == rhs.HighPart && lhs.LowPart == rhs.LowPart;
}

bool operator==(const POINTL &lhs, const POINTL &rhs) {
bool operator==(const POINTL &lhs, const POINTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.x == rhs.x && lhs.y == rhs.y;
}

bool operator==(const RECTL &lhs, const RECTL &rhs) {
bool operator==(const RECTL &lhs, const RECTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.bottom == rhs.bottom && lhs.left == rhs.left && lhs.right == rhs.right && lhs.top == rhs.top;
}

bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) {
bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.Denominator == rhs.Denominator && lhs.Numerator == rhs.Numerator;
}

bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) {
bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.cx == rhs.cx && lhs.cy == rhs.cy;
}

bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -31,7 +31,7 @@ bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -47,15 +47,15 @@ bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.sourceInfo == rhs.sourceInfo && lhs.targetInfo == rhs.targetInfo && lhs.flags == rhs.flags;
}

bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.width == rhs.width && lhs.height == rhs.height && lhs.pixelFormat == rhs.pixelFormat && lhs.position == rhs.position;
}

bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format on
return lhs.pixelRate == rhs.pixelRate &&
lhs.hSyncFreq == rhs.hSyncFreq &&
Expand All@@ -67,15 +67,15 @@ bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_
// clang-format oon
}

bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.targetVideoSignalInfo == rhs.targetVideoSignalInfo;
}

bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.PathSourceSize == rhs.PathSourceSize && lhs.DesktopImageRegion == rhs.DesktopImageRegion && lhs.DesktopImageClip == rhs.DesktopImageClip;
}

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
if (lhs.infoType == rhs.infoType && lhs.id == rhs.id && lhs.adapterId == rhs.adapterId) {
if (lhs.infoType == DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE) {
return lhs.sourceMode == rhs.sourceMode;
Expand All@@ -90,9 +90,3 @@ bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INF
}
return false;
}

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index && lhs.m_adapter_id == rhs.m_adapter_id && lhs.m_active_source == rhs.m_active_source;
}
} // namespace display_device
4 changes: 0 additions & 4 deletions tests/unit/windows/utils/comparison.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,7 +29,3 @@ bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs);

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs);

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs);
} // namespace display_device
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 31 additions & 7 deletions src/common/include/display_device/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,8 @@
#pragma once

// system includes
#include <algorithm>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <functional>
Expand DownExpand Up@@ -70,7 +72,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Resolution &lhs, const Resolution &rhs);
friend bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}
};

/**
Expand All@@ -83,7 +87,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Point &lhs, const Point &rhs);
friend bool operator==(const Point &lhs, const Point &rhs) = default;
};

/**
Expand All@@ -96,14 +100,30 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Rational &lhs, const Rational &rhs);
friend bool operator==(const Rational &lhs, const Rational &rhs) = default;
};

/**
* @brief Floating point type.
*/
using FloatingPoint = std::variant<double, Rational>;

namespace detail {
inline bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

inline bool fuzzyCompare(const FloatingPoint &lhs, const FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}
} // namespace detail

/**
* @brief Parsed EDID data.
*/
Expand All@@ -122,7 +142,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EdidData &lhs, const EdidData &rhs);
friend bool operator==(const EdidData &lhs, const EdidData &rhs) = default;
};

/**
Expand All@@ -143,7 +163,11 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Info &lhs, const Info &rhs);
friend bool operator==(const Info &lhs, const Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && detail::fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
detail::fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}
};

std::string m_device_id {}; /**< A unique device ID used by this API to identify the device. */
Expand All@@ -155,7 +179,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs);
friend bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) = default;
};

/**
Expand DownExpand Up@@ -189,6 +213,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs);
friend bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) = default;
};
} // namespace display_device
44 changes: 0 additions & 44 deletions src/common/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,20 +14,6 @@
#include "display_device/logging.h"

namespace {
bool fuzzyCompare(const double lhs, const double rhs) {
return std::abs(lhs - rhs) * 1000000000000. <= std::min(std::abs(lhs), std::abs(rhs));
}

bool fuzzyCompare(const display_device::FloatingPoint &lhs, const display_device::FloatingPoint &rhs) {
if (lhs.index() == rhs.index()) {
if (std::holds_alternative<double>(lhs)) {
return fuzzyCompare(std::get<double>(lhs), std::get<double>(rhs));
}
return lhs == rhs;
}
return false;
}

std::byte operator+(const std::byte lhs, const std::byte &rhs) {
return std::byte {static_cast<std::uint8_t>(static_cast<int>(lhs) + static_cast<int>(rhs))};
}
Expand All@@ -49,18 +35,6 @@ namespace {
} // namespace

namespace display_device {
bool operator==(const Rational &lhs, const Rational &rhs) {
return lhs.m_numerator == rhs.m_numerator && lhs.m_denominator == rhs.m_denominator;
}

bool operator==(const Point &lhs, const Point &rhs) {
return lhs.m_x == rhs.m_x && lhs.m_y == rhs.m_y;
}

bool operator==(const Resolution &lhs, const Resolution &rhs) {
return lhs.m_height == rhs.m_height && lhs.m_width == rhs.m_width;
}

std::optional<EdidData> EdidData::parse(const std::vector<std::byte> &data) {
if (data.empty()) {
return std::nullopt;
Expand DownExpand Up@@ -139,22 +113,4 @@ namespace display_device {

return edid;
}

bool operator==(const EdidData &lhs, const EdidData &rhs) {
return lhs.m_manufacturer_id == rhs.m_manufacturer_id && lhs.m_product_code == rhs.m_product_code && lhs.m_serial_number == rhs.m_serial_number;
}

bool operator==(const EnumeratedDevice::Info &lhs, const EnumeratedDevice::Info &rhs) {
return lhs.m_resolution == rhs.m_resolution && fuzzyCompare(lhs.m_resolution_scale, rhs.m_resolution_scale) &&
fuzzyCompare(lhs.m_refresh_rate, rhs.m_refresh_rate) && lhs.m_primary == rhs.m_primary &&
lhs.m_origin_point == rhs.m_origin_point && lhs.m_hdr_state == rhs.m_hdr_state;
}

bool operator==(const EnumeratedDevice &lhs, const EnumeratedDevice &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_display_name == rhs.m_display_name && lhs.m_friendly_name == rhs.m_friendly_name && lhs.m_edid == rhs.m_edid && lhs.m_info == rhs.m_info;
}

bool operator==(const SingleDisplayConfiguration &lhs, const SingleDisplayConfiguration &rhs) {
return lhs.m_device_id == rhs.m_device_id && lhs.m_device_prep == rhs.m_device_prep && lhs.m_resolution == rhs.m_resolution && lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_hdr_state == rhs.m_hdr_state;
}
} // namespace display_device
22 changes: 17 additions & 5 deletions src/windows/include/display_device/windows/types.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -61,6 +61,16 @@ namespace display_device {
std::map<UINT32, std::size_t> m_source_id_to_path_index {}; /**< Maps source ids to its index in the path list. */
LUID m_adapter_id {}; /**< Adapter id shared by all source ids. */
std::optional<UINT32> m_active_source {}; /**< Currently active source id. */

/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index &&
lhs.m_adapter_id.HighPart == rhs.m_adapter_id.HighPart &&
lhs.m_adapter_id.LowPart == rhs.m_adapter_id.LowPart &&
lhs.m_active_source == rhs.m_active_source;
}
};

/**
Expand DownExpand Up@@ -95,7 +105,9 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs);
friend bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}
};

/**
Expand DownExpand Up@@ -123,7 +135,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Initial &lhs, const Initial &rhs);
friend bool operator==(const Initial &lhs, const Initial &rhs) = default;
};

/**
Expand DownExpand Up@@ -151,7 +163,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const Modified &lhs, const Modified &rhs);
friend bool operator==(const Modified &lhs, const Modified &rhs) = default;
};

Initial m_initial;
Expand All@@ -160,7 +172,7 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs);
friend bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) = default;
};

/**
Expand All@@ -177,6 +189,6 @@ namespace display_device {
/**
* @brief Comparator for strict equality.
*/
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs);
friend bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) = default;
};
} // namespace display_device
20 changes: 0 additions & 20 deletions src/windows/types.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,27 +6,7 @@
#include "display_device/windows/types.h"

namespace display_device {
bool operator==(const DisplayMode &lhs, const DisplayMode &rhs) {
return lhs.m_refresh_rate == rhs.m_refresh_rate && lhs.m_resolution == rhs.m_resolution;
}

bool SingleDisplayConfigState::Modified::hasModifications() const {
return !m_original_modes.empty() || !m_original_hdr_states.empty() || !m_original_primary_device.empty();
}

bool operator==(const SingleDisplayConfigState::Initial &lhs, const SingleDisplayConfigState::Initial &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_primary_devices == rhs.m_primary_devices;
}

bool operator==(const SingleDisplayConfigState::Modified &lhs, const SingleDisplayConfigState::Modified &rhs) {
return lhs.m_topology == rhs.m_topology && lhs.m_original_modes == rhs.m_original_modes && lhs.m_original_hdr_states == rhs.m_original_hdr_states && lhs.m_original_primary_device == rhs.m_original_primary_device;
}

bool operator==(const SingleDisplayConfigState &lhs, const SingleDisplayConfigState &rhs) {
return lhs.m_initial == rhs.m_initial && lhs.m_modified == rhs.m_modified;
}

bool operator==(const WinWorkarounds &lhs, const WinWorkarounds &rhs) {
return lhs.m_hdr_blank_delay == rhs.m_hdr_blank_delay;
}
} // namespace display_device
12 changes: 4 additions & 8 deletions tests/unit/general/test_json.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,22 +19,18 @@ namespace display_device {
struct TestStruct {
struct Nested {
int m_c {};

friend bool operator==(const Nested &lhs, const Nested &rhs) = default;
};

std::string m_a {};
Nested m_b {};

friend bool operator==(const TestStruct &lhs, const TestStruct &rhs) = default;
};

using TestVariant = std::variant<double, Rational>;

bool operator==(const TestStruct::Nested &lhs, const TestStruct::Nested &rhs) {
return lhs.m_c == rhs.m_c;
}

bool operator==(const TestStruct &lhs, const TestStruct &rhs) {
return lhs.m_a == rhs.m_a && lhs.m_b == rhs.m_b;
}

DD_JSON_DEFINE_SERIALIZE_ENUM_GCOVR_EXCL_BR_LINE(TestEnum, {{TestEnum::Value1, "Value1"}, {TestEnum::Value2, "ValueMaybe2"}})
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct::Nested, c)
DD_JSON_DEFINE_SERIALIZE_STRUCT(TestStruct, a, b)
Expand Down
32 changes: 13 additions & 19 deletions tests/unit/windows/utils/comparison.cpp
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
// local includes
#include "comparison.h"

bool operator==(const LUID &lhs, const LUID &rhs) {
bool operator==(const LUID &lhs, const LUID &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.HighPart == rhs.HighPart && lhs.LowPart == rhs.LowPart;
}

bool operator==(const POINTL &lhs, const POINTL &rhs) {
bool operator==(const POINTL &lhs, const POINTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.x == rhs.x && lhs.y == rhs.y;
}

bool operator==(const RECTL &lhs, const RECTL &rhs) {
bool operator==(const RECTL &lhs, const RECTL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.bottom == rhs.bottom && lhs.left == rhs.left && lhs.right == rhs.right && lhs.top == rhs.top;
}

bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) {
bool operator==(const DISPLAYCONFIG_RATIONAL &lhs, const DISPLAYCONFIG_RATIONAL &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.Denominator == rhs.Denominator && lhs.Numerator == rhs.Numerator;
}

bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) {
bool operator==(const DISPLAYCONFIG_2DREGION &lhs, const DISPLAYCONFIG_2DREGION &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.cx == rhs.cx && lhs.cy == rhs.cy;
}

bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_PATH_SOURCE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -31,7 +31,7 @@ bool operator==(const DISPLAYCONFIG_PATH_SOURCE_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_PATH_TARGET_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format off
return lhs.adapterId == rhs.adapterId &&
lhs.id == rhs.id &&
Expand All@@ -47,15 +47,15 @@ bool operator==(const DISPLAYCONFIG_PATH_TARGET_INFO &lhs, const DISPLAYCONFIG_P
// clang-format on
}

bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_PATH_INFO &lhs, const DISPLAYCONFIG_PATH_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.sourceInfo == rhs.sourceInfo && lhs.targetInfo == rhs.targetInfo && lhs.flags == rhs.flags;
}

bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_SOURCE_MODE &lhs, const DISPLAYCONFIG_SOURCE_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.width == rhs.width && lhs.height == rhs.height && lhs.pixelFormat == rhs.pixelFormat && lhs.position == rhs.position;
}

bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
// clang-format on
return lhs.pixelRate == rhs.pixelRate &&
lhs.hSyncFreq == rhs.hSyncFreq &&
Expand All@@ -67,15 +67,15 @@ bool operator==(const DISPLAYCONFIG_VIDEO_SIGNAL_INFO &lhs, const DISPLAYCONFIG_
// clang-format oon
}

bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) {
bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET_MODE &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.targetVideoSignalInfo == rhs.targetVideoSignalInfo;
}

bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
return lhs.PathSourceSize == rhs.PathSourceSize && lhs.DesktopImageRegion == rhs.DesktopImageRegion && lhs.DesktopImageClip == rhs.DesktopImageClip;
}

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) {
bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs) { // NOSONAR(cpp:S2807): Windows SDK types cannot declare hidden friend test helpers.
if (lhs.infoType == rhs.infoType && lhs.id == rhs.id && lhs.adapterId == rhs.adapterId) {
if (lhs.infoType == DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE) {
return lhs.sourceMode == rhs.sourceMode;
Expand All@@ -90,9 +90,3 @@ bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INF
}
return false;
}

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs) {
return lhs.m_source_id_to_path_index == rhs.m_source_id_to_path_index && lhs.m_adapter_id == rhs.m_adapter_id && lhs.m_active_source == rhs.m_active_source;
}
} // namespace display_device
4 changes: 0 additions & 4 deletions tests/unit/windows/utils/comparison.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,7 +29,3 @@ bool operator==(const DISPLAYCONFIG_TARGET_MODE &lhs, const DISPLAYCONFIG_TARGET
bool operator==(const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &lhs, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &rhs);

bool operator==(const DISPLAYCONFIG_MODE_INFO &lhs, const DISPLAYCONFIG_MODE_INFO &rhs);

namespace display_device {
bool operator==(const PathSourceIndexData &lhs, const PathSourceIndexData &rhs);
} // namespace display_device
Loading