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
- ColorConvertedBitmap.cs
- Update.cs
- OleDbPropertySetGuid.cs
- DllNotFoundException.cs
- WorkflowValidationFailedException.cs
- Compiler.cs
- SHA1.cs
- CannotUnloadAppDomainException.cs
- ToolBarTray.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- IUnknownConstantAttribute.cs
- XmlIncludeAttribute.cs
- InlinedAggregationOperator.cs
- VisemeEventArgs.cs
- EncoderFallback.cs
- TagMapInfo.cs
- SrgsElementFactory.cs
- ParserStreamGeometryContext.cs
- LoadedOrUnloadedOperation.cs
- StaticExtensionConverter.cs
- ControlEvent.cs
- ResXDataNode.cs
- ContainerActivationHelper.cs
- SerialErrors.cs
- sqlnorm.cs
- LogSwitch.cs
- PkcsUtils.cs
- IpcClientManager.cs
- MouseActionValueSerializer.cs
- HealthMonitoringSection.cs
- OdbcEnvironment.cs
- OdbcTransaction.cs
- DictionaryEntry.cs
- WindowsPrincipal.cs
- ToolStripDropDown.cs
- TraceSection.cs
- CodeAttributeArgument.cs
- LabelAutomationPeer.cs
- ContextQuery.cs
- GeometryGroup.cs
- XmlUtil.cs
- ConnectionsZoneDesigner.cs
- PriorityQueue.cs
- ConnectionManagementSection.cs
- InsufficientMemoryException.cs
- TextSearch.cs
- HtmlSelect.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- PtsCache.cs
- ValueProviderWrapper.cs
- SequentialOutput.cs
- DispatcherOperation.cs
- Base64Encoding.cs
- RootCodeDomSerializer.cs
- SchemaNames.cs
- EncodingDataItem.cs
- RawStylusInputCustomData.cs
- RenderDataDrawingContext.cs
- ColumnCollectionEditor.cs
- Comparer.cs
- TextSelectionHighlightLayer.cs
- DataBoundControlParameterTarget.cs
- DbMetaDataFactory.cs
- MembershipSection.cs
- FontCacheLogic.cs
- BatchServiceHost.cs
- WindowsStatusBar.cs
- ContextConfiguration.cs
- BooleanSwitch.cs
- ObjectStateFormatter.cs
- StrokeNodeData.cs
- DetailsViewPagerRow.cs
- X509Certificate.cs
- HtmlMeta.cs
- DescendentsWalker.cs
- CurrencyManager.cs
- MemberNameValidator.cs
- PointValueSerializer.cs
- StringExpressionSet.cs
- StateMachineSubscription.cs
- UniqueID.cs
- TypeResolvingOptions.cs
- SourceElementsCollection.cs
- control.ime.cs
- InfiniteIntConverter.cs
- CommentEmitter.cs
- TextElementCollectionHelper.cs
- StreamInfo.cs
- RelationshipConverter.cs
- ObjectDataSourceSelectingEventArgs.cs
- GlobalizationAssembly.cs
- TopClause.cs
- XmlSchemaExporter.cs
- bindurihelper.cs
- ExpressionWriter.cs
- WindowClosedEventArgs.cs
- ErrorFormatterPage.cs
- Int32CollectionConverter.cs
- DecoderNLS.cs
- SmiSettersStream.cs