MeshLib C++ Docs
Loading...
Searching...
No Matches
MRViewportCornerController.h
Go to the documentation of this file.
1#pragma once
2#include "MRViewerFwd.h"
4#include "MRMesh/MRId.h"
5#include "MRMesh/MRSignal.h"
6
7namespace MR
8{
11
12
13enum class SideRegions
14{
17};
18
20class MRVIEWER_CLASS CornerControllerObject
21{
22public:
23 struct PickedIds
24 {
26 RegionId rId;
27 bool operator==( const PickedIds& other ) const = default;
28 };
29
31
33 MRVIEWER_API void initDefault();
34
36 MRVIEWER_API void enable( ViewportMask mask );
37
39 MRVIEWER_API ViewportMask getEnabledMask() const;
40
42 MRVIEWER_API void draw( const Viewport& vp, const AffineXf3f& rotXf, const AffineXf3f& vpInvXf );
43
45 MRVIEWER_API bool getRedrawFlag( ViewportMask mask ) const;
46
48 MRVIEWER_API void resetRedrawFlag();
49private:
50 std::shared_ptr<Object> rootObj_;
51 std::vector<boost::signals2::scoped_connection> connections_;
52
53 PickedIds pick_( const Vector2f& mousePos ) const;
54 void hover_( const Vector2f& mousePos );
55 bool press_( const Vector2f& mousePos );
56 PickedIds pickedId_;
57};
58
59
66MRVIEWER_API Mesh makeCornerControllerMesh( float size, float cornerRatio = 0.2f );
67
75MRVIEWER_API Mesh makeCornerControllerRotationArrowMesh( float size, const Vector2f& shift, bool ccw );
76
85MRVIEWER_API VertUVCoords makeCornerControllerUVCoords( float cornerRatio = 0.2f );
86
92
95MRVIEWER_API const TexturePerFace& getCornerControllerTextureMap();
96
98MRVIEWER_API RegionId getCornerControllerRegionByFace( FaceId face );
99
101MRVIEWER_API TexturePerFace getCornerControllerHoveredTextureMap( RegionId rId );
102
105
106}
std::vector<T>-like container that requires specific indexing type,
Definition MRVector.h:23
Definition MRViewportId.h:16
stores mask of viewport unique identifiers
Definition MRViewportId.h:42
Definition MRViewport.h:49
Mesh makeCornerControllerMesh(float size, float cornerRatio=0.2f)
Makes cube mesh with specified face structure for each 3-rank corner, each 2-rank corner and each sid...
ViewportId vId
Definition MRViewportCornerController.h:25
const TexturePerFace & getCornerControllerTextureMap()
ImVec2 size(const ViewportRectangle &rect)
Definition MRViewport.h:32
void enable(ViewportMask mask)
enables or disables this object by provided mask
SideRegions
Definition MRViewportCornerController.h:14
void resetRedrawFlag()
marks this object as drawn
bool ccw(const Vector2i &a, const Vector2i &b)
TexturePerFace getCornerControllerHoveredTextureMap(RegionId rId)
returns textures map with region faces hovered
ViewportMask getEnabledMask() const
returns the mask of viewports where this object is currently enabled
RegionId getCornerControllerRegionByFace(FaceId face)
returns region id of corner controller by its face
void draw(const Viewport &vp, const AffineXf3f &rotXf, const AffineXf3f &vpInvXf)
draw this object in given viewport in position of basis axes
RegionId rId
Definition MRViewportCornerController.h:26
Vector< MeshTexture, TextureId > loadCornerControllerTextures()
Loads 3 textures for corner controller: default, side hovered, corner hovered.
VertUVCoords makeCornerControllerUVCoords(float cornerRatio=0.2f)
Creates UV coordinates for makeCornerControllerMesh output mesh for texture like: "Right"" Left " " T...
bool getRedrawFlag(ViewportMask mask) const
returns true if objects requires redraw
void updateCurrentViewByControllerRegion(CornerControllerObject::PickedIds pickedId)
setup camera for selected viewport by corner controller region
Mesh makeCornerControllerRotationArrowMesh(float size, const Vector2f &shift, bool ccw)
Makes planar arrow mesh that will be used for controlling in plane rotation in corner near cube contr...
bool operator==(const PickedIds &other) const =default
void initDefault()
initialize this object with default settings
@ other
Angle, normally float. Measure in radians.
Definition MRFeatureObject.h:27
@ CWArrow
Definition MRViewportCornerController.h:16
@ CCWArrow
Definition MRViewportCornerController.h:15
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRViewportCornerController.h:24
Definition MRMesh.h:23