/*
 *  Copyright (C) 2009 Boudewijn Rempt <boud@valdyas.org>
 *
 *  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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 */

/**
  \mainpage libpaintop: shared functionality for brush engines

libpaintop is meant to share common classes used by Krita brush
engines, suchs as certain configuration widgets.

* Options

A paintop can make use of the predefined options provided here. An
option provides a graphical view for editing that option (as a page
in an option popup) and possible also the code necessary for applying
the effects of that option to the paint device as part of painting.

The following classes are important:

<ul>
<li>KisPaintOp: this is the engine for a certain kind of brush. It will
 be created in non-gui threads and keeps its state in a KisPaintOpSettings
 object.
<li>KisPaintOpSettings: this is a KisPropertiesConfiguration subclass that
 stores the settings for all the options that make up a paintop.
<li>Classes derived from KisPaintOpOption. These classes create a configuration
  widget. That means that you cannot construct any those objects in a
  KisPaintOp. KisPaintOps are created in non-gui threads.
<li>Classes derived from KisCurveOption. KisCurveOption classes have a generic GUI widget,
  KisCurveOptionWidget. So, in contrast to KisPaintOpOption classes, KisCurveOption
  instances can and will be created in the constructor of KisPaintOp paintops.
  This class can manage to read and write its settings directly.
<li>Classes derived from KisPaintopPropertiesBase. These classes are non-gui,
  and can read and write KisPropertiesConfiguration objects created by
  KisPaintOpOption.
</ul>

*/
// DOXYGEN_SET_IGNORE_PREFIX = Kis Ko K
