summaryrefslogtreecommitdiff
path: root/inputmethods/dasher/DasherView.inl
Unidiff
Diffstat (limited to 'inputmethods/dasher/DasherView.inl') (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/dasher/DasherView.inl75
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
10inline 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
21inline 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
50inline 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}