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
- Selection.cs
- ZipIORawDataFileBlock.cs
- AppearanceEditorPart.cs
- AnimationTimeline.cs
- PeerInvitationResponse.cs
- WebBrowserBase.cs
- LogExtent.cs
- MexNamedPipeBindingElement.cs
- InstalledFontCollection.cs
- FrameworkElement.cs
- ThreadPool.cs
- MatrixTransform3D.cs
- IPGlobalProperties.cs
- CredentialManagerDialog.cs
- TextContainerChangedEventArgs.cs
- OutKeywords.cs
- HttpGetClientProtocol.cs
- PageThemeBuildProvider.cs
- NameTable.cs
- KeyPullup.cs
- MetadataArtifactLoaderCompositeResource.cs
- LinkedList.cs
- AssemblyBuilder.cs
- ModelFactory.cs
- TemplateLookupAction.cs
- RootBuilder.cs
- SimpleWebHandlerParser.cs
- ByteArrayHelperWithString.cs
- IntegerValidator.cs
- FilterableAttribute.cs
- DynamicDocumentPaginator.cs
- GenericWebPart.cs
- MetabaseServerConfig.cs
- RepeaterItemCollection.cs
- DictionaryBase.cs
- ProxyWebPartManager.cs
- ProjectionCamera.cs
- WindowsPrincipal.cs
- ColumnResizeUndoUnit.cs
- MessageHeaderInfoTraceRecord.cs
- Encoding.cs
- ValidatingReaderNodeData.cs
- SemanticKeyElement.cs
- FontSourceCollection.cs
- MobileListItemCollection.cs
- TypefaceCollection.cs
- EventSetter.cs
- ZoneMembershipCondition.cs
- MarshalByValueComponent.cs
- ServiceNameCollection.cs
- ProgressBar.cs
- XmlSchemaSimpleTypeList.cs
- TextEditorContextMenu.cs
- SortQuery.cs
- SqlNotificationEventArgs.cs
- HMACRIPEMD160.cs
- DataListCommandEventArgs.cs
- DataGridAddNewRow.cs
- InstallHelper.cs
- TextTreeTextBlock.cs
- CustomActivityDesigner.cs
- HtmlHead.cs
- XmlText.cs
- HtmlWindowCollection.cs
- TabRenderer.cs
- Pen.cs
- MouseWheelEventArgs.cs
- FileReader.cs
- GeneralTransform.cs
- BamlBinaryWriter.cs
- ScrollBar.cs
- Int64Animation.cs
- TabItemAutomationPeer.cs
- MailAddress.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- FolderLevelBuildProvider.cs
- TraceInternal.cs
- TypeConverterHelper.cs
- ObjectTag.cs
- PrintPreviewControl.cs
- RtfToken.cs
- SplitterCancelEvent.cs
- NamedObject.cs
- SqlCommandBuilder.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- ValueConversionAttribute.cs
- CellPartitioner.cs
- AttributeUsageAttribute.cs
- DateTimeFormatInfoScanner.cs
- StorageMappingFragment.cs
- PriorityItem.cs
- DataSourceIDConverter.cs
- ValidationErrorCollection.cs
- ConsumerConnectionPointCollection.cs
- HttpListenerResponse.cs
- HelpEvent.cs
- HtmlMeta.cs
- DoubleLinkList.cs
- DataListItemCollection.cs
- _TLSstream.cs