Developers FAQ

From Apache OpenOffice Wiki
Jump to: navigation, search

The Developers FAQ is a collection from different questions asked by Developers who are new to

This is work in progress, the developer mentioned behind the question will write the answer soon.



  • Mechanisms of Multi-Platform support (KR)
I assume this means multiple language support, please see Working with Environments, Mappings & Objects .
  • How to communicate with other OOo components, and how to implement a bridge (KR)
There is a tutorial for implementing C++ bridges, please see . Most Binary Uno bridges are implemented in the bridges module.
Python Uno components may be accessed like any other component, e.g. by doing a "createInstance" with a service which is implemented in Python Uno.
  • The relationship between Uno, COM+, CORBA (KR)
For a comparison between Uno and CORBA please see , though Uno nowadays does support multiple inheritance. Also there was an effort, which unfortunately did not complete, do implement a Uno CORBA bridge, please see .
There is no document regarding Uno and (D)COM+. Uno has some similarities with COM+:
  • "queryInterface"
  • Language agnostic
  • "Apartments", please see the Uno Threading-Model for details.
  • Components
  • Remote transparency

Application, Writer

The ViewShell is created as indirect member of the SwPagePreview or as base class of SwWrtShell, SwFEShell, SwEditShell, SwCrsrShell as member of the SwView. This stack of shells provides access from SwView/SwPagePreview to the document. The ViewShell mostly for output (printing, painting) and the others for cursor travelling and content modification.

Application, Draw/Impress

  • The mechanism of slide show and animation (what is the difference between before and after)?
    • The slideshow itself, and all animation functionality are implemented in the Slideshow module. (What is the meeaing of "before" and "after" in the context of this question?)
  • Copy&Paste: Memory structure of clipboard in SD, difference between coping objects inside slides and coping objects from or into other applications like SW, SC?
    • Clipboard between the same application type is done by using core implementations. Clipboard between different application types is done by using xml.
  • Mechanism of designing and implementation of master page and layout style in presentation (CL)
    • Master pages and layout styles are already implemented in OOo.
  • Flash Export: (CL)
    • Difference between the export of the simple character and the complex character?
      • Simple characters are exported using the font tags of the flash format, complex characters are exported as polygons.
    • The implementation of the Polygon in VCL. Such as the EM square,Body,Ascent and Descent to realize of the glyph?
      • This question needs more data as the implementation of the Polygon in VCl itself has nothing to do with glyphs. It is only used to represend glyphs.
    • The custom animation will be lost after the slides being exported into the swf. What cause it? There is no support to export the animation, is there? Do you have any plan to consummate it? And what's your purpose in this area?
      • It is caused by the absence of an implementation that exports this particular feature. There is currently no assigned developer for the task to add this feature to the flash export. One developer from Redflag is activly contributing to the flash export.

Application, Calc

  • How are the areas for charts recognized, and how does the update notification work? (NN)
    • Note that much of this has changed for the new chart. Don't make any changes based on older versions (before SRC680m213).
    • The chart implementation uses the UNO API (XDataProvider) to get data sequence objects for each data series, and registers itself as modify listener with these objects.
    • For the time when a chart object hasn't been loaded yet, Calc has its own internal listener (ScChartListener) to load the chart if its data is changed.
  • Relationship between cells, sheets and workbooks (class diagram) (NN)
    • The core implementation of the document is class ScDocument. It has an array of pointers to ScTable (implementation of a sheet). Each sheet has a fixed-size array of ScColumn objects. Each ScColumn object holds the cells in one column.
    • The cells are implemented by base class ScBaseCell and derived classes:
      • ScNoteCell (empty except for note and listeners)
      • ScValueCell (constant numeric value)
      • ScStringCell (simple text)
      • ScEditCell (formatted or multi-paragraph text)
      • ScFormulaCell (formula)
  • Copy&Paste: What's happening on Copy directly, and later if someone pastes into same spreadsheet or other application (NN)
    • Implementation of copy for cells is at ScViewFunc::CopyToClip. The cells are copied into an internal object (ScDocument), then a ScTransferObj is created as the interface to the clipboard.
    • Pasting into Calc copies the cells directly from the internal ScDocument object. Clipboard data in other formats for external applications is created on demand by ScTransferObj (ScTransferObj::GetData).

Application, Database

  • Why was the dbase driver engineered into file_based driver? And compared with the text/csv driver, what are the advantages of it in OOo's database, and how it was being designed in OOo's database?
    • The "file" driver is not an own driver, it's a framework for, well, file-based databases, where a single file represents a table, and all such files in a given directory comprise the database. Both the text/csv driver and the dBase driver use this framework.
    • The advantage of the dBase driver over the text/csv driver is that the former can read dBase files, while the latter can't.
    • What do you mean with "was being designed"?
  • What are the project's short-term plan or the direction of development now?
    • There are two areas which we currently mainly focus on: The new report designer which will be part of 2.3, and improved programmability of Base, where the first step is to allow embedding macros in database document.
  • In the project named "Native, cross-platform access to MS Access databases", what is the current solution? Is there anyone beginning to re-engineer the MDB format himself?
    • The current solution is employing MDB-Tools, a third-party product which allows access to .mdb files. The driver based on MDB-Tools is in alpha state, and still has serious shortcomings. The project itself is currently stalled, nobody is actively working on it. Also, nobody is working on doing a reverse-engineering of the MSA file format. If somebody wants to do this, we should seriously investigate whether it makes more sense to support and improve existing reverse engineering efforts, namely MDB-Tools.

Application, Chart2

General Questions

  • Which are the common threads started at start up time and used by all OOo applications at runtime, and what are their functions? (KR)?
A first over regarding the threads can be found here: Effort/Implement_Basic_Threading-Architecture#Threads More to come ...
  • Structure of VCL? See Sort_of_documentation_about_VCL_around_Native_Mac_OS_X_port
    • A general overview about VCL was created by Eric Bachard, please have a look here
  • Text rendering process
  • Memory Management (MT/MHU)
  • How to improve stability, and where to start? Beside doing thorough QA, you might use tools like Valgrind or BoundsChecker
  • How to improve performance, and where to start? Use a profiler to analyze the runtime behavior of the code that you want to improve.
  • Which code of OOo is responsible for the VBA Macro parse? How are they implemented?
    • This is done by a hard coded parser in basic/source/comp
  • How is the code implemented to fulfill the specification of Unicode and gb2312 (SB): Follow the source code links for “UTF7“ and “UTF8“ (Unicode) and “EUC_CN” (GB2312) in sal/textenc/textenc.cxx:1.6.
  • How/where is the Boost library used? See boost for an overview.
  • The process of SVG protraction and SVG parse. The relationship between controller protraction and the resource of the controller. (SJ)
  • Mozilla and ActiveX plugins (MAV)
  • Which internet protocols are supported in OOo, and what can be improved to the network ability of OOo? (KSO)

Feature Questions

  • Currently a document can only be processed by one of the OOo applications - what about having just one application processing all kind of documents?
  • Are there any plans to integrate a desktop search engine? (Could be done as an extension)
  • Any plans to introduce classes comparable to CObject and CWinApp in MFC? (???)
Personal tools