56#ifndef vtkFreeTypeTools_h
57#define vtkFreeTypeTools_h
60#include "vtkRenderingFreeTypeModule.h"
67#include <shared_mutex>
69VTK_ABI_NAMESPACE_BEGIN
77#include "vtk_freetype.h"
82VTK_ABI_NAMESPACE_BEGIN
86class vtkTextPropertyLookup;
174 vtkTextProperty* tprop, vtkTypeUInt32 leftChar, vtkTypeUInt32 rightChar);
223 int textDims[2] =
nullptr);
256 static vtkTypeUInt32
HashBuffer(
const void* buffer,
size_t n, vtkTypeUInt32 hash = 0);
393 bool GetSize(
size_t tprop_cache_id,
int font_size, FT_Size* size);
394 bool GetSize(FTC_Scaler scaler, FT_Size* size);
395 bool GetFace(
size_t tprop_cache_id, FT_Face* face);
397 bool GetGlyph(
size_t tprop_cache_id,
int font_size, FT_UInt gindex, FT_Glyph* glyph,
420 FT_Bitmap*
GetBitmap(FT_UInt32 c,
size_t prop_cache_id,
int prop_font_size, FT_UInt& gindex,
421 FT_BitmapGlyph& bitmap_glyph);
423 FT_UInt32 c, FTC_Scaler scaler, FT_UInt& gindex, FT_BitmapGlyph& bitmap_glyph);
430 FT_Outline*
GetOutline(FT_UInt32 c,
size_t prop_cache_id,
int prop_font_size, FT_UInt& gindex,
431 FT_OutlineGlyph& outline_glyph);
433 FT_UInt32 c, FTC_Scaler scaler, FT_UInt& gindex, FT_OutlineGlyph& outline_glyph);
481 vtkTypeUInt64 InstanceId;
486 bool RenderStringInternal(
499 bool CalculateBoundingBox(
const vtkStdString& str, MetaData& metaData);
500 bool CalculateBoundingBox(
501 const std::string& str, MetaData& metaData,
const std::string& defaultHeightString);
509 template <
typename DataType>
510 bool PopulateData(
const std::string& str, DataType data, MetaData& metaData);
515 template <
typename DataType>
516 bool RenderLine(std::string::const_iterator begin, std::string::const_iterator end,
int lineIndex,
517 DataType data, MetaData& metaData);
523 bool RenderCharacter(FT_UInt32 codepoint,
int& x,
int& y, FT_UInt& previousGlyphIndex,
525 bool RenderCharacter(FT_UInt32 codepoint,
int& x,
int& y, FT_UInt& previousGlyphIndex,
526 vtkPath* path, MetaData& metaData);
529 void OutlineToPath(
int x,
int y, FT_Outline* outline,
vtkPath* path);
537 const std::string& str, MetaData& metaData,
int targetWidth,
int targetHeight);
547 void GetLineMetrics(std::string::const_iterator begin, std::string::const_iterator end,
548 MetaData& metaData,
int& width,
int bbox[4]);
topologically and geometrically regular array of data
a simple class to control print indentation
concrete dataset representing a path defined by Bezier curves.
Hold a reference to a vtkObjectBase instance.
Wrapper around std::string to keep symbols short.
represent text properties.
#define VTK_UNSIGNED_LONG_MAX
#define VTK_UNSIGNED_INT_MAX