package com.imt.intimamedia.commands.acquire { import com.adobe.cairngorm.control.CairngormEvent; import com.imt.flex.cairngormExtended.command.SuperCommand; import com.imt.flex.cairngormExtended.event.ChainEvent; import com.imt.intimamedia.business.AcquisitionDelegate; import com.imt.intimamedia.events.acquire.SaveImageEvent; import com.imt.intimamedia.model.ApplicationModelLocator; import com.imt.intimamedia.views.common.ImtToaster; import com.imt.intimamedia.views.physician.acquire.AcquireView; import com.imt.intimamedia.vo.DragAndDropVo; import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Matrix; import flash.utils.ByteArray; import mx.controls.Alert; import mx.graphics.codec.JPEGEncoder; import mx.resources.ResourceManager; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; /** * Commande de sauvegarde des images */ public class SaveImageCommand extends SuperCommand { [Bindable] private var _model : ApplicationModelLocator = ApplicationModelLocator.getInstance(); private var _dispatcher : AcquireView; /** * Execution de la commande * * @param event Evénement de type CairngormEvent * @return void */ override public function execute( event : CairngormEvent ) : void { super.execute( event ); var delegate : AcquisitionDelegate = new AcquisitionDelegate( this ); var saveImageEvent : SaveImageEvent = SaveImageEvent( event ); var img : Bitmap = saveImageEvent.dragAndDropVo.imageHigh; var jpg : JPEGEncoder = new JPEGEncoder(); var bitmapDataHigh : BitmapData = new BitmapData(saveImageEvent.dragAndDropVo.imageHigh.width,saveImageEvent.dragAndDropVo.imageHigh.height); bitmapDataHigh.draw(saveImageEvent.dragAndDropVo.imageHigh,new Matrix()); var byteArrayHigh : ByteArray = jpg.encode( bitmapDataHigh ); var bitmapDataLow : BitmapData = new BitmapData(saveImageEvent.dragAndDropVo.imageSmall.width,saveImageEvent.dragAndDropVo.imageSmall.height); // CJ 04092015 : Refonte de Resize var mat:Matrix = new Matrix(); mat.scale(saveImageEvent.dragAndDropVo.imageSmall.width/saveImageEvent.dragAndDropVo.imageHigh.width, saveImageEvent.dragAndDropVo.imageSmall.height/saveImageEvent.dragAndDropVo.imageHigh.height); bitmapDataLow.draw(saveImageEvent.dragAndDropVo.imageHigh, mat, null, null, null, true); // Avant // bitmapDataLow.draw(saveImageEvent.dragAndDropVo.imageSmall,new Matrix()); var byteArrayLow : ByteArray = jpg.encode( bitmapDataLow ); // Alert.show("Largeur Image : " + saveImageEvent.dragAndDropVo.imageHigh.width.toString() + "Hauteur Image : " + saveImageEvent.dragAndDropVo.imageHigh.height.toString()); delegate.saveImage( saveImageEvent.dragAndDropVo, saveImageEvent.appointment, byteArrayHigh, byteArrayLow ); _dispatcher = this.getDispatcher(this); } /** * Résultat de la commande * * @param result Un objet * @return void */ override public function result( result : Object ) : void { var resultEvent : ResultEvent = ResultEvent( result ); _dispatcher.loadingPopUp.message = ResourceManager.getInstance().getString( "labels", "acquire.popUp.transfert.images.done"); _dispatcher.loadingPopUp.progress.setProgress( 80, 100 ); _dispatcher.saveImageEnded(result.result as int); super.result( result ); } /** * Résultat de la commande * * @param result Un objet * @return void */ override public function fault( fault : Object ) : void { super.fault( fault ); _dispatcher.removeImageFromError(); if (( fault as FaultEvent ).fault.faultString == ApplicationModelLocator.getInstance().ERROR_SESSION ) { ApplicationModelLocator.displaySessionExpired( fault as FaultEvent ); } else { var toastMessage : ImtToaster = new ImtToaster(); toastMessage.titleMessage = ResourceManager.getInstance().getString('labels', 'error.title'); toastMessage.message = ResourceManager.getInstance().getString('labels', 'error.saveImage'); toastMessage.level = ImtToaster.ERROR; _model.toaster.toast( toastMessage ); } } } }