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
- TrackingServices.cs
- FastPropertyAccessor.cs
- UpdatePanelTrigger.cs
- SchemaEntity.cs
- WriteTimeStream.cs
- SubtreeProcessor.cs
- DiscriminatorMap.cs
- WorkflowServiceOperationListItem.cs
- BufferedGraphicsManager.cs
- InputQueue.cs
- XmlTypeAttribute.cs
- TextRangeEditTables.cs
- PointConverter.cs
- GridViewDeletedEventArgs.cs
- odbcmetadatacollectionnames.cs
- RegexRunner.cs
- StylusPointProperties.cs
- ToolStripDropTargetManager.cs
- BrowserCapabilitiesCompiler.cs
- SoapInteropTypes.cs
- DiscoveryServerProtocol.cs
- ValueHandle.cs
- MessageSecurityTokenVersion.cs
- NavigationProgressEventArgs.cs
- DateTimeConstantAttribute.cs
- CngProperty.cs
- PopupRoot.cs
- HttpCookie.cs
- XmlObjectSerializerReadContext.cs
- ConfigurationPropertyAttribute.cs
- ProcessHost.cs
- SeekableReadStream.cs
- RelationshipConverter.cs
- ToolStripSettings.cs
- VectorCollection.cs
- PatternMatchRules.cs
- DetailsViewDeleteEventArgs.cs
- FontFamilyValueSerializer.cs
- DataRowExtensions.cs
- PositiveTimeSpanValidatorAttribute.cs
- XslAstAnalyzer.cs
- TableLayoutStyleCollection.cs
- DependencyPropertyKind.cs
- IxmlLineInfo.cs
- COM2ExtendedTypeConverter.cs
- unitconverter.cs
- InstanceNotFoundException.cs
- CacheEntry.cs
- GridLengthConverter.cs
- PopupEventArgs.cs
- ItemsPresenter.cs
- ToolStripLocationCancelEventArgs.cs
- unsafenativemethodsother.cs
- DesignTimeVisibleAttribute.cs
- RegexStringValidator.cs
- TableHeaderCell.cs
- ListViewInsertionMark.cs
- URI.cs
- TableAdapterManagerMethodGenerator.cs
- ConfigurationValidatorBase.cs
- ClientBuildManager.cs
- BitmapEffectRenderDataResource.cs
- XmlSchemas.cs
- CookieParameter.cs
- DuplexClientBase.cs
- SHA256.cs
- ConfigXmlCDataSection.cs
- ObjectStateManager.cs
- AesCryptoServiceProvider.cs
- httpstaticobjectscollection.cs
- DateTimeOffset.cs
- Button.cs
- WebRequestModuleElementCollection.cs
- CollectionContainer.cs
- HttpCacheVary.cs
- FormsAuthenticationTicket.cs
- documentsequencetextcontainer.cs
- CryptoApi.cs
- TrackBarRenderer.cs
- RijndaelManagedTransform.cs
- TypeLibConverter.cs
- RowCache.cs
- RoleManagerModule.cs
- HttpVersion.cs
- GeneralTransformGroup.cs
- DtrList.cs
- ConfigXmlComment.cs
- NestedContainer.cs
- SchemaDeclBase.cs
- ScriptReference.cs
- Viewport3DAutomationPeer.cs
- ServerType.cs
- DecoderNLS.cs
- InitializationEventAttribute.cs
- Vars.cs
- ErrorsHelper.cs
- ConnectionPoint.cs
- SqlNodeAnnotations.cs
- ContentDefinition.cs
- XmlSchemaImporter.cs