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
- ValuePatternIdentifiers.cs
- ProgressBar.cs
- BinaryNode.cs
- Vector3DValueSerializer.cs
- Application.cs
- XmlSchemaSimpleContentExtension.cs
- NamespaceInfo.cs
- PropertyPath.cs
- UnsafePeerToPeerMethods.cs
- SchemaTypeEmitter.cs
- MULTI_QI.cs
- BrushMappingModeValidation.cs
- Policy.cs
- XmlSchemaSimpleContent.cs
- XmlEnumAttribute.cs
- WebPageTraceListener.cs
- WbmpConverter.cs
- XmlCustomFormatter.cs
- ExpressionBuilderContext.cs
- HitTestResult.cs
- PagedDataSource.cs
- GridViewColumnCollection.cs
- BinaryObjectReader.cs
- GridViewAutomationPeer.cs
- DataObjectPastingEventArgs.cs
- TextRange.cs
- LayoutEditorPart.cs
- ClientRolePrincipal.cs
- StateMachine.cs
- RemotingConfiguration.cs
- VideoDrawing.cs
- RectangleGeometry.cs
- AutomationPropertyInfo.cs
- XsltSettings.cs
- TemplatedAdorner.cs
- ScrollBar.cs
- LongSumAggregationOperator.cs
- MenuItem.cs
- KeyMatchBuilder.cs
- DateTimeConverter.cs
- ExternalException.cs
- TypeDescriptionProviderAttribute.cs
- Set.cs
- InheritanceRules.cs
- SmtpAuthenticationManager.cs
- ImpersonationContext.cs
- RangeValueProviderWrapper.cs
- Stroke2.cs
- PerformanceCounterPermissionEntry.cs
- Pen.cs
- OutputCacheSettings.cs
- ConnectionStringsExpressionEditor.cs
- CapabilitiesRule.cs
- ManagedIStream.cs
- CallbackValidator.cs
- ResourceProperty.cs
- ThreadPool.cs
- ClassHandlersStore.cs
- IPipelineRuntime.cs
- HttpHandlerAction.cs
- SelectionRange.cs
- GridViewRowPresenterBase.cs
- HtmlInputRadioButton.cs
- TextEffect.cs
- ConfigurationValidatorBase.cs
- ProvidePropertyAttribute.cs
- WebPartCollection.cs
- DataTemplateSelector.cs
- OleDbWrapper.cs
- OptionalRstParameters.cs
- documentsequencetextcontainer.cs
- CommonProperties.cs
- CuspData.cs
- PropertyEntry.cs
- __Error.cs
- ThreadAbortException.cs
- DbException.cs
- SlipBehavior.cs
- WebPartRestoreVerb.cs
- ClassicBorderDecorator.cs
- MessagePartProtectionMode.cs
- DataGridColumnHeader.cs
- DependencyObject.cs
- FrameworkContentElementAutomationPeer.cs
- MessageUtil.cs
- EncodingInfo.cs
- ValidationManager.cs
- OptimizerPatterns.cs
- DataGridCommandEventArgs.cs
- DataGridViewControlCollection.cs
- SHA1Managed.cs
- LightweightCodeGenerator.cs
- HtmlDocument.cs
- MergeLocalizationDirectives.cs
- XPathNodeHelper.cs
- RSAPKCS1SignatureDeformatter.cs
- dbenumerator.cs
- Models.cs
- CLRBindingWorker.cs
- SmtpLoginAuthenticationModule.cs