Home | History | Annotate | Download | only in api
      1 SkTextBlobBuilder Reference
      2 ===
      3 
      4 
      5 <a name='SkTextBlobBuilder'></a>
      6 
      7 ---
      8 
      9 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
     10 class <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> {
     11 
     12     <a href='#SkTextBlobBuilder_empty_constructor'>SkTextBlobBuilder()</a>;
     13     <a href='#SkTextBlobBuilder_destructor'>~SkTextBlobBuilder()</a>;
     14     <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlobBuilder_make'>make()</a>;
     15     const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y,
     16                               const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr);
     17     const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> y,
     18                                   const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr);
     19     const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, int count,
     20                                  const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr);
     21 };
     22 
     23 </pre>
     24 
     25 Helper class for constructing <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>.
     26 
     27 <a name='SkTextBlobBuilder_RunBuffer'></a>
     28 
     29 ---
     30 
     31 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
     32     struct <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a> {
     33         <a href='undocumented#SkGlyphID'>SkGlyphID</a>* <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a>;
     34         <a href='undocumented#SkScalar'>SkScalar</a>* <a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>;
     35         char* <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>;
     36         uint32_t* <a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a>;
     37     };
     38 </pre>
     39 
     40 <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a> supplies storage for <a href='undocumented#Glyph'>Glyphs</a> and positions within a run.
     41 
     42 A run is a sequence of <a href='undocumented#Glyph'>Glyphs</a> sharing <a href='#Font_Metrics'>Font_Metrics</a> and positioning.
     43 Each run may position its <a href='undocumented#Glyph'>Glyphs</a> in one of three ways:
     44 by specifying where the first <a href='undocumented#Glyph'>Glyph</a> is drawn, and allowing <a href='#Font_Metrics'>Font_Metrics</a> to
     45 determine the advance to subsequent <a href='undocumented#Glyph'>Glyphs</a>; by specifying a baseline, and
     46 the position on that baseline for each <a href='undocumented#Glyph'>Glyph</a> in run; or by providing <a href='SkPoint_Reference#Point'>Point</a>
     47 array, one per <a href='undocumented#Glyph'>Glyph</a>.<table style='border-collapse: collapse; width: 62.5em'>
     48 
     49   <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Type</th>
     50 <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Member</th>
     51 <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
     52   <tr style='background-color: #f0f0f0; '>
     53     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkGlyphID*</td>
     54     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextBlobBuilder_RunBuffer_glyphs'><code>glyphs</code></a></td>
     55     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
     56 <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> <a href='SkPoint_Reference#Point'>points</a> to memory for one or more <a href='undocumented#Glyph'>Glyphs</a>. <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> memory must be
     57 written to by the caller.
     58 </td>
     59   </tr>
     60   <tr>
     61     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkScalar*</td>
     62     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextBlobBuilder_RunBuffer_pos'><code>pos</code></a></td>
     63     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
     64 <a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a> <a href='SkPoint_Reference#Point'>points</a> to memory for <a href='undocumented#Glyph'>Glyph</a> positions. Depending on how <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>
     65 is allocated, <a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a> may <a href='SkPoint_Reference#Point'>point</a> to zero bytes per <a href='undocumented#Glyph'>Glyph</a>, one <a href='undocumented#Scalar'>Scalar</a> per <a href='undocumented#Glyph'>Glyph</a>,
     66 or one <a href='SkPoint_Reference#Point'>Point</a> per <a href='undocumented#Glyph'>Glyph</a>.
     67 </td>
     68   </tr>
     69   <tr style='background-color: #f0f0f0; '>
     70     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>char*</td>
     71     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextBlobBuilder_RunBuffer_utf8text'><code>utf8text</code></a></td>
     72     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
     73 Reserved for future use. <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a> should not be read or written.
     74 </td>
     75   </tr>
     76   <tr>
     77     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>uint32_t*</td>
     78     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextBlobBuilder_RunBuffer_clusters'><code>clusters</code></a></td>
     79     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
     80 Reserved for future use. <a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should not be read or written.
     81 </td>
     82   </tr>
     83 </table>
     84 
     85 ### See Also
     86 
     87 <a href='#SkTextBlobBuilder_allocRun'>allocRun</a> <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a> <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>
     88 
     89 <a name='SkTextBlobBuilder_empty_constructor'></a>
     90 
     91 ---
     92 
     93 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
     94 <a href='#SkTextBlobBuilder_empty_constructor'>SkTextBlobBuilder()</a>
     95 </pre>
     96 
     97 Constructs empty <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>. By default, <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> has no runs.
     98 
     99 ### Return Value
    100 
    101 empty <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>
    102 
    103 ### Example
    104 
    105 <div><fiddle-embed name="d9dbabfe24aad92ee3c8144513e90d81">
    106 
    107 #### Example Output
    108 
    109 ~~~~
    110 blob equals nullptr
    111 ~~~~
    112 
    113 </fiddle-embed></div>
    114 
    115 ### See Also
    116 
    117 <a href='#SkTextBlobBuilder_make'>make</a> <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>::<a href='#SkTextBlob_MakeFromText'>MakeFromText</a>
    118 
    119 <a name='SkTextBlobBuilder_destructor'></a>
    120 
    121 ---
    122 
    123 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    124 <a href='#SkTextBlobBuilder_destructor'>~SkTextBlobBuilder()</a>
    125 </pre>
    126 
    127 Deletes <a href='undocumented#Data'>data</a> allocated internally by <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>.
    128 
    129 ### See Also
    130 
    131 <a href='#SkTextBlobBuilder_empty_constructor'>SkTextBlobBuilder()</a>
    132 
    133 <a name='SkTextBlobBuilder_make'></a>
    134 
    135 ---
    136 
    137 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    138 <a href='undocumented#sk_sp'>sk_sp</a>&lt;<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>&gt; <a href='#SkTextBlobBuilder_make'>make()</a>
    139 </pre>
    140 
    141 Returns <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> built from runs of <a href='undocumented#Glyph'>glyphs</a> added by builder. Returned
    142 <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> is immutable; it may be copied, but its contents may not be altered.
    143 Returns nullptr if no runs of <a href='undocumented#Glyph'>glyphs</a> were added by builder.
    144 
    145 Resets <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> to its initial empty state, allowing it to be
    146 reused to build a new set of runs.
    147 
    148 ### Return Value
    149 
    150 <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> or nullptr
    151 
    152 ### Example
    153 
    154 <div><fiddle-embed name="34c37c0212cc0aef670d96945d08fe24">
    155 
    156 #### Example Output
    157 
    158 ~~~~
    159 blob equals nullptr
    160 blob does not equal nullptr
    161 blob equals nullptr
    162 ~~~~
    163 
    164 </fiddle-embed></div>
    165 
    166 ### See Also
    167 
    168 <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>::<a href='#SkTextBlob_MakeFromText'>MakeFromText</a>
    169 
    170 <a name='SkTextBlobBuilder_allocRun'></a>
    171 
    172 ---
    173 
    174 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    175 const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y,
    176                           const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr)
    177 </pre>
    178 
    179 Returns run with storage for <a href='undocumented#Glyph'>glyphs</a>. Caller must write <a href='#SkTextBlobBuilder_allocRun_count'>count</a> <a href='undocumented#Glyph'>glyphs</a> to
    180 <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> before next call to <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>.
    181 
    182 <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored.
    183 
    184 <a href='undocumented#Glyph'>Glyphs</a> share metrics in <a href='#SkTextBlobBuilder_allocRun_font'>font</a>.
    185 
    186 <a href='undocumented#Glyph'>Glyphs</a> are positioned on a baseline at (<a href='#SkTextBlobBuilder_allocRun_x'>x</a>, <a href='#SkTextBlobBuilder_allocRun_y'>y</a>), using  <a href='undocumented#Font_Metrics'>font metrics</a> to
    187 determine their relative placement.
    188 
    189 <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> defines an optional bounding box, used to suppress drawing when <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
    190 <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> does not intersect <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a>. If <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> is nullptr, <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a>
    191 is computed from (<a href='#SkTextBlobBuilder_allocRun_x'>x</a>, <a href='#SkTextBlobBuilder_allocRun_y'>y</a>) and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> metrics.
    192 
    193 ### Parameters
    194 
    195 <table>  <tr>    <td><a name='SkTextBlobBuilder_allocRun_font'><code><strong>font</strong></code></a></td>
    196     <td><a href='SkFont_Reference#SkFont'>SkFont</a> used for this run</td>
    197   </tr>
    198   <tr>    <td><a name='SkTextBlobBuilder_allocRun_count'><code><strong>count</strong></code></a></td>
    199     <td>number of <a href='undocumented#Glyph'>glyphs</a></td>
    200   </tr>
    201   <tr>    <td><a name='SkTextBlobBuilder_allocRun_x'><code><strong>x</strong></code></a></td>
    202     <td>horizontal offset within the blob</td>
    203   </tr>
    204   <tr>    <td><a name='SkTextBlobBuilder_allocRun_y'><code><strong>y</strong></code></a></td>
    205     <td>vertical offset within the blob</td>
    206   </tr>
    207   <tr>    <td><a name='SkTextBlobBuilder_allocRun_bounds'><code><strong>bounds</strong></code></a></td>
    208     <td>optional run bounding box</td>
    209   </tr>
    210 </table>
    211 
    212 ### Return Value
    213 
    214 writable <a href='undocumented#Glyph'>glyph</a> buffer
    215 
    216 ### Example
    217 
    218 <div><fiddle-embed name="f0e584aec20eaee7a5bfed62aa885eee"></fiddle-embed></div>
    219 
    220 ### See Also
    221 
    222 <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a> <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>
    223 
    224 <a name='SkTextBlobBuilder_allocRunPosH'></a>
    225 
    226 ---
    227 
    228 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    229 const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> y,
    230                               const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr)
    231 </pre>
    232 
    233 Returns run with storage for <a href='undocumented#Glyph'>glyphs</a> and positions along baseline. Caller must
    234 write <a href='#SkTextBlobBuilder_allocRunPosH_count'>count</a> <a href='undocumented#Glyph'>glyphs</a> to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a>, and <a href='#SkTextBlobBuilder_allocRunPosH_count'>count</a> <a href='undocumented#Scalar'>scalars</a> to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>;
    235 before next call to <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>.
    236 
    237 <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored.
    238 
    239 <a href='undocumented#Glyph'>Glyphs</a> share metrics in <a href='#SkTextBlobBuilder_allocRunPosH_font'>font</a>.
    240 
    241 <a href='undocumented#Glyph'>Glyphs</a> are positioned on a baseline at <a href='#SkTextBlobBuilder_allocRunPosH_y'>y</a>, using x-axis positions written by
    242 caller to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>.
    243 
    244 <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> defines an optional bounding box, used to suppress drawing when <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
    245 <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> does not intersect <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a>. If <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> is nullptr, <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a>
    246 is computed from <a href='#SkTextBlobBuilder_allocRunPosH_y'>y</a>, <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> metrics.
    247 
    248 ### Parameters
    249 
    250 <table>  <tr>    <td><a name='SkTextBlobBuilder_allocRunPosH_font'><code><strong>font</strong></code></a></td>
    251     <td><a href='SkFont_Reference#SkFont'>SkFont</a> used for this run</td>
    252   </tr>
    253   <tr>    <td><a name='SkTextBlobBuilder_allocRunPosH_count'><code><strong>count</strong></code></a></td>
    254     <td>number of <a href='undocumented#Glyph'>glyphs</a></td>
    255   </tr>
    256   <tr>    <td><a name='SkTextBlobBuilder_allocRunPosH_y'><code><strong>y</strong></code></a></td>
    257     <td>vertical offset within the blob</td>
    258   </tr>
    259   <tr>    <td><a name='SkTextBlobBuilder_allocRunPosH_bounds'><code><strong>bounds</strong></code></a></td>
    260     <td>optional run bounding box</td>
    261   </tr>
    262 </table>
    263 
    264 ### Return Value
    265 
    266 writable <a href='undocumented#Glyph'>glyph</a> buffer and x-axis position buffer
    267 
    268 ### Example
    269 
    270 <div><fiddle-embed name="c77ac50f506106fdfef94d20bc1a6934"></fiddle-embed></div>
    271 
    272 ### See Also
    273 
    274 <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a> <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>
    275 
    276 <a name='SkTextBlobBuilder_allocRunPos'></a>
    277 
    278 ---
    279 
    280 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    281 const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, int count, const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr)
    282 </pre>
    283 
    284 Returns run with storage for <a href='undocumented#Glyph'>glyphs</a> and <a href='SkPoint_Reference#SkPoint'>SkPoint</a> positions. Caller must
    285 write <a href='#SkTextBlobBuilder_allocRunPos_count'>count</a> <a href='undocumented#Glyph'>glyphs</a> to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a>, and <a href='#SkTextBlobBuilder_allocRunPos_count'>count</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>;
    286 before next call to <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>.
    287 
    288 <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored.
    289 
    290 <a href='undocumented#Glyph'>Glyphs</a> share metrics in <a href='#SkTextBlobBuilder_allocRunPos_font'>font</a>.
    291 
    292 <a href='undocumented#Glyph'>Glyphs</a> are positioned using <a href='SkPoint_Reference#SkPoint'>SkPoint</a> written by caller to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, using
    293 two <a href='undocumented#Scalar'>scalar</a> values for each <a href='SkPoint_Reference#SkPoint'>SkPoint</a>.
    294 
    295 <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> defines an optional bounding box, used to suppress drawing when <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
    296 <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> does not intersect <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a>. If <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> is nullptr, <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a>
    297 is computed from <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> metrics.
    298 
    299 ### Parameters
    300 
    301 <table>  <tr>    <td><a name='SkTextBlobBuilder_allocRunPos_font'><code><strong>font</strong></code></a></td>
    302     <td><a href='SkFont_Reference#SkFont'>SkFont</a> used for this run</td>
    303   </tr>
    304   <tr>    <td><a name='SkTextBlobBuilder_allocRunPos_count'><code><strong>count</strong></code></a></td>
    305     <td>number of <a href='undocumented#Glyph'>glyphs</a></td>
    306   </tr>
    307   <tr>    <td><a name='SkTextBlobBuilder_allocRunPos_bounds'><code><strong>bounds</strong></code></a></td>
    308     <td>optional run bounding box</td>
    309   </tr>
    310 </table>
    311 
    312 ### Return Value
    313 
    314 writable <a href='undocumented#Glyph'>glyph</a> buffer and <a href='SkPoint_Reference#SkPoint'>SkPoint</a> buffer
    315 
    316 ### Example
    317 
    318 <div><fiddle-embed name="da4fcb4a972b500996be9aff6c6c40e1"></fiddle-embed></div>
    319 
    320 ### See Also
    321 
    322 <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a> <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>
    323 
    324