1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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 :
|