/****************************************************************************
**
** Modifications by Romain Gaucher for Modelib
**   >> http://neuroo.kouette.com/modelib
**
** One line to give the program's name and a brief idea of what it does.
** Copyright (C) 2005      Romain Gaucher, Modelib::Project port
** Copyright (C) 2004-2005 Trolltech AS.
**
** This program is free software; you can redistribute it and/or modify it
** under the terms of the GNU General Public License as published by the
** Free Software Foundation; either version 2 of the License, or (at your option)
** any later version.
**
** This program is distributed in the hope that it will be useful, but WITHOUT
** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
** FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License along with
** this program; if not, write to the
** Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**
****************************************************************************/

#ifndef HIGHLIGHTER_H
#define HIGHLIGHTER_H

#include <QHash>
#include <QString>
#include <QStringList>
#include <QTextBlock>
#include <QTextCharFormat>

class QTextDocument;

class Highlighter : public QObject
{
    Q_OBJECT
public:
    Highlighter(QObject *parent = 0);
    ~Highlighter() {};

    void addToDocument(QTextDocument *doc);
    void addMapping(const QString &pattern, const QTextCharFormat &format);

private slots:
    void highlight(int from, int removed, int added);

private:
    void highlightBlock(QTextBlock& block);

    QHash<QString,QTextCharFormat> mappings;
};

#endif
