Listing 8: Class CIBLine is derived from DeltaControlLine

class CIBLine : public DeltaControlLine
{
public:
    CIBLine(CPoint *From, CPoint *To, CPoint *Input,
        CIBHelper *Source, CPoint *Offset,
        CIBHelper *Dest);
    virtual ~CIBLine() {};
protected:
    virtual void OnMajorChange(int Current);
    virtual void OnMinorChange(int Current);
private:
    void PutPixel();
    CPoint *m_Input;
    CIBHelper *m_Source;
    CIBHelper *m_Dest;
};

CIBLine::CIBLine(CPoint *From, CPoint *To,
        CPoint *Input,  CIBHelper *Source, CPoint *Offset,
        CIBHelper *Dest)
            : DeltaControlLine(From, To, Offset) {
    m_Input = Input;
    m_Source = Source;
    m_Dest = Dest;
    // output the first pixel
    PutPixel();
}

void CIBLine::OnMajorChange(int Current) {
    DeltaControlLine::OnMajorChange(Current);
    PutPixel();
}

void CIBLine::OnMinorChange(int Current) {
    DeltaControlLine::OnMinorChange(Current);
    PutPixel();
}

void CIBLine::PutPixel() {
    m_Dest->PutPixel(this, m_Source->GetPixel(m_Input));
}

— End of Listing —