diff --git a/shadowsocks-csharp/3rd/zxing/BarcodeReader.cs b/shadowsocks-csharp/3rd/zxing/BarcodeReader.cs
deleted file mode 100755
index 5363a4d9..00000000
--- a/shadowsocks-csharp/3rd/zxing/BarcodeReader.cs
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright 2012 ZXing.Net authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System;
-#if !PORTABLE
-#if !(SILVERLIGHT || NETFX_CORE)
-#if !UNITY
-using System.Drawing;
-using ZXing.QrCode;
-#else
-using UnityEngine;
-#endif
-#elif NETFX_CORE
-using Windows.UI.Xaml.Media.Imaging;
-#else
-using System.Windows.Media.Imaging;
-#endif
-#endif
-#if MONOANDROID
-using Android.Graphics;
-#endif
-
-namespace ZXing
-{
- ///
- /// A smart class to decode the barcode inside a bitmap object
- ///
-#if MONOTOUCH
- public class BarcodeReader : BarcodeReaderGeneric, IBarcodeReader, IMultipleBarcodeReader
- {
- private static readonly Func defaultCreateLuminanceSource =
- (img) => new RGBLuminanceSource(img);
-#else
-#if !PORTABLE
-#if !(SILVERLIGHT || NETFX_CORE)
-#if !UNITY
- public class BarcodeReader : BarcodeReaderGeneric, IBarcodeReader
- {
- private static readonly Func defaultCreateLuminanceSource =
- (bitmap) => new BitmapLuminanceSource(bitmap);
-#else
- public class BarcodeReader : BarcodeReaderGeneric, IBarcodeReader, IMultipleBarcodeReader
- {
- private static readonly Func defaultCreateLuminanceSource =
- (rawColor32, width, height) => new Color32LuminanceSource(rawColor32, width, height);
-#endif
-#else
- public class BarcodeReader : BarcodeReaderGeneric, IBarcodeReader, IMultipleBarcodeReader
- {
- private static readonly Func defaultCreateLuminanceSource =
- (bitmap) => new BitmapLuminanceSource(bitmap);
-#endif
-#else
- public class BarcodeReader : BarcodeReaderGeneric, IBarcodeReader, IMultipleBarcodeReader
- {
- private static readonly Func defaultCreateLuminanceSource =
- (data) => null;
-#endif
-#endif
- ///
- /// Initializes a new instance of the class.
- ///
- public BarcodeReader()
- : this(new QRCodeReader(), defaultCreateLuminanceSource, null)
- {
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// Sets the reader which should be used to find and decode the barcode.
- /// If null then MultiFormatReader is used
- /// Sets the function to create a luminance source object for a bitmap.
- /// If null, an exception is thrown when Decode is called
- /// Sets the function to create a binarizer object for a luminance source.
- /// If null then HybridBinarizer is used
- public BarcodeReader(Reader reader,
-#if MONOTOUCH
- Func createLuminanceSource,
-#elif MONOANDROID
- Func createLuminanceSource,
-#else
-#if !(SILVERLIGHT || NETFX_CORE)
-#if !UNITY
-#if !PORTABLE
- Func createLuminanceSource,
-#else
- Func createLuminanceSource,
-#endif
-#else
- Func createLuminanceSource,
-#endif
-#else
- Func createLuminanceSource,
-#endif
-#endif
- Func createBinarizer
- )
- : base(reader, createLuminanceSource ?? defaultCreateLuminanceSource, createBinarizer)
- {
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// Sets the reader which should be used to find and decode the barcode.
- /// If null then MultiFormatReader is used
- /// Sets the function to create a luminance source object for a bitmap.
- /// If null, an exception is thrown when Decode is called
- /// Sets the function to create a binarizer object for a luminance source.
- /// If null then HybridBinarizer is used
- public BarcodeReader(Reader reader,
-#if MONOTOUCH
- Func createLuminanceSource,
-#elif MONOANDROID
- Func createLuminanceSource,
-#else
-#if !(SILVERLIGHT || NETFX_CORE)
-#if !UNITY
-#if !PORTABLE
- Func createLuminanceSource,
-#else
- Func createLuminanceSource,
-#endif
-#else
- Func createLuminanceSource,
-#endif
-#else
- Func createLuminanceSource,
-#endif
-#endif
- Func createBinarizer,
- Func createRGBLuminanceSource
- )
- : base(reader, createLuminanceSource ?? defaultCreateLuminanceSource, createBinarizer, createRGBLuminanceSource)
- {
- }
- }
-}
diff --git a/shadowsocks-csharp/3rd/zxing/BarcodeReaderGeneric.cs b/shadowsocks-csharp/3rd/zxing/BarcodeReaderGeneric.cs
deleted file mode 100755
index 3ce46568..00000000
--- a/shadowsocks-csharp/3rd/zxing/BarcodeReaderGeneric.cs
+++ /dev/null
@@ -1,436 +0,0 @@
-/*
- * Copyright 2012 ZXing.Net authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System;
-using System.Collections.Generic;
-
-using ZXing.Common;
-using ZXing.QrCode;
-
-namespace ZXing
-{
- ///
- /// A smart class to decode the barcode inside a bitmap object
- ///
- public class BarcodeReaderGeneric : IBarcodeReaderGeneric
- {
- private static readonly Func defaultCreateBinarizer =
- (luminanceSource) => new HybridBinarizer(luminanceSource);
-
- protected static readonly Func defaultCreateRGBLuminanceSource =
- (rawBytes, width, height, format) => new RGBLuminanceSource(rawBytes, width, height, format);
-
- private Reader reader;
- private readonly Func createRGBLuminanceSource;
-#if !UNITY
- private readonly Func createLuminanceSource;
-#else
- private readonly Func createLuminanceSource;
-#endif
- private readonly Func createBinarizer;
- private bool usePreviousState;
- private DecodingOptions options;
-
- ///
- /// Gets or sets the options.
- ///
- ///
- /// The options.
- ///
- public DecodingOptions Options
- {
- get { return options ?? (options = new DecodingOptions()); }
- set { options = value; }
- }
-
- ///
- /// Gets the reader which should be used to find and decode the barcode.
- ///
- ///
- /// The reader.
- ///
- protected Reader Reader
- {
- get
- {
- return reader ?? (reader = new QRCodeReader());
- }
- }
-
- ///
- /// Gets or sets a method which is called if an important point is found
- ///
- ///
- /// The result point callback.
- ///
- public event Action ResultPointFound
- {
- add
- {
- if (!Options.Hints.ContainsKey(DecodeHintType.NEED_RESULT_POINT_CALLBACK))
- {
- var callback = new ResultPointCallback(OnResultPointFound);
- Options.Hints[DecodeHintType.NEED_RESULT_POINT_CALLBACK] = callback;
- }
- explicitResultPointFound += value;
- usePreviousState = false;
- }
- remove
- {
- explicitResultPointFound -= value;
- if (explicitResultPointFound == null)
- Options.Hints.Remove(DecodeHintType.NEED_RESULT_POINT_CALLBACK);
- usePreviousState = false;
- }
- }
-
- private event Action explicitResultPointFound;
-
- ///
- /// event is executed if a result was found via decode
- ///
- public event Action ResultFound;
-
- ///
- /// Gets or sets a flag which cause a deeper look into the bitmap
- ///
- ///
- /// true if [try harder]; otherwise, false.
- ///
- [Obsolete("Please use the Options.TryHarder property instead.")]
- public bool TryHarder
- {
- get { return Options.TryHarder; }
- set { Options.TryHarder = value; }
- }
-
- ///
- /// Image is a pure monochrome image of a barcode.
- ///
- ///
- /// true if monochrome image of a barcode; otherwise, false.
- ///
- [Obsolete("Please use the Options.PureBarcode property instead.")]
- public bool PureBarcode
- {
- get { return Options.PureBarcode; }
- set { Options.PureBarcode = value; }
- }
-
- ///
- /// Specifies what character encoding to use when decoding, where applicable (type String)
- ///
- ///
- /// The character set.
- ///
- [Obsolete("Please use the Options.CharacterSet property instead.")]
- public string CharacterSet
- {
- get { return Options.CharacterSet; }
- set { Options.CharacterSet = value; }
- }
-
- ///
- /// Image is known to be of one of a few possible formats.
- /// Maps to a {@link java.util.List} of {@link BarcodeFormat}s.
- ///
- ///
- /// The possible formats.
- ///
- [Obsolete("Please use the Options.PossibleFormats property instead.")]
- public IList PossibleFormats
- {
- get { return Options.PossibleFormats; }
- set { Options.PossibleFormats = value; }
- }
-
- ///
- /// Gets or sets a value indicating whether the image should be automatically rotated.
- /// Rotation is supported for 90, 180 and 270 degrees
- ///
- ///
- /// true if image should be rotated; otherwise, false.
- ///
- public bool AutoRotate { get; set; }
-
- ///
- /// Gets or sets a value indicating whether the image should be automatically inverted
- /// if no result is found in the original image.
- /// ATTENTION: Please be carefully because it slows down the decoding process if it is used
- ///
- ///
- /// true if image should be inverted; otherwise, false.
- ///
- public bool TryInverted { get; set; }
-
-#if !UNITY
- ///
- /// Optional: Gets or sets the function to create a luminance source object for a bitmap.
- /// If null a platform specific default LuminanceSource is used
- ///
- ///
- /// The function to create a luminance source object.
- ///
- protected Func CreateLuminanceSource
-#else
- ///
- /// Optional: Gets or sets the function to create a luminance source object for a bitmap.
- /// If null a platform specific default LuminanceSource is used
- ///
- ///
- /// The function to create a luminance source object.
- ///
- protected Func CreateLuminanceSource
-#endif
- {
- get
- {
- return createLuminanceSource;
- }
- }
-
- ///
- /// Optional: Gets or sets the function to create a binarizer object for a luminance source.
- /// If null then HybridBinarizer is used
- ///
- ///
- /// The function to create a binarizer object.
- ///
- protected Func CreateBinarizer
- {
- get
- {
- return createBinarizer ?? defaultCreateBinarizer;
- }
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- public BarcodeReaderGeneric()
- : this(new QRCodeReader(), null, defaultCreateBinarizer)
- {
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// Sets the reader which should be used to find and decode the barcode.
- /// If null then MultiFormatReader is used
- /// Sets the function to create a luminance source object for a bitmap.
- /// If null, an exception is thrown when Decode is called
- /// Sets the function to create a binarizer object for a luminance source.
- /// If null then HybridBinarizer is used
- public BarcodeReaderGeneric(Reader reader,
-#if !UNITY
- Func createLuminanceSource,
-#else
- Func createLuminanceSource,
-#endif
- Func createBinarizer
- )
- : this(reader, createLuminanceSource, createBinarizer, null)
- {
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// Sets the reader which should be used to find and decode the barcode.
- /// If null then MultiFormatReader is used
- /// Sets the function to create a luminance source object for a bitmap.
- /// If null, an exception is thrown when Decode is called
- /// Sets the function to create a binarizer object for a luminance source.
- /// If null then HybridBinarizer is used
- /// Sets the function to create a luminance source object for a rgb array.
- /// If null the RGBLuminanceSource is used. The handler is only called when Decode with a byte[] array is called.
- public BarcodeReaderGeneric(Reader reader,
-#if !UNITY
- Func createLuminanceSource,
-#else
- Func createLuminanceSource,
-#endif
- Func createBinarizer,
- Func createRGBLuminanceSource
- )
- {
- this.reader = reader ?? new QRCodeReader();
- this.createLuminanceSource = createLuminanceSource;
- this.createBinarizer = createBinarizer ?? defaultCreateBinarizer;
- this.createRGBLuminanceSource = createRGBLuminanceSource ?? defaultCreateRGBLuminanceSource;
- Options.ValueChanged += (o, args) => usePreviousState = false;
- usePreviousState = false;
- }
-
-#if !PORTABLE
-#if !UNITY
- ///
- /// Decodes the specified barcode bitmap.
- ///
- /// The barcode bitmap.
- /// the result data or null
- public Result Decode(T barcodeBitmap)
-#else
- ///
- /// Decodes the specified barcode bitmap.
- ///
- /// raw bytes of the image in RGB order
- ///
- ///
- ///
- /// the result data or null
- ///
- public Result Decode(T rawRGB, int width, int height)
-#endif
- {
- if (CreateLuminanceSource == null)
- {
- throw new InvalidOperationException("You have to declare a luminance source delegate.");
- }
-
-#if !UNITY
- if (barcodeBitmap == null)
- throw new ArgumentNullException("barcodeBitmap");
-#else
- if (rawRGB == null)
- throw new ArgumentNullException("rawRGB");
-#endif
-
-#if !UNITY
- var luminanceSource = CreateLuminanceSource(barcodeBitmap);
-#else
- var luminanceSource = CreateLuminanceSource(rawRGB, width, height);
-#endif
-
- return Decode(luminanceSource);
- }
-#endif
-
- ///
- /// Tries to decode a barcode within an image which is given by a luminance source.
- /// That method gives a chance to prepare a luminance source completely before calling
- /// the time consuming decoding method. On the other hand there is a chance to create
- /// a luminance source which is independent from external resources (like Bitmap objects)
- /// and the decoding call can be made in a background thread.
- ///
- /// The luminance source.
- ///
- virtual public Result Decode(LuminanceSource luminanceSource)
- {
- var result = default(Result);
- var binarizer = CreateBinarizer(luminanceSource);
- var binaryBitmap = new BinaryBitmap(binarizer);
- var multiformatReader = Reader as QRCodeReader;
- var rotationCount = 0;
- var rotationMaxCount = 1;
-
- if (AutoRotate)
- {
- Options.Hints[DecodeHintType.TRY_HARDER_WITHOUT_ROTATION] = true;
- rotationMaxCount = 4;
- }
- else
- {
- if (Options.Hints.ContainsKey(DecodeHintType.TRY_HARDER_WITHOUT_ROTATION))
- Options.Hints.Remove(DecodeHintType.TRY_HARDER_WITHOUT_ROTATION);
- }
-
- for (; rotationCount < rotationMaxCount; rotationCount++)
- {
- result = Reader.decode(binaryBitmap, Options.Hints);
- usePreviousState = true;
-
-
- if (result != null ||
- !luminanceSource.RotateSupported ||
- !AutoRotate)
- break;
-
- binaryBitmap = new BinaryBitmap(CreateBinarizer(luminanceSource.rotateCounterClockwise()));
- }
-
- if (result != null)
- {
- if (result.ResultMetadata == null)
- {
- result.putMetadata(ResultMetadataType.ORIENTATION, rotationCount * 90);
- }
- else if (!result.ResultMetadata.ContainsKey(ResultMetadataType.ORIENTATION))
- {
- result.ResultMetadata[ResultMetadataType.ORIENTATION] = rotationCount * 90;
- }
- else
- {
- // perhaps the core decoder rotates the image already (can happen if TryHarder is specified)
- result.ResultMetadata[ResultMetadataType.ORIENTATION] = ((int)(result.ResultMetadata[ResultMetadataType.ORIENTATION]) + rotationCount * 90) % 360;
- }
-
- OnResultFound(result);
- }
-
- return result;
- }
-
-
- protected void OnResultsFound(IEnumerable results)
- {
- if (ResultFound != null)
- {
- foreach (var result in results)
- {
- ResultFound(result);
- }
- }
- }
-
- protected void OnResultFound(Result result)
- {
- if (ResultFound != null)
- {
- ResultFound(result);
- }
- }
-
- protected void OnResultPointFound(ResultPoint resultPoint)
- {
- if (explicitResultPointFound != null)
- {
- explicitResultPointFound(resultPoint);
- }
- }
-
- ///
- /// Decodes the specified barcode bitmap.
- ///
- /// The image as byte[] array.
- /// The width.
- /// The height.
- /// The format.
- ///
- /// the result data or null
- ///
- public Result Decode(byte[] rawRGB, int width, int height, RGBLuminanceSource.BitmapFormat format)
- {
- if (rawRGB == null)
- throw new ArgumentNullException("rawRGB");
-
- var luminanceSource = createRGBLuminanceSource(rawRGB, width, height, format);
-
- return Decode(luminanceSource);
- }
-
- }
-}
diff --git a/shadowsocks-csharp/3rd/zxing/IBarcodeReader.cs b/shadowsocks-csharp/3rd/zxing/IBarcodeReader.cs
deleted file mode 100755
index 66d90ffb..00000000
--- a/shadowsocks-csharp/3rd/zxing/IBarcodeReader.cs
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright 2012 ZXing.Net authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System;
-using System.Collections.Generic;
-
-#if !(SILVERLIGHT || NETFX_CORE)
-#if !UNITY
-#if !PORTABLE
-using System.Drawing;
-#endif
-#else
-using UnityEngine;
-#endif
-#elif NETFX_CORE
-using Windows.UI.Xaml.Media.Imaging;
-#else
-using System.Windows.Media.Imaging;
-#endif
-
-using ZXing.Common;
-
-namespace ZXing
-{
- ///
- /// Interface for a smart class to decode the barcode inside a bitmap object
- ///
- public interface IBarcodeReader
- {
- ///
- /// event is executed when a result point was found
- ///
- event Action ResultPointFound;
-
- ///
- /// event is executed when a result was found via decode
- ///
- event Action ResultFound;
-
- ///
- /// Gets or sets a flag which cause a deeper look into the bitmap
- ///
- ///
- /// true if [try harder]; otherwise, false.
- ///
- [Obsolete("Please use the Options.TryHarder property instead.")]
- bool TryHarder { get; set; }
-
- ///
- /// Image is a pure monochrome image of a barcode.
- ///
- ///
- /// true if monochrome image of a barcode; otherwise, false.
- ///
- [Obsolete("Please use the Options.PureBarcode property instead.")]
- bool PureBarcode { get; set; }
-
- ///
- /// Specifies what character encoding to use when decoding, where applicable (type String)
- ///
- ///
- /// The character set.
- ///
- [Obsolete("Please use the Options.CharacterSet property instead.")]
- string CharacterSet { get; set; }
-
- ///
- /// Image is known to be of one of a few possible formats.
- /// Maps to a {@link java.util.List} of {@link BarcodeFormat}s.
- ///
- ///
- /// The possible formats.
- ///
- [Obsolete("Please use the Options.PossibleFormats property instead.")]
- IList PossibleFormats { get; set; }
-
- ///
- /// Specifies some options which influence the decoding process
- ///
- DecodingOptions Options { get; set; }
-
- ///
- /// Decodes the specified barcode bitmap which is given by a generic byte array with the order RGB24.
- ///
- /// The image as RGB24 array.
- /// The width.
- /// The height.
- /// The format.
- ///
- /// the result data or null
- ///
- Result Decode(byte[] rawRGB, int width, int height, RGBLuminanceSource.BitmapFormat format);
-
- ///
- /// Tries to decode a barcode within an image which is given by a luminance source.
- /// That method gives a chance to prepare a luminance source completely before calling
- /// the time consuming decoding method. On the other hand there is a chance to create
- /// a luminance source which is independent from external resources (like Bitmap objects)
- /// and the decoding call can be made in a background thread.
- ///
- /// The luminance source.
- ///
- Result Decode(LuminanceSource luminanceSource);
-
-#if MONOTOUCH
- ///
- /// Decodes the specified barcode bitmap.
- ///
- /// The barcode bitmap.
- /// the result data or null
- Result Decode(MonoTouch.UIKit.UIImage barcodeImage);
-#elif MONOANDROID
- ///
- /// Decodes the specified barcode bitmap.
- ///
- /// The barcode bitmap.
- /// the result data or null
- Result Decode(Android.Graphics.Bitmap barcodeImage);
-#else
-#if !PORTABLE
-#if !(SILVERLIGHT || NETFX_CORE)
-#if !UNITY
- ///
- /// Decodes the specified barcode bitmap.
- ///
- /// The barcode bitmap.
- /// the result data or null
- Result Decode(Bitmap barcodeBitmap);
-#else
- ///
- /// Decodes the specified barcode bitmap.
- ///
- /// The image as Color32 array.
- /// the result data or null
- Result Decode(Color32[] rawColor32, int width, int height);
-#endif
-#else
- ///
- /// Decodes the specified barcode bitmap.
- ///
- /// The barcode bitmap.
- /// the result data or null
- Result Decode(WriteableBitmap barcodeBitmap);
-#endif
-#endif
-#endif
- }
-}
diff --git a/shadowsocks-csharp/3rd/zxing/IBarcodeReaderGeneric.cs b/shadowsocks-csharp/3rd/zxing/IBarcodeReaderGeneric.cs
deleted file mode 100755
index 1860988a..00000000
--- a/shadowsocks-csharp/3rd/zxing/IBarcodeReaderGeneric.cs
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright 2012 ZXing.Net authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System;
-using System.Collections.Generic;
-
-using ZXing.Common;
-
-namespace ZXing
-{
- ///
- /// Interface for a smart class to decode the barcode inside a bitmap object
- ///
- /// gives the type of the input data
- public interface IBarcodeReaderGeneric
- {
- ///
- /// event is executed when a result point was found
- ///
- event Action ResultPointFound;
-
- ///
- /// event is executed when a result was found via decode
- ///
- event Action ResultFound;
-
- ///
- /// Gets or sets a flag which cause a deeper look into the bitmap
- ///
- ///
- /// true if [try harder]; otherwise, false.
- ///
- [Obsolete("Please use the Options.TryHarder property instead.")]
- bool TryHarder { get; set; }
-
- ///
- /// Image is a pure monochrome image of a barcode.
- ///
- ///
- /// true if monochrome image of a barcode; otherwise, false.
- ///
- [Obsolete("Please use the Options.PureBarcode property instead.")]
- bool PureBarcode { get; set; }
-
- ///
- /// Specifies what character encoding to use when decoding, where applicable (type String)
- ///
- ///
- /// The character set.
- ///
- [Obsolete("Please use the Options.CharacterSet property instead.")]
- string CharacterSet { get; set; }
-
- ///
- /// Image is known to be of one of a few possible formats.
- /// Maps to a {@link java.util.List} of {@link BarcodeFormat}s.
- ///
- ///
- /// The possible formats.
- ///
- [Obsolete("Please use the Options.PossibleFormats property instead.")]
- IList PossibleFormats { get; set; }
-
- ///
- /// Specifies some options which influence the decoding process
- ///
- DecodingOptions Options { get; set; }
-
- ///
- /// Decodes the specified barcode bitmap which is given by a generic byte array.
- ///
- /// The barcode bitmap.
- /// The width.
- /// The height.
- /// The format.
- ///
- /// the result data or null
- ///
- Result Decode(byte[] rawRGB, int width, int height, RGBLuminanceSource.BitmapFormat format);
-
- ///
- /// Tries to decode a barcode within an image which is given by a luminance source.
- /// That method gives a chance to prepare a luminance source completely before calling
- /// the time consuming decoding method. On the other hand there is a chance to create
- /// a luminance source which is independent from external resources (like Bitmap objects)
- /// and the decoding call can be made in a background thread.
- ///
- /// The luminance source.
- ///
- Result Decode(LuminanceSource luminanceSource);
-
-#if !PORTABLE
-#if !UNITY
- ///
- /// Decodes the specified barcode bitmap.
- ///
- /// The barcode bitmap.
- /// the result data or null
- Result Decode(T barcodeBitmap);
-#else
- ///
- /// Decodes the specified barcode bitmap.
- ///
- /// The barcode bitmap.
- /// the result data or null
- Result Decode(T rawRGB, int width, int height);
-#endif
-#endif
- }
-}
diff --git a/shadowsocks-csharp/3rd/zxing/RGBLuminanceSource.cs b/shadowsocks-csharp/3rd/zxing/RGBLuminanceSource.cs
deleted file mode 100755
index 6af439ef..00000000
--- a/shadowsocks-csharp/3rd/zxing/RGBLuminanceSource.cs
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
-* Copyright 2012 ZXing.Net authors
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-using System;
-
-namespace ZXing
-{
- ///
- /// Luminance source class which support different formats of images.
- ///
- public partial class RGBLuminanceSource : BaseLuminanceSource
- {
- ///
- /// enumeration of supported bitmap format which the RGBLuminanceSource can process
- ///
- public enum BitmapFormat
- {
- ///
- /// format of the byte[] isn't known. RGBLuminanceSource tries to determine the best possible value
- ///
- Unknown,
- ///
- /// grayscale array, the byte array is a luminance array with 1 byte per pixel
- ///
- Gray8,
- ///
- /// 3 bytes per pixel with the channels red, green and blue
- ///
- RGB24,
- ///
- /// 4 bytes per pixel with the channels red, green and blue
- ///
- RGB32,
- ///
- /// 4 bytes per pixel with the channels alpha, red, green and blue
- ///
- ARGB32,
- ///
- /// 3 bytes per pixel with the channels blue, green and red
- ///
- BGR24,
- ///
- /// 4 bytes per pixel with the channels blue, green and red
- ///
- BGR32,
- ///
- /// 4 bytes per pixel with the channels blue, green, red and alpha
- ///
- BGRA32,
- ///
- /// 2 bytes per pixel, 5 bit red, 6 bits green and 5 bits blue
- ///
- RGB565,
- ///
- /// 4 bytes per pixel with the channels red, green, blue and alpha
- ///
- RGBA32,
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The width.
- /// The height.
- protected RGBLuminanceSource(int width, int height)
- : base(width, height)
- {
- }
-
- ///
- /// Initializes a new instance of the class.
- /// It supports a byte array with 3 bytes per pixel (RGB24).
- ///
- /// The RGB raw bytes.
- /// The width.
- /// The height.
- public RGBLuminanceSource(byte[] rgbRawBytes, int width, int height)
- : this(rgbRawBytes, width, height, BitmapFormat.RGB24)
- {
- }
-
- ///
- /// Initializes a new instance of the class.
- /// It supports a byte array with 1 byte per pixel (Gray8).
- /// That means the whole array consists of the luminance values (grayscale).
- ///
- /// The luminance array.
- /// The width.
- /// The height.
- /// if set to true [is8 bit].
- [Obsolete("Use RGBLuminanceSource(luminanceArray, width, height, BitmapFormat.Gray8)")]
- public RGBLuminanceSource(byte[] luminanceArray, int width, int height, bool is8Bit)
- : this(luminanceArray, width, height, BitmapFormat.Gray8)
- {
- }
-
- ///
- /// Initializes a new instance of the class.
- /// It supports a byte array with 3 bytes per pixel (RGB24).
- ///
- /// The RGB raw bytes.
- /// The width.
- /// The height.
- /// The bitmap format.
- public RGBLuminanceSource(byte[] rgbRawBytes, int width, int height, BitmapFormat bitmapFormat)
- : base(width, height)
- {
- CalculateLuminance(rgbRawBytes, bitmapFormat);
- }
-
- ///
- /// Should create a new luminance source with the right class type.
- /// The method is used in methods crop and rotate.
- ///
- /// The new luminances.
- /// The width.
- /// The height.
- ///
- protected override LuminanceSource CreateLuminanceSource(byte[] newLuminances, int width, int height)
- {
- return new RGBLuminanceSource(width, height) { luminances = newLuminances };
- }
-
- private static BitmapFormat DetermineBitmapFormat(byte[] rgbRawBytes, int width, int height)
- {
- var square = width*height;
- var byteperpixel = rgbRawBytes.Length/square;
-
- switch (byteperpixel)
- {
- case 1:
- return BitmapFormat.Gray8;
- case 2:
- return BitmapFormat.RGB565;
- case 3:
- return BitmapFormat.RGB24;
- case 4:
- return BitmapFormat.RGB32;
- default:
- throw new ArgumentException("The bitmap format could not be determined. Please specify the correct value.");
- }
- }
-
- protected void CalculateLuminance(byte[] rgbRawBytes, BitmapFormat bitmapFormat)
- {
- if (bitmapFormat == BitmapFormat.Unknown)
- {
- bitmapFormat = DetermineBitmapFormat(rgbRawBytes, Width, Height);
- }
- switch (bitmapFormat)
- {
- case BitmapFormat.Gray8:
- Buffer.BlockCopy(rgbRawBytes, 0, luminances, 0, rgbRawBytes.Length < luminances.Length ? rgbRawBytes.Length : luminances.Length);
- break;
- case BitmapFormat.RGB24:
- CalculateLuminanceRGB24(rgbRawBytes);
- break;
- case BitmapFormat.BGR24:
- CalculateLuminanceBGR24(rgbRawBytes);
- break;
- case BitmapFormat.RGB32:
- CalculateLuminanceRGB32(rgbRawBytes);
- break;
- case BitmapFormat.BGR32:
- CalculateLuminanceBGR32(rgbRawBytes);
- break;
- case BitmapFormat.RGBA32:
- CalculateLuminanceRGBA32(rgbRawBytes);
- break;
- case BitmapFormat.ARGB32:
- CalculateLuminanceARGB32(rgbRawBytes);
- break;
- case BitmapFormat.BGRA32:
- CalculateLuminanceBGRA32(rgbRawBytes);
- break;
- case BitmapFormat.RGB565:
- CalculateLuminanceRGB565(rgbRawBytes);
- break;
- default:
- throw new ArgumentException("The bitmap format isn't supported.", bitmapFormat.ToString());
- }
- }
-
- private void CalculateLuminanceRGB565(byte[] rgb565RawData)
- {
- var luminanceIndex = 0;
- for (var index = 0; index < rgb565RawData.Length && luminanceIndex < luminances.Length; index += 2, luminanceIndex++)
- {
- var byte1 = rgb565RawData[index];
- var byte2 = rgb565RawData[index + 1];
-
- var b5 = byte1 & 0x1F;
- var g5 = (((byte1 & 0xE0) >> 5) | ((byte2 & 0x03) << 3)) & 0x1F;
- var r5 = (byte2 >> 2) & 0x1F;
- var r8 = (r5 * 527 + 23) >> 6;
- var g8 = (g5 * 527 + 23) >> 6;
- var b8 = (b5 * 527 + 23) >> 6;
-
- // cheap, not fully accurate conversion
- //var pixel = (byte2 << 8) | byte1;
- //b8 = (((pixel) & 0x001F) << 3);
- //g8 = (((pixel) & 0x07E0) >> 2) & 0xFF;
- //r8 = (((pixel) & 0xF800) >> 8);
-
- luminances[luminanceIndex] = (byte)((RChannelWeight * r8 + GChannelWeight * g8 + BChannelWeight * b8) >> ChannelWeight);
- }
- }
-
- private void CalculateLuminanceRGB24(byte[] rgbRawBytes)
- {
- for (int rgbIndex = 0, luminanceIndex = 0; rgbIndex < rgbRawBytes.Length && luminanceIndex < luminances.Length; luminanceIndex++)
- {
- // Calculate luminance cheaply, favoring green.
- int r = rgbRawBytes[rgbIndex++];
- int g = rgbRawBytes[rgbIndex++];
- int b = rgbRawBytes[rgbIndex++];
- luminances[luminanceIndex] = (byte)((RChannelWeight * r + GChannelWeight * g + BChannelWeight * b) >> ChannelWeight);
- }
- }
-
- private void CalculateLuminanceBGR24(byte[] rgbRawBytes)
- {
- for (int rgbIndex = 0, luminanceIndex = 0; rgbIndex < rgbRawBytes.Length && luminanceIndex < luminances.Length; luminanceIndex++)
- {
- // Calculate luminance cheaply, favoring green.
- int b = rgbRawBytes[rgbIndex++];
- int g = rgbRawBytes[rgbIndex++];
- int r = rgbRawBytes[rgbIndex++];
- luminances[luminanceIndex] = (byte)((RChannelWeight * r + GChannelWeight * g + BChannelWeight * b) >> ChannelWeight);
- }
- }
-
- private void CalculateLuminanceRGB32(byte[] rgbRawBytes)
- {
- for (int rgbIndex = 0, luminanceIndex = 0; rgbIndex < rgbRawBytes.Length && luminanceIndex < luminances.Length; luminanceIndex++)
- {
- // Calculate luminance cheaply, favoring green.
- int r = rgbRawBytes[rgbIndex++];
- int g = rgbRawBytes[rgbIndex++];
- int b = rgbRawBytes[rgbIndex++];
- rgbIndex++;
- luminances[luminanceIndex] = (byte)((RChannelWeight * r + GChannelWeight * g + BChannelWeight * b) >> ChannelWeight);
- }
- }
-
- private void CalculateLuminanceBGR32(byte[] rgbRawBytes)
- {
- for (int rgbIndex = 0, luminanceIndex = 0; rgbIndex < rgbRawBytes.Length && luminanceIndex < luminances.Length; luminanceIndex++)
- {
- // Calculate luminance cheaply, favoring green.
- int b = rgbRawBytes[rgbIndex++];
- int g = rgbRawBytes[rgbIndex++];
- int r = rgbRawBytes[rgbIndex++];
- rgbIndex++;
- luminances[luminanceIndex] = (byte)((RChannelWeight * r + GChannelWeight * g + BChannelWeight * b) >> ChannelWeight);
- }
- }
-
- private void CalculateLuminanceBGRA32(byte[] rgbRawBytes)
- {
- for (int rgbIndex = 0, luminanceIndex = 0; rgbIndex < rgbRawBytes.Length && luminanceIndex < luminances.Length; luminanceIndex++)
- {
- // Calculate luminance cheaply, favoring green.
- var b = rgbRawBytes[rgbIndex++];
- var g = rgbRawBytes[rgbIndex++];
- var r = rgbRawBytes[rgbIndex++];
- var alpha = rgbRawBytes[rgbIndex++];
- var luminance = (byte)((RChannelWeight * r + GChannelWeight * g + BChannelWeight * b) >> ChannelWeight);
- luminances[luminanceIndex] = (byte)(((luminance * alpha) >> 8) + (255 * (255 - alpha) >> 8));
- }
- }
-
- private void CalculateLuminanceRGBA32(byte[] rgbRawBytes)
- {
- for (int rgbIndex = 0, luminanceIndex = 0; rgbIndex < rgbRawBytes.Length && luminanceIndex < luminances.Length; luminanceIndex++)
- {
- // Calculate luminance cheaply, favoring green.
- var r = rgbRawBytes[rgbIndex++];
- var g = rgbRawBytes[rgbIndex++];
- var b = rgbRawBytes[rgbIndex++];
- var alpha = rgbRawBytes[rgbIndex++];
- var luminance = (byte)((RChannelWeight * r + GChannelWeight * g + BChannelWeight * b) >> ChannelWeight);
- luminances[luminanceIndex] = (byte)(((luminance * alpha) >> 8) + (255 * (255 - alpha) >> 8));
- }
- }
-
- private void CalculateLuminanceARGB32(byte[] rgbRawBytes)
- {
- for (int rgbIndex = 0, luminanceIndex = 0; rgbIndex < rgbRawBytes.Length && luminanceIndex < luminances.Length; luminanceIndex++)
- {
- // Calculate luminance cheaply, favoring green.
- var alpha = rgbRawBytes[rgbIndex++];
- var r = rgbRawBytes[rgbIndex++];
- var g = rgbRawBytes[rgbIndex++];
- var b = rgbRawBytes[rgbIndex++];
- var luminance = (byte)((RChannelWeight * r + GChannelWeight * g + BChannelWeight * b) >> ChannelWeight);
- luminances[luminanceIndex] = (byte)(((luminance * alpha) >> 8) + (255 * (255 - alpha) >> 8));
- }
- }
- }
-}
\ No newline at end of file
diff --git a/shadowsocks-csharp/shadowsocks-csharp.csproj b/shadowsocks-csharp/shadowsocks-csharp.csproj
index 15a53037..d132e788 100755
--- a/shadowsocks-csharp/shadowsocks-csharp.csproj
+++ b/shadowsocks-csharp/shadowsocks-csharp.csproj
@@ -71,8 +71,6 @@
-
-
@@ -101,8 +99,6 @@
-
-
@@ -138,7 +134,6 @@
-