You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.2 KiB
65 lines
2.2 KiB
// This file is part of libigl, a simple c++ geometry processing library.
|
|
//
|
|
// Copyright (C) 2022 Alec Jacobson <alecjacobson@gmail.com>
|
|
//
|
|
// This Source Code Form is subject to the terms of the Mozilla Public License
|
|
// v. 2.0. If a copy of the MPL was not distributed with this file, You can
|
|
// obtain one at http://mozilla.org/MPL/2.0/.
|
|
#ifndef IGL_OPENGL_GLFW_IMGUI_IMGUIWIDGET_H
|
|
#define IGL_OPENGL_GLFW_IMGUI_IMGUIWIDGET_H
|
|
|
|
#include "ImGuiPlugin.h"
|
|
#include "ImGuiWidget.h"
|
|
#include "../../../igl_inline.h"
|
|
#include <memory>
|
|
|
|
namespace igl
|
|
{
|
|
namespace opengl
|
|
{
|
|
namespace glfw
|
|
{
|
|
class Viewer;
|
|
namespace imgui
|
|
{
|
|
// Forward declaration of the parent plugin
|
|
class ImGuiPlugin;
|
|
// Abstract class for imgui "widgets". A widget is something that uses
|
|
// imgui, but doesn't own the entire imgui IO stack: the single
|
|
// ImGuiPlugin owns that and widgets are registered with it.
|
|
class ImGuiWidget
|
|
{
|
|
public:
|
|
IGL_INLINE ImGuiWidget(){ name = "dummy"; }
|
|
virtual ~ImGuiWidget(){}
|
|
IGL_INLINE virtual void init(Viewer *_viewer, ImGuiPlugin *_plugin)
|
|
{ viewer = _viewer; plugin = _plugin; }
|
|
IGL_INLINE virtual void shutdown() {}
|
|
IGL_INLINE virtual void draw() {}
|
|
IGL_INLINE virtual bool mouse_down(int button, int modifier)
|
|
{ return false;}
|
|
IGL_INLINE virtual bool mouse_up(int button, int modifier)
|
|
{ return false;}
|
|
IGL_INLINE virtual bool mouse_move(int mouse_x, int mouse_y)
|
|
{ return false;}
|
|
IGL_INLINE virtual bool key_pressed(unsigned int key, int modifiers)
|
|
{ return false;}
|
|
IGL_INLINE virtual bool key_down(int key, int modifiers)
|
|
{ return false;}
|
|
IGL_INLINE virtual bool key_up(int key, int modifiers)
|
|
{ return false;}
|
|
std::string name;
|
|
protected:
|
|
// Pointer to ImGuiPlugin's parent viewer
|
|
Viewer *viewer;
|
|
// Pointer to parent ImGuiPlugin class
|
|
ImGuiPlugin *plugin;
|
|
};
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif
|
|
|
|
|