123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Xamarin.Forms;
- using Xamarin.Forms.Xaml;
- namespace comal.timesheets
- {
- public class SignatureEditorChangedEventArgs : EventArgs
- {
- }
- public delegate void SignatureEditorChangedEvent(object sender, SignatureEditorChangedEventArgs args);
-
- [XamlCompilation(XamlCompilationOptions.Compile)]
- public partial class SignatureEditor
- {
- public event SignatureEditorChangedEvent Changed;
- public void Load(byte[] data)
- {
- if (data?.Any() == true)
- {
- signaturePad.IsVisible = false;
- _preview.Source = ImageSource.FromStream(() => { return new MemoryStream(data); });
- _preview.IsVisible = true;
- }
- else
- {
- _preview.IsVisible = false;
- _preview.Source = null;
- signaturePad.IsVisible = true;
- signaturePad.Clear();
- }
- }
- public byte[] Save()
- {
- signaturePad.Save();
- if (signaturePad.ImageSource is StreamImageSource source)
- {
- Task<Stream> task = source.Stream(System.Threading.CancellationToken.None);
- Stream stream = task.Result;
- byte[] bytes = new byte[stream.Length];
- stream.Read(bytes, 0, bytes.Length);
- return bytes;
- }
- return new byte[] { };
- }
-
- public SignatureEditor()
- {
- InitializeComponent();
- Load(null);
- }
- private void SignaturePad_OnStrokeCompleted(object sender, EventArgs e)
- {
- Changed?.Invoke(this,new SignatureEditorChangedEventArgs());
- }
-
- }
- }
|