Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SqlRemoveConstantOrderBy.cs
- ContourSegment.cs
- DataListItemEventArgs.cs
- UpDownEvent.cs
- ConnectionPointCookie.cs
- StandardMenuStripVerb.cs
- ModifierKeysConverter.cs
- SequenceQuery.cs
- BaseDataListPage.cs
- OletxDependentTransaction.cs
- QueueProcessor.cs
- SQLBinary.cs
- ToolStripSettings.cs
- HMACMD5.cs
- Char.cs
- Interlocked.cs
- FontStretch.cs
- Expressions.cs
- BoolExpressionVisitors.cs
- Sequence.cs
- InProcStateClientManager.cs
- NamedPermissionSet.cs
- StandardOleMarshalObject.cs
- HotSpot.cs
- PeerNameRegistration.cs
- ServiceNameCollection.cs
- ArgumentOutOfRangeException.cs
- FramingEncoders.cs
- MarkupCompilePass1.cs
- ObjectParameterCollection.cs
- ChannelAcceptor.cs
- ProviderMetadataCachedInformation.cs
- EndEvent.cs
- FormConverter.cs
- EmbeddedMailObjectsCollection.cs
- IMembershipProvider.cs
- RegexGroupCollection.cs
- BamlLocalizer.cs
- BitmapMetadataEnumerator.cs
- SafeCryptHandles.cs
- XmlMemberMapping.cs
- EndPoint.cs
- TextSchema.cs
- XmlNodeChangedEventArgs.cs
- SecurityKeyIdentifier.cs
- Label.cs
- DataTableClearEvent.cs
- XmlQualifiedName.cs
- DebugViewWriter.cs
- RequiredAttributeAttribute.cs
- GlyphingCache.cs
- PackageDigitalSignature.cs
- XmlSchemaAnnotation.cs
- glyphs.cs
- Control.cs
- UpdatePanelControlTrigger.cs
- SqlClientWrapperSmiStreamChars.cs
- ResourceIDHelper.cs
- _IPv4Address.cs
- DesignerProperties.cs
- ProtocolState.cs
- ColumnMapVisitor.cs
- StoreContentChangedEventArgs.cs
- MemberProjectedSlot.cs
- LoadItemsEventArgs.cs
- BindToObject.cs
- StrokeCollection.cs
- XmlSubtreeReader.cs
- DataColumnCollection.cs
- BinaryNegotiation.cs
- MemberInfoSerializationHolder.cs
- BuildTopDownAttribute.cs
- SecurityResources.cs
- ApplicationId.cs
- Schedule.cs
- InvalidPropValue.cs
- ValuePattern.cs
- BaseComponentEditor.cs
- DeflateStream.cs
- SettingsPropertyValueCollection.cs
- ClientFormsAuthenticationCredentials.cs
- DataRelationPropertyDescriptor.cs
- IdnMapping.cs
- QilName.cs
- AssemblyCollection.cs
- NativeObjectSecurity.cs
- Function.cs
- Console.cs
- NoneExcludedImageIndexConverter.cs
- PathGradientBrush.cs
- TabPanel.cs
- CompiledRegexRunnerFactory.cs
- DataViewSettingCollection.cs
- ObjectListItemCollection.cs
- TableAutomationPeer.cs
- InputLanguageManager.cs
- GridLengthConverter.cs
- HeaderedItemsControl.cs
- AdRotator.cs
- ContextMenuService.cs