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
- ConfigurationSectionCollection.cs
- LambdaCompiler.Lambda.cs
- WorkflowServiceAttributesTypeConverter.cs
- ModuleConfigurationInfo.cs
- xmlformatgeneratorstatics.cs
- SqlServer2KCompatibilityAnnotation.cs
- ServiceHostingEnvironmentSection.cs
- RichTextBoxConstants.cs
- Encoder.cs
- FormatterConverter.cs
- CollectionMarkupSerializer.cs
- BlobPersonalizationState.cs
- wmiprovider.cs
- DocumentViewerHelper.cs
- PipeConnection.cs
- Tag.cs
- BinaryUtilClasses.cs
- MimeReturn.cs
- LineProperties.cs
- Faults.cs
- hresults.cs
- QilGeneratorEnv.cs
- SynchronizationContext.cs
- LexicalChunk.cs
- ToolStripTextBox.cs
- PathSegmentCollection.cs
- BooleanToVisibilityConverter.cs
- ImageAnimator.cs
- RegexCharClass.cs
- ModelUIElement3D.cs
- EndpointFilterProvider.cs
- IsolatedStorageFilePermission.cs
- XamlSerializerUtil.cs
- TextEffectResolver.cs
- TreeViewEvent.cs
- TextOutput.cs
- TreeBuilder.cs
- BreakSafeBase.cs
- WebPartMenu.cs
- FilteredReadOnlyMetadataCollection.cs
- Native.cs
- RelationshipConstraintValidator.cs
- Rotation3DAnimationUsingKeyFrames.cs
- MetadataCollection.cs
- AppliesToBehaviorDecisionTable.cs
- ClrProviderManifest.cs
- SafeEventLogWriteHandle.cs
- NavigationPropertyEmitter.cs
- WSSecureConversationFeb2005.cs
- ForeignKeyFactory.cs
- PartialClassGenerationTask.cs
- _CommandStream.cs
- SharedUtils.cs
- TreeViewHitTestInfo.cs
- WebDescriptionAttribute.cs
- PKCS1MaskGenerationMethod.cs
- NonClientArea.cs
- MarkupWriter.cs
- exports.cs
- SchemaConstraints.cs
- Double.cs
- SimpleFieldTemplateFactory.cs
- Identity.cs
- Repeater.cs
- ColumnPropertiesGroup.cs
- NotifyInputEventArgs.cs
- ConvertTextFrag.cs
- DocumentXmlWriter.cs
- FontUnit.cs
- UriSchemeKeyedCollection.cs
- codemethodreferenceexpression.cs
- DeclaredTypeValidatorAttribute.cs
- LineBreakRecord.cs
- XPathDocument.cs
- ContentOperations.cs
- SyndicationDeserializer.cs
- InteropExecutor.cs
- Control.cs
- PackageDigitalSignature.cs
- EnumerationRangeValidationUtil.cs
- ReachSerializerAsync.cs
- FileLoadException.cs
- PageVisual.cs
- FieldAccessException.cs
- FilePrompt.cs
- DisplayInformation.cs
- RelatedEnd.cs
- Utils.cs
- ControlUtil.cs
- DropDownList.cs
- VisualStyleInformation.cs
- JsonReaderWriterFactory.cs
- QueryOutputWriter.cs
- SecurityPermission.cs
- Visual3D.cs
- ExtensibleClassFactory.cs
- QueryOperationResponseOfT.cs
- HotSpot.cs
- _UriTypeConverter.cs
- ButtonField.cs