46 #ifndef vtkMatplotlibMathTextUtilities_h
47 #define vtkMatplotlibMathTextUtilities_h
50 #include "vtkRenderingMatplotlibModule.h"
58 VTK_ABI_NAMESPACE_BEGIN
61 class vtkPythonInterpreter;
62 class vtkSmartPyObject;
100 int textDims[2] =
nullptr)
override;
140 static constexpr
const char* PipeProtectString =
"VTK_PROTECT_PIPE";
175 static void RotateCorners(
double angleDeg,
double corners[4][2],
double bbox[4]);
204 static Availability CheckMPLAvailability();
210 static Availability MPLMathTextAvailable;
213 typedef std::vector<std::vector<std::string>> GridOfStrings;
221 bool ParseString(
const char* str, GridOfStrings& strGrid, std::size_t& maxNumberOfCells);
229 bool ComputeRowsAndCols(
const GridOfStrings& strGrid,
const std::size_t& maxNumberOfCells,
231 std::uint64_t& cols);
238 bool ComputeCellRowsAndCols(
const char* cellStr,
PyObject* pyFontProp,
int dpi,
239 std::uint64_t& rows, std::uint64_t& cols, vtkSmartPyObject* list);
246 bool RenderOneCell(
vtkImageData*
image,
int bbox[4],
const std::int64_t rowStart,
247 const std::int64_t colStart, vtkSmartPyObject& pythonData,
const std::uint64_t pythonRows,
248 const std::uint64_t pythonCols,
const std::uint64_t cellRows,
const std::uint64_t cellCols,
257 VTK_ABI_NAMESPACE_END
topologically and geometrically regular array of data
a simple class to control print indentation
Abstract interface to equation rendering.
Access to MatPlotLib MathText rendering.
vtkPythonInterpreter * Interpreter
bool GetBoundingBox(vtkTextProperty *tprop, const char *str, int dpi, int bbox[4]) override
Given a text property and a string, get the bounding box {xmin, xmax, ymin, ymax} of the rendered str...
bool GetMetrics(vtkTextProperty *tprop, const char *str, int dpi, vtkTextRenderer::Metrics &metrics) override
Return the metrics for the rendered str, tprop, and dpi.
void ComputeTextColors(vtkTextProperty *tprop, TextColors &tcolors)
Compute rgba values of the foreground, background and frame of the text property.
void FindAndReplaceInString(std::string &str, const std::string &strToFind, const std::string &replacementStr)
Replace each occurrence of strToFind in str by replacementStr.
bool SetMathTextFont(vtkTextProperty *tprop)
Modify matplotlib.rcParams to customize math text font.
static void GetJustifiedBBox(int rows, int cols, vtkTextProperty *tprop, int bbox[4])
bool InitializePathParser()
bool InitializeFontPropertiesClass()
bool CheckForError(PyObject *object)
void CleanupPythonObjects()
Cleanup and destroy any python objects.
static vtkMatplotlibMathTextUtilities * New()
bool RenderString(const char *str, vtkImageData *image, vtkTextProperty *tprop, int dpi, int textDims[2]=nullptr) override
Render the given string str into the vtkImageData image with a resolution of dpi.
PyObject * FontPropertiesClass
PyObject * GetFontProperties(vtkTextProperty *tprop)
Returns a matplotlib.font_manager.FontProperties PyObject, initialized from the vtkTextProperty tprop...
bool StringToPath(const char *str, vtkPath *path, vtkTextProperty *tprop, int dpi) override
Parse the MathText expression in str and fill path with a contour of the glyphs.
bool IsAvailable() override
Returns true if mathtext rendering is available.
static void RotateCorners(double angleDeg, double corners[4][2], double bbox[4])
vtkMatplotlibMathTextUtilities()
~vtkMatplotlibMathTextUtilities() override
std::vector< int > HorizontalLinesPosition
void SetScaleToPowerOfTwo(bool val) override
Set to true if the graphics implementation requires texture image dimensions to be a power of two.
bool PrepareImageData(vtkImageData *data, int bbox[4])
bool GetScaleToPowerOfTwo() override
Set to true if the graphics implementation requires texture image dimensions to be a power of two.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
bool InitializeMaskParser()
std::vector< int > VerticalLinesPosition
concrete dataset representing a path defined by Bezier curves.
represent text properties.