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
- CodeIdentifier.cs
- TreeViewItem.cs
- ReachSerializer.cs
- ProfileParameter.cs
- ResourceExpression.cs
- CompiledRegexRunnerFactory.cs
- ToolStripGripRenderEventArgs.cs
- DataGridPreparingCellForEditEventArgs.cs
- Crc32.cs
- Rect.cs
- ToolbarAUtomationPeer.cs
- StructuredType.cs
- Base64Decoder.cs
- TextTreeRootNode.cs
- WindowProviderWrapper.cs
- RIPEMD160Managed.cs
- Tile.cs
- DrawItemEvent.cs
- WebPartCollection.cs
- RelationshipEndMember.cs
- LockedHandleGlyph.cs
- EventRouteFactory.cs
- RequiredAttributeAttribute.cs
- CornerRadiusConverter.cs
- ClientBuildManagerCallback.cs
- infer.cs
- BinaryCommonClasses.cs
- SmtpClient.cs
- AxHost.cs
- LinqDataSourceView.cs
- ObjectHandle.cs
- XmlDataCollection.cs
- HttpCachePolicyElement.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- DataListItem.cs
- FormsAuthenticationEventArgs.cs
- WindowsRegion.cs
- ThreadStartException.cs
- ScriptingJsonSerializationSection.cs
- CodeParameterDeclarationExpression.cs
- TextBox.cs
- OpenTypeCommon.cs
- DesignerTransactionCloseEvent.cs
- XmlDocumentFragment.cs
- EventSetterHandlerConverter.cs
- Compilation.cs
- BezierSegment.cs
- InternalConfigSettingsFactory.cs
- COM2ExtendedTypeConverter.cs
- RowCache.cs
- PermissionAttributes.cs
- TextTreeDeleteContentUndoUnit.cs
- FreezableDefaultValueFactory.cs
- RtfControls.cs
- TypedElement.cs
- NotCondition.cs
- CacheAxisQuery.cs
- KeyEvent.cs
- ClientData.cs
- QueryCreatedEventArgs.cs
- AuthenticationSection.cs
- FastEncoder.cs
- CipherData.cs
- ConfigurationPropertyAttribute.cs
- CanonicalFontFamilyReference.cs
- DesignerProperties.cs
- RefExpr.cs
- SafeBitVector32.cs
- UserNameSecurityTokenAuthenticator.cs
- PolyLineSegmentFigureLogic.cs
- NamespaceEmitter.cs
- ACE.cs
- HtmlTable.cs
- SynchronizationContext.cs
- safesecurityhelperavalon.cs
- CodeDelegateCreateExpression.cs
- SafeThreadHandle.cs
- TextParagraphCache.cs
- SiteMapHierarchicalDataSourceView.cs
- ReferentialConstraint.cs
- ValidatedControlConverter.cs
- RuleSettings.cs
- ConfigurationManagerInternalFactory.cs
- EventItfInfo.cs
- PassportAuthentication.cs
- CustomAttributeBuilder.cs
- WebPartVerb.cs
- Scene3D.cs
- BrowserTree.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- XmlObjectSerializerContext.cs
- Calendar.cs
- GradientStop.cs
- EventProviderWriter.cs
- ConnectionPoolManager.cs
- OleDbException.cs
- PathBox.cs
- DoubleLinkListEnumerator.cs
- ISAPIWorkerRequest.cs
- RichTextBox.cs