Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Print / Reach / PrintConfig / PrtTicket_Public.cs / 1 / PrtTicket_Public.cs
/*++
Copyright (C) 2003-2005 Microsoft Corporation
All rights reserved.
Module Name:
PrtTicket_Public.cs
Abstract:
Definition and implementation of public PrintTicket class.
Author:
[....] ([....]) 7/28/2003
--*/
using System;
using System.Xml;
using System.IO;
using System.Collections;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Globalization;
using System.Printing;
using MS.Internal.Printing.Configuration;
namespace MS.Internal.Printing.Configuration
{
///
/// Represents Print Ticket settings.
///
internal class InternalPrintTicket
{
#region Constructors
///
/// Constructs a new instance of the InternalPrintTicket class with no settings.
///
public InternalPrintTicket()
{
#if _DEBUG
InitTrace();
#endif
_xmlDoc = new XmlDocument();
// If client doesn't provide an XML PrintTicket, we will start with the
// built-in empty PrintTicket. We don't expect this loading will cause
// any exceptions.
_xmlDoc.LoadXml(PrintSchemaTags.Framework.EmptyPrintTicket);
SetupNamespaceManager();
}
///
/// Constructs a new instance of the InternalPrintTicket class with settings based on the XML form of PrintTicket.
///
/// Stream object containing the XML form of PrintTicket.
///
/// The parameter is null.
///
///
/// The stream object specified by parameter doesn't contain a well-formed XML PrintTicket.
/// The exception object's property describes why the XML is not well-formed.
/// And if not null, the exception object's property provides more details.
///
public InternalPrintTicket(Stream xmlStream)
{
// Verify input parameter
if (xmlStream == null)
{
throw new ArgumentNullException("xmlStream");
}
#if _DEBUG
InitTrace();
#endif
_xmlDoc = new XmlDocument();
try
{
// After reading the data from the user supplied input stream, we do NOT
// reset the stream position. This allows us to provide consistent behavior
// for seekable and non-seekable streams. It's trivial for application to
// reset the stream position based on their own needs.
_xmlDoc.Load(xmlStream);
// Make sure the XML content we write out is in UTF-8.
XmlDeclaration xmlDecl = _xmlDoc.FirstChild as XmlDeclaration;
if (xmlDecl != null)
{
// XML declaration already exists in the input PrintTicket XML stream.
// So enforce the UTF-8 encoding.
xmlDecl.Encoding = "UTF-8";
}
else
{
// There's no XML declaration in the input PrintTicket XML stream.
// So create the XML declaration with UTF-8 encoding.
xmlDecl = _xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
_xmlDoc.InsertBefore(xmlDecl, _xmlDoc.DocumentElement);
}
}
catch (XmlException e)
{
// We catch the XmlException thrown by XML parser and rethrow our own FormatException
// so that our client only needs to care about FormatException for non-well-formed Print Ticket.
throw NewPTFormatException(e.Message, e);
}
SetupNamespaceManager();
// Now the client supplied XML PrintTicket has been verified by XML
// parser as well-formed XML, but we still need to further verify that
// it is also well-formed PrintTicket
//
PrintTicketEditor.CheckIsWellFormedPrintTicket(this);
PrintTicketEditor.CheckAndAddMissingStdNamespaces(this);
}
#endregion Constructors
#region Public Methods
///
/// Creates a duplicate of this InternalPrintTicket object.
///
/// The duplicated InternalPrintTicket object.
public InternalPrintTicket Clone()
{
// Design Guideline says do not implement ICloneable since that interface doesn't
// specify whether the clone is a deep copy or non-deep copy. So it's recommended
// that each type defines its own Clone or Copy methodology.
InternalPrintTicket clonePT = new InternalPrintTicket(this.XmlStream);
return clonePT;
}
///
/// Saves this InternalPrintTicket object to the specified stream.
///
/// The stream to which you want to save.
///
/// The parameter is null.
///
public void SaveTo(Stream outStream)
{
// Verify input parameter
if (outStream == null)
{
throw new ArgumentNullException("outStream");
}
// After writing the data to the user supplied output stream, we do NOT
// reset the stream position. This allows us to provide consistent behavior
// for seekable and non-seekable streams. It's trivial for application to
// reset the stream position based on their own needs.
_xmlDoc.Save(outStream);
}
#endregion Public Methods
#region Public Properties
///
/// Gets a object that specifies the document collate setting.
///
public DocumentCollateSetting DocumentCollate
{
get
{
if (_docCollate == null)
{
_docCollate = new DocumentCollateSetting(this);
}
return _docCollate;
}
}
///
/// Gets a object that specifies the job duplex setting.
///
public JobDuplexSetting JobDuplex
{
get
{
if (_jobDuplex == null)
{
_jobDuplex = new JobDuplexSetting(this);
}
return _jobDuplex;
}
}
///
/// Gets a object that specifies the job NUp setting.
///
public JobNUpSetting JobNUp
{
get
{
if (_jobNUp == null)
{
_jobNUp = new JobNUpSetting(this);
}
return _jobNUp;
}
}
///
/// Gets a object that specifies the job output stapling setting.
///
public JobStapleSetting JobStaple
{
get
{
if (_jobStaple == null)
{
_jobStaple = new JobStapleSetting(this);
}
return _jobStaple;
}
}
///
/// Gets a object that specifies the page device font substitution setting.
///
public PageDeviceFontSubstitutionSetting PageDeviceFontSubstitution
{
get
{
if (_pageDeviceFontSubst == null)
{
_pageDeviceFontSubst = new PageDeviceFontSubstitutionSetting(this);
}
return _pageDeviceFontSubst;
}
}
///
/// Gets a object that specifies the page media size setting.
///
public PageMediaSizeSetting PageMediaSize
{
get
{
if (_pageMediaSize == null)
{
_pageMediaSize = new PageMediaSizeSetting(this);
}
return _pageMediaSize;
}
}
///
/// Gets a object that specifies the page media type setting.
///
public PageMediaTypeSetting PageMediaType
{
get
{
if (_pageMediaType == null)
{
_pageMediaType = new PageMediaTypeSetting(this);
}
return _pageMediaType;
}
}
///
/// Gets a object that specifies the page orientation setting.
///
public PageOrientationSetting PageOrientation
{
get
{
if (_pageOrientation == null)
{
_pageOrientation = new PageOrientationSetting(this);
}
return _pageOrientation;
}
}
///
/// Gets a object that specifies the page output color setting.
///
public PageOutputColorSetting PageOutputColor
{
get
{
if (_pageOutputColor == null)
{
_pageOutputColor = new PageOutputColorSetting(this);
}
return _pageOutputColor;
}
}
///
/// Gets a object that specifies the page resolution setting.
///
public PageResolutionSetting PageResolution
{
get
{
if (_pageResolution == null)
{
_pageResolution = new PageResolutionSetting(this);
}
return _pageResolution;
}
}
///
/// Gets a object that specifies the page scaling setting.
///
public PageScalingSetting PageScaling
{
get
{
if (_pageScaling == null)
{
_pageScaling = new PageScalingSetting(this);
}
return _pageScaling;
}
}
///
/// Gets a object that specifies the page TrueType font handling mode setting.
///
public PageTrueTypeFontModeSetting PageTrueTypeFontMode
{
get
{
if (_pageTrueTypeFontMode == null)
{
_pageTrueTypeFontMode = new PageTrueTypeFontModeSetting(this);
}
return _pageTrueTypeFontMode;
}
}
///
/// Gets a object that specifies the job page order setting.
///
public JobPageOrderSetting JobPageOrder
{
get
{
if (_jobPageOrder == null)
{
_jobPageOrder = new JobPageOrderSetting(this);
}
return _jobPageOrder;
}
}
///
/// Gets a object that specifies the page photo printing intent setting.
///
public PagePhotoPrintingIntentSetting PagePhotoPrintingIntent
{
get
{
if (_pagePhotoIntent == null)
{
_pagePhotoIntent = new PagePhotoPrintingIntentSetting(this);
}
return _pagePhotoIntent;
}
}
///
/// Gets a object that specifies the page borderless setting.
///
public PageBorderlessSetting PageBorderless
{
get
{
if (_pageBorderless == null)
{
_pageBorderless = new PageBorderlessSetting(this);
}
return _pageBorderless;
}
}
///
/// Gets a object that specifies the page output quality setting.
///
public PageOutputQualitySetting PageOutputQuality
{
get
{
if (_pageOutputQuality == null)
{
_pageOutputQuality = new PageOutputQualitySetting(this);
}
return _pageOutputQuality;
}
}
///
/// Gets a object that specifies the job input bin setting.
///
public JobInputBinSetting JobInputBin
{
get
{
if (_jobInputBin == null)
{
_jobInputBin = new JobInputBinSetting(this);
}
return _jobInputBin;
}
}
///
/// Gets a object that specifies the document input bin setting.
///
public DocumentInputBinSetting DocumentInputBin
{
get
{
if (_documentInputBin == null)
{
_documentInputBin = new DocumentInputBinSetting(this);
}
return _documentInputBin;
}
}
///
/// Gets a object that specifies the page input bin setting.
///
public PageInputBinSetting PageInputBin
{
get
{
if (_pageInputBin == null)
{
_pageInputBin = new PageInputBinSetting(this);
}
return _pageInputBin;
}
}
///
/// Gets a object that specifies the job copy count setting.
///
public JobCopyCountSetting JobCopyCount
{
get
{
if (_jobCopyCount == null)
{
_jobCopyCount = new JobCopyCountSetting(this);
}
return _jobCopyCount;
}
}
///
/// Gets a object that contains the XML form of this PrintTicket object.
///
public MemoryStream XmlStream
{
get
{
MemoryStream ms = new MemoryStream();
_xmlDoc.Save(ms);
ms.Position = 0;
return ms;
}
}
#endregion Public Properties
#region Internal Methods
///
/// Returns a new FormatException instance for not-well-formed PrintTicket XML.
///
/// detailed message about the violation of well-formness
/// the new FormatException instance
internal static FormatException NewPTFormatException(string detailMsg)
{
return NewPTFormatException(detailMsg, null);
}
///
/// Returns a new FormatException instance for not-well-formed PrintTicket XML.
///
/// detailed message about the violation of well-formness
/// the exception that causes the violation of well-formness
/// the new FormatException instance
internal static FormatException NewPTFormatException(string detailMsg, Exception innerException)
{
return new FormatException(String.Format(CultureInfo.CurrentCulture,
"{0} {1} {2}",
PrintSchemaTags.Framework.PrintTicketRoot,
PTUtility.GetTextFromResource("FormatException.XMLNotWellFormed"),
detailMsg),
innerException);
}
internal PrintTicketFeature GetBasePTFeatureObject(CapabilityName feature)
{
switch (feature)
{
case CapabilityName.DocumentCollate:
return this.DocumentCollate;
case CapabilityName.PageDeviceFontSubstitution:
return this.PageDeviceFontSubstitution;
case CapabilityName.JobDuplex:
return this.JobDuplex;
case CapabilityName.JobInputBin:
return this.JobInputBin;
case CapabilityName.DocumentInputBin:
return this.DocumentInputBin;
case CapabilityName.PageInputBin:
return this.PageInputBin;
case CapabilityName.PageOutputColor:
return this.PageOutputColor;
case CapabilityName.PageOutputQuality:
return this.PageOutputQuality;
case CapabilityName.PageBorderless:
return this.PageBorderless;
case CapabilityName.PageMediaType:
return this.PageMediaType;
case CapabilityName.JobPageOrder:
return this.JobPageOrder;
case CapabilityName.PageOrientation:
return this.PageOrientation;
case CapabilityName.JobNUp:
return this.JobNUp.PresentationDirection;
case CapabilityName.PagePhotoPrintingIntent:
return this.PagePhotoPrintingIntent;
case CapabilityName.JobStaple:
return this.JobStaple;
case CapabilityName.PageTrueTypeFontMode:
return this.PageTrueTypeFontMode;
default:
return null;
}
}
#endregion internal Methods
#region Internal Properties
internal XmlDocument XmlDoc
{
get
{
return _xmlDoc;
}
}
#endregion Internal Properties
#region Private Methods
#if _DEBUG
private void InitTrace()
{
// direct Trace output to console
Trace.Listeners.Clear();
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
}
#endif
private void SetupNamespaceManager()
{
_nsMgr = new XmlNamespaceManager(new NameTable());
_nsMgr.AddNamespace(PrintSchemaPrefixes.Framework, PrintSchemaNamespaces.Framework);
_nsMgr.AddNamespace(PrintSchemaPrefixes.StandardKeywordSet, PrintSchemaNamespaces.StandardKeywordSet);
_nsMgr.AddNamespace(PrintSchemaPrefixes.xsi, PrintSchemaNamespaces.xsi);
_nsMgr.AddNamespace(PrintSchemaPrefixes.xsd, PrintSchemaNamespaces.xsd);
}
#endregion Private Methods
#region Private Fields
private XmlDocument _xmlDoc;
private XmlNamespaceManager _nsMgr;
// Features
private DocumentCollateSetting _docCollate;
private JobDuplexSetting _jobDuplex;
private JobNUpSetting _jobNUp;
private JobStapleSetting _jobStaple;
private PageDeviceFontSubstitutionSetting _pageDeviceFontSubst;
private PageMediaSizeSetting _pageMediaSize;
private PageMediaTypeSetting _pageMediaType;
private PageOrientationSetting _pageOrientation;
private PageOutputColorSetting _pageOutputColor;
private PageResolutionSetting _pageResolution;
private PageScalingSetting _pageScaling;
private PageTrueTypeFontModeSetting _pageTrueTypeFontMode;
private JobPageOrderSetting _jobPageOrder;
private PagePhotoPrintingIntentSetting _pagePhotoIntent;
private PageBorderlessSetting _pageBorderless;
private PageOutputQualitySetting _pageOutputQuality;
private JobInputBinSetting _jobInputBin;
private DocumentInputBinSetting _documentInputBin;
private PageInputBinSetting _pageInputBin;
// Parameters
private JobCopyCountSetting _jobCopyCount;
#endregion Private Fields
}
}
// 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
- SolidColorBrush.cs
- ZeroOpNode.cs
- InvokeBinder.cs
- WindowManager.cs
- RawKeyboardInputReport.cs
- HierarchicalDataBoundControl.cs
- relpropertyhelper.cs
- PieceDirectory.cs
- DynamicRendererThreadManager.cs
- BamlReader.cs
- EntityDataSourceMemberPath.cs
- PingReply.cs
- FrameworkReadOnlyPropertyMetadata.cs
- CodeAccessSecurityEngine.cs
- ArrayEditor.cs
- SafePEFileHandle.cs
- CodeBlockBuilder.cs
- DataGridViewControlCollection.cs
- BasicExpandProvider.cs
- EventRecordWrittenEventArgs.cs
- ReservationCollection.cs
- DataBinder.cs
- ReflectEventDescriptor.cs
- FieldNameLookup.cs
- ParserStreamGeometryContext.cs
- SecurityTokenInclusionMode.cs
- EdgeProfileValidation.cs
- SubMenuStyleCollection.cs
- WebDisplayNameAttribute.cs
- Action.cs
- SplineQuaternionKeyFrame.cs
- ByteConverter.cs
- codemethodreferenceexpression.cs
- PartitionedStream.cs
- ExternalCalls.cs
- Quad.cs
- InlineUIContainer.cs
- PreviewPageInfo.cs
- SubqueryRules.cs
- HttpCapabilitiesEvaluator.cs
- WebException.cs
- PinnedBufferMemoryStream.cs
- SpellCheck.cs
- X509ChainElement.cs
- IsolatedStorageFilePermission.cs
- CodeGenerator.cs
- DataGridPagerStyle.cs
- ReadOnlyHierarchicalDataSourceView.cs
- PropertyRecord.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- WindowsStatic.cs
- SecurityException.cs
- BinaryReader.cs
- InputElement.cs
- TextBoxAutoCompleteSourceConverter.cs
- PageBreakRecord.cs
- ControllableStoryboardAction.cs
- ServicesUtilities.cs
- EntityClassGenerator.cs
- WebPartConnectionsDisconnectVerb.cs
- DBDataPermission.cs
- WebPartCatalogCloseVerb.cs
- WhitespaceSignificantCollectionAttribute.cs
- Border.cs
- cookieexception.cs
- FusionWrap.cs
- assemblycache.cs
- ListCommandEventArgs.cs
- ConfigXmlElement.cs
- AccessedThroughPropertyAttribute.cs
- FrameworkElementFactory.cs
- Module.cs
- MsmqElementBase.cs
- MessageQueuePermissionAttribute.cs
- ConfigXmlCDataSection.cs
- ResourceReferenceKeyNotFoundException.cs
- TransactionalPackage.cs
- GetWinFXPath.cs
- ReplyChannelBinder.cs
- _ProxyChain.cs
- UrlPath.cs
- DependencyPropertyAttribute.cs
- DynamicDocumentPaginator.cs
- DataSourceNameHandler.cs
- StatusBarDrawItemEvent.cs
- SafeLibraryHandle.cs
- UriGenerator.cs
- RawStylusInputCustomDataList.cs
- Automation.cs
- PngBitmapDecoder.cs
- SiteMapDataSource.cs
- XmlSerializerSection.cs
- CustomAttribute.cs
- ExtendedPropertyInfo.cs
- SafeLocalAllocation.cs
- SqlDataSourceCommandEventArgs.cs
- DesignerOptionService.cs
- Encoder.cs
- ProfileParameter.cs
- WhitespaceSignificantCollectionAttribute.cs