 	
 	/**
 	 * This object defines the data bounds of a visualization, either directly with
-	 * absolute coordinates or indirectly with center coordinates and a scale value.
+	 * absolute coordinates or indirectly with center coordinates and area.
 	 * Screen coordinates are never directly specified in the session state.
 	 * 
 	 * @author adufilie


package weave.primitives
{
	import weave.api.WeaveAPI;
	import weave.api.core.ICallbackCollection;
	import weave.api.core.ILinkableObject;

			}
			else
			{
				var useFixedAspectRatio:Boolean = false;
				if (state.hasOwnProperty("xCenter"))
				{
					useFixedAspectRatio = true;
					if (MathLib.roundSignificant(_dataBounds.getXCenter()) != state.xCenter)
					{
						_dataBounds.setXCenter(state.xCenter);
						cc.triggerCallbacks();
					}
				}
				if (state.hasOwnProperty("yCenter"))
				{
					useFixedAspectRatio = true;
					if (MathLib.roundSignificant(_dataBounds.getYCenter()) != state.yCenter)
					{
						_dataBounds.setYCenter(state.yCenter);
						cc.triggerCallbacks();
					}
				}
				if (state.hasOwnProperty("area"))
				{
					useFixedAspectRatio = true;
					if (MathLib.roundSignificant(_dataBounds.getArea()) != state.area)
					{
						// We can't change the screen area.  Adjust the dataBounds to match the specified area.
						/*
							Ad = Wd * Hd
							Wd/Hd = Ws/Hs
							Wd = Hd * Ws/Hs
							Ad = Hd^2 * Ws/Hs
							Hd^2 = Ad * Hs/Ws
							Hd = sqrt(Ad * Hs/Ws)
						*/
						
						var Ad:Number = state.area;
						var HsWsRatio:Number = _screenBounds.getYCoverage() / _screenBounds.getXCoverage();
						if (!isFinite(HsWsRatio)) // handle case if screenBounds is undefined
							HsWsRatio = 1;
						var Hd:Number = Math.sqrt(Ad * HsWsRatio);
						var Wd:Number = Ad / Hd;
						_dataBounds.centeredResize(Wd, Hd);
						cc.triggerCallbacks();
					}
				}
				
				if (!useFixedAspectRatio)
				{
					var names:Array = ["xMin", "yMin", "xMax", "yMax"];
					for each (var name:String in names)
