Java Doc for DefaultCoordinateOperationFactory.java in  » GIS » GeoTools-2.4.1 » org » geotools » referencing » operation » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » GIS » GeoTools 2.4.1 » org.geotools.referencing.operation 
Source Cross Reference  Class Diagram Java Document (Java Doc) 


org.geotools.referencing.operation.AbstractCoordinateOperationFactory
   org.geotools.referencing.operation.DefaultCoordinateOperationFactory

All known Subclasses:   org.geotools.referencing.operation.AuthorityBackedFactory,
DefaultCoordinateOperationFactory
public class DefaultCoordinateOperationFactory extends AbstractCoordinateOperationFactory (Code)
Creates . This factory is capable to find coordinate or between two . It delegates most of its work to one or many of createOperationStep methods. Subclasses can override those methods in order to extend the factory capability to some more CRS.
since:
   2.1
version:
   $Id: DefaultCoordinateOperationFactory.java 25755 2007-06-06 11:14:58Z desruisseaux $
author:
   Martin Desruisseaux


Field Summary
final static  intPRIORITY
     The priority level for this factory.

Constructor Summary
public  DefaultCoordinateOperationFactory()
     Constructs a coordinate operation factory using the default factories.
public  DefaultCoordinateOperationFactory(Hints userHints)
     Constructs a coordinate operation factory using the specified hints.
public  DefaultCoordinateOperationFactory(Hints userHints, int priority)
     Constructs a coordinate operation factory using the specified hints and priority.

Method Summary
protected  CoordinateOperationcreateFromDatabase(CoordinateReferenceSystem sourceCRS, CoordinateReferenceSystem targetCRS)
     If the coordinate operation is explicitly defined in some database (typically EPSG), returns it.
public  CoordinateOperationcreateOperation(CoordinateReferenceSystem sourceCRS, CoordinateReferenceSystem targetCRS)
     Returns an operation for conversion or transformation between two coordinate reference systems.
public  CoordinateOperationcreateOperation(CoordinateReferenceSystem sourceCRS, CoordinateReferenceSystem targetCRS, OperationMethod method)
     Returns an operation using a particular method for conversion or transformation between two coordinate reference systems. If the operation exists on the implementation, then it is returned. If the operation does not exist on the implementation, then the implementation has the option of inferring the operation from the argument objects. If for whatever reason the specified operation will not be returned, then the exception is thrown.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system.
Parameters:
  method - the algorithmic method for conversion or transformation
throws:
  OperationNotFoundException - if no operation path was found from sourceCRS to targetCRS .
throws:
  FactoryException - if the operation creation failed for some other reason.
protected  CoordinateOperationcreateOperationStep(TemporalCRS sourceCRS, TemporalCRS targetCRS)
     Creates an operation between two temporal coordinate reference systems. The default implementation checks if both CRS use the same datum, and then adjusts for axis direction, units and epoch.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system.
protected  CoordinateOperationcreateOperationStep(VerticalCRS sourceCRS, VerticalCRS targetCRS)
     Creates an operation between two vertical coordinate reference systems. The default implementation checks if both CRS use the same datum, and then adjusts for axis direction and units.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system.
protected  CoordinateOperationcreateOperationStep(GeographicCRS sourceCRS, VerticalCRS targetCRS)
     Creates an operation between a geographic and a vertical coordinate reference systems. The default implementation accepts the conversion only if the geographic CRS is a tri dimensional one and the vertical CRS is for .
protected  CoordinateOperationcreateOperationStep(GeographicCRS sourceCRS, GeographicCRS targetCRS)
     Creates an operation between two geographic coordinate reference systems.
protected  CoordinateOperationcreateOperationStep(ProjectedCRS sourceCRS, ProjectedCRS targetCRS)
     Creates an operation between two projected coordinate reference systems. The default implementation can adjust axis order and orientation.
protected  CoordinateOperationcreateOperationStep(GeographicCRS sourceCRS, ProjectedCRS targetCRS)
     Creates an operation from a geographic to a projected coordinate reference system. The default implementation constructs the following operation chain:
 sourceCRS  →  
   →  targetCRS
 
where the conversion from baseCRS to targetCRS is obtained from targetCRS. .
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system.
protected  CoordinateOperationcreateOperationStep(ProjectedCRS sourceCRS, GeographicCRS targetCRS)
     Creates an operation from a projected to a geographic coordinate reference system. The default implementation constructs the following operation chain:
 sourceCRS  →  
   →  targetCRS
 
where the conversion from sourceCRS to baseCRS is obtained from the inverse of sourceCRS. .
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system.
protected  CoordinateOperationcreateOperationStep(GeocentricCRS sourceCRS, GeocentricCRS targetCRS)
     Creates an operation between two geocentric coordinate reference systems. The default implementation can adjust for axis order and orientation, performs units conversion and apply Bursa Wolf transformation if needed.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system.
protected  CoordinateOperationcreateOperationStep(GeographicCRS sourceCRS, GeocentricCRS targetCRS)
     Creates an operation from a geographic to a geocentric coordinate reference systems. If the source CRS doesn't have a vertical axis, height above the ellipsoid will be assumed equals to zero everywhere.
protected  CoordinateOperationcreateOperationStep(GeocentricCRS sourceCRS, GeographicCRS targetCRS)
     Creates an operation from a geocentric to a geographic coordinate reference systems. The default implementation use the "Geocentric_To_Ellipsoid" math transform.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system.
protected  CoordinateOperationcreateOperationStep(CompoundCRS sourceCRS, SingleCRS targetCRS)
     Creates an operation from a compound to a single coordinate reference systems.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system.
protected  CoordinateOperationcreateOperationStep(SingleCRS sourceCRS, CompoundCRS targetCRS)
     Creates an operation from a single to a compound coordinate reference system.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system.
protected  CoordinateOperationcreateOperationStep(CompoundCRS sourceCRS, CompoundCRS targetCRS)
     Creates an operation between two compound coordinate reference systems.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system.

Field Detail
PRIORITY
final static int PRIORITY(Code)
The priority level for this factory.




Constructor Detail
DefaultCoordinateOperationFactory
public DefaultCoordinateOperationFactory()(Code)
Constructs a coordinate operation factory using the default factories.



DefaultCoordinateOperationFactory
public DefaultCoordinateOperationFactory(Hints userHints)(Code)
Constructs a coordinate operation factory using the specified hints. This constructor recognizes the Hints.CRS_FACTORY CRS , Hints.CS_FACTORY CS , Hints.DATUM_FACTORY DATUM and Hints.MATH_TRANSFORM_FACTORY MATH_TRANSFORM FACTORY hints.
Parameters:
  userHints - The hints, or null if none.



DefaultCoordinateOperationFactory
public DefaultCoordinateOperationFactory(Hints userHints, int priority)(Code)
Constructs a coordinate operation factory using the specified hints and priority. This constructor recognizes the Hints.CRS_FACTORY CRS , Hints.CS_FACTORY CS , Hints.DATUM_FACTORY DATUM and Hints.MATH_TRANSFORM_FACTORY MATH_TRANSFORM FACTORY hints.
Parameters:
  userHints - The hints, or null if none.
Parameters:
  priority - The priority for this factory, as a number betweenDefaultCoordinateOperationFactory.MINIMUM_PRIORITY MINIMUM_PRIORITY andDefaultCoordinateOperationFactory.MAXIMUM_PRIORITY MAXIMUM_PRIORITY inclusive.
since:
   2.2




Method Detail
createFromDatabase
protected CoordinateOperation createFromDatabase(CoordinateReferenceSystem sourceCRS, CoordinateReferenceSystem targetCRS)(Code)
If the coordinate operation is explicitly defined in some database (typically EPSG), returns it. Otherwise (if there is no database, or if the database doesn't contains an explicit operation from sourceCRS to targetCRS , or if this method failed to create an operation from the database), returns null .

The default implementation always returns null , since there is no database connected to a DefaultCoordinateOperationFactory instance. In other words, the default implementation is "standalone": it tries to figure out transformation paths by itself. Subclasses should override this method if they can fetch a more accurate operation from some database. The mean subclass doing so is AuthorityBackedFactory .

This method is invoked by (sourceCRS, targetCRS) before to try to figure out a transformation path by itself. It is also invoked by various createOperationStep(...) methods when an intermediate CRS was obtained by GeneralDerivedCRS.getBaseCRS (this case occurs especially during from/to CRS operations). This method is not invoked for synthetic CRS generated by createOperationStep(...) , since those temporary CRS are not expected to exist in a database.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS if and only ifone is explicitly defined in some underlying database, or null otherwise.
since:
   2.3




createOperation
public CoordinateOperation createOperation(CoordinateReferenceSystem sourceCRS, CoordinateReferenceSystem targetCRS) throws OperationNotFoundException, FactoryException(Code)
Returns an operation for conversion or transformation between two coordinate reference systems. If an operation exists, it is returned. If more than one operation exists, the default is returned. If no operation exists, then the exception is thrown.

The default implementation inspects the CRS and delegates the work to one or many createOperationStep(...) methods. This method fails if no path between the CRS is found.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS .
throws:
  OperationNotFoundException - if no operation path was found from sourceCRS to targetCRS .
throws:
  FactoryException - if the operation creation failed for some other reason.




createOperation
public CoordinateOperation createOperation(CoordinateReferenceSystem sourceCRS, CoordinateReferenceSystem targetCRS, OperationMethod method) throws OperationNotFoundException, FactoryException(Code)
Returns an operation using a particular method for conversion or transformation between two coordinate reference systems. If the operation exists on the implementation, then it is returned. If the operation does not exist on the implementation, then the implementation has the option of inferring the operation from the argument objects. If for whatever reason the specified operation will not be returned, then the exception is thrown.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system.
Parameters:
  method - the algorithmic method for conversion or transformation
throws:
  OperationNotFoundException - if no operation path was found from sourceCRS to targetCRS .
throws:
  FactoryException - if the operation creation failed for some other reason. method



createOperationStep
protected CoordinateOperation createOperationStep(TemporalCRS sourceCRS, TemporalCRS targetCRS) throws FactoryException(Code)
Creates an operation between two temporal coordinate reference systems. The default implementation checks if both CRS use the same datum, and then adjusts for axis direction, units and epoch.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS .
throws:
  FactoryException - If the operation can't be constructed.



createOperationStep
protected CoordinateOperation createOperationStep(VerticalCRS sourceCRS, VerticalCRS targetCRS) throws FactoryException(Code)
Creates an operation between two vertical coordinate reference systems. The default implementation checks if both CRS use the same datum, and then adjusts for axis direction and units.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS .
throws:
  FactoryException - If the operation can't be constructed.



createOperationStep
protected CoordinateOperation createOperationStep(GeographicCRS sourceCRS, VerticalCRS targetCRS) throws FactoryException(Code)
Creates an operation between a geographic and a vertical coordinate reference systems. The default implementation accepts the conversion only if the geographic CRS is a tri dimensional one and the vertical CRS is for . More elaborated operation, like transformation from ellipsoidal to geoidal height, should be implemented here.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS .
throws:
  FactoryException - If the operation can't be constructed.



createOperationStep
protected CoordinateOperation createOperationStep(GeographicCRS sourceCRS, GeographicCRS targetCRS) throws FactoryException(Code)
Creates an operation between two geographic coordinate reference systems. The default implementation can adjust axis order and orientation (e.g. transforming from (NORTH,WEST) to (EAST,NORTH) ), performs units conversion and apply datum shifts if needed.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS .
throws:
  FactoryException - If the operation can't be constructed.



createOperationStep
protected CoordinateOperation createOperationStep(ProjectedCRS sourceCRS, ProjectedCRS targetCRS) throws FactoryException(Code)
Creates an operation between two projected coordinate reference systems. The default implementation can adjust axis order and orientation. It also performs units conversion if it is the only extra change needed. Otherwise, it performs three steps:
  • Unproject from sourceCRS to its base .
  • Convert the source to target base geographic CRS.
  • Project from the base to the targetCRS .

Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS .
throws:
  FactoryException - If the operation can't be constructed.



createOperationStep
protected CoordinateOperation createOperationStep(GeographicCRS sourceCRS, ProjectedCRS targetCRS) throws FactoryException(Code)
Creates an operation from a geographic to a projected coordinate reference system. The default implementation constructs the following operation chain:
 sourceCRS  →  
   →  targetCRS
 
where the conversion from baseCRS to targetCRS is obtained from targetCRS. .
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS .
throws:
  FactoryException - If the operation can't be constructed.



createOperationStep
protected CoordinateOperation createOperationStep(ProjectedCRS sourceCRS, GeographicCRS targetCRS) throws FactoryException(Code)
Creates an operation from a projected to a geographic coordinate reference system. The default implementation constructs the following operation chain:
 sourceCRS  →  
   →  targetCRS
 
where the conversion from sourceCRS to baseCRS is obtained from the inverse of sourceCRS. .
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS .
throws:
  FactoryException - If the operation can't be constructed.



createOperationStep
protected CoordinateOperation createOperationStep(GeocentricCRS sourceCRS, GeocentricCRS targetCRS) throws FactoryException(Code)
Creates an operation between two geocentric coordinate reference systems. The default implementation can adjust for axis order and orientation, performs units conversion and apply Bursa Wolf transformation if needed.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS .
throws:
  FactoryException - If the operation can't be constructed.



createOperationStep
protected CoordinateOperation createOperationStep(GeographicCRS sourceCRS, GeocentricCRS targetCRS) throws FactoryException(Code)
Creates an operation from a geographic to a geocentric coordinate reference systems. If the source CRS doesn't have a vertical axis, height above the ellipsoid will be assumed equals to zero everywhere. The default implementation uses the "Ellipsoid_To_Geocentric" math transform.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS .
throws:
  FactoryException - If the operation can't be constructed.



createOperationStep
protected CoordinateOperation createOperationStep(GeocentricCRS sourceCRS, GeographicCRS targetCRS) throws FactoryException(Code)
Creates an operation from a geocentric to a geographic coordinate reference systems. The default implementation use the "Geocentric_To_Ellipsoid" math transform.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS .
throws:
  FactoryException - If the operation can't be constructed.



createOperationStep
protected CoordinateOperation createOperationStep(CompoundCRS sourceCRS, SingleCRS targetCRS) throws FactoryException(Code)
Creates an operation from a compound to a single coordinate reference systems.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS .
throws:
  FactoryException - If the operation can't be constructed. sourceCRS sourceCRS



createOperationStep
protected CoordinateOperation createOperationStep(SingleCRS sourceCRS, CompoundCRS targetCRS) throws FactoryException(Code)
Creates an operation from a single to a compound coordinate reference system.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS .
throws:
  FactoryException - If the operation can't be constructed.



createOperationStep
protected CoordinateOperation createOperationStep(CompoundCRS sourceCRS, CompoundCRS targetCRS) throws FactoryException(Code)
Creates an operation between two compound coordinate reference systems.
Parameters:
  sourceCRS - Input coordinate reference system.
Parameters:
  targetCRS - Output coordinate reference system. A coordinate operation from sourceCRS to targetCRS .
throws:
  FactoryException - If the operation can't be constructed.



Fields inherited from org.geotools.referencing.operation.AbstractCoordinateOperationFactory
final protected static ReferenceIdentifier AXIS_CHANGES(Code)(Java Doc)
final protected static ReferenceIdentifier DATUM_SHIFT(Code)(Java Doc)
final protected static ReferenceIdentifier ELLIPSOID_SHIFT(Code)(Java Doc)
final protected static ReferenceIdentifier GEOCENTRIC_CONVERSION(Code)(Java Doc)
final protected static ReferenceIdentifier IDENTITY(Code)(Java Doc)
final protected static ReferenceIdentifier INVERSE_OPERATION(Code)(Java Doc)

Methods inherited from org.geotools.referencing.operation.AbstractCoordinateOperationFactory
protected CoordinateOperation concatenate(CoordinateOperation step1, CoordinateOperation step2) throws FactoryException(Code)(Java Doc)
protected CoordinateOperation concatenate(CoordinateOperation step1, CoordinateOperation step2, CoordinateOperation step3) throws FactoryException(Code)(Java Doc)
public CoordinateOperation createConcatenatedOperation(Map properties, CoordinateOperation[] operations) throws FactoryException(Code)(Java Doc)
public Conversion createDefiningConversion(Map properties, OperationMethod method, ParameterValueGroup parameters) throws FactoryException(Code)(Java Doc)
protected CoordinateOperation createFromAffineTransform(ReferenceIdentifier name, CoordinateReferenceSystem sourceCRS, CoordinateReferenceSystem targetCRS, Matrix matrix) throws FactoryException(Code)(Java Doc)
protected CoordinateOperation createFromMathTransform(ReferenceIdentifier name, CoordinateReferenceSystem sourceCRS, CoordinateReferenceSystem targetCRS, MathTransform transform) throws FactoryException(Code)(Java Doc)
protected CoordinateOperation createFromMathTransform(Map properties, CoordinateReferenceSystem sourceCRS, CoordinateReferenceSystem targetCRS, MathTransform transform, OperationMethod method, Class type) throws FactoryException(Code)(Java Doc)
protected CoordinateOperation createFromParameters(ReferenceIdentifier name, CoordinateReferenceSystem sourceCRS, CoordinateReferenceSystem targetCRS, ParameterValueGroup parameters) throws FactoryException(Code)(Java Doc)
protected static void ensureNonNull(String name, Object object) throws IllegalArgumentException(Code)(Java Doc)
static boolean equalsIgnoreMetadata(IdentifiedObject object1, IdentifiedObject object2)(Code)(Java Doc)
static int getDimension(CoordinateReferenceSystem crs)(Code)(Java Doc)
protected static String getErrorMessage(IdentifiedObject source, IdentifiedObject target)(Code)(Java Doc)
final FactoryGroup getFactoryGroup()(Code)(Java Doc)
public Map getImplementationHints()(Code)(Java Doc)
final public MathTransformFactory getMathTransformFactory()(Code)(Java Doc)
static Map getTemporaryName(IdentifiedObject source)(Code)(Java Doc)
static Map getTemporaryName(CoordinateReferenceSystem source, CoordinateReferenceSystem target)(Code)(Java Doc)
void initializeHints()(Code)(Java Doc)
protected CoordinateOperation inverse(CoordinateOperation operation) throws NoninvertibleTransformException, FactoryException(Code)(Java Doc)
protected Matrix swapAndScaleAxis(CoordinateSystem sourceCS, CoordinateSystem targetCS) throws OperationNotFoundException(Code)(Java Doc)

www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.