Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- SqlFacetAttribute.cs
- UserInitiatedRoutedEventPermission.cs
- ObjectItemCachedAssemblyLoader.cs
- HotSpot.cs
- GeometryDrawing.cs
- FontFamilyConverter.cs
- TransformationRules.cs
- ScrollItemPattern.cs
- DataBoundControlHelper.cs
- MessageQueue.cs
- dbdatarecord.cs
- ObjectQuery_EntitySqlExtensions.cs
- InvalidOleVariantTypeException.cs
- ContainerParagraph.cs
- SafeLocalMemHandle.cs
- ArrayList.cs
- dsa.cs
- GZipStream.cs
- NodeLabelEditEvent.cs
- PickBranchDesigner.xaml.cs
- ValidationError.cs
- WebPartCollection.cs
- ScriptDescriptor.cs
- SoapProcessingBehavior.cs
- AssociationType.cs
- Int32Collection.cs
- SettingsPropertyValueCollection.cs
- FormattedText.cs
- SqlRetyper.cs
- ProcessModuleCollection.cs
- PageContentAsyncResult.cs
- NamespaceMapping.cs
- AsynchronousChannel.cs
- DependencyProperty.cs
- SerializationSectionGroup.cs
- ModelEditingScope.cs
- Int32Collection.cs
- AssemblyResourceLoader.cs
- TaskForm.cs
- TreeViewDataItemAutomationPeer.cs
- Compensate.cs
- CompositeControl.cs
- ToolStripItemDataObject.cs
- TagPrefixCollection.cs
- CacheHelper.cs
- ElementNotEnabledException.cs
- TypeConverterValueSerializer.cs
- CounterSetInstance.cs
- TagMapCollection.cs
- XmlIlVisitor.cs
- ComponentResourceKeyConverter.cs
- BuildProviderAppliesToAttribute.cs
- PackageRelationship.cs
- HMACSHA1.cs
- userdatakeys.cs
- InternalConfigSettingsFactory.cs
- WebPartConnectionsCancelEventArgs.cs
- SignatureDescription.cs
- OutputCacheSettingsSection.cs
- MediaSystem.cs
- CompositionTarget.cs
- XmlNodeList.cs
- EdmComplexTypeAttribute.cs
- VisualState.cs
- RectIndependentAnimationStorage.cs
- FormatterConverter.cs
- CurrencyManager.cs
- pingexception.cs
- BinaryObjectReader.cs
- Scene3D.cs
- AcceptorSessionSymmetricMessageSecurityProtocol.cs
- TraceXPathNavigator.cs
- AmbientLight.cs
- SerTrace.cs
- LineServicesRun.cs
- ImageIndexConverter.cs
- CutCopyPasteHelper.cs
- StatusBarItem.cs
- CultureTableRecord.cs
- ImmutableObjectAttribute.cs
- DependencyPropertyKey.cs
- AudienceUriMode.cs
- ComponentResourceKey.cs
- localization.cs
- EntryWrittenEventArgs.cs
- PathTooLongException.cs
- CounterSampleCalculator.cs
- ImageMap.cs
- BaseAutoFormat.cs
- QueryExpr.cs
- DetectRunnableInstancesTask.cs
- BufferedStream.cs
- HtmlButton.cs
- BufferedStream.cs
- KeyboardNavigation.cs
- CodeTypeReferenceExpression.cs
- embossbitmapeffect.cs
- FileLogRecordStream.cs
- FixedSOMImage.cs
- _LocalDataStore.cs