Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Random.cs
- HttpDebugHandler.cs
- ContentPlaceHolder.cs
- PackageRelationshipCollection.cs
- CodeRegionDirective.cs
- RawStylusInputCustomDataList.cs
- PreDigestedSignedInfo.cs
- ActivityDesignerHelper.cs
- QueryConverter.cs
- CodeObjectCreateExpression.cs
- SubpageParagraph.cs
- KoreanLunisolarCalendar.cs
- ThreadAttributes.cs
- WebBrowsableAttribute.cs
- ObjectDataSourceView.cs
- MatchingStyle.cs
- FormViewModeEventArgs.cs
- MemoryMappedFileSecurity.cs
- ToolStripPanelRenderEventArgs.cs
- BuildManagerHost.cs
- ConstraintEnumerator.cs
- _NetworkingPerfCounters.cs
- ListControl.cs
- DataGridViewEditingControlShowingEventArgs.cs
- BaseProcessor.cs
- CompileXomlTask.cs
- ISAPIRuntime.cs
- RectangleF.cs
- DuplicateDetector.cs
- TimeoutTimer.cs
- _NetworkingPerfCounters.cs
- SqlUtils.cs
- XmlExceptionHelper.cs
- RelationshipFixer.cs
- CurrencyWrapper.cs
- Ipv6Element.cs
- CaretElement.cs
- AspProxy.cs
- StylusEventArgs.cs
- TypeTypeConverter.cs
- HttpConfigurationContext.cs
- ListViewDeleteEventArgs.cs
- SystemIcmpV4Statistics.cs
- AccessedThroughPropertyAttribute.cs
- RuntimeUtils.cs
- CapabilitiesPattern.cs
- Schedule.cs
- FixUp.cs
- EventBookmark.cs
- BamlStream.cs
- IpcChannelHelper.cs
- TextMarkerSource.cs
- DocumentSequenceHighlightLayer.cs
- IdentityManager.cs
- MeasureData.cs
- DesignerVerb.cs
- TextCollapsingProperties.cs
- BooleanAnimationBase.cs
- HostingEnvironmentException.cs
- StylusPointDescription.cs
- TextRenderer.cs
- DrawToolTipEventArgs.cs
- PathSegmentCollection.cs
- RequestQueue.cs
- XmlSchemas.cs
- UnionCodeGroup.cs
- BaseUriWithWildcard.cs
- SafeSerializationManager.cs
- ProtocolsConfigurationEntry.cs
- MenuRendererStandards.cs
- GenericsInstances.cs
- PrinterUnitConvert.cs
- HtmlTernaryTree.cs
- ExeConfigurationFileMap.cs
- StrokeNodeEnumerator.cs
- RefreshEventArgs.cs
- ProcessStartInfo.cs
- assertwrapper.cs
- ListBoxItemWrapperAutomationPeer.cs
- DataBindingCollection.cs
- WebScriptEnablingElement.cs
- GregorianCalendar.cs
- Win32KeyboardDevice.cs
- FileDialogCustomPlace.cs
- XmlDictionaryReaderQuotasElement.cs
- ComboBoxItem.cs
- ShellProvider.cs
- SqlFunctionAttribute.cs
- SoapAttributeOverrides.cs
- BinHexDecoder.cs
- log.cs
- SqlXml.cs
- DynamicControlParameter.cs
- EdmEntityTypeAttribute.cs
- MatrixIndependentAnimationStorage.cs
- DashStyles.cs
- AvTraceDetails.cs
- ConditionalDesigner.cs
- DBCommandBuilder.cs
- Stacktrace.cs