diff --git a/FullScreen-Version/MediaFrameQrProcessing/.vs/MediaFrameQrProcessing/v15/.suo b/FullScreen-Version/MediaFrameQrProcessing/.vs/MediaFrameQrProcessing/v15/.suo index 59170b33..20fa1491 100644 Binary files a/FullScreen-Version/MediaFrameQrProcessing/.vs/MediaFrameQrProcessing/v15/.suo and b/FullScreen-Version/MediaFrameQrProcessing/.vs/MediaFrameQrProcessing/v15/.suo differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/.vs/MediaFrameQrProcessing/v15/Server/sqlite3/storage.ide b/FullScreen-Version/MediaFrameQrProcessing/.vs/MediaFrameQrProcessing/v15/Server/sqlite3/storage.ide index 6365966f..d2d8e363 100644 Binary files a/FullScreen-Version/MediaFrameQrProcessing/.vs/MediaFrameQrProcessing/v15/Server/sqlite3/storage.ide and b/FullScreen-Version/MediaFrameQrProcessing/.vs/MediaFrameQrProcessing/v15/Server/sqlite3/storage.ide differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/Entities/ActiDetectedWord.cs b/FullScreen-Version/MediaFrameQrProcessing/Entities/ActiDetectedWord.cs index 40c5106c..a674a002 100644 --- a/FullScreen-Version/MediaFrameQrProcessing/Entities/ActiDetectedWord.cs +++ b/FullScreen-Version/MediaFrameQrProcessing/Entities/ActiDetectedWord.cs @@ -1,4 +1,6 @@ -namespace MediaFrameQrProcessing.Entities +using Windows.Media.Ocr; + +namespace MediaFrameQrProcessing.Entities { public class ActiDetectedWord { @@ -18,6 +20,16 @@ public ActiDetectedWord(string originalText, double posX, double posY, double wi _width = width; _exactMatch = exactMatch; } + + public ActiDetectedWord(OcrWord word, bool exactMatch = false) + { + _originalText = word.Text; + _posX = word.BoundingRect.X; + _posY = word.BoundingRect.Y; + _height = word.BoundingRect.Height; + _width = word.BoundingRect.Width; + _exactMatch = exactMatch; + } public string DetectedWord => _originalText; public bool IsExactMatch() => _exactMatch; public float PosX => (float)_posX; diff --git a/FullScreen-Version/MediaFrameQrProcessing/Processors/MediaCaptureFrameProcessor.cs b/FullScreen-Version/MediaFrameQrProcessing/Processors/MediaCaptureFrameProcessor.cs index 34eaa78b..4656c10d 100644 --- a/FullScreen-Version/MediaFrameQrProcessing/Processors/MediaCaptureFrameProcessor.cs +++ b/FullScreen-Version/MediaFrameQrProcessing/Processors/MediaCaptureFrameProcessor.cs @@ -1,6 +1,7 @@ namespace MediaFrameQrProcessing.Processors { using System; + using System.Diagnostics; using System.Threading.Tasks; using VideoDeviceFinders; using Windows.Devices.Enumeration; @@ -10,73 +11,121 @@ public abstract class MediaCaptureFrameProcessor : IDisposable { - protected MediaCaptureFrameProcessor( - MediaFrameSourceFinder mediaFrameSourceFinder, - DeviceInformation videoDeviceInformation, - string mediaEncodingSubtype, - MediaCaptureMemoryPreference memoryPreference = MediaCaptureMemoryPreference.Cpu) + #region Attributes + private Action videoDeviceControllerInitialiser; + private readonly string mediaEncodingSubtype; + private readonly MediaFrameSourceFinder mediaFrameSourceFinder; + private readonly DeviceInformation videoDeviceInformation; + private readonly MediaCaptureMemoryPreference memoryPreference; + public MediaFrameReader mediaFastFrameReader { get; private set; } + private MediaCapture mediaCapture; + #endregion + + protected MediaCaptureFrameProcessor(MediaFrameSourceFinder mediaFrameSourceFinder, DeviceInformation videoDeviceInformation, string mediaEncodingSubtype, MediaCaptureMemoryPreference memoryPreference = MediaCaptureMemoryPreference.Cpu) { this.mediaFrameSourceFinder = mediaFrameSourceFinder; this.videoDeviceInformation = videoDeviceInformation; this.mediaEncodingSubtype = mediaEncodingSubtype; this.memoryPreference = memoryPreference; + this.mediaFastFrameReader = null; } - public void SetVideoDeviceControllerInitialiser( - Action initialiser) + + public void SetVideoDeviceControllerInitialiser(Action initialiser) { this.videoDeviceControllerInitialiser = initialiser; } + protected abstract Task ProcessFrameAsync(MediaFrameReference frameReference); + /// + /// Note: the natural thing to do here is what I used to do which is to create the + /// MediaCapture inside of a using block. + /// Problem is, that seemed to cause a situation where I could get a crash (AV) in + /// + /// Windows.Media.dll!Windows::Media::Capture::Frame::MediaFrameReader::CompletePendingStopOperation + /// + /// Which seemed to be related to stopping/disposing the MediaFrameReader and then + /// disposing the media capture immediately after. + /// + /// Right now, I've promoted the media capture to a member variable and held it around + /// and instead of creating/disposing an instance each time one instance is kept + /// indefinitely. + /// It's not what I wanted... + /// + /// + /// public async Task ProcessFramesAsync(TimeSpan timeout) { - // Note: the natural thing to do here is what I used to do which is to create the - // MediaCapture inside of a using block. - // Problem is, that seemed to cause a situation where I could get a crash (AV) in - // - // Windows.Media.dll!Windows::Media::Capture::Frame::MediaFrameReader::CompletePendingStopOperation - // - // Which seemed to be related to stopping/disposing the MediaFrameReader and then - // disposing the media capture immediately after. - // - // Right now, I've promoted the media capture to a member variable and held it around - // and instead of creating/disposing an instance each time one instance is kept - // indefinitely. - // It's not what I wanted... - - await Task.Run(async () => + try + { + await Task.Run(async () => + { + var startTime = DateTime.Now; + if (this.mediaCapture == null) + this.mediaCapture = await this.CreateMediaCaptureAsync(); + + var mediaFrameSource = this.mediaCapture.FrameSources[this.mediaFrameSourceFinder.FrameSourceInfo.Id]; + using (var frameReader = await this.mediaCapture.CreateFrameReaderAsync(mediaFrameSource, this.mediaEncodingSubtype)) + { + await frameReader.StartAsync(); + await this.ProcessFramesAsyncLoop(frameReader, timeout, startTime); + await frameReader.StopAsync(); + } + }); + }catch(Exception ex) { - var startTime = DateTime.Now; + Debug.WriteLine("Erreur : lors du traitement lent des images : " + ex); + } - if (this.mediaCapture == null) - this.mediaCapture = await this.CreateMediaCaptureAsync(); + } - var mediaFrameSource = this.mediaCapture.FrameSources[this.mediaFrameSourceFinder.FrameSourceInfo.Id]; - using (var frameReader = await this.mediaCapture.CreateFrameReaderAsync(mediaFrameSource, this.mediaEncodingSubtype)) - { - bool done = false; + public async Task CreateMediaFastFrameReader() + { + if (this.mediaCapture == null) this.mediaCapture = await this.CreateMediaCaptureAsync(); + var mediaFrameSource = this.mediaCapture.FrameSources[this.mediaFrameSourceFinder.FrameSourceInfo.Id]; + + if (mediaFastFrameReader == null) + { + mediaFastFrameReader = await this.mediaCapture.CreateFrameReaderAsync(mediaFrameSource, this.mediaEncodingSubtype); + await mediaFastFrameReader.StartAsync(); + } + } - await frameReader.StartAsync(); + public async Task DisposeMediaFastFrameReader() + { + if (mediaFastFrameReader != null) + { + await mediaFastFrameReader.StopAsync(); + mediaFastFrameReader.Dispose(); + mediaFastFrameReader = null; + } + } - while (!done) + /// + /// Iterates until a result is found or timeout + /// + /// + /// + /// + public async Task ProcessFramesAsyncLoop(MediaFrameReader frameReader, TimeSpan timeout, DateTime startTime) + { + bool done = false; + while (!done) + { + using (var frame = frameReader.TryAcquireLatestFrame()) + { + if (frame != null) { - using (var frame = frameReader.TryAcquireLatestFrame()) - { - if (frame != null) - { - done = await this.ProcessFrameAsync(frame); - } - } - if (!done) - { - done = (DateTime.Now - startTime) > timeout; - } + done = await this.ProcessFrameAsync(frame); } - await frameReader.StopAsync(); + } + if (!done) + { + done = (DateTime.Now - startTime) > timeout; } } - ); } + async Task CreateMediaCaptureAsync() { var settings = new MediaCaptureInitializationSettings() @@ -108,13 +157,8 @@ protected virtual void Dispose(bool disposing) this.mediaCapture.Dispose(); this.mediaCapture = null; } - } - Action videoDeviceControllerInitialiser; - readonly string mediaEncodingSubtype; - readonly MediaFrameSourceFinder mediaFrameSourceFinder; - readonly DeviceInformation videoDeviceInformation; - readonly MediaCaptureMemoryPreference memoryPreference; - MediaCapture mediaCapture; + DisposeMediaFastFrameReader().Wait(); + } } } \ No newline at end of file diff --git a/FullScreen-Version/MediaFrameQrProcessing/Processors/QrCaptureFrameProcessor.cs b/FullScreen-Version/MediaFrameQrProcessing/Processors/QrCaptureFrameProcessor.cs index d31c34e4..1b2998fc 100644 --- a/FullScreen-Version/MediaFrameQrProcessing/Processors/QrCaptureFrameProcessor.cs +++ b/FullScreen-Version/MediaFrameQrProcessing/Processors/QrCaptureFrameProcessor.cs @@ -31,6 +31,7 @@ await Task.Run(() => { try { + this.Result = null; Result zxingResult = ZXingQRCodeDecoder.DecodeBufferToQRCode(bitmap); if (zxingResult != null) diff --git a/FullScreen-Version/MediaFrameQrProcessing/Processors/WordFrameProcessor.cs b/FullScreen-Version/MediaFrameQrProcessing/Processors/WordFrameProcessor.cs index 8d0454a5..afbf338d 100644 --- a/FullScreen-Version/MediaFrameQrProcessing/Processors/WordFrameProcessor.cs +++ b/FullScreen-Version/MediaFrameQrProcessing/Processors/WordFrameProcessor.cs @@ -15,21 +15,20 @@ public class WordFrameProcessor : MediaCaptureFrameProcessor { - public List Result { get; private set; } - public readonly string RequestWord; - private OcrEngine m_OcrEngine; + public HashSet Result { get; private set; } + public string RequestWord { get; } + private static OcrEngine m_OcrEngine = OcrEngine.TryCreateFromUserProfileLanguages(); public WordFrameProcessor(string requestWord, MediaFrameSourceFinder mediaFrameSourceFinder, DeviceInformation videoDeviceInformation, string mediaEncodingSubtype, MediaCaptureMemoryPreference memoryPreference = MediaCaptureMemoryPreference.Cpu) : base(mediaFrameSourceFinder, videoDeviceInformation, mediaEncodingSubtype, memoryPreference) { - Result = new List(); + Result = new HashSet(); this.RequestWord = requestWord; } protected override async Task ProcessFrameAsync(MediaFrameReference frameReference) { - bool success = false; - Result?.Clear(); - + Boolean success = false; + // Takes at worst 60ms await Task.Run(async () => { // doc here https://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.media.capture.frames.videomediaframe.aspx @@ -38,28 +37,29 @@ await Task.Run(async () => { try { - if (this.m_OcrEngine == null) - this.m_OcrEngine = OcrEngine.TryCreateFromUserProfileLanguages(); - - OcrResult ocrResult = await this.m_OcrEngine.RecognizeAsync(bitmap); + + OcrResult ocrResult = await m_OcrEngine.RecognizeAsync(bitmap); + Result?.Clear(); if (ocrResult == null) - throw new NullReferenceException("Ocr Result is null"); + return; - foreach (OcrWord word in ocrResult.Lines.SelectMany(l => l.Words)) + foreach (OcrLine line in ocrResult.Lines) { - if ("quarante deux".Equals(RequestWord.ToLower())) - Result.Add(new ActiDetectedWord(word.Text, word.BoundingRect.X, word.BoundingRect.Y, word.BoundingRect.Width, word.BoundingRect.Height, false)); - else if (word.Text.ToLower().Equals(RequestWord.ToLower())) - Result.Add(new ActiDetectedWord(word.Text, word.BoundingRect.X, word.BoundingRect.Y, word.BoundingRect.Width, word.BoundingRect.Height, true)); - else if (word.Text.ToLower().Contains(RequestWord.ToLower())) - Result.Add(new ActiDetectedWord(word.Text, word.BoundingRect.X, word.BoundingRect.Y, word.BoundingRect.Width, word.BoundingRect.Height, true)); - else if (RequestWord.ToLower().Contains(word.Text.ToLower())) - Result.Add(new ActiDetectedWord(word.Text, word.BoundingRect.X, word.BoundingRect.Y, word.BoundingRect.Width, word.BoundingRect.Height, true)); - else if (LevenshteinDistance.Compute(RequestWord.ToLower(), word.Text.ToLower()) <= 2) - Result.Add(new ActiDetectedWord(word.Text, word.BoundingRect.X, word.BoundingRect.Y, word.BoundingRect.Width, word.BoundingRect.Height, false)); + foreach (OcrWord word in line.Words) + { + if ("quarante deux".Equals(RequestWord.ToLower())) + Result.Add(new ActiDetectedWord(word, false)); + else if (word.Text.ToLower().Equals(RequestWord.ToLower())) + Result.Add(new ActiDetectedWord(word, true)); + else if (word.Text.ToLower().Contains(RequestWord.ToLower())) + Result.Add(new ActiDetectedWord(word, true)); + else if (RequestWord.ToLower().Contains(word.Text.ToLower())) + Result.Add(new ActiDetectedWord(word, true)); + else if (LevenshteinDistance.Compute(RequestWord.ToLower(), word.Text.ToLower()) <= 2) + Result.Add(new ActiDetectedWord(word, false)); + } } - success = Result.Count > 0; } catch (Exception ex) diff --git a/FullScreen-Version/MediaFrameQrProcessing/Wrappers/WordScanner.cs b/FullScreen-Version/MediaFrameQrProcessing/Wrappers/WordScanner.cs index 57ad831c..a8193465 100644 --- a/FullScreen-Version/MediaFrameQrProcessing/Wrappers/WordScanner.cs +++ b/FullScreen-Version/MediaFrameQrProcessing/Wrappers/WordScanner.cs @@ -7,7 +7,6 @@ using System.Collections.Generic; using System.Diagnostics; using System.Threading.Tasks; - using Windows.Devices.Enumeration; using Windows.Media.MediaProperties; public static class WordScanner @@ -15,22 +14,19 @@ public static class WordScanner private static WordFrameProcessor m_FrameProcessor; /// - /// + /// Note - I keep this frame processor around which means keeping the + /// underlying MediaCapture around because when I didn't keep it + /// around I ended up with a crash in Windows.Media.dll related + /// to disposing of the MediaCapture. + /// So...this isn't what I wanted but it seems to work better :-( /// /// /// /// - public static async Task ScanFirstCameraForWords(Action> resultCallback, TimeSpan timeout, string requestWord) + public static async Task ScanFirstCameraForWords(Action> resultCallback, TimeSpan timeout, string requestWord) { - List result = null; - - // Note - I keep this frame processor around which means keeping the - // underlying MediaCapture around because when I didn't keep it - // around I ended up with a crash in Windows.Media.dll related - // to disposing of the MediaCapture. - // So...this isn't what I wanted but it seems to work better :-( - // We still need to update it case the word has changed, else it w + // We still need to update it case the word has changed, else it will keep the same word at each call if (m_FrameProcessor == null || !requestWord.Equals(m_FrameProcessor.RequestWord)) { var mediaFrameSourceFinder = new MediaFrameSourceFinder(); @@ -72,19 +68,24 @@ public static async Task ScanFirstCameraForWords(Action> // every frame that return something will bring us // back in this loop. so we call the call back to display what we found. // and we continue iterating until all time has run out. + await m_FrameProcessor.CreateMediaFastFrameReader(); while (!done) { - // Get data from the frames - await m_FrameProcessor.ProcessFramesAsync(currentTimeout); - // See what result we got. - result = m_FrameProcessor.Result; - // Call back with whatever result we got. - resultCallback(result); - // If we timed out just leave. - done = (DateTime.Now - startTime) > timeout; - // Continue scanning with the time we have left - currentTimeout = (DateTime.Now - startTime); + await Task.Run(async () => + { + // Get data from the frames + await m_FrameProcessor.ProcessFramesAsyncLoop(m_FrameProcessor.mediaFastFrameReader, currentTimeout, DateTime.Now); + // See what result we got. + // Call back with whatever result we got. + resultCallback(m_FrameProcessor.Result); + // If we timed out just leave. + done = (DateTime.Now - startTime) > timeout; + // Continue scanning with the time we have left + currentTimeout = (DateTime.Now - startTime); + }); } + // Dispose the frame reader + await m_FrameProcessor.DisposeMediaFastFrameReader(); } } } diff --git a/FullScreen-Version/MediaFrameQrProcessing/bin/Debug/MediaFrameQrProcessing.dll b/FullScreen-Version/MediaFrameQrProcessing/bin/Debug/MediaFrameQrProcessing.dll new file mode 100644 index 00000000..a5c7c3be Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/bin/Debug/MediaFrameQrProcessing.dll differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/bin/Debug/MediaFrameQrProcessing.pdb b/FullScreen-Version/MediaFrameQrProcessing/bin/Debug/MediaFrameQrProcessing.pdb new file mode 100644 index 00000000..c86bf029 Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/bin/Debug/MediaFrameQrProcessing.pdb differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/bin/Debug/MediaFrameQrProcessing.pri b/FullScreen-Version/MediaFrameQrProcessing/bin/Debug/MediaFrameQrProcessing.pri new file mode 100644 index 00000000..fbc22170 Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/bin/Debug/MediaFrameQrProcessing.pri differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/bin/x64/Release/MediaFrameQrProcessing.dll b/FullScreen-Version/MediaFrameQrProcessing/bin/x64/Release/MediaFrameQrProcessing.dll new file mode 100644 index 00000000..e61544df Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/bin/x64/Release/MediaFrameQrProcessing.dll differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/bin/x64/Release/MediaFrameQrProcessing.pdb b/FullScreen-Version/MediaFrameQrProcessing/bin/x64/Release/MediaFrameQrProcessing.pdb new file mode 100644 index 00000000..76289d2c Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/bin/x64/Release/MediaFrameQrProcessing.pdb differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/bin/x64/Release/MediaFrameQrProcessing.pri b/FullScreen-Version/MediaFrameQrProcessing/bin/x64/Release/MediaFrameQrProcessing.pri new file mode 100644 index 00000000..fbc22170 Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/bin/x64/Release/MediaFrameQrProcessing.pri differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Debug/MediaFrameQrProcessing.dll b/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Debug/MediaFrameQrProcessing.dll index 50b8e1f6..76c3e15b 100644 Binary files a/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Debug/MediaFrameQrProcessing.dll and b/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Debug/MediaFrameQrProcessing.dll differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Debug/MediaFrameQrProcessing.pdb b/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Debug/MediaFrameQrProcessing.pdb index 66039bd9..21093f75 100644 Binary files a/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Debug/MediaFrameQrProcessing.pdb and b/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Debug/MediaFrameQrProcessing.pdb differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Release/MediaFrameQrProcessing.dll b/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Release/MediaFrameQrProcessing.dll new file mode 100644 index 00000000..5fb6bddf Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Release/MediaFrameQrProcessing.dll differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Release/MediaFrameQrProcessing.pdb b/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Release/MediaFrameQrProcessing.pdb new file mode 100644 index 00000000..539ba74b Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Release/MediaFrameQrProcessing.pdb differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Release/MediaFrameQrProcessing.pri b/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Release/MediaFrameQrProcessing.pri new file mode 100644 index 00000000..fbc22170 Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/bin/x86/Release/MediaFrameQrProcessing.pri differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.csproj.FileListAbsolute.txt b/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.csproj.FileListAbsolute.txt index 252889ac..ca6c8e4b 100644 --- a/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.csproj.FileListAbsolute.txt +++ b/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.csproj.FileListAbsolute.txt @@ -33,4 +33,3 @@ E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Ve E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\Debug\qualifiers.txt E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\Debug\qualifiers.txt.intermediate E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\Debug\MultipleQualifiersPerDimensionFound.txt -E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\Debug\MediaFrameQrProcessing.csprojResolveAssemblyReference.cache diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.csprojResolveAssemblyReference.cache b/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.csprojResolveAssemblyReference.cache deleted file mode 100644 index a39a17ab..00000000 Binary files a/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.csprojResolveAssemblyReference.cache and /dev/null differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.dll b/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.dll index 8c96409a..a5c7c3be 100644 Binary files a/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.dll and b/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.dll differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.pdb b/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.pdb index a0a68b36..c86bf029 100644 Binary files a/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.pdb and b/FullScreen-Version/MediaFrameQrProcessing/obj/Debug/MediaFrameQrProcessing.pdb differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput.cache index c400e9f8..877c2ca0 100644 Binary files a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Debug/MediaFrameQrProcessing.csproj.CoreCompileInputs.cache b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Debug/MediaFrameQrProcessing.csproj.CoreCompileInputs.cache index 887119ba..542f9914 100644 --- a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Debug/MediaFrameQrProcessing.csproj.CoreCompileInputs.cache +++ b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Debug/MediaFrameQrProcessing.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -5688c3fa9c0491888d37226058446d90bf3ab0cd +1614477a5834299d972670cb71ea103bb9378a77 diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/DesignTimeResolveAssemblyReferencesInput.cache b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 00000000..f0817cbf Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.csproj.CoreCompileInputs.cache b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.csproj.CoreCompileInputs.cache new file mode 100644 index 00000000..542f9914 --- /dev/null +++ b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +1614477a5834299d972670cb71ea103bb9378a77 diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.csproj.FileListAbsolute.txt b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..762c0165 --- /dev/null +++ b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.csproj.FileListAbsolute.txt @@ -0,0 +1,18 @@ +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\bin\x64\Release\MediaFrameQrProcessing.dll +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\bin\x64\Release\MediaFrameQrProcessing.pdb +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\bin\x64\Release\MediaFrameQrProcessing.pri +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\MediaFrameQrProcessing.csprojResolveAssemblyReference.cache +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\MediaFrameQrProcessing.csproj.CoreCompileInputs.cache +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\MediaFrameQrProcessing.dll +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\MediaFrameQrProcessing.pdb +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\priconfig.xml +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\priconfig.xml.intermediate +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\layout.resfiles +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\layout.resfiles.intermediate +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\resources.resfiles +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\resources.resfiles.intermediate +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\pri.resfiles +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\pri.resfiles.intermediate +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\qualifiers.txt +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\qualifiers.txt.intermediate +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x64\Release\MultipleQualifiersPerDimensionFound.txt diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.csprojResolveAssemblyReference.cache b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.csprojResolveAssemblyReference.cache new file mode 100644 index 00000000..e36f9dd3 Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.csprojResolveAssemblyReference.cache differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.dll b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.dll new file mode 100644 index 00000000..e61544df Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.dll differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.pdb b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.pdb new file mode 100644 index 00000000..76289d2c Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MediaFrameQrProcessing.pdb differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MultipleQualifiersPerDimensionFound.txt b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MultipleQualifiersPerDimensionFound.txt new file mode 100644 index 00000000..c1f22fbc --- /dev/null +++ b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/MultipleQualifiersPerDimensionFound.txt @@ -0,0 +1 @@ +False \ No newline at end of file diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/embed.resfiles b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/embed.resfiles new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/embed.resfiles.intermediate b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/embed.resfiles.intermediate new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/layout.resfiles b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/layout.resfiles new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/layout.resfiles.intermediate b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/layout.resfiles.intermediate new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/pri.resfiles b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/pri.resfiles new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/pri.resfiles.intermediate b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/pri.resfiles.intermediate new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/priconfig.xml b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/priconfig.xml new file mode 100644 index 00000000..db413fa7 --- /dev/null +++ b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/priconfig.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/priconfig.xml.intermediate b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/priconfig.xml.intermediate new file mode 100644 index 00000000..db413fa7 --- /dev/null +++ b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/priconfig.xml.intermediate @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/qualifiers.txt b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/qualifiers.txt new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/qualifiers.txt.intermediate b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/qualifiers.txt.intermediate new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/resources.resfiles b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/resources.resfiles new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/resources.resfiles.intermediate b/FullScreen-Version/MediaFrameQrProcessing/obj/x64/Release/resources.resfiles.intermediate new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Debug/MediaFrameQrProcessing.csprojResolveAssemblyReference.cache b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Debug/MediaFrameQrProcessing.csprojResolveAssemblyReference.cache index 2f2d6a4a..176ca258 100644 Binary files a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Debug/MediaFrameQrProcessing.csprojResolveAssemblyReference.cache and b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Debug/MediaFrameQrProcessing.csprojResolveAssemblyReference.cache differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Debug/MediaFrameQrProcessing.dll b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Debug/MediaFrameQrProcessing.dll index 50b8e1f6..76c3e15b 100644 Binary files a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Debug/MediaFrameQrProcessing.dll and b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Debug/MediaFrameQrProcessing.dll differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Debug/MediaFrameQrProcessing.pdb b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Debug/MediaFrameQrProcessing.pdb index 66039bd9..21093f75 100644 Binary files a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Debug/MediaFrameQrProcessing.pdb and b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Debug/MediaFrameQrProcessing.pdb differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 00000000..bbf19792 Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.csproj.CoreCompileInputs.cache b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.csproj.CoreCompileInputs.cache new file mode 100644 index 00000000..542f9914 --- /dev/null +++ b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +1614477a5834299d972670cb71ea103bb9378a77 diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.csproj.FileListAbsolute.txt b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..bd95a3a8 --- /dev/null +++ b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.csproj.FileListAbsolute.txt @@ -0,0 +1,18 @@ +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\bin\x86\Release\MediaFrameQrProcessing.dll +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\bin\x86\Release\MediaFrameQrProcessing.pdb +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\bin\x86\Release\MediaFrameQrProcessing.pri +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\MediaFrameQrProcessing.csproj.CoreCompileInputs.cache +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\MediaFrameQrProcessing.dll +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\MediaFrameQrProcessing.pdb +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\priconfig.xml +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\priconfig.xml.intermediate +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\layout.resfiles +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\layout.resfiles.intermediate +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\resources.resfiles +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\resources.resfiles.intermediate +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\pri.resfiles +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\pri.resfiles.intermediate +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\qualifiers.txt +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\qualifiers.txt.intermediate +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\MultipleQualifiersPerDimensionFound.txt +E:\Users\dolci\Documents\ESILV\PI² A5\Repos\Actimage-OCR-PISquare\FullScreen-Version\MediaFrameQrProcessing\obj\x86\Release\MediaFrameQrProcessing.csprojResolveAssemblyReference.cache diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.csprojResolveAssemblyReference.cache b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.csprojResolveAssemblyReference.cache new file mode 100644 index 00000000..e36f9dd3 Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.csprojResolveAssemblyReference.cache differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.dll b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.dll new file mode 100644 index 00000000..5fb6bddf Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.dll differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.pdb b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.pdb new file mode 100644 index 00000000..539ba74b Binary files /dev/null and b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MediaFrameQrProcessing.pdb differ diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MultipleQualifiersPerDimensionFound.txt b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MultipleQualifiersPerDimensionFound.txt new file mode 100644 index 00000000..c1f22fbc --- /dev/null +++ b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/MultipleQualifiersPerDimensionFound.txt @@ -0,0 +1 @@ +False \ No newline at end of file diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/embed.resfiles b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/embed.resfiles new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/embed.resfiles.intermediate b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/embed.resfiles.intermediate new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/layout.resfiles b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/layout.resfiles new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/layout.resfiles.intermediate b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/layout.resfiles.intermediate new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/pri.resfiles b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/pri.resfiles new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/pri.resfiles.intermediate b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/pri.resfiles.intermediate new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/priconfig.xml b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/priconfig.xml new file mode 100644 index 00000000..205dd467 --- /dev/null +++ b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/priconfig.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/priconfig.xml.intermediate b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/priconfig.xml.intermediate new file mode 100644 index 00000000..205dd467 --- /dev/null +++ b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/priconfig.xml.intermediate @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/qualifiers.txt b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/qualifiers.txt new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/qualifiers.txt.intermediate b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/qualifiers.txt.intermediate new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/resources.resfiles b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/resources.resfiles new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/resources.resfiles.intermediate b/FullScreen-Version/MediaFrameQrProcessing/obj/x86/Release/resources.resfiles.intermediate new file mode 100644 index 00000000..e69de29b diff --git a/FullScreen-Version/UnityProject/.vs/UnityProject/v15/.suo b/FullScreen-Version/UnityProject/.vs/UnityProject/v15/.suo index 66b72e61..7ace2b7d 100644 Binary files a/FullScreen-Version/UnityProject/.vs/UnityProject/v15/.suo and b/FullScreen-Version/UnityProject/.vs/UnityProject/v15/.suo differ diff --git a/FullScreen-Version/UnityProject/.vs/UnityProject/v15/Server/sqlite3/storage.ide b/FullScreen-Version/UnityProject/.vs/UnityProject/v15/Server/sqlite3/storage.ide index 14650cee..9d5bcb61 100644 Binary files a/FullScreen-Version/UnityProject/.vs/UnityProject/v15/Server/sqlite3/storage.ide and b/FullScreen-Version/UnityProject/.vs/UnityProject/v15/Server/sqlite3/storage.ide differ diff --git a/FullScreen-Version/UnityProject/Assets/Constants.cs b/FullScreen-Version/UnityProject/Assets/Constants.cs index 4fae5b5f..f26c7723 100644 --- a/FullScreen-Version/UnityProject/Assets/Constants.cs +++ b/FullScreen-Version/UnityProject/Assets/Constants.cs @@ -8,11 +8,10 @@ static class Constants public static readonly String WILDCARD_HEARD_TEXT = "42"; public static readonly String WILDCARD_TEXT = "quarante deux"; public static readonly String SEARCH_KEYWORD = "rechercher"; - public static readonly String QRCODE_KEYWORD = "translate"; - public static readonly String QUIT_KEYWORD = "quit"; + public static readonly String QRCODE_KEYWORD = "traduire"; public static readonly String VALIDATION_KEYWORD = "okay"; public static readonly String STOP_KEYWORD = "stop"; - public static readonly Double TIMEOUT = 5; + public static readonly Double TIMEOUT = 10; public static readonly Boolean DEBUG = false; #endregion @@ -27,27 +26,28 @@ static class Constants public static readonly String IS_MICROPHONE_RECORDING = "Le Microphone " + (Microphone.IsRecording(DEFAULT_MICROPHONE_DEVICE_NAME) ? "est" : "n'est pas ") + " en train d'enregistrer."; public static readonly String EXACT_MATCHES_WERE_FOUND = " occurence(s) exacte(s) ont été trouvée(s). \n "; public static readonly String APPROXIMATE_MATCHES_WERE_FOUND = " occurence(s) proche(s) ont été trouvée(s). \n pour le mot : "; - public static readonly String RESULT_TEXT_RECOGNITION_SENTENCE = "{0}" + EXACT_MATCHES_WERE_FOUND + "{1}" + APPROXIMATE_MATCHES_WERE_FOUND + "'{2}'."; + public static readonly String RESULT_TEXT_RECOGNITION_SENTENCE = "{0}" + EXACT_MATCHES_WERE_FOUND + "{1}" + APPROXIMATE_MATCHES_WERE_FOUND + "' {2} '."; public static readonly String THE_WORD_YOU_ARE_LOOKING_FOR_IS = "Le mot à rechercher est {0} \n {1}"; public static readonly String PLANE_MESH_NAME = "Plane"; public static readonly String CANVAS_MESH_NAME = "Canvas"; public static readonly String THE_QR_CODE_MEANS = "Le QR code représente : {0}\n Dites '" + STOP_KEYWORD + "' pour retourner au menu"; public static readonly String RESULT_BOX_NAME_PREFIX = "ResultBox"; public static readonly String RESULT_BOX_SHADER_NAME = "UI/Default Font"; - public static readonly String LAMBERT_MATERIAL_LOCATION = "/HoloToolkit/Input/Models/Cursor/Materials/lambert1.mat"; + public static readonly String LAMBERT_MATERIAL_LOCATION = "/Utilities/Materials/HoloToolkit Default.mat"; public static readonly String TEXT_QUITTING_APPLICATION = "Arrêt de l'application"; public static readonly String FINAL_WORD_SEARCH_PROMPT = String.Format("dites '{1}' pour continuer. \n Dites '{0}' pour annuler", STOP_KEYWORD, VALIDATION_KEYWORD); public static readonly String SEARCHING_FOR_QR_CODES = "Recherche de QR codes en cours"; + public static readonly String STOP_PROMPT = string.Format("Dites '{0}' pour annuler.", STOP_KEYWORD); public static readonly String SEARCH_PROMPT = string.Format("Donnez le mot à rechercher. \n Dites '{0}' pour annuler.", STOP_KEYWORD); public static readonly String LOOKING_FOR_WORD = "Recherche en cours pour le mot '{0}'."; public static readonly String RESET_IN_PROGRESS = "Réinitialisation en cours"; - public static readonly String NO_QR_CODE_FOUND = "Aucun QR code trouvé, " + RESET_IN_PROGRESS; + public static readonly String NO_QR_CODE_FOUND = "Aucun QR code trouvé, \n Dites '" + STOP_KEYWORD + "' pour retourner au menu "; public static readonly String HOME_PROMPT = string.Format("Dites '{0}' pour commencer \n ou '{1}' pour dechiffrer un QR code", SEARCH_KEYWORD, QRCODE_KEYWORD); public static readonly String ERROR_DISPLAYING_RECTANGLES = "ERREUR : Erreur lors de l'affichage du/des rectangle(s). "; public static readonly String ERROR_LOOKING_FOR_WORDS = "ERREUR : Erreur lors de la recherche de mots"; - public static readonly String ERROR_COMPLETING_DICTATION = "ERREUR : La dictée ne s'est pas terminée correctement: {0}."; + public static readonly String ERROR_COMPLETING_DICTATION = "ERREUR : La dictée ne s'est pas terminée correctement: {0} ."; public static readonly String ERROR_NO_INTERNET = "ERREUR : La reconnaissance vocale ne fonctionne pas sans internet."; - public static readonly String ERROR_IN_DICTATION = "ERREUR : La dictée a échoué : {0}; HResult = {1}."; + public static readonly String ERROR_IN_DICTATION = "ERREUR : La dictée a échoué : {0} ; HResult = {1} " + "."; public static readonly String ERROR_NO_RESULT_FOUND = "ERREUR : aucune occurence exacte ni proche n'ont été trouvées."; #endregion } diff --git a/FullScreen-Version/UnityProject/Assets/DisplayWebcam.cs b/FullScreen-Version/UnityProject/Assets/DisplayWebcam.cs index 89f4ca09..1e2d63a5 100644 --- a/FullScreen-Version/UnityProject/Assets/DisplayWebcam.cs +++ b/FullScreen-Version/UnityProject/Assets/DisplayWebcam.cs @@ -20,8 +20,7 @@ public void Start() // If not in debug mode do not display the webcam. if (!Constants.DEBUG) { - rend.enabled = false; - tex.Stop(); + StopWebcamPlayback(); } Debug.Log(Constants.WEBCAM_HAS_INITIALIZED_SUCESSFULLY); } @@ -32,9 +31,20 @@ private void DisplayWebcamPreview() rend = this.GetComponentInChildren(); tex = new WebCamTexture(devices[0].name); rend.material.mainTexture = tex; - tex.Play(); + StartWebcamPlayback(); WebcamHeightResolution = tex.height; WebcamWidthResolution = tex.width; } + + public static void StartWebcamPlayback() + { + tex.Play(); + rend.enabled = true; + } + public static void StopWebcamPlayback() + { + tex.Stop(); + rend.enabled = false; + } } } \ No newline at end of file diff --git a/FullScreen-Version/UnityProject/Assets/Images/square_logo.png b/FullScreen-Version/UnityProject/Assets/Images/square_logo.png new file mode 100644 index 00000000..397d1559 Binary files /dev/null and b/FullScreen-Version/UnityProject/Assets/Images/square_logo.png differ diff --git "a/FullScreen-Version/UnityProject/Assets/Images/logo_carr\303\251.png.meta" b/FullScreen-Version/UnityProject/Assets/Images/square_logo.png.meta similarity index 94% rename from "FullScreen-Version/UnityProject/Assets/Images/logo_carr\303\251.png.meta" rename to FullScreen-Version/UnityProject/Assets/Images/square_logo.png.meta index c17f04b7..94cb78b1 100644 --- "a/FullScreen-Version/UnityProject/Assets/Images/logo_carr\303\251.png.meta" +++ b/FullScreen-Version/UnityProject/Assets/Images/square_logo.png.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: afa21d910263eb74e97600eb6d2e68e1 -timeCreated: 1513259122 +guid: 2f7757e24fc27ee48ad474061747af30 +timeCreated: 1516289510 licenseType: Free TextureImporter: fileIDToRecycleName: {} @@ -65,6 +65,7 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + androidETC2FallbackOverride: 0 spriteSheet: serializedVersion: 2 sprites: [] diff --git "a/FullScreen-Version/UnityProject/Assets/Images/logo_carr\303\251.png" b/FullScreen-Version/UnityProject/Assets/Images/square_logo_sprite.png similarity index 55% rename from "FullScreen-Version/UnityProject/Assets/Images/logo_carr\303\251.png" rename to FullScreen-Version/UnityProject/Assets/Images/square_logo_sprite.png index 81f51875..a1597288 100644 Binary files "a/FullScreen-Version/UnityProject/Assets/Images/logo_carr\303\251.png" and b/FullScreen-Version/UnityProject/Assets/Images/square_logo_sprite.png differ diff --git a/FullScreen-Version/UnityProject/Assets/Images/square_logo_sprite.png.meta b/FullScreen-Version/UnityProject/Assets/Images/square_logo_sprite.png.meta new file mode 100644 index 00000000..b772ef5f --- /dev/null +++ b/FullScreen-Version/UnityProject/Assets/Images/square_logo_sprite.png.meta @@ -0,0 +1,107 @@ +fileFormatVersion: 2 +guid: 6a2d6daf95b6a8040927344770d0d1b8 +timeCreated: 1516278345 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 2, y: 2, z: 2, w: 2} + spritePixelsToUnits: 100 + alphaUsage: 0 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/FullScreen-Version/UnityProject/Assets/Placeholder.cs b/FullScreen-Version/UnityProject/Assets/Placeholder.cs index 87f2f681..c0fcaa59 100644 --- a/FullScreen-Version/UnityProject/Assets/Placeholder.cs +++ b/FullScreen-Version/UnityProject/Assets/Placeholder.cs @@ -18,16 +18,13 @@ public class Placeholder : MonoBehaviour { #region Attributes private TextMesh m_TextMesh; - private Transform m_PlaneMesh; private DictationRecognizer m_DictationRecognizer; private Boolean m_Searching; - private Boolean m_Validated; private Boolean m_Decrypting; + private Boolean doOnce = true; private Boolean m_StartedRecognition; private String m_WordToSearch; private String m_WordSearchedFor; - private List m_Rectangles; - private List m_Colors; private HashSet m_ResultBoxes; #endregion @@ -47,12 +44,9 @@ public void Awake() { this.m_TextMesh = GetComponentInChildren(); this.m_Searching = false; - this.m_Validated = false; this.m_Decrypting = false; this.m_WordToSearch = string.Empty; this.m_StartedRecognition = false; - this.m_Rectangles = new List(); - this.m_Colors = new List(); this.m_DictationRecognizer = null; this.m_ResultBoxes = new HashSet(); } @@ -78,35 +72,24 @@ public void Awake() /// public void Start() { - if (Constants.DEBUG) - { - // VR Causes issues on local windows. - this.DisableVirtualReality(); - this.m_PlaneMesh = GetDebugPlane(); - } + // Dictation Manager requires permanent + // internet connection. if (HasInternet()) - { +#if UNITY_EDITOR + { } +#endif +#if !UNITY_EDITOR this.Reset(); - this.InitDictationRecognizer(); - } +#endif else - { this.m_TextMesh.text = Constants.ERROR_NO_INTERNET; - } -#if UNITY_EDITOR - m_Rectangles.Add(new Rect(75, 50, 200, 50)); - m_Rectangles.Add(new Rect(200, 500, 200, 50)); - m_Colors.Add(Constants.PERFECT_MATCH_COLOR); - m_Colors.Add(Constants.APPROXIMATE_MATCH_COLOR); -#endif } public static bool HasInternet() { #if !UNITY_EDITOR ConnectionProfile connections = NetworkInformation.GetInternetConnectionProfile(); - bool internet = connections != null && connections.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess; - return internet; + return connections != null && connections.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess; #endif #if UNITY_EDITOR return true; @@ -116,13 +99,46 @@ public static bool HasInternet() public void Update() { + + + if (doOnce && Constants.DEBUG) + { + doOnce = false; + var tempWidth = DisplayWebcam.WebcamWidthResolution; + var tempHeight = DisplayWebcam.WebcamHeightResolution; +#if UNITY_EDITOR + var rectangles = new List() + { + new Rect(-663.75F, -540.00F, 180.00F, 2.00F), + new Rect(-663.75F, -362.00F, 180.00F, 2.00F), + new Rect(-485.75F, -538.00F, 2.00F, 176.00F), + new Rect(-663.75F, -538.00F, 2.00F, 176.00F) + }; + + m_ResultBoxes.Add(rectangles.CreateRectangleMeshObject(FindObjectOfType().transform.parent, Color.white, "AA")); + +#endif +#if !UNITY_EDITOR + if (Constants.DEBUG) + { + var temp = new HashSet() { + new ActiDetectedWord("AA", 25, 0, 80, 80, false), + new ActiDetectedWord("BB", 25, tempHeight -50, 50, 50, true), + new ActiDetectedWord("CC", tempWidth -50 , 0, 50, 50, true), + new ActiDetectedWord("DD", tempWidth -50 , tempHeight -50, 50, 50, true), + new ActiDetectedWord("EE", (tempWidth / 2) -25 , (tempHeight / 2) -25,50, 50, true), + new ActiDetectedWord("FF", 25, (tempHeight / 2) -25,50, 50, true), + new ActiDetectedWord("GG", (tempWidth / 2) -25 , 0,50, 50, true) + }; + GetWordsBoundingBoxes(temp); + } +#endif + } Screen.fullScreen = true; } private void ClearLists() { - this.m_Rectangles.Clear(); - this.m_Colors.Clear(); foreach (var box in m_ResultBoxes) Destroy(box); this.m_ResultBoxes.Clear(); @@ -133,8 +149,6 @@ private void Scan(string text) if (Constants.STOP_KEYWORD.Equals(text)) { FunctionProxyOnMainThread(Reset); - if (Constants.DEBUG) - FunctionProxyOnMainThread(DisplayWebcamPreview); return; } @@ -149,14 +163,9 @@ private void Scan(string text) this.m_TextMesh.text = Constants.SEARCHING_FOR_QR_CODES; this.m_Decrypting = true; #if !UNITY_EDITOR - try - { - ZXingQrCodeScanner.ScanFirstCameraForQrCode(GetQRCode, TimeSpan.FromSeconds(Constants.TIMEOUT)); - } - catch (Exception ex) - { - Debug.Log(ex.Message); - } + if (Constants.DEBUG) + FunctionProxyOnMainThread(DisplayWebcam.StopWebcamPlayback); + ZXingQrCodeScanner.ScanFirstCameraForQrCode(GetQRCode, TimeSpan.FromSeconds(Constants.TIMEOUT)); #endif } else if (this.m_Searching) @@ -169,20 +178,21 @@ private void Scan(string text) this.m_TextMesh.text = String.Format(Constants.LOOKING_FOR_WORD, this.m_WordToSearch); this.m_StartedRecognition = true; - ThreadSafeDelaySecondsCoroutine(() => - { - this.m_WordSearchedFor = this.m_WordToSearch.Equals(Constants.WILDCARD_HEARD_TEXT) ? Constants.WILDCARD_TEXT : this.m_WordToSearch; - Debug.Log(this.m_WordToSearch.Equals(Constants.WILDCARD_HEARD_TEXT) ? Constants.WILDCARD_TEXT : this.m_WordToSearch); + this.m_WordSearchedFor = this.m_WordToSearch.Equals(Constants.WILDCARD_HEARD_TEXT) ? Constants.WILDCARD_TEXT : this.m_WordToSearch; #if !UNITY_EDITOR - WordScanner.ScanFirstCameraForWords(GetWordsBoundingBoxes, TimeSpan.FromSeconds(Constants.TIMEOUT), this.m_WordToSearch.Equals(Constants.WILDCARD_HEARD_TEXT) ? Constants.WILDCARD_TEXT : this.m_WordToSearch); -#endif - }, () => - { - Scan(Constants.STOP_KEYWORD); if (Constants.DEBUG) - FunctionProxyOnMainThread(DisplayWebcamPreview); - }, 2); + FunctionProxyOnMainThread(DisplayWebcam.StopWebcamPlayback); + + ThreadSafeDelaySecondsCoroutine(() => + { + WordScanner.ScanFirstCameraForWords(GetWordsBoundingBoxes, TimeSpan.FromSeconds(Constants.TIMEOUT), this.m_WordToSearch.Equals(Constants.WILDCARD_HEARD_TEXT) ? Constants.WILDCARD_TEXT : this.m_WordToSearch); + }, () => + { + this.m_TextMesh.text += '\n' + Constants.STOP_PROMPT; + }, (float)Constants.TIMEOUT); +#endif + } } @@ -194,11 +204,13 @@ private void Scan(string text) this.m_TextMesh.text = string.Format(Constants.THE_WORD_YOU_ARE_LOOKING_FOR_IS, this.m_WordToSearch, Constants.FINAL_WORD_SEARCH_PROMPT); }, () => { - }, 1); + }, 0.1F); } } } + + /// /// This function is called on start and each time the users stop the application /// The aim is to switch between the different voices recognition systems. @@ -211,7 +223,6 @@ public void Reset() }, () => { this.m_Decrypting = false; - this.m_Validated = false; this.m_Searching = false; this.m_StartedRecognition = false; this.m_WordToSearch = string.Empty; @@ -219,36 +230,11 @@ public void Reset() this.m_TextMesh.text = Constants.HOME_PROMPT; ClearLists(); this.InitDictationRecognizer(); + if (Constants.DEBUG) + FunctionProxyOnMainThread(DisplayWebcam.StartWebcamPlayback); }, 0.1f); } -#if UNITY_EDITOR - public void OnGUI() - { - m_Rectangles.Add(new Rect(75, 50, 200, 50)); - m_Rectangles.Add(new Rect(200, 500, 200, 50)); - m_Colors.Add(Constants.PERFECT_MATCH_COLOR); - m_Colors.Add(Constants.APPROXIMATE_MATCH_COLOR); - try - { - for (Int16 j = 0; j < m_Rectangles.Count; ++j) - { - var borderRectangles = m_Rectangles[j].GetRectOutlines(2); - if (Constants.DEBUG) - borderRectangles = m_Rectangles[j].GetRectOutlines(2, m_PlaneMesh); - - foreach (var borderRectangle in borderRectangles) - { - GUI.DrawTexture(borderRectangle, Texture2D.whiteTexture, ScaleMode.ScaleAndCrop, false, 1, Color.red, 2, 0); - } - } - } - catch (Exception ex) - { - Debug.Log(Constants.ERROR_DISPLAYING_RECTANGLES + ex.Message); - } - } -#endif #if !UNITY_EDITOR public void GetQRCode(string result) { @@ -265,52 +251,43 @@ public void GetQRCode(string result) } }, () => { - if (Constants.DEBUG) - FunctionProxyOnMainThread(DisplayWebcamPreview); - Scan(Constants.STOP_KEYWORD); }, (float)Constants.TIMEOUT); } - private void GetWordsBoundingBoxes(List result) + private void GetWordsBoundingBoxes(HashSet result) { - String resultStatistics = String.Empty; - try + + + FunctionProxyOnMainThread(() => { - FunctionProxyOnMainThread(ClearLists); - foreach (ActiDetectedWord resultat in result) - { - m_Rectangles.Add(new Rect(resultat.PosX, resultat.PosY, resultat.Width, resultat.Height)); - m_Colors.Add(resultat.IsExactMatch() ? Constants.PERFECT_MATCH_COLOR : Constants.APPROXIMATE_MATCH_COLOR); - } - for (Int16 j = 0; j < m_Rectangles.Count; ++j) + String resultStatistics = String.Empty; + try { - var borderRectangles = m_Rectangles[j].GetRectOutlines(2); - foreach (var borderRectangle in borderRectangles) + FunctionProxyOnMainThread(ClearLists); + + int numberOfExactMatches = 0; + foreach (ActiDetectedWord resultat in result) { - m_ResultBoxes.Add(borderRectangle.CreateRectangleMeshObject(FindObjectOfType().transform.parent, m_Colors[j])); + var rect = new Rect(resultat.PosX, resultat.PosY, resultat.Width, resultat.Height); + var borderRectangles = rect.GetRectOutlines(2, FindObjectOfType().transform.GetComponent().rect); + m_ResultBoxes.Add(borderRectangles.CreateRectangleMeshObject(FindObjectOfType().transform.parent, resultat.IsExactMatch() ? Constants.PERFECT_MATCH_COLOR : Constants.APPROXIMATE_MATCH_COLOR, resultat.DetectedWord)); + if (resultat.IsExactMatch()) + ++numberOfExactMatches; } - } - int numberOfExactMatches = result.Count(r => r.IsExactMatch()); - resultStatistics = string.Format(Constants.RESULT_TEXT_RECOGNITION_SENTENCE, numberOfExactMatches, (result.Count - numberOfExactMatches), this.m_WordSearchedFor); - - } - catch (Exception ex) - { - print(Constants.ERROR_LOOKING_FOR_WORDS + ex.Message); - resultStatistics = Constants.ERROR_NO_RESULT_FOUND; - } + resultStatistics = string.Format(Constants.RESULT_TEXT_RECOGNITION_SENTENCE, numberOfExactMatches, (result.Count - numberOfExactMatches), this.m_WordSearchedFor); - FunctionProxyOnMainThread(() => { this.m_TextMesh.text = resultStatistics; }); + } + catch (Exception ex) + { + print(Constants.ERROR_LOOKING_FOR_WORDS + ex.Message); + resultStatistics = Constants.ERROR_NO_RESULT_FOUND; + } + this.m_TextMesh.text = resultStatistics; + }); } #endif - - private void DisplayWebcamPreview() - { - DisplayWebcam.tex.Play(); - } - public void FunctionProxyOnMainThread(Action callback) { if (UnityEngine.WSA.Application.RunningOnAppThread()) @@ -350,34 +327,6 @@ private IEnumerator DelaySeconds(Action callback, Action callback2, float second yield break; } - #region Debug - - public Transform GetDebugPlane() - { - var transforms = GetComponentsInChildren(); - Transform transform = null; - foreach (var transformPivots in transforms) - { - if (transformPivots.name.Equals(Constants.PLANE_MESH_NAME)) - transform = transformPivots; - } - return transform; - } - - private void DisableVirtualReality() - { - StartCoroutine(LoadDevice(Constants.DEFAULT_VR_DEVICE_NAME, false)); - } - - IEnumerator LoadDevice(string newDevice, bool enable) - { - XRSettings.LoadDeviceByName(newDevice); - yield return null; - XRSettings.enabled = enable; - } - #endregion - - #region Utils private void DisablePhraseRecognitionSystem() { @@ -422,8 +371,6 @@ private void InitDictationRecognizer() if (SpeechSystemStatus.Stopped == this.m_DictationRecognizer.Status) this.m_DictationRecognizer.Start(); - - Debug.Log(Constants.IS_MICROPHONE_RECORDING); } #endregion } diff --git a/FullScreen-Version/UnityProject/Assets/RectangleExtensions.cs b/FullScreen-Version/UnityProject/Assets/RectangleExtensions.cs index 63421f80..66928428 100644 --- a/FullScreen-Version/UnityProject/Assets/RectangleExtensions.cs +++ b/FullScreen-Version/UnityProject/Assets/RectangleExtensions.cs @@ -1,106 +1,135 @@ namespace Assets { + using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; static class RectangleExtensions - { - public static GameObject CreateRectangleMeshObject(this Rect rectangle, Transform parent, Color32 color) + { + public static GameObject CreateTextInRectangle(this List rectangles, Transform parent, string text) + { + GameObject textMesh = new GameObject("Text" + text); + textMesh.transform.SetParent(parent, false); + textMesh.transform.localScale = new Vector3(1, -1, 1); + textMesh.transform.localPosition = new Vector3(rectangles[0].x + (rectangles[0].width / 2), rectangles[1].y - (rectangles[2].height / 2), 0); + textMesh.AddComponent(); + TextMesh myTextMesh = textMesh.AddComponent(); + myTextMesh.fontSize = 480; + myTextMesh.anchor = TextAnchor.MiddleCenter; + myTextMesh.alignment = TextAlignment.Center; + myTextMesh.text = text; + return textMesh; + } + + + public static GameObject CreateRectangleMeshObject(this List rectangles, Transform parent, Color32 color, string text) + { + GameObject selectionBox = new GameObject(Constants.RESULT_BOX_NAME_PREFIX + text); + selectionBox.transform.SetParent(parent, false); + selectionBox.transform.SetParent(parent.Find(Constants.CANVAS_MESH_NAME)); + selectionBox.transform.localScale = new Vector3(1, - 1, 1); + selectionBox.transform.localPosition = new Vector3(0, 0, 0); + selectionBox.transform.localRotation = new Quaternion(0, 0, 0, 0); + MeshRenderer rend = selectionBox.AddComponent(); + rend.materials[0] = Resources.Load(Constants.LAMBERT_MATERIAL_LOCATION, typeof(Material)) as Material; + rend.materials[0].color = color; + rend.materials[0].shader = Shader.Find(Constants.RESULT_BOX_SHADER_NAME); + Mesh myMesh = selectionBox.AddComponent().mesh; + rectangles.DrawRectangleOutline(color, myMesh); + + if (Constants.DEBUG) + CreateTextInRectangle(rectangles, selectionBox.transform, text); + + return selectionBox; + } + + public static void DrawRectangle(Rect rectangle, Color32 color, Mesh mesh) { using (var vh = new VertexHelper()) { - GameObject selectionBox = new GameObject(Constants.RESULT_BOX_NAME_PREFIX); - selectionBox.AddComponent(); - selectionBox.transform.SetParent(parent, false); - selectionBox.transform.SetParent(parent.Find(Constants.CANVAS_MESH_NAME)); - selectionBox.transform.localScale = new Vector3(1, 1, 1); - selectionBox.transform.localPosition = new Vector3(-398, 399, 0); - selectionBox.transform.localRotation = new Quaternion(1, 0, 0, 0); - MeshRenderer rend = selectionBox.AddComponent(); - rend.materials[0] = Resources.Load(Constants.LAMBERT_MATERIAL_LOCATION, typeof(Material)) as Material; - rend.materials[0].color = color; - rend.materials[0].shader = Shader.Find(Constants.RESULT_BOX_SHADER_NAME); - Mesh myMesh = selectionBox.GetComponent().mesh; - rectangle.DrawRectangle(vh, color, myMesh); - return selectionBox; + vh.AddVert(new Vector3(rectangle.x, rectangle.y), color, new Vector2(0f, 0f)); + vh.AddVert(new Vector3(rectangle.x, rectangle.y + rectangle.height), color, new Vector2(0f, 1f)); + vh.AddVert(new Vector3(rectangle.x + rectangle.width, rectangle.y + rectangle.height), color, new Vector2(1f, 1f)); + vh.AddVert(new Vector3(rectangle.x + rectangle.width, rectangle.y), color, new Vector2(1f, 0f)); + vh.AddTriangle(0, 1, 2); + vh.AddTriangle(2, 3, 0); + vh.FillMesh(mesh); } } - public static void DrawRectangle(this Rect rectangle, VertexHelper vh, Color32 color, Mesh mesh) + public static void DrawRectangleOutline(this List rectangles, Color32 color, Mesh mesh) { - vh.AddVert(new Vector3(rectangle.x, rectangle.y), color, new Vector2(0f, 0f)); - vh.AddVert(new Vector3(rectangle.x, rectangle.y + rectangle.height), color, new Vector2(0f, 1f)); - vh.AddVert(new Vector3(rectangle.x + rectangle.width, rectangle.y + rectangle.height), color, new Vector2(1f, 1f)); - vh.AddVert(new Vector3(rectangle.x + rectangle.width, rectangle.y), color, new Vector2(1f, 0f)); - - vh.AddTriangle(0, 1, 2); - vh.AddTriangle(2, 3, 0); - vh.FillMesh(mesh); + using (var vh = new VertexHelper()) + { + int rectangleIndex = 0; + foreach (var rectangle in rectangles) + { + vh.AddVert(new Vector3(rectangle.x, rectangle.y), color, new Vector2(0f, 0f)); + vh.AddVert(new Vector3(rectangle.x, rectangle.y + rectangle.height), color, new Vector2(0f, 1f)); + vh.AddVert(new Vector3(rectangle.x + rectangle.width, rectangle.y + rectangle.height), color, new Vector2(1f, 1f)); + vh.AddVert(new Vector3(rectangle.x + rectangle.width, rectangle.y), color, new Vector2(1f, 0f)); + vh.AddTriangle(0 + rectangleIndex, 1 + rectangleIndex, 2 + rectangleIndex); + vh.AddTriangle(2 + rectangleIndex, 3 + rectangleIndex, 0 + rectangleIndex); + rectangleIndex += 4; + } + vh.FillMesh(mesh); + } } + /// /// Return a list of rectangles to make the outline. /// /// /// /// - public static List GetRectOutlines(this Rect rectangle, int borderWidth, bool scaling = false, Transform mesh = null) + public static List GetRectOutlines(this Rect rectangle, int borderWidth, Rect canvas) { - List rectangles = null; int webcamHeight = DisplayWebcam.WebcamHeightResolution; int webcamWidth = DisplayWebcam.WebcamWidthResolution; - int screenWidth = Screen.width; - int screenHeight = Screen.height; - float fixedPlaneWidth = Constants.DEBUG_PLANE_WIDTH * screenHeight; - float fixedPlaneHeight = Constants.DEBUG_PLANE_HEIGHT * screenWidth; - float horizontalRatio = 0.0F; - float verticalRatio = 0.0F; - - if (!Constants.DEBUG) + float widthOffset = 0; + float heightOffset = 0; + + float heightRatio = (float)Screen.height / webcamHeight; + float widthRatio = (float)Screen.width / webcamWidth; + float smallestRatio = Math.Min(heightRatio, widthRatio); + if (heightRatio == widthRatio) + { + + } + else if (smallestRatio != widthRatio) { - horizontalRatio = screenWidth / (float) webcamWidth; - verticalRatio = screenHeight / (float) webcamHeight; + widthOffset = widthRatio * webcamHeight; + widthOffset = (Screen.width - widthOffset); } else { - horizontalRatio = fixedPlaneWidth / webcamWidth; - verticalRatio = fixedPlaneHeight / webcamHeight; + heightOffset = heightRatio * webcamWidth; + heightOffset = (Screen.height - heightOffset); } - if (!scaling) - horizontalRatio = verticalRatio = 1; + float screenHeight = canvas.height - heightOffset; + float screenWidth = canvas.width - widthOffset; - float rectangleX = rectangle.x * horizontalRatio; - float rectangleY = rectangle.y * verticalRatio; - float rectangleWidth = rectangle.width * horizontalRatio; - float rectangleHeight = rectangle.height * verticalRatio; - float borderWidthHeight = borderWidth * verticalRatio; - float borderWidthWidth = borderWidth * horizontalRatio; + float rectangleX = rectangle.x / webcamWidth * screenWidth - (Screen.width / 2) + (widthOffset / 2); + float rectangleY = rectangle.y / webcamHeight * screenHeight - (Screen.height / 2) + (heightOffset / 2); + float rectangleWidth = (rectangle.width / webcamWidth) * screenWidth; + float rectangleHeight = (rectangle.height / webcamHeight) * screenHeight; - if (!Constants.DEBUG) - rectangles = new List() - { - // Top Rectangle - new Rect(rectangleX, rectangleY, rectangleWidth, borderWidthHeight), - // Bottom Rectangle - new Rect(rectangleX, rectangleY + rectangleHeight - borderWidthHeight, rectangleWidth, borderWidthHeight), - // Right Rectangle - new Rect(rectangleX + rectangleWidth - borderWidthWidth, rectangleY + borderWidthHeight, borderWidthWidth, rectangleHeight - (borderWidthHeight * 2)), - // Left Rectangle - new Rect(rectangleX, rectangleY + borderWidthHeight, borderWidthWidth, rectangleHeight - (borderWidthHeight * 2)) - }; - else - rectangles = new List() - { - // Top Rectangle - new Rect(rectangleX, rectangleY, rectangleWidth, borderWidthHeight), - // Bottom Rectangle - new Rect(rectangleX, rectangleY + rectangleHeight - borderWidthHeight, rectangleWidth, borderWidthHeight), - // Right Rectangle - new Rect(rectangleX + rectangleWidth - borderWidthWidth, rectangleY + borderWidthHeight, borderWidthWidth, rectangleHeight - (borderWidthHeight * 2)), - // Left Rectangle - new Rect(rectangleX, rectangleY + borderWidthHeight, borderWidthWidth, rectangleHeight - (borderWidthHeight * 2)) - }; + float borderWidthHeight = borderWidth; + float borderWidthWidth = borderWidth; + + List rectangles = new List() + { + // Top Rectangle + new Rect(rectangleX, rectangleY, rectangleWidth, borderWidthHeight), + // Bottom Rectangle + new Rect(rectangleX, rectangleY + rectangleHeight - borderWidthHeight, rectangleWidth, borderWidthHeight), + // Right Rectangle + new Rect(rectangleX + rectangleWidth - borderWidthWidth, rectangleY + borderWidthHeight, borderWidthWidth, rectangleHeight - (borderWidthHeight * 2)), + // Left Rectangle + new Rect(rectangleX, rectangleY + borderWidthHeight, borderWidthWidth, rectangleHeight - (borderWidthHeight * 2)) + }; return rectangles; } diff --git a/FullScreen-Version/UnityProject/Assets/Scene1.unity b/FullScreen-Version/UnityProject/Assets/Scene1.unity index ea688a2c..226da1b1 100644 --- a/FullScreen-Version/UnityProject/Assets/Scene1.unity +++ b/FullScreen-Version/UnityProject/Assets/Scene1.unity @@ -331,7 +331,7 @@ Transform: m_GameObject: {fileID: 637749996} m_LocalRotation: {x: -0, y: 0.7071068, z: -0.7071068, w: 0} m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 0.047000032, y: 1, z: 0.037500005} + m_LocalScale: {x: 0.06926592, y: 1.4372826, z: 0.056102544} m_Children: [] m_Father: {fileID: 401017178} m_RootOrder: 1 @@ -347,6 +347,7 @@ GameObject: - component: {fileID: 1092709084} - component: {fileID: 1092709083} - component: {fileID: 1092709082} + - component: {fileID: 1092709085} m_Layer: 0 m_Name: Canvas m_TagString: Untagged @@ -429,6 +430,40 @@ Canvas: m_SortingLayerID: 0 m_SortingOrder: 0 m_TargetDisplay: 0 +--- !u!23 &1092709085 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1092709080} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 --- !u!1 &1313758928 GameObject: m_ObjectHideFlags: 0 @@ -504,7 +539,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4000010330146594, guid: e121ae2e4d95a3848b67d66fd7159756, type: 2} propertyPath: m_LocalPosition.y - value: -0.235 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4000010330146594, guid: e121ae2e4d95a3848b67d66fd7159756, type: 2} propertyPath: m_LocalPosition.z diff --git a/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.dll b/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.dll index 8c96409a..a5c7c3be 100644 Binary files a/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.dll and b/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.dll differ diff --git a/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.dll.mdb b/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.dll.mdb index 01738314..9c8578c7 100644 Binary files a/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.dll.mdb and b/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.dll.mdb differ diff --git a/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.dll.mdb.meta b/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.dll.mdb.meta index 7895196f..a9e49814 100644 --- a/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.dll.mdb.meta +++ b/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.dll.mdb.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 53459c761c204b9408f9a9cb8f80e306 -timeCreated: 1516150841 +timeCreated: 1516277985 licenseType: Free DefaultImporter: externalObjects: {} diff --git a/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.pdb b/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.pdb index a0a68b36..c86bf029 100644 Binary files a/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.pdb and b/FullScreen-Version/UnityProject/Assets/plugins/MediaFrameQrProcessing.pdb differ diff --git a/FullScreen-Version/UnityProject/Library/CurrentLayout.dwlt b/FullScreen-Version/UnityProject/Library/CurrentLayout.dwlt index 138ce891..440ae740 100644 --- a/FullScreen-Version/UnityProject/Library/CurrentLayout.dwlt +++ b/FullScreen-Version/UnityProject/Library/CurrentLayout.dwlt @@ -13,14 +13,14 @@ MonoBehaviour: m_EditorClassIdentifier: m_PixelRect: serializedVersion: 2 - x: 8 - y: 51 + x: 11 + y: 55 width: 1904 height: 991 m_ShowMode: 4 m_Title: m_RootView: {fileID: 2} - m_MinSize: {x: 950, y: 392} + m_MinSize: {x: 950, y: 542} m_MaxSize: {x: 10000, y: 10000} --- !u!114 &2 MonoBehaviour: @@ -106,10 +106,10 @@ MonoBehaviour: y: 30 width: 1904 height: 941 - m_MinSize: {x: 683, y: 342} - m_MaxSize: {x: 12008, y: 8042} + m_MinSize: {x: 681, y: 492} + m_MaxSize: {x: 14004, y: 14042} vertical: 0 - controlID: 32 + controlID: 115 --- !u!114 &6 MonoBehaviour: m_ObjectHideFlags: 52 @@ -128,10 +128,10 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 1627 + width: 1127 height: 941 - m_MinSize: {x: 406, y: 342} - m_MaxSize: {x: 8006, y: 8042} + m_MinSize: {x: 404, y: 492} + m_MaxSize: {x: 10002, y: 14042} vertical: 1 controlID: 33 --- !u!114 &7 @@ -152,10 +152,10 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 1627 - height: 547 - m_MinSize: {x: 406, y: 221} - m_MaxSize: {x: 8006, y: 4021} + width: 1127 + height: 611 + m_MinSize: {x: 404, y: 221} + m_MaxSize: {x: 8004, y: 4021} vertical: 0 controlID: 34 --- !u!114 &8 @@ -174,13 +174,13 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 296 - height: 547 + width: 380 + height: 611 m_MinSize: {x: 200, y: 200} m_MaxSize: {x: 4000, y: 4000} - m_ActualView: {fileID: 13} + m_ActualView: {fileID: 14} m_Panes: - - {fileID: 13} + - {fileID: 14} m_Selected: 0 m_LastSelected: 0 --- !u!114 &9 @@ -197,19 +197,19 @@ MonoBehaviour: m_Children: [] m_Position: serializedVersion: 2 - x: 296 + x: 380 y: 0 - width: 1331 - height: 547 - m_MinSize: {x: 200, y: 200} - m_MaxSize: {x: 4000, y: 4000} - m_ActualView: {fileID: 12} + width: 747 + height: 611 + m_MinSize: {x: 204, y: 221} + m_MaxSize: {x: 4004, y: 4021} + m_ActualView: {fileID: 13} m_Panes: - - {fileID: 14} - - {fileID: 12} + - {fileID: 13} - {fileID: 15} - m_Selected: 1 - m_LastSelected: 0 + - {fileID: 12} + m_Selected: 0 + m_LastSelected: 2 --- !u!114 &10 MonoBehaviour: m_ObjectHideFlags: 52 @@ -225,17 +225,17 @@ MonoBehaviour: m_Position: serializedVersion: 2 x: 0 - y: 547 - width: 1627 - height: 394 - m_MinSize: {x: 100, y: 100} - m_MaxSize: {x: 4000, y: 4000} - m_ActualView: {fileID: 17} + y: 611 + width: 1127 + height: 330 + m_MinSize: {x: 232, y: 271} + m_MaxSize: {x: 10002, y: 10021} + m_ActualView: {fileID: 16} m_Panes: - {fileID: 16} - {fileID: 17} - m_Selected: 1 - m_LastSelected: 0 + m_Selected: 0 + m_LastSelected: 1 --- !u!114 &11 MonoBehaviour: m_ObjectHideFlags: 52 @@ -250,12 +250,12 @@ MonoBehaviour: m_Children: [] m_Position: serializedVersion: 2 - x: 1627 + x: 1127 y: 0 - width: 277 + width: 777 height: 941 - m_MinSize: {x: 277, y: 71} - m_MaxSize: {x: 4002, y: 4021} + m_MinSize: {x: 275, y: 50} + m_MaxSize: {x: 4000, y: 4000} m_ActualView: {fileID: 18} m_Panes: - {fileID: 18} @@ -263,6 +263,83 @@ MonoBehaviour: m_Selected: 0 m_LastSelected: 1 --- !u!114 &12 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 1 + m_MinSize: {x: 100, y: 100} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Scene + m_Image: {fileID: 2318424515335265636, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 32 + m_Pos: + serializedVersion: 2 + x: 390 + y: 100 + width: 743 + height: 590 + m_PersistentViewDataDictionary: {fileID: 0} + m_SceneLighting: 1 + lastFramingTime: 6779.23934705752 + m_2DMode: 1 + m_isRotationLocked: 0 + m_AudioPlay: 0 + m_Position: + m_Target: {x: -0.5690838, y: 0.44067523, z: 1.9991622} + speed: 2 + m_Value: {x: -0.5690838, y: 0.44067523, z: 1.9991622} + m_RenderMode: 0 + m_ValidateTrueMetals: 0 + m_SceneViewState: + showFog: 1 + showMaterialUpdate: 0 + showSkybox: 1 + showFlares: 1 + showImageEffects: 1 + showParticleSystems: 1 + grid: + xGrid: + m_Target: 0 + speed: 2 + m_Value: 0 + yGrid: + m_Target: 0 + speed: 2 + m_Value: 0 + zGrid: + m_Target: 1 + speed: 2 + m_Value: 1 + m_Rotation: + m_Target: {x: 0, y: 0, z: 0, w: 1} + speed: 2 + m_Value: {x: 0, y: 0, z: 0, w: 1} + m_Size: + m_Target: 0.16739786 + speed: 2 + m_Value: 0.16739786 + m_Ortho: + m_Target: 1 + speed: 2 + m_Value: 1 + m_ShowGlobalGrid: 1 + m_LastSceneViewRotation: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} + m_LastSceneViewOrtho: 0 + m_ReplacementShader: {fileID: 0} + m_ReplacementString: + m_LastLockedObject: {fileID: 0} + m_ViewIsLockedToObject: 0 +--- !u!114 &13 MonoBehaviour: m_ObjectHideFlags: 52 m_PrefabParentObject: {fileID: 0} @@ -284,10 +361,10 @@ MonoBehaviour: m_DepthBufferBits: 32 m_Pos: serializedVersion: 2 - x: 306 - y: 100 - width: 1327 - height: 526 + x: 393 + y: 104 + width: 743 + height: 590 m_PersistentViewDataDictionary: {fileID: 0} m_MaximizeOnPlay: 0 m_Gizmos: 0 @@ -297,10 +374,10 @@ MonoBehaviour: m_ZoomArea: m_HRangeLocked: 0 m_VRangeLocked: 0 - m_HBaseRangeMin: -663.5 - m_HBaseRangeMax: 663.5 - m_VBaseRangeMin: -254.5 - m_VBaseRangeMax: 254.5 + m_HBaseRangeMin: -371.5 + m_HBaseRangeMax: 371.5 + m_VBaseRangeMin: -286.5 + m_VBaseRangeMax: 286.5 m_HAllowExceedBaseRangeMin: 1 m_HAllowExceedBaseRangeMax: 1 m_VAllowExceedBaseRangeMin: 1 @@ -317,29 +394,29 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 17 - width: 1327 - height: 509 + width: 743 + height: 573 m_Scale: {x: 1, y: 1} - m_Translation: {x: 663.5, y: 254.5} + m_Translation: {x: 371.5, y: 286.5} m_MarginLeft: 0 m_MarginRight: 0 m_MarginTop: 0 m_MarginBottom: 0 m_LastShownAreaInsideMargins: serializedVersion: 2 - x: -663.5 - y: -254.5 - width: 1327 - height: 509 + x: -371.5 + y: -286.5 + width: 743 + height: 573 m_MinimalGUI: 1 m_defaultScale: 1 m_TargetTexture: {fileID: 0} m_CurrentColorSpace: 0 - m_LastWindowPixelSize: {x: 1327, y: 526} + m_LastWindowPixelSize: {x: 743, y: 590} m_ClearInEditMode: 1 m_NoCameraWarning: 1 m_LowResolutionForAspectRatios: 01000000000100000100 ---- !u!114 &13 +--- !u!114 &14 MonoBehaviour: m_ObjectHideFlags: 52 m_PrefabParentObject: {fileID: 0} @@ -361,30 +438,30 @@ MonoBehaviour: m_DepthBufferBits: 0 m_Pos: serializedVersion: 2 - x: 8 - y: 100 - width: 294 - height: 526 + x: 11 + y: 104 + width: 378 + height: 590 m_PersistentViewDataDictionary: {fileID: 0} m_TreeViewState: scrollPos: {x: 0, y: 0} m_SelectedIDs: m_LastClickedID: 0 - m_ExpandedIDs: aaf4ffff5af5ffff1ef8ffff98fbffff00000000 + m_ExpandedIDs: e863fdffb264fdffa868fdff3a77fdff0078fdffc67afdffe69cfdffaa9dfdff70a0fdff12f5fdffd6f5fdff9cf8fdff6c0afeff3a0bfeff000efeffd427feff9628feff582bfeff0431feffc631feff8c34feff52c5fefffcdcfeff98f7feff961fffff1e35ffffa042ffff5c48ffff98fbffff00000000982d0000a22d0000b42d00002e3900003e390000 m_RenameOverlay: m_UserAcceptedRename: 0 - m_Name: - m_OriginalName: + m_Name: 3DTextPrefab + m_OriginalName: 3DTextPrefab m_EditFieldRect: serializedVersion: 2 x: 0 y: 0 width: 0 height: 0 - m_UserData: 0 + m_UserData: -1130 m_IsWaitingForDelay: 0 m_IsRenaming: 0 - m_OriginalEventType: 11 + m_OriginalEventType: 0 m_IsRenamingFilename: 0 m_ClientGUIView: {fileID: 8} m_SearchString: @@ -393,83 +470,6 @@ MonoBehaviour: m_CurrenRootInstanceID: 0 m_Locked: 0 m_CurrentSortingName: TransformSorting ---- !u!114 &14 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_AutoRepaintOnSceneChange: 1 - m_MinSize: {x: 200, y: 200} - m_MaxSize: {x: 4000, y: 4000} - m_TitleContent: - m_Text: Scene - m_Image: {fileID: 2318424515335265636, guid: 0000000000000000d000000000000000, - type: 0} - m_Tooltip: - m_DepthBufferBits: 32 - m_Pos: - serializedVersion: 2 - x: 370 - y: 92 - width: 795 - height: 815 - m_PersistentViewDataDictionary: {fileID: 0} - m_SceneLighting: 1 - lastFramingTime: 14367.47156206284 - m_2DMode: 0 - m_isRotationLocked: 0 - m_AudioPlay: 0 - m_Position: - m_Target: {x: -0.069037616, y: -0.105669826, z: 2} - speed: 2 - m_Value: {x: -0.069037616, y: -0.105669826, z: 2} - m_RenderMode: 0 - m_ValidateTrueMetals: 0 - m_SceneViewState: - showFog: 1 - showMaterialUpdate: 0 - showSkybox: 1 - showFlares: 1 - showImageEffects: 1 - showParticleSystems: 1 - grid: - xGrid: - m_Target: 0 - speed: 2 - m_Value: 0 - yGrid: - m_Target: 1 - speed: 2 - m_Value: 1 - zGrid: - m_Target: 0 - speed: 2 - m_Value: 0 - m_Rotation: - m_Target: {x: -0.13907892, y: 0.06262285, z: -0.008819198, w: -0.9882825} - speed: 2 - m_Value: {x: -0.13907892, y: 0.06262285, z: -0.008819198, w: -0.9882825} - m_Size: - m_Target: 0.8324854 - speed: 2 - m_Value: 0.8324854 - m_Ortho: - m_Target: 0 - speed: 2 - m_Value: 0 - m_ShowGlobalGrid: 1 - m_LastSceneViewRotation: {x: 0, y: 0, z: 0, w: 0} - m_LastSceneViewOrtho: 0 - m_ReplacementShader: {fileID: 0} - m_ReplacementString: - m_LastLockedObject: {fileID: 0} - m_ViewIsLockedToObject: 0 --- !u!114 &15 MonoBehaviour: m_ObjectHideFlags: 52 @@ -492,10 +492,10 @@ MonoBehaviour: m_DepthBufferBits: 0 m_Pos: serializedVersion: 2 - x: 370 - y: 92 - width: 795 - height: 815 + x: 390 + y: 100 + width: 743 + height: 590 m_PersistentViewDataDictionary: {fileID: 0} --- !u!114 &16 MonoBehaviour: @@ -519,10 +519,10 @@ MonoBehaviour: m_DepthBufferBits: 0 m_Pos: serializedVersion: 2 - x: 8 - y: 647 - width: 1625 - height: 373 + x: 11 + y: 715 + width: 1125 + height: 309 m_PersistentViewDataDictionary: {fileID: 0} m_SearchFilter: m_NameFilter: @@ -536,19 +536,19 @@ MonoBehaviour: m_ShowAllHits: 0 m_SearchArea: 0 m_Folders: - - Assets + - Assets/Images m_ViewMode: 1 m_StartGridSize: 64 m_LastFolders: - - Assets + - Assets/Images m_LastFoldersGridSize: -1 m_LastProjectPath: "E:\\Users\\dolci\\Documents\\ESILV\\PI\xB2 A5\\Repos\\Actimage-OCR-PISquare\\FullScreen-Version\\UnityProject" m_IsLocked: 0 m_FolderTreeState: - scrollPos: {x: 0, y: 79} - m_SelectedIDs: 6c2a0000 - m_LastClickedID: 10860 - m_ExpandedIDs: 000000004e2a0000562a0000e22a00007e2b0000de2b00006c2c0000962c0000 + scrollPos: {x: 0, y: 0} + m_SelectedIDs: f62b0000 + m_LastClickedID: 11254 + m_ExpandedIDs: 00000000522a00005a2a0000e62a0000e22b0000382c0000702c0000842c00009a2c000000ca9a3bffffff7f m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -576,7 +576,7 @@ MonoBehaviour: scrollPos: {x: 0, y: 0} m_SelectedIDs: m_LastClickedID: 0 - m_ExpandedIDs: 000000004e2a0000562a0000e22a00007e2b0000de2b00006c2c0000962c0000 + m_ExpandedIDs: 00000000522a00005a2a0000e62a0000e22b0000382c0000702c0000842c00009a2c0000 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -601,10 +601,10 @@ MonoBehaviour: m_Icon: {fileID: 0} m_ResourceFile: m_ListAreaState: - m_SelectedInstanceIDs: 38080000 - m_LastClickedInstanceID: 2104 + m_SelectedInstanceIDs: + m_LastClickedInstanceID: 0 m_HadKeyboardFocusLastEvent: 1 - m_ExpandedInstanceIDs: c6230000ce2700009207000000000000 + m_ExpandedInstanceIDs: c6230000ce27000092070000b22f000000000000d0360000 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -654,9 +654,9 @@ MonoBehaviour: m_Pos: serializedVersion: 2 x: 8 - y: 647 - width: 1625 - height: 373 + y: 711 + width: 1125 + height: 309 m_PersistentViewDataDictionary: {fileID: 0} --- !u!114 &18 MonoBehaviour: @@ -680,9 +680,9 @@ MonoBehaviour: m_DepthBufferBits: 0 m_Pos: serializedVersion: 2 - x: 1637 - y: 100 - width: 275 + x: 1140 + y: 104 + width: 775 height: 920 m_PersistentViewDataDictionary: {fileID: 0} m_ScrollPosition: {x: 0, y: 0} @@ -713,10 +713,10 @@ MonoBehaviour: m_DepthBufferBits: 0 m_Pos: serializedVersion: 2 - x: 1173 - y: 92 - width: 747 - height: 936 + x: 1137 + y: 100 + width: 775 + height: 920 m_PersistentViewDataDictionary: {fileID: 0} m_InitialOpenURL: https://public-cdn.cloud.unity3d.com/editor/production/cloud/hub m_GlobalObjectTypeName: diff --git a/FullScreen-Version/UnityProject/Library/InspectorExpandedItems.asset b/FullScreen-Version/UnityProject/Library/InspectorExpandedItems.asset index 11152239..ea69e2c0 100644 Binary files a/FullScreen-Version/UnityProject/Library/InspectorExpandedItems.asset and b/FullScreen-Version/UnityProject/Library/InspectorExpandedItems.asset differ diff --git a/FullScreen-Version/UnityProject/Library/LastBuild.buildreport b/FullScreen-Version/UnityProject/Library/LastBuild.buildreport index 22bb238a..0e7afc20 100644 Binary files a/FullScreen-Version/UnityProject/Library/LastBuild.buildreport and b/FullScreen-Version/UnityProject/Library/LastBuild.buildreport differ diff --git a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/Assembly-CSharp.dll b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/Assembly-CSharp.dll index 57bc4450..40758483 100644 Binary files a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/Assembly-CSharp.dll and b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/Assembly-CSharp.dll differ diff --git a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/Assembly-CSharp.pdb b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/Assembly-CSharp.pdb index 9376ec08..a17fbffc 100644 Binary files a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/Assembly-CSharp.pdb and b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/Assembly-CSharp.pdb differ diff --git a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/MediaFrameQrProcessing.dll b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/MediaFrameQrProcessing.dll index 8c96409a..a5c7c3be 100644 Binary files a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/MediaFrameQrProcessing.dll and b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/MediaFrameQrProcessing.dll differ diff --git a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/MediaFrameQrProcessing.dll.mdb b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/MediaFrameQrProcessing.dll.mdb index 01738314..9c8578c7 100644 Binary files a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/MediaFrameQrProcessing.dll.mdb and b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/MediaFrameQrProcessing.dll.mdb differ diff --git a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/MediaFrameQrProcessing.pdb b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/MediaFrameQrProcessing.pdb index a0a68b36..c86bf029 100644 Binary files a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/MediaFrameQrProcessing.pdb and b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/Managed/MediaFrameQrProcessing.pdb differ diff --git a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/boot.config b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/boot.config index 53a5de76..424b2c0f 100644 --- a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/boot.config +++ b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/boot.config @@ -1,8 +1,8 @@ player-connection-mode=Listen -player-connection-guid=377651268 +player-connection-guid=2891723459 player-connection-debug=0 player-connection-ip=172.17.116.209 player-connection-ip=169.254.80.80 player-connection-ip=172.16.80.1 -player-connection-ip=192.168.1.100 +player-connection-ip=172.21.48.109 wait-for-native-debugger=0 diff --git a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/globalgamemanagers b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/globalgamemanagers index 4bf766ed..c73574d1 100644 Binary files a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/globalgamemanagers and b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/globalgamemanagers differ diff --git a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/globalgamemanagers.assets b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/globalgamemanagers.assets index 13a801c4..7fff69d1 100644 Binary files a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/globalgamemanagers.assets and b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/globalgamemanagers.assets differ diff --git a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/globalgamemanagers.assets.resS b/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/globalgamemanagers.assets.resS deleted file mode 100644 index 8e8eec98..00000000 --- a/FullScreen-Version/UnityProject/Library/PlayerDataCache/Data/globalgamemanagers.assets.resS +++ /dev/null @@ -1,33 +0,0 @@ -說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪ(&ڪ(&ڪHڪHڪ'Hڪ(FڪH&ڪH&ڪH&ڪHFڪHFڪh&ڪGhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhgꪪꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(٪(ڪ&ڪ(ڪ(ڪh'UUU -'LZPHUUU -HUUUThUUUThUUUhUUUhUUUGUUUGUUU'GhڪHfڪhFڪhFڪhFڪhfڪhfڪggghhUUU5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUxꪪꪪ⪪ꪪꪪꪪ⪪ꪪꪪꪪ㪪ꪪ몪몪⪪⪪⪪⪪㪪㪪(㪪(㪪(㪪&㪪&㪪&㪪&(㪪&(㪪&(㪪說說說說說說骪骪骪(骪(骪('骪('骪H'(G᪪G(᪪G(᪪GH᪪hGHg᪪gH᪪gh᪪gh᪪g᪪g᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪᪪⪪⪪᪪᪪(٪(ڪUUU?4(UUU (UUhU* U*5%%%%ꪪꪪ㪪⪪㪪(㪪&(㪪說࿿'᪪'(᪪GH᪪gH᪪g᪪᪪᪪῿᪪u5UUU}-UUHUh*UhUh~UgxUUg\UUUg555UUUU%%%ꪪꪪ㪪⪪㪪(㪪&(㪪說࿿'᪪'(᪪GH᪪gH᪪g᪪᪪᪪῿᪪᪪(ڪ(&ڪ'HڪH&ڪGhڪhFڪgh⯯ꪪꪪ㪪⪪㪪(㪪&(㪪說࿿'᪪'(᪪GH᪪gH᪪g᪪᪪᪪῿᪪᪪(ڪ(&ڪ'HڪH&ڪGhڪhFڪgh\`UUUUW`⯯ꪪꪪ㪪⪪㪪(㪪&(㪪說࿿'᪪'(᪪GH᪪gH᪪g᪪᪪᪪῿᪪᪪(ڪ(&ڪ'HڪH&ڪGhڪhFڪgy@ @}UTXPꪪꪪ㪪⪪㪪(㪪&(㪪說࿿'᪪'(᪪GH᪪gH᪪g᪪᪪᪪῿᪪᪪(ڪ(&ڪ'HڪH&ڪGhڪhFڪg555%%%%ꪪꪪ㪪⪪㪪(㪪&(㪪說࿿'᪪'(᪪GH᪪gH᪪g᪪᪪᪪῿᪪᪪(ڪ(&ڪ'HڪH&ڪGhڪhFڪg\UpX\Vꪪꪪ㪪⪪㪪(㪪&(㪪說࿿'᪪'(᪪GH᪪gH᪪g᪪᪪᪪῿᪪᪪(ڪ(&ڪ'HڪH&ڪGhڪhFڪgh UUuUxUU⯯ꪪꪪ㪪⪪㪪(㪪&(㪪說࿿'᪪'(᪪GH᪪gH᪪g᪪᪪᪪῿᪪᪪(ڪ(&ڪ'HڪH&ڪGhڪhFڪgh⯯ꪪꪪ㪪⪪㪪(㪪&(㪪說࿿'᪪'(᪪GH᪪gH᪪g᪪᪪᪪῿᪪᪪(ڪ(&ڪ'HڪH&ڪGhڪhFڪgh⯯ꪪꪪ㪪⪪㪪(㪪&(㪪說࿿'᪪'(᪪GH᪪gH᪪g᪪᪪᪪῿᪪᪪(ڪ(&ڪ'HڪH&ڪGhڪhFڪgh⯯ꪪꪪ㪪⪪㪪(㪪&(㪪說࿿'᪪'(᪪GH᪪gH᪪g᪪᪪᪪῿᪪᪪(ڪ(&ڪ'HڪH&ڪGhڪhFڪgh⯯ꪪꪪ㪪⪪㪪(㪪&(㪪௯'᫫gHᯯhᯯᯯ('HڪGhڪhfڪ⫫⪪&㪪௯'᫫gHᯯhᯯᯯ('HڪGhڪhfڪ⫫⪪&㪪௯'᫫gHᯯhᯯᯯ`UhUUgU^U JUU\\\⪪&㪪௯'᫫gHᯯhᯯUU% @@@@ \\\\⪪&㪪௯'᫫gHᯯ= (`X}'^UU}GUUh  \\\\⪪&㪪௯'᫫gHᯯՕIUUTUUU'HڪGhڪlgUUU \\\\⪪&㪪௯'᫫gHᯯ5555````('HڪGhڪhfڪ \\\\⪪&㪪௯'᫫gHᯯ