diff options
| author | MenTaLguY <mental@rydia.net> | 2006-01-16 02:36:01 +0000 |
|---|---|---|
| committer | mental <mental@users.sourceforge.net> | 2006-01-16 02:36:01 +0000 |
| commit | 179fa413b047bede6e32109e2ce82437c5fb8d34 (patch) | |
| tree | a5a6ac2c1708bd02288fbd8edb2ff500ff2e0916 /src/extension/implementation/plugin.h | |
| download | inkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.tar.gz inkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.zip | |
moving trunk for module inkscape
(bzr r1)
Diffstat (limited to 'src/extension/implementation/plugin.h')
| -rw-r--r-- | src/extension/implementation/plugin.h | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/src/extension/implementation/plugin.h b/src/extension/implementation/plugin.h new file mode 100644 index 000000000..88658e954 --- /dev/null +++ b/src/extension/implementation/plugin.h @@ -0,0 +1,121 @@ +/** \file + * Inkscape::Extension::Implementation::Plugin + * + * Author: Ted Gould <ted@gould.cx> + * Copyright (c) 2004-2005 + * + * This code is licensed under the GNU GPL. See COPYING for details. + */ +#ifndef __INKSCAPE_EXTENSION_IMPLEMENTATION_PLUGIN_H__ +#define __INKSCAPE_EXTENSION_IMPLEMENTATION_PLUGIN_H__ + +#include <extension/implementation/implementation.h> +#include <glibmm/module.h> +#include "plugin-link.h" + +namespace Inkscape { +namespace Extension { +namespace Implementation { + +/** \brief For the most part this is a direct steal from \c implementation.h + in that all the functions have the same prototypes. The two + added things are a pointer to the loaded module and a pointer + to the symbol table in that. */ +class Plugin : public Implementation { + /** \brief A pointer to the module created when loading the plugin. */ + Glib::Module * _module; + /** \brief The symbol table that is in the plugin. It is pulled out + here so that it doesn't have to be grabbed as often. */ + inkscape_plugin_function_table * _symTable; + +public: + Plugin(void); + + /* ----- Basic functions for all Extension ----- */ + virtual bool load(Inkscape::Extension::Extension *module); + + virtual void unload(Inkscape::Extension::Extension *module); + + /** Verify any dependencies. */ + virtual bool check(Inkscape::Extension::Extension *module); + + + /* ----- Input functions ----- */ + /** Find out information about the file. */ + virtual Gtk::Widget *prefs_input(Inkscape::Extension::Input *module, + gchar const *filename); + + virtual SPDocument *open(Inkscape::Extension::Input *module, + gchar const *filename); + + /* ----- Output functions ----- */ + /** Find out information about the file. */ + virtual Gtk::Widget *prefs_output(Inkscape::Extension::Output *module); + virtual void save(Inkscape::Extension::Output *module, SPDocument *doc, gchar const *filename); + + /* ----- Effect functions ----- */ + /** Find out information about the file. */ + virtual Gtk::Widget * prefs_effect(Inkscape::Extension::Effect *module, Inkscape::UI::View::View * view); + /* TODO: need to figure out what we need here */ + + virtual void effect(Inkscape::Extension::Effect *module, + Inkscape::UI::View::View *document); + + /* ----- Print functions ----- */ + virtual unsigned setup(Inkscape::Extension::Print *module); + virtual unsigned set_preview(Inkscape::Extension::Print *module); + + virtual unsigned begin(Inkscape::Extension::Print *module, + SPDocument *doc); + virtual unsigned finish(Inkscape::Extension::Print *module); + virtual bool textToPath(Inkscape::Extension::Print *ext); + + /* ----- Rendering methods ----- */ + virtual unsigned bind(Inkscape::Extension::Print *module, + NRMatrix const *transform, + float opacity); + virtual unsigned release(Inkscape::Extension::Print *module); + virtual unsigned comment(Inkscape::Extension::Print *module, const char * comment); + virtual unsigned fill(Inkscape::Extension::Print *module, + NRBPath const *bpath, + NRMatrix const *ctm, + SPStyle const *style, + NRRect const *pbox, + NRRect const *dbox, + NRRect const *bbox); + virtual unsigned stroke(Inkscape::Extension::Print *module, + NRBPath const *bpath, + NRMatrix const *transform, + SPStyle const *style, + NRRect const *pbox, + NRRect const *dbox, + NRRect const *bbox); + virtual unsigned image(Inkscape::Extension::Print *module, + unsigned char *px, + unsigned int w, + unsigned int h, + unsigned int rs, + NRMatrix const *transform, + SPStyle const *style); + virtual unsigned text(Inkscape::Extension::Print *module, + char const *text, + NR::Point p, + SPStyle const *style); +}; + +} /* namespace Implementation */ +} /* namespace Extension */ +} /* namespace Inkscape */ + +#endif /* __INKSCAPE_EXTENSION_IMPLEMENTATION_PLUGIN_H__ */ + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : |
