/// Version 1.0.0 /// Last modified 24.5.2014 /// /// Copyright (C) 2014 Veli-Mikko Puupponen /// /// Halyri-system is a prototype emergency call system. Its purpose is to /// demonstrate the use of the advanced capabilities available in the current /// generation smartphones in facilitating the emergency service dispatcher's /// capability to determine the nature of the emergency and to dispatch help. /// /// For more information, see the README file of this package. /// /// The MIT License (MIT) /// /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to /// deal in the Software without restriction, including without limitation the /// rights to use, copy, modify, merge, publish, distribute, sublicense, /// and/or sell copies of the Software, and to permit persons to whom the /// Software is furnished to do so, subject to the following conditions: /// /// The above copyright notice and this permission notice shall be included in /// all copies or substantial portions of the Software. /// /// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR /// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, /// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE /// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER /// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING /// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS /// IN THE SOFTWARE. /// using System.IO; using System.IO.Compression; namespace Hake_WPF.Conversion { /// Veli-Mikko Puupponen /// /// The class for static compression methods. It contains methods to compress and decompress data. /// /// NOTICE: IO.Compression-library will not work, if the solution has Active Config set to any CPU. For /// phone, this should be ARM and for emulator, x86. /// class CompressionHelper { /// /// The function compresses the provided byte array using the GZip algorithm provided by /// System.IO.Compression library. /// /// The data to be compressed. /// True, if using optimal compression method, otherwise using fastest. /// The input data compressed with GZip. public static byte[] CompressGZip(byte[] sourceData, bool useOptimalCompression) { byte[] compressedData; CompressionLevel level = CompressionLevel.Fastest; if (useOptimalCompression) level = CompressionLevel.Optimal; using (MemoryStream inputStream = new MemoryStream(sourceData)) { using (MemoryStream compressedStream = new MemoryStream()) { using (GZipStream compressionStream = new GZipStream(compressedStream, level)) { inputStream.CopyTo(compressionStream); } compressedData = compressedStream.ToArray(); } } return compressedData; } /// /// The function decompresses the provided byte array using the GZip algorithm provided by /// System.IO.Compression library. /// /// The data to be decompressed. /// The input data decompressed with GZip. public static byte[] DecompressGZip(byte[] sourceData) { byte[] decompressedData; using (MemoryStream inputStream = new MemoryStream(sourceData)) { using (MemoryStream decompressedStream = new MemoryStream()) { using (GZipStream decompressionStream = new GZipStream(inputStream, CompressionMode.Decompress)) { decompressionStream.CopyTo(decompressedStream); } decompressedData = decompressedStream.ToArray(); } } return decompressedData; } } }