private void postSnapshotEvent(int _placeHolder, Size _imageSize, int _format, int _returnCode) { Memory eventData = new Memory(20); const int MAEventData_eventType = 0; const int MAEventData_snapshotImageDataHandle = 4; const int MAEventData_snapshotSize = 8; const int MAEventData_snapshotImageDataRepresentation = 12; const int MAEventData_snapshotReturnCode = 16; // type eventData.WriteInt32(MAEventData_eventType, MoSync.Constants.EVENT_TYPE_CAMERA_SNAPSHOT); // handle eventData.WriteInt32(MAEventData_snapshotImageDataHandle, _placeHolder); // size eventData.WriteInt32(MAEventData_snapshotSize, MoSync.Util.CreateExtent(Convert.ToInt32(_imageSize.Width), Convert.ToInt32(_imageSize.Height))); // format eventData.WriteInt32(MAEventData_snapshotImageDataRepresentation, _format); // return code eventData.WriteInt32(MAEventData_snapshotReturnCode, _returnCode); mRuntime.PostEvent(new Event(eventData)); }
/* * Occurs when a Chooser task is completed. * @param sender The object that triggered the event. * @param e The result containing the image selected by the user. */ private void PhotoChooserTaskCompleted(object sender, PhotoResult e) { photoTaskStarted = false; Memory eventData = new Memory(12); const int MAWidgetEventData_eventType = 0; const int MAWidgetEventData_imagePickerState = 4; const int MAWidgetEventData_imageHandle = 8; eventData.WriteInt32(MAWidgetEventData_eventType, MoSync.Constants.EVENT_TYPE_IMAGE_PICKER); if (e.TaskResult == TaskResult.OK) { // the user has selected an image -> the image picker state will be 1 - ok eventData.WriteInt32(MAWidgetEventData_imagePickerState, 1); // get a bitmap of the image selected by the user using the Image Picker BitmapImage img = new BitmapImage(); img.SetSource(e.ChosenPhoto); // The AddResource returns an int - the image handle that's sent with the event data eventData.WriteInt32(MAWidgetEventData_imageHandle, runtimeReference.AddResource( new Resource(img, MoSync.Constants.RT_IMAGE))); } else { // the user has canceled the image selection -> the image picker state will be 0 - cancel eventData.WriteInt32(MAWidgetEventData_imagePickerState, 0); } runtimeReference.PostEvent(new Event(eventData)); }
/* * Occurs when a Chooser task is completed. * @param sender The object that triggered the event. * @param e The result containing the image selected by the user. */ private void PhotoChooserTaskCompleted(object sender, PhotoResult e) { photoTaskStarted = false; Memory eventData = new Memory(16); const int MAWidgetEventData_eventType = 0; const int MAWidgetEventData_imagePickerState = 4; const int MAWidgetEventData_imageHandle = 8; const int MAWidgetEventData_imageEncoding = 12; eventData.WriteInt32(MAWidgetEventData_eventType, MoSync.Constants.EVENT_TYPE_IMAGE_PICKER); if (e.TaskResult == TaskResult.OK) { // the user has selected an image -> the image picker state will be 1 - ok eventData.WriteInt32(MAWidgetEventData_imagePickerState, 1); // get a bitmap of the image selected by the user using the Image Picker BitmapImage img = new BitmapImage(); img.SetSource(e.ChosenPhoto); switch (eventType) { case MoSync.Constants.MA_IMAGE_PICKER_EVENT_RETURN_TYPE_IMAGE_DATA: // We create a memory stream that will contain the bitmap image // with jpeg encoding MemoryStream memoryStream = new MemoryStream(); WriteableBitmap writableBitmap = new WriteableBitmap(img); writableBitmap.SaveJpeg(memoryStream, img.PixelWidth, img.PixelHeight, 0, 100); eventData.WriteInt32(MAWidgetEventData_imageHandle, runtimeReference.AddResource( new Resource(memoryStream, MoSync.Constants.RT_BINARY, true))); break; default: // The AddResource returns an int - the image handle that's sent with the event data eventData.WriteInt32(MAWidgetEventData_imageHandle, runtimeReference.AddResource( new Resource(img, MoSync.Constants.RT_IMAGE))); break; } eventData.WriteInt32(MAWidgetEventData_imageEncoding, MoSync.Constants.MA_IMAGE_PICKER_ITEM_ENCODING_JPEG); } else { // the user has canceled the image selection -> the image picker state will be 0 - cancel eventData.WriteInt32(MAWidgetEventData_imagePickerState, 0); } runtimeReference.PostEvent(new Event(eventData)); }