------------------------------------------------------------------------------
| 167 | |
| 168 | //------------------------------------------------------------------------------ |
| 169 | bool vtkMathTextFreeTypeTextRenderer::RenderStringInternal(vtkTextProperty* tprop, |
| 170 | const vtkStdString& str, vtkImageData* data, int textDims[2], int dpi, int backend) |
| 171 | { |
| 172 | if (!data || !tprop) |
| 173 | { |
| 174 | vtkErrorMacro("No image container and/or text property supplied!"); |
| 175 | return false; |
| 176 | } |
| 177 | |
| 178 | if (static_cast<Backend>(backend) == Default) |
| 179 | { |
| 180 | backend = this->DefaultBackend; |
| 181 | } |
| 182 | |
| 183 | if (static_cast<Backend>(backend) == Detect) |
| 184 | { |
| 185 | backend = this->DetectBackend(str); |
| 186 | } |
| 187 | |
| 188 | switch (static_cast<Backend>(backend)) |
| 189 | { |
| 190 | case MathText: |
| 191 | if (this->MathTextIsSupported()) |
| 192 | { |
| 193 | if (this->MathTextUtilities->RenderString(str.c_str(), data, tprop, dpi, textDims)) |
| 194 | { |
| 195 | return true; |
| 196 | } |
| 197 | } |
| 198 | vtkDebugMacro("MathText unavailable. Falling back to FreeType."); |
| 199 | [[fallthrough]]; |
| 200 | case FreeType: |
| 201 | { |
| 202 | vtkStdString cleanString(str); |
| 203 | this->CleanUpFreeTypeEscapes(cleanString); |
| 204 | // Interpret string as UTF-8, use the UTF-16 RenderString overload: |
| 205 | return this->FreeTypeTools->RenderString(tprop, cleanString, dpi, data, textDims); |
| 206 | } |
| 207 | case Default: |
| 208 | case UserBackend: |
| 209 | default: |
| 210 | vtkDebugMacro("Unrecognized backend requested: " << backend); |
| 211 | break; |
| 212 | case Detect: |
| 213 | vtkDebugMacro("Unhandled 'Detect' backend requested!"); |
| 214 | break; |
| 215 | } |
| 216 | return false; |
| 217 | } |
| 218 | |
| 219 | //------------------------------------------------------------------------------ |
| 220 | int vtkMathTextFreeTypeTextRenderer::GetConstrainedFontSizeInternal(const vtkStdString& str, |
nothing calls this directly
no test coverage detected