]> granicus.if.org Git - imagemagick/blob - www/magick-core.html
(no commit message)
[imagemagick] / www / magick-core.html
1 \r
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" \r
3   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
4 <html version="-//W3C//DTD XHTML 1.1//EN"\r
5       xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"\r
6       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
7       xsi:schemaLocation="http://www.w3.org/1999/xhtml\r
8                           http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd">\r
9 <head>\r
10   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>\r
11   <meta name="google-site-verification" content="MxsMq6bdLOx0KSuz1MY6yG9ZTIJ7_7DVRfl5NCAT5Yg"/>\r
12   <title>ImageMagick: MagickCore, Low-level C API for ImageMagick</title>
13   <meta http-equiv="Content-Language" content="en-US"/>
14   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
15   <meta http-equiv="Reply-to" content="magick-users@imagemagick.org"/>
16   <meta name="Application-name" content="ImageMagick"/>
17   <meta name="Description" content="Use ImageMagick to convert, edit, or compose bitmap images in a variety of formats.  In addition resize, rotate, shear, distort and transform images automagically."/>
18   <meta name="Application-url" content="http://www.imagemagick.org"/>
19   <meta name="Generator" content="PHP"/>
20   <meta name="Keywords" content="magickcore, low-level, c, api, for, imagemagick, ImageMagick, ImageMagic, MagickCore, MagickWand, PerlMagick, Magick++, RMagick, PythonMagick, JMagick, TclMagick, Image, Magick, Magic, Wand, ImageMagickObject, Image, Processing, Automagically"/>
21   <meta name="Rating" content="GENERAL"/>
22   <meta name="Robots" content="INDEX, FOLLOW"/>
23   <meta name="Generator" content="ImageMagick Studio LLC"/>
24   <meta name="Author" content="ImageMagick Studio LLC"/>
25   <meta name="Revisit-after" content="2 DAYS"/>
26   <meta name="Resource-type" content="document"/>
27   <meta name="Copyright" content="Copyright (c) 1999-2011 ImageMagick Studio LLC"/>
28   <meta name="Distribution" content="Global"/>
29   <link rel="icon" href="../images/wand.png"/>
30   <link rel="shortcut icon" href="../images/wand.ico"  type="images/x-icon"/>
31   <link rel="canonical" href="http://www.imagemagick.org" />\r
32   <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf"/>\r
33   <link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />\r
34   <link rel="stylesheet" type="text/css" href="http://www.imagemagick.org/fancybox/jquery.fancybox-1.3.4.css" media="screen" />\r
35   <style type="text/css" media="all">\r
36     @import url("../www/magick.css");\r
37   </style>\r
38   <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>\r
39   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>\r
40   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.fancybox-1.3.4.pack.js"></script>\r
41   <script type="text/javascript">\r
42     $(document).ready(function() {\r
43       $("a[href$=.jpg],a[href$=.png],a[href$=.gif]").fancybox({\r
44         'transitionIn'  : 'elastic',\r
45         'transitionOut' : 'elastic',\r
46         'overlayShow'   : false,\r
47         'opacity'       : true\r
48       });\r
49     });\r
50   </script>\r
51 </head>\r
52 \r
53 <body id="www-imagemagick-org">\r
54 <div class="titlebar">\r
55 <div style="margin: 17px auto; float: left;">\r
56   <script type="text/javascript">\r
57   <!--\r
58     google_ad_client = "pub-3129977114552745";\r
59     google_ad_slot = "5439289906";\r
60     google_ad_width = 728;\r
61     google_ad_height = 90;\r
62   //-->\r
63   </script>\r
64   <script type="text/javascript"\r
65     src="http://pagead2.googlesyndication.com/pagead/show_ads.js">\r
66   </script>\r
67 </div>\r
68 <a href="http://www.imagemagick.org/discourse-server/">\r
69   <img src="../images/logo.jpg"\r
70   alt="ImageMagick Logo"\r
71   style="width: 123px; height: 118px; border: 0px; float: right;" /></a>\r
72 <a href="../index.html">\r
73   <img src="../images/sprite.jpg"\r
74   alt="ImageMagick Sprite"\r
75   style="width: 114px; height: 118px; border: 0px; float: right;" /></a>\r
76 </div>\r
77 \r
78 <div class="westbar">\r
79 \r
80 <div class="menu">
81   <a title="About ImageMagick" href="../index.html">About ImageMagick</a>
82 </div>
83 <div class="menu">
84   <a title="Binary Releases" href="../www/binary-releases.html">Binary Releases</a>
85 </div>
86 <div class="sub">
87     <a title="Binary Release: Unix" href="../www/binary-releases.html#unix">Unix</a>
88 </div>
89 <div class="sub">
90     <a title="Binary Release: MacOS X" href="../www/binary-releases.html#macosx">Mac OS X</a>
91 </div>
92 <div class="sub">
93     <a title="Binary Release: iOS" href="../www/binary-releases.html#iOS">iOS</a>
94 </div>
95 <div class="sub">
96     <a title="Binary Release: Windows" href="../www/binary-releases.html#windows">Windows</a>
97 </div>
98 <div class="sep"></div>\r
99 <div class="menu">
100   <a title="Command-line Tools" href="../www/command-line-tools.html">Command-line Tools</a>
101 </div>
102 <div class="sub">
103     <a title="Command-line Tools: Processing" href="../www/command-line-processing.html">Processing</a>
104 </div>
105 <div class="sub">
106     <a title="Command-line Tools: Options" href="../www/command-line-options.html">Options</a>
107 </div>
108 <div class="sub">
109     <a title="Command-line Tools: Usage" href="http://www.imagemagick.org/Usage/">Usage</a>
110 </div>
111 <div class="menu">
112   <a title="Program Interfaces" href="../www/api.html">Program Interfaces</a>
113 </div>
114 <div class="sub">
115     <a title="Program Interface: MagickWand" href="../www/magick-wand.html">MagickWand</a>
116 </div>
117 <div class="sub">
118     <a title="Program Interface: MagickCore" href="../www/magick-core.html">MagickCore</a>
119 </div>
120 <div class="sub">
121     <a title="Program Interface: PerlMagick" href="../www/perl-magick.html">PerlMagick</a>
122 </div>
123 <div class="sub">
124     <a title="Program Interface: Magick++" href="../www/magick++.html">Magick++</a>
125 </div>
126 <div class="sep"></div>\r
127 <div  class="menu">
128    <a title="Install from Source" href="../www/install-source.html">Install from Source</a>
129 </div>
130 <div class="sub">
131     <a title="Install from Source: Unix" href="../www/install-source.html#unix">Unix</a>
132 </div>
133 <div class="sub">
134     <a title="Install from Source: Windows" href="../www/install-source.html#windows">Windows</a>
135  </div>
136 <div class="menu">
137   <a title="Resources" href="../www/resources.html">Resources</a>
138 </div>
139 <div class="menu">
140   <a title="Architecture" href="../www/architecture.html">Architecture</a>
141 </div>
142 <div class="menu">
143   <a title="Download" href="../www/download.html">Download</a>
144 </div>
145 <div class="sep"></div>\r
146 <div class="menu">
147   <a title="Search" href="../www/search.html">Search</a>
148 </div>
149 <div class="sep"></div>\r
150 <div class="menu">
151   <a title="Site Map" href="../www/sitemap.html">Site Map</a>
152 </div>
153 <div  class="sub">
154   <a title="Site Map: Links" href="../www/links.html">Links</a>
155 </div>
156 <div class="sep"></div>\r
157 <div  class="menu">
158   <a rel="follow" title="Sponsors" href="../www/sponsors.html">Sponsors:</a>
159
160 <a href="http://www.networkredux.com">
161   <img src="../images/networkredux.png" width="140" height="31" alt="[sponsor]"
162   style="margin-top: 4px; margin-left: 4px; border: 0px; float: left;" /></a>
163 <div class="sponsbox">
164 <div  class="sponsor">
165   <a rel="follow" title="Sponsor: Autoteile" href="http://www.q11-shop.de">Autoteile</a><!-- 201205010540s suvalj -->
166 </div>
167 <div  class="sponsor">
168   <a rel="follow" title="Sponsor: Web Hosting" href="http://www.micfo.com">Web Hosting</a><!-- 209901010090s golestan -->
169 </div>
170 <div  class="sponsor">
171   <a rel="follow" title="Sponsor: Search engine optimisation" href="http://www.seomoves.com.au">Search engine optimisation</a><!-- 201110010090s jen@seo lowprofilelinks -->
172 </div>
173 <div  class="sponsor">
174   <a rel="follow" title="Sponsor: Druckerei" href="http://print24.com/de/">Druckerei</a><!-- 201110010720 -->
175 </div>
176 <div  class="sponsor">
177   <a rel="follow" title="Sponsor: Web Hosting Deals" href="http://www.webhostingdeals.org">Web Hosting Deals</a><!-- 201111010270 chee.hoa darin -->
178 </div>
179 <div  class="sponsor">
180   <a rel="follow" title="Sponsor: Autos part" href="http://www.pkwteile.de/autoteile">Autos part</a><!-- 201112010090s jr@pkwte... -->
181 </div>
182 <div  class="sponsor">
183   <a rel="follow" title="Sponsor: Web Hosting Reviews" href="http://www.webhostingsecretrevealed.com">Web Hosting Secret Revealed</a><!-- 201204010540 iamchee jerry -->
184 </div>
185 <div  class="sponsor">
186   <a rel="follow" title="Sponsor: Web Hosting Break" href="http://www.webhostingbreak.com">Web Hosting Break</a><!-- 201109010090 ian@ian-m... -->
187 </div>
188 <div  class="sponsor">
189   <a rel="follow" title="Sponsor: Druckerei" href="http://www.allesdruck.de">Druckerei</a><!-- 201303011500 r.leo -->
190 </div>
191 <div  class="sponsor">
192   <a rel="follow" title="Sponsor: Website Hosting" href="http://www.hostreviewgeeks.com">Website Hosting</a><!-- 201110010090 alexanian media -->
193 </div>
194 <div  class="sponsor">
195   <a rel="follow" title="Sponsor: Hotel München" href="http://www.messehotel-erb-muenchen.de">Hotel München</a><!-- 201111010450 cerb -->
196 </div>
197 <div  class="sponsor">
198   <a rel="follow" title="Sponsor: Best Web Hosting" href="http://webhostinggeeks.com">Best Web Hosting</a><!-- 201110010720 -->
199 </div>
200 <div  class="sponsor">
201   <a rel="follow" title="Sponsor: Flyer drucken" href="http://www.online-druck.biz">Flyer drucken</a><!-- 201109010900 Floeter-->
202 </div>
203 <div  class="sponsor">
204   <a rel="follow" title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
205 </div>
206 <div  class="sponsor">
207    <a rel="follow" title="Sponsor: Bildbearbeitung" href="http://www.bildschliff.de">Bildbearbeitung</a><!-- 2012060100300 strait.de-->
208 </div>
209 </div>
210 </div>
211 </div>\r
212 \r
213 <div class="eastbar">\r
214   <div class="g-plusone" data-size="standard" data-count="false"></div>\r
215 </div>\r
216 \r
217 <div class="main">\r
218 \r
219 <h1>MagickCore C API</h1>
220
221 <div class="doc-section">
222
223 <p>The <a href="../www/api/MagickCore/index.html">MagickCore API</a> is a low-level interface between the C programming language and the ImageMagick image processing libraries and is recommended for wizard-level programmers only.  Unlike the <a href="../www/magick-wand.html">MagickWand</a> C API which uses only a few opaque types and accessors, with MagickCore you almost exlusively access the structure members directly.  A description of the MagickCore public methods are found here:</p>
224
225 <ul>
226   <li><a href="../www/api/magick.html">Initialize or Destroy the ImageMagick Environment</a></li>
227   <li><a href="../www/api/constitute.html">Constitute an Image</a></li>
228   <li><a href="../www/api/composite.html">Composite an Image</a></li>
229   <li><a href="../www/api/image.html">Image Methods</a></li>
230   <li><a href="../www/api/color.html">Count the Colors in an Image</a></li>
231   <li><a href="../www/api/colormap.html">Colormap Methods</a></li>
232   <li><a href="../www/api/distort.html">Image Distortions</a></li>
233   <li><a href="../www/api/layer.html">Dealing with Image Layers</a></li>
234   <li><a href="../www/api/profile.html">Dealing with Image Profiles</a></li>
235   <li><a href="../www/api/quantize.html">Reduce the Number of Unique Colors in an Image</a></li>
236   <li><a href="../www/api/histogram.html">Image Histograms</a></li>
237   <li><a href="../www/api/segment.html">Segment an Image with Thresholding Fuzzy c-Means</a></li>
238   <li><a href="../www/api/resize.html">Resize an Image</a></li>
239   <li><a href="../www/api/transform.html">Transform an Image</a></li>
240   <li><a href="../www/api/shear.html">Shear or Rotate an Image by an Arbitrary Angle</a></li>
241   <li><a href="../www/api/enhance.html">Enhance an Image</a></li>
242   <li><a href="../www/api/effect.html">Add an Effect</a></li>
243   <li><a href="../www/api/morphology.html">Morphological Erosions, Dilations, Openings, and Closings</a></li>
244   <li><a href="../www/api/fx.html">Add a Special Effect</a></li>
245   <li><a href="../www/api/decorate.html">Decorate an Image</a></li>
246   <li><a href="../www/api/attribute.html">Get/Set an Image Attribute</a></li>
247   <li><a href="../www/api/property.html">Get/Set Image Properties</a></li>
248   <li><a href="../www/api/statistic.html">Get Image Statistics</a></li>
249   <li><a href="../www/api/feature.html">Get Image Features</a></li>
250   <li><a href="../www/api/annotate.html">Annotate an Image</a></li>
251   <li><a href="../www/api/paint.html">Paint on an Image</a></li>
252   <li><a href="../www/api/draw.html">Draw on an Image</a></li>
253   <li><a href="../www/api/montage.html">Create an Image Thumbnail</a></li>
254   <li><a href="../www/api/fourier.html">Compute the discrete Fourier transform (DFT)</a></li>
255   <li><a href="../www/api/compare.html">Compare an Image to a Reconstructed Image</a></li>
256   <li><a href="../www/api/display.html">Interactively Display and Edit an Image</a></li>
257   <li><a href="../www/api/animate.html">Interactively Animate an Image Sequence</a></li>
258   <li><a href="../www/api/cipher.html">Convert to and from Cipher Pixels</a></li>
259   <li><a href="../www/api/list.html">Working with Image Lists</a></li>
260   <li><a href="../www/api/image-view.html">Image View Methods</a></li>
261   <li><a href="../www/api/cache.html">Get or Set Image Pixels</a></li>
262   <li><a href="../www/api/cache-view.html">Working with Cache Views</a></li>
263   <li><a href="../www/api/stream.html">The Pixel FIFO</a></li>
264   <li><a href="../www/api/blob.html">Read or Write Binary Large OBjects</a></li>
265   <li><a href="../www/api/module.html">Loadable Modules</a></li>
266   <li><a href="../www/api/signature.html">Compute a Message Digest for an Image</a></li>
267   <li><a href="../www/api/registry.html">The Image Registry</a></li>
268   <li><a href="../www/api/exception.html">Dealing with Exceptions</a></li>
269   <li><a href="../www/api/memory.html">Memory Allocation</a></li>
270   <li><a href="../www/api/resource.html">Monitor or Limit Resource Consumption</a></li>
271   <li><a href="../www/api/monitor.html">Monitor the Progress of an Image Operation</a></li>
272   <li><a href="../www/api/version.html">Get the Version and Copyrights</a></li>
273   <li><a href="../www/api/deprecate.html">Deprecated Methods</a></li>
274   <li><a href="../www/exception.html">Error and Warning Codes</a></li>
275 </ul>
276
277 <p>After you write your MagickCore program, compile it like this:</p>
278
279 <p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>cc `MagickCore-config --cflags --cppflags` -O2 core.c  \ <br/> `MagickCore-config --ldflags --libs`</span></p>
280 <p>Here is a example program that utilizes the MagickCore API to get you started, <a href="../www/source/core.c">core.c</a>. It reads a GIF image, creates a thumbnail, and writes it to disk in the PNG image format.</p>
281
282 <div class="viewport">
283   #include &lt;stdio.h>
284   #include &lt;stdlib.h>
285   #include &lt;string.h>
286   #include &lt;time.h>
287   #include &lt;magick/MagickCore.h>
288
289   int main(int argc,char **argv)
290   {
291     ExceptionInfo
292       *exception;
293
294     Image
295       *image,
296       *images,
297       *resize_image,
298       *thumbnails;
299
300     ImageInfo
301       *image_info;
302
303     if (argc != 3)
304       {
305         (void) fprintf(stdout,"Usage: %s image thumbnail\n",argv[0]);
306         exit(0);
307       }
308     /*
309       Initialize the image info structure and read an image.
310     */
311     MagickCoreGenesis(*argv,MagickTrue);
312     exception=AcquireExceptionInfo();
313     image_info=CloneImageInfo((ImageInfo *) NULL);
314     (void) strcpy(image_info-&gt;filename,argv[1]);
315     images=ReadImage(image_info,exception);
316     if (exception-&gt;severity != UndefinedException)
317       CatchException(exception);
318     if (images == (Image *) NULL)
319       exit(1);
320     /*
321       Convert the image to a thumbnail.
322     */
323     thumbnails=NewImageList();
324     while ((image=RemoveFirstImageFromList(&amp;images)) != (Image *) NULL)
325     {
326       resize_image=ResizeImage(image,106,80,LanczosFilter,1.0,exception);
327       if (resize_image == (Image *) NULL)
328         MagickError(exception-&gt;severity,exception-&gt;reason,exception-&gt;description);
329       (void) AppendImageToList(&amp;thumbnails,resize_image);
330       DestroyImage(image);
331     }
332     /*
333       Write the image thumbnail.
334     */
335     (void) strcpy(thumbnails-&gt;filename,argv[2]);
336     WriteImage(image_info,thumbnails);
337     /*
338       Destroy the image thumbnail and exit.
339     */
340     thumbnails=DestroyImageList(thumbnails);
341     image_info=DestroyImageInfo(image_info);
342     exception=DestroyExceptionInfo(exception);
343     MagickCoreTerminus();
344     return(0);
345   }
346 </div>
347 <p><a id="image-view"></a>Now lets perform the same contrast enhancement while taking advantage of our dual or quad-core processing system by running the algorithm in parallel utilizing wand views.  The <a href="../www/source/core/sigmoidal-contrast.c">sigmoidal-contrast.c</a> module reads an image, applies sigmoidal non-linearity contrast control, and writes the result to disk just like the previous contrast enhancement program, but now it does its work in parallel (assumes ImageMagick is built with OpenMP support).</p>
348
349 <div class="viewport">
350 #include &lt;stdio.h>
351 #include &lt;stdlib.h>
352 #include &lt;math.h>
353 #include &lt;magick/MagickCore.h>
354
355 static MagickBooleanType SigmoidalContrast(ImageView *contrast_view,
356   const ssize_t y,const int id,void *context)
357 {
358 #define QuantumScale  ((MagickRealType) 1.0/(MagickRealType) QuantumRange)
359 #define SigmoidalContrast(x) \
360   (QuantumRange*(1.0/(1+exp(10.0*(0.5-QuantumScale*x)))-0.0066928509)*1.0092503)
361
362   RectangleInfo
363     extent;
364
365   register IndexPacket
366     *indexes;
367
368   register PixelPacket
369     *pixels;
370
371   register ssize_t
372     x;
373
374   extent=GetImageViewExtent(contrast_view);
375   pixels=GetImageViewAuthenticPixels(contrast_view);
376   for (x=0; x &lt; (ssize_t) (extent.width-extent.x); x++)
377   {
378     SetPixelRed(pixels,RoundToQuantum(SigmoidalContrast(GetPixelRed(pixels)));
379     SetPixelGreen(pixels,RoundToQuantum(SigmoidalContrast(GetPixelGreen(pixels)));
380     SetPixelBlue(pixels,RoundToQuantum(SigmoidalContrast(GetPixelBlue(pixels)));
381     SetPixelOpacity(pixels,RoundToQuantum(SigmoidalContrast(GetPixelOpacity(pixels)));
382     pixels++;
383   }
384   indexes=GetImageViewAuthenticIndexes(contrast_view);
385   if (indexes != (IndexPacket *) NULL)
386     for (x=0; x &lt; (ssize_t) (extent.width-extent.x); x++)
387       SetPixelIndex(indexes+x,RoundToQuantum(SigmoidalContrast(GetPixelIndex(indexes+x))));
388   return(MagickTrue);
389 }
390
391 int main(int argc,char **argv)
392 {
393 #define ThrowImageException(image) \
394 { \
395  \
396   CatchException(exception); \
397   if (contrast_image != (Image *) NULL) \
398     contrast_image=DestroyImage(contrast_image); \
399   exit(-1); \
400 }
401 #define ThrowViewException(view) \
402 { \
403   char \
404     *description; \
405  \
406   ExceptionType \
407     severity; \
408  \
409   description=GetImageViewException(view,&amp;severity); \
410   (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \
411   description=DestroyString(description); \
412   exit(-1); \
413 }
414
415   ExceptionInfo
416     *exception;
417
418   Image
419     *contrast_image;
420
421   ImageInfo
422     *image_info;
423
424   ImageView
425     *contrast_view;
426
427   MagickBooleanType
428     status;
429
430   if (argc != 3)
431     {
432       (void) fprintf(stdout,"Usage: %s image sigmoidal-image\n",argv[0]);
433       exit(0);
434     }
435   /*
436     Read an image.
437   */
438   MagickCoreGenesis(*argv,MagickTrue);
439   image_info=AcquireImageInfo();
440   (void) CopyMagickString(image_info->filename,argv[1],MaxTextExtent);
441   exception=AcquireExceptionInfo();
442   contrast_image=ReadImage(image_info,exception);
443   if (contrast_image == (Image *) NULL)
444     ThrowImageException(contrast_image);
445   /*
446     Sigmoidal non-linearity contrast control.
447   */
448   contrast_view=NewImageView(contrast_image);
449   if (contrast_view == (ImageView *) NULL)
450     ThrowImageException(contrast_image);
451   status=UpdateImageViewIterator(contrast_view,SigmoidalContrast,(void *) NULL);
452   if (status == MagickFalse)
453     ThrowImageException(contrast_image);
454   contrast_view=DestroyImageView(contrast_view);
455   /*
456     Write the image then destroy it.
457   */
458   status=WriteImages(image_info,contrast_image,argv[2],exception);
459   if (status == MagickFalse)
460     ThrowImageException(contrast_image);
461   contrast_image=DestroyImage(contrast_image);
462   exception=DestroyExceptionInfo(exception);
463   image_info=DestroyImageInfo(image_info);
464   MagickCoreTerminus();
465   return(0);
466 }
467 </div>
468 </div>
469 \r
470 </div>\r
471 \r
472 <div id="linkbar">\r
473     <span id="linkbar-west">&nbsp;</span>\r
474     <span id="linkbar-center">\r
475       <a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> &bull;\r
476       <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
477     </span>\r
478     <span id="linkbar-east">&nbsp;</span>\r
479   </div>\r
480   <div class="footer">\r
481     <span id="footer-west">&copy; 1999-2011 ImageMagick Studio LLC</span>\r
482     <span id="footer-east"> <a href="http://www.imagemagick.org/script/contact.php">Contact the Wizards</a></span>\r
483   </div>\r
484   <div style="clear: both; margin: 0; width: 100%; "></div>\r
485   <script type="text/javascript">\r
486     var _gaq = _gaq || [];\r
487     _gaq.push(['_setAccount', 'UA-17690367-1']);\r
488     _gaq.push(['_trackPageview']);\r
489 \r
490     (function() {\r
491       var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\r
492       ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\r
493       var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\r
494     })();\r
495   </script>\r
496 </body>\r
497 </html>\r