Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / Ink / InkSerializedFormat / MultiByteCodec.cs / 1305600 / MultiByteCodec.cs
using MS.Utility; using System; using System.Runtime.InteropServices; using System.Security; using System.Globalization; using System.Windows; using System.Windows.Input; using System.Windows.Ink; using System.Collections.Generic; using MS.Internal.Ink.InkSerializedFormat; using System.Diagnostics; using SR = MS.Internal.PresentationCore.SR; using SRID = MS.Internal.PresentationCore.SRID; namespace MS.Internal.Ink.InkSerializedFormat { ////// MultiByteCodec /// internal class MultiByteCodec { ////// MultiByteCodec /// internal MultiByteCodec() { } ////// Encode /// /// /// internal void Encode(uint data, Listoutput) { if (output == null) { throw new ArgumentNullException("output"); } while (data > 0x7f) { byte byteToAdd = (byte)(0x80 | (byte)data & 0x7f); output.Add(byteToAdd); data >>= 7; } byte finalByteToAdd = (byte)(data & 0x7f); output.Add(finalByteToAdd); } /// /// SignEncode /// /// /// internal void SignEncode(int data, Listoutput) { uint xfData = 0; if (data < 0) { xfData = (uint)( (-data << 1) | 0x01 ); } else { xfData = (uint)data << 1; } Encode(xfData, output); } /// /// Decode /// /// /// /// ///internal uint Decode(byte[] input, int inputIndex, ref uint data) { Debug.Assert(input != null); Debug.Assert(inputIndex < input.Length); // We care about first 5 bytes uint cb = (input.Length - inputIndex > 5) ? 5 : (uint)(input.Length - inputIndex); uint index = 0; data = 0; while ((index < cb) && (input[index] > 0x7f)) { int leftShift = (int)(index * 7); data |= (uint)((input[index] & 0x7f) << leftShift); ++index; } if (index < cb) { int leftShift = (int)(index * 7); data |= (uint)((input[index] & 0x7f) << leftShift); } else { throw new ArgumentException(StrokeCollectionSerializer.ISFDebugMessage("invalid input in MultiByteCodec.Decode")); } return (index + 1); } /// /// SignDecode /// /// /// /// ///internal uint SignDecode(byte[] input, int inputIndex, ref int data) { Debug.Assert(input != null); //already validated at the AlgoModule level if (inputIndex >= input.Length) { throw new ArgumentOutOfRangeException("inputIndex"); } uint xfData = 0; uint cb = Decode(input, inputIndex, ref xfData); data = (0 != (0x01 & xfData)) ? -(int)(xfData >> 1) : (int)(xfData >> 1); return cb; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using MS.Utility; using System; using System.Runtime.InteropServices; using System.Security; using System.Globalization; using System.Windows; using System.Windows.Input; using System.Windows.Ink; using System.Collections.Generic; using MS.Internal.Ink.InkSerializedFormat; using System.Diagnostics; using SR = MS.Internal.PresentationCore.SR; using SRID = MS.Internal.PresentationCore.SRID; namespace MS.Internal.Ink.InkSerializedFormat { /// /// MultiByteCodec /// internal class MultiByteCodec { ////// MultiByteCodec /// internal MultiByteCodec() { } ////// Encode /// /// /// internal void Encode(uint data, Listoutput) { if (output == null) { throw new ArgumentNullException("output"); } while (data > 0x7f) { byte byteToAdd = (byte)(0x80 | (byte)data & 0x7f); output.Add(byteToAdd); data >>= 7; } byte finalByteToAdd = (byte)(data & 0x7f); output.Add(finalByteToAdd); } /// /// SignEncode /// /// /// internal void SignEncode(int data, Listoutput) { uint xfData = 0; if (data < 0) { xfData = (uint)( (-data << 1) | 0x01 ); } else { xfData = (uint)data << 1; } Encode(xfData, output); } /// /// Decode /// /// /// /// ///internal uint Decode(byte[] input, int inputIndex, ref uint data) { Debug.Assert(input != null); Debug.Assert(inputIndex < input.Length); // We care about first 5 bytes uint cb = (input.Length - inputIndex > 5) ? 5 : (uint)(input.Length - inputIndex); uint index = 0; data = 0; while ((index < cb) && (input[index] > 0x7f)) { int leftShift = (int)(index * 7); data |= (uint)((input[index] & 0x7f) << leftShift); ++index; } if (index < cb) { int leftShift = (int)(index * 7); data |= (uint)((input[index] & 0x7f) << leftShift); } else { throw new ArgumentException(StrokeCollectionSerializer.ISFDebugMessage("invalid input in MultiByteCodec.Decode")); } return (index + 1); } /// /// SignDecode /// /// /// /// ///internal uint SignDecode(byte[] input, int inputIndex, ref int data) { Debug.Assert(input != null); //already validated at the AlgoModule level if (inputIndex >= input.Length) { throw new ArgumentOutOfRangeException("inputIndex"); } uint xfData = 0; uint cb = Decode(input, inputIndex, ref xfData); data = (0 != (0x01 & xfData)) ? -(int)(xfData >> 1) : (int)(xfData >> 1); return cb; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- propertyentry.cs
- GlyphManager.cs
- UnsafeNativeMethods.cs
- XmlElement.cs
- Cell.cs
- HtmlEmptyTagControlBuilder.cs
- CharacterMetrics.cs
- DataGridViewRow.cs
- UIElement.cs
- DeferredTextReference.cs
- InternalResources.cs
- ExtendedProperty.cs
- ImageListStreamer.cs
- XmlWriterTraceListener.cs
- GroupBox.cs
- SecondaryIndex.cs
- PackWebRequest.cs
- ValidatedControlConverter.cs
- DoneReceivingAsyncResult.cs
- BitmapSizeOptions.cs
- InvalidEnumArgumentException.cs
- MemberHolder.cs
- WebEvents.cs
- ColorContext.cs
- ColumnMap.cs
- EtwTrackingBehaviorElement.cs
- panel.cs
- ProtectedConfigurationSection.cs
- VectorCollectionConverter.cs
- StoreItemCollection.cs
- TransformerConfigurationWizardBase.cs
- ProviderConnectionPoint.cs
- DataSourceCache.cs
- ObfuscationAttribute.cs
- ItemCheckedEvent.cs
- ArgumentOutOfRangeException.cs
- ElementHost.cs
- wpf-etw.cs
- AsnEncodedData.cs
- DragEventArgs.cs
- HtmlEncodedRawTextWriter.cs
- DataColumnPropertyDescriptor.cs
- ProviderConnectionPointCollection.cs
- ProviderException.cs
- CommonProperties.cs
- DateTimeSerializationSection.cs
- BufferedStream2.cs
- TextCollapsingProperties.cs
- TextElementEnumerator.cs
- XPathSelectionIterator.cs
- GZipUtils.cs
- wmiprovider.cs
- SamlAttribute.cs
- DateTime.cs
- InputGestureCollection.cs
- NegotiateStream.cs
- HierarchicalDataSourceIDConverter.cs
- ExecutionEngineException.cs
- PaginationProgressEventArgs.cs
- RegexBoyerMoore.cs
- HttpResponseBase.cs
- LazyLoadBehavior.cs
- PropertyMetadata.cs
- AsyncContentLoadedEventArgs.cs
- Win32MouseDevice.cs
- DataGridViewRow.cs
- VSDExceptions.cs
- CTreeGenerator.cs
- BezierSegment.cs
- ServicesExceptionNotHandledEventArgs.cs
- TraceInternal.cs
- AmbientProperties.cs
- ProtocolsConfigurationHandler.cs
- VisualCollection.cs
- SiteMapNodeCollection.cs
- TabletDevice.cs
- UIPermission.cs
- ObjectListShowCommandsEventArgs.cs
- OrderByQueryOptionExpression.cs
- WebRequest.cs
- RootDesignerSerializerAttribute.cs
- ShapeTypeface.cs
- TemplateControlParser.cs
- FontResourceCache.cs
- BufferBuilder.cs
- TypeDependencyAttribute.cs
- odbcmetadatacolumnnames.cs
- DifferencingCollection.cs
- XamlDesignerSerializationManager.cs
- WindowsGrip.cs
- UniqueConstraint.cs
- SchemaElement.cs
- QueryOutputWriter.cs
- HtmlUtf8RawTextWriter.cs
- VisualBasicExpressionConverter.cs
- TemplateControlParser.cs
- MetadataItemSerializer.cs
- XmlAttributeOverrides.cs
- GlyphRunDrawing.cs
- StreamInfo.cs