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); }
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); }
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); }
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())); } }
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(); }
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(); }