Skip to content

Commit 1e45679

Browse files
committed
core: Move metadata struct to device info
1 parent 5e427fd commit 1e45679

File tree

11 files changed

+33
-56
lines changed

11 files changed

+33
-56
lines changed

src/apps/calibrate/calibrate.hpp

+2-5
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
#include <filesystem>
2121
#include <fstream>
2222
#include <iostream>
23-
#include <optional>
2423
#include <string>
2524
#include <vector>
2625

@@ -44,10 +43,8 @@ class Calibrate : public core::Application {
4443
f64 m_diagonal;
4544

4645
public:
47-
Calibrate(const core::Config &config,
48-
const core::DeviceInfo &info,
49-
const std::optional<const ipts::Metadata> &metadata)
50-
: core::Application(config, info, metadata),
46+
Calibrate(const core::Config &config, const core::DeviceInfo &info)
47+
: core::Application(config, info),
5148
m_diagonal {std::hypot(config.width, config.height)} {};
5249

5350
void on_start() override

src/apps/daemon/daemon.hpp

+2-5
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
#include <spdlog/spdlog.h>
1616

17-
#include <optional>
1817
#include <vector>
1918

2019
namespace iptsd::apps::daemon {
@@ -28,10 +27,8 @@ class Daemon : public core::Application {
2827
StylusDevice m_stylus;
2928

3029
public:
31-
Daemon(const core::Config &config,
32-
const core::DeviceInfo &info,
33-
const std::optional<const ipts::Metadata> &metadata)
34-
: core::Application(config, info, metadata),
30+
Daemon(const core::Config &config, const core::DeviceInfo &info)
31+
: core::Application(config, info),
3532
m_touch {config, info},
3633
m_stylus {config, info} {};
3734

src/apps/perf/perf.hpp

+2-5
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
#include <gsl/gsl>
1414

1515
#include <algorithm>
16-
#include <optional>
1716
#include <utility>
1817
#include <vector>
1918

@@ -35,10 +34,8 @@ class Perf : public core::Application {
3534
bool m_had_heatmap {};
3635

3736
public:
38-
Perf(const core::Config &config,
39-
const core::DeviceInfo &info,
40-
const std::optional<const ipts::Metadata> &metadata)
41-
: core::Application(config, info, metadata) {};
37+
Perf(const core::Config &config, const core::DeviceInfo &info)
38+
: core::Application(config, info) {};
4239

4340
void on_contacts(const std::vector<contacts::Contact<f64>> & /* unused */) override
4441
{

src/apps/visualization/visualize-png.hpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
#include <cmath>
1717
#include <filesystem>
18-
#include <optional>
1918
#include <utility>
2019

2120
namespace iptsd::apps::visualization {
@@ -30,9 +29,8 @@ class VisualizePNG : public Visualize {
3029
public:
3130
VisualizePNG(const core::Config &config,
3231
const core::DeviceInfo &info,
33-
const std::optional<const ipts::Metadata> &metadata,
3432
std::filesystem::path output)
35-
: Visualize(config, info, metadata),
33+
: Visualize(config, info),
3634
m_output {std::move(output)} {};
3735

3836
void on_start() override

src/apps/visualization/visualize-sdl.hpp

+2-5
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#include <gsl/gsl>
1818

1919
#include <cstring>
20-
#include <optional>
2120

2221
namespace iptsd::apps::visualization {
2322

@@ -35,10 +34,8 @@ class VisualizeSDL : public Visualize {
3534
clock::time_point m_last_draw {};
3635

3736
public:
38-
VisualizeSDL(const core::Config &config,
39-
const core::DeviceInfo &info,
40-
const std::optional<const ipts::Metadata> &metadata)
41-
: Visualize(config, info, metadata)
37+
VisualizeSDL(const core::Config &config, const core::DeviceInfo &info)
38+
: Visualize(config, info)
4239
{
4340
SDL_Init(SDL_INIT_VIDEO);
4441
}

src/apps/visualization/visualize.hpp

+2-4
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,8 @@ class Visualize : public core::Application {
3939
Cairo::RefPtr<Cairo::Context> m_cairo {};
4040

4141
public:
42-
Visualize(const core::Config &config,
43-
const core::DeviceInfo &info,
44-
const std::optional<const ipts::Metadata> &metadata)
45-
: core::Application(config, info, metadata) {};
42+
Visualize(const core::Config &config, const core::DeviceInfo &info)
43+
: core::Application(config, info) {};
4644

4745
void on_contacts(const std::vector<contacts::Contact<f64>> & /* unused */) override
4846
{

src/core/generic/application.hpp

+2-12
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,6 @@ class Application {
5151
*/
5252
DeviceInfo m_info;
5353

54-
/*
55-
* The IPTS device metadata. This does not exist on all devices.
56-
* This needs to be queried by the application runner
57-
* and passed to the application during construction.
58-
*/
59-
std::optional<const ipts::Metadata> m_metadata = std::nullopt;
60-
6154
/*
6255
* Parses incoming data and returns heatmap, stylus and DFT data.
6356
*/
@@ -89,14 +82,11 @@ class Application {
8982
DftStylus m_dft;
9083

9184
public:
92-
Application(const Config &config,
93-
const DeviceInfo &info,
94-
const std::optional<const ipts::Metadata> &metadata)
85+
Application(const Config &config, const DeviceInfo &info)
9586
: m_config {config},
9687
m_info {info},
97-
m_metadata {metadata},
9888
m_finder {config.contacts()},
99-
m_dft {config, metadata}
89+
m_dft {config, info}
10090
{
10191
if (m_config.width == 0 || m_config.height == 0)
10292
throw common::Error<Error::InvalidScreenSize> {};

src/core/generic/device.hpp

+4
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@
44
#define IPTSD_CORE_GENERIC_DEVICE_HPP
55

66
#include <common/types.hpp>
7+
#include <ipts/data.hpp>
78
#include <ipts/device.hpp>
89

10+
#include <optional>
11+
912
namespace iptsd::core {
1013

1114
/*
@@ -16,6 +19,7 @@ struct DeviceInfo {
1619
u16 vendor = 0;
1720
u16 product = 0;
1821
ipts::Device::Type type {};
22+
std::optional<ipts::Metadata> meta = std::nullopt;
1923
};
2024

2125
} // namespace iptsd::core

src/core/generic/dft.hpp

+7-6
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#define IPTSD_CORE_GENERIC_DFT_HPP
55

66
#include "config.hpp"
7+
#include "device.hpp"
78

89
#include <common/casts.hpp>
910
#include <ipts/data.hpp>
@@ -19,7 +20,7 @@ namespace iptsd::core {
1920
class DftStylus {
2021
private:
2122
Config m_config;
22-
std::optional<const ipts::Metadata> m_metadata;
23+
DeviceInfo m_info;
2324

2425
// The current state of the DFT stylus.
2526
ipts::StylusData m_stylus;
@@ -43,9 +44,9 @@ class DftStylus {
4344
std::optional<bool> m_mppv2_in_contact = std::nullopt;
4445

4546
public:
46-
DftStylus(Config config, const std::optional<const ipts::Metadata> &metadata)
47+
DftStylus(Config config, const DeviceInfo &info)
4748
: m_config {std::move(config)},
48-
m_metadata {metadata} {};
49+
m_info {info} {};
4950

5051
/*!
5152
* Loads a DFT window and calculates stylus properties from it.
@@ -108,9 +109,9 @@ class DftStylus {
108109
u8 width = dft.width;
109110
u8 height = dft.height;
110111

111-
if ((width == 0 || height == 0) && m_metadata.has_value()) {
112-
width = casts::to<u8>(m_metadata->dimensions.columns);
113-
height = casts::to<u8>(m_metadata->dimensions.rows);
112+
if ((width == 0 || height == 0) && m_info.meta.has_value()) {
113+
width = casts::to<u8>(m_info.meta->dimensions.columns);
114+
height = casts::to<u8>(m_info.meta->dimensions.rows);
114115
}
115116

116117
m_group = dft.group;

src/core/linux/config-loader.hpp

+6-7
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,13 @@ class ConfigLoader {
3232
bool m_loaded_config = false;
3333

3434
public:
35-
ConfigLoader(const DeviceInfo &info, const std::optional<const ipts::Metadata> &metadata)
36-
: m_info {info}
35+
ConfigLoader(const DeviceInfo &info) : m_info {info}
3736
{
38-
if (metadata.has_value()) {
39-
m_config.width = casts::to<f64>(metadata->dimensions.width) / 1e3;
40-
m_config.height = casts::to<f64>(metadata->dimensions.height) / 1e3;
41-
m_config.invert_x = metadata->transform.xx < 0;
42-
m_config.invert_y = metadata->transform.yy < 0;
37+
if (m_info.meta.has_value()) {
38+
m_config.width = casts::to<f64>(m_info.meta->dimensions.width) / 1e3;
39+
m_config.height = casts::to<f64>(m_info.meta->dimensions.height) / 1e3;
40+
m_config.invert_x = m_info.meta->transform.xx < 0;
41+
m_config.invert_y = m_info.meta->transform.yy < 0;
4342
}
4443

4544
this->load_dir(common::buildopts::PresetDir);

src/core/linux/runner.hpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,10 @@ class Runner {
6868
info.vendor = m_device->vendor();
6969
info.product = m_device->product();
7070
info.type = m_ipts.type();
71+
info.meta = m_ipts.metadata();
7172

72-
const std::optional<const ipts::Metadata> meta = m_ipts.metadata();
73-
74-
const ConfigLoader loader {info, meta};
75-
m_application.emplace(loader.config(), info, meta, args...);
73+
const ConfigLoader loader {info};
74+
m_application.emplace(loader.config(), info, args...);
7675

7776
m_buffer.resize(m_ipts.buffer_size());
7877

0 commit comments

Comments
 (0)