Пример #1
0
        FEMCacheItem(
            GlyphTypeface glyphTypeface,
            BasePackagingPolicy packagingPolicy
            )
        {
            if (null == packagingPolicy)
            {
                throw new ArgumentNullException("packagingPolicy");
            }
            if (null == glyphTypeface)
            {
                throw new ArgumentNullException("glyphTypeface");
            }

            _packagingPolicy = packagingPolicy;
            _streamWritten   = false;

            //
            // Acquire the stream that will be used to save the font.
            // if the font is Image only we do not need a font stream
            // since each glyph run will be saved in its own image stream
            //
            _fontEmbeddingManager = new FontEmbeddingManager();
            _glyphTypeface        = glyphTypeface;

            CodeAccessPermission uriDiscoveryPermission = glyphTypeface.CriticalUriDiscoveryPermission;

            if (uriDiscoveryPermission != null)
            {
                uriDiscoveryPermission.Assert();
            }

            try
            {
                _fontUri = glyphTypeface.FontUri;
            }
            finally
            {
                if (uriDiscoveryPermission != null)
                {
                    CodeAccessPermission.RevertAssert();
                }
            }

            Uri    fontUri         = new Uri(_fontUri.GetComponents(UriComponents.SerializationInfoString, UriFormat.SafeUnescaped), UriKind.RelativeOrAbsolute);
            string fontUriAsString = fontUri.GetComponents(UriComponents.SerializationInfoString, UriFormat.UriEscaped);

            _fontResourceStream = packagingPolicy.AcquireResourceStreamForXpsFont(fontUriAsString);

            //
            // Aquiring the Resource stream will instantiate the font
            // and add the require resource relationship
            //
            _curPageRelAdded = true;
        }
Пример #2
0
        XpsFontSubsetter(
            BasePackagingPolicy packagingPolicy
            )
        {
            if (null == packagingPolicy)
            {
                throw new ArgumentNullException("packagingPolicy");
            }

            _packagingPolicy           = packagingPolicy;
            _fontEmbeddingManagerCache = new Dictionary <Uri, FEMCacheItem>(3, MS.Internal.UriComparer.Default);
        }
Пример #3
0
        XpsSerializationManagerAsync(
            BasePackagingPolicy packagingPolicy,
            bool batchMode
            ) :
            base(packagingPolicy, batchMode)
        {
            _dispatcher = Dispatcher.CurrentDispatcher;
            _serializationOperationCanceled = false;
            this._currentPageXmlWriter      = null;
            this._isBatchWorkItemInProgress = false;

            _operationStack      = new Stack();
            _batchOperationQueue = new Queue();

            XpsDriverDocEventManager xpsDocEventManager = base.GetXpsDriverDocEventManager();

            if (xpsDocEventManager != null)
            {
                XpsSerializationCompletedInternal += new XpsSerializationCompletedEventHandler(xpsDocEventManager.ForwardSerializationCompleted);
            }
        }
Пример #4
0
        XpsSerializationManager(
            BasePackagingPolicy packagingPolicy,
            bool batchMode
            ) :
            base()
        {
            this._packagingPolicy = packagingPolicy;
            this._isBatchMode     = batchMode;
            this._isSimulating    = false;
            this._simulator       = null;

            _reachSerializationServices = new ReachSerializationServices();
            _visualSerializationService = new VisualSerializationService(this);

            _reachSerializationServices.RegisterNameSpacesForTypes();
            _reachSerializationServices.RegisterSerializableDependencyPropertiesForReachTypes();
            _reachSerializationServices.RegisterNoneSerializableClrPropertiesForReachTypes();

            XpsResourcePolicy resourcePolicy = new XpsResourcePolicy(XpsResourceSharing.NoResourceSharing);

            resourcePolicy.RegisterService(new XpsImageSerializationService(), typeof(XpsImageSerializationService));
            resourcePolicy.RegisterService(new XpsFontSerializationService(packagingPolicy), typeof(XpsFontSerializationService));

            this._resourcePolicy = resourcePolicy;
            _documentNumber      = 0;
            _pageNumber          = 0;
            _documentStartState  = false;
            _pageStartState      = false;

            XpsPackagingPolicy xpsPackagingPolicy = _packagingPolicy as XpsPackagingPolicy;

            if (xpsPackagingPolicy != null)
            {
                _xpsDocEventManager = new XpsDriverDocEventManager(this);

                xpsPackagingPolicy.PackagingProgressEvent += new PackagingProgressEventHandler(_xpsDocEventManager.ForwardPackagingProgressEvent);

                this.XpsSerializationPrintTicketRequiredOnXpsDriverDocEvent += new XpsSerializationPrintTicketRequiredEventHandler(_xpsDocEventManager.ForwardUserPrintTicket);
            }
        }
Пример #5
0
 XpsFontSerializationService(
     BasePackagingPolicy packagingPolicy
     )
 {
     _fontSubsetter = new XpsFontSubsetter(packagingPolicy);
 }