public void Execute(IDemoContext context) { Contract.Requires(context != null); try { _Form.Text = Application.ProductName; _Form.Icon = new Icon(Properties.Resources.frost_icon, 256, 256); RenderLoop.Run(_Form, () => Run(context)); } #if(!DEBUG) catch(Exception e) #else catch(ApplicationException e) #endif { var msg = string.Format("{0} \n {1}", e.Message, e.StackTrace); MessageBox.Show(msg); Debugger.Break(); throw; } }
private void Run(IDemoContext context) { Contract.Requires(context != null); _Context = context; _Device2D.ProcessFrame(); if(_IsResetQueued) { if (!_Target.IsEmpty) { DemoInterface.ResetDemo(context, _Target, _Device2D); } _IsResetQueued = false; } _Device.OutputMerger.SetTargets(_RenderView); Color4 background = new Color4(0.75f, 0.75f, 0.75f, 1.0f); _Device.ClearRenderTargetView(_RenderView, background); _Renderer.BeginRendering(); if(_Target != null) { _Renderer.Render(_Target, _Device2D); } _Renderer.EndRendering(); _SwapChain.Present(1, PresentFlags.None); }
public static void ResetDemo( IDemoContext context, Canvas target, Device2D device2D) { Contract.Requires(context != null); Contract.Requires(target != null); Contract.Requires(device2D != null); Rectangle left = Rectangle.FromEdges( 0, 0, 213, target.Region.Bottom); Rectangle middle = Rectangle.FromEdges( left.Right, 0, target.Region.Right - 213, target.Region.Bottom); Rectangle right = Rectangle.FromEdges( middle.Right, 0, target.Region.Right, target.Region.Bottom); Rectangle demoRegion = middle.Contract(25); // create a new canvas for the demo contents Canvas demoTarget = new Canvas(demoRegion.Size); // resolve the new resource to avoid timing problems device2D.Resources.ResolveCanvas(demoTarget); // track memory usage and reset the clock long oldMemoryUsage = GC.GetTotalMemory(true); _Watch.Reset(); _Watch.Start(); // execute the demo context.Reset(demoTarget, device2D); // stop the clock and determine the garbage produced _Watch.Stop(); long memoryDelta = GC.GetTotalMemory(false) - oldMemoryUsage; // query the subsystem timers IDeviceCounter<TimeSpan> compositionFrameDuration; IDeviceCounter<TimeSpan> paintingFrameDuration; device2D.Diagnostics.Query( "Composition", "FrameDuration", out compositionFrameDuration); device2D.Diagnostics.Query( "Painting", "FrameDuration", out paintingFrameDuration); //////////////////////////////// string timeString = string.Format( "Time Taken: {0} ms", _Watch.ElapsedMilliseconds); Rectangle timeMetrics = MeasureText(timeString, device2D); Rectangle timeRegion = timeMetrics.AlignRelativeTo( middle, Alignment.Center, Axis.Horizontal); ///////////////////////////// string subsystemString = string.Format( "Painting: {0} ms \u2219 Composition: {1} ms", paintingFrameDuration.Value.Milliseconds, compositionFrameDuration.Value.Milliseconds); Rectangle subsystemMetrics = MeasureText(subsystemString, device2D); Rectangle subsystemRegion = subsystemMetrics.AlignRelativeTo( middle, Alignment.Center, Axis.Horizontal); subsystemRegion = subsystemRegion.Translate( 0, middle.Bottom - subsystemRegion.Height); //////////////////////////////// string memoryString = string.Format( "Memory: {0:N0} KB", GC.GetTotalMemory(true) / 1024); string garbageString = string.Format( "Garbage: {0:N0} KB", memoryDelta / 1024); const string snapshotString = "SNAPSHOT"; Rectangle snapshotMetrics = MeasureText(snapshotString, device2D); const string optionsString = "OPTIONS"; Rectangle optionsMetrics = MeasureText(optionsString, device2D); snapshotMetrics = snapshotMetrics.AlignRelativeTo( right, Alignment.Center, Axis.Horizontal); optionsMetrics = optionsMetrics.AlignRelativeTo( left, Alignment.Center, Axis.Horizontal); device2D.Painter.Begin(target); // clear the background to the background color device2D.Painter.SetBrush(Resources.Background); device2D.Painter.FillRectangle(target.Region); device2D.Painter.SetBrush(Resources.UIColor); device2D.Painter.FillRectangle(left); device2D.Painter.FillRectangle(right); Rectangle timePanel = timeRegion.Expand( timeRegion.Height, timeRegion.Height, timeRegion.Height, timeRegion.Height / 4.0f); device2D.Painter.FillRectangle( timePanel, new Size(timeRegion.Height / 2.0f)); Rectangle subsystemPanel = subsystemRegion.Expand( subsystemRegion.Height, subsystemRegion.Height / 4.0f, subsystemRegion.Height, subsystemRegion.Height); device2D.Painter.FillRectangle( subsystemPanel, new Size(subsystemRegion.Height / 2.0f)); device2D.Painter.SetBrush(Resources.ActiveButton); device2D.Painter.SaveState(); device2D.Painter.LineStyle = LineStyle.Dash; device2D.Painter.StrokeRectangle(demoRegion.Expand(1)); device2D.Painter.RestoreState(); device2D.Painter.StrokeLine( left.Right, left.Top, left.Right, left.Bottom); device2D.Painter.StrokeLine( right.Left, right.Top, right.Left, right.Bottom); device2D.Painter.SetBrush(Resources.Foreground); device2D.Painter.SaveState(); device2D.Painter.Translate(timeRegion.X, timeRegion.Y); DrawText(Point.Empty, timeString, device2D); device2D.Painter.RestoreState(); device2D.Painter.SaveState(); device2D.Painter.Translate(subsystemRegion.X, subsystemRegion.Y); DrawText(Point.Empty, subsystemString, device2D); device2D.Painter.RestoreState(); device2D.Painter.SaveState(); device2D.Painter.Translate(0, timeRegion.Height); DrawText(snapshotMetrics.Location, snapshotString, device2D); device2D.Painter.StrokeLine( snapshotMetrics.Left, snapshotMetrics.Bottom, snapshotMetrics.Right, snapshotMetrics.Bottom); device2D.Painter.Translate( right.Left + (timeRegion.Height / 2.0f), (timeRegion.Height * 2) + (timeRegion.Height * 0.25f)); DrawText(Point.Empty, memoryString, device2D); device2D.Painter.Translate( 0, (timeRegion.Height * 2) + (timeRegion.Height * 0.25f)); DrawText(Point.Empty, garbageString, device2D); device2D.Painter.RestoreState(); device2D.Painter.SaveState(); device2D.Painter.Translate(0, timeRegion.Height); DrawText(optionsMetrics.Location, optionsString, device2D); device2D.Painter.StrokeLine( optionsMetrics.Left, optionsMetrics.Bottom, optionsMetrics.Right, optionsMetrics.Bottom); device2D.Painter.RestoreState(); GenerateMenu( context, target, device2D, (timeRegion.Height * 3) + (timeRegion.Height * 0.25f), left.Width); device2D.Painter.End(); device2D.Compositor.Begin(target, Retention.RetainData); device2D.Compositor.Composite(demoTarget, demoRegion.Location); device2D.Compositor.End(); }
public StudentService(IDemoContext context) { _context = context; }
public ProductRepository(IDemoContext context, ILogger <ProductRepository> logger) { this.context = context; this.logger = logger; }
private static void GenerateMenu( IDemoContext context, Canvas target, Device2D device2D, float listTop, float listWidth) { Contract.Requires(context != null); Contract.Requires(target != null); Contract.Requires(device2D != null); var items = new List<KeyValuePair<string, KeyValuePair<Rectangle, bool>>>(); Rectangle region = target.Region; region = region.Translate(0, listTop); float itemHeight = 0.0f; float itemSpacing = 0.0f; Thickness itemExpansion = Thickness.Empty; foreach(var item in context.Settings) { string currentText = item.IsActive ? item.ActiveText : item.InactiveText; string finalText = string.Format( "[{0}] {1}", items.Count + 1, currentText); var metrics = MeasureText(finalText, device2D); metrics = metrics.Translate(region.Location); if(itemHeight.Equals(0.0f) && itemSpacing.Equals(0.0f)) { itemHeight = metrics.Height * 2.00f; itemSpacing = metrics.Height * 0.25f; itemExpansion = new Thickness(itemHeight / 4.0f); } items.Add( new KeyValuePair<string, KeyValuePair<Rectangle, bool>>( finalText, new KeyValuePair<Rectangle, bool>(metrics, item.IsActive))); region = region.Translate(0, itemHeight + itemSpacing); } for(int index = 0; index < items.Count; index++) { var item = items[index]; Rectangle settingRegion = item.Value.Key.Expand(itemExpansion); settingRegion = settingRegion.Resize(listWidth, settingRegion.Height); settingRegion = settingRegion.Expand(itemHeight, 0, 0, 0); device2D.Painter.SetBrush( item.Value.Value ? Resources.ActiveButton : Resources.UIColor); device2D.Painter.FillRectangle(settingRegion, new Size(itemHeight / 3.0f)); device2D.Painter.SetBrush(Resources.ActiveButton); device2D.Painter.StrokeRectangle( settingRegion, new Size(itemHeight / 3.0f)); device2D.Painter.SetBrush( item.Value.Value ? Resources.InactiveButton : Resources.Foreground); DrawText(item.Value.Key.Location, item.Key, device2D); } }
public GenericRepository(IDemoContext context, string collection) { this._context = context; }
public TokenRepository(IDemoContext context) : base(context, "tokens") { }
public UnitOfWork(IDemoContext context) { this._context = context; }
public AppointmentService(IDemoContext demoContext, ISessionService sessionService) { _demoContext = demoContext; _sessionService = sessionService; }
public CatalogRepository(IDemoContext context, ILogger <CatalogRepository> logger) { this.context = context; this.logger = logger; }