<?xml version="1.0" encoding="utf-8"?>
<!--

  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

-->
<s:SplashScreenImage xmlns:fx="http://ns.adobe.com/mxml/2009"
					 xmlns:s="library://ns.adobe.com/flex/spark">
	
	
	<fx:Script>
		<![CDATA[
			
			[Embed("../../../../Assets/Images/bluerect.jpg")]
			private var andImage:Class;
			
			override public function getImageClass(aspectRatio:String, dpi:Number, resolution:Number):Class
			{
				// Are we running on IOS ?
				
				if (Capabilities.version.indexOf("IOS") == 0)
					return andImage;
				
				return super.getImageClass(aspectRatio, dpi, resolution);
			}
		]]>
	</fx:Script>
	<!-- no settings, so this acts as default-->
	<s:SplashScreenImageSource source="@Embed('../../../../Assets/Images/unknown.jpg')"/>
	<!-- specific settings  -->
	<s:SplashScreenImageSource source="@Embed('../../../../Assets/Images/orangerect.jpg')"
							   dpi="160" minResolution="0"/>
	<s:SplashScreenImageSource source="@Embed('../../../../Assets/Images/yellowrect.jpg')"
							   dpi="160" minResolution="500"/>
	
	<s:SplashScreenImageSource source="@Embed('../../../../Assets/Images/yellowrect.jpg')"
							   dpi="160" minResolution="1000" aspectRatio="portrait"/>
	<s:SplashScreenImageSource source="@Embed('../../../../Assets/Images/yellowrect.jpg')"
							   dpi="240" aspectRatio="portrait"/>
	
	<s:SplashScreenImageSource source="@Embed('../../../../Assets/Images/redrect.jpg')"
							   dpi="240" aspectRatio="landscape"/>
	<s:SplashScreenImageSource source="@Embed('../../../../Assets/Images/redrect.jpg')"
							   dpi="320"/>
	
</s:SplashScreenImage>