Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-updates > by-pkgid > 67d6f1fcdf59eeb6f1363fc33c40091c > files > 148

icu-doc-53.1-12.6.mga5.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ICU 53.1: icu::LayoutEngine Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">ICU 53.1
   &#160;<span id="projectnumber">53.1</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="classes.html"><span>Data&#160;Structure&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceicu.html">icu</a></li><li class="navelem"><a class="el" href="classicu_1_1LayoutEngine.html">LayoutEngine</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-static-methods">Static Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a>  </div>
  <div class="headertitle">
<div class="title">icu::LayoutEngine Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>This is a virtual base class used to do complex text layout.  
 <a href="classicu_1_1LayoutEngine.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="LayoutEngine_8h_source.html">LayoutEngine.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for icu::LayoutEngine:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classicu_1_1LayoutEngine.png" usemap="#icu::LayoutEngine_map" alt=""/>
  <map id="icu::LayoutEngine_map" name="icu::LayoutEngine_map">
<area href="classicu_1_1UObject.html" title="UObject is the common ICU &quot;boilerplate&quot; class. " alt="icu::UObject" shape="rect" coords="0,56,112,80"/>
<area href="classicu_1_1UMemory.html" title="UMemory is the common ICU base class. " alt="icu::UMemory" shape="rect" coords="0,0,112,24"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a32a73ba431cff55fcc29ff71ba0c52d4"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a32a73ba431cff55fcc29ff71ba0c52d4">~LayoutEngine</a> ()</td></tr>
<tr class="memdesc:a32a73ba431cff55fcc29ff71ba0c52d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The destructor.  <a href="#a32a73ba431cff55fcc29ff71ba0c52d4">More...</a><br/></td></tr>
<tr class="separator:a32a73ba431cff55fcc29ff71ba0c52d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1575d6983f29e22f7603f4946d15b36d"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a1575d6983f29e22f7603f4946d15b36d">layoutChars</a> (const <a class="el" href="LETypes_8h.html#a903cb689308cdef41500411d096a2c2d">LEUnicode</a> chars[], <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> offset, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> count, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> max, <a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a> rightToLeft, float x, float y, <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success)</td></tr>
<tr class="memdesc:a1575d6983f29e22f7603f4946d15b36d"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method will invoke the layout steps in their correct order by calling the computeGlyphs, positionGlyphs and adjustGlyphPosition methods.  <a href="#a1575d6983f29e22f7603f4946d15b36d">More...</a><br/></td></tr>
<tr class="separator:a1575d6983f29e22f7603f4946d15b36d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2f485ed0c2b6980772814ca55ac408d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#ad2f485ed0c2b6980772814ca55ac408d">getGlyphCount</a> () const </td></tr>
<tr class="memdesc:ad2f485ed0c2b6980772814ca55ac408d"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method returns the number of glyphs in the glyph array.  <a href="#ad2f485ed0c2b6980772814ca55ac408d">More...</a><br/></td></tr>
<tr class="separator:ad2f485ed0c2b6980772814ca55ac408d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadbe3b03c6170b6261925ba4c024ed0a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#aadbe3b03c6170b6261925ba4c024ed0a">getGlyphs</a> (<a class="el" href="LETypes_8h.html#ae440e077586bced1a0d1c534643ffc23">LEGlyphID</a> glyphs[], <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success) const </td></tr>
<tr class="memdesc:aadbe3b03c6170b6261925ba4c024ed0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method copies the glyph array into a caller supplied array.  <a href="#aadbe3b03c6170b6261925ba4c024ed0a">More...</a><br/></td></tr>
<tr class="separator:aadbe3b03c6170b6261925ba4c024ed0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75895a7b6e5dc5ec7705c44af815801f"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a75895a7b6e5dc5ec7705c44af815801f">getGlyphs</a> (<a class="el" href="LETypes_8h.html#a8ed46f4fc717cf0a94de62efe109ecae">le_uint32</a> glyphs[], <a class="el" href="LETypes_8h.html#a8ed46f4fc717cf0a94de62efe109ecae">le_uint32</a> extraBits, <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success) const </td></tr>
<tr class="memdesc:a75895a7b6e5dc5ec7705c44af815801f"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method copies the glyph array into a caller supplied array, ORing in extra bits.  <a href="#a75895a7b6e5dc5ec7705c44af815801f">More...</a><br/></td></tr>
<tr class="separator:a75895a7b6e5dc5ec7705c44af815801f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcc4e59aaa7787da00fde89888f40707"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#afcc4e59aaa7787da00fde89888f40707">getCharIndices</a> (<a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> charIndices[], <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success) const </td></tr>
<tr class="memdesc:afcc4e59aaa7787da00fde89888f40707"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method copies the character index array into a caller supplied array.  <a href="#afcc4e59aaa7787da00fde89888f40707">More...</a><br/></td></tr>
<tr class="separator:afcc4e59aaa7787da00fde89888f40707"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba0a50ebf4603175f5bcf13dc3d438bd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#aba0a50ebf4603175f5bcf13dc3d438bd">getCharIndices</a> (<a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> charIndices[], <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> indexBase, <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success) const </td></tr>
<tr class="memdesc:aba0a50ebf4603175f5bcf13dc3d438bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method copies the character index array into a caller supplied array.  <a href="#aba0a50ebf4603175f5bcf13dc3d438bd">More...</a><br/></td></tr>
<tr class="separator:aba0a50ebf4603175f5bcf13dc3d438bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1543562ae0eacd6cde9a1a4a9882a1f6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a1543562ae0eacd6cde9a1a4a9882a1f6">getGlyphPositions</a> (float positions[], <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success) const </td></tr>
<tr class="memdesc:a1543562ae0eacd6cde9a1a4a9882a1f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method copies the position array into a caller supplied array.  <a href="#a1543562ae0eacd6cde9a1a4a9882a1f6">More...</a><br/></td></tr>
<tr class="separator:a1543562ae0eacd6cde9a1a4a9882a1f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40622275ec4c3e977877a22279633541"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a40622275ec4c3e977877a22279633541">getGlyphPosition</a> (<a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> glyphIndex, float &amp;x, float &amp;y, <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success) const </td></tr>
<tr class="memdesc:a40622275ec4c3e977877a22279633541"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method returns the X and Y position of the glyph at the given index.  <a href="#a40622275ec4c3e977877a22279633541">More...</a><br/></td></tr>
<tr class="separator:a40622275ec4c3e977877a22279633541"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fdebe7233b7105027ebd4d4065aae40"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a3fdebe7233b7105027ebd4d4065aae40">reset</a> ()</td></tr>
<tr class="memdesc:a3fdebe7233b7105027ebd4d4065aae40"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method frees the glyph, character index and position arrays so that the <a class="el" href="classicu_1_1LayoutEngine.html" title="This is a virtual base class used to do complex text layout. ">LayoutEngine</a> can be reused to layout a different characer array.  <a href="#a3fdebe7233b7105027ebd4d4065aae40">More...</a><br/></td></tr>
<tr class="separator:a3fdebe7233b7105027ebd4d4065aae40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa189a5398f6510f4631db60c42ad78c3"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="uobject_8h.html#a22af10545208a455a6e884008df48e9f">UClassID</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#aa189a5398f6510f4631db60c42ad78c3">getDynamicClassID</a> () const </td></tr>
<tr class="memdesc:aa189a5398f6510f4631db60c42ad78c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">ICU "poor man's RTTI", returns a UClassID for the actual class.  <a href="#aa189a5398f6510f4631db60c42ad78c3">More...</a><br/></td></tr>
<tr class="separator:aa189a5398f6510f4631db60c42ad78c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classicu_1_1UObject"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classicu_1_1UObject')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classicu_1_1UObject.html">icu::UObject</a></td></tr>
<tr class="memitem:af10026497704f510d3d1f2eff50acb18 inherit pub_methods_classicu_1_1UObject"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1UObject.html#af10026497704f510d3d1f2eff50acb18">~UObject</a> ()</td></tr>
<tr class="memdesc:af10026497704f510d3d1f2eff50acb18 inherit pub_methods_classicu_1_1UObject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="#af10026497704f510d3d1f2eff50acb18">More...</a><br/></td></tr>
<tr class="separator:af10026497704f510d3d1f2eff50acb18 inherit pub_methods_classicu_1_1UObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a4436267d5c364849253a786cccfeb316"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classicu_1_1LayoutEngine.html">LayoutEngine</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a4436267d5c364849253a786cccfeb316">layoutEngineFactory</a> (const <a class="el" href="classicu_1_1LEFontInstance.html">LEFontInstance</a> *fontInstance, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> scriptCode, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> languageCode, <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success)</td></tr>
<tr class="memdesc:a4436267d5c364849253a786cccfeb316"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method returns a <a class="el" href="classicu_1_1LayoutEngine.html" title="This is a virtual base class used to do complex text layout. ">LayoutEngine</a> capable of laying out text in the given font, script and langauge.  <a href="#a4436267d5c364849253a786cccfeb316">More...</a><br/></td></tr>
<tr class="separator:a4436267d5c364849253a786cccfeb316"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d03d17438e14b9e89d153bbb639f03f"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classicu_1_1LayoutEngine.html">LayoutEngine</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a8d03d17438e14b9e89d153bbb639f03f">layoutEngineFactory</a> (const <a class="el" href="classicu_1_1LEFontInstance.html">LEFontInstance</a> *fontInstance, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> scriptCode, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> languageCode, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> typo_flags, <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success)</td></tr>
<tr class="memdesc:a8d03d17438e14b9e89d153bbb639f03f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override of existing call that provides flags to control typography.  <a href="#a8d03d17438e14b9e89d153bbb639f03f">More...</a><br/></td></tr>
<tr class="separator:a8d03d17438e14b9e89d153bbb639f03f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a435ffb13f0b0c6bcb44bb6ddf8628ed9"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="uobject_8h.html#a22af10545208a455a6e884008df48e9f">UClassID</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a435ffb13f0b0c6bcb44bb6ddf8628ed9">getStaticClassID</a> ()</td></tr>
<tr class="memdesc:a435ffb13f0b0c6bcb44bb6ddf8628ed9"><td class="mdescLeft">&#160;</td><td class="mdescRight">ICU "poor man's RTTI", returns a UClassID for this class.  <a href="#a435ffb13f0b0c6bcb44bb6ddf8628ed9">More...</a><br/></td></tr>
<tr class="separator:a435ffb13f0b0c6bcb44bb6ddf8628ed9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a69a0d66737ffc5c112c9e8c1190e5fe0"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a69a0d66737ffc5c112c9e8c1190e5fe0">kTypoFlagKern</a></td></tr>
<tr class="separator:a69a0d66737ffc5c112c9e8c1190e5fe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17a2d6de0c9a3a368930f643897c683c"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a17a2d6de0c9a3a368930f643897c683c">kTypoFlagLiga</a></td></tr>
<tr class="separator:a17a2d6de0c9a3a368930f643897c683c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a3561145fde77e643788d67ff630f1968"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a3561145fde77e643788d67ff630f1968">LayoutEngine</a> (const <a class="el" href="classicu_1_1LEFontInstance.html">LEFontInstance</a> *fontInstance, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> scriptCode, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> languageCode, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> typoFlags, <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success)</td></tr>
<tr class="memdesc:a3561145fde77e643788d67ff630f1968"><td class="mdescLeft">&#160;</td><td class="mdescRight">This constructs an instance for a given font, script and language.  <a href="#a3561145fde77e643788d67ff630f1968">More...</a><br/></td></tr>
<tr class="separator:a3561145fde77e643788d67ff630f1968"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a813adfc7b786e3d6d93ebda95f90af22"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a813adfc7b786e3d6d93ebda95f90af22">LayoutEngine</a> ()</td></tr>
<tr class="memdesc:a813adfc7b786e3d6d93ebda95f90af22"><td class="mdescLeft">&#160;</td><td class="mdescRight">This overrides the default no argument constructor to make it difficult for clients to call it.  <a href="#a813adfc7b786e3d6d93ebda95f90af22">More...</a><br/></td></tr>
<tr class="separator:a813adfc7b786e3d6d93ebda95f90af22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab769b0ff3c6bcb45a8bd7a7ccc7f832d"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#ab769b0ff3c6bcb45a8bd7a7ccc7f832d">characterProcessing</a> (const <a class="el" href="LETypes_8h.html#a903cb689308cdef41500411d096a2c2d">LEUnicode</a> chars[], <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> offset, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> count, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> max, <a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a> rightToLeft, <a class="el" href="LETypes_8h.html#a903cb689308cdef41500411d096a2c2d">LEUnicode</a> *&amp;outChars, <a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> &amp;glyphStorage, <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success)</td></tr>
<tr class="memdesc:ab769b0ff3c6bcb45a8bd7a7ccc7f832d"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method does any required pre-processing to the input characters.  <a href="#ab769b0ff3c6bcb45a8bd7a7ccc7f832d">More...</a><br/></td></tr>
<tr class="separator:ab769b0ff3c6bcb45a8bd7a7ccc7f832d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a525f28e31060e75e7eeebf5aa3cc7141"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a525f28e31060e75e7eeebf5aa3cc7141">computeGlyphs</a> (const <a class="el" href="LETypes_8h.html#a903cb689308cdef41500411d096a2c2d">LEUnicode</a> chars[], <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> offset, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> count, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> max, <a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a> rightToLeft, <a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> &amp;glyphStorage, <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success)</td></tr>
<tr class="memdesc:a525f28e31060e75e7eeebf5aa3cc7141"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method does the glyph processing.  <a href="#a525f28e31060e75e7eeebf5aa3cc7141">More...</a><br/></td></tr>
<tr class="separator:a525f28e31060e75e7eeebf5aa3cc7141"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcbf46922242e160422cc0b963d1d3a5"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#abcbf46922242e160422cc0b963d1d3a5">positionGlyphs</a> (<a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> &amp;glyphStorage, float x, float y, <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success)</td></tr>
<tr class="memdesc:abcbf46922242e160422cc0b963d1d3a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method does basic glyph positioning.  <a href="#abcbf46922242e160422cc0b963d1d3a5">More...</a><br/></td></tr>
<tr class="separator:abcbf46922242e160422cc0b963d1d3a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4519cb627caa1edca0ee44b841e7ded"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#ae4519cb627caa1edca0ee44b841e7ded">adjustGlyphPositions</a> (const <a class="el" href="LETypes_8h.html#a903cb689308cdef41500411d096a2c2d">LEUnicode</a> chars[], <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> offset, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> count, <a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a> reverse, <a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> &amp;glyphStorage, <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success)</td></tr>
<tr class="memdesc:ae4519cb627caa1edca0ee44b841e7ded"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method does positioning adjustments like accent positioning and kerning.  <a href="#ae4519cb627caa1edca0ee44b841e7ded">More...</a><br/></td></tr>
<tr class="separator:ae4519cb627caa1edca0ee44b841e7ded"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a845b9ab2ff8a12ad886f93760f1fb7f9"><td class="memItemLeft" align="right" valign="top">virtual const void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a845b9ab2ff8a12ad886f93760f1fb7f9">getFontTable</a> (<a class="el" href="LETypes_8h.html#a9e22a06bf2336b583b317287cb94fcfa">LETag</a> tableTag, size_t &amp;length) const </td></tr>
<tr class="memdesc:a845b9ab2ff8a12ad886f93760f1fb7f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method gets a table from the font associated with the text.  <a href="#a845b9ab2ff8a12ad886f93760f1fb7f9">More...</a><br/></td></tr>
<tr class="separator:a845b9ab2ff8a12ad886f93760f1fb7f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c0009db24e312ecdda4adef2a112485"><td class="memItemLeft" align="right" valign="top">virtual const void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a4c0009db24e312ecdda4adef2a112485">getFontTable</a> (<a class="el" href="LETypes_8h.html#a9e22a06bf2336b583b317287cb94fcfa">LETag</a> tableTag) const </td></tr>
<tr class="separator:a4c0009db24e312ecdda4adef2a112485"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5d2e64e6b827b6a069a76f682a6b81b"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#ae5d2e64e6b827b6a069a76f682a6b81b">mapCharsToGlyphs</a> (const <a class="el" href="LETypes_8h.html#a903cb689308cdef41500411d096a2c2d">LEUnicode</a> chars[], <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> offset, <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> count, <a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a> reverse, <a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a> mirror, <a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> &amp;glyphStorage, <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success)</td></tr>
<tr class="memdesc:ae5d2e64e6b827b6a069a76f682a6b81b"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method does character to glyph mapping.  <a href="#ae5d2e64e6b827b6a069a76f682a6b81b">More...</a><br/></td></tr>
<tr class="separator:ae5d2e64e6b827b6a069a76f682a6b81b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
Static Protected Member Functions</h2></td></tr>
<tr class="memitem:a20aded693707df77870e81861b9a2481"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a20aded693707df77870e81861b9a2481">adjustMarkGlyphs</a> (<a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> &amp;glyphStorage, LEGlyphFilter *markFilter, <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success)</td></tr>
<tr class="memdesc:a20aded693707df77870e81861b9a2481"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is a convenience method that forces the advance width of mark glyphs to be zero, which is required for proper selection and highlighting.  <a href="#a20aded693707df77870e81861b9a2481">More...</a><br/></td></tr>
<tr class="separator:a20aded693707df77870e81861b9a2481"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada55f62cb1eca244083e453ccc34f4ff"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#ada55f62cb1eca244083e453ccc34f4ff">adjustMarkGlyphs</a> (const <a class="el" href="LETypes_8h.html#a903cb689308cdef41500411d096a2c2d">LEUnicode</a> chars[], <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> charCount, <a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a> reverse, <a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> &amp;glyphStorage, LEGlyphFilter *markFilter, <a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;success)</td></tr>
<tr class="memdesc:ada55f62cb1eca244083e453ccc34f4ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is a convenience method that forces the advance width of mark glyphs to be zero, which is required for proper selection and highlighting.  <a href="#ada55f62cb1eca244083e453ccc34f4ff">More...</a><br/></td></tr>
<tr class="separator:ada55f62cb1eca244083e453ccc34f4ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:af1245711d4251f20738132c5fc1e7d14"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#af1245711d4251f20738132c5fc1e7d14">fGlyphStorage</a></td></tr>
<tr class="memdesc:af1245711d4251f20738132c5fc1e7d14"><td class="mdescLeft">&#160;</td><td class="mdescRight">The object which holds the glyph storage.  <a href="#af1245711d4251f20738132c5fc1e7d14">More...</a><br/></td></tr>
<tr class="separator:af1245711d4251f20738132c5fc1e7d14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0bf2ebde0edb7645ab537759811f7e74"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classicu_1_1LEFontInstance.html">LEFontInstance</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a0bf2ebde0edb7645ab537759811f7e74">fFontInstance</a></td></tr>
<tr class="memdesc:a0bf2ebde0edb7645ab537759811f7e74"><td class="mdescLeft">&#160;</td><td class="mdescRight">The font instance for the text font.  <a href="#a0bf2ebde0edb7645ab537759811f7e74">More...</a><br/></td></tr>
<tr class="separator:a0bf2ebde0edb7645ab537759811f7e74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56738c57256087a4ab77158cd6a52ebf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a56738c57256087a4ab77158cd6a52ebf">fScriptCode</a></td></tr>
<tr class="memdesc:a56738c57256087a4ab77158cd6a52ebf"><td class="mdescLeft">&#160;</td><td class="mdescRight">The script code for the text.  <a href="#a56738c57256087a4ab77158cd6a52ebf">More...</a><br/></td></tr>
<tr class="separator:a56738c57256087a4ab77158cd6a52ebf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71ce1ef6c74d1c238abe282ebe08cfd5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a71ce1ef6c74d1c238abe282ebe08cfd5">fLanguageCode</a></td></tr>
<tr class="memdesc:a71ce1ef6c74d1c238abe282ebe08cfd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The langauge code for the text.  <a href="#a71ce1ef6c74d1c238abe282ebe08cfd5">More...</a><br/></td></tr>
<tr class="separator:a71ce1ef6c74d1c238abe282ebe08cfd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae138822d515e109bc32cd2c143280021"><td class="memItemLeft" align="right" valign="top"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#ae138822d515e109bc32cd2c143280021">fTypoFlags</a></td></tr>
<tr class="memdesc:ae138822d515e109bc32cd2c143280021"><td class="mdescLeft">&#160;</td><td class="mdescRight">The typographic control flags.  <a href="#ae138822d515e109bc32cd2c143280021">More...</a><br/></td></tr>
<tr class="separator:ae138822d515e109bc32cd2c143280021"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a013362609fdfe806c7133d6f9e0bbca0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1LayoutEngine.html#a013362609fdfe806c7133d6f9e0bbca0">fFilterZeroWidth</a></td></tr>
<tr class="memdesc:a013362609fdfe806c7133d6f9e0bbca0"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code>TRUE</code> if <code>mapCharsToGlyphs</code> should replace ZWJ / ZWNJ with a glyph with no contours.  <a href="#a013362609fdfe806c7133d6f9e0bbca0">More...</a><br/></td></tr>
<tr class="separator:a013362609fdfe806c7133d6f9e0bbca0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This is a virtual base class used to do complex text layout. </p>
<p>The text must all be in a single font, script, and language. An instance of a <a class="el" href="classicu_1_1LayoutEngine.html" title="This is a virtual base class used to do complex text layout. ">LayoutEngine</a> can be created by calling the layoutEngineFactory method. Fonts are identified by instances of the <a class="el" href="classicu_1_1LEFontInstance.html" title="This is a virtual base class that serves as the interface between a LayoutEngine and the platform fon...">LEFontInstance</a> class. Script and language codes are identified by integer codes, which are defined in ScriptAndLanuageTags.h.</p>
<p>Note that this class is not public API. It is declared public so that it can be exported from the library that it is a part of.</p>
<p>The input to the layout process is an array of characters in logical order, and a starting X, Y position for the text. The output is an array of glyph indices, an array of character indices for the glyphs, and an array of glyph positions. These arrays are protected members of <a class="el" href="classicu_1_1LayoutEngine.html" title="This is a virtual base class used to do complex text layout. ">LayoutEngine</a> which can be retreived by a public method. The reset method can be called to free these arrays so that the <a class="el" href="classicu_1_1LayoutEngine.html" title="This is a virtual base class used to do complex text layout. ">LayoutEngine</a> can be reused.</p>
<p>The layout process is done in three steps. There is a protected virtual method for each step. These methods have a default implementation which only does character to glyph mapping and default positioning using the glyph's advance widths. Subclasses can override these methods for more advanced layout. There is a public method which invokes the steps in the correct order.</p>
<p>The steps are:</p>
<p>1) Glyph processing - character to glyph mapping and any other glyph processing such as ligature substitution and contextual forms.</p>
<p>2) Glyph positioning - position the glyphs based on their advance widths.</p>
<p>3) Glyph position adjustments - adjustment of glyph positions for kerning, accent placement, etc.</p>
<p>NOTE: in all methods below, output parameters are references to pointers so the method can allocate and free the storage as needed. All storage allocated in this way is owned by the object which created it, and will be freed when it is no longer needed, or when the object's destructor is invoked.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classicu_1_1LEFontInstance.html" title="This is a virtual base class that serves as the interface between a LayoutEngine and the platform fon...">LEFontInstance</a> </dd>
<dd>
ScriptAndLanguageTags.h</dd></dl>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005420">Stable:</a></b></dt><dd>ICU 2.8 </dd></dl>

<p>Definition at line <a class="el" href="LayoutEngine_8h_source.html#l00064">64</a> of file <a class="el" href="LayoutEngine_8h_source.html">LayoutEngine.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a3561145fde77e643788d67ff630f1968"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">icu::LayoutEngine::LayoutEngine </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classicu_1_1LEFontInstance.html">LEFontInstance</a> *&#160;</td>
          <td class="paramname"><em>fontInstance</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>scriptCode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>languageCode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>typoFlags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This constructs an instance for a given font, script and language. </p>
<p>Subclass constructors must call this constructor.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fontInstance</td><td>- the font for the text </td></tr>
    <tr><td class="paramname">scriptCode</td><td>- the script for the text </td></tr>
    <tr><td class="paramname">languageCode</td><td>- the language for the text </td></tr>
    <tr><td class="paramname">typoFlags</td><td>- the typographic control flags for the text (a bitfield). Use kTypoFlagKern if kerning is desired, kTypoFlagLiga if ligature formation is desired. Others are reserved. </td></tr>
    <tr><td class="paramname">success</td><td>- set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classicu_1_1LEFontInstance.html" title="This is a virtual base class that serves as the interface between a LayoutEngine and the platform fon...">LEFontInstance</a> </dd>
<dd>
ScriptAndLanguageTags.h</dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000487">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

</div>
</div>
<a class="anchor" id="a813adfc7b786e3d6d93ebda95f90af22"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">icu::LayoutEngine::LayoutEngine </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This overrides the default no argument constructor to make it difficult for clients to call it. </p>
<p>Clients are expected to call layoutEngineFactory.</p>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000488">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

</div>
</div>
<a class="anchor" id="a32a73ba431cff55fcc29ff71ba0c52d4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual icu::LayoutEngine::~LayoutEngine </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The destructor. </p>
<p>It will free any storage allocated for the glyph, character index and position arrays by calling the reset method. It is declared virtual so that it will be invoked by the subclass destructors.</p>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005421">Stable:</a></b></dt><dd>ICU 2.8 </dd></dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ae4519cb627caa1edca0ee44b841e7ded"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void icu::LayoutEngine::adjustGlyphPositions </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="LETypes_8h.html#a903cb689308cdef41500411d096a2c2d">LEUnicode</a>&#160;</td>
          <td class="paramname"><em>chars</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a>&#160;</td>
          <td class="paramname"><em>reverse</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> &amp;&#160;</td>
          <td class="paramname"><em>glyphStorage</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method does positioning adjustments like accent positioning and kerning. </p>
<p>The default implementation does nothing. Subclasses needing position adjustments must override this method.</p>
<p>Note that this method has both characters and glyphs as input so that it can use the character codes to determine glyph types if that information isn't directly available. (e.g. Some Arabic OpenType fonts don't have a GDEF table)</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">chars</td><td>- the input character context </td></tr>
    <tr><td class="paramname">offset</td><td>- the offset of the first character to process </td></tr>
    <tr><td class="paramname">count</td><td>- the number of characters to process </td></tr>
    <tr><td class="paramname">reverse</td><td>- <code>TRUE</code> if the glyphs in the glyph array have been reordered </td></tr>
    <tr><td class="paramname">glyphStorage</td><td>- the object which holds the per-glyph storage. The glyph positions will be adjusted as needed. </td></tr>
    <tr><td class="paramname">success</td><td>- output parameter set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000492">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

</div>
</div>
<a class="anchor" id="a20aded693707df77870e81861b9a2481"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void icu::LayoutEngine::adjustMarkGlyphs </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> &amp;&#160;</td>
          <td class="paramname"><em>glyphStorage</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">LEGlyphFilter *&#160;</td>
          <td class="paramname"><em>markFilter</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This is a convenience method that forces the advance width of mark glyphs to be zero, which is required for proper selection and highlighting. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">glyphStorage</td><td>- the object containing the per-glyph storage. The positions array will be modified. </td></tr>
    <tr><td class="paramname">markFilter</td><td>- used to identify mark glyphs </td></tr>
    <tr><td class="paramname">success</td><td>- output parameter set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See Also</dt><dd>LEGlyphFilter</dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000495">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

</div>
</div>
<a class="anchor" id="ada55f62cb1eca244083e453ccc34f4ff"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void icu::LayoutEngine::adjustMarkGlyphs </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="LETypes_8h.html#a903cb689308cdef41500411d096a2c2d">LEUnicode</a>&#160;</td>
          <td class="paramname"><em>chars</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>charCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a>&#160;</td>
          <td class="paramname"><em>reverse</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> &amp;&#160;</td>
          <td class="paramname"><em>glyphStorage</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">LEGlyphFilter *&#160;</td>
          <td class="paramname"><em>markFilter</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This is a convenience method that forces the advance width of mark glyphs to be zero, which is required for proper selection and highlighting. </p>
<p>This method uses the input characters to identify marks. This is required in cases where the font does not contain enough information to identify them based on the glyph IDs.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">chars</td><td>- the array of input characters </td></tr>
    <tr><td class="paramname">charCount</td><td>- the number of input characers </td></tr>
    <tr><td class="paramname">glyphStorage</td><td>- the object containing the per-glyph storage. The positions array will be modified. </td></tr>
    <tr><td class="paramname">reverse</td><td>- <code>TRUE</code> if the glyph array has been reordered </td></tr>
    <tr><td class="paramname">markFilter</td><td>- used to identify mark glyphs </td></tr>
    <tr><td class="paramname">success</td><td>- output parameter set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See Also</dt><dd>LEGlyphFilter</dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000496">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

</div>
</div>
<a class="anchor" id="ab769b0ff3c6bcb45a8bd7a7ccc7f832d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> icu::LayoutEngine::characterProcessing </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="LETypes_8h.html#a903cb689308cdef41500411d096a2c2d">LEUnicode</a>&#160;</td>
          <td class="paramname"><em>chars</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a>&#160;</td>
          <td class="paramname"><em>rightToLeft</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a903cb689308cdef41500411d096a2c2d">LEUnicode</a> *&amp;&#160;</td>
          <td class="paramname"><em>outChars</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> &amp;&#160;</td>
          <td class="paramname"><em>glyphStorage</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method does any required pre-processing to the input characters. </p>
<p>It may generate output characters that differ from the input charcters due to insertions, deletions, or reorderings. In such cases, it will also generate an output character index array reflecting these changes.</p>
<p>Subclasses must override this method.</p>
<p>Input parameters: </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">chars</td><td>- the input character context </td></tr>
    <tr><td class="paramname">offset</td><td>- the index of the first character to process </td></tr>
    <tr><td class="paramname">count</td><td>- the number of characters to process </td></tr>
    <tr><td class="paramname">max</td><td>- the number of characters in the input context </td></tr>
    <tr><td class="paramname">rightToLeft</td><td>- TRUE if the characters are in a right to left directional run </td></tr>
    <tr><td class="paramname">outChars</td><td>- the output character array, if different from the input </td></tr>
    <tr><td class="paramname">glyphStorage</td><td>- the object that holds the per-glyph storage. The character index array may be set. </td></tr>
    <tr><td class="paramname">success</td><td>- set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the output character count (input character count if no change)</dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000489">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

</div>
</div>
<a class="anchor" id="a525f28e31060e75e7eeebf5aa3cc7141"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> icu::LayoutEngine::computeGlyphs </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="LETypes_8h.html#a903cb689308cdef41500411d096a2c2d">LEUnicode</a>&#160;</td>
          <td class="paramname"><em>chars</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a>&#160;</td>
          <td class="paramname"><em>rightToLeft</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> &amp;&#160;</td>
          <td class="paramname"><em>glyphStorage</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method does the glyph processing. </p>
<p>It converts an array of characters into an array of glyph indices and character indices. The characters to be processed are passed in a surrounding context. The context is specified as a starting address and a maximum character count. An offset and a count are used to specify the characters to be processed.</p>
<p>The default implementation of this method only does character to glyph mapping. Subclasses needing more elaborate glyph processing must override this method.</p>
<p>Input parameters: </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">chars</td><td>- the character context </td></tr>
    <tr><td class="paramname">offset</td><td>- the offset of the first character to process </td></tr>
    <tr><td class="paramname">count</td><td>- the number of characters to process </td></tr>
    <tr><td class="paramname">max</td><td>- the number of characters in the context. </td></tr>
    <tr><td class="paramname">rightToLeft</td><td>- TRUE if the text is in a right to left directional run </td></tr>
    <tr><td class="paramname">glyphStorage</td><td>- the object which holds the per-glyph storage. The glyph and char indices arrays will be set.</td></tr>
  </table>
  </dd>
</dl>
<p>Output parameters: </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">success</td><td>- set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the number of glyphs in the glyph index array</dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000490">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

</div>
</div>
<a class="anchor" id="afcc4e59aaa7787da00fde89888f40707"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void icu::LayoutEngine::getCharIndices </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>charIndices</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method copies the character index array into a caller supplied array. </p>
<p>The caller must ensure that the array is large enough to hold a character index for each glyph.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">charIndices</td><td>- the destiniation character index array </td></tr>
    <tr><td class="paramname">success</td><td>- set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005426">Stable:</a></b></dt><dd>ICU 2.8 </dd></dl>

</div>
</div>
<a class="anchor" id="aba0a50ebf4603175f5bcf13dc3d438bd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void icu::LayoutEngine::getCharIndices </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>charIndices</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>indexBase</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method copies the character index array into a caller supplied array. </p>
<p>The caller must ensure that the array is large enough to hold a character index for each glyph.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">charIndices</td><td>- the destiniation character index array </td></tr>
    <tr><td class="paramname">indexBase</td><td>- an offset which will be added to each index </td></tr>
    <tr><td class="paramname">success</td><td>- set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005427">Stable:</a></b></dt><dd>ICU 2.8 </dd></dl>

</div>
</div>
<a class="anchor" id="aa189a5398f6510f4631db60c42ad78c3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="uobject_8h.html#a22af10545208a455a6e884008df48e9f">UClassID</a> icu::LayoutEngine::getDynamicClassID </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>ICU "poor man's RTTI", returns a UClassID for the actual class. </p>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005433">Stable:</a></b></dt><dd>ICU 2.8 </dd></dl>

<p>Reimplemented from <a class="el" href="classicu_1_1UObject.html#a1aa93096e880907080b503ff1fb0f8bc">icu::UObject</a>.</p>

</div>
</div>
<a class="anchor" id="a845b9ab2ff8a12ad886f93760f1fb7f9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const void* icu::LayoutEngine::getFontTable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a9e22a06bf2336b583b317287cb94fcfa">LETag</a>&#160;</td>
          <td class="paramname"><em>tableTag</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t &amp;&#160;</td>
          <td class="paramname"><em>length</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method gets a table from the font associated with the text. </p>
<p>The default implementation gets the table from the font instance. Subclasses which need to get the tables some other way must override this method.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">tableTag</td><td>- the four byte table tag. </td></tr>
    <tr><td class="paramname">length</td><td>- length to use</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the address of the table.</dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000493">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

</div>
</div>
<a class="anchor" id="a4c0009db24e312ecdda4adef2a112485"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const void* icu::LayoutEngine::getFontTable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a9e22a06bf2336b583b317287cb94fcfa">LETag</a>&#160;</td>
          <td class="paramname"><em>tableTag</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000283">Deprecated:</a></b></dt><dd></dd></dl>

<p>Definition at line <a class="el" href="LayoutEngine_8h_source.html#l00266">266</a> of file <a class="el" href="LayoutEngine_8h_source.html">LayoutEngine.h</a>.</p>

<p>References <a class="el" href="LayoutEngine_8h_source.html#l00266">getFontTable()</a>.</p>

<p>Referenced by <a class="el" href="LayoutEngine_8h_source.html#l00266">getFontTable()</a>.</p>

</div>
</div>
<a class="anchor" id="ad2f485ed0c2b6980772814ca55ac408d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> icu::LayoutEngine::getGlyphCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method returns the number of glyphs in the glyph array. </p>
<p>Note that the number of glyphs will be greater than or equal to the number of characters used to create the <a class="el" href="classicu_1_1LayoutEngine.html" title="This is a virtual base class used to do complex text layout. ">LayoutEngine</a>.</p>
<dl class="section return"><dt>Returns</dt><dd>the number of glyphs in the glyph array</dd></dl>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005423">Stable:</a></b></dt><dd>ICU 2.8 </dd></dl>

</div>
</div>
<a class="anchor" id="a40622275ec4c3e977877a22279633541"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void icu::LayoutEngine::getGlyphPosition </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>glyphIndex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method returns the X and Y position of the glyph at the given index. </p>
<p>Input parameters: </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">glyphIndex</td><td>- the index of the glyph</td></tr>
  </table>
  </dd>
</dl>
<p>Output parameters: </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>- the glyph's X position </td></tr>
    <tr><td class="paramname">y</td><td>- the glyph's Y position </td></tr>
    <tr><td class="paramname">success</td><td>- set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005429">Stable:</a></b></dt><dd>ICU 2.8 </dd></dl>

</div>
</div>
<a class="anchor" id="a1543562ae0eacd6cde9a1a4a9882a1f6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void icu::LayoutEngine::getGlyphPositions </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>positions</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method copies the position array into a caller supplied array. </p>
<p>The caller must ensure that the array is large enough to hold an X and Y position for each glyph, plus an extra X and Y for the advance of the last glyph.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">positions</td><td>- the destiniation position array </td></tr>
    <tr><td class="paramname">success</td><td>- set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005428">Stable:</a></b></dt><dd>ICU 2.8 </dd></dl>

</div>
</div>
<a class="anchor" id="aadbe3b03c6170b6261925ba4c024ed0a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void icu::LayoutEngine::getGlyphs </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#ae440e077586bced1a0d1c534643ffc23">LEGlyphID</a>&#160;</td>
          <td class="paramname"><em>glyphs</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method copies the glyph array into a caller supplied array. </p>
<p>The caller must ensure that the array is large enough to hold all the glyphs.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">glyphs</td><td>- the destiniation glyph array </td></tr>
    <tr><td class="paramname">success</td><td>- set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005424">Stable:</a></b></dt><dd>ICU 2.8 </dd></dl>

</div>
</div>
<a class="anchor" id="a75895a7b6e5dc5ec7705c44af815801f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void icu::LayoutEngine::getGlyphs </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a8ed46f4fc717cf0a94de62efe109ecae">le_uint32</a>&#160;</td>
          <td class="paramname"><em>glyphs</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a8ed46f4fc717cf0a94de62efe109ecae">le_uint32</a>&#160;</td>
          <td class="paramname"><em>extraBits</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method copies the glyph array into a caller supplied array, ORing in extra bits. </p>
<p>(This functionality is needed by the JDK, which uses 32 bits pre glyph idex, with the high 16 bits encoding the composite font slot number)</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">glyphs</td><td>- the destination (32 bit) glyph array </td></tr>
    <tr><td class="paramname">extraBits</td><td>- this value will be ORed with each glyph index </td></tr>
    <tr><td class="paramname">success</td><td>- set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005425">Stable:</a></b></dt><dd>ICU 2.8 </dd></dl>

</div>
</div>
<a class="anchor" id="a435ffb13f0b0c6bcb44bb6ddf8628ed9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="uobject_8h.html#a22af10545208a455a6e884008df48e9f">UClassID</a> icu::LayoutEngine::getStaticClassID </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>ICU "poor man's RTTI", returns a UClassID for this class. </p>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005434">Stable:</a></b></dt><dd>ICU 2.8 </dd></dl>

</div>
</div>
<a class="anchor" id="a1575d6983f29e22f7603f4946d15b36d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> icu::LayoutEngine::layoutChars </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="LETypes_8h.html#a903cb689308cdef41500411d096a2c2d">LEUnicode</a>&#160;</td>
          <td class="paramname"><em>chars</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a>&#160;</td>
          <td class="paramname"><em>rightToLeft</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method will invoke the layout steps in their correct order by calling the computeGlyphs, positionGlyphs and adjustGlyphPosition methods. </p>
<p>It will compute the glyph, character index and position arrays.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">chars</td><td>- the input character context </td></tr>
    <tr><td class="paramname">offset</td><td>- the offset of the first character to process </td></tr>
    <tr><td class="paramname">count</td><td>- the number of characters to process </td></tr>
    <tr><td class="paramname">max</td><td>- the number of characters in the input context </td></tr>
    <tr><td class="paramname">rightToLeft</td><td>- TRUE if the characers are in a right to left directional run </td></tr>
    <tr><td class="paramname">x</td><td>- the initial X position </td></tr>
    <tr><td class="paramname">y</td><td>- the initial Y position </td></tr>
    <tr><td class="paramname">success</td><td>- output parameter set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the number of glyphs in the glyph array</dd></dl>
<p>Note: The glyph, character index and position array can be accessed using the getter methods below.</p>
<p>Note: If you call this method more than once, you must call the <a class="el" href="classicu_1_1LayoutEngine.html#a3fdebe7233b7105027ebd4d4065aae40" title="This method frees the glyph, character index and position arrays so that the LayoutEngine can be reus...">reset()</a> method first to free the glyph, character index and position arrays allocated by the previous call.</p>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005422">Stable:</a></b></dt><dd>ICU 2.8 </dd></dl>

</div>
</div>
<a class="anchor" id="a4436267d5c364849253a786cccfeb316"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="classicu_1_1LayoutEngine.html">LayoutEngine</a>* icu::LayoutEngine::layoutEngineFactory </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classicu_1_1LEFontInstance.html">LEFontInstance</a> *&#160;</td>
          <td class="paramname"><em>fontInstance</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>scriptCode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>languageCode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method returns a <a class="el" href="classicu_1_1LayoutEngine.html" title="This is a virtual base class used to do complex text layout. ">LayoutEngine</a> capable of laying out text in the given font, script and langauge. </p>
<p>Note that the <a class="el" href="classicu_1_1LayoutEngine.html" title="This is a virtual base class used to do complex text layout. ">LayoutEngine</a> returned may be a subclass of <a class="el" href="classicu_1_1LayoutEngine.html" title="This is a virtual base class used to do complex text layout. ">LayoutEngine</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fontInstance</td><td>- the font of the text </td></tr>
    <tr><td class="paramname">scriptCode</td><td>- the script of the text </td></tr>
    <tr><td class="paramname">languageCode</td><td>- the language of the text </td></tr>
    <tr><td class="paramname">success</td><td>- output parameter set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="classicu_1_1LayoutEngine.html" title="This is a virtual base class used to do complex text layout. ">LayoutEngine</a> which can layout text in the given font.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classicu_1_1LEFontInstance.html" title="This is a virtual base class that serves as the interface between a LayoutEngine and the platform fon...">LEFontInstance</a></dd></dl>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005431">Stable:</a></b></dt><dd>ICU 2.8 </dd></dl>

</div>
</div>
<a class="anchor" id="a8d03d17438e14b9e89d153bbb639f03f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="classicu_1_1LayoutEngine.html">LayoutEngine</a>* icu::LayoutEngine::layoutEngineFactory </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classicu_1_1LEFontInstance.html">LEFontInstance</a> *&#160;</td>
          <td class="paramname"><em>fontInstance</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>scriptCode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>languageCode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>typo_flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Override of existing call that provides flags to control typography. </p>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005432">Stable:</a></b></dt><dd>ICU 3.4 </dd></dl>

</div>
</div>
<a class="anchor" id="ae5d2e64e6b827b6a069a76f682a6b81b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void icu::LayoutEngine::mapCharsToGlyphs </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="LETypes_8h.html#a903cb689308cdef41500411d096a2c2d">LEUnicode</a>&#160;</td>
          <td class="paramname"><em>chars</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a>&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a>&#160;</td>
          <td class="paramname"><em>reverse</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a>&#160;</td>
          <td class="paramname"><em>mirror</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> &amp;&#160;</td>
          <td class="paramname"><em>glyphStorage</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method does character to glyph mapping. </p>
<p>The default implementation uses the font instance to do the mapping. It will allocate the glyph and character index arrays if they're not already allocated. If it allocates the character index array, it will fill it it.</p>
<p>This method supports right to left text with the ability to store the glyphs in reverse order, and by supporting character mirroring, which will replace a character which has a left and right form, such as parens, with the opposite form before mapping it to a glyph index.</p>
<p>Input parameters: </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">chars</td><td>- the input character context </td></tr>
    <tr><td class="paramname">offset</td><td>- the offset of the first character to be mapped </td></tr>
    <tr><td class="paramname">count</td><td>- the number of characters to be mapped </td></tr>
    <tr><td class="paramname">reverse</td><td>- if <code>TRUE</code>, the output will be in reverse order </td></tr>
    <tr><td class="paramname">mirror</td><td>- if <code>TRUE</code>, do character mirroring </td></tr>
    <tr><td class="paramname">glyphStorage</td><td>- the object which holds the per-glyph storage. The glyph and char indices arrays will be filled in. </td></tr>
    <tr><td class="paramname">success</td><td>- set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classicu_1_1LEFontInstance.html" title="This is a virtual base class that serves as the interface between a LayoutEngine and the platform fon...">LEFontInstance</a></dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000494">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

</div>
</div>
<a class="anchor" id="abcbf46922242e160422cc0b963d1d3a5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void icu::LayoutEngine::positionGlyphs </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a> &amp;&#160;</td>
          <td class="paramname"><em>glyphStorage</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="LETypes_8h.html#a2f75d3bb5abf7f0a71adbf00826e1934">LEErrorCode</a> &amp;&#160;</td>
          <td class="paramname"><em>success</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method does basic glyph positioning. </p>
<p>The default implementation positions the glyphs based on their advance widths. This is sufficient for most uses. It is not expected that many subclasses will override this method.</p>
<p>Input parameters: </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">glyphStorage</td><td>- the object which holds the per-glyph storage. The glyph position array will be set. </td></tr>
    <tr><td class="paramname">x</td><td>- the starting X position </td></tr>
    <tr><td class="paramname">y</td><td>- the starting Y position </td></tr>
    <tr><td class="paramname">success</td><td>- set to an error code if the operation fails</td></tr>
  </table>
  </dd>
</dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000491">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

</div>
</div>
<a class="anchor" id="a3fdebe7233b7105027ebd4d4065aae40"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void icu::LayoutEngine::reset </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method frees the glyph, character index and position arrays so that the <a class="el" href="classicu_1_1LayoutEngine.html" title="This is a virtual base class used to do complex text layout. ">LayoutEngine</a> can be reused to layout a different characer array. </p>
<p>(This method is also called by the destructor)</p>
<dl class="stable"><dt><b><a class="el" href="stable.html#_stable005430">Stable:</a></b></dt><dd>ICU 2.8 </dd></dl>

</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a class="anchor" id="a013362609fdfe806c7133d6f9e0bbca0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="LETypes_8h.html#a4b77bc254d0e88fdabffde9c03e6728f">le_bool</a> icu::LayoutEngine::fFilterZeroWidth</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code>TRUE</code> if <code>mapCharsToGlyphs</code> should replace ZWJ / ZWNJ with a glyph with no contours. </p>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000486">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

<p>Definition at line <a class="el" href="LayoutEngine_8h_source.html#l00121">121</a> of file <a class="el" href="LayoutEngine_8h_source.html">LayoutEngine.h</a>.</p>

</div>
</div>
<a class="anchor" id="a0bf2ebde0edb7645ab537759811f7e74"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classicu_1_1LEFontInstance.html">LEFontInstance</a>* icu::LayoutEngine::fFontInstance</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The font instance for the text font. </p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classicu_1_1LEFontInstance.html" title="This is a virtual base class that serves as the interface between a LayoutEngine and the platform fon...">LEFontInstance</a></dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000482">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

<p>Definition at line <a class="el" href="LayoutEngine_8h_source.html#l00088">88</a> of file <a class="el" href="LayoutEngine_8h_source.html">LayoutEngine.h</a>.</p>

</div>
</div>
<a class="anchor" id="af1245711d4251f20738132c5fc1e7d14"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classicu_1_1LEGlyphStorage.html">LEGlyphStorage</a>* icu::LayoutEngine::fGlyphStorage</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The object which holds the glyph storage. </p>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000481">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

<p>Definition at line <a class="el" href="LayoutEngine_8h_source.html#l00079">79</a> of file <a class="el" href="LayoutEngine_8h_source.html">LayoutEngine.h</a>.</p>

</div>
</div>
<a class="anchor" id="a71ce1ef6c74d1c238abe282ebe08cfd5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> icu::LayoutEngine::fLanguageCode</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The langauge code for the text. </p>
<dl class="section see"><dt>See Also</dt><dd>ScriptAndLanguageTags.h for language codes.</dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000484">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

<p>Definition at line <a class="el" href="LayoutEngine_8h_source.html#l00106">106</a> of file <a class="el" href="LayoutEngine_8h_source.html">LayoutEngine.h</a>.</p>

</div>
</div>
<a class="anchor" id="a56738c57256087a4ab77158cd6a52ebf"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> icu::LayoutEngine::fScriptCode</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The script code for the text. </p>
<dl class="section see"><dt>See Also</dt><dd>ScriptAndLanguageTags.h for script codes.</dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000483">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

<p>Definition at line <a class="el" href="LayoutEngine_8h_source.html#l00097">97</a> of file <a class="el" href="LayoutEngine_8h_source.html">LayoutEngine.h</a>.</p>

</div>
</div>
<a class="anchor" id="ae138822d515e109bc32cd2c143280021"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> icu::LayoutEngine::fTypoFlags</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The typographic control flags. </p>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000485">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. </dd></dl>

<p>Definition at line <a class="el" href="LayoutEngine_8h_source.html#l00113">113</a> of file <a class="el" href="LayoutEngine_8h_source.html">LayoutEngine.h</a>.</p>

</div>
</div>
<a class="anchor" id="a69a0d66737ffc5c112c9e8c1190e5fe0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> icu::LayoutEngine::kTypoFlagKern</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000479">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. Flag to request kerning. Use LE_Kerning_FEATURE_FLAG instead. </dd></dl>

<p>Definition at line <a class="el" href="LayoutEngine_8h_source.html#l00068">68</a> of file <a class="el" href="LayoutEngine_8h_source.html">LayoutEngine.h</a>.</p>

</div>
</div>
<a class="anchor" id="a17a2d6de0c9a3a368930f643897c683c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="LETypes_8h.html#a3ae79f31399d76e3055d2a2745bd0d9a">le_int32</a> icu::LayoutEngine::kTypoFlagLiga</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000480">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. Flag to request ligatures. Use LE_Ligatures_FEATURE_FLAG instead. </dd></dl>

<p>Definition at line <a class="el" href="LayoutEngine_8h_source.html#l00070">70</a> of file <a class="el" href="LayoutEngine_8h_source.html">LayoutEngine.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="LayoutEngine_8h_source.html">LayoutEngine.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>