예제 #1
0
        private void LstBackEndRenderer_SelectedIndexChanged(object sender, EventArgs e)
        {
            //show only example the available on the selected rendering backend
            RenderBackendChoice selItem = (RenderBackendChoice)lstBackEndRenderer.SelectedItem;

            lstExamples.Items.Clear();

            List <ExampleAndDesc> selectedExampleList = null;

            switch (selItem)
            {
            default: return;

            case RenderBackendChoice.AggOnGLES:
            case RenderBackendChoice.PureAgg:
                selectedExampleList = _aggExamples;
                break;

            case RenderBackendChoice.GdiPlusOnGLES:
            case RenderBackendChoice.GdiPlus:
                selectedExampleList = _gdiExamples;
                break;

            case RenderBackendChoice.OpenGLES:
                selectedExampleList = _glesExamples;
                break;
            }


            int j = selectedExampleList.Count;

            for (int i = 0; i < j; ++i)
            {
                this.lstExamples.Items.Add(selectedExampleList[i]);
            }
        }
예제 #2
0
        void lstExample_DoubleClick(object sender, EventArgs e)
        {
            //load sample form
            if (!(this.lstExamples.SelectedItem is ExampleAndDesc exAndDesc))
            {
                return; //early exit
            }
            //
            DemoBase demo = InitDemo(exAndDesc);

            if (demo == null)
            {
                return;
            }


            FormTestBed formTestBed = new FormTestBed();

            formTestBed.WindowState = FormWindowState.Maximized;

            RenderBackendChoice selItem = (RenderBackendChoice)lstBackEndRenderer.SelectedItem;
            CpuBlitAppModule    cpuBlitContextWinForm = null;

            switch (selItem)
            {
            case RenderBackendChoice.PureAgg:
            {
                LayoutFarm.UI.FormCanvasHelper.CreateCanvasControlOnExistingControl(
                    formTestBed.GetLandingControl(),
                    0, 0, 800, 600,
                    LayoutFarm.UI.InnerViewportKind.PureAgg,
                    out LayoutFarm.UI.GraphicsViewRoot surfaceViewport
                    );
                formTestBed.SetUISurfaceViewportControl(surfaceViewport);
                formTestBed.Show();

                cpuBlitContextWinForm = new CpuBlitAppModule();
                cpuBlitContextWinForm.BindSurface(surfaceViewport);
                cpuBlitContextWinForm.LoadExample(demo);

                demo.RequestGraphicRefresh += (s, e1) => cpuBlitContextWinForm.InvalidateUI();

                formTestBed.FormClosed += (s1, e1) => cpuBlitContextWinForm.Close();
                formTestBed.LoadExample(exAndDesc, demo);
            }
            break;

            case RenderBackendChoice.GdiPlus:
            {
                LayoutFarm.UI.FormCanvasHelper.CreateCanvasControlOnExistingControl(
                    formTestBed.GetLandingControl(),
                    0, 0, 800, 600,
                    LayoutFarm.UI.InnerViewportKind.GdiPlus,
                    out LayoutFarm.UI.GraphicsViewRoot surfaceViewport
                    );
                formTestBed.SetUISurfaceViewportControl(surfaceViewport);

                cpuBlitContextWinForm = new CpuBlitAppModule();
                cpuBlitContextWinForm.BindSurface(surfaceViewport);
                cpuBlitContextWinForm.LoadExample(demo);
                formTestBed.FormClosed += (s1, e1) => cpuBlitContextWinForm.Close();



                formTestBed.LoadExample(exAndDesc, demo);
                formTestBed.Show();
            }
            break;

            case RenderBackendChoice.OpenGLES:     //gles 2 and 3
            {
                //--------------------------------------------
                LayoutFarm.UI.FormCanvasHelper.CreateCanvasControlOnExistingControl(
                    formTestBed.GetLandingControl(),
                    0, 0, 800, 600,
                    LayoutFarm.UI.InnerViewportKind.GLES,
                    out LayoutFarm.UI.GraphicsViewRoot surfaceViewport
                    );

                formTestBed.SetUISurfaceViewportControl(surfaceViewport);
                GLESAppModule appModule = new GLESAppModule();
                appModule.BindSurface(surfaceViewport);
                appModule.LoadExample(demo);
                formTestBed.FormClosing += (s2, e2) => appModule.Close();

                formTestBed.LoadExample(exAndDesc, demo);
                formTestBed.Show();
            }
            break;

            case RenderBackendChoice.AggOnGLES:
            case RenderBackendChoice.GdiPlusOnGLES:
            {
                LayoutFarm.UI.FormCanvasHelper.CreateCanvasControlOnExistingControl(
                    formTestBed.GetLandingControl(),
                    0, 0, 800, 600,
                    LayoutFarm.UI.InnerViewportKind.AggOnGLES,
                    out LayoutFarm.UI.GraphicsViewRoot surfaceViewport
                    );
                formTestBed.SetUISurfaceViewportControl(surfaceViewport);
                //

                CpuBlitOnGLESAppModule appModule = new CpuBlitOnGLESAppModule();
                appModule.WithGdiPlusDrawBoard = (selItem == RenderBackendChoice.GdiPlusOnGLES);        //**
                appModule.BindSurface(surfaceViewport);
                appModule.LoadExample(demo);

                formTestBed.FormClosing += (s2, e2) => appModule.Close();
                formTestBed.LoadExample(exAndDesc, demo);
                formTestBed.Show();
            }
            break;

#if SKIA_ENABLE
            case RenderBackendChoice.SkiaMemoryBackend:
            {
                TestSkia1.FormSkia1 formSkia = new TestSkia1.FormSkia1();
                formSkia.SelectBackend(TestSkia1.FormSkia1.SkiaBackend.Memory);
                formSkia.Show();
                formSkia.LoadExample(exAndDesc);
            }
            break;

            case RenderBackendChoice.SkiaGLBackend:
            {
                TestSkia1.FormSkia1 formSkia = new TestSkia1.FormSkia1();
                formSkia.SelectBackend(TestSkia1.FormSkia1.SkiaBackend.GLES);
                formSkia.Show();
                formSkia.LoadExample(exAndDesc);
            }
            break;
#endif
            default:
                throw new NotSupportedException();
            }
        }