75 lines
2.3 KiB
C
75 lines
2.3 KiB
C
![]() |
// ----------------------------------------------------------------------------
|
||
|
// - Open3D: www.open3d.org -
|
||
|
// ----------------------------------------------------------------------------
|
||
|
// Copyright (c) 2018-2023 www.open3d.org
|
||
|
// SPDX-License-Identifier: MIT
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "open3d/visualization/visualizer/ViewControl.h"
|
||
|
|
||
|
namespace open3d {
|
||
|
namespace visualization {
|
||
|
|
||
|
class ViewControlWithEditing : public ViewControl {
|
||
|
public:
|
||
|
enum EditingMode {
|
||
|
FreeMode = 0,
|
||
|
OrthoPositiveX = 1,
|
||
|
OrthoNegativeX = 2,
|
||
|
OrthoPositiveY = 3,
|
||
|
OrthoNegativeY = 4,
|
||
|
OrthoPositiveZ = 5,
|
||
|
OrthoNegativeZ = 6,
|
||
|
};
|
||
|
|
||
|
public:
|
||
|
virtual ~ViewControlWithEditing() {}
|
||
|
|
||
|
void Reset() override;
|
||
|
void ChangeFieldOfView(double step) override;
|
||
|
void Scale(double scale) override;
|
||
|
void Rotate(double x, double y, double xo, double yo) override;
|
||
|
void Translate(double x, double y, double xo, double yo) override;
|
||
|
|
||
|
void SetEditingMode(EditingMode mode);
|
||
|
std::string GetStatusString() const;
|
||
|
|
||
|
EditingMode GetEditingMode() const { return editing_mode_; };
|
||
|
void ToggleEditingX() {
|
||
|
if (editing_mode_ == EditingMode::OrthoPositiveX) {
|
||
|
SetEditingMode(EditingMode::OrthoNegativeX);
|
||
|
} else {
|
||
|
SetEditingMode(EditingMode::OrthoPositiveX);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void ToggleEditingY() {
|
||
|
if (editing_mode_ == EditingMode::OrthoPositiveY) {
|
||
|
SetEditingMode(EditingMode::OrthoNegativeY);
|
||
|
} else {
|
||
|
SetEditingMode(EditingMode::OrthoPositiveY);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void ToggleEditingZ() {
|
||
|
if (editing_mode_ == EditingMode::OrthoPositiveZ) {
|
||
|
SetEditingMode(EditingMode::OrthoNegativeZ);
|
||
|
} else {
|
||
|
SetEditingMode(EditingMode::OrthoPositiveZ);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void ToggleLocking() { is_view_locked_ = !is_view_locked_; }
|
||
|
bool IsLocked() const { return is_view_locked_; }
|
||
|
|
||
|
protected:
|
||
|
EditingMode editing_mode_ = FreeMode;
|
||
|
ViewParameters view_status_backup_;
|
||
|
bool is_view_locked_ = false;
|
||
|
};
|
||
|
|
||
|
} // namespace visualization
|
||
|
} // namespace open3d
|