Extension loading example
I made a small code example of loading dynamic extensions to something like Inkscape. I put a Zip file of the code here:
http://troi.lincom-asg.com/~rjamison/inkscape/ext.zip
Basically this does plugin loading Netscape-style. It scans a directory for files beginning with a given prefix ("ix" in this case) and the proper suffix for a shared object (".so" on Unices, ".dll" on Win32).
It loads each object, finds a C function called CreateExtension. This is ---MUCH--- easier than linking to C++... Directly linking to a C++ resource on a shared object is fraught with DANGER!
It casts the resulting void * to an Extension object, which has virtual overloaded methods for any class extending it. It then calls a few methods on each one, just to show that it is honest.
The Makefile works on Linux. I'll make it work on Win32 later. It just needs to use the dlltool to make dll's instead of .so's. But it is Happy Hour right now, and I must keep my priorities straight!! ;-)
Hope this is helpful if considering methods of Inkscape extension.
Bob
I repeat: I'm really not schizo, responding to my own emails! ;)
I cleaned up the example, and fixed the Makefile to work on both Linux and Win32. People can try it out if they want, to see a possible way(one of many good ones, I'm sure) that a plugin architecture for extensions might be implemented.
Bob Jamison wrote:
I made a small code example of loading dynamic extensions to something like Inkscape. I put a Zip file of the code here:
http://troi.lincom-asg.com/~rjamison/inkscape/ext.zip
Basically this does plugin loading Netscape-style. It scans a directory for files beginning with a given prefix ("ix" in this case) and the proper suffix for a shared object (".so" on Unices, ".dll" on Win32).
It loads each object, finds a C function called CreateExtension. This is ---MUCH--- easier than linking to C++... Directly linking to a C++ resource on a shared object is fraught with DANGER!
It casts the resulting void * to an Extension object, which has virtual overloaded methods for any class extending it. It then calls a few methods on each one, just to show that it is honest.
The Makefile works on Linux. I'll make it work on Win32 later. It just needs to use the dlltool to make dll's instead of .so's. But it is Happy Hour right now, and I must keep my priorities straight!! ;-)
Hope this is helpful if considering methods of Inkscape extension.
Bob
I repeat: I'm really not schizo, responding to my own emails! ;)
I cleaned up the example, and fixed the Makefile to work on both Linux and Win32. People can try it out if they want, to see a possible way(one of many good ones, I'm sure) that a plugin architecture for extensions might be implemented.
Hi folks, the newly created libgnomeoffice library has a plugin system that you might want to look at too. Just to remind the inkscape win32 and OSX guys, gnomeoffice includes applications like AbiWord, Gnumeric and gnome-db which are or will shortly be cross platform.
Cheers
Martin
Bob Jamison wrote:
I made a small code example of loading dynamic extensions to something like Inkscape. I put a Zip file of the code here:
http://troi.lincom-asg.com/~rjamison/inkscape/ext.zip
Basically this does plugin loading Netscape-style. It scans a directory for files beginning with a given prefix ("ix" in this case) and the proper suffix for a shared object (".so" on Unices, ".dll" on Win32).
It loads each object, finds a C function called CreateExtension. This is ---MUCH--- easier than linking to C++... Directly linking to a C++ resource on a shared object is fraught with DANGER!
It casts the resulting void * to an Extension object, which has virtual overloaded methods for any class extending it. It then calls a few methods on each one, just to show that it is honest.
The Makefile works on Linux. I'll make it work on Win32 later. It just needs to use the dlltool to make dll's instead of .so's. But it is Happy Hour right now, and I must keep my priorities straight!! ;-)
Hope this is helpful if considering methods of Inkscape extension.
Bob
This SF.net email is sponsored by: Perforce Software. Perforce is the Fast Software Configuration Management System offering advanced branching capabilities and atomic changes on 50+ platforms. Free Eval! http://www.perforce.com/perforce/loadprog.html _______________________________________________ Inkscape-devel mailing list Inkscape-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/inkscape-devel
I've added Bob's example to the experimental CVS module as experimental/extension_example/.
Bob and Ted, could you take a peek at the libgnomeoffice plugin system and let us know if it looks like it'd give us some of the capabilities we're looking for? If it's close enough, and we can start using it now, it could get us up to where we want to be much more quickly. Could be a good win-win for both Inkscape and GO. If we can also share the ideas we worked out earlier with them, perhaps they'll be features they want to adopt anyway, which would free us up to focus on actually making extensions. :-)
Thanks, Bryce
On Tue, 13 Jan 2004 msevior@...79... wrote:
I repeat: I'm really not schizo, responding to my own emails! ;)
I cleaned up the example, and fixed the Makefile to work on both Linux and Win32. People can try it out if they want, to see a possible way(one of many good ones, I'm sure) that a plugin architecture for extensions might be implemented.
Hi folks, the newly created libgnomeoffice library has a plugin system that you might want to look at too. Just to remind the inkscape win32 and OSX guys, gnomeoffice includes applications like AbiWord, Gnumeric and gnome-db which are or will shortly be cross platform.
Cheers
Martin
Bob Jamison wrote:
I made a small code example of loading dynamic extensions to something like Inkscape. I put a Zip file of the code here:
http://troi.lincom-asg.com/~rjamison/inkscape/ext.zip
Basically this does plugin loading Netscape-style. It scans a directory for files beginning with a given prefix ("ix" in this case) and the proper suffix for a shared object (".so" on Unices, ".dll" on Win32).
It loads each object, finds a C function called CreateExtension. This is ---MUCH--- easier than linking to C++... Directly linking to a C++ resource on a shared object is fraught with DANGER!
It casts the resulting void * to an Extension object, which has virtual overloaded methods for any class extending it. It then calls a few methods on each one, just to show that it is honest.
The Makefile works on Linux. I'll make it work on Win32 later. It just needs to use the dlltool to make dll's instead of .so's. But it is Happy Hour right now, and I must keep my priorities straight!! ;-)
Hope this is helpful if considering methods of Inkscape extension.
Bob
This SF.net email is sponsored by: Perforce Software. Perforce is the Fast Software Configuration Management System offering advanced branching capabilities and atomic changes on 50+ platforms. Free Eval! http://www.perforce.com/perforce/loadprog.html _______________________________________________ Inkscape-devel mailing list Inkscape-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/inkscape-devel
This SF.net email is sponsored by: Perforce Software. Perforce is the Fast Software Configuration Management System offering advanced branching capabilities and atomic changes on 50+ platforms. Free Eval! http://www.perforce.com/perforce/loadprog.html _______________________________________________ Inkscape-devel mailing list Inkscape-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/inkscape-devel
participants (3)
-
unknown@example.com
-
Bob Jamison
-
Bryce Harrington