Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- XmlSchemaProviderAttribute.cs
- DataGridViewCellStyle.cs
- XDRSchema.cs
- ButtonBase.cs
- FormsAuthenticationEventArgs.cs
- SmiEventSink_DeferedProcessing.cs
- StringValidatorAttribute.cs
- UniqueContractNameValidationBehavior.cs
- AsyncDataRequest.cs
- AddingNewEventArgs.cs
- OutKeywords.cs
- XmlBinaryReader.cs
- PerfCounterSection.cs
- CapabilitiesUse.cs
- TCPClient.cs
- OdbcCommandBuilder.cs
- _CookieModule.cs
- CodeMemberMethod.cs
- MissingMethodException.cs
- FileNotFoundException.cs
- MyContact.cs
- AsyncResult.cs
- ToolStripPanel.cs
- ItemType.cs
- DataServiceQueryOfT.cs
- NumericPagerField.cs
- XmlElementAttributes.cs
- BaseTemplateCodeDomTreeGenerator.cs
- CornerRadius.cs
- LinqDataSourceContextEventArgs.cs
- QualifiedCellIdBoolean.cs
- BamlRecordReader.cs
- WebPartConnectionsConnectVerb.cs
- WhereQueryOperator.cs
- NetPeerTcpBindingElement.cs
- BlurBitmapEffect.cs
- ExpressionHelper.cs
- StaticTextPointer.cs
- DependencyPropertyHelper.cs
- UIAgentMonitorHandle.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- SafeUserTokenHandle.cs
- HttpRuntime.cs
- ExceptionAggregator.cs
- ReflectionPermission.cs
- WebPartConnectionsConnectVerb.cs
- QilSortKey.cs
- AttributeAction.cs
- MemberListBinding.cs
- DATA_BLOB.cs
- OdbcParameterCollection.cs
- TypeElementCollection.cs
- TypeElement.cs
- SystemFonts.cs
- SecurityKeyType.cs
- ApplicationDirectoryMembershipCondition.cs
- UInt32Converter.cs
- StylusPointProperties.cs
- DataGridViewColumnEventArgs.cs
- WrappingXamlSchemaContext.cs
- PersonalizationAdministration.cs
- _IPv4Address.cs
- Script.cs
- NetworkAddressChange.cs
- DataPagerFieldCommandEventArgs.cs
- ListViewInsertedEventArgs.cs
- DataSourceCache.cs
- AssociatedControlConverter.cs
- _TransmitFileOverlappedAsyncResult.cs
- XmlAttributes.cs
- PanningMessageFilter.cs
- MimeFormImporter.cs
- MetadataArtifactLoader.cs
- MenuItemBinding.cs
- XmlSerializerNamespaces.cs
- ItemCollection.cs
- PixelShader.cs
- LinqDataSourceEditData.cs
- _AutoWebProxyScriptEngine.cs
- BufferedConnection.cs
- HttpConfigurationContext.cs
- MenuCommand.cs
- Error.cs
- HelpFileFileNameEditor.cs
- StreamReader.cs
- Literal.cs
- UrlAuthorizationModule.cs
- ExpressionContext.cs
- CryptoHandle.cs
- TemplatePagerField.cs
- SQLGuidStorage.cs
- DateTimeSerializationSection.cs
- selecteditemcollection.cs
- MdiWindowListStrip.cs
- KeyboardNavigation.cs
- MultiByteCodec.cs
- RenameRuleObjectDialog.Designer.cs
- Stroke2.cs
- TextChangedEventArgs.cs
- ServerType.cs