Listing 3: Excerpt from delta.h
class DeltaControlLine : public DeltaControl, public CPoint { public: DeltaControlLine(CPoint *From, CPoint *To); DeltaControlLine(CPoint *From, CPoint *To, CPoint *Offset); virtual ~DeltaControlLine() {}; protected: virtual void Init(CPoint *From, CPoint *To); virtual void OnMajorChange(int Current) {*m_PMajor=Current;}; virtual void OnMinorChange(int Current) {*m_PMinor=Current;}; long *m_PMajor; long *m_PMinor; }; exceprt from delta.cpp DeltaControlLine::DeltaControlLine(CPoint *From, CPoint *To) { Init(From, To); } DeltaControlLine::DeltaControlLine(CPoint *From, CPoint *To, CPoint *Offset) { Init(From, To); CPoint::Offset(*Offset); m_Major.current = *m_PMajor; m_Minor.current = *m_PMinor; } void DeltaControlLine::Init(CPoint *From, CPoint *To) { CPoint p = *From; p -= *To; if (abs(p.x) > abs(p.y)) { SetFrom(From->x, From->y); SetTo(To->x, To->y); m_PMajor = &x; m_PMinor = &y; } else { SetFrom(From->y, From->x); SetTo(To->y, To->x); m_PMajor = &y; m_PMinor = &x; } x = From->x; y = From->y; } End of Listing