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
- ClientSession.cs
- ResourceType.cs
- ExtensionQuery.cs
- File.cs
- XPathMessageFilterElementCollection.cs
- SelectionEditingBehavior.cs
- MsmqVerifier.cs
- BitmapEffectGroup.cs
- IconEditor.cs
- WebResponse.cs
- GridViewRowEventArgs.cs
- TypeValidationEventArgs.cs
- BindingGroup.cs
- OpCodes.cs
- TrackingServices.cs
- CharEnumerator.cs
- OperationFormatter.cs
- Panel.cs
- EventSinkActivity.cs
- CancelEventArgs.cs
- _SafeNetHandles.cs
- X509Utils.cs
- DataSourceCacheDurationConverter.cs
- WeakReferenceEnumerator.cs
- RemotingConfiguration.cs
- LocalizableResourceBuilder.cs
- PlainXmlSerializer.cs
- WSSecurityOneDotZeroSendSecurityHeader.cs
- RtfNavigator.cs
- NodeLabelEditEvent.cs
- SqlTypeSystemProvider.cs
- DependencyObject.cs
- CellTreeNode.cs
- SpecialNameAttribute.cs
- WSTrustDec2005.cs
- MenuRendererStandards.cs
- XhtmlTextWriter.cs
- DataFieldCollectionEditor.cs
- DynamicValidatorEventArgs.cs
- FixedTextPointer.cs
- TransformProviderWrapper.cs
- ProcessProtocolHandler.cs
- PageTrueTypeFont.cs
- ImportContext.cs
- SkewTransform.cs
- OrderedDictionary.cs
- BitArray.cs
- StrokeCollectionDefaultValueFactory.cs
- CopyOnWriteList.cs
- TextRangeAdaptor.cs
- TypedDataSetSchemaImporterExtension.cs
- Types.cs
- BaseAsyncResult.cs
- Point3DAnimation.cs
- GZipDecoder.cs
- XpsFixedDocumentSequenceReaderWriter.cs
- CustomExpressionEventArgs.cs
- MSHTMLHostUtil.cs
- UIElementIsland.cs
- WeakHashtable.cs
- TextRenderer.cs
- BuildDependencySet.cs
- UIElementPropertyUndoUnit.cs
- Decimal.cs
- FileRecordSequenceHelper.cs
- LazyTextWriterCreator.cs
- XamlSerializer.cs
- Stylus.cs
- XmlSignificantWhitespace.cs
- TdsParserHelperClasses.cs
- BitmapDecoder.cs
- ParameterModifier.cs
- ToolBarTray.cs
- StatusBarItem.cs
- RuleValidation.cs
- AvTraceFormat.cs
- IncrementalHitTester.cs
- RootAction.cs
- MetadataImporter.cs
- AudioStateChangedEventArgs.cs
- RequestBringIntoViewEventArgs.cs
- ShutDownListener.cs
- httpstaticobjectscollection.cs
- UrlAuthFailedErrorFormatter.cs
- TimeoutException.cs
- TemplateBindingExtension.cs
- XmlDictionaryReader.cs
- StrokeDescriptor.cs
- LingerOption.cs
- BitmapEffectDrawingContextState.cs
- MsmqInputChannelListener.cs
- StrokeCollectionConverter.cs
- DataGridViewColumnTypePicker.cs
- ModelProperty.cs
- MethodCallExpression.cs
- SpecularMaterial.cs
- DataMember.cs
- XPathSingletonIterator.cs
- HtmlElementEventArgs.cs
- ResourceDictionaryCollection.cs