Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / Ink / InkSerializedFormat / MultiByteCodec.cs / 1305600 / 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
- NameValueCache.cs
- SweepDirectionValidation.cs
- VisualTreeUtils.cs
- XappLauncher.cs
- RelationHandler.cs
- InputBuffer.cs
- ResourcePart.cs
- DelegateOutArgument.cs
- WmlLinkAdapter.cs
- XmlReflectionMember.cs
- ipaddressinformationcollection.cs
- EmptyQuery.cs
- SQLChars.cs
- BrowserCapabilitiesFactoryBase.cs
- CacheOutputQuery.cs
- PrintDialog.cs
- DependencyPropertyAttribute.cs
- SingleTagSectionHandler.cs
- UserControlBuildProvider.cs
- DateRangeEvent.cs
- GridSplitter.cs
- FixedSOMTableRow.cs
- CharacterBufferReference.cs
- FirstMatchCodeGroup.cs
- TextFormatterContext.cs
- _SpnDictionary.cs
- SafeSecurityHelper.cs
- XmlBaseReader.cs
- MergeFailedEvent.cs
- PageClientProxyGenerator.cs
- MarginsConverter.cs
- CopyCodeAction.cs
- XmlUnspecifiedAttribute.cs
- SqlConnectionPoolGroupProviderInfo.cs
- EncryptedKeyIdentifierClause.cs
- TransportSecurityProtocolFactory.cs
- DataGridBoundColumn.cs
- SettingsPropertyValueCollection.cs
- InitiatorSessionSymmetricMessageSecurityProtocol.cs
- RegexMatch.cs
- ConfigurationErrorsException.cs
- Light.cs
- XLinq.cs
- UnderstoodHeaders.cs
- MbpInfo.cs
- TileBrush.cs
- HtmlInputFile.cs
- WindowPattern.cs
- ObjectQuery.cs
- TextureBrush.cs
- BindingContext.cs
- EntityContainerEmitter.cs
- Highlights.cs
- FrameDimension.cs
- NotifyInputEventArgs.cs
- StructuredTypeEmitter.cs
- ValueExpressions.cs
- BatchServiceHost.cs
- Decorator.cs
- StrongNameUtility.cs
- FontStyle.cs
- XmlSchemaImporter.cs
- DataGridViewCellStateChangedEventArgs.cs
- RegexReplacement.cs
- DescendantQuery.cs
- BaseAppDomainProtocolHandler.cs
- FlowPanelDesigner.cs
- BrowserCapabilitiesFactoryBase.cs
- UserNameSecurityToken.cs
- TypeListConverter.cs
- DesignerActionMethodItem.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- CompilerInfo.cs
- CodeTryCatchFinallyStatement.cs
- DataColumn.cs
- PassportAuthenticationEventArgs.cs
- ipaddressinformationcollection.cs
- NativeRightsManagementAPIsStructures.cs
- XmlPropertyBag.cs
- HtmlImage.cs
- SizeLimitedCache.cs
- SimpleMailWebEventProvider.cs
- CodeDelegateCreateExpression.cs
- IssuanceLicense.cs
- ServiceModelTimeSpanValidator.cs
- HtmlButton.cs
- RedirectionProxy.cs
- SspiSafeHandles.cs
- ObjectSecurity.cs
- X509Certificate.cs
- PseudoWebRequest.cs
- DocumentReference.cs
- TableItemPatternIdentifiers.cs
- X509CertificateClaimSet.cs
- Range.cs
- Directory.cs
- ProfileSettingsCollection.cs
- ScrollItemProviderWrapper.cs
- SqlException.cs
- DbParameterHelper.cs