Diffstat (limited to 'inputmethods/dasher/DasherView.inl') (more/less context) (show whitespace changes)
-rw-r--r-- | inputmethods/dasher/DasherView.inl | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/inputmethods/dasher/DasherView.inl b/inputmethods/dasher/DasherView.inl new file mode 100644 index 0000000..fbb0c16 --- a/dev/null +++ b/inputmethods/dasher/DasherView.inl | |||
@@ -0,0 +1,75 @@ | |||
1 | // DasherView.inl | ||
2 | // | ||
3 | ///////////////////////////////////////////////////////////////////////////// | ||
4 | // | ||
5 | // Copyright (c) 2001-2002 David Ward | ||
6 | // | ||
7 | ///////////////////////////////////////////////////////////////////////////// | ||
8 | |||
9 | |||
10 | inline void Dasher::CDasherView::Render() | ||
11 | { | ||
12 | m_Screen->Blank(); | ||
13 | |||
14 | // Render nodes to screen object (should use off screen buffer) | ||
15 | RecursiveRender(m_DasherModel.Root(), m_DasherModel.Rootmin(), m_DasherModel.Rootmax(), 2, false); | ||
16 | RecursiveRender(m_DasherModel.Root(), m_DasherModel.Rootmin(), m_DasherModel.Rootmax(), 2, true); | ||
17 | Crosshair(m_DasherModel.DasherOX()); // add crosshair | ||
18 | //m_Screen->Display(); // copy from buffer to screen | ||
19 | } | ||
20 | |||
21 | inline void Dasher::CDasherView::MapScreen(int* DrawX, int* DrawY) | ||
22 | { | ||
23 | using namespace Dasher::Opts; | ||
24 | |||
25 | switch (ScreenOrientation) { | ||
26 | case (LeftToRight): | ||
27 | break; | ||
28 | case (RightToLeft): | ||
29 | *DrawX = m_Screen->GetWidth() - *DrawX; | ||
30 | break; | ||
31 | case (TopToBottom): { | ||
32 | int Swapper = ( *DrawX * m_Screen->GetHeight()) / m_Screen->GetWidth(); | ||
33 | *DrawX = (*DrawY * m_Screen->GetWidth()) / m_Screen->GetHeight(); | ||
34 | *DrawY = Swapper; | ||
35 | break; | ||
36 | } | ||
37 | case (BottomToTop): { | ||
38 | // Note rotation by 90 degrees not reversible like others | ||
39 | int Swapper = m_Screen->GetHeight() - ( *DrawX * m_Screen->GetHeight()) / m_Screen->GetWidth(); | ||
40 | *DrawX = (*DrawY * m_Screen->GetWidth()) / m_Screen->GetHeight(); | ||
41 | *DrawY = Swapper; | ||
42 | break; | ||
43 | } | ||
44 | default: | ||
45 | break; | ||
46 | } | ||
47 | } | ||
48 | |||
49 | |||
50 | inline void Dasher::CDasherView::UnMapScreen(int* MouseX, int* MouseY) | ||
51 | { | ||
52 | using namespace Dasher::Opts; | ||
53 | |||
54 | switch (ScreenOrientation) { | ||
55 | case (LeftToRight): | ||
56 | break; | ||
57 | case (RightToLeft): | ||
58 | *MouseX = m_Screen->GetWidth() - *MouseX; | ||
59 | break; | ||
60 | case (TopToBottom): { | ||
61 | int Swapper = (*MouseX * m_Screen->GetHeight()) / m_Screen->GetWidth(); | ||
62 | *MouseX = (*MouseY *m_Screen->GetWidth()) / m_Screen->GetHeight();; | ||
63 | *MouseY = Swapper; | ||
64 | break; | ||
65 | } | ||
66 | case (BottomToTop): { | ||
67 | int Swapper = (*MouseX * m_Screen->GetHeight()) / m_Screen->GetWidth(); | ||
68 | *MouseX = ((m_Screen->GetHeight() - *MouseY) * m_Screen->GetWidth()) / m_Screen->GetHeight(); | ||
69 | *MouseY = Swapper; | ||
70 | break; | ||
71 | } | ||
72 | default: | ||
73 | break; | ||
74 | } | ||
75 | } | ||