<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:controls="com.cynergysystems.*"
layout="absolute" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import com.cynergysystems.FaultUtil;
import mx.rpc.events.FaultEvent;
import mx.utils.Base64Encoder;
import com.cynergysystems.JPEGEncoder;
import mx.controls.Alert;
import mx.core.UIComponent;
private function onColorChange() : void
{
paintCanvas.color = colorPicker.selectedColor;
}
private function save() : void
{
saveButton.enabled = false;
var bd : BitmapData = getUIComponentBitmapData( paintCanvas );
var encoder : JPEGEncoder = new JPEGEncoder(75);
var data : ByteArray = encoder.encode( bd );
switch (method.selectedIndex)
{
case 0:
ro.ROsave( data );
break;
case 1:
ws.WSsave( base64Encode( data ) );
break;
case 2:
var params : Object = { data : base64Encode( data ) };
hs.send( params );
break;
}
}
private function onResult( message : String ) : void
{
Alert.show(message);
saveButton.enabled = true;
}
private function onFault( event : FaultEvent ) : void
{
Alert.show("Server Fault");
trace( FaultUtil.toString( event.fault ) );
saveButton.enabled = true;
}
private function getUIComponentBitmapData( target : UIComponent ) : BitmapData
{
var bd : BitmapData = new BitmapData( target.width, target.height );
var m : Matrix = new Matrix();
bd.draw( target, m );
return bd;
}
private function base64Encode( data : ByteArray ) : String
{
var encoder : Base64Encoder = new Base64Encoder();
encoder.encodeBytes( data );
return encoder.flush();
}
]]>
</mx:Script>
<mx:RemoteObject
id="ro"
showBusyCursor="true"
destination="ColdFusion"
source="BinaryData.cf.ImageSave">
<mx:method name="ROsave" result="onResult('Data Saved via mx:RemoteObject')" fault="onFault(event)" />
</mx:RemoteObject>
<mx:WebService
id="ws"
showBusyCursor="true"
wsdl="/BinaryData/cf/ImageSave.cfc?wsdl">
<mx:operation name="WSsave" result="onResult('Data Saved via mx:WebService')" fault="onFault(event)" />
</mx:WebService>
<mx:HTTPService
id="hs"
showBusyCursor="true"
useProxy="false"
method="POST"
resultFormat="text"
url="/BinaryData/cf/HTTPImageSave.cfm" result="onResult('Data Saved via mx:HTTPService')" fault="onFault(event)" />
<mx:Panel title="Paint!"
clipContent="true"
x="10" y="10" width="350" height="350" >
<controls:PaintCanvas width="100%" height="100%" id="paintCanvas" thickness="10" />
<mx:ControlBar>
<mx:ColorPicker selectedColor="#000000" change="onColorChange()" id="colorPicker" />
<mx:Button label="Clear" click="paintCanvas.clear()" />
<mx:Spacer width="100%" />
<mx:ComboBox id="method" dataProvider="[ 'RemoteObject', 'WebService', 'HTTPService' ]" />
<mx:Button label="Save" click="save()" id="saveButton" />
</mx:ControlBar>
</mx:Panel>
</mx:Application>