| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
| <HTML> |
| <head> |
| <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8"> |
| <TITLE>Graphic System Layer Project</TITLE> |
| <META NAME="GENERATOR" CONTENT="StarOffice 9 Beta (Unix)"> |
| <META NAME="CREATED" CONTENT="20001013;13575900"> |
| <META NAME="CHANGED" CONTENT="20080722;11455800"> |
| <META NAME="Info 1" CONTENT=""> |
| <META NAME="Info 2" CONTENT=""> |
| <META NAME="Info 3" CONTENT=""> |
| <META NAME="Info 4" CONTENT=""> |
| </head> |
| <body LANG="de-DE" BGCOLOR="#ffffff" DIR="LTR"> |
| <H1 LANG="en-US">Graphic System Layer Project</H1> |
| <P><SPAN LANG="en-US"><B>Project Lead:</B></SPAN><SPAN LANG="en-US"> |
| <A HREF="mailto:pl@openoffice.org">Philipp Lohmann</A></SPAN></P> |
| <P><SPAN LANG="en-US"><B>Co Lead: </B></SPAN><A HREF="mailto:hdu@openoffice.org"><SPAN LANG="en-US"><SPAN STYLE="font-weight: normal">Herbert Dürr</SPAN></SPAN></A></P> |
| <P LANG="en-US">The <B>Graphic System Layer</B> <B>(GSL)</B> project |
| is an umbrella project to provide graphic output on different |
| devices. Graphic output refers to a range of operations starting from |
| simple line drawing to complex raster operations. Furthermore it |
| contains a set of widgets and different APIs to make use of them. The |
| most prominent examples for devices are of course computer displays |
| and printer. |
| </P> |
| <P LANG="en-US">The <B>Visual Class Library</B> <B>(VCL)</B> is the |
| most prominent module of the project. It contains implementations for |
| fundamental concepts like windows, fonts, bitmaps, widgets (buttons, |
| menus, ...) and so on. The infrastructure VCL provides is heavily |
| used throughout all higher level infrastructure layer and the |
| different OpenOffice.org application modules. VCL lets OpenOffice.org |
| look and feel the way it does. VCL provides an external operating |
| system independent API to higher level modules an internal API for |
| implementing those in a system dependent manner. Current |
| implementations provide support for Microsoft Windows and |
| Unix/XWindow based systems. The latter is used for the Mac OS X port |
| as well (A further project uses Java for implementation, however it's |
| not hosted on OpenOffice.org). If you plan to port OpenOffice.org to |
| a new platform then it's probably worth to have a look at VCL. |
| </P> |
| <P LANG="en-US">GSL and VCL are sometimes used as synonyms which is |
| way too simple. GSL contains a lot more modules than just VCL, a |
| complete list is given below. |
| </P> |
| <TABLE WIDTH=100% BORDER=0 CELLPADDING=4 CELLSPACING=0 BGCOLOR="#ffffff"> |
| <COL WIDTH=46*> |
| <COL WIDTH=210*> |
| <TR> |
| <TD COLSPAN=2 WIDTH=100% BGCOLOR="#00315a"> |
| <P LANG="en-US" ALIGN=CENTER><FONT COLOR="#ffffff"><FONT FACE="Arial, Helvetica"><FONT SIZE=2><B>Modules |
| in the Graphic System Layer Project </B></FONT></FONT></FONT> |
| </P> |
| </TD> |
| </TR> |
| <TR> |
| <TH WIDTH=18% BGCOLOR="#99ccff"> |
| <P LANG="en-US" ALIGN=CENTER><FONT COLOR="#00315a"><FONT FACE="Arial, Helvetica"><FONT SIZE=2><B>Module |
| </B></FONT></FONT></FONT> |
| </P> |
| </TH> |
| <TH WIDTH=82% BGCOLOR="#99ccff"> |
| <P LANG="en-US" ALIGN=CENTER><FONT COLOR="#00315a"><FONT FACE="Arial, Helvetica"><FONT SIZE=2><B>Function |
| </B></FONT></FONT></FONT> |
| </P> |
| </TH> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P><CODE><FONT FACE="Cumberland, monospace"><SPAN LANG="en-US">accessibility</SPAN></FONT></CODE></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">Accessibility tools bridges (e.g. java |
| accessibility bridge)</P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US"><FONT FACE="Cumberland, monospace">awb</FONT></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">Accessibility workbench for checking accessibility |
| bridges</P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US"><FONT FACE="Cumberland, monospace">awttools</FONT></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">Accessibility test programs</P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US"><FONT FACE="Cumberland, monospace">basebmp</FONT></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">Base classes for bitmap manipulation</P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US"><FONT FACE="Cumberland, monospace">canvas</FONT></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">Implementation of a new graphical output layer |
| designed to replace vcl's OutputDevice</P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US"><FONT FACE="Cumberland, monospace">cppcanvas</FONT></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">C++ wrappers and helper classes for canvas</P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US"><FONT FACE="Cumberland, monospace">dtrans</FONT></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">System specific interchange (e.g. clipboard, drag |
| and drop)</P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P><CODE><FONT FACE="Cumberland, monospace"><SPAN LANG="en-US">forms</SPAN></FONT></CODE></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">Implementation of controls that can be used as |
| forms in documents. Form controls are based on VCL. |
| </P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US"><FONT FACE="Cumberland, monospace">fpicker</FONT></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">Support for system specific file dialogs and a |
| generic fallback solution</P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P><CODE><FONT FACE="Cumberland, monospace"><SPAN LANG="en-US">padmin</SPAN></FONT></CODE></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">Printer administration utility. Used on Unix |
| platforms to configure printer queues and capabilities</P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P><CODE><A HREF="psprint/index.html"><FONT FACE="Cumberland, monospace"><SPAN LANG="en-US">psprint</SPAN></FONT></A></CODE></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">Printer discovery and PostScript code generation. |
| In conjunction with VCL it provides an application printing |
| solution on Unix based systems. In the 3.2 codeline the psprint code |
| has moved from its own modules into vcl to benefit from tighter integration. |
| </P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P><CODE><FONT FACE="Cumberland, monospace"><SPAN LANG="en-US">rsc</SPAN></FONT></CODE></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">Resource compiler. The basic layout of dialogs and |
| the strings that are subject of translation/localization are |
| stored in resource files. The resource compiler creates an |
| efficient binary representation out of a human readable text |
| format |
| </P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US"><FONT FACE="Cumberland, monospace">shell</FONT></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">System integration: bindings to mailers and other |
| external components</P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US"><FONT FACE="Cumberland, monospace">sysui</FONT></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">System desktop integration: mimetype and file type |
| registration, quickstarter</P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P><CODE><FONT FACE="Cumberland, monospace"><SPAN LANG="en-US">toolkit</SPAN></FONT></CODE></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">Toolkit provides a UNO API to VCL and UNO controls |
| </P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P><CODE><FONT FACE="Cumberland, monospace"><SPAN LANG="en-US">unocontrols</SPAN></FONT></CODE></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">A set of controls that do not directly rely on |
| VCL. Currently implemented are a control for downloading files and |
| an embeddable document preview. |
| </P> |
| </TD> |
| </TR> |
| <TR VALIGN=TOP> |
| <TD WIDTH=18% BGCOLOR="#f0f0f0"> |
| <P><CODE><A HREF="vcl/index.html"><FONT FACE="Cumberland, monospace"><SPAN LANG="en-US">vcl</SPAN></FONT></A></CODE></P> |
| </TD> |
| <TD WIDTH=82% BGCOLOR="#f0f0f0"> |
| <P LANG="en-US">Visual Class Library, implements graphic |
| operations, window management and basic controls</P> |
| </TD> |
| </TR> |
| </TABLE> |
| <H3 LANG="en-US">What's going on for OpenOffice.org 3.2 ?</H3> |
| <UL> |
| <LI><P LANG="en-US"><B>Printing recode</B></P> |
| <P LANG="en-US" STYLE="font-weight: normal">Currently on the Mac |
| documents are first “printed” to a set of metafiles, then the |
| actual Cocoa print job is started. This is necessary for two |
| reasons: first for a print job you need to know the page range in |
| advance (which the current vcl printer does not) and second |
| individual pages are “pulled” from the print system in a random |
| manner (e.g. the preview in the native print dialog prints a page to |
| display it). The current mechanism works surprisingly well even for |
| large documents but is naturally rather memory intensive.</P> |
| <P LANG="en-US" STYLE="font-weight: normal">So the plan is to move |
| vcl's print model more in the direction of Cocoa's (that is to a |
| model where the printer pulls pages instead of the application |
| pushing all pages to the printer). Aside from the Mac specific |
| advantage this gives us the opportunity for a better print dialog |
| including a nice preview on all platforms. Also things like |
| multipage printing can be done in an application independent manner |
| this way.</P> |
| <LI><P LANG="en-US"><B>Further Mac integration features</B></P> |
| <P LANG="en-US" STYLE="font-weight: normal">Netscape plugin support allows |
| to embed e.g. shockwave/flash into our documents like on other platforms.</P> |
| <LI><P LANG="en-US"><B>Improvements in OpenType font support</B></P> |
| <P LANG="en-US" STYLE="font-weight: normal">CFF based OpenType fonts should |
| finally find better support (like rendering, printing and PDF export) in OpenOffice.org. |
| </P> |
| <LI><P LANG="en-US"><B>Performance</B></P> |
| <P LANG="en-US" STYLE="font-weight: normal">The overall performance of OpenOffice.org |
| lets room for improvement. Currently there are no known big isolated issues that |
| would result in huge performance gains, so we need to find lots of different small |
| performance improvements. In the gsl area one example for these is the unification |
| of different modules into one which will result in fewer libraries to load - noticeable |
| especially on Windows where each library nowadays is subject to an antivirus scan. |
| </P> |
| </UL> |
| <H3 LANG="en-US">What's going on for OpenOffice.org 3.1 ?</H3> |
| <UL> |
| <LI><P LANG="en-US"><B>Printing recode (didn't make it into 3.1 due to time constraints)</B></P> |
| <LI><P LANG="en-US"><B>StartCenter enhancements (didn't make it into 3.1, UX lost interest it seems)</B></P> |
| <P LANG="en-US" STYLE="font-weight: normal">The StartCenter in its |
| current form will change its face and feature set; the UX team is |
| currently thinking about its future directions. Actually this |
| belongs to the <A HREF="http://framework.openoffice.org/">framework</A> |
| project, but currently it looks like we will be helping them out.</P> |
| <LI><P LANG="en-US"><B>Enhancements for RTL (Right To Left) |
| languages</B></P> |
| <P LANG="en-US" STYLE="font-weight: normal">A lot of bug fixes and |
| enhancements are on our list for arabic, hebrew and other RTL |
| languages.</P> |
| <LI><P LANG="en-US"><B>Further Mac integration features</B></P> |
| <P LANG="en-US" STYLE="font-weight: normal">While for 3.0 the main |
| goal was bringing the Mac port up to the standards of the other |
| platforms, we hope to strengthen it beyond this with further |
| integration features. Support for the Apple Remote as well as Apple |
| scripting is currently in development. Scripting support will start |
| with simple things and over time make more features available |
| through Apple script. Full scriptability is already possible through |
| our existing scripting framework (most notably using BASIC) as well |
| as through the UNO bridge to Java, Python and possible other |
| languages.</P> |
| </UL> |
| <H3 LANG="en-US">What's going on for OpenOffice.org 3.0 ?</H3> |
| <UL> |
| <LI><P LANG="en-US"><B>Mac/Aqua Port</B></P> |
| <P LANG="en-US" STYLE="margin-bottom: 0in; font-weight: normal">The |
| newly invigorated MacOSX (which is now a mainstream platform) |
| porting effort involves a lot of work in gsl. Goal is to release a |
| beta version along with the 3.0 beta on other mainstream platforms. |
| Some issues involved in the port include: |
| </P> |
| <UL> |
| <LI><P STYLE="margin-bottom: 0in">Porting vcl including native |
| widget theming. |
| </P> |
| <LI><P STYLE="margin-bottom: 0in">Drag&Drop |
| </P> |
| <LI><P STYLE="margin-bottom: 0in">Support for Apple's font formats |
| </P> |
| <LI><P STYLE="margin-bottom: 0in">QuickTime support |
| </P> |
| <LI><P>... |
| </P> |
| </UL> |
| </UL> |
| <H3 LANG="en-US">What was going on for OpenOffice.org 2.x ?</H3> |
| <UL> |
| <LI><P LANG="en-US"><B>Further PDF export enhancements</B></P> |
| <P LANG="en-US" STYLE="font-weight: normal">New features were added |
| in 2.0.4: encrypted PDF and setting various user access permissions. |
| Support for PDF/A-1a compliant output was added in 2.4.</P> |
| <LI><P LANG="en-US"><B>Support for Unicode surrogates</B></P> |
| <P LANG="en-US" STYLE="font-weight: normal">OOo will be able to use |
| Unicode characters outside the baseplane of 0x0000 to 0xffff if you |
| have a font to render those characters.</P> |
| <LI><P LANG="en-US"><B>Multiscreen support for presentation</B></P> |
| <P LANG="en-US" STYLE="font-weight: normal">First version available |
| in 2.1.</P> |
| <LI><P LANG="en-US"><B>Refactoring the toolkit for better use in UNO |
| extensions</B></P> |
| </UL> |
| <H3 LANG="en-US">What was going on for OpenOffice.org 2.0 ?</H3> |
| <UL> |
| <LI><P LANG="en-US"><B>System conforming look and feel</B></P> |
| <P LANG="en-US" STYLE="margin-bottom: 0in">VCL provided a desktop |
| and operating system independent look to OpenOffice.org 1.x. However |
| most user preferred OpenOffice.org to look and behave according to |
| their favorite desktop theme. In 2.0 VCL will pick up that theme, |
| not by emulating it but simply by using the desktops very own |
| methods to draw a control. Currently support for Windows XP and |
| recent versions of Gnome as well as KDE with qt >= 3.2.2 is |
| implemented.</P> |
| <LI><P LANG="en-US"><B>Enhanced PDF support</B></P> |
| <P LANG="en-US" STYLE="margin-bottom: 0in">OpenOffice.org 1.1 |
| contained a basic PDF file export mainly preserving the visible |
| content of a document. While this was already a big deal for most |
| user, many provided feedback about being in need of more. In 2.0 |
| more of the document content that can be matched to the PDF file |
| format will be preserved. This is for example external and internal |
| hyperlinks, table of contents, preview bitmaps for page preview, |
| form controls, and much more. |
| </P> |
| <LI><P LANG="en-US"><B>Improvement of font discovery/matching</B></P> |
| <P LANG="en-US">Not visible to the user, VCL does a huge job in |
| finding fonts and making them available to the higher level |
| applications. Over time the implementation had to take more and more |
| feature. For 2.0 it needed some restructuring and maintenance to |
| stay robust and performing. |
| </P> |
| </UL> |
| <H3 LANG="en-US">What was going on for OpenOffice.org 1.x ?</H3> |
| <UL> |
| <LI><P LANG="en-US"><B>All application windows based on system |
| windows </B> |
| </P> |
| <P LANG="en-US" STYLE="margin-bottom: 0in">The original |
| implementation of OpenOffice.org used a single system window to |
| implement all application windows. Whereas that provided fine |
| grained control over the window behavior it was simply not possible |
| to move a subwindow out of it's parents area. Good for developers, |
| bad for users, however in the end the user won. |
| </P> |
| <LI><P LANG="en-US"><B>Asian language support</B></P> |
| <P LANG="en-US" STYLE="margin-bottom: 0in">How to do proper support |
| for Asian languages easily fills a book. However the main issues |
| solved in VCL where proper keyboard input and extended text output |
| features like vertical writing (from right to left) |
| </P> |
| <LI><P LANG="en-US"><B>Glyph fallback</B></P> |
| <P LANG="en-US" STYLE="margin-bottom: 0in">The typical user does not |
| really care about what characters can be represented by the glyphs |
| from the current font he uses. To still allow him or her to see |
| what's in the document, glyphs missing in the font are substituted |
| if a richer font is found. |
| </P> |
| <LI><P LANG="en-US"><B>PDF file export</B></P> |
| <P LANG="en-US" STYLE="margin-bottom: 0in">Creating PDF files with |
| OpenOffice.org 1.0 was a bit tricky on Unix, and really, really |
| tricky on Windows. OpenOffice.org 1.1 was the first version to |
| contain the possibility to simply "Save as ..." pdf. Users |
| loved it and asked for more. |
| </P> |
| <LI><P LANG="en-US"><B>Open source Unix printing system</B></P> |
| <P><SPAN LANG="en-US">It wasn't possible to open source the original |
| StarOffice 5.x printing system because Sun didn't own it. Whereas |
| Microsoft Windows already provides sufficient API to implement |
| printing, on Unix there was nothing available at that time. In |
| OpenOffice 1.0 <A HREF="psprint/index.html">psprint</A></SPAN> <SPAN LANG="en-US">saw |
| the light, an Asian language enable, PostScript based printing |
| system. </SPAN> |
| </P> |
| </UL> |
| <H3 LANG="en-US">Want more information ? Want to help ?</H3> |
| <P><SPAN LANG="en-US">There is a simple way to find out more about |
| GSL and it's role in OpenOffice.org. Just ask ! If you have questions |
| then please post them in the dev@gsl mailing list. Please have a look |
| <A HREF="http://gsl.openoffice.org/servlets/ProjectMailingListList">here</A></SPAN> |
| <SPAN LANG="en-US">for contact information. </SPAN> |
| </P> |
| <P ALIGN=CENTER><IMG SRC="blurulr6.gif" NAME="Grafik1" ALIGN=BOTTOM WIDTH=640 HEIGHT=5 BORDER=0></P> |
| <P LANG="en-US">All trademarks found herein are property of their |
| respective owners.</P> |
| </body> |
| </HTML> |