Add SKPaint.FontMetrics property.
This commit is contained in:
Родитель
f4306bd147
Коммит
665dbad77c
|
@ -133,15 +133,16 @@ namespace SkiaSharp
|
|||
CounterClockwise
|
||||
}
|
||||
|
||||
public enum SKPathFillType
|
||||
{
|
||||
Winding,
|
||||
EvenOdd,
|
||||
InverseWinding,
|
||||
InverseEvenOdd
|
||||
}
|
||||
public enum SKPathFillType
|
||||
{
|
||||
Winding,
|
||||
EvenOdd,
|
||||
InverseWinding,
|
||||
InverseEvenOdd
|
||||
}
|
||||
|
||||
public enum SKColorType {
|
||||
public enum SKColorType
|
||||
{
|
||||
Unknown,
|
||||
Rgba_8888,
|
||||
Bgra_8888,
|
||||
|
@ -1140,5 +1141,101 @@ namespace SkiaSharp
|
|||
};
|
||||
}
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct SKFontMetrics
|
||||
{
|
||||
uint flags; // Bit field to identify which values are unknown
|
||||
float top; // The greatest distance above the baseline for any glyph (will be <= 0)
|
||||
float ascent; // The recommended distance above the baseline (will be <= 0)
|
||||
float descent; // The recommended distance below the baseline (will be >= 0)
|
||||
float bottom; // The greatest distance below the baseline for any glyph (will be >= 0)
|
||||
float leading; // The recommended distance to add between lines of text (will be >= 0)
|
||||
float avgCharWidth; // the average character width (>= 0)
|
||||
float maxCharWidth; // the max character width (>= 0)
|
||||
float xMin; // The minimum bounding box x value for all glyphs
|
||||
float xMax; // The maximum bounding box x value for all glyphs
|
||||
float xHeight; // The height of an 'x' in px, or 0 if no 'x' in face
|
||||
float capHeight; // The cap height (> 0), or 0 if cannot be determined.
|
||||
float underlineThickness; // underline thickness, or 0 if cannot be determined
|
||||
float underlinePosition; // underline position, or 0 if cannot be determined
|
||||
|
||||
const uint flagsUnderlineThicknessIsValid = (1U << 0);
|
||||
const uint flagsUnderlinePositionIsValid = (1U << 1);
|
||||
|
||||
float Top {
|
||||
get { return top; }
|
||||
}
|
||||
|
||||
float Ascent
|
||||
{
|
||||
get { return ascent; }
|
||||
}
|
||||
|
||||
float Descent
|
||||
{
|
||||
get { return descent; }
|
||||
}
|
||||
|
||||
float Bottom
|
||||
{
|
||||
get { return bottom; }
|
||||
}
|
||||
|
||||
float Leading
|
||||
{
|
||||
get { return leading; }
|
||||
}
|
||||
|
||||
float AverageCharacterWidth
|
||||
{
|
||||
get { return avgCharWidth; }
|
||||
}
|
||||
|
||||
float MaxCharacterWidth
|
||||
{
|
||||
get { return maxCharWidth; }
|
||||
}
|
||||
|
||||
float XMin
|
||||
{
|
||||
get { return xMin; }
|
||||
}
|
||||
|
||||
float XMax
|
||||
{
|
||||
get { return xMax; }
|
||||
}
|
||||
|
||||
float XHeight
|
||||
{
|
||||
get { return xHeight; }
|
||||
}
|
||||
|
||||
float CapHeight
|
||||
{
|
||||
get { return capHeight; }
|
||||
}
|
||||
|
||||
float? UnderlineThickness
|
||||
{
|
||||
get {
|
||||
if ((flags & flagsUnderlineThicknessIsValid) != 0)
|
||||
return underlineThickness;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
float? UnderlinePosition
|
||||
{
|
||||
get {
|
||||
if ((flags & flagsUnderlinePositionIsValid) != 0)
|
||||
return underlinePosition;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -247,6 +247,16 @@ namespace SkiaSharp
|
|||
|
||||
return (long)SkiaApi.sk_paint_break_text (Handle, buffer, length, maxWidth, out measuredWidth);
|
||||
}
|
||||
|
||||
public SKFontMetrics FontMetrics
|
||||
{
|
||||
get
|
||||
{
|
||||
SKFontMetrics metrics;
|
||||
SkiaApi.sk_paint_get_fontmetrics(Handle, out metrics);
|
||||
return metrics;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -244,6 +244,8 @@ namespace SkiaSharp
|
|||
public extern static IntPtr sk_paint_break_utf16_text(sk_paint_t t, [MarshalAs(UnmanagedType.LPWStr)] string text, IntPtr length, float maxWidth, out float measuredWidth);
|
||||
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
|
||||
public extern static IntPtr sk_paint_break_text (sk_paint_t t, byte [] text, IntPtr length, float maxWidth, out float measuredWidth);
|
||||
[DllImport(SKIA, CallingConvention = CallingConvention.Cdecl)]
|
||||
public extern static void sk_paint_get_fontmetrics(sk_paint_t t, out SKFontMetrics fontMetrics);
|
||||
|
||||
|
||||
[DllImport(SKIA, CallingConvention = CallingConvention.Cdecl)]
|
||||
|
|
2
skia
2
skia
|
@ -1 +1 @@
|
|||
Subproject commit 45bdc31f6d735d23779b131c3e373047f2bbc8ac
|
||||
Subproject commit a4049c724ff869706f026e38dd07f634b7d18256
|
Загрузка…
Ссылка в новой задаче