Exemple #1
0
        public void FlushPage()
        {
            Toolbox.EmitEvent(EventTrace.Event.WClientDRXFlushPageStart);

            ILegacyDevice ioc = m_GDIExporter;

            if (s_TestingHook != null)
            {
                DrawingContext dc = s_TestingHook as DrawingContext;

                if (dc != null)
                {
                    // Send alpha flattening output to a DrawingContext for testing
                    ioc = new OutputContext(dc);
                }
            }

            m_Flattener.FlushPage(ioc, m_PageWidth, m_PageHeight, m_OutputQuality);

            if (s_TestingHook == null)
            {
                Toolbox.EmitEvent(EventTrace.Event.WClientDRXEndPageBegin);
                m_GDIExporter.EndPage();
                Toolbox.EmitEvent(EventTrace.Event.WClientDRXEndPageEnd);
            }

            Toolbox.EmitEvent(EventTrace.Event.WClientDRXFlushPageStop);
        }
        /// <summary>
        /// Erzeugt eine neue Vermittlungsinstanz.
        /// </summary>
        /// <param name="profile">Das zugeordnete Geräteprofil.</param>
        internal LegacyHardware(P profile)
            : base(profile)
        {
            // Create the device configuration
            var settings = new Hashtable();

            // Fill the configuration
            foreach (var parameter in profile.Parameters)
            {
                if (!string.IsNullOrEmpty(parameter.Value))
                {
                    settings[parameter.Name] = parameter.Value;
                }
            }

            // Pre-set system type
            settings["Type"] = SystemType.ToString();

            // Find the primary aspect
            var aspect = profile.DeviceAspects.Find(a => string.IsNullOrEmpty(a.Aspekt));

            // Create the device
            LegacyDevice = (ILegacyDevice)Activator.CreateInstance(Type.GetType(aspect.Value, true), settings);

            // Start it
            LegacyDevice.SetVideoAudio(0, 0);
        }
Exemple #3
0
        public MetroToGdiConverter(PrintQueue queue)
        {
            if (queue == null)
            {
                throw new ArgumentNullException("queue");
            }

            m_PrintQueue  = queue;
            m_Flattener   = new MetroDevice0();
            m_GDIExporter = queue.GetLegacyDevice();

            m_printTicketCache = new PrintTicketCache(s_PrintTicketCacheMaxCount);
        }
Exemple #4
0
        /// <summary>
        /// Start Tree/alpha flattening and send result to ILegacyDevice interface
        /// </summary>
        public void FlushPage(ILegacyDevice sink, double width, double height, Nullable <OutputQuality> outputQuality)
        {
            AssertState(DeviceState.PageStarted, DeviceState.DocStarted);

            if (_stack.Count != 0)
            {
                throw new InvalidOperationException();
            }

            if (sink != null)
            {
                Flattener.Convert(_root, sink, width, height, 96, 96, outputQuality);
            }
        }
Exemple #5
0
 public BrushProxyDecomposer(ILegacyDevice dc)
 {
     _dc = dc;
     // _costing = false;
     // _cost    = 0;
 }
Exemple #6
0
        /// <summary>
        /// Flatten Primitive to ILegacyDevice
        /// </summary>
        public static void Convert(Primitive tree, ILegacyDevice dc, double width, double height, double dpix, double dpiy,
                                   Nullable <OutputQuality> quality)
        {
            // Change Flattener quality setting based on OutputQualityValue
            if (quality != null)
            {
                switch (quality)
                {
                case OutputQuality.Unknown:
                case OutputQuality.Automatic:
                    break;

                case OutputQuality.Draft:
                case OutputQuality.Fax:
                case OutputQuality.Text:
                    Configuration.RasterizationDPI             = 96;
                    Configuration.MaximumTransparencyLayer     = 8;
                    Configuration.GradientDecompositionDensity = 0.75;
                    Configuration.DecompositionDepth           = 2;
                    break;

                case OutputQuality.Normal:
                    Configuration.RasterizationDPI             = 150;
                    Configuration.MaximumTransparencyLayer     = 12;
                    Configuration.GradientDecompositionDensity = 1;
                    Configuration.DecompositionDepth           = 3;
                    break;

                case OutputQuality.High:
                    Configuration.RasterizationDPI             = 300;
                    Configuration.MaximumTransparencyLayer     = 16;
                    Configuration.GradientDecompositionDensity = 1.25;
                    Configuration.DecompositionDepth           = 4;
                    break;

                case OutputQuality.Photographic:
                    uint dcDpi = Math.Max(PrintQueue.GetDpiX(dc), PrintQueue.GetDpiY(dc));
                    Configuration.RasterizationDPI             = (int)(Math.Max(dcDpi, 300));
                    Configuration.MaximumTransparencyLayer     = 16;
                    Configuration.GradientDecompositionDensity = 1.25;
                    Configuration.DecompositionDepth           = 4;
                    break;
                }
            }

#if DEBUG
            if (Configuration.Verbose >= 2)
            {
                Console.WriteLine();
                Console.WriteLine("\r\nStage 1: Tree Flattening");
                Console.WriteLine();
            }
#endif

            // Paper dimension as clipping
            Geometry clip = null;

            if ((width != 0) && (height != 0))
            {
                clip = new RectangleGeometry(new Rect(0, 0, width, height));
            }

            // Transform to device resolution
            Matrix transform = Matrix.Identity;

            transform.Scale(dpix / 96, dpiy / 96);

            Flattener fl = new Flattener(false, width, height);

            Toolbox.EmitEvent(EventTrace.Event.WClientDRXTreeFlattenBegin);

            fl.TreeFlatten(tree, clip, transform, 1.0, null);

            Toolbox.EmitEvent(EventTrace.Event.WClientDRXTreeFlattenEnd);

            Toolbox.EmitEvent(EventTrace.Event.WClientDRXAlphaFlattenBegin);

            fl.AlphaFlatten(new BrushProxyDecomposer(dc), false);

            Toolbox.EmitEvent(EventTrace.Event.WClientDRXAlphaFlattenEnd);

#if DEBUG
            if (Configuration.Verbose >= 2)
            {
                Console.WriteLine();
                Console.WriteLine("End AlphaFlattening");
                Console.WriteLine();
            }
#endif
        }