feat: initial commit for pixel-snapping components and helpers

This commit is contained in:
2026-10-29 17:34:57 +01:00
parent 9d8bde1413
commit 9cbb90f9e1
163 changed files with 2671 additions and 951 deletions
+52
View File
@@ -0,0 +1,52 @@
#pragma once
#include <QObject>
#include <QString>
#include <QtQml/qqmlregistration.h>
#include "alignaudit.hpp"
namespace ZShell {
class AlignAuditor : public QObject {
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(QString outputPath MEMBER m_outputPath NOTIFY outputPathChanged)
Q_PROPERTY(int delayMs MEMBER m_delayMs NOTIFY delayMsChanged)
Q_PROPERTY(bool paintedOnly MEMBER m_paintedOnly NOTIFY paintedOnlyChanged)
Q_PROPERTY(
bool includeInherited MEMBER m_includeInherited NOTIFY
includeInheritedChanged)
Q_PROPERTY(double tolerance MEMBER m_tolerance NOTIFY toleranceChanged)
Q_PROPERTY(int lastCount READ lastCount NOTIFY finished)
public:
explicit AlignAuditor(QObject* parent = nullptr) : QObject(parent) {}
Q_INVOKABLE int run();
Q_INVOKABLE void runLater();
int lastCount() const { return m_lastCount; }
signals:
void outputPathChanged();
void delayMsChanged();
void paintedOnlyChanged();
void includeInheritedChanged();
void toleranceChanged();
void finished(int count);
private:
Options options() const;
QString m_outputPath = QStringLiteral("/tmp/align-audit.txt");
int m_delayMs = 5000;
bool m_paintedOnly = true;
bool m_includeInherited = false;
double m_tolerance = 1e-3;
int m_lastCount = 0;
};
} // namespace ZShell