Пример #1
0
        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;
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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();
        }
Пример #4
0
 public StudentService(IDemoContext context)
 {
     _context = context;
 }
Пример #5
0
 public ProductRepository(IDemoContext context, ILogger <ProductRepository> logger)
 {
     this.context = context;
     this.logger  = logger;
 }
Пример #6
0
        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;
 }
Пример #8
0
 public TokenRepository(IDemoContext context) : base(context, "tokens")
 {
 }
Пример #9
0
 public UnitOfWork(IDemoContext context)
 {
     this._context = context;
 }
Пример #10
0
 public AppointmentService(IDemoContext demoContext, ISessionService sessionService)
 {
     _demoContext    = demoContext;
     _sessionService = sessionService;
 }
Пример #11
0
 public CatalogRepository(IDemoContext context, ILogger <CatalogRepository> logger)
 {
     this.context = context;
     this.logger  = logger;
 }