Hello,
I was wondering if I could add partial 3DPDF (U3D) support to Evince.
The reference library out there on SourceForge by Intel, namely the Universal 3D Sample Software, seemed too complex to me,
so I am working on my own parser with limited functionality (without subdivision surface and adaptive tessellation) which is expected to eventually fit within 3,000 slocs as a source repo and 200KiB as an AMD64 Linux binary.
There is actually another 3DPDF format called PRC which is newer and better documented than U3D.
I find many similarities between PRC and U3D which could make it easier for future developers to add PRC support to perfect the 3DPDF conformance,
if a foundation for generic 3D preview is neatly constructed.
The problem is that I am a newbie to open source projects and I do not know where to start.
I will be very glad it you could lend me a helping hand, and be kind to answer a few questions about Evince.
1. Is it technically possible to have an OpenGL overlay on the document window?
All I need is a fixed function graphics viewport which would hopefully not require any Extension Wranglers.
PRC viewer might also be written without programmable shaders, though I am not quite convinced about that part.
2. Do I need to make the code independent of STL?
I could not find any example of libstdc++ use inside the Evince source code.
Is it permissible to heavily depend on the library for core algorithms?
I am asking this question because there seemed to be custom containers for general purpose implemented in the case of poppler.
Is STL being avoided in such projects, for security or license reasons?
3. What level of security is expected?
A lethal vulnerability issue was once reported related to CLoD Progressive Mesh (it is by far the most complicated part of the format) support by the embedded U3D viewer inside Acrobat Reader.
I personally think reaching a high level of security with any malformed input (malicious Progressive Meshes
especially) would take a lot of time, partly because the official documentation is a complete crap when it comes to how they should be handled.
(As many others point out, U3D specification is full of unreason and imperfection, which I suspect is why they abandoned the format and moved to PRC.)
I wanted to ask if I need to protect the parser against all kinds of insanity. (If I manage to commit patches and the same thing happens to Evince, will I be blamed seriously? I am not saying that security is less important in Evince.)
I am always grateful about how Evince works flawlessly and I have deep respect to all those who contribute to the software.
Thank you.
--
Hiroka IHARA
Department of Information and Communication Engineering, The University of Tokyo
PC: ihara_h live jp