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
- Size3DConverter.cs
- VariableQuery.cs
- DBSqlParserTable.cs
- Visual.cs
- DataTableExtensions.cs
- EqualityComparer.cs
- ComAdminWrapper.cs
- StructuralObject.cs
- ControlBindingsConverter.cs
- DbProviderFactoriesConfigurationHandler.cs
- DefaultPropertyAttribute.cs
- FrameworkElement.cs
- CrossAppDomainChannel.cs
- SqlComparer.cs
- Control.cs
- RSAPKCS1KeyExchangeFormatter.cs
- AutomationPropertyChangedEventArgs.cs
- Calendar.cs
- DiagnosticTraceSource.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- CreateUserWizardStep.cs
- HwndSubclass.cs
- WebConfigurationHostFileChange.cs
- SQLInt32.cs
- SelectionProviderWrapper.cs
- RSAPKCS1KeyExchangeFormatter.cs
- PropertyGeneratedEventArgs.cs
- BuildProvider.cs
- WindowsListViewGroupHelper.cs
- WsdlInspector.cs
- RelOps.cs
- XmlTextAttribute.cs
- PasswordPropertyTextAttribute.cs
- ExceptionCollection.cs
- XmlnsPrefixAttribute.cs
- Point.cs
- RelationshipManager.cs
- SafeNativeMethods.cs
- SQLDouble.cs
- XPathNode.cs
- ListViewTableRow.cs
- XmlWrappingReader.cs
- DbConnectionPoolIdentity.cs
- ElementHostAutomationPeer.cs
- FrameworkReadOnlyPropertyMetadata.cs
- FrameworkRichTextComposition.cs
- StylusPointPropertyInfo.cs
- SchemaTypeEmitter.cs
- HtmlPanelAdapter.cs
- ElapsedEventArgs.cs
- DataGridTableStyleMappingNameEditor.cs
- RowType.cs
- nulltextnavigator.cs
- ResourcePermissionBaseEntry.cs
- QueryInterceptorAttribute.cs
- DocumentOrderQuery.cs
- SignatureResourceHelper.cs
- OpenFileDialog.cs
- EffectiveValueEntry.cs
- Soap12ProtocolReflector.cs
- ContainerUtilities.cs
- InputLanguageSource.cs
- AttachedPropertyBrowsableAttribute.cs
- Classification.cs
- TableRowGroup.cs
- RSAOAEPKeyExchangeFormatter.cs
- SerializationEventsCache.cs
- GenericsInstances.cs
- PageHandlerFactory.cs
- AccessViolationException.cs
- MimeTextImporter.cs
- BamlResourceContent.cs
- PasswordBoxAutomationPeer.cs
- Activity.cs
- MenuItemStyle.cs
- GradientSpreadMethodValidation.cs
- SettingsPropertyValue.cs
- TreeIterators.cs
- SqlBinder.cs
- LassoHelper.cs
- PagesSection.cs
- NativeMethods.cs
- EventLogger.cs
- DecimalStorage.cs
- PolyQuadraticBezierSegment.cs
- Rect.cs
- Automation.cs
- keycontainerpermission.cs
- XpsFixedPageReaderWriter.cs
- initElementDictionary.cs
- CroppedBitmap.cs
- ELinqQueryState.cs
- OptimizedTemplateContent.cs
- MinimizableAttributeTypeConverter.cs
- OleDbFactory.cs
- HeaderCollection.cs
- DbProviderServices.cs
- ConfigXmlDocument.cs
- ButtonFieldBase.cs
- BamlVersionHeader.cs