VTK  9.2.6
vtkQWidgetTexture.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkQWidgetTexture.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 #ifndef vtkQWidgetTexture_h
16 #define vtkQWidgetTexture_h
17 
18 #include "vtkGUISupportQtModule.h" // For export macro
19 #include "vtkTextureObject.h"
20 #include <array> // for ivar
21 #include <functional> // for ivar
22 
23 class QGraphicsScene;
24 class QWidget;
25 
33 class VTKGUISUPPORTQT_EXPORT vtkQWidgetTexture : public vtkTextureObject
34 {
35 public:
36  static vtkQWidgetTexture* New();
38  void PrintSelf(ostream& os, vtkIndent indent) override;
39 
41 
44  void SetWidget(QWidget* w);
45  QWidget* GetWidget() { return this->Widget; }
47 
52  QGraphicsScene* GetScene() { return this->Scene; }
53 
58  void Activate() override;
59 
63  void ReleaseGraphicsResources(vtkWindow* win) override;
64 
65 protected:
67  ~vtkQWidgetTexture() override;
68 
69  QGraphicsScene* Scene;
70  QWidget* Widget;
71 
72  // method called when the widget needs repainting
73  std::function<void()> RedrawMethod;
74 
75  // internal method to setup the scene/framebuffer/etc
76  void AllocateFromWidget();
77 
78  unsigned char* ImageBuffer;
79  std::array<int, 2> ImageBufferDimensions;
80 
81 private:
82  vtkQWidgetTexture(const vtkQWidgetTexture&) = delete;
83  void operator=(const vtkQWidgetTexture&) = delete;
84 };
85 
86 #endif
virtual void ReleaseGraphicsResources(vtkWindow *win)
Deactivate and UnBind the texture.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
QGraphicsScene * Scene
unsigned char * ImageBuffer
window superclass for vtkRenderWindow
Definition: vtkWindow.h:38
a simple class to control print indentation
Definition: vtkIndent.h:39
QGraphicsScene * GetScene()
get the QScene used for rendering, this is where events will be forwarded to.
QWidget * GetWidget()
Set/Get the QWidget that this TextureObject will render/use.
abstracts an OpenGL texture object.
static vtkTextureObject * New()
Allows a QWidget to be used as a texture in VTK with OpenGL.
std::array< int, 2 > ImageBufferDimensions
virtual void Activate()
Activate and Bind the texture.
std::function< void()> RedrawMethod