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{
15 CCWArrow = 26,
16 CWArrow = 27
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 void draw( const Viewport& vp, const AffineXf3f& rotXf, const AffineXf3f& vpInvXf );
40
42 MRVIEWER_API bool getRedrawFlag( ViewportMask mask ) const;
43
45 MRVIEWER_API void resetRedrawFlag();
46private:
47 std::shared_ptr<Object> rootObj_;
48 std::vector<boost::signals2::scoped_connection> connections_;
49
50 PickedIds pick_( const Vector2f& mousePos ) const;
51 void hover_( const Vector2f& mousePos );
52 bool press_( const Vector2f& mousePos );
53 PickedIds pickedId_;
54};
55
56
63MRVIEWER_API Mesh makeCornerControllerMesh( float size, float cornerRatio = 0.2f );
64
72MRVIEWER_API Mesh makeCornerControllerRotationArrowMesh( float size, const Vector2f& shift, bool ccw );
73
82MRVIEWER_API VertUVCoords makeCornerControllerUVCoords( float cornerRatio = 0.2f );
83
89
92MRVIEWER_API const TexturePerFace& getCornerControllerTexureMap();
93
95MRVIEWER_API RegionId getCornerControllerRegionByFace( FaceId face );
96
98MRVIEWER_API TexturePerFace getCornerControllerHoveredTextureMap( RegionId rId );
99
102
103}
class that holds and manages corner controller object
Definition MRViewportCornerController.h:21
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
MRMESH_API bool ccw(const Vector2i &a, const Vector2i &b)
ViewportId vId
Definition MRViewportCornerController.h:25
MRVIEWER_API RegionId getCornerControllerRegionByFace(FaceId face)
returns region id of corner controller by its face
MRVIEWER_API void enable(ViewportMask mask)
enables or disables this object by provided mask
ImVec2 size(const ViewportRectangle &rect)
Definition MRViewport.h:32
SideRegions
Definition MRViewportCornerController.h:14
MRVIEWER_API void initDefault()
initialize this object with default settings
MRVIEWER_API 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...
MRVIEWER_API VertUVCoords makeCornerControllerUVCoords(float cornerRatio=0.2f)
Creates UV coordinates for makeCornerControllerMesh output mesh for texture like: "Right"" Left " " T...
MRVIEWER_API const TexturePerFace & getCornerControllerTexureMap()
MRVIEWER_API void resetRedrawFlag()
marks this object as drawn
MRVIEWER_API void draw(const Viewport &vp, const AffineXf3f &rotXf, const AffineXf3f &vpInvXf)
draw this object in given viewport in position of basis axes
MRVIEWER_API Vector< MeshTexture, TextureId > loadCornerControllerTextures()
Loads 3 textures for corner controller: default, side hovered, corner hovered.
RegionId rId
Definition MRViewportCornerController.h:26
MRVIEWER_API bool getRedrawFlag(ViewportMask mask) const
returns true if objects requires redraw
MRVIEWER_API void updateCurrentViewByControllerRegion(CornerControllerObject::PickedIds pickedId)
setup camera for selected viewport by corner controller region
MRVIEWER_API TexturePerFace getCornerControllerHoveredTextureMap(RegionId rId)
returns textures map with region faces hovered
MRVIEWER_API 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
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRViewportCornerController.h:24
Definition MRMesh.h:23