Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- BamlLocalizationDictionary.cs
- FileUtil.cs
- Misc.cs
- LogicalExpr.cs
- GeneralTransform2DTo3DTo2D.cs
- HttpHandlerAction.cs
- CurrencyWrapper.cs
- TagMapInfo.cs
- ISCIIEncoding.cs
- BamlLocalizer.cs
- FontCollection.cs
- OverrideMode.cs
- WebPartZoneCollection.cs
- ArrayConverter.cs
- PerfService.cs
- CodeAccessSecurityEngine.cs
- SocketPermission.cs
- SymbolEqualComparer.cs
- FastPropertyAccessor.cs
- UntypedNullExpression.cs
- ExpressionParser.cs
- DiagnosticStrings.cs
- BigInt.cs
- AddInIpcChannel.cs
- AnimationLayer.cs
- PtsPage.cs
- BitVector32.cs
- OdbcCommand.cs
- SecurityContextKeyIdentifierClause.cs
- EventLogPermissionEntryCollection.cs
- DataGridViewLinkCell.cs
- AvtEvent.cs
- Constants.cs
- CounterSampleCalculator.cs
- CircleHotSpot.cs
- AppModelKnownContentFactory.cs
- QueryPageSettingsEventArgs.cs
- InputLanguage.cs
- AbstractSvcMapFileLoader.cs
- ConfigurationElementProperty.cs
- XPathNavigatorKeyComparer.cs
- ValidationErrorCollection.cs
- ToolStripComboBox.cs
- ACE.cs
- TokenBasedSetEnumerator.cs
- LicFileLicenseProvider.cs
- HttpAsyncResult.cs
- DataControlFieldCollection.cs
- ReferenceEqualityComparer.cs
- MultiSelectRootGridEntry.cs
- MsmqIntegrationValidationBehavior.cs
- DataGridLength.cs
- SqlDataSourceView.cs
- EntityDataSourceSelectingEventArgs.cs
- HostingEnvironmentException.cs
- PrimaryKeyTypeConverter.cs
- GridViewColumn.cs
- HttpProfileGroupBase.cs
- SimpleTypesSurrogate.cs
- QilFactory.cs
- Ipv6Element.cs
- XmlILAnnotation.cs
- PowerStatus.cs
- XmlAttribute.cs
- KeyFrames.cs
- TemplateModeChangedEventArgs.cs
- Rect3D.cs
- TreeNodeStyleCollectionEditor.cs
- RegionData.cs
- ChineseLunisolarCalendar.cs
- ListViewInsertEventArgs.cs
- RuleInfoComparer.cs
- LicenseManager.cs
- glyphs.cs
- ListViewAutomationPeer.cs
- HtmlTable.cs
- FloaterBaseParaClient.cs
- CodeTypeDeclarationCollection.cs
- SamlAttributeStatement.cs
- SafeNativeMethodsOther.cs
- EnlistmentTraceIdentifier.cs
- ToolStripArrowRenderEventArgs.cs
- XmlSchemaExternal.cs
- XmlSerializableWriter.cs
- SHA256.cs
- CodeAccessSecurityEngine.cs
- TimeStampChecker.cs
- SamlAssertionKeyIdentifierClause.cs
- EntityDataSourceReferenceGroup.cs
- LocalizableResourceBuilder.cs
- DataKeyCollection.cs
- objectquery_tresulttype.cs
- SyntaxCheck.cs
- ComponentCollection.cs
- EntityDataSourceDesigner.cs
- DataGridItemEventArgs.cs
- MembershipSection.cs
- FilterableAttribute.cs
- TextFormatterImp.cs
- InputReferenceExpression.cs