Skip to content

Studio/Analysis/CorrespondenceQualityPanel.h

Namespaces

Name
shapeworks
User usage reporting (telemetry)

Classes

Name
class shapeworks::CorrespondenceQualityPanel
Panel for the correspondence quality analysis.

Source code

#pragma once

// Qt
#include <QSharedPointer>
#include <QWidget>

// Studio
#include <Job/CorrespondenceQualityJob.h>

class Ui_CorrespondenceQualityPanel;
class JKQTPlotter;

namespace shapeworks {

class Session;


class CorrespondenceQualityPanel : public QWidget {
  Q_OBJECT;

 public:
  CorrespondenceQualityPanel(QWidget* parent = 0);
  ~CorrespondenceQualityPanel();

  void set_session(QSharedPointer<Session> session);
  void reset();

  bool get_display_distance() const;

  std::string get_display_feature_name() const;

  void set_template_info(int index, int maximum, QString name);

 public Q_SLOTS:

  void run_clicked();
  void show_distance_clicked();

  void options_changed();

  void handle_job_progress(double progress);
  void handle_job_complete();

  void handle_table_clicked(int row, int column);

  void template_changed();

 Q_SIGNALS:

  void request_samples_view(bool all_samples);

  void request_show_sample(int shape_index);

  void request_template(int index);
  void request_template_median();

  void request_apply_template();

 private:
  double get_sort_value(const CorrespondenceQualityRow& row) const;

  bool sorting_by_name() const;
  bool sorting_by_ratio() const;
  bool sort_descending() const;
  bool normalized() const;

  std::vector<int> get_sorted_rows() const;

  void update_run_button();
  void update_summary();
  void update_table();
  void update_graphs();

  void apply_sample_order();

  QSharedPointer<Session> session_;
  QSharedPointer<CorrespondenceQualityJob> job_;

  Ui_CorrespondenceQualityPanel* ui_;
};
}  // namespace shapeworks

Updated on 2026-08-30 at 04:03:18 +0000