const <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>&<ahref='#SkTextBlobBuilder_allocRun'>allocRun</a>(const <ahref='SkFont_Reference#SkFont'>SkFont</a>&<ahref='SkFont_Reference#Font'>font</a>, int count, <ahref='undocumented#SkScalar'>SkScalar</a> x, <ahref='undocumented#SkScalar'>SkScalar</a> y,
const <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>&<ahref='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(const <ahref='SkFont_Reference#SkFont'>SkFont</a>&<ahref='SkFont_Reference#Font'>font</a>, int count, <ahref='undocumented#SkScalar'>SkScalar</a> y,
const <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>&<ahref='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>(const <ahref='SkFont_Reference#SkFont'>SkFont</a>&<ahref='SkFont_Reference#Font'>font</a>, int count,
<ahref='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a><ahref='SkPoint_Reference#Point'>points</a> to memory for one or more <ahref='undocumented#Glyph'>Glyphs</a>. <ahref='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> memory must be
<ahref='#SkTextBlobBuilder_RunBuffer_pos'>pos</a><ahref='SkPoint_Reference#Point'>points</a> to memory for <ahref='undocumented#Glyph'>Glyph</a> positions. Depending on how <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>
is allocated, <ahref='#SkTextBlobBuilder_RunBuffer_pos'>pos</a> may <ahref='SkPoint_Reference#Point'>point</a> to zero bytes per <ahref='undocumented#Glyph'>Glyph</a>, one <ahref='undocumented#Scalar'>Scalar</a> per <ahref='undocumented#Glyph'>Glyph</a>,
or one <ahref='SkPoint_Reference#Point'>Point</a> per <ahref='undocumented#Glyph'>Glyph</a>.
Constructs empty <ahref='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>. By default, <ahref='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> has no runs.
const <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>&<ahref='#SkTextBlobBuilder_allocRun'>allocRun</a>(const <ahref='SkFont_Reference#SkFont'>SkFont</a>&<ahref='SkFont_Reference#Font'>font</a>, int count, <ahref='undocumented#SkScalar'>SkScalar</a> x, <ahref='undocumented#SkScalar'>SkScalar</a> y,
Returns run with storage for <ahref='undocumented#Glyph'>glyphs</a>. Caller must write <ahref='#SkTextBlobBuilder_allocRun_count'>count</a><ahref='undocumented#Glyph'>glyphs</a> to
<ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> before next call to <ahref='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>.
<ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, and <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored.
<ahref='undocumented#Glyph'>Glyphs</a> are positioned on a baseline at (<ahref='#SkTextBlobBuilder_allocRun_x'>x</a>, <ahref='#SkTextBlobBuilder_allocRun_y'>y</a>), using <ahref='undocumented#Font_Metrics'>font metrics</a> to
<ahref='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> defines an optional bounding box, used to suppress drawing when <ahref='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
<ahref='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> does not intersect <ahref='SkSurface_Reference#SkSurface'>SkSurface</a><ahref='#SkTextBlobBuilder_allocRun_bounds'>bounds</a>. If <ahref='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> is nullptr, <ahref='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a><ahref='#SkTextBlobBuilder_allocRun_bounds'>bounds</a>
is computed from (<ahref='#SkTextBlobBuilder_allocRun_x'>x</a>, <ahref='#SkTextBlobBuilder_allocRun_y'>y</a>) and <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> metrics.
const <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>&<ahref='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(const <ahref='SkFont_Reference#SkFont'>SkFont</a>&<ahref='SkFont_Reference#Font'>font</a>, int count, <ahref='undocumented#SkScalar'>SkScalar</a> y,
Returns run with storage for <ahref='undocumented#Glyph'>glyphs</a> and positions along baseline. Caller must
write <ahref='#SkTextBlobBuilder_allocRunPosH_count'>count</a><ahref='undocumented#Glyph'>glyphs</a> to <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a>, and <ahref='#SkTextBlobBuilder_allocRunPosH_count'>count</a><ahref='undocumented#Scalar'>scalars</a> to <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>;
<ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, and <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored.
<ahref='undocumented#Glyph'>Glyphs</a> are positioned on a baseline at <ahref='#SkTextBlobBuilder_allocRunPosH_y'>y</a>, using x-axis positions written by
<ahref='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> defines an optional bounding box, used to suppress drawing when <ahref='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
<ahref='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> does not intersect <ahref='SkSurface_Reference#SkSurface'>SkSurface</a><ahref='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a>. If <ahref='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> is nullptr, <ahref='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a><ahref='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a>
is computed from <ahref='#SkTextBlobBuilder_allocRunPosH_y'>y</a>, <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, and <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> metrics.
Returns run with storage for <ahref='undocumented#Glyph'>glyphs</a> and <ahref='SkPoint_Reference#SkPoint'>SkPoint</a> positions. Caller must
write <ahref='#SkTextBlobBuilder_allocRunPos_count'>count</a><ahref='undocumented#Glyph'>glyphs</a> to <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a>, and <ahref='#SkTextBlobBuilder_allocRunPos_count'>count</a><ahref='SkPoint_Reference#SkPoint'>SkPoint</a> to <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>;
<ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, and <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored.
<ahref='undocumented#Glyph'>Glyphs</a> are positioned using <ahref='SkPoint_Reference#SkPoint'>SkPoint</a> written by caller to <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, using
two <ahref='undocumented#Scalar'>scalar</a> values for each <ahref='SkPoint_Reference#SkPoint'>SkPoint</a>.
<ahref='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> defines an optional bounding box, used to suppress drawing when <ahref='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
<ahref='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> does not intersect <ahref='SkSurface_Reference#SkSurface'>SkSurface</a><ahref='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a>. If <ahref='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> is nullptr, <ahref='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a><ahref='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a>
is computed from <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, and <ahref='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<ahref='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> metrics.