/
SpaceControlDelegate.cs
76 lines (64 loc) · 2.47 KB
/
SpaceControlDelegate.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using System;
using TOAPI.Types;
using NewTOAPIA.Drawing;
using NewTOAPIA.UI;
namespace HamSketch
{
public class SpaceControlDelegate : ISpaceControl
{
/// Draw bitmaps
public event NewTOAPIA.Drawing.BitBlt BitBltHandler;
public event NewTOAPIA.Drawing.AlphaBlend AlphaBlendHandler;
// Mouse events
public event NewTOAPIA.UI.MouseActivityEventHandler MouseActivityEvent;
public event NewTOAPIA.UI.MouseActivityEventHandler OnMouseActivityEvent;
public SpaceControlDelegate()
{
}
public SpaceControlDelegate(MetaSpace aSpace)
{
}
public void AddSpaceController(ISpaceControl aController)
{
///// Draw bitmaps
BitBltHandler += new NewTOAPIA.Drawing.BitBlt(aController.BitBlt);
AlphaBlendHandler += new NewTOAPIA.Drawing.AlphaBlend(aController.AlphaBlend);
MouseActivityEvent += new MouseActivityEventHandler(aController.MouseActivity);
OnMouseActivityEvent += new MouseActivityEventHandler(aController.OnMouseActivity);
}
#region Handling Mouse
public virtual void MouseActivity(Object sender, MouseEventArgs mevent)
{
if (null != MouseActivityEvent)
MouseActivityEvent(sender, mevent);
}
public virtual void OnMouseActivity(Object sender, MouseEventArgs mevent)
{
if (null != OnMouseActivityEvent)
OnMouseActivityEvent(sender, mevent);
}
#endregion
#region Drawing Bitmaps
// Generalized bit block transfer
// Can transfer from any device context to this one.
public virtual void BitBlt(int x, int y, PixelBuffer pixBuff)
{
if (null != BitBltHandler)
BitBltHandler(x, y, pixBuff);
}
public virtual void AlphaBlend(int x, int y, int width, int height,
PixelBuffer bitmap, int srcX, int srcY, int srcWidth, int srcHeight,
byte alpha)
{
if (null != AlphaBlendHandler)
AlphaBlendHandler(x, y, width, height,
bitmap, srcX, srcY, srcWidth, srcHeight, alpha);
}
public virtual void ScaleBitmap(PixelBuffer aBitmap, RECT aFrame)
{
AlphaBlend(aFrame.Left, aFrame.Top, aFrame.Width, aFrame.Height,
aBitmap, 0, 0, aBitmap.Width, aBitmap.Height, aBitmap.Alpha);
}
#endregion
}
}