Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / MS / Internal / Ink / InkSerializedFormat / MultiByteCodec.cs / 1 / 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
- DocComment.cs
- ToolStripContainer.cs
- SqlDataSourceStatusEventArgs.cs
- GridItemCollection.cs
- ProfileProvider.cs
- DateTimeUtil.cs
- FixedSOMSemanticBox.cs
- TypeHelpers.cs
- CodeObject.cs
- WindowsListViewGroupSubsetLink.cs
- GridSplitterAutomationPeer.cs
- XmlQuerySequence.cs
- ServiceParser.cs
- EditCommandColumn.cs
- HierarchicalDataSourceControl.cs
- ProgramNode.cs
- EmptyControlCollection.cs
- SimplePropertyEntry.cs
- Geometry.cs
- XmlObjectSerializerContext.cs
- DataRow.cs
- CallSiteOps.cs
- DiffuseMaterial.cs
- ResourceIDHelper.cs
- _ConnectStream.cs
- BaseTypeViewSchema.cs
- ConstraintCollection.cs
- BindingExpressionBase.cs
- SqlCacheDependencyDatabase.cs
- ThemeDictionaryExtension.cs
- QuaternionAnimation.cs
- controlskin.cs
- MulticastOption.cs
- NativeMethodsCLR.cs
- MessageQueueTransaction.cs
- ColorBuilder.cs
- ParameterCollection.cs
- IIS7UserPrincipal.cs
- EntityConnection.cs
- DomainUpDown.cs
- EntitySqlQueryBuilder.cs
- PointHitTestResult.cs
- TemplatedWizardStep.cs
- CodeTypeDeclaration.cs
- SqlNotificationRequest.cs
- SerializationBinder.cs
- Permission.cs
- ArgIterator.cs
- DesignTableCollection.cs
- XmlSchemaGroup.cs
- SQLDateTime.cs
- InstanceOwner.cs
- XamlTreeBuilder.cs
- ByteStreamMessageEncodingElement.cs
- CodeDefaultValueExpression.cs
- CompositeActivityDesigner.cs
- ListenerElementsCollection.cs
- SqlCacheDependency.cs
- PartialList.cs
- CaretElement.cs
- EnumDataContract.cs
- MediaContextNotificationWindow.cs
- FeatureSupport.cs
- Baml6Assembly.cs
- CodeDelegateCreateExpression.cs
- SessionState.cs
- MetadataElement.cs
- Point3DCollection.cs
- Binding.cs
- SR.cs
- COM2FontConverter.cs
- FrameworkElementAutomationPeer.cs
- CheckBoxBaseAdapter.cs
- InputScopeAttribute.cs
- ToolStripContentPanelRenderEventArgs.cs
- RuleAction.cs
- EnumBuilder.cs
- SqlUtil.cs
- XmlDocumentType.cs
- Animatable.cs
- DesignerDataSourceView.cs
- MouseDevice.cs
- SqlInternalConnectionTds.cs
- MarkupExtensionParser.cs
- BaseWebProxyFinder.cs
- XNodeNavigator.cs
- ControlCachePolicy.cs
- BoolExpr.cs
- ToolStripTextBox.cs
- IpcClientManager.cs
- BlobPersonalizationState.cs
- DrawListViewItemEventArgs.cs
- ByteBufferPool.cs
- DrawToolTipEventArgs.cs
- RegionInfo.cs
- BrowserDefinition.cs
- WorkflowStateRollbackService.cs
- SafeRightsManagementHandle.cs
- InternalEnumValidator.cs
- ViewManager.cs