Visual Computing Library  devel
Loading...
Searching...
No Matches
drawable_trackball.h
1/*****************************************************************************
2 * VCLib *
3 * Visual Computing Library *
4 * *
5 * Copyright(C) 2021-2026 *
6 * Visual Computing Lab *
7 * ISTI - Italian National Research Council *
8 * *
9 * All rights reserved. *
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the Mozilla Public License Version 2.0 as published *
13 * by the Mozilla Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 * This program is distributed in the hope that it will be useful, *
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
19 * Mozilla Public License Version 2.0 *
20 * (https://www.mozilla.org/en-US/MPL/2.0/) for more details. *
21 ****************************************************************************/
22
23#ifndef VCL_BGFX_DRAWABLE_DRAWABLE_TRACKBALL_H
24#define VCL_BGFX_DRAWABLE_DRAWABLE_TRACKBALL_H
25
26#include <vclib/algorithms/core.h>
27#include <vclib/bgfx/buffers.h>
28#include <vclib/render/drawable/drawable_object.h>
29#include <vclib/space/core.h>
30
31namespace vcl {
33{
34 bool mVisible = true;
35
36 VertexBuffer mVertexPosColorBuffer;
37 IndexBuffer mEdgeIndexBuffer;
38
39 vcl::Matrix44f mTransform = vcl::Matrix44f::Identity();
40 bool mIsDragging = false;
41
42public:
44
46
47 // default move constructor - buffers can be moved
49
50 // default destructor - buffers are destroyed by their destructor
51 ~DrawableTrackBall() = default;
52
60
61 friend void swap(DrawableTrackBall& a, DrawableTrackBall& b) { a.swap(b); }
62
68 void updateDragging(bool isDragging);
69
70 void setTransform(const vcl::Matrix44f& mtx);
71
72 // copy and swap idiom
74
75 // DrawableObject interface
76
77 void draw(const DrawObjectSettings& settings) const override;
78
79 Box3d boundingBox() const override;
80
81 std::shared_ptr<DrawableObject> clone() const& override;
82
83 std::shared_ptr<DrawableObject> clone() && override;
84
85 bool isVisible() const override;
86
87 void setVisibility(bool vis) override;
88
89private:
90 void createBuffers();
91};
92
93} // namespace vcl
94
95#endif // VCL_BGFX_DRAWABLE_DRAWABLE_TRACKBALL_H
The DrawableObject class is the base class for all the objects that can be drawn in a 3D viewer.
Definition drawable_object.h:57
Definition drawable_trackball.h:33
std::shared_ptr< DrawableObject > clone() const &override
This member function is used to create a new copy of the DrawableObject. Each derived class must impl...
Definition drawable_trackball.cpp:184
bool isVisible() const override
This member function is used to check if the object is visible.
Definition drawable_trackball.cpp:194
void setVisibility(bool vis) override
This member function is used to set the visibility of the object.
Definition drawable_trackball.cpp:199
void updateDragging(bool isDragging)
Update the dragging status of the trackball.
Definition drawable_trackball.cpp:139
Box3d boundingBox() const override
This member function is used to find a good camera position to render object. It should return the th...
Definition drawable_trackball.cpp:179
void swap(DrawableTrackBall &other)
Swap the content of this object with another DrawableTrackBall object.
Definition drawable_trackball.cpp:124
void draw(const DrawObjectSettings &settings) const override
This member function must draw the object. It will be called at every frame.
Definition drawable_trackball.cpp:155
The IndexBuffer manages the lifetime of a bgfx::IndexBufferHandle.
Definition index_buffer.h:43
Definition matrix.h:34
A class representing a line segment in n-dimensional space. The class is parameterized by a PointConc...
Definition segment.h:41
The VertexBuffer manages the lifetime of a bgfx::VertexBufferHandle.
Definition vertex_buffer.h:43