Exemple #1
0
        public PageOverview(KDocument document, Form parent, KPage currentPage)
        {
            InitializeComponent();

            thumbnailSize = (int)(4 * Util.GetGUISize());

            int border = Util.GetGUISize();

            this.Bounds = new Rectangle(border, border,
                                        parent.ClientSize.Width - border * 2, parent.ClientSize.Height - border * 2);
            this.Anchor = AnchorStyles.Bottom | AnchorStyles.Left
                          | AnchorStyles.Right | AnchorStyles.Top;

            this.document  = document;
            pageThumbnails = new Renderer.Image[document.Pages.Count];
            for (int i = 0; i < pageThumbnails.Length; i++)
            {
                Bitmap bmp = document.Pages[i].GetThumbnail(thumbnailSize, thumbnailSize,
                                                            Color.White, Color.Silver, 4);
                pageThumbnails[i] = new Renderer.Image(bmp);
            }

            renderer = GPURenderer.Create(this);
            mPos     = Cursor.Position;

            tmDraw          = new System.Windows.Forms.Timer();
            tmDraw.Interval = 30;
            tmDraw.Start();
            tmDraw.Tick     += tmDraw_Tick;
            tmInput          = new System.Windows.Forms.Timer();
            tmInput.Interval = 200;
            tmInput.Start();
            tmInput.Tick += TmInput_Tick;

            bmpAdd = new Renderer.Image(ResManager.LoadIcon("add.svg", thumbnailSize / 2));

            if (currentPage == null)
            {
                currentPageIndex = -1;
            }
            else
            {
                currentPageIndex = document.Pages.IndexOf(currentPage);
            }

            this.Disposed   += PageOverview_Disposed;
            this.MouseDown  += PageOverview_MouseDown;
            this.MouseUp    += PageOverview_MouseUp;
            this.MouseClick += PageOverview_MouseClick;
            this.VScroll     = true;
        }
        public override void Draw(GPURenderer renderer, int width, int height)
        {
            int _x = x;
            int _y = y;

            control.GetTransform().Transform(ref _x, ref _y);
            renderer.Transform(Transformation);
            PBrush     brushI = PBrush.CreateSolid(Color.White);
            PBrush     brushO = PBrush.CreateSolid(Color.Black);
            RectangleF rect   = new RectangleF(_x - innerRad, _y - innerRad, innerRad * 2, innerRad * 2);

            renderer.FillEllipse(brushI, rect);
            renderer.DrawEllipse(brushO, 4, rect);
            renderer.DrawImage(img, rect);
        }
Exemple #3
0
        public override void Draw(GPURenderer renderer, int width, int height)
        {
            renderer.Transform(Transformation);
            RectangleF rect = new RectangleF(0, 0, width, size);

            renderer.FillRectangle(Color.FromArgb(100, 200, 200, 200), rect);
            renderer.DrawRect(Color.Black, 1, rect);

            float scale = parent.GetTransform().GetScale();
            int   linMM = (int)(Util.PointToMm(width) / scale);
            float len1  = Util.MmToPoint(3);
            float len2  = Util.MmToPoint(5);
            float len3  = Util.MmToPoint(10);

            renderer.BeginLines(Color.Black, 1);
            for (int i = 0; i <= linMM; i++)
            {
                float x  = Util.MmToPoint(i) * scale;
                float y1 = len1;
                if (i % 5 == 0)
                {
                    y1 = len2;
                }
                if (i % 10 == 0)
                {
                    y1 = len3;
                }
                renderer.BatchedLine(new PointF(x, 0), new PointF(x, y1));
                renderer.BatchedLine(new PointF(x, size), new PointF(x, size - y1));
                //renderer.DrawLine(Color.Black, 1, new PointF(x, 0), new PointF(x, y1));
                //renderer.DrawLine(Color.Black, 1, new PointF(x, size), new PointF(x, size - y1));
            }
            renderer.EndLines();

            float  tx  = width / 2;
            double deg = Math.Abs(
                Math.Round(
                    (Transformation.GetRotation() - parent.GetTransform().GetRotation())
                    * 18000.0 / Math.PI) / 100.0);

            if (deg > 90)
            {
                deg = 180 - deg;
            }
            renderer.DrawText("" + deg + "°", PBrush.CreateSolid(Color.Tomato),
                              new RectangleF(Util.PointToMm(tx), 10, 50, 50), 20);
        }
Exemple #4
0
        public void SetData(McData data)
        {
            Guid = data.Guid;

            if (Shaders == null)
            {
                throw new ArgumentException("renderer");
            }

            if (_renderer == null)
            {
                _renderer = new GPURenderer(Shaders, N, N * N * N);
            }

            _renderer.dataBuffer.SetData(data.Values);
            _renderer.dataColorBuffer.SetData(data.Colors);
        }
Exemple #5
0
 public override void Draw(GPURenderer renderer, int width, int height)
 {
     renderer.ResetTransform();
     // Back Button
     {
         float      x    = width - 4 * Util.GetGUISize();
         float      y    = Util.GetGUISize();
         RectangleF rect = new RectangleF(x, y, Util.GetGUISize(), Util.GetGUISize());
         renderer.FillEllipse(color, rect);
         renderer.DrawEllipse(border, 4, rect);
     }
     // Forward Button
     {
         float x = width - 2 * Util.GetGUISize();
         float y = Util.GetGUISize();
         renderer.DrawEllipse(border, 4, new RectangleF(x, y, Util.GetGUISize(), Util.GetGUISize()));
     }
 }
Exemple #6
0
        private void Start()
        {
            //There are 8 threads run per group so N must be divisible by 8.
            if (N % 8 != 0)
            {
                throw new System.ArgumentException("N must be divisible be 8");
            }

            InitMeshes();
            if (_renderer == null)
            {
                _renderer = new GPURenderer(Shaders, N, N * N * N);
            }

            //first calculation
            _renderer.CleanMeshBuffer();
            _renderer.CalculateMesh(this.transform);
            _renderer.CalculateNormals();
            UpdateMeshes();
        }
        public override void Draw(GPURenderer renderer, int width, int height)
        {
            renderer.Transform(Transformation);
            int _x = x;
            int _y = y;

            control.GetTransform().Transform(ref _x, ref _y);

            Rectangle rect = new Rectangle(_x - rad, _y - rad, 2 * rad, 2 * rad);

            renderer.DrawEllipse(PBrush.CreateSolid(Color.White), this.width, rect);
            rect.Extend(-this.width / 2);
            renderer.DrawEllipse(PBrush.CreateSolid(Color.Black), 4, rect);
            rect.Extend(this.width);
            renderer.DrawEllipse(PBrush.CreateSolid(Color.Black), 4, rect);
            Matrix3x3 mat = new Matrix3x3();

            mat.TransformRotateAt(ringRot, _x, _y);
            renderer.Transform(mat);
            renderer.DrawImage(img, new RectangleF(imRect.X + _x, imRect.Y + _y, imRect.Width, imRect.Height));
        }
        public void RenderTransformed(BaseRenderer r)
        {
            if (r is GPURenderer)
            {
                GPURenderer gr  = (GPURenderer)r;
                Matrix3x3   mat = gr.GetCurrentTransform();
                gr.ResetTransform();
                gr.Transform(this.Transformation * mat);
                this.Render(r);
                gr.ResetTransform();
                gr.Transform(mat);
            }
            else
            {
            }

            r.BeginCircles(PBrush.CreateSolid(System.Drawing.Color.Lime));
            foreach (var point in Points)
            {
                r.Circle(point.X, point.Y, 4);
            }
            r.EndCircle();
        }
Exemple #9
0
        public override void Draw(GPURenderer renderer, int width, int height)
        {
            Matrix3x3 rotate = Matrix3x3.Rotate(angle);

            renderer.Transform(rotate);
            renderer.Transform(Transformation);
            PBrush     bgrColor = PBrush.CreateSolid(Color.FromArgb(100, 200, 200, 200));
            PBrush     fgrColor = PBrush.CreateSolid(Color.Black);
            PBrush     fntColor = PBrush.CreateSolid(Color.Tomato);
            RectangleF rect1    = new RectangleF(-ballRad, -ballRad, ballRad * 2, ballRad * 2);
            RectangleF rect2    = rect1;

            rect2.X += rad;
            renderer.FillEllipse(bgrColor, rect1);
            renderer.FillEllipse(bgrColor, rect2);
            renderer.DrawEllipse(fgrColor, 2, rect1);
            renderer.DrawEllipse(fgrColor, 2, rect2);
            renderer.DrawLine(Color.Black, 2, new PointF(ballRad, 0),
                              new PointF(rad - ballRad, 0));
            renderer.DrawLine(Color.Tomato, 1, new PointF(-ballRad, 0), new PointF(ballRad, 0));
            renderer.DrawLine(Color.Tomato, 1, new PointF(0, -ballRad), new PointF(0, ballRad));
            renderer.DrawLine(Color.Tomato, 1, new PointF(-ballRad + rad, 0), new PointF(ballRad + rad, 0));
            renderer.DrawLine(Color.Tomato, 1, new PointF(rad, -ballRad), new PointF(rad, ballRad));

            float  pageScale = parent.GetTransform().GetScale();
            float  pageRot   = parent.GetTransform().GetRotation();
            string strRad    = "" + Math.Round(Util.PointToMm(rad / pageScale) * 100.0) / 100.0;
            string strDeg    = "" + Math.Round((pageRot - angle) * 18000.0 / Math.PI) / 100.0;

            renderer.DrawText($"{strRad}mm\n{strDeg}°",
                              fntColor,
                              new RectangleF(Util.PointToMm(ballRad), Util.PointToMm(-ballRad), 500, 50),
                              10);

            renderer.ResetTransform();
        }