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, List output)
{
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, List output)
{
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, List output)
{
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, List output)
{
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
- StructuralType.cs
- Msec.cs
- UnionCqlBlock.cs
- UIElementParagraph.cs
- EncodingNLS.cs
- PropertyEmitterBase.cs
- ManagementQuery.cs
- GridViewColumnCollectionChangedEventArgs.cs
- BitmapFrameEncode.cs
- ControlDesignerState.cs
- CodeCatchClause.cs
- SqlGatherProducedAliases.cs
- RadioButton.cs
- ButtonPopupAdapter.cs
- baseaxisquery.cs
- DeviceContexts.cs
- ReferencedType.cs
- LoginView.cs
- recordstatefactory.cs
- FormViewDeleteEventArgs.cs
- LeaseManager.cs
- EventLog.cs
- FixedPageProcessor.cs
- SystemUdpStatistics.cs
- ArgumentValidation.cs
- PkcsMisc.cs
- SchemaExporter.cs
- NavigationPropertySingletonExpression.cs
- NativeMethods.cs
- DeploymentSection.cs
- Compiler.cs
- ManagementEventArgs.cs
- PersistenceProviderBehavior.cs
- RuntimeEnvironment.cs
- SQLMembershipProvider.cs
- XmlReaderSettings.cs
- ContextStack.cs
- Link.cs
- NamespaceEmitter.cs
- CodeIndexerExpression.cs
- InvalidOperationException.cs
- DragDropManager.cs
- TextTrailingWordEllipsis.cs
- RawAppCommandInputReport.cs
- RSAOAEPKeyExchangeFormatter.cs
- FileRecordSequence.cs
- HttpCachePolicyElement.cs
- EntityPropertyMappingAttribute.cs
- LineSegment.cs
- CryptoApi.cs
- ObjectQueryExecutionPlan.cs
- QuadraticBezierSegment.cs
- GridEntry.cs
- Graphics.cs
- SqlClientPermission.cs
- ComNativeDescriptor.cs
- GlobalItem.cs
- DtrList.cs
- TextDocumentView.cs
- BitmapVisualManager.cs
- DigitalSignatureProvider.cs
- X509CertificateEndpointIdentity.cs
- PersonalizationEntry.cs
- HighlightVisual.cs
- XamlStream.cs
- Rfc2898DeriveBytes.cs
- SafeProcessHandle.cs
- Location.cs
- HelpInfo.cs
- _SpnDictionary.cs
- AppDomainInstanceProvider.cs
- DefaultDiscoveryServiceExtension.cs
- Trigger.cs
- MediaTimeline.cs
- UmAlQuraCalendar.cs
- sqlser.cs
- CompilerGeneratedAttribute.cs
- BindingElementCollection.cs
- UpdateManifestForBrowserApplication.cs
- ConditionChanges.cs
- PropertyChangedEventManager.cs
- MediaContextNotificationWindow.cs
- WebPartExportVerb.cs
- BindToObject.cs
- XmlElementAttribute.cs
- WindowsListViewGroupHelper.cs
- CompressedStack.cs
- ChangeNode.cs
- HttpApplicationFactory.cs
- CombinedGeometry.cs
- InterleavedZipPartStream.cs
- TextEffectCollection.cs
- TextServicesDisplayAttributePropertyRanges.cs
- RtfControlWordInfo.cs
- SystemParameters.cs
- NotEqual.cs
- BigInt.cs
- XmlParserContext.cs
- ColumnWidthChangedEvent.cs
- JsonEnumDataContract.cs