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.
191 lines
4.7 KiB
C
191 lines
4.7 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: vtkBrush.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 vtkBrush
|
||
|
* @brief provides a brush that fills shapes drawn by vtkContext2D.
|
||
|
*
|
||
|
*
|
||
|
* The vtkBrush defines the fill (or pattern) of shapes that are drawn by
|
||
|
* vtkContext2D. The color is stored as four unsigned chars (RGBA), where the
|
||
|
* opacity defaults to 255, but can be modified separately to the other
|
||
|
* components. Ideally we would use a lightweight color class to store and pass
|
||
|
* around colors.
|
||
|
*/
|
||
|
|
||
|
#ifndef vtkBrush_h
|
||
|
#define vtkBrush_h
|
||
|
|
||
|
#include "vtkColor.h" // Needed for vtkColor4ub
|
||
|
#include "vtkObject.h"
|
||
|
#include "vtkRenderingContext2DModule.h" // For export macro
|
||
|
|
||
|
class vtkImageData;
|
||
|
|
||
|
class VTKRENDERINGCONTEXT2D_EXPORT vtkBrush : public vtkObject
|
||
|
{
|
||
|
public:
|
||
|
vtkTypeMacro(vtkBrush, vtkObject);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
||
|
|
||
|
static vtkBrush* New();
|
||
|
|
||
|
/**
|
||
|
* Set the color of the brush with three component doubles (RGB), ranging from
|
||
|
* 0.0 to 1.0.
|
||
|
*/
|
||
|
void SetColorF(double color[3]);
|
||
|
|
||
|
/**
|
||
|
* Set the color of the brush with three component doubles (RGB), ranging from
|
||
|
* 0.0 to 1.0.
|
||
|
*/
|
||
|
void SetColorF(double r, double g, double b);
|
||
|
|
||
|
/**
|
||
|
* Set the color of the brush with four component doubles (RGBA), ranging from
|
||
|
* 0.0 to 1.0.
|
||
|
*/
|
||
|
void SetColorF(double r, double g, double b, double a);
|
||
|
|
||
|
/**
|
||
|
* Set the opacity with a double, ranging from 0.0 (transparent) to 1.0
|
||
|
* (opaque).
|
||
|
*/
|
||
|
void SetOpacityF(double a);
|
||
|
|
||
|
/**
|
||
|
* Get the opacity ranging from 0.0 (transparent) to 1.0(opaque).
|
||
|
*/
|
||
|
double GetOpacityF();
|
||
|
|
||
|
/**
|
||
|
* Set the color of the brush with three component unsigned chars (RGB),
|
||
|
* ranging from 0 to 255.
|
||
|
*/
|
||
|
void SetColor(unsigned char color[3]);
|
||
|
|
||
|
/**
|
||
|
* Set the color of the brush with three component unsigned chars (RGB),
|
||
|
* ranging from 0 to 255.
|
||
|
*/
|
||
|
void SetColor(unsigned char r, unsigned char g, unsigned char b);
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Set the color of the brush with four component unsigned chars (RGBA),
|
||
|
* ranging from 0 to 255.
|
||
|
*/
|
||
|
void SetColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a);
|
||
|
void SetColor(const vtkColor4ub& color);
|
||
|
//@}
|
||
|
|
||
|
/**
|
||
|
* Set the opacity with an unsigned char, ranging from 0 (transparent) to 255
|
||
|
* (opaque).
|
||
|
*/
|
||
|
void SetOpacity(unsigned char a);
|
||
|
|
||
|
/**
|
||
|
* Get the opacity ranging from 0 (transparent) to 255(opaque).
|
||
|
*/
|
||
|
unsigned char GetOpacity();
|
||
|
|
||
|
/**
|
||
|
* Get the color of the brush - expects a double of length 4 to copy into.
|
||
|
*/
|
||
|
void GetColorF(double color[4]);
|
||
|
|
||
|
/**
|
||
|
* Get the color of the brush - expects an unsigned char of length 4.
|
||
|
*/
|
||
|
void GetColor(unsigned char color[4]);
|
||
|
|
||
|
/**
|
||
|
* Get the color of the brush - gives a pointer to the underlying data.
|
||
|
*/
|
||
|
unsigned char* GetColor() { return &this->Color[0]; }
|
||
|
|
||
|
/**
|
||
|
* Get the color of the brush.
|
||
|
*/
|
||
|
vtkColor4ub GetColorObject();
|
||
|
|
||
|
/**
|
||
|
* Set the texture that will be used to fill polygons
|
||
|
* By default, no texture is set. The image will be registered with the brush
|
||
|
* (ref count is incremented)
|
||
|
* To disable the texture, set Texture to 0.
|
||
|
*/
|
||
|
void SetTexture(vtkImageData* image);
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Get the texture that is used to fill polygons
|
||
|
*/
|
||
|
vtkGetObjectMacro(Texture, vtkImageData);
|
||
|
//@}
|
||
|
|
||
|
/**
|
||
|
* Texture properties
|
||
|
*/
|
||
|
enum TextureProperty
|
||
|
{
|
||
|
Nearest = 0x01,
|
||
|
Linear = 0x02,
|
||
|
Stretch = 0x04,
|
||
|
Repeat = 0x08
|
||
|
};
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Set properties to the texture
|
||
|
* By default, the texture is linearly stretched.
|
||
|
* The behavior is undefined when Linear and Nearest are both set
|
||
|
* The behavior is undefined when Stretch and Repeat are both set
|
||
|
* The behavior is undefined if TextureProperties is 0
|
||
|
*/
|
||
|
vtkSetMacro(TextureProperties, int);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Get the properties associated to the texture
|
||
|
*/
|
||
|
vtkGetMacro(TextureProperties, int);
|
||
|
//@}
|
||
|
|
||
|
/**
|
||
|
* Make a deep copy of the supplied brush.
|
||
|
*/
|
||
|
void DeepCopy(vtkBrush* brush);
|
||
|
|
||
|
protected:
|
||
|
vtkBrush();
|
||
|
~vtkBrush() override;
|
||
|
|
||
|
// Storage of the color in RGBA format (0-255 per channel).
|
||
|
unsigned char* Color;
|
||
|
vtkColor4ub BrushColor;
|
||
|
vtkImageData* Texture;
|
||
|
int TextureProperties;
|
||
|
|
||
|
private:
|
||
|
vtkBrush(const vtkBrush&) = delete;
|
||
|
void operator=(const vtkBrush&) = delete;
|
||
|
};
|
||
|
|
||
|
#endif // vtkBrush_h
|