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
- InputProviderSite.cs
- PenContext.cs
- MemberMaps.cs
- IUnknownConstantAttribute.cs
- EncodingTable.cs
- DataRecordInternal.cs
- RuntimeHelpers.cs
- AudioSignalProblemOccurredEventArgs.cs
- XmlCustomFormatter.cs
- httpserverutility.cs
- WebRequestModuleElement.cs
- WebProxyScriptElement.cs
- XmlObjectSerializer.cs
- BackStopAuthenticationModule.cs
- SplitterDesigner.cs
- ThreadLocal.cs
- DataSourceXmlClassAttribute.cs
- ErrorFormatterPage.cs
- CompositionAdorner.cs
- CodeGenerator.cs
- ImmComposition.cs
- ReachDocumentReferenceCollectionSerializerAsync.cs
- UnsafeNativeMethods.cs
- CapabilitiesPattern.cs
- PriorityRange.cs
- SystemIPGlobalProperties.cs
- ConfigXmlElement.cs
- OracleDateTime.cs
- TextPenaltyModule.cs
- DbXmlEnabledProviderManifest.cs
- Utility.cs
- InternalConfigHost.cs
- FontResourceCache.cs
- _ShellExpression.cs
- InternalBase.cs
- ConnectionManagementElement.cs
- StateElement.cs
- ExpressionPrinter.cs
- UnsafeNativeMethods.cs
- uribuilder.cs
- WebBrowserEvent.cs
- StreamReader.cs
- BitmapEncoder.cs
- TraceListener.cs
- StateChangeEvent.cs
- userdatakeys.cs
- Stacktrace.cs
- LinkButton.cs
- EntityDataSourceMemberPath.cs
- TextLineResult.cs
- GetPageNumberCompletedEventArgs.cs
- RunClient.cs
- TextServicesContext.cs
- _ListenerResponseStream.cs
- ConfigXmlSignificantWhitespace.cs
- SocketSettings.cs
- FragmentQueryProcessor.cs
- CodeEntryPointMethod.cs
- TransformCryptoHandle.cs
- DatagridviewDisplayedBandsData.cs
- SqlUnionizer.cs
- EntityStoreSchemaGenerator.cs
- WebBrowserProgressChangedEventHandler.cs
- XmlElementAttributes.cs
- PropertyDescriptorCollection.cs
- CatalogZoneBase.cs
- SecurityElement.cs
- StackSpiller.Generated.cs
- ExpressionBuilderCollection.cs
- ReachDocumentSequenceSerializerAsync.cs
- ModelProperty.cs
- TargetControlTypeCache.cs
- KerberosReceiverSecurityToken.cs
- ByteConverter.cs
- TextTreeFixupNode.cs
- HtmlTableCellCollection.cs
- IntranetCredentialPolicy.cs
- PageMediaSize.cs
- HttpHandlersSection.cs
- TextSpan.cs
- DateTimeConverter.cs
- _NegoStream.cs
- DataControlReference.cs
- Rule.cs
- SamlSubjectStatement.cs
- BindingElement.cs
- Helpers.cs
- CodeExporter.cs
- AssemblyName.cs
- brushes.cs
- BezierSegment.cs
- ResourceExpressionBuilder.cs
- Parser.cs
- PageStatePersister.cs
- HybridObjectCache.cs
- SecurityPermission.cs
- RuleSettings.cs
- ReadOnlyMetadataCollection.cs
- RoleGroupCollection.cs
- CodeDOMProvider.cs