PeriDyno 1.0.0
Loading...
Searching...
No Matches
WSimulationCanvas.h
Go to the documentation of this file.
1#pragma once
2
3#include <Wt/WContainerWidget.h>
4
5#include <memory>
6
9
10#include <ImWidgets/ImWindow.h>
11#include <RenderWindow.h>
12
13namespace dyno
14{
15 class Camera;
16 class SceneGraph;
17 class GLRenderEngine;
18
19 struct RenderParams;
20};
21
22struct GLFWwindow;
23class ImageEncoder;
24class ImGuiBackendWt;
25
27 : public Wt::WContainerWidget
28 , public dyno::RenderWindow
29{
30public:
33
34 void setScene(std::shared_ptr<dyno::SceneGraph> scene);
35
36 void update();
37
38public:
39 //Mouse interaction
40 void onMousePressed(const Wt::WMouseEvent& evt);
41 void onMouseDrag(const Wt::WMouseEvent& evt);
42 void onMouseReleased(const Wt::WMouseEvent& evt);
43 void onMouseWheeled(const Wt::WMouseEvent& evt);
44
45 //Keyboard interaction
46 void onKeyWentDown(const Wt::WKeyEvent& evt);
47 void onKeyWentUp(const Wt::WKeyEvent& evt);
48
49protected:
50 void initializeGL();
51 void makeCurrent();
52 void doneCurrent();
53
54 void render(Wt::WFlags<Wt::RenderFlag> flags) override;
55 void layoutSizeChanged(int width, int height) override;
56
57 int width = 800;
58 int height = 600;
59
60private:
61 Wt::WImage* mImage;
62 Wt::WApplication* mApp;
63
64 GLFWwindow* mContext;
66
68
69 std::vector<unsigned char> mImageData; // raw image
70 std::vector<unsigned char> mJpegBuffer; // jpeg data
71 std::unique_ptr<ImageEncoder> mJpegEncoder; // jpeg encoder
72 std::unique_ptr<Wt::WMemoryResource> mJpegResource; // Wt resource for jpeg image
73
74 std::shared_ptr<dyno::SceneGraph> mScene = nullptr;
75 //std::shared_ptr<dyno::Camera> mCamera;
76
77 // internal framebuffer
80
81 bool mMouseButtonDown = false;
82
83 int mtempCursorX = -1;
84};
std::unique_ptr< Wt::WMemoryResource > mJpegResource
void render(Wt::WFlags< Wt::RenderFlag > flags) override
dyno::ImWindow mImWindow
std::vector< unsigned char > mImageData
ImGuiBackendWt * mImGuiCtx
void onMouseDrag(const Wt::WMouseEvent &evt)
void onMouseWheeled(const Wt::WMouseEvent &evt)
std::shared_ptr< dyno::SceneGraph > mScene
Wt::WApplication * mApp
void layoutSizeChanged(int width, int height) override
std::vector< unsigned char > mJpegBuffer
void onKeyWentUp(const Wt::WKeyEvent &evt)
dyno::Texture2D mFrameColor
void onMouseReleased(const Wt::WMouseEvent &evt)
std::unique_ptr< ImageEncoder > mJpegEncoder
void setScene(std::shared_ptr< dyno::SceneGraph > scene)
void onKeyWentDown(const Wt::WKeyEvent &evt)
dyno::Framebuffer mFramebuffer
void onMousePressed(const Wt::WMouseEvent &evt)
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25