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
- PreviewPageInfo.cs
- FixedDSBuilder.cs
- LinkArea.cs
- InputMethodStateTypeInfo.cs
- ToolStrip.cs
- AutomationProperties.cs
- cookiecontainer.cs
- MasterPageCodeDomTreeGenerator.cs
- FontDriver.cs
- OrderPreservingPipeliningMergeHelper.cs
- AssemblyResourceLoader.cs
- UriScheme.cs
- UInt64.cs
- TemplatePropertyEntry.cs
- GetLedgerRequest.cs
- ContentPresenter.cs
- BufferedOutputStream.cs
- ScriptReferenceEventArgs.cs
- DbConnectionHelper.cs
- ConnectionStringSettings.cs
- TimerElapsedEvenArgs.cs
- TextBoxView.cs
- GenericTypeParameterConverter.cs
- ConnectionManagementElement.cs
- AssemblyInfo.cs
- SqlProviderServices.cs
- XNodeNavigator.cs
- SettingsPropertyValue.cs
- ImageClickEventArgs.cs
- SiteMapHierarchicalDataSourceView.cs
- CommunicationObject.cs
- SqlProvider.cs
- SHA384Managed.cs
- WindowsTreeView.cs
- CatalogPart.cs
- LiteralDesigner.cs
- dbenumerator.cs
- SafeNativeMethods.cs
- MethodCallConverter.cs
- XNameTypeConverter.cs
- Normalizer.cs
- NativeCppClassAttribute.cs
- BuildProvidersCompiler.cs
- SessionStateSection.cs
- RoutingTable.cs
- manifestimages.cs
- UpdatePanelTriggerCollection.cs
- UserControl.cs
- JsonQNameDataContract.cs
- MetadataPropertyvalue.cs
- DownloadProgressEventArgs.cs
- ConfigurationProperty.cs
- QilGeneratorEnv.cs
- TemplateKey.cs
- LocatorGroup.cs
- XmlSerializationReader.cs
- ServiceOperationParameter.cs
- QilParameter.cs
- InfoCardSymmetricAlgorithm.cs
- ImageMap.cs
- PagedDataSource.cs
- ExpressionBinding.cs
- DesignOnlyAttribute.cs
- DelegateSerializationHolder.cs
- GPStream.cs
- ComponentResourceManager.cs
- ListenerConfig.cs
- DataGridViewSelectedRowCollection.cs
- LoginCancelEventArgs.cs
- UserNameSecurityTokenProvider.cs
- HttpBindingExtension.cs
- TimerTable.cs
- ReachPrintTicketSerializerAsync.cs
- RepeatButtonAutomationPeer.cs
- WebPartUserCapability.cs
- Padding.cs
- Bits.cs
- SamlEvidence.cs
- HwndProxyElementProvider.cs
- ClientUrlResolverWrapper.cs
- DataError.cs
- SerializationInfo.cs
- PointConverter.cs
- ConfigUtil.cs
- Rect3D.cs
- MessageSmuggler.cs
- ApplicationContext.cs
- MultiDataTrigger.cs
- UserInitiatedNavigationPermission.cs
- SettingsSavedEventArgs.cs
- XmlExpressionDumper.cs
- TdsParserStaticMethods.cs
- BinaryParser.cs
- TextEditorThreadLocalStore.cs
- Sql8ConformanceChecker.cs
- XhtmlBasicLabelAdapter.cs
- HttpModuleCollection.cs
- Themes.cs
- ObfuscateAssemblyAttribute.cs
- IISUnsafeMethods.cs