[sugar] eBook ideas
Sat Mar 31 00:25:31 EDT 2007
Marco Pesenti Gritti wrote:
> what is the internet archive?
The Internet Archive (http://www.archive.org) is scanning many books and
putting them online as PDF files. They also archive other things like
web pages and music and software, but this project is to make a good
eBook reader for the scanned books. They are available in several
formats including PDF and DJVW. We considered using DJVW (which evince
supports), but decided to focus on PDF, because it is more widely used
> This is not quite correct. The xbook activity binds the evince view API,
> it's not a separate process.
I didn't realize evince was usable as a library integrated with Python
-- that's great!
I wasn't able to find the evince module in the sugar source tree, but
I'm not completely up to date.
Has it been checked in recently, or can I download it from somewhere?
> I think binding poppler is probably the right thing to do now, given the
> Ebook requirements and how the sugar graphics API is shaping up.
Yes, let's give Cairo lots of exercise, and make it better, smaller and
Poppler calls Cairo directly to do the rendering, without using any
> I'm not that happy about SWIG, since poppler has a glib API and most of
> sugar API is gobject based. Though using poppler directly might give us
> more flexibility. In the end I don't think it's a big issue, so I'm fine
> with whatever it's easier for you.
I'm using SWIG because I'm familiar with it, but I haven't figured out
the glib python wrapping stuff yet.
If glib wrappers would "just work" without much more work, then it
sounds like that would be worth doing.
Is there a simple project that uses glib python bindings, that I can use
as an example?
Where's can I find some more documentation about glib python wrappers?
> Awesome! Do you have a public repository for this work? As soon as it
> doesn't regress xbook functionalities I'd like to get it into the
I haven't packaged it up and put it into a repository yet, but that's
high on my todo list.
I have my own svn server that I can publish the code on, but I'd be glad
to check them into the official repository, once they projects configure
nicely and don't break anything.
It's factored into two projects: the python poppler module and the sugar
The poppler module shouldn't effect xbook, but we should figure out
whether it's best for me to integrate the work I'm doing for the
Internet Archive with the existing xbook activity, or make a separate
activity for now (based on xbook), and merge them later (or not).
I'm going to be adding some Internet Archive library browsing, searching
and ebook downloading functionality, using RSS feeds.
Since search results are returned as RSS: Do you think I should I try to
use penguintv to browse RSS feeds of book search results? Run it as a
separate activity that switches back to the ebook reader when you click
on a link to a pdf file? Or would it be easier (and better integrated)
to embed the rss reader in the ebook interface? Is there a way to
register the ebook reader activity as the handler of the pdf content
type, so both the web browser and rss reader will switch to it to read
Now that we can read SVG as well as PDF (and PNG of course) and render
it with Cairo, it would be nice to have a generic high-level
media-type-independent interface, like a resource manager, that knows
how to load, measure and render icons (or pages), and deal with caching.
I ran across something like that, IconCache in sugar.graphics.canvasicon
module, but currently it only knows about svg files.
IconCache could be refactored and extended into a resource manager that
supports any kind of image, and optionally support caching scaled
bitmaps as well as direct Cairo rendering. It could support icons with
multiple frames (for pdf document pages, animated gif frames, etc), and
application could tell it how aggressively to cache bitmaps and data
structures in memory (or turn off caching so it always reads the file
from disk). The operating system should notify applications when memory
or disk space is low, and the resource manager can flush its caches as
More information about the Sugar-devel