Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- Label.cs
- WindowVisualStateTracker.cs
- ListBoxChrome.cs
- SHA512.cs
- AnnotationHelper.cs
- DataShape.cs
- GridItemCollection.cs
- EditorZone.cs
- FileLevelControlBuilderAttribute.cs
- IisTraceWebEventProvider.cs
- DiscreteKeyFrames.cs
- DataTemplateKey.cs
- ConfigurationSettings.cs
- __ConsoleStream.cs
- DataGridViewRowPrePaintEventArgs.cs
- WebConvert.cs
- EntityChangedParams.cs
- SqlCrossApplyToCrossJoin.cs
- KeyValueSerializer.cs
- ExpressionBinding.cs
- ModulesEntry.cs
- InheritanceAttribute.cs
- TrustLevelCollection.cs
- SoapSchemaImporter.cs
- SQLDateTimeStorage.cs
- RequestCachePolicy.cs
- CodeSnippetStatement.cs
- FormattedTextSymbols.cs
- Emitter.cs
- RoamingStoreFile.cs
- Point4D.cs
- SqlFileStream.cs
- Documentation.cs
- CodeAttributeArgument.cs
- JsonFormatGeneratorStatics.cs
- HashLookup.cs
- AccessDataSourceWizardForm.cs
- ObjectSet.cs
- SmtpFailedRecipientException.cs
- DrawingContextWalker.cs
- WindowsListBox.cs
- EventEntry.cs
- ProtocolElement.cs
- CancellationState.cs
- TemplateField.cs
- OdbcFactory.cs
- UnsafeNativeMethods.cs
- WindowsStreamSecurityBindingElement.cs
- designeractionbehavior.cs
- PropertyChangeTracker.cs
- DataGridViewCellFormattingEventArgs.cs
- FunctionNode.cs
- PropertyDescriptor.cs
- TableLayoutRowStyleCollection.cs
- PropertyGridEditorPart.cs
- XmlValueConverter.cs
- MailHeaderInfo.cs
- EnvironmentPermission.cs
- HttpModuleAction.cs
- KnownTypeAttribute.cs
- HMAC.cs
- TextTreeUndoUnit.cs
- CookieHandler.cs
- VariableAction.cs
- KeyValueInternalCollection.cs
- HuffmanTree.cs
- CalendarDay.cs
- CallbackHandler.cs
- Path.cs
- FontStyleConverter.cs
- XmlSchemaSimpleTypeList.cs
- OdbcConnectionStringbuilder.cs
- TraceContextRecord.cs
- InternalResources.cs
- RawAppCommandInputReport.cs
- CatalogZone.cs
- PtsPage.cs
- DynamicObjectAccessor.cs
- EpmContentSerializer.cs
- ImageField.cs
- DefinitionUpdate.cs
- SafeProcessHandle.cs
- UiaCoreApi.cs
- MethodResolver.cs
- designeractionlistschangedeventargs.cs
- InternalConfigRoot.cs
- EntityClassGenerator.cs
- DecimalKeyFrameCollection.cs
- BrowserCapabilitiesFactory.cs
- FirstMatchCodeGroup.cs
- HtmlInputButton.cs
- CfgParser.cs
- __Error.cs
- DataContext.cs
- Boolean.cs
- TextServicesLoader.cs
- RuntimeCompatibilityAttribute.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- GridViewAutomationPeer.cs
- Thumb.cs