Skip to content

Commit

Permalink
core: Move metadata struct to device info
Browse files Browse the repository at this point in the history
  • Loading branch information
StollD committed Apr 3, 2024
1 parent b9f7811 commit f48fd41
Show file tree
Hide file tree
Showing 11 changed files with 33 additions and 56 deletions.
7 changes: 2 additions & 5 deletions src/apps/calibrate/calibrate.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
#include <filesystem>
#include <fstream>
#include <iostream>
#include <optional>
#include <string>
#include <vector>

Expand All @@ -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<const ipts::Metadata> &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
Expand Down
7 changes: 2 additions & 5 deletions src/apps/daemon/daemon.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

#include <spdlog/spdlog.h>

#include <optional>
#include <vector>

namespace iptsd::apps::daemon {
Expand All @@ -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<const ipts::Metadata> &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} {};

Expand Down
7 changes: 2 additions & 5 deletions src/apps/perf/perf.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
#include <gsl/gsl>

#include <algorithm>
#include <optional>
#include <utility>
#include <vector>

Expand All @@ -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<const ipts::Metadata> &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<contacts::Contact<f64>> & /* unused */) override
{
Expand Down
4 changes: 1 addition & 3 deletions src/apps/visualization/visualize-png.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@

#include <cmath>
#include <filesystem>
#include <optional>
#include <utility>

namespace iptsd::apps::visualization {
Expand All @@ -30,9 +29,8 @@ class VisualizePNG : public Visualize {
public:
VisualizePNG(const core::Config &config,
const core::DeviceInfo &info,
const std::optional<const ipts::Metadata> &metadata,
std::filesystem::path output)
: Visualize(config, info, metadata),
: Visualize(config, info),
m_output {std::move(output)} {};

void on_start() override
Expand Down
7 changes: 2 additions & 5 deletions src/apps/visualization/visualize-sdl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
#include <gsl/gsl>

#include <cstring>
#include <optional>

namespace iptsd::apps::visualization {

Expand All @@ -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<const ipts::Metadata> &metadata)
: Visualize(config, info, metadata)
VisualizeSDL(const core::Config &config, const core::DeviceInfo &info)
: Visualize(config, info)
{
SDL_Init(SDL_INIT_VIDEO);
}
Expand Down
6 changes: 2 additions & 4 deletions src/apps/visualization/visualize.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,8 @@ class Visualize : public core::Application {
Cairo::RefPtr<Cairo::Context> m_cairo {};

public:
Visualize(const core::Config &config,
const core::DeviceInfo &info,
const std::optional<const ipts::Metadata> &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<contacts::Contact<f64>> & /* unused */) override
{
Expand Down
14 changes: 2 additions & 12 deletions src/core/generic/application.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<const ipts::Metadata> m_metadata = std::nullopt;

/*
* Parses incoming data and returns heatmap, stylus and DFT data.
*/
Expand Down Expand Up @@ -89,14 +82,11 @@ class Application {
DftStylus m_dft;

public:
Application(const Config &config,
const DeviceInfo &info,
const std::optional<const ipts::Metadata> &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<Error::InvalidScreenSize> {};
Expand Down
4 changes: 4 additions & 0 deletions src/core/generic/device.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@
#define IPTSD_CORE_GENERIC_DEVICE_HPP

#include <common/types.hpp>
#include <ipts/data.hpp>
#include <ipts/device.hpp>

#include <optional>

namespace iptsd::core {

/*
Expand All @@ -16,6 +19,7 @@ struct DeviceInfo {
u16 vendor = 0;
u16 product = 0;
ipts::Device::Type type {};
std::optional<ipts::Metadata> meta = std::nullopt;
};

} // namespace iptsd::core
Expand Down
13 changes: 7 additions & 6 deletions src/core/generic/dft.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#define IPTSD_CORE_GENERIC_DFT_HPP

#include "config.hpp"
#include "device.hpp"

#include <common/casts.hpp>
#include <ipts/data.hpp>
Expand All @@ -19,7 +20,7 @@ namespace iptsd::core {
class DftStylus {
private:
Config m_config;
std::optional<const ipts::Metadata> m_metadata;
DeviceInfo m_info;

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

public:
DftStylus(Config config, const std::optional<const ipts::Metadata> &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.
Expand Down Expand Up @@ -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<u8>(m_metadata->dimensions.columns);
height = casts::to<u8>(m_metadata->dimensions.rows);
if ((width == 0 || height == 0) && m_info.meta.has_value()) {
width = casts::to<u8>(m_info.meta->dimensions.columns);
height = casts::to<u8>(m_info.meta->dimensions.rows);
}

m_group = dft.group;
Expand Down
13 changes: 6 additions & 7 deletions src/core/linux/config-loader.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,13 @@ class ConfigLoader {
bool m_loaded_config = false;

public:
ConfigLoader(const DeviceInfo &info, const std::optional<const ipts::Metadata> &metadata)
: m_info {info}
ConfigLoader(const DeviceInfo &info) : m_info {info}
{
if (metadata.has_value()) {
m_config.width = casts::to<f64>(metadata->dimensions.width) / 1e3;
m_config.height = casts::to<f64>(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<f64>(m_info.meta->dimensions.width) / 1e3;
m_config.height = casts::to<f64>(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);
Expand Down
7 changes: 3 additions & 4 deletions src/core/linux/runner.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<const ipts::Metadata> 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());

Expand Down

0 comments on commit f48fd41

Please sign in to comment.