You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

148 lines
4.2 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkContextDevice3D.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkContextDevice3D
* @brief Abstract class for drawing 3D primitives.
*
*
* This defines the interface for a vtkContextDevice3D. In this sense a
* ContextDevice is a class used to paint 3D primitives onto a device, such as
* an OpenGL context.
*
* This is private API, and should not be used outside of the vtkContext3D.
*/
#ifndef vtkContextDevice3D_h
#define vtkContextDevice3D_h
#include "vtkObject.h"
#include "vtkRect.h" // For the rectangles..
#include "vtkRenderingContext2DModule.h" // For export macro
#include "vtkVector.h" // For the vector coordinates.
class vtkMatrix4x4;
class vtkViewport;
class vtkPen;
class vtkBrush;
class VTKRENDERINGCONTEXT2D_EXPORT vtkContextDevice3D : public vtkObject
{
public:
vtkTypeMacro(vtkContextDevice3D, vtkObject);
void PrintSelf(ostream& os, vtkIndent indent) override;
static vtkContextDevice3D* New();
/**
* Draw a polyline between the specified points.
* \sa DrawLines()
*/
virtual void DrawPoly(
const float* verts, int n, const unsigned char* colors = nullptr, int nc = 0) = 0;
/**
* Draw lines defined by specified pair of points.
* \sa DrawPoly()
*/
virtual void DrawLines(
const float* verts, int n, const unsigned char* colors = nullptr, int nc = 0) = 0;
/**
* Draw points at the vertex positions specified.
*/
virtual void DrawPoints(
const float* verts, int n, const unsigned char* colors = nullptr, int nc = 0) = 0;
/**
* Draw triangles to generate the specified mesh.
*/
virtual void DrawTriangleMesh(const float* mesh, int n, const unsigned char* colors, int nc) = 0;
/**
* Apply the supplied pen which controls the outlines of shapes, as well as
* lines, points and related primitives. This makes a deep copy of the vtkPen
* object in the vtkContext2D, it does not hold a pointer to the supplied object.
*/
virtual void ApplyPen(vtkPen* pen) = 0;
/**
* Apply the supplied brush which controls the outlines of shapes, as well as
* lines, points and related primitives. This makes a deep copy of the vtkBrush
* object in the vtkContext2D, it does not hold a pointer to the supplied object.
*/
virtual void ApplyBrush(vtkBrush* brush) = 0;
/**
* Set the model view matrix for the display
*/
virtual void SetMatrix(vtkMatrix4x4* m) = 0;
/**
* Set the model view matrix for the display
*/
virtual void GetMatrix(vtkMatrix4x4* m) = 0;
/**
* Multiply the current model view matrix by the supplied one
*/
virtual void MultiplyMatrix(vtkMatrix4x4* m) = 0;
/**
* Push the current matrix onto the stack.
*/
virtual void PushMatrix() = 0;
/**
* Pop the current matrix off of the stack.
*/
virtual void PopMatrix() = 0;
/**
* Supply a float array of length 4 with x1, y1, width, height specifying
* clipping region for the device in pixels.
*/
virtual void SetClipping(const vtkRecti& rect) = 0;
/**
* Disable clipping of the display.
* Remove in a future release - retained for API compatibility.
*/
virtual void DisableClipping() { this->EnableClipping(false); }
/**
* Enable or disable the clipping of the scene.
*/
virtual void EnableClipping(bool enable) = 0;
//@{
/**
* Enable/Disable the specified clipping plane.
*/
virtual void EnableClippingPlane(int i, double* planeEquation) = 0;
virtual void DisableClippingPlane(int i) = 0;
//@}
protected:
vtkContextDevice3D();
~vtkContextDevice3D() override;
private:
vtkContextDevice3D(const vtkContextDevice3D&) = delete;
void operator=(const vtkContextDevice3D&) = delete;
};
#endif