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
- DomainConstraint.cs
- QilBinary.cs
- filewebresponse.cs
- VarInfo.cs
- DuplexChannelFactory.cs
- RowCache.cs
- UseManagedPresentationElement.cs
- CompositeScriptReferenceEventArgs.cs
- CurrencyManager.cs
- BrowserCapabilitiesCompiler.cs
- CodeSubDirectoriesCollection.cs
- OciLobLocator.cs
- XmlSchemaObjectCollection.cs
- ImageSourceValueSerializer.cs
- WarningException.cs
- AtomServiceDocumentSerializer.cs
- DrawingImage.cs
- StreamUpdate.cs
- Propagator.ExtentPlaceholderCreator.cs
- AnnotationHighlightLayer.cs
- TableItemStyle.cs
- HostAdapter.cs
- ResolveDuplex11AsyncResult.cs
- DataGridViewColumnCollectionDialog.cs
- ContextMenu.cs
- EntityViewGenerationAttribute.cs
- SerialPinChanges.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- ConfigurationManagerInternal.cs
- DodSequenceMerge.cs
- WebPartConnection.cs
- MdiWindowListStrip.cs
- SaveFileDialog.cs
- HandoffBehavior.cs
- EntityDataSourceViewSchema.cs
- AssemblyFilter.cs
- HtmlInputImage.cs
- WebReferencesBuildProvider.cs
- BitmapCodecInfo.cs
- Queue.cs
- IgnoreFileBuildProvider.cs
- XmlNamedNodeMap.cs
- VersionPair.cs
- TextTrailingCharacterEllipsis.cs
- MatrixCamera.cs
- RawTextInputReport.cs
- EventWaitHandle.cs
- CopyAction.cs
- RequiredAttributeAttribute.cs
- ComProxy.cs
- OpenTypeCommon.cs
- MethodBuilder.cs
- SecurityContext.cs
- GridLengthConverter.cs
- ChildDocumentBlock.cs
- SoapIgnoreAttribute.cs
- PropertyChangeTracker.cs
- _UncName.cs
- Regex.cs
- AutomationProperty.cs
- UnionCodeGroup.cs
- MediaTimeline.cs
- ToolStripSplitButton.cs
- SmtpFailedRecipientException.cs
- InvalidComObjectException.cs
- StandardMenuStripVerb.cs
- CorrelationResolver.cs
- WindowVisualStateTracker.cs
- InternalTypeHelper.cs
- ConnectionStringsExpressionBuilder.cs
- DataRecordInternal.cs
- XmlSchemaRedefine.cs
- BehaviorDragDropEventArgs.cs
- WindowsSlider.cs
- AutomationPropertyInfo.cs
- ClientSettingsStore.cs
- CapacityStreamGeometryContext.cs
- AvtEvent.cs
- ApplicationActivator.cs
- XmlReflectionImporter.cs
- Identity.cs
- HtmlWindowCollection.cs
- SocketElement.cs
- ParamArrayAttribute.cs
- DataSourceSelectArguments.cs
- IssuedTokenServiceCredential.cs
- ZoneLinkButton.cs
- _NetRes.cs
- XpsTokenContext.cs
- NewExpression.cs
- SoapMessage.cs
- ThreadPool.cs
- TimeZoneInfo.cs
- XmlSchemaValidationException.cs
- LogManagementAsyncResult.cs
- DiagnosticsConfiguration.cs
- SystemGatewayIPAddressInformation.cs
- DesignerAutoFormat.cs
- AnnotationObservableCollection.cs
- RSAPKCS1SignatureDeformatter.cs