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
- CreateUserErrorEventArgs.cs
- JsonObjectDataContract.cs
- PointF.cs
- ProgressChangedEventArgs.cs
- MimeTypeAttribute.cs
- BaseConfigurationRecord.cs
- XmlAttributes.cs
- RunWorkerCompletedEventArgs.cs
- EastAsianLunisolarCalendar.cs
- WrappedKeySecurityTokenParameters.cs
- ToolStripItemRenderEventArgs.cs
- MetabaseServerConfig.cs
- EncoderFallback.cs
- LocalsItemDescription.cs
- FixedPageProcessor.cs
- UrlMappingCollection.cs
- TcpClientCredentialType.cs
- XmlLanguage.cs
- BasicBrowserDialog.designer.cs
- ResXDataNode.cs
- ClientApiGenerator.cs
- PreloadedPackages.cs
- PlanCompiler.cs
- XmlSchemaAnnotated.cs
- WpfXamlLoader.cs
- StoreAnnotationsMap.cs
- PersonalizationProviderHelper.cs
- XsltException.cs
- MappingItemCollection.cs
- SecurityUniqueId.cs
- MaskedTextBoxDesigner.cs
- followingsibling.cs
- CommonBehaviorsSection.cs
- serverconfig.cs
- XmlEnumAttribute.cs
- ListViewSelectEventArgs.cs
- VersionedStream.cs
- FlowLayout.cs
- StorageEndPropertyMapping.cs
- NetPeerTcpBindingElement.cs
- SecurityContext.cs
- EditCommandColumn.cs
- ErrorReporting.cs
- AuthenticationConfig.cs
- SID.cs
- InternalsVisibleToAttribute.cs
- IntSecurity.cs
- ClrProviderManifest.cs
- WebBrowserNavigatedEventHandler.cs
- SecurityElement.cs
- ActiveDocumentEvent.cs
- ListManagerBindingsCollection.cs
- DataGridViewTopRowAccessibleObject.cs
- TemplateInstanceAttribute.cs
- DetailsViewInsertedEventArgs.cs
- ChangeBlockUndoRecord.cs
- XmlDataProvider.cs
- BreadCrumbTextConverter.cs
- RSAPKCS1SignatureDeformatter.cs
- GridViewCommandEventArgs.cs
- DefaultObjectMappingItemCollection.cs
- Update.cs
- XmlElementAttributes.cs
- SrgsElementList.cs
- Attributes.cs
- GrammarBuilderPhrase.cs
- CompilerTypeWithParams.cs
- DataTableNewRowEvent.cs
- ExtenderControl.cs
- DelegatedStream.cs
- UntypedNullExpression.cs
- FileDialogCustomPlacesCollection.cs
- TextFragmentEngine.cs
- WorkflowApplicationCompletedException.cs
- MostlySingletonList.cs
- ItemDragEvent.cs
- PenLineJoinValidation.cs
- NativeMethods.cs
- InstanceDataCollectionCollection.cs
- Stackframe.cs
- CapiSymmetricAlgorithm.cs
- InputMethod.cs
- CompiledIdentityConstraint.cs
- CachedTypeface.cs
- ActivityMarkupSerializationProvider.cs
- PolyQuadraticBezierSegment.cs
- ElementHostPropertyMap.cs
- SessionStateContainer.cs
- RunWorkerCompletedEventArgs.cs
- ResourceAttributes.cs
- DataObjectAttribute.cs
- ErrorProvider.cs
- InstanceCompleteException.cs
- KeyEventArgs.cs
- ListViewDeleteEventArgs.cs
- TraceHandlerErrorFormatter.cs
- Stopwatch.cs
- PackagePartCollection.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- NameSpaceEvent.cs