Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / Ink / InkSerializedFormat / MultiByteCodec.cs / 1305600 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FactoryGenerator.cs
- DataBinding.cs
- HttpCookie.cs
- COM2PropertyBuilderUITypeEditor.cs
- AttributeAction.cs
- TreeIterator.cs
- WebPartConnectionsConfigureVerb.cs
- DocumentEventArgs.cs
- EntityDataSourceStatementEditor.cs
- ControlParameter.cs
- MasterPage.cs
- GenericsInstances.cs
- DescendantQuery.cs
- SqlHelper.cs
- ContainerUtilities.cs
- DatagridviewDisplayedBandsData.cs
- VisualCollection.cs
- PerformanceCounter.cs
- CapabilitiesRule.cs
- GenericTextProperties.cs
- HtmlControl.cs
- HtmlTableCell.cs
- ObjectResult.cs
- mda.cs
- BindValidationContext.cs
- TimeIntervalCollection.cs
- TextRunProperties.cs
- MsmqChannelFactoryBase.cs
- ProcessThread.cs
- UniqueCodeIdentifierScope.cs
- XsltSettings.cs
- HttpTransportSecurity.cs
- ExpressionContext.cs
- LinearGradientBrush.cs
- RepeatBehavior.cs
- CodeAssignStatement.cs
- SapiRecoContext.cs
- PropertyNames.cs
- DataGridViewComboBoxEditingControl.cs
- CachedCompositeFamily.cs
- DBCommandBuilder.cs
- WinFormsSpinner.cs
- wgx_commands.cs
- XmlCharacterData.cs
- SHA256Managed.cs
- IResourceProvider.cs
- CatalogZoneBase.cs
- BamlVersionHeader.cs
- WorkflowInstanceRecord.cs
- MaterializeFromAtom.cs
- WindowsAuthenticationEventArgs.cs
- ConfigurationLocationCollection.cs
- FreezableCollection.cs
- BufferedGraphicsContext.cs
- WindowsHyperlink.cs
- CustomAttributeBuilder.cs
- FileNotFoundException.cs
- ExtensionElement.cs
- ListBox.cs
- UrlPath.cs
- SelectedGridItemChangedEvent.cs
- IResourceProvider.cs
- DependencyObjectProvider.cs
- QueryTaskGroupState.cs
- Accessors.cs
- ValidateNames.cs
- wpf-etw.cs
- MonthCalendar.cs
- NonBatchDirectoryCompiler.cs
- LeaseManager.cs
- ProxyAssemblyNotLoadedException.cs
- SystemIPv6InterfaceProperties.cs
- AsyncCompletedEventArgs.cs
- streamingZipPartStream.cs
- PasswordDeriveBytes.cs
- ParameterCollection.cs
- ClockController.cs
- ColorContext.cs
- TemplateEditingService.cs
- XD.cs
- DocumentPageTextView.cs
- PageAdapter.cs
- ToolStripMenuItem.cs
- IFlowDocumentViewer.cs
- ValidatorCompatibilityHelper.cs
- CreateUserWizard.cs
- DrawListViewColumnHeaderEventArgs.cs
- InternalDuplexChannelFactory.cs
- HierarchicalDataBoundControlAdapter.cs
- Dictionary.cs
- EventEntry.cs
- StickyNoteAnnotations.cs
- RegexWriter.cs
- IdentitySection.cs
- ActivityCollectionMarkupSerializer.cs
- CryptoApi.cs
- AuthorizationRule.cs
- WebZoneDesigner.cs
- DotExpr.cs
- FixedStringLookup.cs