About plugins

Plugins are components with a GUI that perform some action for Krita.
Note that plugins are only loaded when a KisView is constructed; note 
also that every plugin is reloaded when a new KisView is created.

Plugins are _not_ allowed to depend on each other. You may _not_
#include a header file from a plugin anywhere but in that same plugin.
You can however choose to group a cluster of related functions in
one plugin, like with the selection tools.

There are several kinds of plugins for Krita:

* Tools

    Tools have the Krita/Tool servicetype. A tool plugin registers 
    the tool factories it provides with the tool registry. A tool must descend
    from the KisTool interface. There are several base classes for 
    specialized tools, like painting and non painting tools.

* Paintops

    Paintops implement methods for changing pixels that can be used
    by painting tools. Examples are brush, pen, airbrush. Paintop plugins
    have the Krita/Paintop servicetype, register paintop factories they
    provide the paintop registry. Paintops inherit KisPaintOp.
    
* Filters

    Filters implement methods of changin a rectangular area of pixels. Filter
    plugins have the Krita/Filter servicetype and are registered with
    the filter registry. A filter inherits the KisFilter class and may
    provide a configuration widget and a configuration object.

* Extensions

    Extensions are loaded by every view instance. They provide user interface
    elements such as dialog boxes and wizards. Their parent is KisView and
    they provide an .rc file to merge their gui with the view gui. Extensions
    have the servicetype Krita/Plugin. They are not loaded automatically by
    the KParts mechanism; please do not create ordinary kparts that are to
    be loaded by the Krita view since KParts are not versioned.
