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
- VScrollProperties.cs
- ReferenceConverter.cs
- UrlPath.cs
- PersonalizationEntry.cs
- MetadataArtifactLoaderResource.cs
- BoundField.cs
- XmlSerializationGeneratedCode.cs
- WinFormsSpinner.cs
- TitleStyle.cs
- FacetValueContainer.cs
- XmlAnyElementAttributes.cs
- CachedPathData.cs
- CellNormalizer.cs
- XmlnsPrefixAttribute.cs
- BorderGapMaskConverter.cs
- CancellationState.cs
- WindowsProgressbar.cs
- DiscoveryClientOutputChannel.cs
- WindowsTreeView.cs
- XmlLinkedNode.cs
- BatchStream.cs
- DataServiceRequestOfT.cs
- WebControl.cs
- SkewTransform.cs
- EdmSchemaError.cs
- webbrowsersite.cs
- ellipse.cs
- ExceptionAggregator.cs
- SettingsPropertyValueCollection.cs
- LineInfo.cs
- XmlSchemaChoice.cs
- CollectionType.cs
- SoapMessage.cs
- LastQueryOperator.cs
- HtmlInputFile.cs
- RecordConverter.cs
- AddInDeploymentState.cs
- BackgroundFormatInfo.cs
- ComponentGuaranteesAttribute.cs
- RemotingException.cs
- FunctionImportElement.cs
- MobileUserControl.cs
- TextElementEnumerator.cs
- MatrixAnimationUsingKeyFrames.cs
- IgnorePropertiesAttribute.cs
- ControlBuilder.cs
- SystemGatewayIPAddressInformation.cs
- Span.cs
- SqlDataSourceCache.cs
- FormsAuthentication.cs
- UserControlAutomationPeer.cs
- SAPIEngineTypes.cs
- XmlDictionaryWriter.cs
- ContextMenu.cs
- DeclaredTypeElement.cs
- WrapperSecurityCommunicationObject.cs
- DBCommandBuilder.cs
- DocumentOrderComparer.cs
- LayoutManager.cs
- PersonalizationStateQuery.cs
- ServiceParser.cs
- TableSectionStyle.cs
- XmlBufferedByteStreamReader.cs
- PkcsMisc.cs
- IPAddress.cs
- Hashtable.cs
- StorageComplexTypeMapping.cs
- LinkTarget.cs
- HttpProfileGroupBase.cs
- TextServicesLoader.cs
- ExpressionBinding.cs
- ClientSideProviderDescription.cs
- DrawListViewColumnHeaderEventArgs.cs
- ScriptComponentDescriptor.cs
- EntityTypeEmitter.cs
- InputReport.cs
- AspNetRouteServiceHttpHandler.cs
- BaseDataBoundControl.cs
- PingOptions.cs
- SHA384Managed.cs
- ButtonPopupAdapter.cs
- ClaimTypeRequirement.cs
- ServicePointManagerElement.cs
- SqlRewriteScalarSubqueries.cs
- XmlImplementation.cs
- ApplicationId.cs
- CreateUserWizardStep.cs
- FullTrustAssemblyCollection.cs
- CanonicalizationDriver.cs
- OleDragDropHandler.cs
- TextServicesProperty.cs
- BinaryNode.cs
- DbParameterCollection.cs
- ClockGroup.cs
- NonVisualControlAttribute.cs
- TypedAsyncResult.cs
- Classification.cs
- SmtpReplyReaderFactory.cs
- VariableModifiersHelper.cs
- HeaderElement.cs