示例#1
0
        static void CreateReadyForm(
            out LayoutFarm.UI.UISurfaceViewportControl viewport,
            out Form formCanvas)
        {
            int w = 800;
            int h = 600;

            var rootgfx = new MyRootGraphic(uiPlatformWinForm,
                                            useOpenGL ? openGLPlatform : gdiPlatform,
                                            w, h);

            var topRenderBox = rootgfx.TopWindowRenderBox;


            formCanvas = FormCanvasHelper.CreateNewFormCanvas(rootgfx,
                                                              useOpenGL ? InnerViewportKind.GL : InnerViewportKind.GdiPlus,
                                                              out viewport);

            formCanvas.Text = "FormCanvas 1";

            viewport.PaintMe();

            formCanvas.WindowState = FormWindowState.Maximized;
            formCanvas.Show();
        }
示例#2
0
        public void SetUISurfaceViewportControl(LayoutFarm.UI.UISurfaceViewportControl vw)
        {
            //---------------------------------------
            //this specific for WindowForm viewport
            //---------------------------------------
            _vw = vw;

            _ownerForm = _vw.FindForm();
            System.Drawing.Rectangle screenRectangle = _ownerForm.RectangleToScreen(_ownerForm.ClientRectangle);
            _formTitleBarHeight = screenRectangle.Top - _ownerForm.Top;


            System.Drawing.Rectangle primScreenWorkingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
            _primaryScreenWorkingAreaW = primScreenWorkingArea.Width;
            _primaryScreenWorkingAreaH = primScreenWorkingArea.Height;


            //
            switch (vw.InnerViewportKind)
            {
            case InnerViewportKind.GdiPlusOnGLES:
            case InnerViewportKind.AggOnGLES:
                SetUpGLSurface(vw.GetOpenTKControl());
                break;
            }
        }
示例#3
0
 static void MakeFormCanvas(Form form1, LayoutFarm.UI.UISurfaceViewportControl surfaceViewportControl)
 {
     form1.FormClosing += (s, e) =>
     {
         surfaceViewportControl.Close();
     };
 }
示例#4
0
        private void cmdShowEmbededViewport_Click(object sender, EventArgs e)
        {
            Form simpleForm = new Form();

            simpleForm.Text        = "SimpleForm2";
            simpleForm.WindowState = FormWindowState.Maximized;
            Rectangle screenClientAreaRect = Screen.PrimaryScreen.WorkingArea;
            var       viewport             = new LayoutFarm.UI.UISurfaceViewportControl();

            viewport.Bounds = new Rectangle(0, 0, screenClientAreaRect.Width, screenClientAreaRect.Height);
            simpleForm.Controls.Add(viewport);

            int w = 800;
            int h = 600;



            var rootgfx = new MyRootGraphic(this.uiPlatformWinForm,
                                            this.gfxPlatform, w, h);

            viewport.InitRootGraphics(rootgfx, rootgfx.TopWinEventPortal,
                                      InnerViewportKind.GdiPlus);

            viewport.PaintMe();

            simpleForm.Show();

            ShowFormLayoutInspector(viewport);
        }
        public static Form CreateNewFormCanvas(
            int xpos, int ypos,
            int w, int h,
            InnerViewportKind internalViewportKind,
            out UISurfaceViewportControl canvasViewport)
        {
            //create new form with new user control
            Form form1 = new Form();

            CreateCanvasControlOnExistingControl(
                form1,
                xpos, ypos, w, h, internalViewportKind,
                out canvasViewport);

            //----------------------
            MakeFormCanvas(form1, canvasViewport);

            UISurfaceViewportControl innerViewport = canvasViewport;

            form1.SizeChanged += (s, e) =>
            {
                if (form1.WindowState == FormWindowState.Maximized)
                {
                    Screen currentScreen = GetScreenFromX(form1.Left);
                    //make full screen ?
                    if (innerViewport != null)
                    {
                        innerViewport.Size = currentScreen.WorkingArea.Size;
                    }
                }
            };
            //----------------------
            return(form1);
        }
 public static Form CreateNewFormCanvas(
     int w, int h,
     InnerViewportKind internalViewportKind,
     out UISurfaceViewportControl canvasViewport)
 {
     return(CreateNewFormCanvas(0, 0, w, h, internalViewportKind, out canvasViewport));
 }
 public static void MakeFormCanvas(Form form1, UISurfaceViewportControl surfaceViewportControl)
 {
     form1.FormClosing += (s, e) =>
     {
         surfaceViewportControl.Close();
     };
 }
示例#8
0
        public static Form CreateNewFormCanvas(
            MyRootGraphic myRootGfx,
            InnerViewportKind internalViewportKind,
            out UISurfaceViewportControl canvasViewport)
        {
            Form      form1                = new Form();
            var       innerViewport        = canvasViewport = new UISurfaceViewportControl();
            Rectangle screenClientAreaRect = new Rectangle(0, 0, 800, 600); //Conv.ToRect(Screen.PrimaryScreen.WorkingArea);

            canvasViewport.InitRootGraphics(myRootGfx, myRootGfx.TopWinEventPortal, internalViewportKind);
            canvasViewport.Bounds =
                new Rectangle(0, 0,
                              screenClientAreaRect.Width,
                              screenClientAreaRect.Height);
            //----------------------
            form1.Controls.Add(canvasViewport);
            //----------------------
            MakeFormCanvas(form1, canvasViewport);

            //TODO: review here
            //form1.SizeChanged += (s, e) =>
            //{
            //    if (form1.WindowState == FormWindowState.Maximized)
            //    {
            //        Screen currentScreen = GetScreenFromX(form1.Left);
            //        //make full screen ?
            //        if (innerViewport != null)
            //        {
            //            innerViewport.Size = currentScreen.WorkingArea.Size;
            //        }
            //    }
            //};
            //----------------------
            return(form1);
        }
示例#9
0
        static void CreateNewFormCanvas(
            Form form1,
            MyRootGraphic myRootGfx,
            InnerViewportKind internalViewportKind,
            out LayoutFarm.UI.UISurfaceViewportControl canvasViewport)
        {
            var       innerViewport        = canvasViewport = new LayoutFarm.UI.UISurfaceViewportControl();
            Rectangle screenClientAreaRect = Conv.ToRect(Screen.PrimaryScreen.WorkingArea);

            canvasViewport.InitRootGraphics(myRootGfx, myRootGfx.TopWinEventPortal, internalViewportKind);
            canvasViewport.Bounds =
                new System.Drawing.Rectangle(0, 0,
                                             screenClientAreaRect.Width,
                                             screenClientAreaRect.Height);

            ////----------------------
            //form1.Controls.Add(canvasViewport);
            ////----------------------
            MakeFormCanvas(form1, canvasViewport);
            form1.SizeChanged += (s, e) =>
            {
                if (form1.WindowState == FormWindowState.Maximized)
                {
                    Screen currentScreen = GetScreenFromX(form1.Left);
                    //make full screen ?
                    if (innerViewport != null)
                    {
                        innerViewport.Size = currentScreen.WorkingArea.Size;
                    }
                }
            };
        }
示例#10
0
        public SampleViewport(LayoutFarm.UI.UISurfaceViewportControl vw)
        {
            this.vw = vw;
            var workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;

            this.primaryScreenWorkingAreaW = workingArea.Width;
            this.primaryScreenWorkingAreaH = workingArea.Height;
        }
示例#11
0
        public static void ShowFormLayoutInspector(LayoutFarm.UI.UISurfaceViewportControl viewport)
        {
            var formLayoutInspector = new LayoutFarm.Dev.FormLayoutInspector();

            formLayoutInspector.Show();

            formLayoutInspector.Connect(viewport);
            formLayoutInspector.Show();
        }
示例#12
0
        public void BindSurface(LayoutFarm.UI.UISurfaceViewportControl surfaceViewport)
        {
            _myWidth  = 800;
            _myHeight = 600;


            _surfaceViewport = surfaceViewport;
            _rootGfx         = surfaceViewport.RootGfx;
        }
示例#13
0
        public void Connect(LayoutFarm.UI.UISurfaceViewportControl vwport)
        {
#if DEBUG
            this.vwport = vwport;
            IdbugOutputWindow outputWin = vwport.IdebugOutputWin;
            outputWin.dbug_VisualRootDrawMsg     += rootDrawMsgEventHandler;
            outputWin.dbug_VisualRootHitChainMsg += artUISurfaceViewport1_dbug_VisualRootHitChainMsg;
            outputWin.dbug_EnableAllDebugInfo();
#endif
        }
        public void AddChild(RenderElement renderElem, object owner)
        {
            if (renderElem is RenderBoxBase)
            {
                if (owner is ITopWindowBox)
                {
                    var topWinBox = owner as ITopWindowBox;
                    if (topWinBox.PlatformWinBox == null)
                    {
                        FormPopupShadow popupShadow1 = new FormPopupShadow();
                        popupShadow1.Visible = false;
                        IntPtr handle1 = popupShadow1.Handle; //***


                        //create platform winbox
                        var newForm = new AbstractCompletionWindow();
                        newForm.LinkedParentForm    = this.FindForm();
                        newForm.LinkedParentControl = this;
                        newForm.PopupShadow         = popupShadow1;

                        //TODO:
                        //1. review here=> 300,200
                        //2. how to choose InnerViewportKind

                        UISurfaceViewportControl newSurfaceViewport = this.CreateNewOne(300, 200, InnerViewportKind.GLES);
                        newSurfaceViewport.Location = new System.Drawing.Point(0, 0);
                        newForm.Controls.Add(newSurfaceViewport);
                        renderElem.ResetRootGraphics(newSurfaceViewport.RootGfx);
                        renderElem.SetLocation(0, 0);
                        newSurfaceViewport.AddChild(renderElem);
                        //-----------------------------------------------------
                        IntPtr tmpHandle = newForm.Handle;//force newform to create window handle

                        //-----------------------------------------------------

                        var platformWinBox = new PlatformWinBoxForm(newForm);
                        topWinBox.PlatformWinBox = platformWinBox;
                        platformWinBox.UseRelativeLocationToParent = true;
                        platformWinBox.PreviewVisibilityChanged   += PlatformWinBox_PreviewVisibilityChanged;
                        platformWinBox.PreviewBoundChanged        += PlatformWinBox_PreviewBoundChanged;
                        platformWinBox.BoundsChanged   += PlatformWinBox_BoundsChanged;
                        platformWinBox.VisibityChanged += PlatformWinBox_VisibityChanged;
                        _subForms.Add(newForm);
                    }
                }
                else
                {
                    _rootgfx.AddChild(renderElem);
                }
            }
            else
            {
                _rootgfx.AddChild(renderElem);
            }
        }
示例#15
0
        static void ShowFormLayoutInspector(LayoutFarm.UI.UISurfaceViewportControl viewport)
        {
            var formLayoutInspector = new LayoutFarm.Dev.FormLayoutInspector();

            formLayoutInspector.Show();
            formLayoutInspector.FormClosed += (s, e2) =>
            {
                formLayoutInspector = null;
            };
            formLayoutInspector.Connect(viewport);
        }
示例#16
0
        public static void CreateCanvasControlOnExistingControl(
            Control landingControl,
            int xpos, int ypos,
            int w, int h,
            InnerViewportKind internalViewportKind,
            out UISurfaceViewportControl canvasViewport)
        {
            //1. init
            InitWinform();
            IInstalledTypefaceProvider fontLoader = s_fontstore;
            //2.
            ITextService textService = null;

            switch (internalViewportKind)
            {
            default:
                //gdi, gdi on gles
                textService = PixelFarm.Drawing.WinGdi.WinGdiPlusPlatform.GetTextService();
                break;

            case InnerViewportKind.PureAgg:
            case InnerViewportKind.AggOnGLES:
            case InnerViewportKind.GLES:
                textService = new OpenFontTextService();
                break;
            }

            PixelFarm.Drawing.WinGdi.WinGdiPlusPlatform.SetInstalledTypefaceProvider(fontLoader);
            //---------------------------------------------------------------------------

            MyRootGraphic myRootGfx = new MyRootGraphic(w, h, textService);
            //---------------------------------------------------------------------------

            var       innerViewport        = canvasViewport = new UISurfaceViewportControl();
            Rectangle screenClientAreaRect = Conv.ToRect(Screen.PrimaryScreen.WorkingArea);

            canvasViewport.InitRootGraphics(myRootGfx, myRootGfx.TopWinEventPortal, internalViewportKind);
            canvasViewport.Bounds =
                new System.Drawing.Rectangle(xpos, ypos,
                                             screenClientAreaRect.Width,
                                             screenClientAreaRect.Height);

            landingControl.Controls.Add(canvasViewport);
            //
            Form ownerForm = landingControl.FindForm();

            if (ownerForm != null)
            {
                ownerForm.FormClosing += (s, e) =>
                {
                    innerViewport.Close();
                };
            }
        }
示例#17
0
        static void ShowFormPrint(LayoutFarm.UI.UISurfaceViewportControl viewport)
        {
            var formPrint = new LayoutFarm.Dev.FormPrint();

            formPrint.Show();

            formPrint.FormClosed += (s, e2) =>
            {
                formPrint = null;
            };
            formPrint.Connect(viewport);
        }
示例#18
0
        public void BindSurface(LayoutFarm.UI.UISurfaceViewportControl surfaceViewport)
        {
            _surfaceViewport = surfaceViewport;
            _rootGfx         = surfaceViewport.RootGfx;

            //----------------------
            _glControl = surfaceViewport.GetOpenTKControl();
            _myWidth   = _glControl.Width;
            _myHeight  = _glControl.Height;


            IntPtr hh1 = _glControl.Handle; //ensure that contrl handler is created

            _glControl.MakeCurrent();
        }
        public void AddContent(RenderElement vi, object owner)
        {
            if (vi is RenderBoxBase)
            {
                if (owner is ITopWindowBox)
                {
                    var topWinBox = owner as ITopWindowBox;
                    if (topWinBox.PlatformWinBox == null)
                    {
                        FormPopupShadow2 popupShadow1 = new FormPopupShadow2();
                        IntPtr           handle1      = popupShadow1.Handle;


                        //create platform winbox
                        var newForm = new AbstractCompletionWindow();
                        newForm.LinkedParentForm    = this.FindForm();
                        newForm.LinkedParentControl = this;
                        newForm.PopupShadow         = popupShadow1;


                        UISurfaceViewportControl newSurfaceViewport = this.CreateNewOne(300, 200);
                        newSurfaceViewport.Location = new System.Drawing.Point(0, 0);
                        newForm.Controls.Add(newSurfaceViewport);
                        vi.ResetRootGraphics(newSurfaceViewport.RootGfx);
                        vi.SetLocation(0, 0);
                        newSurfaceViewport.AddContent(vi);
                        //-----------------------------------------------------
                        s_tmpHandle = newForm.Handle;//force newform to create window handle
                        //----------

                        var platformWinBox = new PlatformWinBoxForm(newForm);
                        topWinBox.PlatformWinBox = platformWinBox;
                        platformWinBox.UseRelativeLocationToParent = true;
                        subForms.Add(newForm);
                        s_tmpHandle = IntPtr.Zero;
                    }
                }
                else
                {
                    this.rootgfx.TopWindowRenderBox.AddChild(vi);
                }
            }
            else
            {
                this.rootgfx.TopWindowRenderBox.AddChild(vi);
            }
        }
示例#20
0
 private void cmdShowEmbededViewport_Click(object sender, EventArgs e)
 {
     Form simpleForm = new Form();
     simpleForm.Text = "SimpleForm2";
     simpleForm.WindowState = FormWindowState.Maximized;
     Rectangle screenClientAreaRect = Screen.PrimaryScreen.WorkingArea;
     var viewport = new LayoutFarm.UI.UISurfaceViewportControl();
     viewport.Bounds = new Rectangle(0, 0, screenClientAreaRect.Width, screenClientAreaRect.Height);
     simpleForm.Controls.Add(viewport);
     int w = 800;
     int h = 600;
     var rootgfx = new MyRootGraphic(this.uiPlatformWinForm, 
         w, h);
     viewport.InitRootGraphics(rootgfx, rootgfx.TopWinEventPortal,
         InnerViewportKind.GdiPlus);
     viewport.PaintMe();
     simpleForm.Show();
     ShowFormLayoutInspector(viewport);
 }
示例#21
0
        /// <summary>
        /// create new UIViewport based on this control's current platform
        /// </summary>
        /// <returns></returns>
        public UISurfaceViewportControl CreateNewOne(int w, int h, InnerViewportKind innerViewportKind)
        {
            //each viewport has its own root graphics

            UISurfaceViewportControl newViewportControl = new UISurfaceViewportControl();

            newViewportControl.Size = new System.Drawing.Size(w, h);
            RootGraphic         newRootGraphic = _rootgfx.CreateNewOne(w, h);
            ITopWindowEventRoot topEventRoot   = null;

            if (newRootGraphic is ITopWindowEventRootProvider)
            {
                topEventRoot = ((ITopWindowEventRootProvider)newRootGraphic).EventRoot;
            }
            newViewportControl.InitRootGraphics(
                newRootGraphic,//new root
                topEventRoot,
                innerViewportKind);
            return(newViewportControl);
        }
示例#22
0
        public SampleViewport(LayoutFarm.UI.UISurfaceViewportControl vw)
        {
            this.vw   = vw;
            ownerForm = this.vw.FindForm();
            System.Drawing.Rectangle screenRectangle = ownerForm.RectangleToScreen(ownerForm.ClientRectangle);
            _formTitleBarHeight = screenRectangle.Top - ownerForm.Top;


            var primScreenWorkingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;

            this.primaryScreenWorkingAreaW = primScreenWorkingArea.Width;
            this.primaryScreenWorkingAreaH = primScreenWorkingArea.Height;

            //--------------
            imageContentMan = new ImageContentManager();
            imageContentMan.ImageLoadingRequest += (s, e) =>
            {
                e.SetResultImage(LoadBitmap(e.ImagSource));
            };
        }
示例#23
0
        public static void CreateReadyForm(
            out LayoutFarm.UI.UISurfaceViewportControl viewport,
            out Form formCanvas)
        {
            //1. select view port kind
            InnerViewportKind innerViewportKind = InnerViewportKind.GdiPlus;

            var workingArea = Screen.PrimaryScreen.WorkingArea;

            formCanvas = FormCanvasHelper.CreateNewFormCanvas(
                workingArea.Width,
                workingArea.Height,
                innerViewportKind,
                out viewport);

            formCanvas.Text = "FormCanvas 1 :" + innerViewportKind;

            viewport.PaintMe();

            formCanvas.WindowState = FormWindowState.Maximized;
            formCanvas.Show();
        }
示例#24
0
        public void RunDemo(App app)
        {
            //1. create blank form
            YourImplementation.DemoFormCreatorHelper.CreateReadyForm(
                (InnerViewportKind)lstPlatformSelectors.SelectedItem,
                out _latestviewport, out _latest_formCanvas);

            AppHostWinForm appHost = new AppHostWinForm();

            appHost.SetUISurfaceViewportControl(_latestviewport);

            _latest_formCanvas.FormClosed += (s, e) =>
            {
                //when owner form is disposed
                //we should clear our resource?
                app.OnClosing();
                app.OnClosed();
                _latest_formCanvas = null;
                _latestviewport    = null;
            };


            //2. create app host
            appHost.StartApp(app);
            _latestviewport.TopDownRecalculateContent();
            _latestviewport.PaintMe();


            //==================================================
            if (this.chkShowLayoutInspector.Checked)
            {
                YourImplementation.LayoutInspectorUtils.ShowFormLayoutInspector(_latestviewport);
            }

            if (this.chkShowFormPrint.Checked)
            {
                ShowFormPrint(_latestviewport);
            }
        }
示例#25
0
        void CreateReadyForm(
            out LayoutFarm.UI.UISurfaceViewportControl viewport,
            out Form formCanvas)
        {
            var workingArea = Screen.PrimaryScreen.WorkingArea;
            int w           = workingArea.Width;
            int h           = workingArea.Height;


            MyRootGraphic rootgfx = new MyRootGraphic(this.uiPlatformWinForm,
                                                      this.chkUseGLCanvas.Checked ? openGLPlatform : gdiPlatform,
                                                      w, h);

            formCanvas = FormCanvasHelper.CreateNewFormCanvas(rootgfx,
                                                              this.chkUseGLCanvas.Checked ? InnerViewportKind.GL : InnerViewportKind.GdiPlus,
                                                              out viewport);

            formCanvas.Text = "FormCanvas 1";

            viewport.PaintMe();

            formCanvas.WindowState = FormWindowState.Maximized;
            formCanvas.Show();
        }
        public void Connect(LayoutFarm.UI.UISurfaceViewportControl vwport)
        {
#if DEBUG
            this.vwport = vwport;
            IdbugOutputWindow outputWin = vwport.IdebugOutputWin;
            outputWin.dbug_VisualRootDrawMsg += rootDrawMsgEventHandler;
            outputWin.dbug_VisualRootHitChainMsg += artUISurfaceViewport1_dbug_VisualRootHitChainMsg;
            outputWin.dbug_EnableAllDebugInfo();
#endif
        }
示例#27
0
 static void CreateNewFormCanvas(
   Form form1,
   MyRootGraphic myRootGfx,
   InnerViewportKind internalViewportKind,
   out LayoutFarm.UI.UISurfaceViewportControl canvasViewport)
 {
     var innerViewport = canvasViewport = new LayoutFarm.UI.UISurfaceViewportControl();
     Rectangle screenClientAreaRect = Conv.ToRect(Screen.PrimaryScreen.WorkingArea);
     canvasViewport.InitRootGraphics(myRootGfx, myRootGfx.TopWinEventPortal, internalViewportKind);
     canvasViewport.Bounds =
         new System.Drawing.Rectangle(0, 0,
             screenClientAreaRect.Width,
             screenClientAreaRect.Height);
     ////---------------------- 
     //form1.Controls.Add(canvasViewport);
     ////----------------------
     MakeFormCanvas(form1, canvasViewport);
     form1.SizeChanged += (s, e) =>
     {
         if (form1.WindowState == FormWindowState.Maximized)
         {
             Screen currentScreen = GetScreenFromX(form1.Left);
             //make full screen ?
             if (innerViewport != null)
             {
                 innerViewport.Size = currentScreen.WorkingArea.Size;
             }
         }
     };
 }
        /// <summary>
        /// create new UIViewport based on this control's current platform
        /// </summary>
        /// <returns></returns>
        public UISurfaceViewportControl CreateNewOne(int w, int h)
        {
            //each viewport has its own root graphics 

            UISurfaceViewportControl newViewportControl = new UISurfaceViewportControl();
            newViewportControl.Size = new System.Drawing.Size(w, h);
            RootGraphic newRootGraphic = this.rootgfx.CreateNewOne(w, h);
            ITopWindowEventRoot topEventRoot = null;
            if (newRootGraphic is ITopWindowEventRootProvider)
            {
                topEventRoot = ((ITopWindowEventRootProvider)newRootGraphic).EventRoot;
            }
            newViewportControl.InitRootGraphics(
                newRootGraphic,//new root
                topEventRoot,
                this.innerViewportKind);
            return newViewportControl;
        }