mirror of
https://github.com/mcneel/opennurbs.git
synced 2026-03-04 14:09:41 +08:00
123 lines
3.2 KiB
C++
123 lines
3.2 KiB
C++
/*
|
|
//
|
|
// Copyright (c) 1993-2017 Robert McNeel & Associates. All rights reserved.
|
|
// OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert
|
|
// McNeel & Associates.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
|
|
// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
|
|
// MERCHANTABILITY ARE HEREBY DISCLAIMED.
|
|
//
|
|
// For complete openNURBS copyright information see <http://www.opennurbs.org>.
|
|
//
|
|
////////////////////////////////////////////////////////////////
|
|
*/
|
|
|
|
#if !defined(OPENNURBS_FREETYPE_INC_)
|
|
#define OPENNURBS_FREETYPE_INC_
|
|
|
|
#if defined(OPENNURBS_FREETYPE_SUPPORT)
|
|
// Look in opennurbs_system_rumtime.h for the correct place to define OPENNURBS_FREETYPE_SUPPORT.
|
|
// Do NOT define OPENNURBS_FREETYPE_SUPPORT here or in your project setting ("makefile").
|
|
|
|
#if defined(ON_COMPILER_MSC) ||defined(ON_RUNTIME_WIN)
|
|
#error FreeType is not used in Windows. It does not work as well as DirectWrite based tools.
|
|
#endif
|
|
|
|
#if defined(ON_RUNTIME_APPLE)
|
|
// Freetype is used to get single stroke font outlines.
|
|
// For everything else, use the CTFont based tools.
|
|
//#error FreeType is not used in MacOS and iOS builds. It does not work as well as CTFont based code.
|
|
#endif
|
|
|
|
/*
|
|
Returns:
|
|
Units per em in font design units.
|
|
*/
|
|
ON_DECL
|
|
unsigned int ON_FreeTypeGetFontUnitsPerM(
|
|
const class ON_Font* font
|
|
);
|
|
|
|
/*
|
|
Parameters:
|
|
font_unit_font_metrics - [in]
|
|
metrics in font units (freetype face loaded with FT_LOAD_NO_SCALE) unless
|
|
it is a "tricky" font.
|
|
*/
|
|
ON_DECL
|
|
void ON_FreeTypeGetFontMetrics(
|
|
const class ON_Font* font,
|
|
class ON_FontMetrics& font_unit_font_metrics
|
|
);
|
|
|
|
/*
|
|
Parameters:
|
|
glyph_box - [out]
|
|
glyph metrics infont units (freetype face loaded with FT_LOAD_NO_SCALE) unless
|
|
it is a "tricky" font.
|
|
Returns:
|
|
0 if box was not set.
|
|
>0: font glyph index (or other non-zero value) when box is set
|
|
*/
|
|
ON_DECL
|
|
unsigned int ON_FreeTypeGetGlyphMetrics(
|
|
const class ON_FontGlyph* glyph,
|
|
class ON_TextBox& glyph_metrics_in_font_design_units
|
|
);
|
|
|
|
/*
|
|
Parameters:
|
|
glyph - [in]
|
|
bSingleStrokeFont - [in]
|
|
outline - [out]
|
|
outline and metrics in font design units
|
|
*/
|
|
ON_DECL
|
|
bool ON_FreeTypeGetGlyphOutline(
|
|
const class ON_FontGlyph* glyph,
|
|
ON_OutlineFigure::Type figure_type,
|
|
class ON_Outline& outline
|
|
);
|
|
|
|
/*
|
|
Parameters:
|
|
glyph - [in]
|
|
glyph_index - [in]
|
|
If known for certain, pass in the glyph index. If not known, pass in 0.
|
|
figure_type - [in]
|
|
If known for certain, pass in figure_type. Otherwise, pass in ON_OutlineFigure::Type::Unset.
|
|
outline - [out]
|
|
outline and metrics in font design units
|
|
*/
|
|
ON_DECL
|
|
bool ON_FreeTypeGetGlyphOutline(
|
|
const class ON_FontGlyph* glyph,
|
|
unsigned int glyph_index,
|
|
ON_OutlineFigure::Type figure_type,
|
|
class ON_Outline& outline
|
|
);
|
|
|
|
/*
|
|
Description:
|
|
A wrapper for calculating parameters and calling FreeType library
|
|
functions FT_Set_Char_Size() FT_Load_Glyph().
|
|
Parameters:
|
|
ft_face - [in]
|
|
A pointer to and FT_Face. One way to get this value is to call ON_Font::FreeTypeFace()
|
|
font_glyph_id - [in]
|
|
font glyph id
|
|
Returns:
|
|
True if glyph is available and loaded.
|
|
*/
|
|
ON_DECL
|
|
bool ON_FreeTypeLoadGlyph(
|
|
ON__UINT_PTR ft_face,
|
|
unsigned int font_glyph_index,
|
|
bool bLoadRenderBitmap
|
|
);
|
|
#endif
|
|
|
|
|
|
#endif
|