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); }
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); }
/// <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); } }
public BrushProxyDecomposer(ILegacyDevice dc) { _dc = dc; // _costing = false; // _cost = 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 }