Code:
/ 4.0 / 4.0 / 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. 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
- HtmlControlPersistable.cs
- HtmlUtf8RawTextWriter.cs
- typedescriptorpermission.cs
- ListParaClient.cs
- StateMachineWorkflow.cs
- ControllableStoryboardAction.cs
- SafeTimerHandle.cs
- ImportOptions.cs
- PackWebRequestFactory.cs
- CodeMemberProperty.cs
- TextTreeUndo.cs
- RenderData.cs
- PropertyToken.cs
- InsufficientMemoryException.cs
- SymmetricCryptoHandle.cs
- HttpListenerContext.cs
- CorrelationTokenTypeConvertor.cs
- ModifierKeysConverter.cs
- DetailsViewInsertEventArgs.cs
- EntityKeyElement.cs
- TypeLoadException.cs
- RequestSecurityTokenForGetBrowserToken.cs
- CaretElement.cs
- DocumentSequence.cs
- HwndAppCommandInputProvider.cs
- DmlSqlGenerator.cs
- UnsafeNativeMethodsMilCoreApi.cs
- MostlySingletonList.cs
- DataControlFieldsEditor.cs
- ServiceOperationParameter.cs
- StateItem.cs
- TextEditor.cs
- MailWebEventProvider.cs
- Win32.cs
- CodeDomDesignerLoader.cs
- HyperLinkField.cs
- ColorBlend.cs
- WsatRegistrationHeader.cs
- ToolStripLocationCancelEventArgs.cs
- IsolatedStorage.cs
- FunctionMappingTranslator.cs
- NameSpaceExtractor.cs
- XamlFigureLengthSerializer.cs
- OleDbError.cs
- SqlClientPermission.cs
- WebServiceEnumData.cs
- UserMapPath.cs
- Graph.cs
- CompiledELinqQueryState.cs
- FirstQueryOperator.cs
- ObjectComplexPropertyMapping.cs
- PreviewPrintController.cs
- ProgressiveCrcCalculatingStream.cs
- ExceptQueryOperator.cs
- MsmqChannelFactory.cs
- PageCodeDomTreeGenerator.cs
- WindowsRebar.cs
- Span.cs
- RawMouseInputReport.cs
- FontCacheUtil.cs
- Translator.cs
- DiscreteKeyFrames.cs
- AudioStateChangedEventArgs.cs
- SqlProfileProvider.cs
- HwndSourceParameters.cs
- LayoutSettings.cs
- ZipIOFileItemStream.cs
- SecurityPermission.cs
- WebPartZone.cs
- _FixedSizeReader.cs
- ExtensionSimplifierMarkupObject.cs
- VisualTransition.cs
- HostingEnvironment.cs
- SatelliteContractVersionAttribute.cs
- SecurityPermission.cs
- Sql8ConformanceChecker.cs
- LongMinMaxAggregationOperator.cs
- InputManager.cs
- SqlAliaser.cs
- EntityDataSourceChangingEventArgs.cs
- BufferedGraphicsManager.cs
- Ppl.cs
- PersonalizationProviderCollection.cs
- TemplateBuilder.cs
- StatusBarItem.cs
- ObjectAnimationBase.cs
- HttpRawResponse.cs
- WebBrowsableAttribute.cs
- RuleSet.cs
- OleDbParameterCollection.cs
- ProfileInfo.cs
- Collection.cs
- RecognizerBase.cs
- DesigntimeLicenseContextSerializer.cs
- BackgroundWorker.cs
- ValueProviderWrapper.cs
- HtmlDocument.cs
- TreeViewEvent.cs
- CapabilitiesPattern.cs
- Keyboard.cs