Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Print / Reach / PrintConfig / PageMediaSize.cs / 1 / PageMediaSize.cs
/*++ Copyright (C) 2003 Microsoft Corporation All rights reserved. Module Name: PageMediaSize.cs Abstract: Definition and implementation of this public feature/parameter related types. Author: [....] ([....]) 7/1/2003 --*/ using System; using System.IO; using System.Xml; using System.Collections; using System.Collections.ObjectModel; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.Printing; using MS.Internal.Printing.Configuration; #pragma warning disable 1634, 1691 // Allows suppression of certain PreSharp messages namespace MS.Internal.Printing.Configuration { ////// Represents a fixed-size page media size option. /// internal class FixedMediaSizeOption : PrintCapabilityOption { #region Constructors internal FixedMediaSizeOption(PrintCapabilityFeature ownerFeature) : base(ownerFeature) { _value = 0; _mediaSizeWidth = _mediaSizeHeight = PrintSchema.UnspecifiedIntValue; } #endregion Constructors #region Public Properties ////// Gets the page media size's value. /// public PageMediaSizeName Value { get { return _value; } } ////// Gets the fixed page media size's width of the physical media, in 1/96 inch unit. /// public double MediaSizeWidth { get { return UnitConverter.LengthValueFromMicronToDIP(_mediaSizeWidth); } } ////// Gets the fixed page media size's height of the physical media, in 1/96 inch unit. /// public double MediaSizeHeight { get { return UnitConverter.LengthValueFromMicronToDIP(_mediaSizeHeight); } } #endregion Public Properties #region Public Methods ////// Converts the non-custom page media size to human-readable string. /// ///A string that represents this non-custom page media size. public override string ToString() { return Value.ToString() + ": " + MediaSizeWidth.ToString(CultureInfo.CurrentCulture) + " x " + MediaSizeHeight.ToString(CultureInfo.CurrentCulture); } #endregion Public Methods #region Internal Fields internal PageMediaSizeName _value; // Integer values in micron unit internal int _mediaSizeWidth, _mediaSizeHeight; #endregion Internal Fields } ////// Represents page media size capability. /// internal class PageMediaSizeCapability : PrintCapabilityFeature { #region Constructors internal PageMediaSizeCapability(InternalPrintCapabilities ownerPrintCap) : base(ownerPrintCap) { } #endregion Constructors #region Public Properties ////// Gets the collection object that represents fixed-size page media sizes supported by the device. /// public CollectionFixedMediaSizes { get { return _fixedSizes; } } #endregion Public Properties #region Internal Methods internal static PrintCapabilityFeature NewFeatureCallback(InternalPrintCapabilities printCap) { PageMediaSizeCapability cap = new PageMediaSizeCapability(printCap); cap._fixedSizes = new Collection (); return cap; } internal override sealed bool AddOptionCallback(PrintCapabilityOption baseOption) { FixedMediaSizeOption option = baseOption as FixedMediaSizeOption; bool complete = false; // All PageMediaSize options must have an option name if (option._optionName == null) return complete; int enumValue = PrintSchemaMapper.SchemaNameToEnumValueWithArray( PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeNames, PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeEnums, option._optionName); // We only support standard Print Schema options if (enumValue > 0) { option._value = (PageMediaSizeName)enumValue; if ((option._mediaSizeWidth > 0) || (option._mediaSizeHeight > 0)) { this.FixedMediaSizes.Add(option); complete = true; } } return complete; } internal override sealed void AddSubFeatureCallback(PrintCapabilityFeature subFeature) { // PageMediaSize has no sub features. return; } internal override sealed bool FeaturePropCallback(PrintCapabilityFeature feature, XmlPrintCapReader reader) { // no feature property to handle return false; } internal override sealed PrintCapabilityOption NewOptionCallback(PrintCapabilityFeature baseFeature) { FixedMediaSizeOption option = new FixedMediaSizeOption(baseFeature); return option; } internal override sealed void OptionAttrCallback(PrintCapabilityOption baseOption, XmlPrintCapReader reader) { // no option attribute to handle return; } /// XML is not well-formed. internal override sealed bool OptionPropCallback(PrintCapabilityOption baseOption, XmlPrintCapReader reader) { FixedMediaSizeOption option = baseOption as FixedMediaSizeOption; bool handled = false; if (reader.CurrentElementNodeType == PrintSchemaNodeTypes.ScoredProperty) { handled = true; string sPropertyName = reader.CurrentElementNameAttrValue; if ((sPropertyName == PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeWidth) || (sPropertyName == PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeHeight)) { if (reader.MoveToNextSchemaElement(reader.CurrentElementDepth + 1, PrintSchemaNodeTypes.ScoredPropertyLevelTypes)) { if (reader.CurrentElementNodeType == PrintSchemaNodeTypes.Value) { // Child property is Value for fixed media size int intValue = 0; bool convertOK = false; try { intValue = XmlConvertHelper.ConvertStringToInt32(reader.CurrentElementTextValue); convertOK = true; } // We want to catch internal FormatException to skip recoverable XML content syntax error #pragma warning suppress 56502 #if _DEBUG catch (FormatException e) #else catch (FormatException) #endif { #if _DEBUG Trace.WriteLine("-Error- Invalid int value '" + reader.CurrentElementTextValue + "' at line number " + reader._xmlReader.LineNumber + ", line position " + reader._xmlReader.LinePosition + ": " + e.Message); #endif } if (convertOK) { if (sPropertyName == PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeWidth) { option._mediaSizeWidth = intValue; } else { option._mediaSizeHeight = intValue; } } } } else { #if _DEBUG Trace.WriteLine("-Error- Missing required Value or ParameterRef child-element at line number " + reader._xmlReader.LineNumber + ", line position " + reader._xmlReader.LinePosition); #endif } } else { handled = false; #if _DEBUG Trace.WriteLine("-Warning- skip unknown ScoredProperty '" + reader.CurrentElementNameAttrValue + "' at line " + reader._xmlReader.LineNumber + ", position " + reader._xmlReader.LinePosition); #endif } } return handled; } #endregion Internal Methods #region Internal Properties internal override sealed bool IsValid { get { return (this.FixedMediaSizes.Count > 0); } } internal override sealed string FeatureName { get { return PrintSchemaTags.Keywords.PageMediaSizeKeys.Self; } } internal override sealed bool HasSubFeature { get { return false; } } #endregion Internal Properties #region Internal Fields internal Collection_fixedSizes; #endregion Internal Fields } /// /// Represents page media size setting. /// internal class PageMediaSizeSetting : PrintTicketFeature { #region Constructors ////// Constructs a new page media size setting object. /// internal PageMediaSizeSetting(InternalPrintTicket ownerPrintTicket) : base(ownerPrintTicket) { this._featureName = PrintSchemaTags.Keywords.PageMediaSizeKeys.Self; this._propertyMaps = new PTPropertyMapEntry[] { new PTPropertyMapEntry(this, PrintSchemaTags.Framework.OptionNameProperty, PTPropValueTypes.EnumStringValue, PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeNames, PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeEnums), new PTPropertyMapEntry(this, PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeWidth, PTPropValueTypes.PositiveIntValue), new PTPropertyMapEntry(this, PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeHeight, PTPropValueTypes.PositiveIntValue), // property map entries for non-PS custom size new PTPropertyMapEntry(this, PrintSchemaTags.Keywords.PageMediaSizeKeys.CustomMediaSizeWidth, PTPropValueTypes.IntParamRefValue, PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeWidth, PrintSchemaTags.Keywords.ParameterDefs.PageMediaSizeMediaSizeWidth), new PTPropertyMapEntry(this, PrintSchemaTags.Keywords.PageMediaSizeKeys.CustomMediaSizeHeight, PTPropValueTypes.IntParamRefValue, PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeHeight, PrintSchemaTags.Keywords.ParameterDefs.PageMediaSizeMediaSizeHeight), }; } #endregion Constructors #region Public Properties ////// Gets the value of the page media size setting. /// ////// If the setting is not specified yet, the return value will be 0. /// public PageMediaSizeName Value { get { return (PageMediaSizeName)this[PrintSchemaTags.Framework.OptionNameProperty]; } } ////// Gets the the width of the physical media, in 1/96 inch unit. /// ////// If this dimension value is not specified yet, the return value will be /// public double MediaSizeWidth { get { int micronValue; micronValue = this[PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeWidth]; if ((micronValue == PrintSchema.UnspecifiedIntValue) && (this.Value == PageMediaSizeName.Unknown)) { // If we can't get the fixed-size width value, and the media size name is unknown, // it could be the case of custom media size. string optionName; bool bIsPrivate; if ((this.FeatureNode != null) && ((optionName = this.FeatureNode.GetOptionName(out bIsPrivate)) != null) && (optionName == PrintSchemaTags.Keywords.PageMediaSizeKeys.CustomMediaSize)) { micronValue = this[PrintSchemaTags.Keywords.PageMediaSizeKeys.CustomMediaSizeWidth]; } } return UnitConverter.LengthValueFromMicronToDIP(micronValue); } } ///. /// /// Gets the height of the physical media, in 1/96 inch unit. /// ////// If this dimension value is not specified yet, the return value will be /// public double MediaSizeHeight { get { int micronValue; micronValue = this[PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeHeight]; if ((micronValue == PrintSchema.UnspecifiedIntValue) && (this.Value == PageMediaSizeName.Unknown)) { // If we can't get the fixed-size height value, and the media size name is unknown, // it could be the case of custom media size. string optionName; bool bIsPrivate; if ((this.FeatureNode != null) && ((optionName = this.FeatureNode.GetOptionName(out bIsPrivate)) != null) && (optionName == PrintSchemaTags.Keywords.PageMediaSizeKeys.CustomMediaSize)) { micronValue = this[PrintSchemaTags.Keywords.PageMediaSizeKeys.CustomMediaSizeHeight]; } } return UnitConverter.LengthValueFromMicronToDIP(micronValue); } } #endregion Public Properties #region Public Methods ///. /// /// Sets page media size setting to a standard fixed media size name. /// /// the standard fixed media size name ////// "value" is not one of the standard ///. /// /// This function will also automatically set page media size setting to /// fixed width and height physical media dimensions defined by Print Schema for /// the standard fixed media size name. /// public void SetFixedMediaSize(PageMediaSizeName value) { InternalSetFixedMediaSize(value, true, 0, 0, false); // automatically set the dimension for the standard media sizes for (int i = 0; i < PrintSchema.StdMediaSizeTable.Length; i++) { if (PrintSchema.StdMediaSizeTable[i].SizeValue == value) { // Our internal table stores size width/height values in microns, so no need to // do unit conversion. if (PrintSchema.StdMediaSizeTable[i].SizeW != -1) { this[PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeWidth] = PrintSchema.StdMediaSizeTable[i].SizeW; } if (PrintSchema.StdMediaSizeTable[i].SizeH != -1) { this[PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeHeight] = PrintSchema.StdMediaSizeTable[i].SizeH; } break; } } } ////// Sets page media size setting to fixed width and height physical media dimensions. /// /// physical media dimension in the width direction, in 1/96 inch unit /// physical media dimension in the height direction, in 1/96 inch unit ////// Either "mediaSizeWidth" or "mediaSizeHeight" is not a positive dimension value. /// public void SetFixedMediaSize(double mediaSizeWidth, double mediaSizeHeight) { InternalSetFixedMediaSize(0, false, mediaSizeWidth, mediaSizeHeight, true); } ////// Sets page media size setting to a standard fixed media size name and /// to fixed width and height physical media dimensions. /// /// the standard fixed media size name /// physical media dimension in the width direction, in 1/96 inch unit /// physical media dimension in the height direction, in 1/96 inch unit ////// "value" is not one of the standard ///. /// /// Either "mediaSizeWidth" or "mediaSizeHeight" is not a positive dimension value. /// public void SetFixedMediaSize(PageMediaSizeName value, double mediaSizeWidth, double mediaSizeHeight) { InternalSetFixedMediaSize(value, true, mediaSizeWidth, mediaSizeHeight, true); } ////// Converts the page media size setting to human-readable string. /// ///A string that represents this page media size setting. public override string ToString() { return Value.ToString() + ": MediaSizeWidth=" + MediaSizeWidth.ToString(CultureInfo.CurrentCulture) + ", MediaSizeHeight=" + MediaSizeHeight.ToString(CultureInfo.CurrentCulture); } #endregion Public Methods #region Private Methods ////// "value" is not one of the standard ///. /// /// Either "mediaSizeWidth" or "mediaSizeHeight" is not a positive dimension value. /// private void InternalSetFixedMediaSize(PageMediaSizeName value, bool bSetValue, double mediaSizeWidth, double mediaSizeHeight, bool bSetWH) { if (bSetValue) { if (value < PrintSchema.PageMediaSizeNameEnumMin || value > PrintSchema.PageMediaSizeNameEnumMax) { throw new ArgumentOutOfRangeException("value"); } } if (bSetWH) { if ( (mediaSizeWidth <= 0) || (mediaSizeHeight <= 0) ) { throw new ArgumentOutOfRangeException((mediaSizeWidth <= 0) ? "mediaSizeWidth" : "mediaSizeHeight", PTUtility.GetTextFromResource("ArgumentException.PositiveValue")); } } // Remove all XML content related to PageMediaSize feature ClearSetting(); if (bSetValue) { this[PrintSchemaTags.Framework.OptionNameProperty] = (int)value; } if (bSetWH) { this[PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeWidth] = UnitConverter.LengthValueFromDIPToMicron(mediaSizeWidth); this[PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeHeight] = UnitConverter.LengthValueFromDIPToMicron(mediaSizeHeight); } } #endregion Private Methods } } // 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
- SortFieldComparer.cs
- Renderer.cs
- DesignerAutoFormatStyle.cs
- AlphaSortedEnumConverter.cs
- SQLMembershipProvider.cs
- MethodCallExpression.cs
- ScriptingProfileServiceSection.cs
- CornerRadiusConverter.cs
- SettingsPropertyValue.cs
- FontStyleConverter.cs
- DefaultPropertyAttribute.cs
- AttachmentCollection.cs
- CodeNamespaceImportCollection.cs
- SiteMapDataSourceView.cs
- Rules.cs
- HtmlTableRow.cs
- Int64Converter.cs
- TextSpanModifier.cs
- IIS7WorkerRequest.cs
- AppSettingsSection.cs
- DataBindingExpressionBuilder.cs
- TimeSpanMinutesConverter.cs
- BinaryFormatterWriter.cs
- HtmlWindowCollection.cs
- ContactManager.cs
- NamespaceCollection.cs
- CodeSubDirectoriesCollection.cs
- DataControlCommands.cs
- TransactionException.cs
- ConfigurationManagerInternal.cs
- HostedTransportConfigurationBase.cs
- KeyInfo.cs
- JournalEntryStack.cs
- SqlSupersetValidator.cs
- ConfigurationElementCollection.cs
- SqlFileStream.cs
- ADMembershipProvider.cs
- DataSvcMapFile.cs
- ContentControl.cs
- LoaderAllocator.cs
- FormsAuthenticationCredentials.cs
- SeparatorAutomationPeer.cs
- WindowsListViewGroup.cs
- CqlErrorHelper.cs
- Int32Rect.cs
- SmtpReplyReaderFactory.cs
- GenericAuthenticationEventArgs.cs
- SqlCacheDependencySection.cs
- WarningException.cs
- DataGridState.cs
- X509CertificateChain.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- MarkupExtensionSerializer.cs
- HasCopySemanticsAttribute.cs
- ArgumentNullException.cs
- AdapterUtil.cs
- TextTreeRootNode.cs
- MissingSatelliteAssemblyException.cs
- EntityClassGenerator.cs
- ObjectCacheSettings.cs
- ImageAnimator.cs
- Classification.cs
- DropSource.cs
- HtmlFormWrapper.cs
- DataGridViewCellCollection.cs
- StringConverter.cs
- SignedInfo.cs
- CharEnumerator.cs
- InvalidDocumentContentsException.cs
- Annotation.cs
- ItemContainerGenerator.cs
- WinFormsSecurity.cs
- DocumentGridPage.cs
- util.cs
- ProcessStartInfo.cs
- ThreadInterruptedException.cs
- ClientTargetSection.cs
- TextDpi.cs
- RegexWorker.cs
- DefaultTraceListener.cs
- RectangleHotSpot.cs
- CounterSampleCalculator.cs
- SaveFileDialog.cs
- WebDescriptionAttribute.cs
- DesignerView.xaml.cs
- TypeDescriptor.cs
- TransportReplyChannelAcceptor.cs
- ReaderWriterLock.cs
- PointAnimationBase.cs
- HttpGetClientProtocol.cs
- NameScope.cs
- Directory.cs
- UserControlBuildProvider.cs
- DbBuffer.cs
- XmlSchemaRedefine.cs
- HeaderCollection.cs
- AssociatedControlConverter.cs
- CardSpacePolicyElement.cs
- ObjectSet.cs
- XmlNamespaceMapping.cs