<!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" lang="en">
<head>
  <meta http-equiv="Content-Type" value="application/xhtml+xml" />
  <meta name="verify-v1" content="g222frIIxcQTrvDR3NBRUSKP3AnMNoqxOkIniCEkV7U=" />
  <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf" />
  <style type="text/css" media="screen,projection"><!--
    @import url("../../www/magick.css");
  --></style>
  <link rel="shortcut icon" href="../../images/wand.ico"  type="images/vnd.microsoft.icon"/>
  <title>ImageMagick: MagickWand, C API for ImageMagick: Wand Methods</title>
  <meta http-equiv="Content-Language" content="en-US"/>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <meta http-equiv="Reply-to" content="magick-users@imagemagick.org"/>
  <meta name="Generator" content="PHP"/>
  <meta name="Keywords" content="magickwc, api, for, imagemagick:, wmethods, ImageMagick, ImageMagic, MagickCore, MagickWand, PerlMagick, Magick++, RMagick, PythonMagick, JMagick, TclMagick, Image, Magick, Magic, Wand, ImageMagickObject, Swiss, Army, Knife, Image, Processing"/>
  <meta name="Description" content="ImageMagick® is a software suite to create, edit, and compose bitmap images. It can read, convert and write images in a variety of formats (about 100) including GIF, JPEG, JPEG-2000, PNG, PDF, PhotoCD, TIFF, and DPX. Use ImageMagick to translate, flip, mirror, rotate, scale, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.  ImageMagick is free software delivered as a ready-to-run binary distribution or as source code that you can freely use, copy, modify, and distribute. Its license is compatible with the GPL. It runs on all major operating systems.  The functionality of ImageMagick is typically utilized from the command line or you can use the features from programs written in your favorite programming language. Choose from these interfaces: MagickCore (C), MagickWand (C), ChMagick (Ch), Magick++ (C++), JMagick (Java), L-Magick (Lisp), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick (Tcl/TK). With a language interface, use ImageMagick to modify or create images automagically and dynamically."/>
  <meta name="Rating" content="GENERAL"/>
  <meta name="Robots" content="INDEX, FOLLOW"/>
  <meta name="Generator" content="ImageMagick Studio LLC"/>
  <meta name="Author" content="ImageMagick Studio LLC"/>
  <meta name="Revisit-after" content="2 DAYS"/>
  <meta name="Resource-type" content="document"/>
  <meta name="Copyright" content="Copyright (c) 1999-2010 ImageMagick Studio LLC"/>
  <meta name="Distribution" content="Global"/>
</head>

<body id="www-imagemagick-org">
<div class="titlebar">
<a href="../../index.html">
  <img src="../../images/script.png" alt="[ImageMagick]"
  style="width: 350px; height: 60px; margin: 28px auto; float: left;" /></a>
<a href="http://www.networkredux.com">
  <img src="../../images/networkredux.png" alt="[sponsor]"
  style="margin: 45px auto; border: 0px; float: left;" /></a>
<a href="http://www.imagemagick.org/discourse-server/">
  <img src="../../images/logo.jpg" alt=""
  style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
<a href="../../index.html">
  <img src="../../images/sprite.jpg" alt=""
  style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
</div>

<div class="eastbar">

<div class="menu">
  <a href="../../index.html">About ImageMagick</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a href="../../www/command-line-tools.html">Command-line Tools</a>
</div>
<div class="sub">
    <a href="../../www/command-line-processing.html">Processing</a>
</div>
<div class="sub">
    <a href="../../www/command-line-options.html">Options</a>
</div>
<div class="sub">
    <a href="http://www.imagemagick.org/Usage/">Usage</a>
</div>
<div class="menu">
  <a href="../../www/api.html">Program Interfaces</a>
</div>
<div class="sub">
    <a href="../../www/magick-wand.html">MagickWand</a>
</div>
<div class="sub">
    <a href="../../www/magick-core.html">MagickCore</a>
</div>
<div class="sub">
    <a href="../../www/perl-magick.html">PerlMagick</a>
</div>
<div class="sub">
    <a href="../../Magick++/">Magick++</a>
</div>
<div class="menu">
  <a href="../../www/architecture.html">Architecture</a>
</div>
<div class="sep"></div>
<div  class="menu">
   <a href="../../www/install-source.html">Install from Source</a>
</div>
<div class="sub">
    <a href="../../www/install-source.html#unix">Unix</a>
</div>
<div class="sub">
    <a href="../../www/install-source.html#windows">Windows</a>
 </div>
<div class="menu">
  <a href="../../www/binary-releases.html">Binary Releases</a>
</div>
<div class="sub">
    <a href="../../www/binary-releases.html#unix">Unix</a>
</div>
<div class="sub">
    <a href="../../www/binary-releases.html#macosx">Mac OS X</a>
</div>
<div class="sub">
    <a href="../../www/binary-releases.html#windows">Windows</a>
</div>
<div class="menu">
  <a href="../../www/resources.html">Resources</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a href="../../www/download.html">Download</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a href="../http://www.imagemagick.org/script/search.php">Search</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a href="../../www/sitemap.html">Site Map</a>
</div>
<div  class="sub">
    <a href="../../www/links.html">Links</a>
</div>
<div class="sep"></div>
<div  class="menu">
  <a href="../../www/sponsors.html">Sponsors:</a>

<div class="sponsbox">
<div  class="sponsor">
   <a href="http://www.abi-stoff.de/abizeitung/" title="Abibuch">Abizeitung</a><!-- 20101101000200 -->
</div>
<div  class="sponsor">
  <a href="http://www.deko.net">Deko.net</a><!-- 201101010600 Peterssen-->
</div>
<div  class="sponsor">
  <a href="http://www.tomsgutscheine.de">Tom's Gutscheine</a><!-- 201005010360 invendio.de-->
</div>
<div  class="sponsor">
  <a href="http://www.online-kredit-index.de">Kredit</a><!-- 201007010120 Buchhorn -->
</div>
<div  class="sponsor">
  <a href="http://www.blumenversender.com">Blumenversand</a><!-- 201005010120 -->
</div>
<div  class="sponsor">
  <a href="http://www.print24.de/">Druckerei</a><!-- 201009010720 -->
</div>
<div  class="sponsor">
   <a href="http://www.goyax.de">Börse</a><!-- 201004010240 Gewiese digital-finance.de -->
</div>
<div  class="sponsor">
   <a href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
</div>
</div>


</div>

<div class="main">

<p class="navigation-index">[<a href="#ClearMagickWand">ClearMagickWand</a> &bull; <a href="#CloneMagickWand">CloneMagickWand</a> &bull; <a href="#DestroyMagickWand">DestroyMagickWand</a> &bull; <a href="#IsMagickWand">IsMagickWand</a> &bull; <a href="#MagickClearException">MagickClearException</a> &bull; <a href="#MagickGetException">MagickGetException</a> &bull; <a href="#MagickGetExceptionType">MagickGetExceptionType</a> &bull; <a href="#MagickGetIteratorIndex">MagickGetIteratorIndex</a> &bull; <a href="#MagickQueryConfigureOption">MagickQueryConfigureOption</a> &bull; <a href="#MagickQueryConfigureOptions">MagickQueryConfigureOptions</a> &bull; <a href="#MagickQueryFontMetrics">MagickQueryFontMetrics</a> &bull; <a href="#MagickQueryMultilineFontMetrics">MagickQueryMultilineFontMetrics</a> &bull; <a href="#MagickQueryFonts">MagickQueryFonts</a> &bull; <a href="#MagickQueryFonts">MagickQueryFonts</a> &bull; <a href="#MagickRelinquishMemory">MagickRelinquishMemory</a> &bull; <a href="#MagickResetIterator">MagickResetIterator</a> &bull; <a href="#MagickSetFirstIterator">MagickSetFirstIterator</a> &bull; <a href="#MagickSetIteratorIndex">MagickSetIteratorIndex</a> &bull; <a href="#MagickSetLastIterator">MagickSetLastIterator</a> &bull; <a href="#MagickWandGenesis">MagickWandGenesis</a> &bull; <a href="#MagickWandTerminus">MagickWandTerminus</a> &bull; <a href="#NewMagickWand">NewMagickWand</a> &bull; <a href="#NewMagickWandFromImage">NewMagickWandFromImage</a>]</p>

<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="ClearMagickWand">ClearMagickWand</a></h2>
<div class="doc-section">

<p>ClearMagickWand() clears resources associated with the wand.</p></ol>

<p>The format of the ClearMagickWand method is:</p>

<pre class="code">
  void ClearMagickWand(MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the magick wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="CloneMagickWand">CloneMagickWand</a></h2>
<div class="doc-section">

<p>CloneMagickWand() makes an exact copy of the specified wand.</p></ol>

<p>The format of the CloneMagickWand method is:</p>

<pre class="code">
  MagickWand *CloneMagickWand(const MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the magick wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="DestroyMagickWand">DestroyMagickWand</a></h2>
<div class="doc-section">

<p>DestroyMagickWand() deallocates memory associated with an MagickWand.</p></ol>

<p>The format of the DestroyMagickWand method is:</p>

<pre class="code">
  MagickWand *DestroyMagickWand(MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the magick wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="IsMagickWand">IsMagickWand</a></h2>
<div class="doc-section">

<p>IsMagickWand() returns MagickTrue if the wand is verified as a magick wand.</p></ol>

<p>The format of the IsMagickWand method is:</p>

<pre class="code">
  MagickBooleanType IsMagickWand(const MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the magick wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickClearException">MagickClearException</a></h2>
<div class="doc-section">

<p>MagickClearException() clears any exceptions associated with the wand.</p></ol>

<p>The format of the MagickClearException method is:</p>

<pre class="code">
  MagickBooleanType MagickClearException(MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the magick wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickGetException">MagickGetException</a></h2>
<div class="doc-section">

<p>MagickGetException() returns the severity, reason, and description of any error that occurs when using other methods in this API.</p></ol>

<p>The format of the MagickGetException method is:</p>

<pre class="code">
  char *MagickGetException(const MagickWand *wand,ExceptionType *severity)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the magick wand.</p></ol>

<h5>severity</h5>
<ol><p>the severity of the error is returned here.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickGetExceptionType">MagickGetExceptionType</a></h2>
<div class="doc-section">

<p>MagickGetExceptionType() returns the exception type associated with the wand.  If no exception has occurred, UndefinedExceptionType is returned.</p></ol>

<p>The format of the MagickGetExceptionType method is:</p>

<pre class="code">
  ExceptionType MagickGetExceptionType(const MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the magick wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickGetIteratorIndex">MagickGetIteratorIndex</a></h2>
<div class="doc-section">

<p>MagickGetIteratorIndex() returns the position of the iterator in the image list.</p></ol>

<p>The format of the MagickGetIteratorIndex method is:</p>

<pre class="code">
  long MagickGetIteratorIndex(MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the magick wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickQueryConfigureOption">MagickQueryConfigureOption</a></h2>
<div class="doc-section">

<p>MagickQueryConfigureOption() returns the value associated with the specified configure option.</p></ol>

<p>The format of the MagickQueryConfigureOption function is:</p>

<pre class="text">
  char *MagickQueryConfigureOption(const char *option)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>option</h5>
<ol><p>the option name.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickQueryConfigureOptions">MagickQueryConfigureOptions</a></h2>
<div class="doc-section">

<p>MagickQueryConfigureOptions() returns any configure options that match the specified pattern (e.g.  "*" for all).  Options include NAME, VERSION, LIB_VERSION, etc.</p></ol>

<p>The format of the MagickQueryConfigureOptions function is:</p>

<pre class="text">
  char **MagickQueryConfigureOptions(const char *pattern,
    unsigned long *number_options)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>pattern</h5>
<ol><p>Specifies a pointer to a text string containing a pattern.</p></ol>

<h5>number_options</h5>
<ol><p>Returns the number of configure options in the list.</p></ol>


 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickQueryFontMetrics">MagickQueryFontMetrics</a></h2>
<div class="doc-section">

<p>MagickQueryFontMetrics() returns a 13 element array representing the following font metrics:</p>

<pre class="text">
      Element Description
      -------------------------------------------------
      0 character width
      1 character height
      2 ascender
      3 descender
      4 text width
      5 text height
      6 maximum horizontal advance
      7 bounding box: x1
      8 bounding box: y1
      9 bounding box: x2
     10 bounding box: y2
     11 origin: x
     12 origin: y
</pre>

<p>The format of the MagickQueryFontMetrics method is:</p>

<pre class="code">
  double *MagickQueryFontMetrics(MagickWand *wand,
    const DrawingWand *drawing_wand,const char *text)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the Magick wand.</p></ol>

<h5>drawing_wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>text</h5>
<ol><p>the text.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickQueryMultilineFontMetrics">MagickQueryMultilineFontMetrics</a></h2>
<div class="doc-section">

<p>MagickQueryMultilineFontMetrics() returns a 13 element array representing the following font metrics:</p>

<pre class="text">
      Element Description
      -------------------------------------------------
      0 character width
      1 character height
      2 ascender
      3 descender
      4 text width
      5 text height
      6 maximum horizontal advance
      7 bounding box: x1
      8 bounding box: y1
      9 bounding box: x2
     10 bounding box: y2
     11 origin: x
     12 origin: y
</pre>

<p>This method is like MagickQueryFontMetrics() but it returns the maximum text width and height for multiple lines of text.</p></ol>

<p>The format of the MagickQueryFontMetrics method is:</p>

<pre class="code">
  double *MagickQueryMultilineFontMetrics(MagickWand *wand,
    const DrawingWand *drawing_wand,const char *text)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the Magick wand.</p></ol>

<h5>drawing_wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>text</h5>
<ol><p>the text.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickQueryFonts">MagickQueryFonts</a></h2>
<div class="doc-section">

<p>MagickQueryFonts() returns any font that match the specified pattern (e.g. "*" for all).</p></ol>

<p>The format of the MagickQueryFonts function is:</p>

<pre class="text">
  char **MagickQueryFonts(const char *pattern,unsigned long *number_fonts)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>pattern</h5>
<ol><p>Specifies a pointer to a text string containing a pattern.</p></ol>

<h5>number_fonts</h5>
<ol><p>Returns the number of fonts in the list.</p></ol>


 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickQueryFonts">MagickQueryFonts</a></h2>
<div class="doc-section">

<p>MagickQueryFonts() returns any image formats that match the specified pattern (e.g.  "*" for all).</p></ol>

<p>The format of the MagickQueryFonts function is:</p>

<pre class="text">
  char **MagickQueryFonts(const char *pattern,
    unsigned long *number_formats)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>pattern</h5>
<ol><p>Specifies a pointer to a text string containing a pattern.</p></ol>

<h5>number_formats</h5>
<ol><p>This integer returns the number of image formats in the list.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickRelinquishMemory">MagickRelinquishMemory</a></h2>
<div class="doc-section">

<p>MagickRelinquishMemory() relinquishes memory resources returned by such methods as MagickIdentifyImage(), MagickGetException(), etc.</p></ol>

<p>The format of the MagickRelinquishMemory method is:</p>

<pre class="code">
  void *MagickRelinquishMemory(void *resource)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>resource</h5>
<ol><p>Relinquish the memory associated with this resource.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickResetIterator">MagickResetIterator</a></h2>
<div class="doc-section">

<p>MagickResetIterator() resets the wand iterator.  Use it in conjunction with MagickNextImage() to iterate over all the images in a wand container.</p></ol>

<p>The format of the MagickResetIterator method is:</p>

<pre class="code">
  void MagickResetIterator(MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the magick wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickSetFirstIterator">MagickSetFirstIterator</a></h2>
<div class="doc-section">

<p>MagickSetFirstIterator() sets the wand iterator to the first image.</p></ol>

<p>The format of the MagickSetFirstIterator method is:</p>

<pre class="code">
  void MagickSetFirstIterator(MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the magick wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickSetIteratorIndex">MagickSetIteratorIndex</a></h2>
<div class="doc-section">

<p>MagickSetIteratorIndex() set the iterator to the position in the image list specified with the index parameter.</p></ol>

<p>The format of the MagickSetIteratorIndex method is:</p>

<pre class="code">
  MagickBooleanType MagickSetIteratorIndex(MagickWand *wand,
    const long index)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the magick wand.</p></ol>

<h5>index</h5>
<ol><p>the scene number.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickSetLastIterator">MagickSetLastIterator</a></h2>
<div class="doc-section">

<p>MagickSetLastIterator() sets the wand iterator to the last image.</p></ol>

<p>The format of the MagickSetLastIterator method is:</p>

<pre class="code">
  void MagickSetLastIterator(MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the magick wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickWandGenesis">MagickWandGenesis</a></h2>
<div class="doc-section">

<p>MagickWandGenesis() initializes the MagickWand environment.</p></ol>

<p>The format of the MagickWandGenesis method is:</p>

<pre class="code">
  void MagickWandGenesis(void)
</pre>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="MagickWandTerminus">MagickWandTerminus</a></h2>
<div class="doc-section">

<p>MagickWandTerminus() terminates the MagickWand environment.</p></ol>

<p>The format of the MaickWandTerminus method is:</p>

<pre class="code">
  void MagickWandTerminus(void)
</pre>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="NewMagickWand">NewMagickWand</a></h2>
<div class="doc-section">

<p>NewMagickWand() returns a wand required for all other methods in the API.</p></ol>

<p>The format of the NewMagickWand method is:</p>

<pre class="code">
  MagickWand *NewMagickWand(void)
</pre>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" target="source" name="NewMagickWandFromImage">NewMagickWandFromImage</a></h2>
<div class="doc-section">

<p>NewMagickWandFromImage() returns a wand with an image.</p></ol>

<p>The format of the NewMagickWandFromImage method is:</p>

<pre class="code">
  MagickWand *NewMagickWandFromImage(const Image *image)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>image</h5>
<ol><p>the image.</p></ol>

 </div>

</div>

<div id="linkbar">
 <!--    <span id="linkbar-west">&nbsp;</span>  -->
    <span id="linkbar-center">
      <a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> &bull;
    <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>
    </span>
    <span id="linkbar-east">&nbsp;</span>
  </div>
  <div class="footer">
    <span id="footer-west">&copy; 1999-2010 ImageMagick Studio LLC</span>
    <span id="footer-east"> <a href="../http://www.imagemagick.org/script/contact.php">Contact the Wizards</a></span>
  </div>
  <div style="clear: both; margin: 0; width: 100%; "></div>
</body>
</html>
