GSoC 2008 UniConvertor and GraphicsMagick integration: Difference between revisions
C schaefer (talk | contribs) No edit summary |
m (Formating) |
||
Line 1: | Line 1: | ||
=Rationale= | |||
Rationale | |||
Scribus is a reputable DTP application and therefore has to deal with many | Scribus is a reputable DTP application and therefore has to deal with many | ||
different file formats. While it already supports quite a few formats, some | different file formats. While it already supports quite a few formats, some | ||
Line 9: | Line 7: | ||
same for raster formats[2]. | same for raster formats[2]. | ||
Motivation | =Motivation= | ||
My motivation for doing this project is that I think it will be a huge benefit | My motivation for doing this project is that I think it will be a huge benefit | ||
for Scribus and I like this kind of work (gluing two programs together). I did | for Scribus and I like this kind of work (gluing two programs together). I did | ||
Line 17: | Line 14: | ||
good or even better than last time. | good or even better than last time. | ||
Overview | =Overview= | ||
I'll write an import/export filter that uses UniConverter and GraphicsMagick to | I'll write an import/export filter that uses UniConverter and GraphicsMagick to | ||
read and write most of the formats supported by these programs. | read and write most of the formats supported by these programs. | ||
Details | =Details= | ||
==UniConverter== | |||
===Previous experience=== | |||
I've not worked with UniConverter before, so this information is based on | I've not worked with UniConverter before, so this information is based on | ||
a short research only and the implementation details are likely to change. | a short research only and the implementation details are likely to change. | ||
===Implementation=== | |||
The import plug-in will either call UniConverter directly and get "raw" commands | The import plug-in will either call UniConverter directly and get "raw" commands | ||
to create the vector objects or it will use UniConverter to convert to an | to create the vector objects or it will use UniConverter to convert to an | ||
Line 39: | Line 34: | ||
so the user gets a warning. | so the user gets a warning. | ||
===Existing work=== | |||
The SVG plugin can serve as a base for the new import plug-in. | The SVG plugin can serve as a base for the new import plug-in. | ||
===User interface=== | |||
The list in File->Import gets pretty long, so it might be good to merge these | The list in File->Import gets pretty long, so it might be good to merge these | ||
entries to a better interface, perhaps with auto-detection of the file format and manual override. | entries to a better interface, perhaps with auto-detection of the file format and manual override. | ||
==GraphicsMagick== | |||
===Previous experience=== | |||
I have used ImageMagick, the base of GraphicsMagick, a lot. I customized the | I have used ImageMagick, the base of GraphicsMagick, a lot. I customized the | ||
bash script based dvd-menu-tool dvdwizard[3] at a time when it was less powerful | bash script based dvd-menu-tool dvdwizard[3] at a time when it was less powerful | ||
Line 57: | Line 52: | ||
this part of the Scribus code when I was working on my LaTeX frames project. | this part of the Scribus code when I was working on my LaTeX frames project. | ||
===Implementation=== | |||
As GraphicsMagick deals with raster graphics, an import filter for image frames | As GraphicsMagick deals with raster graphics, an import filter for image frames | ||
is required here. With libgraphicsmagic++, a C++ library for the GraphicsMagick | is required here. With libgraphicsmagic++, a C++ library for the GraphicsMagick | ||
functions, the integration should be pretty easy. | functions, the integration should be pretty easy. | ||
===Existing work=== | |||
The QT image file loaders can serve as a base. | The QT image file loaders can serve as a base. | ||
===User interface=== | |||
No new user interface is required, but a way to show previews for the new | No new user interface is required, but a way to show previews for the new | ||
file types has to be found. | file types has to be found. | ||
==Other changes== | |||
===Build system=== | |||
The build system has to be updated to look for UniConverter and GraphicsMagick. | The build system has to be updated to look for UniConverter and GraphicsMagick. | ||
Benefits to Scribus | =Benefits to Scribus= | ||
By using these libraries it is no longer necessary to write a new filter for | By using these libraries it is no longer necessary to write a new filter for | ||
each new file format, but we can benefit from the formats added to shared | each new file format, but we can benefit from the formats added to shared | ||
Line 81: | Line 75: | ||
0.46 [5]. As a result, new file formats added to the external libraries should be usable in Scribus faster. | 0.46 [5]. As a result, new file formats added to the external libraries should be usable in Scribus faster. | ||
Use cases | =Use cases= | ||
Importing all kinds of vector and raster formats. | Importing all kinds of vector and raster formats. | ||
Deliverables | =Deliverables= | ||
* Import plug-in for UniConverter | |||
* Export plug-in for UniConverter | |||
* Import only plug-in for GraphicsMagick (or integrated into the main code) | |||
* Better structured "File->Import" menu if found to be required | |||
* Documentation | |||
Timeline | =Timeline= | ||
* April 14: Accepted student proposals announced on the Google Summer of Code | * April 14: Accepted student proposals announced on the Google Summer of Code home page. Community Bonding Period: Students get to know mentors, read documentation, get up to speed to begin working on their projects. | ||
''I can start coding at this point, as I am already familiar with the Scribus development process.'' | |||
* May 26: Students begin coding for their GSoC projects; | * May 26: Students begin coding for their GSoC projects; | ||
''At this point I should have read the required documentation and probably the basic functionality for UniConverter ready.'' | |||
* July 7: Mentors and students can begin submitting mid-term evaluations. | * July 7: Mentors and students can begin submitting mid-term evaluations. | ||
''UniConverter should be fully working now and work on GraphicsMagick is started or about to be started.'' | |||
* July 20: End of semester | * July 20: End of semester | ||
''Around this time there will be some exams at university, so expect me to be learning a bit more and coding a bit less. No exact dates are available yet.'' | |||
* August 11: Suggested 'pencils down' date. Take a week to scrub code, write | * August 11: Suggested 'pencils down' date. Take a week to scrub code, write tests, improve documentation, etc. | ||
''Now the GraphicsMagick part should be completed too. The time lost with the exams should be no problem, as this part of the work should take much less time and I'll also use the "Community Bonding Period" for coding.'' | |||
* August 18: Firm 'pencils down' date. Mentors, students and organization | * August 18: Firm 'pencils down' date. Mentors, students and organization administrators can being submitting final evaluations to Google. | ||
Links | =Links= | ||
* [1] http://sk1project.org/modules.php?name=Products&product=uniconvertor | |||
[1] http://sk1project.org/modules.php?name=Products&product=uniconvertor | * [2] http://www.graphicsmagick.org/ | ||
[2] http://www.graphicsmagick.org/ | * [3] http://dvdwizard.wershofen.net/ | ||
[3] http://dvdwizard.wershofen.net/ | * [4] http://www.inkscape.org | ||
[4] http://www.inkscape.org | * [5] http://wiki.inkscape.org/wiki/index.php/ReleaseNotes046 | ||
[5] http://wiki.inkscape.org/wiki/index.php/ReleaseNotes046 | |||
Revision as of 23:43, 28 March 2008
Rationale
Scribus is a reputable DTP application and therefore has to deal with many different file formats. While it already supports quite a few formats, some others are still not or incompletely supported. UniConverter, which is "a universal vector graphics translator"[1] can help for vector formats and GraphicsMagick, which is a branch of the well-known ImageMagick does the same for raster formats[2].
Motivation
My motivation for doing this project is that I think it will be a huge benefit for Scribus and I like this kind of work (gluing two programs together). I did this last year with LaTeX and from the feedback I received, it was a great success. So I want to do something similar this year and hope it will be as good or even better than last time.
Overview
I'll write an import/export filter that uses UniConverter and GraphicsMagick to read and write most of the formats supported by these programs.
Details
UniConverter
Previous experience
I've not worked with UniConverter before, so this information is based on a short research only and the implementation details are likely to change.
Implementation
The import plug-in will either call UniConverter directly and get "raw" commands to create the vector objects or it will use UniConverter to convert to an intermediate format such as SVG and then read this format. The same applies to the export filter, but here it might be possible that some of the feature supported by Scribus are not supported by the output format, so the user gets a warning.
Existing work
The SVG plugin can serve as a base for the new import plug-in.
User interface
The list in File->Import gets pretty long, so it might be good to merge these entries to a better interface, perhaps with auto-detection of the file format and manual override.
GraphicsMagick
Previous experience
I have used ImageMagick, the base of GraphicsMagick, a lot. I customized the bash script based dvd-menu-tool dvdwizard[3] at a time when it was less powerful than today. I had to rewrite a lot of the graphics code which relies on ImageMagick. I also have a bit of experience with image frame loaders, because I came across this part of the Scribus code when I was working on my LaTeX frames project.
Implementation
As GraphicsMagick deals with raster graphics, an import filter for image frames is required here. With libgraphicsmagic++, a C++ library for the GraphicsMagick functions, the integration should be pretty easy.
Existing work
The QT image file loaders can serve as a base.
User interface
No new user interface is required, but a way to show previews for the new file types has to be found.
Other changes
Build system
The build system has to be updated to look for UniConverter and GraphicsMagick.
Benefits to Scribus
By using these libraries it is no longer necessary to write a new filter for each new file format, but we can benefit from the formats added to shared libraries. For example Inkscape[4] also uses UniConverter since version 0.46 [5]. As a result, new file formats added to the external libraries should be usable in Scribus faster.
Use cases
Importing all kinds of vector and raster formats.
Deliverables
- Import plug-in for UniConverter
- Export plug-in for UniConverter
- Import only plug-in for GraphicsMagick (or integrated into the main code)
- Better structured "File->Import" menu if found to be required
- Documentation
Timeline
- April 14: Accepted student proposals announced on the Google Summer of Code home page. Community Bonding Period: Students get to know mentors, read documentation, get up to speed to begin working on their projects.
I can start coding at this point, as I am already familiar with the Scribus development process.
- May 26: Students begin coding for their GSoC projects;
At this point I should have read the required documentation and probably the basic functionality for UniConverter ready.
- July 7: Mentors and students can begin submitting mid-term evaluations.
UniConverter should be fully working now and work on GraphicsMagick is started or about to be started.
- July 20: End of semester
Around this time there will be some exams at university, so expect me to be learning a bit more and coding a bit less. No exact dates are available yet.
- August 11: Suggested 'pencils down' date. Take a week to scrub code, write tests, improve documentation, etc.
Now the GraphicsMagick part should be completed too. The time lost with the exams should be no problem, as this part of the work should take much less time and I'll also use the "Community Bonding Period" for coding.
- August 18: Firm 'pencils down' date. Mentors, students and organization administrators can being submitting final evaluations to Google.