Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- MenuItemStyleCollection.cs
- HtmlInputButton.cs
- BufferAllocator.cs
- HttpAsyncResult.cs
- CodeDefaultValueExpression.cs
- DrawingContextDrawingContextWalker.cs
- StringReader.cs
- PolygonHotSpot.cs
- RuleInfoComparer.cs
- DbProviderFactories.cs
- ToolboxDataAttribute.cs
- SoapIgnoreAttribute.cs
- JoinElimination.cs
- ParagraphResult.cs
- RuntimeArgumentHandle.cs
- XamlPointCollectionSerializer.cs
- OleStrCAMarshaler.cs
- Journaling.cs
- HttpPostLocalhostServerProtocol.cs
- ResourceDefaultValueAttribute.cs
- FacetValues.cs
- HostAdapter.cs
- WindowPatternIdentifiers.cs
- AutomationIdentifierGuids.cs
- ServiceInfoCollection.cs
- WebProxyScriptElement.cs
- MatrixUtil.cs
- OperationFormatStyle.cs
- LockRecursionException.cs
- ConstrainedDataObject.cs
- QuotedPrintableStream.cs
- ILGenerator.cs
- OptimalTextSource.cs
- XpsImage.cs
- ParserHooks.cs
- ObjectSerializerFactory.cs
- DataBinder.cs
- ServiceHttpModule.cs
- typedescriptorpermissionattribute.cs
- SystemBrushes.cs
- MetabaseSettingsIis7.cs
- DynamicValidatorEventArgs.cs
- XPathNode.cs
- MetaData.cs
- AstTree.cs
- ForwardPositionQuery.cs
- OdbcConnectionString.cs
- ProxyElement.cs
- SemaphoreFullException.cs
- GenericPrincipal.cs
- UnsafeNativeMethodsPenimc.cs
- Input.cs
- QueryStringHandler.cs
- _SpnDictionary.cs
- ItemChangedEventArgs.cs
- ServiceContractViewControl.cs
- SettingsPropertyCollection.cs
- SqlParameterizer.cs
- ListBase.cs
- GeneralTransformGroup.cs
- BitStack.cs
- TextEndOfSegment.cs
- IndexOutOfRangeException.cs
- DateTimePicker.cs
- TemplateControlCodeDomTreeGenerator.cs
- InplaceBitmapMetadataWriter.cs
- TabItemAutomationPeer.cs
- DictionaryCustomTypeDescriptor.cs
- MouseOverProperty.cs
- BezierSegment.cs
- BindingCompleteEventArgs.cs
- DeleteIndexBinder.cs
- _PooledStream.cs
- EventManager.cs
- CommandDesigner.cs
- BoundPropertyEntry.cs
- ClientTarget.cs
- ToolStripSystemRenderer.cs
- ItemsControl.cs
- TraceSwitch.cs
- LifetimeServices.cs
- AgileSafeNativeMemoryHandle.cs
- DesignerActionMethodItem.cs
- ResolveResponse.cs
- CommonDialog.cs
- ViewSimplifier.cs
- RectangleConverter.cs
- coordinatorfactory.cs
- TimeSpanConverter.cs
- FormattedTextSymbols.cs
- DataBoundLiteralControl.cs
- PriorityBinding.cs
- XmlCustomFormatter.cs
- SymbolMethod.cs
- MultiAsyncResult.cs
- DataGridViewTopLeftHeaderCell.cs
- SegmentInfo.cs
- FreeIndexList.cs
- VisualStyleElement.cs
- FormViewInsertedEventArgs.cs