diff --git a/src/apps/calibrate/calibrate.hpp b/src/apps/calibrate/calibrate.hpp index 2b861df..179ff3d 100644 --- a/src/apps/calibrate/calibrate.hpp +++ b/src/apps/calibrate/calibrate.hpp @@ -20,7 +20,6 @@ #include #include #include -#include #include #include @@ -44,10 +43,8 @@ class Calibrate : public core::Application { f64 m_diagonal; public: - Calibrate(const core::Config &config, - const core::DeviceInfo &info, - const std::optional &metadata) - : core::Application(config, info, metadata), + Calibrate(const core::Config &config, const core::DeviceInfo &info) + : core::Application(config, info), m_diagonal {std::hypot(config.width, config.height)} {}; void on_start() override diff --git a/src/apps/daemon/daemon.hpp b/src/apps/daemon/daemon.hpp index 0d030cd..b91f357 100644 --- a/src/apps/daemon/daemon.hpp +++ b/src/apps/daemon/daemon.hpp @@ -14,7 +14,6 @@ #include -#include #include namespace iptsd::apps::daemon { @@ -28,10 +27,8 @@ class Daemon : public core::Application { StylusDevice m_stylus; public: - Daemon(const core::Config &config, - const core::DeviceInfo &info, - const std::optional &metadata) - : core::Application(config, info, metadata), + Daemon(const core::Config &config, const core::DeviceInfo &info) + : core::Application(config, info), m_touch {config, info}, m_stylus {config, info} {}; diff --git a/src/apps/perf/perf.hpp b/src/apps/perf/perf.hpp index e0c5d77..d4e1ad3 100644 --- a/src/apps/perf/perf.hpp +++ b/src/apps/perf/perf.hpp @@ -13,7 +13,6 @@ #include #include -#include #include #include @@ -35,10 +34,8 @@ class Perf : public core::Application { bool m_had_heatmap {}; public: - Perf(const core::Config &config, - const core::DeviceInfo &info, - const std::optional &metadata) - : core::Application(config, info, metadata) {}; + Perf(const core::Config &config, const core::DeviceInfo &info) + : core::Application(config, info) {}; void on_contacts(const std::vector> & /* unused */) override { diff --git a/src/apps/visualization/visualize-png.hpp b/src/apps/visualization/visualize-png.hpp index 117cf96..b6428f3 100644 --- a/src/apps/visualization/visualize-png.hpp +++ b/src/apps/visualization/visualize-png.hpp @@ -15,7 +15,6 @@ #include #include -#include #include namespace iptsd::apps::visualization { @@ -30,9 +29,8 @@ class VisualizePNG : public Visualize { public: VisualizePNG(const core::Config &config, const core::DeviceInfo &info, - const std::optional &metadata, std::filesystem::path output) - : Visualize(config, info, metadata), + : Visualize(config, info), m_output {std::move(output)} {}; void on_start() override diff --git a/src/apps/visualization/visualize-sdl.hpp b/src/apps/visualization/visualize-sdl.hpp index 18c3b26..32b1364 100644 --- a/src/apps/visualization/visualize-sdl.hpp +++ b/src/apps/visualization/visualize-sdl.hpp @@ -17,7 +17,6 @@ #include #include -#include namespace iptsd::apps::visualization { @@ -35,10 +34,8 @@ class VisualizeSDL : public Visualize { clock::time_point m_last_draw {}; public: - VisualizeSDL(const core::Config &config, - const core::DeviceInfo &info, - const std::optional &metadata) - : Visualize(config, info, metadata) + VisualizeSDL(const core::Config &config, const core::DeviceInfo &info) + : Visualize(config, info) { SDL_Init(SDL_INIT_VIDEO); } diff --git a/src/apps/visualization/visualize.hpp b/src/apps/visualization/visualize.hpp index 820046f..21ca0c3 100644 --- a/src/apps/visualization/visualize.hpp +++ b/src/apps/visualization/visualize.hpp @@ -39,10 +39,8 @@ class Visualize : public core::Application { Cairo::RefPtr m_cairo {}; public: - Visualize(const core::Config &config, - const core::DeviceInfo &info, - const std::optional &metadata) - : core::Application(config, info, metadata) {}; + Visualize(const core::Config &config, const core::DeviceInfo &info) + : core::Application(config, info) {}; void on_contacts(const std::vector> & /* unused */) override { diff --git a/src/core/generic/application.hpp b/src/core/generic/application.hpp index d186001..6a70e14 100644 --- a/src/core/generic/application.hpp +++ b/src/core/generic/application.hpp @@ -51,13 +51,6 @@ class Application { */ DeviceInfo m_info; - /* - * The IPTS device metadata. This does not exist on all devices. - * This needs to be queried by the application runner - * and passed to the application during construction. - */ - std::optional m_metadata = std::nullopt; - /* * Parses incoming data and returns heatmap, stylus and DFT data. */ @@ -89,14 +82,11 @@ class Application { DftStylus m_dft; public: - Application(const Config &config, - const DeviceInfo &info, - const std::optional &metadata) + Application(const Config &config, const DeviceInfo &info) : m_config {config}, m_info {info}, - m_metadata {metadata}, m_finder {config.contacts()}, - m_dft {config, metadata} + m_dft {config, info} { if (m_config.width == 0 || m_config.height == 0) throw common::Error {}; diff --git a/src/core/generic/device.hpp b/src/core/generic/device.hpp index cc59d7a..7374a36 100644 --- a/src/core/generic/device.hpp +++ b/src/core/generic/device.hpp @@ -4,8 +4,11 @@ #define IPTSD_CORE_GENERIC_DEVICE_HPP #include +#include #include +#include + namespace iptsd::core { /* @@ -16,6 +19,7 @@ struct DeviceInfo { u16 vendor = 0; u16 product = 0; ipts::Device::Type type {}; + std::optional meta = std::nullopt; }; } // namespace iptsd::core diff --git a/src/core/generic/dft.hpp b/src/core/generic/dft.hpp index 33e72c9..73ab09a 100644 --- a/src/core/generic/dft.hpp +++ b/src/core/generic/dft.hpp @@ -4,6 +4,7 @@ #define IPTSD_CORE_GENERIC_DFT_HPP #include "config.hpp" +#include "device.hpp" #include #include @@ -19,7 +20,7 @@ namespace iptsd::core { class DftStylus { private: Config m_config; - std::optional m_metadata; + DeviceInfo m_info; // The current state of the DFT stylus. ipts::StylusData m_stylus; @@ -43,9 +44,9 @@ class DftStylus { std::optional m_mppv2_in_contact = std::nullopt; public: - DftStylus(Config config, const std::optional &metadata) + DftStylus(Config config, const DeviceInfo &info) : m_config {std::move(config)}, - m_metadata {metadata} {}; + m_info {info} {}; /*! * Loads a DFT window and calculates stylus properties from it. @@ -108,9 +109,9 @@ class DftStylus { u8 width = dft.width; u8 height = dft.height; - if ((width == 0 || height == 0) && m_metadata.has_value()) { - width = casts::to(m_metadata->dimensions.columns); - height = casts::to(m_metadata->dimensions.rows); + if ((width == 0 || height == 0) && m_info.meta.has_value()) { + width = casts::to(m_info.meta->dimensions.columns); + height = casts::to(m_info.meta->dimensions.rows); } m_group = dft.group; diff --git a/src/core/linux/config-loader.hpp b/src/core/linux/config-loader.hpp index 7e3252a..3a6fdfb 100644 --- a/src/core/linux/config-loader.hpp +++ b/src/core/linux/config-loader.hpp @@ -32,14 +32,13 @@ class ConfigLoader { bool m_loaded_config = false; public: - ConfigLoader(const DeviceInfo &info, const std::optional &metadata) - : m_info {info} + ConfigLoader(const DeviceInfo &info) : m_info {info} { - if (metadata.has_value()) { - m_config.width = casts::to(metadata->dimensions.width) / 1e3; - m_config.height = casts::to(metadata->dimensions.height) / 1e3; - m_config.invert_x = metadata->transform.xx < 0; - m_config.invert_y = metadata->transform.yy < 0; + if (m_info.meta.has_value()) { + m_config.width = casts::to(m_info.meta->dimensions.width) / 1e3; + m_config.height = casts::to(m_info.meta->dimensions.height) / 1e3; + m_config.invert_x = m_info.meta->transform.xx < 0; + m_config.invert_y = m_info.meta->transform.yy < 0; } this->load_dir(common::buildopts::PresetDir); diff --git a/src/core/linux/runner.hpp b/src/core/linux/runner.hpp index 527fb42..2061b32 100644 --- a/src/core/linux/runner.hpp +++ b/src/core/linux/runner.hpp @@ -68,11 +68,10 @@ class Runner { info.vendor = m_device->vendor(); info.product = m_device->product(); info.type = m_ipts.type(); + info.meta = m_ipts.metadata(); - const std::optional meta = m_ipts.metadata(); - - const ConfigLoader loader {info, meta}; - m_application.emplace(loader.config(), info, meta, args...); + const ConfigLoader loader {info}; + m_application.emplace(loader.config(), info, args...); m_buffer.resize(m_ipts.buffer_size());