+/* $Id$
+
+This file is part of R²C²
+Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa
+Distributed under the GPL
+*/
+
#include <cmath>
#include <GL/gl.h>
#include "designer.h"
#include "measure.h"
using namespace std;
-using namespace Marklin;
+using namespace R2C2;
using namespace Msp;
Measure::Measure(Designer &d):
void Measure::start()
{
- state=STARTING;
+ state = STARTING;
}
void Measure::snap_to_tracks(Point &pt, float &dir)
{
- const set<Track *> <racks=designer.get_layout()->get_tracks();
+ const set<Track *> <racks = designer.get_layout().get_tracks();
for(set<Track *>::const_iterator i=ltracks.begin(); i!=ltracks.end(); ++i)
if((*i)->snap(pt, dir))
return;
if(btn==1)
{
- spoint=Point(gx, gy, 0);
- sdir=0;
+ spoint = Point(gx, gy, 0);
+ sdir = 0;
snap_to_tracks(spoint, sdir);
- state=ACTIVE;
+ state = ACTIVE;
}
else if(btn==3)
{
if(state==ACTIVE)
- state=STARTING;
+ state = STARTING;
else
{
- state=NONE;
+ state = NONE;
signal_done.emit();
}
}
if(!state)
return;
- pointer=Point(gx, gy, 0);
- float dir=sdir;
+ pointer = Point(gx, gy, 0);
+ float dir = sdir;
snap_to_tracks(pointer, dir);
if(state!=STARTING)
{
Point delta(pointer.x-spoint.x, pointer.y-spoint.y, 0);
- float c=cos(sdir);
- float s=sin(sdir);
+ float c = cos(sdir);
+ float s = sin(sdir);
- par_dist=delta.x*c+delta.y*s;
- perp_dist=delta.x*s-delta.y*c;
+ par_dist = delta.x*c+delta.y*s;
+ perp_dist = delta.x*s-delta.y*c;
- adiff=dir-sdir+M_PI;
+ adiff = dir-sdir+M_PI;
while(adiff<-M_PI)
- adiff+=M_PI*2;
+ adiff += M_PI*2;
while(adiff>M_PI)
- adiff-=M_PI*2;
+ adiff -= M_PI*2;
signal_changed.emit();
}
glBegin(GL_QUAD_STRIP);
for(unsigned i=0; i<=16; ++i)
{
- float x=cos(i*M_PI/8)*0.005;
- float y=sin(i*M_PI/8)*0.005;
+ float x = cos(i*M_PI/8)*0.005;
+ float y = sin(i*M_PI/8)*0.005;
glVertex3f(x, y, 0);
glVertex3f(x, y, 0.01);
}
if(state==ACTIVE)
{
- float c=cos(sdir);
- float s=sin(sdir);
+ float c = cos(sdir);
+ float s = sin(sdir);
glBegin(GL_QUAD_STRIP);
glVertex3f(0, 0, 0);
glVertex3f(0, 0, 0.01);