public bool IsMouseOver(Point screen) { if (!isReady) { return(false); } Point client; if (InvokeRequired) { PointDelegate deleg = new PointDelegate(IsMouseOver); Object o = this.Invoke(deleg, new object[] { screen }); if (o == null) { return(false); } return((bool)o); } client = this.PointToClient(screen); bool over = this.ClientRectangle.Contains(client); if (!over) { // LogManager.Singleton.LogMessage(LogMessageLevel.LML_CRITICAL, "IsMouseOver=false"); } return(over); }
static void OverridePoint(GLib.GType gtype) { if (PointCallback == null) { PointCallback = new PointDelegate(Point_cb); } gnomesharp_canvas_item_override_point(gtype.Val, PointCallback); }
public void test_MoveRequest_fromView() { Point point = new Point(1, 2); modelMock.Expect("MoveRequest", point); PointDelegate trigger = moveRequestConstraint.GetInstance as PointDelegate; trigger(point); }
public static bool EnumeratePointsBetween(Point from, Point to, double maxDelta, PointDelegate callback) { if (from.Equals(to)) { return(callback(from.Clone())); } var c = (int)(from.GetDistanceTo(to) / maxDelta + 2); maxDelta = from.GetDistanceTo(to) / c; var dir = (to - from).Normalized(); for (var i = 0; i <= c; i++) { // from + dir * (maxDelta * i) if (!callback(new Point(from.X + dir.X * maxDelta * i, from.Y + dir.Y * maxDelta * i))) { return(false); } } return(true); }
static extern void gnomesharp_canvas_item_override_point(IntPtr gtype, PointDelegate cb);
public static bool EnumeratePointsBetween(Point from, Point to, double maxDelta, PointDelegate callback) { if (from.Equals(to)) return callback(from.Clone()); var c = (int)(from.GetDistanceTo(to) / maxDelta + 2); maxDelta = from.GetDistanceTo(to) / c; var dir = (to - from).Normalized(); for (var i = 0; i <= c; i++) { // from + dir * (maxDelta * i) if (!callback(new Point(from.X + dir.X * maxDelta * i, from.Y + dir.Y * maxDelta * i))) return false; } return true; }
public void SubscribeMoveRequest(PointDelegate listener) { MoveRequestEvent += listener; }
public void createButton() { Button button1 = new System.Windows.Forms.Button(); var nDeleg = new PointDelegate(GetPoint); var nDelegSet = new SetPointDelegate(SetPoint); Random rnd = new Random(); button1.Name = "button_" + (++counter); int size = rnd.Next(15, 100); button1.Size = new System.Drawing.Size(size, size); Point btnpos = new Point(rnd.Next(0 + 2 * button1.Size.Width, ActiveForm.Size.Width - 2 * button1.Size.Width), rnd.Next(0 + 2 * button1.Size.Height, ActiveForm.Size.Height - 2 * button1.Size.Height)); button1.Location = btnpos; button1.TabIndex = 0; button1.BackColor = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256)); button1.UseVisualStyleBackColor = false; //!!! button1.Text = ""; this.Invoke((MethodInvoker)(() => Controls.Add(button1))); //button1.MouseMove += new System.Windows.Forms.MouseEventHandler(moveBtn); //button1.Click += new System.EventHandler(createButton); //while (true) { Thread.Sleep(1000); } btns.Add(button1); while (true) { try { Button btn = button1; //Point pos = btn.PointToClient(Cursor.Position); Point pos = (Point)Invoke(nDeleg, btn); Point center = new Point(((pos.X - (btn.Size.Width / 2)) + Math.Sign(pos.X - (btn.Size.Width / 2))), ((pos.Y - (btn.Size.Height / 2)) + Math.Sign(pos.Y - (btn.Size.Height / 2)))); const int offset = 0; if (pos.X < btn.Width + offset && pos.X > 0 - offset && pos.Y > 0 - offset && pos.Y < btn.Height + offset) { if ((float)Math.Abs(center.X) / (btn.Size.Width / 2) > (float)Math.Abs(center.Y) / (btn.Size.Height / 2)) { Invoke(nDelegSet, btn, new Point(btn.Location.X + center.X + Math.Sign(-center.X) * (btn.Size.Width / 2), btn.Location.Y)); } else { if ((float)Math.Abs(center.X) / (btn.Size.Width / 2) == (float)Math.Abs(center.Y) / (btn.Size.Height / 2)) { Invoke(nDelegSet, btn, new Point(btn.Location.X + center.X + Math.Sign(-center.X) * (btn.Size.Width / 2), btn.Location.Y + center.Y + Math.Sign(-center.Y) * (btn.Size.Height / 2))); } else { Invoke(nDelegSet, btn, new Point(btn.Location.X, btn.Location.Y + center.Y + Math.Sign(-center.Y) * (btn.Size.Height / 2))); } } Form ActiveForm = button1.Parent as Form; try { if (btn.Location.X > ActiveForm.Size.Width - 2 * btn.Size.Width) { Invoke(nDelegSet, btn, new Point(ActiveForm.Size.Width - 2 * btn.Size.Width, btn.Location.Y)); } if (btn.Location.X < 0 + btn.Size.Width) { Invoke(nDelegSet, btn, new Point(0 + btn.Size.Width, btn.Location.Y)); } if (btn.Location.Y > ActiveForm.Size.Height - 2 * btn.Size.Height) { Invoke(nDelegSet, btn, new Point(btn.Location.X, ActiveForm.Size.Height - 2 * btn.Size.Height)); } if (btn.Location.Y < 0 + btn.Size.Height) { Invoke(nDelegSet, btn, new Point(btn.Location.X, 0 + btn.Size.Height)); } } catch { //idk } } Thread.Sleep(delay); } catch { } } }
private void ForEachAbsPoint(PointDelegate ptCallback) { foreach (var figure in Path.Figures) { var args = new PointDelegateArgs(figure.StartPoint, figure, "StartPoint"); ptCallback(args); if (args.PointModified) { figure.StartPoint = args.Point; } var lastEndPoint = args; foreach (var segment in figure.Segments) { if (segment is ArcSegment) { var arc = segment as ArcSegment; args = new PointDelegateArgs(arc.Point, segment, "Point"); ptCallback(args); if (args.PointModified) { arc.Point = args.Point; } lastEndPoint = args; } else if (segment is BezierSegment) { var b = segment as BezierSegment; args = new PointDelegateArgs(b.Point1, segment, "Point1", lastEndPoint); ptCallback(args); if (args.PointModified) { b.Point1 = args.Point; } args = new PointDelegateArgs(b.Point3, segment, "Point3"); ptCallback(args); if (args.PointModified) { b.Point3 = args.Point; } lastEndPoint = args; args = new PointDelegateArgs(b.Point2, segment, "Point2", lastEndPoint); ptCallback(args); if (args.PointModified) { b.Point2 = args.Point; } } else if (segment is LineSegment) { var l = segment as LineSegment; args = new PointDelegateArgs(l.Point, segment, "Point"); ptCallback(args); if (args.PointModified) { l.Point = args.Point; } lastEndPoint = args; } else if (segment is PolyBezierSegment) { var pb = segment as PolyBezierSegment; for (int n = 0; n < pb.Points.Count; n += 3) { args = new PointDelegateArgs(pb.Points[n + 0], segment, String.Format("Points[{0}]", n + 0), lastEndPoint); ptCallback(args); if (args.PointModified) { pb.Points[n + 0] = args.Point; } args = new PointDelegateArgs(pb.Points[n + 2], segment, String.Format("Points[{0}]", n + 2)); ptCallback(args); if (args.PointModified) { pb.Points[n + 2] = args.Point; } lastEndPoint = args; args = new PointDelegateArgs(pb.Points[n + 1], segment, String.Format("Points[{0}]", n + 1), lastEndPoint); ptCallback(args); if (args.PointModified) { pb.Points[n + 1] = args.Point; } } } else if (segment is PolyLineSegment) { var pl = segment as PolyLineSegment; for (int n = 0; n < pl.Points.Count; ++n) { args = new PointDelegateArgs(pl.Points[n], segment, String.Format("Points[{0}]", n)); ptCallback(args); if (args.PointModified) { pl.Points[n] = args.Point; } lastEndPoint = args; } } else if (segment is PolyQuadraticBezierSegment) { var pqb = segment as PolyQuadraticBezierSegment; for (int n = 0; n < pqb.Points.Count; ++n) { args = new PointDelegateArgs(pqb.Points[n + 1], segment, String.Format("Points[{0}]", n + 1)); ptCallback(args); if (args.PointModified) { pqb.Points[n + 1] = args.Point; } lastEndPoint = args; args = new PointDelegateArgs(pqb.Points[n + 0], segment, String.Format("Points[{0}]", n + 0), lastEndPoint); ptCallback(args); if (args.PointModified) { pqb.Points[n + 0] = args.Point; } } } else if (segment is QuadraticBezierSegment) { var qb = segment as QuadraticBezierSegment; args = new PointDelegateArgs(qb.Point2, segment, "Point2"); ptCallback(args); if (args.PointModified) { qb.Point2 = args.Point; } lastEndPoint = args; args = new PointDelegateArgs(qb.Point1, segment, "Point1", lastEndPoint); ptCallback(args); if (args.PointModified) { qb.Point1 = args.Point; } } } } }