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
- DbParameterCollectionHelper.cs
- AssemblyBuilderData.cs
- XmlSchemaValidator.cs
- Int32.cs
- ReverseInheritProperty.cs
- odbcmetadatafactory.cs
- EncodingTable.cs
- ImageSource.cs
- XmlReaderSettings.cs
- XmlSchemaAll.cs
- Package.cs
- Console.cs
- InternalConfigHost.cs
- PEFileEvidenceFactory.cs
- AssociationTypeEmitter.cs
- XmlNamespaceMapping.cs
- ObjectDataSourceChooseMethodsPanel.cs
- Material.cs
- DoubleAnimationUsingKeyFrames.cs
- FixedPageProcessor.cs
- LogPolicy.cs
- FlowchartDesigner.Helpers.cs
- Transactions.cs
- SamlConstants.cs
- ToolBarButtonClickEvent.cs
- ChangePassword.cs
- HttpContext.cs
- CharacterHit.cs
- ConversionContext.cs
- ActivationServices.cs
- InputQueue.cs
- ResourcePermissionBase.cs
- Model3DGroup.cs
- StringHandle.cs
- PackageRelationshipCollection.cs
- WebHttpBehavior.cs
- NetTcpBindingCollectionElement.cs
- TextRunCache.cs
- HttpCacheVary.cs
- InternalConfigSettingsFactory.cs
- OutputScope.cs
- ComponentCollection.cs
- Stack.cs
- IdentityModelDictionary.cs
- AdornerHitTestResult.cs
- PointF.cs
- TrackingRecord.cs
- ColumnCollection.cs
- DocumentViewerHelper.cs
- DataStorage.cs
- HttpWriter.cs
- DbProviderFactories.cs
- RectangleConverter.cs
- HotSpot.cs
- ComplexPropertyEntry.cs
- StyleTypedPropertyAttribute.cs
- SubstitutionDesigner.cs
- NativeMethods.cs
- DefaultHttpHandler.cs
- Vector3DConverter.cs
- DataGridViewCellStyleBuilderDialog.cs
- mongolianshape.cs
- UpdatePanelControlTrigger.cs
- NamespaceCollection.cs
- CopyEncoder.cs
- BinaryMethodMessage.cs
- ListBoxChrome.cs
- EncodingNLS.cs
- QueryTask.cs
- ToolStripSeparator.cs
- SingleAnimationBase.cs
- HtmlElementCollection.cs
- DataControlButton.cs
- webbrowsersite.cs
- InvalidDataContractException.cs
- GridViewSortEventArgs.cs
- DataServiceKeyAttribute.cs
- OletxCommittableTransaction.cs
- DocumentPageHost.cs
- TypedDatasetGenerator.cs
- ValueOfAction.cs
- ImageButton.cs
- DiagnosticsConfigurationHandler.cs
- XPathAncestorQuery.cs
- HGlobalSafeHandle.cs
- DataGridViewRowConverter.cs
- CompleteWizardStep.cs
- SqlCacheDependencyDatabaseCollection.cs
- MatrixStack.cs
- ValueTable.cs
- TreeViewBindingsEditorForm.cs
- DataGridItemCollection.cs
- IdleTimeoutMonitor.cs
- NameValueCollection.cs
- StylusPointProperty.cs
- SeparatorAutomationPeer.cs
- ComPlusTypeValidator.cs
- TableProvider.cs
- EntityTypeEmitter.cs
- PictureBox.cs