<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.gmf.runtime.draw2d.ui.render">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.gmf.runtime.draw2d.ui.render" id="renderedImageFactory" name="Rendered Image Factory"/>
      </appInfo>
      <documentation>
         This extension point is used to define an image type to allow auto detection of an image buffer.  The image type can instantiate an (&lt;tt&gt;RenderedImage&lt;/tt&gt;) which can subsequently be rendered using the (&lt;tt&gt;ScalableImageFigure&lt;/tt&gt;) class.

In the extension point, the client points to a factory class which they create implementing the (&lt;tt&gt;RenderedImageType&lt;/tt&gt;) interface.  The (&lt;tt&gt;RenderedImageFactory&lt;/tt&gt;) static class calls the extension point to compile a list of image types to query.  When the client calls the (&lt;tt&gt;RenderedImageFactory&lt;/tt&gt;) to retrieve the proper (&lt;tt&gt;RenderedImage&lt;/tt&gt;), it will ask each type whether it can handle the particular image buffer.  If the image buffer is auto-detected by the type, then the type will instatiate and return a (&lt;tt&gt;RenderedImage&lt;/tt&gt;) object.
      </documentation>
   </annotation>

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="factory"/>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="factory">
      <complexType>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.gmf.runtime.draw2d.ui.render.factory.RenderedImageType"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="since"/>
      </appInfo>
      <documentation>
         GMF 1.0
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         An extension to the renderedImageFactory would require the implementation of the (&lt;tt&gt;RenderedImageType&lt;/tt&gt;) interface.    

The following is an example plugin.xml entry for a renderedImageFactory extension:

&lt;pre&gt;
    &lt;extension 
     point=&quot;org.eclipse.gmf.runtime.draw2d.ui.render.renderedImageFactory&quot;&gt;
      &lt;factory 
        class=&quot;org.eclipse.gmf.runtime.draw2d.ui.render.awt.internal.svg.SVGImageType&quot;&gt;
      &lt;/factory&gt; 
 &lt;/extension&gt;
 &lt;/pre&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         For API information, see the classes and interfaces defined in the &lt;tt&gt;org.eclipse.gmf.runtime.draw2d.ui.render&lt;/tt&gt; and &lt;tt&gt;org.eclipse.gmf.runtime.draw2d.ui.render.factory&lt;/tt&gt; packages.

&lt;p&gt;
Clients providing an extension to the renderedImageFactory extension point need to create classes that implement the following interfaces:
&lt;/p&gt;
&lt;p&gt;
&lt;tt&gt;org.eclipse.gmf.runtime.draw2d.ui.render.RenderedImage&lt;/tt&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;tt&gt;org.eclipse.gmf.runtime.draw2d.ui.render.factory.RenderedImageType&lt;/tt&gt;
&lt;/p&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         [Enter information about supplied implementation of this extension point.]
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2006  IBM Corporation and others.&lt;br&gt;
 All rights reserved. This program and the accompanying materials 
 are made available under the terms of the Eclipse Public License v1.0 
 which accompanies this distribution, and is available at 
 &lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
      </documentation>
   </annotation>

</schema>
