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
- MouseDevice.cs
- StringHelper.cs
- BrowserDefinitionCollection.cs
- XmlWhitespace.cs
- MenuAutomationPeer.cs
- XamlSerializationHelper.cs
- BatchParser.cs
- HttpConfigurationContext.cs
- ChooseAction.cs
- BigInt.cs
- CompilerInfo.cs
- XmlQueryType.cs
- DesignerSerializationOptionsAttribute.cs
- WebPartConnectionsEventArgs.cs
- COM2Enum.cs
- BaseAsyncResult.cs
- Activator.cs
- DESCryptoServiceProvider.cs
- UriTemplateMatch.cs
- FontUnitConverter.cs
- UnsafeNativeMethods.cs
- EmbeddedMailObjectsCollection.cs
- TextEndOfLine.cs
- PolicyChain.cs
- DataGridViewColumnHeaderCell.cs
- HashMembershipCondition.cs
- WindowsGraphicsWrapper.cs
- CaseInsensitiveOrdinalStringComparer.cs
- ScriptHandlerFactory.cs
- HttpRuntime.cs
- SeekableReadStream.cs
- RadioButtonRenderer.cs
- ScriptingWebServicesSectionGroup.cs
- UIElementAutomationPeer.cs
- XmlSchemaInferenceException.cs
- DocumentPageViewAutomationPeer.cs
- ALinqExpressionVisitor.cs
- ExtendedPropertyCollection.cs
- ComboBox.cs
- OdbcReferenceCollection.cs
- DataServiceRequestException.cs
- Model3DGroup.cs
- TypeUsage.cs
- GetLastErrorDetailsRequest.cs
- ModulesEntry.cs
- UnmanagedMarshal.cs
- RtfToXamlReader.cs
- DomNameTable.cs
- __Error.cs
- XmlLanguageConverter.cs
- TranslateTransform3D.cs
- ClientFormsIdentity.cs
- ServiceKnownTypeAttribute.cs
- PageThemeParser.cs
- ApplicationContext.cs
- PageParserFilter.cs
- SqlAliaser.cs
- FlowPosition.cs
- XmlNullResolver.cs
- SignedInfo.cs
- SafeSecurityHandles.cs
- XmlLanguage.cs
- CursorConverter.cs
- MemberProjectedSlot.cs
- TextBoxBase.cs
- ReadOnlyNameValueCollection.cs
- BindingContext.cs
- AssemblyAttributes.cs
- SqlUDTStorage.cs
- ControlPersister.cs
- Journaling.cs
- Speller.cs
- Expression.cs
- ResXResourceWriter.cs
- XNodeNavigator.cs
- Size.cs
- DynamicPropertyReader.cs
- Vector3DAnimationBase.cs
- BinaryNode.cs
- UInt32.cs
- GeneralTransformGroup.cs
- InkSerializer.cs
- LongCountAggregationOperator.cs
- VectorAnimationUsingKeyFrames.cs
- ListenerElementsCollection.cs
- DataGridViewMethods.cs
- BigInt.cs
- SuppressMergeCheckAttribute.cs
- SafeFindHandle.cs
- WsiProfilesElementCollection.cs
- ServiceDescriptions.cs
- GifBitmapEncoder.cs
- AppDomainAttributes.cs
- SharedStatics.cs
- TreeNodeEventArgs.cs
- XmlAggregates.cs
- VerificationException.cs
- UriTemplateEquivalenceComparer.cs
- ReferencedType.cs
- ContextStaticAttribute.cs