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
- MulticastNotSupportedException.cs
- RSAPKCS1KeyExchangeFormatter.cs
- ConnectionInterfaceCollection.cs
- CodeDomConfigurationHandler.cs
- arabicshape.cs
- SmtpNetworkElement.cs
- CompatibleIComparer.cs
- Pair.cs
- SqlDataSourceConfigureSelectPanel.cs
- AttributeEmitter.cs
- UnderstoodHeaders.cs
- DesignerHost.cs
- RMEnrollmentPage3.cs
- ActivityDelegate.cs
- WS2007FederationHttpBindingCollectionElement.cs
- XXXInfos.cs
- ScrollItemPattern.cs
- ProxyWebPartManagerDesigner.cs
- SafeWaitHandle.cs
- Soap.cs
- ListViewUpdatedEventArgs.cs
- RSAProtectedConfigurationProvider.cs
- UniqueIdentifierService.cs
- ContentElementAutomationPeer.cs
- TableLayoutStyleCollection.cs
- WorkflowPrinting.cs
- DataGridViewCellValueEventArgs.cs
- ToolStripDropDownClosedEventArgs.cs
- StorageSetMapping.cs
- ParameterToken.cs
- SchemaImporter.cs
- ObjectDataSourceDesigner.cs
- InvalidOperationException.cs
- storagemappingitemcollection.viewdictionary.cs
- PointAnimationClockResource.cs
- QueryPageSettingsEventArgs.cs
- BuildResultCache.cs
- CodeTypeOfExpression.cs
- PriorityQueue.cs
- UpDownBase.cs
- IntegerFacetDescriptionElement.cs
- PeerHelpers.cs
- ComponentResourceKeyConverter.cs
- XmlLanguageConverter.cs
- QueryExpression.cs
- SettingsProperty.cs
- SchemaMerger.cs
- RSAPKCS1SignatureDeformatter.cs
- SelectionItemPatternIdentifiers.cs
- GifBitmapDecoder.cs
- InputDevice.cs
- DocumentsTrace.cs
- SharedConnectionWorkflowTransactionService.cs
- TypedDataSourceCodeGenerator.cs
- QilIterator.cs
- GroupBoxAutomationPeer.cs
- SystemIPGlobalStatistics.cs
- ObjectSet.cs
- ObjectViewListener.cs
- Char.cs
- XmlTextReaderImpl.cs
- StringArrayConverter.cs
- SourceElementsCollection.cs
- Rijndael.cs
- BrushValueSerializer.cs
- MenuCommands.cs
- MemberAccessException.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- CollectionViewSource.cs
- PasswordPropertyTextAttribute.cs
- BrowserCapabilitiesFactory35.cs
- MarshalByRefObject.cs
- LongTypeConverter.cs
- MenuAdapter.cs
- SmtpReplyReader.cs
- ToolStripScrollButton.cs
- SqlTriggerContext.cs
- FloatUtil.cs
- OptimisticConcurrencyException.cs
- ResolveNameEventArgs.cs
- EntityContainer.cs
- TreeNodeStyleCollection.cs
- WebPartConnectionCollection.cs
- HtmlTableRowCollection.cs
- ObjectDataProvider.cs
- HandlerBase.cs
- TextTreePropertyUndoUnit.cs
- AdRotator.cs
- HostedElements.cs
- SafeNativeMethods.cs
- InternalControlCollection.cs
- ExpandedWrapper.cs
- ConfigurationStrings.cs
- HttpFileCollection.cs
- ConfigXmlDocument.cs
- ValidationUtility.cs
- NameSpaceEvent.cs
- EdmComplexTypeAttribute.cs
- GridView.cs
- Rect3D.cs