99namespace FlaUInspect . Core ;
1010
1111public class ElementOverlay : IDisposable {
12- public ElementOverlay ( ) {
13- }
12+ public ElementOverlayConfiguration Configuration { get ; }
1413
15- public ElementOverlay ( Color color ) {
16- Color = color ;
17- }
14+
1815
19- public ElementOverlay ( int size , int margin ) {
20- Size = size ;
21- Margin = margin ;
22- }
16+ public ElementOverlay ( ElementOverlayConfiguration configuration ) {
17+ Configuration = configuration ;
2318
24- public ElementOverlay ( int size , int margin , Color color ) {
25- Size = size ;
26- Margin = margin ;
27- Color = color ;
2819 }
2920
30- public int Size { get ; } = 2 ;
31-
32- public int Margin { get ; } = 0 ;
21+ // public ElementOverlay(int size, int margin) {
22+ // Size = size;
23+ // Margin = margin;
24+ // }
25+ //
26+ // public ElementOverlay(int size, int margin, Color color) {
27+ // Size = size;
28+ // Margin = margin;
29+ // Color = color;
30+ // }
31+
32+ // public int Size { get; } = 2;
33+ //
34+ // public int Margin { get; } = 0;
35+ //
36+ // public Color Color { get; set; }
37+
38+ public static Rectangle [ ] FillRectangleFactory ( ElementOverlayConfiguration config , Rectangle rectangle ) {
39+ return [
40+ new Rectangle ( rectangle . X - config . Margin , rectangle . Y - config . Margin , rectangle . Width + 2 * config . Margin , rectangle . Height + 2 * config . Margin ) ] ;
41+ }
3342
34- public Color Color { get ; set ; }
43+ public static Rectangle [ ] BoundRectangleFactory ( ElementOverlayConfiguration config , Rectangle rectangle ) {
44+ return [
45+ new ( rectangle . X - config . Margin , rectangle . Y - config . Margin , config . Size , rectangle . Height + 2 * config . Margin ) ,
46+ new ( rectangle . X - config . Margin , rectangle . Y - config . Margin , rectangle . Width + 2 * config . Margin , config . Size ) ,
47+ new ( rectangle . X + rectangle . Width - config . Size + config . Margin , rectangle . Y - config . Margin , config . Size , rectangle . Height + 2 * config . Margin ) ,
48+ new ( rectangle . X - config . Margin , rectangle . Y + rectangle . Height - config . Size + config . Margin , rectangle . Width + 2 * config . Margin , config . Size )
49+ ] ;
50+ }
3551
3652 public void Dispose ( ) {
53+ Hide ( ) ;
54+ }
55+
56+ public void Hide ( ) {
3757 foreach ( OverlayRectangleForm overlayRectangleForm in _overlayRectangleFormList ) {
3858 overlayRectangleForm . Hide ( ) ;
3959 overlayRectangleForm . Close ( ) ;
@@ -44,24 +64,25 @@ public void Dispose() {
4464
4565 private OverlayRectangleForm [ ] _overlayRectangleFormList = [ ] ;
4666
47- public void CreateAndShowForms ( Rectangle rectangle ) {
48- Color color1 = Color . FromArgb ( 255 , Color . R , Color . G , Color . B ) ;
67+ public void Show ( Rectangle rectangle ) {
68+ Color color1 = Color . FromArgb ( 255 , Configuration . Color . R , Configuration . Color . G , Configuration . Color . B ) ;
69+ Rectangle [ ] rectangles = Configuration . RectangleFactory ? . Invoke ( Configuration , rectangle ) ?? BoundRectangleFactory ( Configuration , rectangle ) ;
4970 // Rectangle[] rectangles = [
50- // new (rectangle.X - Margin, rectangle.Y - Margin, Size, rectangle.Height + 2 * Margin),
51- // new (rectangle.X - Margin, rectangle.Y - Margin, rectangle.Width + 2 * Margin, Size),
52- // new (rectangle.X + rectangle.Width - Size + Margin, rectangle.Y - Margin, Size, rectangle.Height + 2 * Margin),
53- // new (rectangle.X - Margin, rectangle.Y + rectangle.Height - Size + Margin, rectangle.Width + 2 * Margin, Size)
71+ // new (rectangle.X - Configuration.Margin, rectangle.Y - Configuration.Margin, Configuration.Size, rectangle.Height + 2 * Configuration.Margin),
72+ // new (rectangle.X - Configuration.Margin, rectangle.Y - Configuration.Margin, rectangle.Width + 2 * Configuration.Margin, Configuration.Size),
73+ // new (rectangle.X + rectangle.Width - Configuration.Size + Configuration.Margin, rectangle.Y - Configuration.Margin, Configuration.Size, rectangle.Height + 2 * Configuration.Margin),
74+ // new (rectangle.X - Configuration.Margin, rectangle.Y + rectangle.Height - Configuration.Size + Configuration.Margin, rectangle.Width + 2 * Configuration.Margin, Configuration.Size)
75+ // ];
76+ // Rectangle[] rectangles = [
77+ // new (rectangle.X - Margin, rectangle.Y - Margin, rectangle.Width + Margin, rectangle.Height + Margin),
5478 // ];
55- Rectangle [ ] rectangles = [
56- new ( rectangle . X - Margin , rectangle . Y - Margin , rectangle . Width + Margin , rectangle . Height + Margin ) ,
57- ] ;
5879
5980 List < OverlayRectangleForm > rectangleForms = [ ] ;
6081
6182 foreach ( Rectangle rectangle1 in rectangles ) {
6283 OverlayRectangleForm overlayRectangleForm1 = new ( ) ;
6384 overlayRectangleForm1 . BackColor = color1 ;
64- overlayRectangleForm1 . Opacity = Color . A / 255d ;
85+ overlayRectangleForm1 . Opacity = Configuration . Color . A / 255d ;
6586 OverlayRectangleForm overlayRectangleForm2 = overlayRectangleForm1 ;
6687 rectangleForms . Add ( overlayRectangleForm2 ) ;
6788 SetWindowPos ( overlayRectangleForm2 . Handle , new IntPtr ( - 1 ) , rectangle1 . X , rectangle1 . Y , rectangle1 . Width , rectangle1 . Height , 16 /*0x10*/ ) ;
@@ -84,4 +105,6 @@ private static extern bool SetWindowPos(
84105
85106 [ DllImport ( "user32.dll" , CharSet = CharSet . Auto , SetLastError = true ) ]
86107 private static extern bool ShowWindow ( IntPtr hWnd , int nCmdShow ) ;
87- }
108+ }
109+
110+ public record class ElementOverlayConfiguration ( int Size , int Margin , Color Color , Func < ElementOverlayConfiguration , Rectangle , Rectangle [ ] > ? RectangleFactory = null ) ;
0 commit comments