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
- TableItemPattern.cs
- QilXmlWriter.cs
- RepeatEnumerable.cs
- EventEntry.cs
- EmptyEnumerable.cs
- StringAnimationUsingKeyFrames.cs
- PropertyRef.cs
- NavigationHelper.cs
- CultureInfoConverter.cs
- CssClassPropertyAttribute.cs
- odbcmetadatacolumnnames.cs
- EncoderExceptionFallback.cs
- TdsValueSetter.cs
- WebPartsPersonalization.cs
- AuthenticationModulesSection.cs
- DocumentPageTextView.cs
- HierarchicalDataTemplate.cs
- ObjectNotFoundException.cs
- SourceChangedEventArgs.cs
- XPathAncestorQuery.cs
- NetMsmqBinding.cs
- ChannelTraceRecord.cs
- _SSPISessionCache.cs
- SymbolTable.cs
- LastQueryOperator.cs
- AgileSafeNativeMemoryHandle.cs
- SecurityDescriptor.cs
- DBBindings.cs
- DelegateArgument.cs
- ICollection.cs
- Point3DCollection.cs
- HostSecurityManager.cs
- ProtocolsConfigurationEntry.cs
- ControlEvent.cs
- SqlDataSourceCustomCommandEditor.cs
- PropertyChangedEventManager.cs
- EncoderReplacementFallback.cs
- SqlDeflator.cs
- LongPath.cs
- Label.cs
- Header.cs
- SymLanguageVendor.cs
- SerializationAttributes.cs
- Soap.cs
- FormsAuthenticationTicket.cs
- MediaElement.cs
- ResourceReferenceExpressionConverter.cs
- StringDictionary.cs
- EnumerableValidator.cs
- OleDbInfoMessageEvent.cs
- TagNameToTypeMapper.cs
- WebRequestModuleElement.cs
- ServiceNameElementCollection.cs
- TypeInfo.cs
- XsdBuildProvider.cs
- Point3DValueSerializer.cs
- Content.cs
- QilNode.cs
- PowerModeChangedEventArgs.cs
- PostBackOptions.cs
- VerticalAlignConverter.cs
- TemplateBamlTreeBuilder.cs
- StorageMappingItemLoader.cs
- SortDescriptionCollection.cs
- ListViewCancelEventArgs.cs
- FieldMetadata.cs
- AppSettingsSection.cs
- FileNameEditor.cs
- NavigationFailedEventArgs.cs
- PublisherIdentityPermission.cs
- FrameSecurityDescriptor.cs
- SoapAttributeAttribute.cs
- Latin1Encoding.cs
- ExpressionNode.cs
- LogFlushAsyncResult.cs
- SqlParameter.cs
- Timeline.cs
- ImageField.cs
- HeaderPanel.cs
- SqlBuffer.cs
- ZipIOLocalFileBlock.cs
- LOSFormatter.cs
- Stack.cs
- OleStrCAMarshaler.cs
- TableLayoutCellPaintEventArgs.cs
- CodePageEncoding.cs
- thaishape.cs
- NeutralResourcesLanguageAttribute.cs
- ItemsControlAutomationPeer.cs
- StringReader.cs
- ResolveResponseInfo.cs
- PanelStyle.cs
- SqlSelectStatement.cs
- FunctionNode.cs
- SymbolType.cs
- ThrowHelper.cs
- FileDialog.cs
- CustomWebEventKey.cs
- ForwardPositionQuery.cs
- InkPresenterAutomationPeer.cs