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
- HtmlTitle.cs
- ValidatorAttribute.cs
- DataGridViewCellStyle.cs
- SoapIgnoreAttribute.cs
- PropertyGridView.cs
- ArrayElementGridEntry.cs
- JavaScriptString.cs
- FrameDimension.cs
- ObjectFullSpanRewriter.cs
- WindowsListView.cs
- TabletCollection.cs
- FirewallWrapper.cs
- HwndSourceKeyboardInputSite.cs
- x509utils.cs
- NonSerializedAttribute.cs
- PartManifestEntry.cs
- SqlCrossApplyToCrossJoin.cs
- ContainerAction.cs
- DbXmlEnabledProviderManifest.cs
- _UriTypeConverter.cs
- PriorityQueue.cs
- TreeChangeInfo.cs
- ResourcePool.cs
- ToolStripManager.cs
- SpeechEvent.cs
- ListViewGroup.cs
- WebConfigurationHostFileChange.cs
- VirtualPath.cs
- ReferenceTypeElement.cs
- XmlILModule.cs
- ControllableStoryboardAction.cs
- PropertyKey.cs
- ExpandableObjectConverter.cs
- KeyInstance.cs
- GridProviderWrapper.cs
- RelationshipDetailsRow.cs
- UIElement3D.cs
- InstanceNormalEvent.cs
- BitmapEffectDrawingContextState.cs
- ProjectedWrapper.cs
- ResourceProviderFactory.cs
- ClientTarget.cs
- PackageProperties.cs
- DataComponentGenerator.cs
- UICuesEvent.cs
- MatrixConverter.cs
- DataGridViewColumnStateChangedEventArgs.cs
- ManualResetEvent.cs
- QilTypeChecker.cs
- WindowsButton.cs
- CssStyleCollection.cs
- Attribute.cs
- StylusButtonEventArgs.cs
- InvalidProgramException.cs
- DesignTimeValidationFeature.cs
- ScriptServiceAttribute.cs
- TypeBrowserDialog.cs
- TextChange.cs
- basemetadatamappingvisitor.cs
- TextOptionsInternal.cs
- NavigationPropertyEmitter.cs
- AncillaryOps.cs
- GroupBoxRenderer.cs
- WindowsGraphics2.cs
- ObjectNavigationPropertyMapping.cs
- StopStoryboard.cs
- CollectionExtensions.cs
- ScriptResourceInfo.cs
- XmlObjectSerializer.cs
- HotSpot.cs
- DataGridViewColumnConverter.cs
- EditBehavior.cs
- ThemeableAttribute.cs
- XmlEntity.cs
- DrawingGroup.cs
- VScrollProperties.cs
- OdbcTransaction.cs
- OracleMonthSpan.cs
- SQLDecimalStorage.cs
- EntityDataSourceChangedEventArgs.cs
- TabRenderer.cs
- BlockUIContainer.cs
- DependencyPropertyKind.cs
- connectionpool.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- SpecularMaterial.cs
- Propagator.cs
- PeerConnector.cs
- MessageQueuePermissionEntry.cs
- RelationshipEndMember.cs
- Column.cs
- AspCompat.cs
- DataSetMappper.cs
- TextParaLineResult.cs
- basenumberconverter.cs
- SerialPinChanges.cs
- DesignerAttribute.cs
- WindowsTab.cs
- XmlQueryType.cs
- DbResourceAllocator.cs