Running ======= Compilation: g++ pdfcube.cc `pkg-config pigment-0.3 poppler-glib poppler gdk-pixbuf-2.0 glib-2.0 --cflags --libs` Usage ./a.out file://`pwd`/test3.pdf Animations ========== Right now it's all a mess. There is a sketch of an api proposal to be used by some kind of animation strategy and not much more. In the main I'm experimenting with cover flow animations. I think one "pretty" way of doing cover flow is to align the slides along (tangent to, seen from above) a function like the following (gnuplot). > unset parametric > plot [-500:500] +1/((sqrt(sqrt(-x)))+1), +1/((sqrt(sqrt(x)))+1/1) While the distance from the center of the scene should be: > set parametric > plot sqrt(t),0 with linespoints Once the key point of the animation are choosen (some scaling is likely to be needed to achieve good results) the strategy can simply move the slides linearly between points: I think this linearization will not be noted by the eye. Animations should be put in some kind of class or module so that they can be easily added/changed. Note: if we want to do some rotations and translations with linear algebra a library such as Boost uBlas could be helpful. PDF Animations Mapping ====================== POPPLER_PAGE_TRANSITION_REPLACE ------------------------------- Plain switch. POPPLER_PAGE_TRANSITION_SPLIT ----------------------------- Some kind of page split. Think of having two halves of the page with complementary alpha channels. \ \ \+-----+ |\ |\ | \ | \ | \ | \ \ | \ | \ | \| \+-----+\ \ \ POPPLER_PAGE_TRANSITION_BOX --------------------------- This can be mapped to the cube. POPPLER_PAGE_TRANSITION_FLY --------------------------- This could be some slide fading while rapidly going towards the viewer. POPPLER_PAGE_TRANSITION_PUSH ---------------------------- Could be the opposite of fly. POPPLER_PAGE_TRANSITION_FADE ---------------------------- Normal fading The following transition codes are free for future usages: POPPLER_PAGE_TRANSITION_BLINDS, POPPLER_PAGE_TRANSITION_WIPE, POPPLER_PAGE_TRANSITION_DISSOLVE, POPPLER_PAGE_TRANSITION_GLITTER, POPPLER_PAGE_TRANSITION_COVER, POPPLER_PAGE_TRANSITION_UNCOVER