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
- ConfigXmlWhitespace.cs
- SortQuery.cs
- PenThreadPool.cs
- WebServiceReceiveDesigner.cs
- CollectionViewSource.cs
- SiteMapDataSourceView.cs
- DropTarget.cs
- HtmlEmptyTagControlBuilder.cs
- ListViewSelectEventArgs.cs
- ConversionValidationRule.cs
- BatchServiceHost.cs
- UserPersonalizationStateInfo.cs
- SqlCommand.cs
- OletxCommittableTransaction.cs
- IdentitySection.cs
- Literal.cs
- TypeUtils.cs
- JsonGlobals.cs
- TraceContextEventArgs.cs
- TreeNodeClickEventArgs.cs
- DiscoveryClientOutputChannel.cs
- StoragePropertyMapping.cs
- ConsumerConnectionPoint.cs
- AdornerDecorator.cs
- XmlSchemaChoice.cs
- HtmlInputButton.cs
- Lease.cs
- DragCompletedEventArgs.cs
- Binding.cs
- MethodAccessException.cs
- ItemList.cs
- X509Utils.cs
- DataStorage.cs
- ConfigurationStrings.cs
- AssemblyAttributesGoHere.cs
- BuildProviderInstallComponent.cs
- FrameworkContextData.cs
- RemotingSurrogateSelector.cs
- SocketElement.cs
- OrderablePartitioner.cs
- FolderBrowserDialog.cs
- XmlAttributes.cs
- ProcessMessagesAsyncResult.cs
- XXXInfos.cs
- AspProxy.cs
- XmlILIndex.cs
- ExpressionCopier.cs
- EdmProperty.cs
- StyleCollection.cs
- TryCatch.cs
- DomainUpDown.cs
- FormViewModeEventArgs.cs
- AutoResizedEvent.cs
- HistoryEventArgs.cs
- SQLDateTime.cs
- Operator.cs
- StreamGeometry.cs
- GridEntry.cs
- ExtensionQuery.cs
- Control.cs
- DocumentsTrace.cs
- ReceiveActivityDesignerTheme.cs
- TextUtf8RawTextWriter.cs
- DateTimeFormatInfoScanner.cs
- FragmentQuery.cs
- StateDesigner.TransitionInfo.cs
- SqlDataSourceCustomCommandPanel.cs
- ToolStripSplitButton.cs
- DiscriminatorMap.cs
- DBDataPermission.cs
- ActivityBindForm.Designer.cs
- BezierSegment.cs
- CodePrimitiveExpression.cs
- FileInfo.cs
- DocumentXmlWriter.cs
- QilInvoke.cs
- CustomAssemblyResolver.cs
- SchemaImporter.cs
- LineBreakRecord.cs
- ObjectDataSourceEventArgs.cs
- _UriTypeConverter.cs
- BooleanAnimationBase.cs
- SpellerError.cs
- InstanceNotReadyException.cs
- HandlerBase.cs
- XPathScanner.cs
- TPLETWProvider.cs
- SectionXmlInfo.cs
- CodeCastExpression.cs
- HttpContext.cs
- COM2PropertyPageUITypeConverter.cs
- COM2PropertyBuilderUITypeEditor.cs
- HatchBrush.cs
- Button.cs
- KeyedPriorityQueue.cs
- RepeatButton.cs
- StrokeCollection2.cs
- EntityStoreSchemaFilterEntry.cs
- TypeDelegator.cs
- ExpressionBinding.cs