From 651b6c612db4e809c506973996f2580c4158ac3a Mon Sep 17 00:00:00 2001 From: mickeyl Date: Sat, 27 Sep 2003 11:29:26 +0000 Subject: merge dasher which has been introduced in BRANCH first (wtf?) into HEAD --- (limited to 'inputmethods/dasher/DasherView.h') diff --git a/inputmethods/dasher/DasherView.h b/inputmethods/dasher/DasherView.h new file mode 100644 index 0000000..81cc24e --- a/dev/null +++ b/inputmethods/dasher/DasherView.h @@ -0,0 +1,99 @@ +// DasherView.h +// +///////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2001-2002 David Ward +// +///////////////////////////////////////////////////////////////////////////// + + +////////////////////////////////////////////////////////////////////// +// DasherView.h: interface for the DasherView class. +// Copyright 2002 David Ward +////////////////////////////////////////////////////////////////////// + +#ifndef __DasherView_h_ +#define __DasherView_h_ + +#include "MSVC_Unannoy.h" +#include "DasherScreen.h" +#include "DasherModel.h" + +// CDasherView is an abstract view class +// The implentation must provide several functions - defined here as pure virtual functions +// See the CDasherViewSquare class for an example + +namespace Dasher {class CDasherView;} +class Dasher::CDasherView +{ +public: + CDasherView(CDasherScreen* DasherScreen, CDasherModel& DasherModel, Dasher::Opts::ScreenOrientations Orientation=Dasher::Opts::LeftToRight); + ~CDasherView() {} + + void ChangeOrientation(Dasher::Opts::ScreenOrientations Orientation); + + // TODO Sort this out + void FlushAt(int mousex,int mousey); + + // renders Dasher + inline void Render(); + + // translates the screen coordinates to Dasher coordinates and calls + // dashermodel.TapOnDisplay + virtual void TapOnDisplay(int mousex, int mousey, unsigned long Time)=0; + + virtual void ChangeScreen(CDasherScreen* NewScreen) + { + m_Screen=NewScreen; + + // DJW - removed floating point stuff + //XYScale = (double)m_Screen->GetHeight() / m_Screen->GetWidth(); + } + + virtual void DrawMouse(int mousex, int mousey)=0; + virtual void DrawKeyboard()=0; + + // Return references to the model and the screen: + CDasherModel& DasherModel() {return m_DasherModel;} + CDasherScreen& Screen() {return *m_Screen;} + + void Display() {m_Screen->Display();} + + // Toggle advanced colour mode + void SetColourMode(bool colourmode) {ColourMode=colourmode;} + +protected: + // Orientation of Dasher Screen + inline void MapScreen(int* DrawX, int* DrawY); + inline void UnMapScreen(int* DrawX, int* DrawY); + +private: + CDasherScreen* m_Screen; // provides the graphics (text, lines, rectangles): + CDasherModel& m_DasherModel; // Model view represents + + // Pure virtuals to implement + virtual void Crosshair(myint sx)=0; // Tells m_Screen to draw a crosshair - or other static decoration + virtual int RenderNode(const symbol Character, const int Color, Opts::ColorSchemes ColorScheme, + myint y1, myint y2, int& mostleft, bool& force, bool text)=0; + + // Responsible for all the Render_node calls + int RecursiveRender(CDasherNode* Render, myint y1,myint y2,int mostleft, bool text); + + // Displays some nodes inside one parent node. Used to group capital letters, accents, punctuation etc. + void RenderGroups(CDasherNode* Render, myint y1, myint y2, bool text); + + // Orientation of Dasher Screen + Dasher::Opts::ScreenOrientations ScreenOrientation; + + // Advanced colour mode + bool ColourMode; + + // DJW - removed floating point stuff + //double XYScale; +}; + + +#include "DasherView.inl" + + +#endif /* #ifndef __DasherView_h_ */ -- cgit v0.9.0.2