예제 #1
0
        private void RenderControl(RenderEventArgs e, Control ctl)
        {
            if (ctl is Control2D)
            {
                Control2D c2d = (ctl as Control2D);
                Internal.OpenGL.Methods.glMatrixMode(MatrixMode.ModelView);
                Internal.OpenGL.Methods.glTranslated(c2d.Position.X, c2d.Position.Y, 0);
                Internal.OpenGL.Methods.glTranslated(5, 1, 0);
            }

            BeforeRenderEventArgs bre = new BeforeRenderEventArgs(e.Canvas);

            ctl.OnBeforeRender(bre);
            if (bre.Cancel)
            {
                return;
            }

            ctl.OnRender(e);
            ctl.OnAfterRender(e);

            if (ctl is Control2D)
            {
                Control2D c2d = (ctl as Control2D);
                Internal.OpenGL.Methods.glMatrixMode(MatrixMode.ModelView);
                Internal.OpenGL.Methods.glTranslated(-c2d.Position.X, -c2d.Position.Y, 0);
                Internal.OpenGL.Methods.glTranslated(-5, -1, 0);
            }
        }
예제 #2
0
 protected virtual void OnBeforeRender(BeforeRenderEventArgs e)
 {
     if (BeforeRender != null)
     {
         BeforeRender(this, e);
     }
 }
예제 #3
0
        protected internal override void OnBeforeRender(BeforeRenderEventArgs e)
        {
            base.OnBeforeRender(e);

            // Internal.OpenGL.Methods.glMatrixMode(MatrixMode.ModelView);
            // Internal.OpenGL.Methods.glLoadIdentity();

            e.Canvas.Translate(0, System.Windows.Forms.SystemInformation.CaptionHeight - 4);

            Internal.OpenGL.Methods.glDisable(Internal.OpenGL.Constants.GLCapabilities.Lighting);

            if (HasFocus)
            {
                e.Canvas.Color = Colors.DarkBlue;
            }
            else
            {
                e.Canvas.Color = Colors.Silver;
            }
            e.Canvas.DrawRectangle(0, 0, this.Size.Width, this.Size.Height);
            e.Canvas.FillRectangle(0, 0, this.Size.Width, 20);

            e.Canvas.Color = Color.FromRGBA(Colors.Silver.Red - 0.01, Colors.Silver.Green - 0.01, Colors.Silver.Blue - 0.01);
            e.Canvas.FillRectangle(0, 20, this.Size.Width - 1, this.Size.Height - 20);

            if (HasFocus)
            {
                e.Canvas.Color = Colors.White;
            }
            else
            {
                e.Canvas.Color = Colors.DarkGray;
            }
            e.Canvas.DrawText(mvarTitle, 4, 14);


            e.Canvas.Translate(0, System.Windows.Forms.SystemInformation.CaptionHeight - 4);
        }
예제 #4
0
        protected internal override void OnBeforeRender(BeforeRenderEventArgs e)
        {
            base.OnBeforeRender(e);

            // Internal.OpenGL.Methods.glMatrixMode(MatrixMode.ModelView);
            // Internal.OpenGL.Methods.glLoadIdentity();

            e.Canvas.Translate(0, System.Windows.Forms.SystemInformation.CaptionHeight - 4);

            Internal.OpenGL.Methods.glDisable(Internal.OpenGL.Constants.GLCapabilities.Lighting);

            if (HasFocus)
            {
                e.Canvas.Color = Colors.DarkBlue;
            }
            else
            {
                e.Canvas.Color = Colors.Silver;
            }
            e.Canvas.DrawRectangle(0, 0, this.Size.Width, this.Size.Height);
            e.Canvas.FillRectangle(0, 0, this.Size.Width, 20);

            e.Canvas.Color = Color.FromRGBA(Colors.Silver.Red - 0.01, Colors.Silver.Green - 0.01, Colors.Silver.Blue - 0.01);
            e.Canvas.FillRectangle(0, 20, this.Size.Width - 1, this.Size.Height - 20);

            if (HasFocus)
            {
                e.Canvas.Color = Colors.White;
            }
            else
            {
                e.Canvas.Color = Colors.DarkGray;
            }
            e.Canvas.DrawText(mvarTitle, 4, 14);

            e.Canvas.Translate(0, System.Windows.Forms.SystemInformation.CaptionHeight - 4);
        }
예제 #5
0
        private static void _OnRender()
        {
            Window w = null;

            if (mvarLastFullscreenWindow != null)
            {
                w = mvarLastFullscreenWindow;
            }
            else
            {
                int handle = Internal.FreeGLUT.Methods.glutGetWindow();
                w = handleWindows[handle];
            }

            BeforeRenderEventArgs bre = new BeforeRenderEventArgs(w.Canvas);
            RenderEventArgs       re  = new RenderEventArgs(w.Canvas);

            Internal.OpenGL.Methods.glMatrixMode(MatrixMode.Projection);
            Internal.OpenGL.Methods.glLoadIdentity();
            Internal.OpenGL.Methods.glViewport(0, 0, w.Width, w.Height);
            Internal.OpenGL.Methods.glOrtho(0, w.Width, w.Height, 0, -1, 1);

            Internal.OpenGL.Methods.glMatrixMode(MatrixMode.ModelView);
            Internal.OpenGL.Methods.glLoadIdentity();

            Internal.OpenGL.Methods.glClearColor(w.BackgroundColor.Red, w.BackgroundColor.Green, w.BackgroundColor.Blue, w.BackgroundColor.Alpha);
            Internal.OpenGL.Methods.glClear(Internal.OpenGL.Constants.GL_COLOR_BUFFER_BIT | Internal.OpenGL.Constants.GL_DEPTH_BUFFER_BIT);

            w.OnBeforeRender(bre);

            if (bre.Cancel)
            {
                return;
            }

            bool depthtest = Internal.OpenGL.Methods.glIsEnabled(Internal.OpenGL.Constants.GLCapabilities.DepthTesting);
            bool lighting  = Internal.OpenGL.Methods.glIsEnabled(Internal.OpenGL.Constants.GLCapabilities.Lighting);

            double ofsx = 1.0, ofsy = 11.0;

            if (w.FullScreen)
            {
                ofsx = 0;
                ofsy = -10;
            }

            foreach (Control ctl in w.Controls)
            {
                if (ctl.Visible)
                {
                    if (ctl is Control2D)
                    {
                        // set up for 2D rendering
                        Caltron.Internal.OpenGL.Methods.glViewport(0, 0, w.Width, w.Height);

                        Control2D c2d = (ctl as Control2D);
                        Internal.OpenGL.Methods.glMatrixMode(MatrixMode.ModelView);
                        Internal.OpenGL.Methods.glLoadIdentity();
                        Internal.OpenGL.Methods.glTranslated((c2d.Position.X + ofsx), (c2d.Position.Y + ofsy), 0);

                        if (depthtest)
                        {
                            Internal.OpenGL.Methods.glDisable(Internal.OpenGL.Constants.GLCapabilities.DepthTesting);
                        }
                        if (lighting)
                        {
                            Internal.OpenGL.Methods.glDisable(Internal.OpenGL.Constants.GLCapabilities.Lighting);
                        }
                    }

                    ctl.OnBeforeRender(bre);
                    if (!bre.Cancel)
                    {
                        ctl.OnRender(re);
                        ctl.OnAfterRender(re);
                    }

                    if (ctl is Control2D)
                    {
                        Control2D c2d = (ctl as Control2D);
                        Internal.OpenGL.Methods.glMatrixMode(MatrixMode.ModelView);
                        Internal.OpenGL.Methods.glTranslated(-(c2d.Position.X + ofsx), -(c2d.Position.Y + ofsy), 0);

                        if (depthtest)
                        {
                            Internal.OpenGL.Methods.glEnable(Internal.OpenGL.Constants.GLCapabilities.DepthTesting);
                        }
                        if (lighting)
                        {
                            Internal.OpenGL.Methods.glEnable(Internal.OpenGL.Constants.GLCapabilities.Lighting);
                        }
                    }
                }
            }

            w.OnAfterRender(re);
            Internal.FreeGLUT.Methods.glutSwapBuffers();
        }
예제 #6
0
        private void RenderControl(RenderEventArgs e, Control ctl)
        {
            if (ctl is Control2D)
            {
                Control2D c2d = (ctl as Control2D);
                Internal.OpenGL.Methods.glMatrixMode(MatrixMode.ModelView);
                Internal.OpenGL.Methods.glTranslated(c2d.Position.X, c2d.Position.Y, 0);
                Internal.OpenGL.Methods.glTranslated(5, 1, 0);
            }

            BeforeRenderEventArgs bre = new BeforeRenderEventArgs(e.Canvas);
            ctl.OnBeforeRender(bre);
            if (bre.Cancel) return;

            ctl.OnRender(e);
            ctl.OnAfterRender(e);

            if (ctl is Control2D)
            {
                Control2D c2d = (ctl as Control2D);
                Internal.OpenGL.Methods.glMatrixMode(MatrixMode.ModelView);
                Internal.OpenGL.Methods.glTranslated(-c2d.Position.X, -c2d.Position.Y, 0);
                Internal.OpenGL.Methods.glTranslated(-5, -1, 0);
            }
        }
예제 #7
0
파일: Window.cs 프로젝트: Narinyir/Sanjigen
        private static void _OnRender()
        {
            Window w = null;
            if (mvarLastFullscreenWindow != null)
            {
                w = mvarLastFullscreenWindow;
            }
            else
            {
                int handle = Internal.FreeGLUT.Methods.glutGetWindow();
                w = handleWindows[handle];
            }

            BeforeRenderEventArgs bre = new BeforeRenderEventArgs(w.Canvas);
            RenderEventArgs re = new RenderEventArgs(w.Canvas);

            Internal.OpenGL.Methods.glMatrixMode(MatrixMode.Projection);
            Internal.OpenGL.Methods.glLoadIdentity();
            Internal.OpenGL.Methods.glViewport(0, 0, w.Width, w.Height);
            Internal.OpenGL.Methods.glOrtho(0, w.Width, w.Height, 0, -1, 1);

            Internal.OpenGL.Methods.glMatrixMode(MatrixMode.ModelView);
            Internal.OpenGL.Methods.glLoadIdentity();

            Internal.OpenGL.Methods.glClearColor(w.BackgroundColor.Red, w.BackgroundColor.Green, w.BackgroundColor.Blue, w.BackgroundColor.Alpha);
            Internal.OpenGL.Methods.glClear(Internal.OpenGL.Constants.GL_COLOR_BUFFER_BIT | Internal.OpenGL.Constants.GL_DEPTH_BUFFER_BIT);

            w.OnBeforeRender(bre);

            if (bre.Cancel) return;

            bool depthtest = Internal.OpenGL.Methods.glIsEnabled(Internal.OpenGL.Constants.GLCapabilities.DepthTesting);
            bool lighting = Internal.OpenGL.Methods.glIsEnabled(Internal.OpenGL.Constants.GLCapabilities.Lighting);

            double ofsx = 1.0, ofsy = 11.0;
            if (w.FullScreen)
            {
                ofsx = 0;
                ofsy = -10;
            }

            foreach (Control ctl in w.Controls)
            {
                if (ctl.Visible)
                {
                    if (ctl is Control2D)
                    {
                        // set up for 2D rendering
                        Caltron.Internal.OpenGL.Methods.glViewport(0, 0, w.Width, w.Height);

                        Control2D c2d = (ctl as Control2D);
                        Internal.OpenGL.Methods.glMatrixMode(MatrixMode.ModelView);
                        Internal.OpenGL.Methods.glLoadIdentity();
                        Internal.OpenGL.Methods.glTranslated((c2d.Position.X + ofsx), (c2d.Position.Y + ofsy), 0);

                        if (depthtest) Internal.OpenGL.Methods.glDisable(Internal.OpenGL.Constants.GLCapabilities.DepthTesting);
                        if (lighting) Internal.OpenGL.Methods.glDisable(Internal.OpenGL.Constants.GLCapabilities.Lighting);
                    }

                    ctl.OnBeforeRender(bre);
                    if (!bre.Cancel)
                    {
                        ctl.OnRender(re);
                        ctl.OnAfterRender(re);
                    }

                    if (ctl is Control2D)
                    {
                        Control2D c2d = (ctl as Control2D);
                        Internal.OpenGL.Methods.glMatrixMode(MatrixMode.ModelView);
                        Internal.OpenGL.Methods.glTranslated(-(c2d.Position.X + ofsx), -(c2d.Position.Y + ofsy), 0);

                        if (depthtest) Internal.OpenGL.Methods.glEnable(Internal.OpenGL.Constants.GLCapabilities.DepthTesting);
                        if (lighting) Internal.OpenGL.Methods.glEnable(Internal.OpenGL.Constants.GLCapabilities.Lighting);
                    }
                }
            }

            w.OnAfterRender(re);
            Internal.FreeGLUT.Methods.glutSwapBuffers();
        }
예제 #8
0
파일: Window.cs 프로젝트: Narinyir/Sanjigen
 protected virtual void OnBeforeRender(BeforeRenderEventArgs e)
 {
     if (BeforeRender != null) BeforeRender(this, e);
 }