summaryrefslogtreecommitdiff
path: root/inputmethods/dasher/DasherModel.cpp
Side-by-side diff
Diffstat (limited to 'inputmethods/dasher/DasherModel.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/dasher/DasherModel.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/inputmethods/dasher/DasherModel.cpp b/inputmethods/dasher/DasherModel.cpp
index 0450d66..f15fa49 100644
--- a/inputmethods/dasher/DasherModel.cpp
+++ b/inputmethods/dasher/DasherModel.cpp
@@ -1,44 +1,44 @@
// DasherModel.h
//
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2001-2002 David Ward
//
/////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include "DasherModel.h"
using namespace Dasher;
using namespace std;
//////////////////////////////////////////////////////////////////////
// CDasherModel
//////////////////////////////////////////////////////////////////////
CDasherModel::CDasherModel(CDashEditbox* Editbox, CLanguageModel* LanguageModel, bool Dimensions)
- : m_editbox(Editbox), m_languagemodel(LanguageModel), m_Root(0), m_Dimensions(Dimensions)
+ : m_Dimensions(Dimensions), m_editbox(Editbox), m_languagemodel(LanguageModel), m_Root(0)
{
LearnContext = m_languagemodel->GetRootNodeContext();
// various settings
int iShift = 12;
m_DasherY = 1<<iShift;
m_DasherOY = m_DasherY/2;
m_DasherOX = m_DasherY/2;
m_dAddProb = 0.003;
}
CDasherModel::~CDasherModel()
{
m_languagemodel->ReleaseNodeContext(LearnContext);
delete m_Root; // which will also delete all the whole structure
}
void CDasherModel::Make_root(int whichchild)
// find a new root node
{
symbol t=m_Root->Symbol();
if (t) {
@@ -84,49 +84,49 @@ CDasherNode * CDasherModel::Get_node_under_crosshair()
{
return m_Root->Get_node_under(Normalization(),m_Rootmin,m_Rootmax,m_DasherOX,m_DasherOY);
}
/////////////////////////////////////////////////////////////////////////////
CDasherNode * CDasherModel::Get_node_under_mouse(myint Mousex,myint Mousey)
{
return m_Root->Get_node_under(Normalization(),m_Rootmin,m_Rootmax,Mousex,Mousey);
}
/////////////////////////////////////////////////////////////////////////////
void CDasherModel::Get_string_under_mouse(const myint Mousex,const myint Mousey, vector<symbol> &str)
{
m_Root->Get_string_under(Normalization(),m_Rootmin,m_Rootmax,Mousex,Mousey,str);
return;
}
/////////////////////////////////////////////////////////////////////////////
-void CDasherModel::Flush(const myint Mousex,const myint Mousey)
+void CDasherModel::Flush(const myint ,const myint )
{
vector<symbol> vtUnder;
Get_string_under_mouse(m_DasherOX,m_DasherOY,vtUnder);
unsigned int i;
for (i=0;i<vtUnder.size();i++) {
if (vtUnder[i]==0)
continue;
m_editbox->flush(vtUnder[i]);
}
}
/////////////////////////////////////////////////////////////////////////////
void CDasherModel::Update(CDasherNode *node,CDasherNode *under_mouse,int iSafe)
// go through the Dasher nodes, delete ones who have expired
// decrease the time left for nodes which arent safe
// safe nodes are those which are under the mouse or offspring of this node
{
// if (node->pushme )
// node->push_node();
if (node==under_mouse)
iSafe=1;
if (!iSafe)
node->Age();
@@ -163,49 +163,49 @@ void CDasherModel::Start()
//Rootparent=new DasherNode(0,0,0,therootcontext,0,0,0,Normalization(),languagemodel);
if (m_editbox) {
m_editbox->set_flushed(0);
string ContextString;
m_editbox->get_new_context(ContextString,5);
if (ContextString.size() != 0) {
m_languagemodel->EnterText(therootcontext, ContextString);
}
m_languagemodel->ReleaseNodeContext(LearnContext);
LearnContext = m_languagemodel->CloneNodeContext(therootcontext);
}
m_Root=new CDasherNode(0,0,0,0,Opts::Nodes1,0,Normalization(),m_languagemodel);
m_Root->Push_Node(therootcontext);
m_languagemodel->ReleaseNodeContext(therootcontext);
// ppmmodel->dump();
// dump();
}
/////////////////////////////////////////////////////////////////////////////
void CDasherModel::Get_new_root_coords(myint Mousex,myint Mousey)
{
- int cappedrate=0;
+ // int cappedrate=0;
double dRx=1.0,dRxnew=1.0;
double dRxnew2;
int iSteps=m_fr.Steps();
if (Mousex<m_DasherOX) {
// rx=1.0001*Ixmap[mx]/Ixmap[cx];
if (Mousex<=0)
Mousex=1;
dRx=1.0*m_DasherOX/Mousex;
dRxnew=pow(dRx,1.0/iSteps); // or exp(log(rx)/steps) - i think the replacement is faster
dRxnew2=1+(dRx-1)/iSteps;
//+(rx-1)*(rx-1)*(1.0/fr.steps()-1.0)/2/fr.steps();
const double dRxmax=m_fr.Rxmax();
if (dRxnew>dRxmax)
dRxnew=dRxmax;
// cappedrate=1;
} else {
if (Mousex==m_DasherOX)
Mousex++;
// OutputDebugString(TEXT("zoom out\n"));
@@ -222,49 +222,49 @@ void CDasherModel::Get_new_root_coords(myint Mousex,myint Mousey)
// OutputDebugString(debug);
//wsprintf(debug,TEXT("rx %f rxnew %f\n"),rx,rxnew);
//OutputDebugString(debug);
myint above=(Mousey-m_Rootmin);//*(1-rxnew)/(1-rx);
myint below=(m_Rootmax-Mousey);//*(1-rxnew)/(1-rx);
// wsprintf(debug,TEXT("above %I64d below %I64d \n"),above,below);
// OutputDebugString(debug);
myint miDistance=m_DasherY/2-Mousey;
miDistance=myint(miDistance*(dRxnew-1)/(dRx-1));
myint miNewrootzoom=Mousey+miDistance;
myint newRootmax=miNewrootzoom+myint(below*dRxnew);
myint newRootmin=miNewrootzoom-myint(above*dRxnew);
if (newRootmin<m_DasherY/2 && newRootmax>m_DasherY/2 && newRootmax<LLONG_MAX && newRootmin>LLONG_MIN) {
m_Rootmax=newRootmax;
m_Rootmin=newRootmin;
}
}
/////////////////////////////////////////////////////////////////////////////
-void CDasherModel::Tap_on_display(myint miMousex,myint miMousey, unsigned long Time)
+void CDasherModel::Tap_on_display(myint miMousex,myint miMousey, unsigned long )
// work out the next viewpoint, opens some new nodes
{
// works out next viewpoint
Get_new_root_coords(miMousex,miMousey);
// opens up new nodes
// push node under mouse
CDasherNode *under_mouse=Get_node_under_mouse(miMousex,miMousey);
under_mouse->Push_Node();
if (Framerate() > 4) {
// push node under mouse but with x coord on RHS
CDasherNode *right=Get_node_under_mouse(50,miMousey);
right->Push_Node();
}
if (Framerate() > 8) {
// push node under the crosshair
CDasherNode *under_cross=Get_node_under_crosshair();
under_cross->Push_Node();
}