blob: 162da35cee1491aa0e78fb5da3d433cc2a644764 [file] [log] [blame]
<!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&uuml;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&amp;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 &gt;= 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 &quot;Save as ...&quot; 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>