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!


My First GUADEC!

I must say, I am really lucky to be working for GNOME for this Google Summer of Code. After all, there is the extra perk of getting to attend GUADEC!

It was an excellent opportunity to meet the people whom I had just communicated with on IRC.

Some of the highlights of my GUADEC experience:

  • Party at Fléda on the first evening.
Foosball at Fléda

Foosball at Fléda!

  • Got Cosimo to hack around a bit in GTK and Nautilus
  • Attended as many talks as one could. Managed this by volunteering as session chair in talks which I anyway wanted to attend :). I was going to enumerate the talks which I liked but then I realized that its too long a list. I found all of them interesting, though I must admit that I didn’t really understand everything :P.
Jan-Christoph Borchardt talking about GNOME and OwnCloud at GUADEC

Jan-Christoph Borchardt’s talk about GNOME and OwnCloud

  • Attended the GNOME Foundation AGM!
Marina showing the latest yearbook at the AGM

Marina showing off the latest yearbook at the AGM

  • Saw cool stuff like the quadcopter, 3-d printer and demo of Tizen.
Quadcopter at GUADEC

The Quadcopter grabbing all eyes between talks

  • Got a nice historical tour of Brno thanks to the very knowledgeable and energetic Canadian guide – Don Sparling.
Don Sparling

Don Sparling, our awesome guide for the tour of Brno

  • Met co-interns and other attendees, and made many new friends.
  • Gave a lightning talk about my GSoC work!

Thanks to Ana Rey for this cool pic!

To conclude, I would like to thank everyone involved in the organization of GUADEC this year. All the arrangements were really meticulous!

I also want to thank everyone who attended GUADEC because after all, its the active participation of you guys which makes GUADEC meaningful and fun!

Finally, I am really grateful to GNOME Foundation for sponsoring me. Without their support, I wouldn’t have been able to attend GUADEC this year.

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!