Howto:Hacking Inkscape to add Canvas support: Difference between revisions
Line 10: | Line 10: | ||
== Background == | == Background == | ||
{{See also|FG1000}} | {{See also|FG1000}} | ||
Traditional Unix scripts can be used to extend Inkscape's functionality. Such programs read a stream of data on standard input, transform the data in some way, and then write the modified data to standard output. This is an easy way to expand Inkscape and provide custom functionality without learning the internals of Inkscape. Libraries for reading and writing SVG data exist for many programming languages, and most provide support for XML. This tutorial describes the "ins and outs" of writing one of these scripts and making it work with Inkscape's core functionality. | |||
Inkscape couuld also be used to directly establish a "connection" with FlightGear (think telnet/props, httpd etc) | Inkscape couuld also be used to directly establish a "connection" with FlightGear (think telnet/props, httpd etc) |
Revision as of 18:51, 5 January 2018
This article is a stub. You can help the wiki by expanding it. |
To create modern avionics, Inkscape is the most common tool these days, and is recommended not just for Canvas based displays, but also those using Phi [1]
Tom (Canvas) mentioned originally that for cockpit instruments using Inkscape with maybe a plugin will probably fit better.[2]
Inkscape’s extension architecture can be easily used with Python. There is also some support for other scripting languages. communications between inkscape and its extensions is fairly limited and can be made to easily work for simple command-line (CLI) appliications.
Background
Traditional Unix scripts can be used to extend Inkscape's functionality. Such programs read a stream of data on standard input, transform the data in some way, and then write the modified data to standard output. This is an easy way to expand Inkscape and provide custom functionality without learning the internals of Inkscape. Libraries for reading and writing SVG data exist for many programming languages, and most provide support for XML. This tutorial describes the "ins and outs" of writing one of these scripts and making it work with Inkscape's core functionality.
Inkscape couuld also be used to directly establish a "connection" with FlightGear (think telnet/props, httpd etc)
Extension types
The following extension types exist for Inkscape:
- input (read a file / data)
- output (write a file / data) (e.g. PropertyList/XML)
- effect (change contents in the document)
- print (output to an external device, this could be using fgfs itself)
Goals
Come up with a simple Inkscape extension that can serve as the foundation for creating Canvas based MFDs more easily. Ideally, in conjunction with Richard's MFD framework and the Emesary IPC system (eventually).
Integration
- Canvas.Text
- Canvas.Image
- Canvas.Path
- Canvas.Map (?)
- MapStructure
SVG Events
- https://www.w3.org/TR/SVG/interact.html#SVGEvents
- https://www.w3.org/TR/SVG/script.html#EventHandling
- https://www.tutorialspoint.com/svg/svg_interactivity.htm
Structure
Each MFD would be arranged using:
- an outer shell for the UI
- an inner region to display the Canvas serving as the screen
Python
Work in progress This article or section will be worked on in the upcoming hours or days. See history for the latest developments. |
Resources
- https://inkscape.org/en/develop/extensions/
- http://sugarpillstudios.com/wp/?p=142
- http://wiki.inkscape.org/wiki/index.php/Script_extensions
- http://wiki.inkscape.org/wiki/index.php/INX_extension_descriptor_format
- http://wiki.inkscape.org/wiki/index.php/Extension_subsystem
- http://wiki.inkscape.org/wiki/index.php/PythonEffectTutorial
- http://wiki.inkscape.org/wiki/index.php/Category:Extensions
Related
References
|