GSoC Final Report: Bookshelf and Tiled Rendering for Evince

Hi Everyone,

It seems like this summer passed by a bit quicker than the rest. I suspect its because of the great time I had, working with you people. Then there was also the week at GUADEC which just flew by.

Now, for the final report for the Google Summer of Code, here is a quick summary of the work that has been done over the summer.

For the Google Summer of Code, I had set up an Evince repo on Gitorious and all the code can be found on it – here. There were two parts to my Google Summer of Code project, and I’ll summarise the work done on both separately as they are quite independent of each other.

Bookshelf-like view for recent documents

  • This has been discussed in Bug 633501 and the brave can head over to the ‘recentView‘ branch on my Gitorious repo to try it out.
  • Sadly, I could not get it ready for 3.10 release since some some changes are needed in the implementation. I had to move on to tiled rendering since that is considerably more important.

Support for tiled rendering

  • The need for this was due to Bug 303365 – increase zooming level
  • The latest implementation, can be tried out from the ‘tiling_clean‘ branch of my Gitorious repo.
  • Rotations, selections, and all the various modes – Dual / Single, Continous/Non-continuous are supported.
  • Some features like preloading need to be reworked as it would work a bit differently for tiles. I have worked on it, in the ‘tiling_clean_experimental‘ branch, but it isn’t complete.
  • Similarly, now that we can render tiles, the limit for maximum zoom needs to be decided differently.
  • Presently, in the implementation, the tile sizes are small. However, in practice they will be at least as big as the screen size. So, some logic needs to be decided for setting the tile size.

Screenshot of page 297 of PDFReference viewed in EvinceScreenshot of page 297 of PDFReference viewed in EvinceIn the above screenshot we can see Evince displaying a page at a quite high zoom level with reasonable memory usage.

Well, that’s pretty much what I’ve been upto, over the summer. A more detailed report can be found on my GSoC Project’s wiki page. I will surely be sticking around and plan to get the work merged in 3.12. With the help from all you people, this Google Summer of Code has been a unique experience for me.

I would like to conclude by thanking the GNOME Foundation for trusting me with this project, and also for the incredible experience I had at GUADEC 2013. Looking forward to seeing all of you again, next year at Strasbourg!

GNOME Foundation sponsorship badge

Thanks to the GNOME Foundation!

Bookshelf for Evince

It’s been quite some time since I have posted about my work. Well, I guess its fair time I updated you guys about what I have been working on.

I have got a basic bookshelf working now and hopefully, just a few improvements need to be made before its ready for release. (Yay!)

Screenshot of the bookshelf view

The button to go back to the bookshelf

I think it would be appropriate to describe the usage a bit. So, when you start Evince without any document, you would be greeted with the above view. It looks very similar to the view presented in gnome-documents and some of the code from libgd has also been used. The view presents you with 20 documents you have recently opened with Evince. You can click any one to open it in the current window.

Next, I think you might have noticed the button on the top left. It is for going back to the bookshelf while viewing a document. The current document is not closed, it is just hidden from view, and will be marked in the bookshelf. Now when a user clicks on any other document in the bookshelf, it will open in a new window.

Work Done

  • Bookshelf view of recent documents is ready
  • Stored metadata and thumbnails so that they don’t need to be regenerated every time we need to display the bookshelf.
  • A button to switch between bookshelf and open document


  • Mark the currently open document in the bookshelf
  • Make the loading of documents parallel

For those who want to try it out, checkout the ‘bookshelf’ branch from the repo I have set up here:

Best of Luck fellow GSoC-ers !

Hi Everyone,
It’s 17th June, and the coding period is officially on! I wish all my fellow GSoC-ers best of luck for the summer ahead.

I will be utilizing this blog to post updates about my project with GNOME – “Add Bookshelf View and Tiling Support to Evince”.

So, stay tuned, and have loads of fun!