1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
  
     | 
    
      <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_US" lang="en_US">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- qabstractfontengine_qws.cpp -->
  <title>Qt 4.8: QAbstractFontEngine Class Reference</title>
  <link rel="stylesheet" type="text/css" href="style/offline.css" />
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="content"> 
    <a href="index.html" class="qtref"><span>Qt Reference Documentation</span></a>
  </div>
  <div class="breadcrumb toolblock">
    <ul>
      <li class="first"><a href="index.html">Home</a></li>
      <!--  Breadcrumbs go here -->
<li><a href="modules.html">Modules</a></li>
<li><a href="qtgui.html">QtGui</a></li>
<li>QAbstractFontEngine</li>
    </ul>
  </div>
</div>
<div class="content mainContent">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#public-types">Public Types</a></li>
<li class="level1"><a href="#public-functions">Public Functions</a></li>
<li class="level1"><a href="#details">Detailed Description</a></li>
</ul>
</div>
<h1 class="title">QAbstractFontEngine Class Reference</h1>
<!-- $$$QAbstractFontEngine-brief -->
<p>The QAbstractFontEngine class is the base class for font engine plugins in Qt for Embedded Linux. <a href="#details">More...</a></p>
<!-- @@@QAbstractFontEngine -->
<pre class="cpp"> <span class="preprocessor">#include <QAbstractFontEngine></span></pre><p><b>This class is under development and is subject to change.</b></p>
<p><b>Inherits: </b><a href="qobject.html">QObject</a>.</p>
<p>This class was introduced in Qt 4.3.</p>
<ul>
<li><a href="qabstractfontengine-members.html">List of all members, including inherited members</a></li>
</ul>
<a name="public-types"></a>
<h2>Public Types</h2>
<table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> class </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine-fixedpoint.html">FixedPoint</a></b><tt> (preliminary)</tt></td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> class </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine-glyphmetrics.html">GlyphMetrics</a></b><tt> (preliminary)</tt></td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> flags </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#Capability-enum">Capabilities</a></b></td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> enum </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#Capability-enum">Capability</a></b> { CanRenderGlyphs_Gray, CanRenderGlyphs_Mono, CanRenderGlyphs, CanOutlineGlyphs }</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> typedef </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#Fixed-typedef">Fixed</a></b></td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> enum </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#FontProperty-enum">FontProperty</a></b> { Ascent, Descent, Leading, XHeight, ..., OutlineGlyphsHint }</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> enum </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#TextShapingFlag-enum">TextShapingFlag</a></b> { RightToLeft, ReturnDesignMetrics }</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> flags </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#TextShapingFlag-enum">TextShapingFlags</a></b></td></tr>
</table>
<a name="public-functions"></a>
<h2>Public Functions</h2>
<table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#QAbstractFontEngine">QAbstractFontEngine</a></b> ( QObject * <i>parent</i> = 0 )</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#dtor.QAbstractFontEngine">~QAbstractFontEngine</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual void </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#addGlyphOutlinesToPath">addGlyphOutlinesToPath</a></b> ( uint * <i>glyphs</i>, int <i>numGlyphs</i>, FixedPoint * <i>positions</i>, QPainterPath * <i>path</i> )</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual Capabilities </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#capabilities">capabilities</a></b> () const = 0</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual bool </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#convertStringToGlyphIndices">convertStringToGlyphIndices</a></b> ( const QChar * <i>string</i>, int <i>length</i>, uint * <i>glyphs</i>, int * <i>numGlyphs</i>, TextShapingFlags <i>flags</i> ) const = 0</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual QVariant </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#fontProperty">fontProperty</a></b> ( FontProperty <i>property</i> ) const = 0</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual void </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#getGlyphAdvances">getGlyphAdvances</a></b> ( const uint * <i>glyphs</i>, int <i>numGlyphs</i>, Fixed * <i>advances</i>, TextShapingFlags <i>flags</i> ) const = 0</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual GlyphMetrics </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#glyphMetrics">glyphMetrics</a></b> ( uint <i>glyph</i> ) const = 0</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual bool </td><td class="memItemRight bottomAlign"><b><a href="qabstractfontengine.html#renderGlyph">renderGlyph</a></b> ( uint <i>glyph</i>, int <i>depth</i>, int <i>bytesPerLine</i>, int <i>height</i>, uchar * <i>buffer</i> )</td></tr>
</table>
<ul>
<li class="fn">29 public functions inherited from <a href="qobject.html#public-functions">QObject</a></li>
</ul>
<h3>Additional Inherited Members</h3>
<ul>
<li class="fn">1 property inherited from <a href="qobject.html#properties">QObject</a></li>
<li class="fn">1 public slot inherited from <a href="qobject.html#public-slots">QObject</a></li>
<li class="fn">1 signal inherited from <a href="qobject.html#signals">QObject</a></li>
<li class="fn">7 static public members inherited from <a href="qobject.html#static-public-members">QObject</a></li>
<li class="fn">8 protected functions inherited from <a href="qobject.html#protected-functions">QObject</a></li>
</ul>
<a name="details"></a>
<!-- $$$QAbstractFontEngine-description -->
<div class="descr">
<h2>Detailed Description</h2>
<p>The QAbstractFontEngine class is the base class for font engine plugins in Qt for Embedded Linux.</p>
<p>QAbstractFontEngine is implemented by font engine plugins through <a href="qfontengineplugin.html">QFontEnginePlugin</a>.</p>
</div>
<p><b>See also </b><a href="qfontengineplugin.html">QFontEnginePlugin</a> and <a href="qfontengineinfo.html">QFontEngineInfo</a>.</p>
<!-- @@@QAbstractFontEngine -->
<div class="types">
<h2>Member Type Documentation</h2>
<!-- $$$Capability$$$CanOutlineGlyphs$$$CanRenderGlyphs_Mono$$$CanRenderGlyphs_Gray$$$CanRenderGlyphs -->
<h3 class="flags"><a name="Capability-enum"></a>enum QAbstractFontEngine::<span class="name">Capability</span><br/>flags QAbstractFontEngine::<span class="name">Capabilities</span></h3>
<p>This enum describes the capabilities of a font engine.</p>
<table class="valuelist"><tr valign="top" class="odd"><th class="tblConst">Constant</th><th class="tblval">Value</th><th class="tbldscr">Description</th></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::CanRenderGlyphs_Gray</tt></td><td class="topAlign"><tt>4</tt></td><td class="topAlign">The font engine can render individual glyphs into 8 bpp images.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::CanRenderGlyphs_Mono</tt></td><td class="topAlign"><tt>2</tt></td><td class="topAlign">The font engine can render individual glyphs into 1 bpp images.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::CanRenderGlyphs</tt></td><td class="topAlign"><tt>CanRenderGlyphs_Mono | CanRenderGlyphs_Gray</tt></td><td class="topAlign">The font engine can render individual glyphs into images.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::CanOutlineGlyphs</tt></td><td class="topAlign"><tt>1</tt></td><td class="topAlign">The font engine can convert glyphs to painter paths.</td></tr>
</table>
<p>The Capabilities type is a typedef for <a href="qflags.html">QFlags</a><Capability>. It stores an OR combination of Capability values.</p>
<!-- @@@Capability -->
<!-- $$$Fixed -->
<h3 class="fn"><a name="Fixed-typedef"></a>typedef QAbstractFontEngine::<span class="name">Fixed</span></h3>
<p>This type is <tt>int</tt>, interpreted as a 26.6 fixed point value.</p>
<!-- @@@Fixed -->
<!-- $$$FontProperty$$$Ascent$$$Descent$$$Leading$$$XHeight$$$AverageCharWidth$$$LineThickness$$$UnderlinePosition$$$MaxCharWidth$$$MinLeftBearing$$$MinRightBearing$$$GlyphCount$$$CacheGlyphsHint$$$OutlineGlyphsHint -->
<h3 class="fn"><a name="FontProperty-enum"></a>enum QAbstractFontEngine::<span class="name">FontProperty</span></h3>
<p>This enum describes the properties of a font provided by a font engine.</p>
<table class="valuelist"><tr valign="top" class="odd"><th class="tblConst">Constant</th><th class="tblval">Value</th><th class="tbldscr">Description</th></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::Ascent</tt></td><td class="topAlign"><tt>0</tt></td><td class="topAlign">The ascent of the font, specified as a 26.6 fixed point value.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::Descent</tt></td><td class="topAlign"><tt>1</tt></td><td class="topAlign">The descent of the font, specified as a 26.6 fixed point value.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::Leading</tt></td><td class="topAlign"><tt>2</tt></td><td class="topAlign">The leading of the font, specified as a 26.6 fixed point value.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::XHeight</tt></td><td class="topAlign"><tt>3</tt></td><td class="topAlign">The 'x' height of the font, specified as a 26.6 fixed point value.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::AverageCharWidth</tt></td><td class="topAlign"><tt>4</tt></td><td class="topAlign">The average character width of the font, specified as a 26.6 fixed point value.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::LineThickness</tt></td><td class="topAlign"><tt>5</tt></td><td class="topAlign">The thickness of the underline and strikeout lines for the font, specified as a 26.6 fixed point value.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::UnderlinePosition</tt></td><td class="topAlign"><tt>6</tt></td><td class="topAlign">The distance from the base line to the underline position for the font, specified as a 26.6 fixed point value.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::MaxCharWidth</tt></td><td class="topAlign"><tt>7</tt></td><td class="topAlign">The width of the widest character in the font, specified as a 26.6 fixed point value.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::MinLeftBearing</tt></td><td class="topAlign"><tt>8</tt></td><td class="topAlign">The minimum left bearing of the font, specified as a 26.6 fixed point value.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::MinRightBearing</tt></td><td class="topAlign"><tt>9</tt></td><td class="topAlign">The maximum right bearing of the font, specified as a 26.6 fixed point value.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::GlyphCount</tt></td><td class="topAlign"><tt>10</tt></td><td class="topAlign">The number of glyphs in the font, specified as an integer value.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::CacheGlyphsHint</tt></td><td class="topAlign"><tt>11</tt></td><td class="topAlign">A boolean value specifying whether rendered glyphs should be cached by Qt.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::OutlineGlyphsHint</tt></td><td class="topAlign"><tt>12</tt></td><td class="topAlign">A boolean value specifying whether the font engine prefers outline drawing over image rendering for uncached glyphs.</td></tr>
</table>
<!-- @@@FontProperty -->
<!-- $$$TextShapingFlag$$$RightToLeft$$$ReturnDesignMetrics -->
<h3 class="flags"><a name="TextShapingFlag-enum"></a>enum QAbstractFontEngine::<span class="name">TextShapingFlag</span><br/>flags QAbstractFontEngine::<span class="name">TextShapingFlags</span></h3>
<p>This enum describes flags controlling conversion of characters to glyphs and their metrics.</p>
<table class="valuelist"><tr valign="top" class="odd"><th class="tblConst">Constant</th><th class="tblval">Value</th><th class="tbldscr">Description</th></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::RightToLeft</tt></td><td class="topAlign"><tt>0x0001</tt></td><td class="topAlign">The text is used in a right-to-left context.</td></tr>
<tr><td class="topAlign"><tt>QAbstractFontEngine::ReturnDesignMetrics</tt></td><td class="topAlign"><tt>0x0002</tt></td><td class="topAlign">Return font design metrics instead of pixel metrics.</td></tr>
</table>
<p>The TextShapingFlags type is a typedef for <a href="qflags.html">QFlags</a><TextShapingFlag>. It stores an OR combination of TextShapingFlag values.</p>
<!-- @@@TextShapingFlag -->
</div>
<div class="func">
<h2>Member Function Documentation</h2>
<!-- $$$QAbstractFontEngine[overload1]$$$QAbstractFontEngineQObject* -->
<h3 class="fn"><a name="QAbstractFontEngine"></a>QAbstractFontEngine::<span class="name">QAbstractFontEngine</span> ( <span class="type"><a href="qobject.html">QObject</a></span> * <i>parent</i> = 0 )</h3>
<p>Constructs a new <a href="qabstractfontengine.html">QAbstractFontEngine</a> with the given <i>parent</i>.</p>
<!-- @@@QAbstractFontEngine -->
<!-- $$$~QAbstractFontEngine[overload1]$$$~QAbstractFontEngine -->
<h3 class="fn"><a name="dtor.QAbstractFontEngine"></a>QAbstractFontEngine::<span class="name">~QAbstractFontEngine</span> ()</h3>
<p>Destroys this <a href="qabstractfontengine.html">QAbstractFontEngine</a> object.</p>
<!-- @@@~QAbstractFontEngine -->
<!-- $$$addGlyphOutlinesToPath[overload1]$$$addGlyphOutlinesToPathuint*intFixedPoint*QPainterPath* -->
<h3 class="fn"><a name="addGlyphOutlinesToPath"></a><span class="type">void</span> QAbstractFontEngine::<span class="name">addGlyphOutlinesToPath</span> ( <span class="type"><a href="qtglobal.html#uint-typedef">uint</a></span> * <i>glyphs</i>, <span class="type">int</span> <i>numGlyphs</i>, <span class="type"><a href="qabstractfontengine-fixedpoint.html">FixedPoint</a></span> * <i>positions</i>, <span class="type"><a href="qpainterpath.html">QPainterPath</a></span> * <i>path</i> )<tt> [virtual]</tt></h3>
<p>Implemented in subclasses to add the outline of the glyphs specified by <i>glyphs</i> and <i>numGlyphs</i> at the specified <i>positions</i> to the painter path <i>path</i>.</p>
<!-- @@@addGlyphOutlinesToPath -->
<!-- $$$capabilities[overload1]$$$capabilities -->
<h3 class="fn"><a name="capabilities"></a><span class="type"><a href="qabstractfontengine.html#Capability-enum">Capabilities</a></span> QAbstractFontEngine::<span class="name">capabilities</span> () const<tt> [pure virtual]</tt></h3>
<p>Implemented in subclasses to specify the font engine's capabilities. The return value may be cached by the caller and is expected not to change during the lifetime of the font engine.</p>
<!-- @@@capabilities -->
<!-- $$$convertStringToGlyphIndices[overload1]$$$convertStringToGlyphIndicesconstQChar*intuint*int*TextShapingFlags -->
<h3 class="fn"><a name="convertStringToGlyphIndices"></a><span class="type">bool</span> QAbstractFontEngine::<span class="name">convertStringToGlyphIndices</span> ( const <span class="type"><a href="qchar.html">QChar</a></span> * <i>string</i>, <span class="type">int</span> <i>length</i>, <span class="type"><a href="qtglobal.html#uint-typedef">uint</a></span> * <i>glyphs</i>, <span class="type">int</span> * <i>numGlyphs</i>, <span class="type"><a href="qabstractfontengine.html#TextShapingFlag-enum">TextShapingFlags</a></span> <i>flags</i> ) const<tt> [pure virtual]</tt></h3>
<p>Implemented in subclasses to convert the characters specified by <i>string</i> and <i>length</i> to glyph indicies, using <i>flags</i>. The glyph indicies should be returned in the <i>glyphs</i> array provided by the caller. The maximum size of <i>glyphs</i> is specified by the value pointed to by <i>numGlyphs</i>. If successful, the subclass implementation sets the value pointed to by <i>numGlyphs</i> to the actual number of glyph indices generated, and returns true. Otherwise, e.g. if there is not enough space in the provided <i>glyphs</i> array, it should set <i>numGlyphs</i> to the number of glyphs needed for the conversion and return false.</p>
<!-- @@@convertStringToGlyphIndices -->
<!-- $$$fontProperty[overload1]$$$fontPropertyFontProperty -->
<h3 class="fn"><a name="fontProperty"></a><span class="type"><a href="qvariant.html">QVariant</a></span> QAbstractFontEngine::<span class="name">fontProperty</span> ( <span class="type"><a href="qabstractfontengine.html#FontProperty-enum">FontProperty</a></span> <i>property</i> ) const<tt> [pure virtual]</tt></h3>
<p>Implemented in subclasses to return the value of the font attribute <i>property</i>. The return value may be cached by the caller and is expected not to change during the lifetime of the font engine.</p>
<!-- @@@fontProperty -->
<!-- $$$getGlyphAdvances[overload1]$$$getGlyphAdvancesconstuint*intFixed*TextShapingFlags -->
<h3 class="fn"><a name="getGlyphAdvances"></a><span class="type">void</span> QAbstractFontEngine::<span class="name">getGlyphAdvances</span> ( const <span class="type"><a href="qtglobal.html#uint-typedef">uint</a></span> * <i>glyphs</i>, <span class="type">int</span> <i>numGlyphs</i>, <span class="type"><a href="qabstractfontengine.html#Fixed-typedef">Fixed</a></span> * <i>advances</i>, <span class="type"><a href="qabstractfontengine.html#TextShapingFlag-enum">TextShapingFlags</a></span> <i>flags</i> ) const<tt> [pure virtual]</tt></h3>
<p>Implemented in subclasses to retrieve the advances of the array specified by <i>glyphs</i> and <i>numGlyphs</i>, using <i>flags</i>. The result is returned in <i>advances</i>, which is allocated by the caller and contains <i>numGlyphs</i> elements.</p>
<!-- @@@getGlyphAdvances -->
<!-- $$$glyphMetrics[overload1]$$$glyphMetricsuint -->
<h3 class="fn"><a name="glyphMetrics"></a><span class="type"><a href="qabstractfontengine-glyphmetrics.html">GlyphMetrics</a></span> QAbstractFontEngine::<span class="name">glyphMetrics</span> ( <span class="type"><a href="qtglobal.html#uint-typedef">uint</a></span> <i>glyph</i> ) const<tt> [pure virtual]</tt></h3>
<p>Implemented in subclass to return the metrics for <i>glyph</i>.</p>
<!-- @@@glyphMetrics -->
<!-- $$$renderGlyph[overload1]$$$renderGlyphuintintintintuchar* -->
<h3 class="fn"><a name="renderGlyph"></a><span class="type">bool</span> QAbstractFontEngine::<span class="name">renderGlyph</span> ( <span class="type"><a href="qtglobal.html#uint-typedef">uint</a></span> <i>glyph</i>, <span class="type">int</span> <i>depth</i>, <span class="type">int</span> <i>bytesPerLine</i>, <span class="type">int</span> <i>height</i>, <span class="type"><a href="qtglobal.html#uchar-typedef">uchar</a></span> * <i>buffer</i> )<tt> [virtual]</tt></h3>
<p>Implemented in subclasses to render the specified <i>glyph</i> into a <i>buffer</i> with the given <i>depth</i> , <i>bytesPerLine</i> and <i>height</i>.</p>
<p>Returns true if rendering succeeded, false otherwise.</p>
<!-- @@@renderGlyph -->
</div>
  <div class="ft">
    <span></span>
  </div>
</div> 
<div class="footer">
    <p>
      <acronym title="Copyright">©</acronym> 2012 Nokia Corporation and/or its
      subsidiaries. Documentation contributions included herein are the copyrights of
      their respective owners.</p>
    <br />
    <p>
      The documentation provided herein is licensed under the terms of the
      <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation
      License version 1.3</a> as published by the Free Software Foundation.</p>
    <p>
      Documentation sources may be obtained from <a href="http://www.qt-project.org">
      www.qt-project.org</a>.</p>
    <br />
    <p>
      Nokia, Qt and their respective logos are trademarks of Nokia Corporation 
      in Finland and/or other countries worldwide. All other trademarks are property
      of their respective owners. <a title="Privacy Policy"
      href="http://en.gitorious.org/privacy_policy/">Privacy Policy</a></p>
</div>
</body>
</html>
 
     |