<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openoffice.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pdefilippis</id>
	<title>Apache OpenOffice Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openoffice.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pdefilippis"/>
	<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/wiki/Special:Contributions/Pdefilippis"/>
	<updated>2026-11-06T07:58:19Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/Building_Guide/Building_on_MacOSX&amp;diff=17785</id>
		<title>Documentation/Building Guide/Building on MacOSX</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/Building_Guide/Building_on_MacOSX&amp;diff=17785"/>
		<updated>2006-10-01T13:13:37Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
This document tries to wrap-up the build process for OpenOffice on MacOS X using the native windowing-toolkit of the platform named Aqua. The main goal is to get the demonstration programs &amp;quot;svdem&amp;quot; up and running. They act as a fairly good starting point to further endeavours, since they are used to test the capabilities of the underlying VCL layer. If this is achieved, one can build and Install the full-fledged OpenOffice.org Package. The bias of this document is to describe the cumbersome build process of OpenOffice.org rather than to give a kickstart in the coding involved to get VCL ported to Carbon. A starting point for this is Pierre de Filippis excellent [[Intro_To_Mac_Porting]].&lt;br /&gt;
&lt;br /&gt;
I use the bash shell in all examples, since to my belief users of the C-shell are smart enough to figure out the differences anyway. If you want to dig deeper into the build process, please have a look at the description of the build enviroment here: [http://tools.openoffice.org/build_env.html Open OfficeBuild Environment].&lt;br /&gt;
&lt;br /&gt;
Many thanks for help and assistance go to Pavel Janik and Eric Bachard.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
This document was derived from the description of the X11 build thanksworthy provided by Eric Hoch in this document: [[MacOSXBuildInstructions]]. Here i like to outline the things you need to buld the Aqua Version (besides the OS). Your are much better off to install the Fink Package Manager on your Apple, to resolve these dependencies (and get some cool stuff too). Go to [http://fink.sourceforge.net Fink]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Xcode ====&lt;br /&gt;
Xcode 2.3 and 2.4 are known to work for Aqua development. Please add earlier versions work as well, please add them here.&lt;br /&gt;
&lt;br /&gt;
==== Java 1.4.2+ ====&lt;br /&gt;
==== The perl module Archive::Zip ====&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
perl -MCPAN -eshell&lt;br /&gt;
install Archive::Zip&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
==== Apache Ant 1.6.5 ====&lt;br /&gt;
For the OpenOffice Builds you need to have Apache&amp;#039;s Ant in the source-directory. You have to have Ant Version 1.6.5+. My Ant usually resides in /opt/ant so i link it in from there:&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
 cd src680-m182/&lt;br /&gt;
 ln -s /opt/ant/ apache-ant-1.6.5&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== gpc ====&lt;br /&gt;
GPC is available here: ftp://ftp.cs.man.ac.uk/pub/toby/gpc/gpc231.tar.Z&amp;gt;&lt;br /&gt;
Attention: Direct Link to the download but it&amp;#039;s only a few hundred KB.&lt;br /&gt;
Note: You can alternatively use the libart_lgpl library instead of GPC. This requires an additional configure flag (--enable-libart) and a precompiled libart library installed in a standard location, such as /usr/lib.&lt;br /&gt;
==== pkg-config ====&lt;br /&gt;
Called &amp;#039;&amp;#039;pkgconfig&amp;#039;&amp;#039; in Fink.&lt;br /&gt;
&lt;br /&gt;
pkg-config can be found here : http://pkgconfig.freedesktop.org/wiki/&lt;br /&gt;
&lt;br /&gt;
==== gnu copy ====&lt;br /&gt;
In Fink terms this is in the package &amp;#039;&amp;#039;fileutils&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
If you prefer direct download, GNU coreutils can be found at http://www.gnu.org/software/coreutils/coreutils.html.&lt;br /&gt;
&lt;br /&gt;
After installing, you should copy or rename the newly installed cp to gnucp (located at /usr/local/bin/cp or /sw/bin/cp if you used Fink) (cf. http://qa.openoffice.org/issues/show_bug.cgi?id=69711)&lt;br /&gt;
&lt;br /&gt;
=== Some Backgroud (what is aquavcl01, EIS) ===&lt;br /&gt;
&lt;br /&gt;
==== EIS ====&lt;br /&gt;
OpenOffice sources are basically kept in the CVS server located at anoncvs.services.openoffice.org. However this repository is managed by a database on top called EIS (Environment Information System) which is used to keep track of Master- and Client Workspaces. Master Workspaces are used to keep track of changes going back of the mainline trunk and undergo extensive QA-cycles. These Master Workspaces are driven to official releases. Child workspaces in contrast are copies of certain Master Workspaces used to develop and test bugfixes and additional functionality. These Child Workspaces are later (hopefully) merged back to mainlain Master Workspaces. The TX20 Report mentioned in the Links section gives a very good overview about the overall process. To learn more about Childworkspaces (CWS) have a look here: [[CWS]]. &lt;br /&gt;
&lt;br /&gt;
Go to EIS http://eis.services.openoffice.org/EIS2/servlet/Logon and Logon as guest/guest to get yourself an impression. You can find information about the different workspaces, their dates and times there. &lt;br /&gt;
&lt;br /&gt;
==== VCL (Visual Class Libraries) ====&lt;br /&gt;
&lt;br /&gt;
Porting OpenOffice.org to a new Windowing Toolkit is mostly porting of the OpenOffice&amp;#039;s VCL Layer (Visual Class Libraries) to the new platforms toolkit. The VCL-Layer is responsible of mapping the OpenOffice Application calls to the windowing toolkit.&lt;br /&gt;
&lt;br /&gt;
The (native) OpenOffice port to MacOSX using the Aqua Windowing Toolkit is developed in a child workspace called &amp;#039;&amp;#039;&amp;#039;aquavcl01&amp;#039;&amp;#039;&amp;#039;. This child workspace consists of the modules (aka subdirs): canvas dtrans extensions freetype padmin scp2 sj2 solenv vcl.&lt;br /&gt;
&lt;br /&gt;
The basic approach to prepare a developer&amp;#039;s client system to succsessfully build OpenOffice/Aqua is the following:&lt;br /&gt;
&lt;br /&gt;
# checkout a given OpenOffice Milestone.&lt;br /&gt;
# checkout aquavcl01 Child Workspace.&lt;br /&gt;
# merge them together.&lt;br /&gt;
# apply the latest patches.&lt;br /&gt;
&lt;br /&gt;
The last point here is a cumbersome but nevertheless necessary operation, since this porting project is in flux. Thanks to Pavel and many others improvements are happening at tremendous pace at the moment. All of these improvements get distributed as patches/diffs against aquavcl01. Aquavcl01 needs to remain stable all the time, therefore the team needs to work on this patch-by-patch aproach at the moment.&lt;br /&gt;
&lt;br /&gt;
=== Getting the code (checkout, merge and patch the puppy) ===&lt;br /&gt;
&lt;br /&gt;
Now let&amp;#039;s have a look what to check-out and where. All these milestone numbers below highly depend on the given point-in-time. The current milestone as of now (August, 16th 2006) is m184. You may change this to your needs. You can finde the current milestone of each cws in the EIS database.&lt;br /&gt;
&lt;br /&gt;
You also need to bear in mind that you have to access to the CVS-Server&amp;#039;s default port (2401). If a firewall stop&amp;#039;s you here you have to setup a CVS-Tunnel.&lt;br /&gt;
&lt;br /&gt;
==== create a directory for a given milestone, setup CVS access: ==== &lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
 mkdir src680-m184&lt;br /&gt;
 cd src680-m184&lt;br /&gt;
 &lt;br /&gt;
 export CVSROOT=:pserver:anoncvs@anoncvs.services.openoffice.org:/cvs&lt;br /&gt;
 cvs login&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please Enter the password &amp;#039;anoncvs&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==== checkout Milestone m184 (1,5 GB): ==== &lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
 cvs -z3 co -r SRC680_m184 OpenOffice2&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once done, you&amp;#039;ll obtain milestone 184. this not exactly what we want, because all changes concerning aquavcl01 Child workspace are not included. To complete, we need to check aquavcl01 changes.&lt;br /&gt;
&lt;br /&gt;
==== checkout Aquavcl01 (50 MB): ==== &lt;br /&gt;
&lt;br /&gt;
1) First possibility : create a dedicated tree (cool backup )&lt;br /&gt;
&lt;br /&gt;
To check aquavcl01 Child workspace, the most simple is to create aquavcl01 directory, and go inside this dir&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
 mkdir aquavcl01-src &lt;br /&gt;
 &lt;br /&gt;
 cd aquavcl01-src&lt;br /&gt;
 &amp;lt;/code&amp;gt;&lt;br /&gt;
 (assuming you arelady did cvs login ..etc )&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
 cvs -z3 co -r cws_src680_aquavcl01 OpenOffice2&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
 The following modules will be present at the end :&lt;br /&gt;
&lt;br /&gt;
 canvas&lt;br /&gt;
 extensions&lt;br /&gt;
 padmin&lt;br /&gt;
 scp2&lt;br /&gt;
 solenv&lt;br /&gt;
 dtrans&lt;br /&gt;
 freetype&lt;br /&gt;
 psprint&lt;br /&gt;
 sj2&lt;br /&gt;
 vcl&lt;br /&gt;
 &lt;br /&gt;
All these modules are the ones we modified to create the native version :  they all are tagged &amp;quot;aquavcl01&amp;quot; (see all CVS/Tag files in the tree) and all you have to do is either rename or delete the one located in src680-m184 and replace them with the one located in aquavcl01-src.&lt;br /&gt;
&lt;br /&gt;
e.g.  : canvas in src680-m184 will become canvas_m184 , and then, cp canvas from aquavcl01-src into src-m184&lt;br /&gt;
&lt;br /&gt;
This applies for all the modules listed above.&lt;br /&gt;
&lt;br /&gt;
2) Second possibility : use a little script to extract changes : extract_aquavcl01.sh&lt;br /&gt;
&lt;br /&gt;
This shell script, located in src680-m184 will contain :&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
  list=&amp;quot;canvas extensions padmin scp2 solenv dtrans freetype psprint sj2 vcl&amp;quot;&lt;br /&gt;
  for i in $list ;  do &lt;br /&gt;
     cd $i&lt;br /&gt;
     cvs up -j CWS_SRC680_AQUAVCL01_ANCHOR -j cws_src680_aquavcl01&lt;br /&gt;
     cd ..&lt;br /&gt;
  done&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then chmod +x extract_aquavcl01.sh&lt;br /&gt;
&lt;br /&gt;
and run it :&lt;br /&gt;
&lt;br /&gt;
./extract_aquavcl01.sh&lt;br /&gt;
&lt;br /&gt;
When finished, and if no problem occurs, you should have a complete tree.&lt;br /&gt;
&lt;br /&gt;
==== Apply some patches ====&lt;br /&gt;
&lt;br /&gt;
After you&amp;#039;ve checked-out all the sources you need, you may have to apply some patches. &lt;br /&gt;
&lt;br /&gt;
For the succsessfull build of m184 plus aquavcl01 you need to apply the patch from issue number [http://www.openoffice.org/issues/show_bug.cgi?id=68810 68810]:&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
 patch -p0 &amp;lt;../patches/i68810.patch&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== One-Time preparations and scripts ===&lt;br /&gt;
&lt;br /&gt;
OpenOffice building gets configured by the popular open-source configuration-management package &amp;#039;autoconf&amp;#039;. So you can do your beloved &amp;#039;./configure&amp;#039; command, but in our case this is done in the &amp;#039;config_office&amp;#039; subdirectory. To save the configure parameters and use them with different milestones I used to link-in my shellscript to fire up the ./configure line.&lt;br /&gt;
&lt;br /&gt;
My directory-structure looks like this:&lt;br /&gt;
&lt;br /&gt;
 bin/&lt;br /&gt;
 src680-m176/&lt;br /&gt;
 src680-m182/&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Now I go to the &amp;#039;config_office&amp;#039; subdir and link in my startscript:&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
 cd src680-m182/config_office/&lt;br /&gt;
 ln -s ../../bin/build.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
And this is how &amp;#039;build.sh&amp;#039; looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 export BASE=`pwd|sed &amp;#039;s/\/config_office//&amp;#039;`&lt;br /&gt;
 export OOVERSION=`echo $BASE|sed &amp;#039;s/^\/.*\///&amp;#039;`&lt;br /&gt;
 echo Building from      : $BASE&lt;br /&gt;
 echo OpenOffice Version : $OOVERSION&lt;br /&gt;
 ./configure \&lt;br /&gt;
 --with-lang=&amp;quot;de en-US&amp;quot; \&lt;br /&gt;
 --with-jdk-home=/Library/Java/Home/ \&lt;br /&gt;
 --with-ant-home=$BASE/apache-ant-1.6.5/ \&lt;br /&gt;
 --with-gnu-cp=/sw/bin/cp \&lt;br /&gt;
 --with-epm=internal \&lt;br /&gt;
 --disable-mozab \&lt;br /&gt;
 --disable-odl \&lt;br /&gt;
 --disable-pasf \&lt;br /&gt;
 --disable-gtk \&lt;br /&gt;
 --disable-mozilla \&lt;br /&gt;
 --with-build-version=$OOVERSION-`date +%d-%m-%y` \&lt;br /&gt;
 --disable-fontconfig \&lt;br /&gt;
 --disable-neon \&lt;br /&gt;
 --without-nas&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--disable-odl will avoid you to download some windows dll which is not needed for aqua-build.&lt;br /&gt;
--disable-pasf : pasf stands for Portable Audio System file. As we want to use system library rather than portable ones, we disabled this. However, at this time not all functionality will be available with pasf disabled. You might willing to use --with-pasf if you want working audio in your build.&lt;br /&gt;
--disable-nas : nas stands for Network Audio System, it uses X11, if you want to use it in your build, just remove this flag. You will need to install the X11 package provided in your CDs/DVD Mac OS X installation. X11 SDK from xCode tools is not required for build this.&lt;br /&gt;
&lt;br /&gt;
This is allowedly a pretty much limited setup, but my overall goal is to get people to have &amp;#039;svdem&amp;#039; build to start coding rather than to have a production ready build for the final release. Therefore I switched off most of the stuff. How these offical builds are done in the long run is to be decided when we get there.&lt;br /&gt;
&lt;br /&gt;
=== Doing the build ===&lt;br /&gt;
&lt;br /&gt;
Fine, now we have a (hopefully) working &amp;#039;build.sh&amp;#039; in the config_office subdir. We need to run it beforehand:&lt;br /&gt;
&lt;br /&gt;
 cd src680-m182/config_office/&lt;br /&gt;
 ./build.sh&lt;br /&gt;
&lt;br /&gt;
This will setup the necessary includefiles and create a couple of files in the &amp;#039;&amp;#039;&amp;#039;parent&amp;#039;&amp;#039;&amp;#039; directory (bootstrap, MacOSXPPCEnv.Set.sh, MacOSXPPCEnv.Set). If you are using the sh, ksh or bash you only need to take care for &amp;#039;MacOSXPPCEnv.Set.sh&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Now we need to get back to our base-directory, run the bootstrap script, source our Enviroment (MacOSXPPCEnv.Set.sh) and finally start the build-process:&lt;br /&gt;
&lt;br /&gt;
On PowerPC :&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 ./bootstrap&lt;br /&gt;
 source MacOSXPPCEnv.Set.sh&lt;br /&gt;
 time dmake&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Or (on Mac Intel ) : &lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 ./bootstrap&lt;br /&gt;
 source MacOSXIntelEnv.Set.sh&lt;br /&gt;
 time dmake&lt;br /&gt;
&lt;br /&gt;
The main purpose of the &amp;#039;&amp;#039;&amp;#039;boostrap&amp;#039;&amp;#039;&amp;#039; script is to build (if necessary) the dmake utility used. Dmake once was a unix make-clone made by wticorp but got incorporated into OpenOffice since it was orphaned. For more information about dmake, it&amp;#039;s history and manpage have a look here: http://tools.openoffice.org/dmake/index.html&lt;br /&gt;
&lt;br /&gt;
Sourcing MacOSXPPCEnv.Set.sh is very important not only for building but also for &amp;#039;&amp;#039;&amp;#039;running&amp;#039;&amp;#039;&amp;#039; svdem later on. Here all the Enviroment-Variables for the Build will be set up. For a detailed descripton see [[Environment_Variables]]. Please note that on Intel machines, &amp;#039;MacOSXPPCEnv.Set&amp;#039; should be substituted with &amp;#039;MacOSXIntelEnv.Set&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
This Build process takes on my box (Dual 1.8 GHz G5, 1.5GB RAM) roughly 10 hours. Be paitioned. What can you do meanwhile? Do this:&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
 while true ; do find . -maxdepth 1 -type d -anewer MacOSXPPCEnv.Set.sh |wc -l ; sleep 5; done&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and wait till the number reaches 174&lt;br /&gt;
&lt;br /&gt;
=== Creating Debug-Versions of Modules ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Is it possible to build the complete set ?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Currently not possible, and not adviced.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; is it possible to build some modules with symbols ?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Yes, and that&amp;#039;s the simplest way to proceed. Some modules, like sal and vcl can be rebuilt using debug.&lt;br /&gt;
&lt;br /&gt;
Example :&lt;br /&gt;
&lt;br /&gt;
To rebuild sal with symbols included, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
cd sal&lt;br /&gt;
rm -rf unxmacxp.pro&lt;br /&gt;
build debug=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and recopy the libs into the bundle. gdb will display the symbols, and make your life easier.&lt;br /&gt;
&lt;br /&gt;
Note :  debug string is tested, and DEBUG is active when debug string is not empty. So debug=t works too.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; How change gdb options, and use e.g. -g -ggdb or -gdwarf-2  ?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
To rebuild the module, you just have to modify the option in solenv/inc/unxmacx.mk, replacing -g with -ggdb&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Known issues&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 Sometimes a build error, or a runtime error, may be seen in the normal build,  &lt;br /&gt;
 but the error goes away when --enable-debug is used or if the module is compiled with debug=true. &lt;br /&gt;
&lt;br /&gt;
The DEBUG build turns off optimisation, so this is a hint that compiler optimisation causes the error.&lt;br /&gt;
&lt;br /&gt;
The error might be due to incorrect code or a compiler fault.  Such errors might not be seen on all platforms, &lt;br /&gt;
&lt;br /&gt;
and might not be seen in different compiler versions on one platform.&lt;br /&gt;
&lt;br /&gt;
If the code can not be fixed there is a workaround using NOOPTFILES to build specified files with no optimisation.&lt;br /&gt;
 &lt;br /&gt;
Example : &lt;br /&gt;
&lt;br /&gt;
jvmfwk on Mac OS X: build jvmfwk in m183 on Mac OS X Intel leads to Bus Error when javaldx is run.&lt;br /&gt;
&lt;br /&gt;
Solution : use trial and error to rebuild individual files with debug=true. This proves the problem lies with vendorbase.cxx&lt;br /&gt;
&lt;br /&gt;
Have a look in sc/source/core/data/makefile.mk for an example to use NOOPTFILES&lt;br /&gt;
&lt;br /&gt;
To solve our problem: just add : NOOPTFILES= $(SLO)$/vendorbase.obj in the corresponding makefile.&lt;br /&gt;
&lt;br /&gt;
Take care in case some .IF is needed to prevent interference with other platforms.&lt;br /&gt;
&lt;br /&gt;
There&amp;#039;s some additional information around debugging on Christians Page [[User:CL#2006-09-03]]&lt;br /&gt;
&lt;br /&gt;
=== Building and running svdem ===&lt;br /&gt;
&lt;br /&gt;
We want to run the demonstration programs called &amp;quot;svdem&amp;quot;. There are a couple of binaries called &amp;quot;svdem&amp;quot;, which area they cover is still somewhat unclear to me, I hope some of you guys can shed some light here. But hey, this is a wiki! Just correct here :-).&lt;br /&gt;
&lt;br /&gt;
To have the VCL Testprogram build you have to do:&lt;br /&gt;
&lt;br /&gt;
 cd vcl; build --all&lt;br /&gt;
&lt;br /&gt;
This should have created a file called &amp;quot;svdem&amp;quot; here: vcl/unxmacxp.pro/bin/svdem. If you managed to build these binaries, you are nearly there. What you need now, is a wrapper directory structure to make this binary a fellow Mac OSX application. I mean the ones which have this structure:&lt;br /&gt;
&lt;br /&gt;
 svdem.app/&lt;br /&gt;
 svdem.app/Contents&lt;br /&gt;
 svdem.app/Contents/Info.plist&lt;br /&gt;
 svdem.app/Contents/MacOS&lt;br /&gt;
 svdem.app/Contents/MacOS/applicat.rdb&lt;br /&gt;
 svdem.app/Contents/MacOS/svdem&lt;br /&gt;
&lt;br /&gt;
You can basically create this structure anywhere you want. And you can link-in the file you just created (svdem). So you build up this structure once and link-in the freshly created svdem there:&lt;br /&gt;
&lt;br /&gt;
 ls -l svdem applicat.rdb&lt;br /&gt;
 svdem -&amp;gt; /opt/src/openoffice/src680-m177//vcl/unxmacxp.pro/bin/svdem&lt;br /&gt;
 applicat.rdb -&amp;gt; /opt/src/openoffice/src680-m177//vcl/unxmacxp.pro/bin/applicat.rdb&lt;br /&gt;
&lt;br /&gt;
Now only the Info.plist file is missing, so here we go:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[xml,N]&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple Computer//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;dict&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;CFBundleDevelopmentRegion&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;string&amp;gt;English&amp;lt;/string&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;CFBundleDisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;string&amp;gt;SvDem&amp;lt;/string&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;CFBundleExecutable&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;string&amp;gt;svdem&amp;lt;/string&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;string&amp;gt;com.yourcompany.svdem&amp;lt;/string&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;CFBundleInfoDictionaryVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;string&amp;gt;6.0&amp;lt;/string&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;CFBundlePackageType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;string&amp;gt;APPL&amp;lt;/string&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;CFBundleSignature&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;string&amp;gt;????&amp;lt;/string&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;CFBundleVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;string&amp;gt;1.0&amp;lt;/string&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;LSRequiresCarbon&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;true/&amp;gt;&lt;br /&gt;
 &amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;/plist&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you created the directory structure properly you can do &amp;#039;./svdem&amp;#039; in the &amp;#039;svdem.app/Contents/MacOS/&amp;#039; directory. You should see the svdem coming up.&lt;br /&gt;
&lt;br /&gt;
=== Installing, preparing and running  OpenOffice.org ===&lt;br /&gt;
&lt;br /&gt;
Here I like to outline the steps to run OpenOffice.org after a successful build from the sources. Running the native Aqua Version of OpenOffice.org is somewhat tricky at the moment, since the installation procedure and mode are not in their final state. So right now one has to manually do some preparations to run the Office suite. This will change in the future when we are about to release some Alpha Builds to a wider audience.&lt;br /&gt;
&lt;br /&gt;
==== Drag &amp;amp; Drop Install the Application from the Diskimage ====&lt;br /&gt;
&lt;br /&gt;
When you are one of the lucky few (Don&amp;#039;t give up, Eric!), who have a successful build, you are going to see something like this as the last lines of the build:&lt;br /&gt;
&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 ......................................................................................................................................................&lt;br /&gt;
    (CRC32 $11685D33: DiscRecording 3.1.3f2 (Apple_HFS : 2))&lt;br /&gt;
 Ressourcen hinzufügen…&lt;br /&gt;
 ......................................................................................................................................................&lt;br /&gt;
 Dauer: 15.406s&lt;br /&gt;
 Dateigröße: 144732418 Bytes, Prüfsumme: CRC32 $14E0BB67&lt;br /&gt;
 Bearbeitete Sektoren: 773848, 773845 komprimiert&lt;br /&gt;
 Geschwindigkeit: 24.5M Bytes/Sek&lt;br /&gt;
 Ersparnis: 63.5 %&lt;br /&gt;
 created: /opt/src/openoffice/src680-m182/instsetoo_native/unxmacxp.pro/OpenOffice/install/de/OpenOffice.org-2.0.4_de.dmg&lt;br /&gt;
&lt;br /&gt;
In this final step the &amp;quot;&amp;quot;instsetoo_native&amp;quot;&amp;quot; target creates the install Diskimages using Apple&amp;#039;s &amp;#039;hdiutil&amp;#039;. In my case it gives its output in German. After this disk image(s) have been created, double click the disk image to mount it (or type open &amp;lt;path to the DMG Image&amp;gt;) , and then move the icon named &amp;quot;OpenOffice.org 2.0&amp;quot; to your &amp;#039;&amp;#039;Applications&amp;#039;&amp;#039; folder (or any other folder you want this program to reside). The &amp;quot;OpenOffice.org 2.0&amp;quot; icon shown in the Finder is in fact a subdirectory called &amp;quot;OpenOffice.org 2.0.app&amp;quot;. Subdirectories named &amp;quot;.app&amp;quot; (along with some well-know files inside like Info.plist, etc) are called &amp;#039;&amp;#039;Bundles&amp;#039;&amp;#039; in Apple&amp;#039;s lingo.&lt;br /&gt;
&lt;br /&gt;
==== Prepare the installation ====&lt;br /&gt;
&lt;br /&gt;
After the OpenOffice 2.0 Application has been copied to its destination, you have to go into this bundle and run a small shell script provided by Pavel Janik to prepare soffice.bin (OpenOffice.org launcher) for running. You have to run this script in the directory where a Universal Binary called &amp;quot;droplet&amp;quot; is located. This &amp;quot;droplet&amp;quot; binary was used to fire-off the X11 version of OpenOffice.org. Expect this to change, but as of now we have to do it like this.&lt;br /&gt;
&lt;br /&gt;
I have put my OpenOffice.org build in my home directory&amp;#039;s private &amp;quot;Application&amp;quot; folder (/Users/schmidtm/Applications), so please change this path to your installation. Now go to into the bundle and run the script:&lt;br /&gt;
&lt;br /&gt;
 cd /Users/schmidtm/Applications/OpenOffice.org 2.0.app/Contents/MacOS&lt;br /&gt;
 /opt/src/openoffice/bin/fix_installed_OOo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 [ ! -f droplet ] &amp;amp;&amp;amp; {&lt;br /&gt;
     echo &amp;quot;Please run me in the directory, where binary named droplet is located.&amp;quot;&lt;br /&gt;
     exit 0&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 mv THIRDPARTYLICENSEREADME.html help presets share ..&lt;br /&gt;
 mv droplet droplet.orig&lt;br /&gt;
 mv program/* .&lt;br /&gt;
 rmdir program&lt;br /&gt;
 &lt;br /&gt;
 cd ..&lt;br /&gt;
 ln -sf MacOS program&lt;br /&gt;
 sed &amp;#039;s#droplet#soffice.bin#&amp;#039; Info.plist &amp;gt;Info.plist.new&lt;br /&gt;
 mv Info.plist.new Info.plist&lt;br /&gt;
 cd MacOS&lt;br /&gt;
 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Run the soffice.bin ==== &lt;br /&gt;
&lt;br /&gt;
We&amp;#039;re nearly through, let&amp;#039;s fire-off the binary:&lt;br /&gt;
&lt;br /&gt;
 AQUA_NATIVE_MENUS=TRUE AQUA_NATIVE_CONTROLS=TRUE ./soffice.bin -nofirststartwizard -norestore&lt;br /&gt;
&lt;br /&gt;
Notice the enviroment variable here. It&amp;#039;s experimental stuff created by Pavel. At the moment we have:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable || Function&lt;br /&gt;
|-&lt;br /&gt;
| AQUA_NATIVE_CONTROLS=TRUE  || enable native controls code&lt;br /&gt;
|-&lt;br /&gt;
| AQUA_NATIVE_MENUS=TRUE || enable experimental native menus code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Both changes are marked with comments in the source code, and when we remove them in the future, native controls and native menus will be enabled by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hack : to enable native controls and native menus by defaut without have to define an environment variable, just comment as follow :&lt;br /&gt;
&lt;br /&gt;
in vcl/aqua/source/gdi/salnativewidgets.cxx , around line 55 :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /*&lt;br /&gt;
     static const char *pExperimental = getenv (&amp;quot;AQUA_NATIVE_CONTROLS&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     if ( !pExperimental || strcasecmp(pExperimental, &amp;quot;TRUE&amp;quot;) )&lt;br /&gt;
         return FALSE;&lt;br /&gt;
 */&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in vcl/aqua/source/window/salmenu.cxx, around line 124 :&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /*&lt;br /&gt;
     static const char *pExperimental = getenv (&amp;quot;AQUA_NATIVE_MENUS&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     if ( !pExperimental || strcasecmp(pExperimental, &amp;quot;TRUE&amp;quot;) )&lt;br /&gt;
         return FALSE;&lt;br /&gt;
 */&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== List of Patches for a given Milestone ===&lt;br /&gt;
&lt;br /&gt;
Here is a list of Patches one has to apply against a given Milestone of SRC680 (including CWS aquavcl01). Please keep the older Milestones here, since people are probably still on these Versions.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Milestone || Patch to apply || Status&lt;br /&gt;
|-&lt;br /&gt;
| m184  || &amp;#039;&amp;#039;&amp;#039;Patch 1&amp;#039;&amp;#039;&amp;#039;: [http://www.openoffice.org/issues/show_bug.cgi?id=68810 sw : 68810] &amp;lt;br&amp;gt;&amp;#039;&amp;#039;&amp;#039;Patch 2&amp;#039;&amp;#039;&amp;#039;: to fix extensions and moz plugin build, building or not mozilla plugin, you have to apply macmozplugfix [http://eric.bachard.free.fr/patches/aqua/extensions_mozplug/aqua_extenstions_mozplug.diff patch] This patch does includes both np_sdk changes and extensions changes (see macmozplugfix cws) &amp;lt;br&amp;gt;&amp;#039;&amp;#039;&amp;#039;Patch 3&amp;#039;&amp;#039;&amp;#039;: to avoid systematical crashes in runtime you&amp;#039;ll have to apply [http://eric.bachard.free.fr/patches/aqua/vcl67/vcl67.patch vcl67 patch] in vcl &amp;lt;br&amp;gt; &amp;#039;&amp;#039;&amp;#039;Patch 4&amp;#039;&amp;#039;&amp;#039; : to simply start OpenOffice.org after applying Pavel&amp;#039;s script (else, launch OpenOffice.org using a terminal is mandatory, &amp;lt;br&amp;gt; apply [http://eric.bachard.free.fr/patches/aqua/fix_libsalsystools/i69373.diff.txt i69373]|| OK&lt;br /&gt;
|-&lt;br /&gt;
| m184  || To avoid crashes with several entries in menu  apply [http://eric.bachard.free.fr/patches/aqua/about_workaround/diff_salframe.diff about_workaround patch] in vcl/aqua/source/window  ||Work in progress &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== URL Links ===&lt;br /&gt;
&lt;br /&gt;
# MacOSX X11 Build Documentation: http://wiki.services.openoffice.org/wiki/MacOSXBuildInstructions&lt;br /&gt;
# Bug Database: http://www.openoffice.org/issues/query.cgi&lt;br /&gt;
# Mailinglist: mac@porting.openoffice.org&lt;br /&gt;
# IRC Meeting-Logs (#ooo_macport@freenode.org): http://eric.bachard.free.fr/mac/aquavcl/logs_meetings/&lt;br /&gt;
# TX20: http://eric.bachard.free.fr/UTBM_TX20/reports/Carbon_vcl.pdf&lt;br /&gt;
# OpenOffice Source Directory Structure: http://wiki.services.openoffice.org/wiki/Source_code_directories&lt;br /&gt;
# Pavels Patch Wiki: http://blog.janik.cz/&lt;br /&gt;
# Eric Bachard Wiki: http://wiki.services.openoffice.org/wiki/User:Ericb&lt;br /&gt;
# Christian Lippka Wiki: http://wiki.services.openoffice.org/wiki/User:CL&lt;br /&gt;
# Carbon: http://developer.apple.com/carbon&lt;br /&gt;
# EIS: http://eis.services.openoffice.org/EIS2/servlet/Logon&lt;br /&gt;
# Runtime Configuration: http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/index.html&lt;br /&gt;
# OpenOffice Domain Developer http://wiki.services.openoffice.org/wiki/DomainDeveloper&lt;br /&gt;
&lt;br /&gt;
=== Screenshots ===&lt;br /&gt;
&lt;br /&gt;
# Eric Bachard screenshots (some are from Stephan Schaefer) http://eric.bachard.free.fr/mac/aquavcl/screenshots/&lt;br /&gt;
# Most recent: http://eric.bachard.free.fr/mac/aquavcl/screenshots/scrollbar_01sept&lt;br /&gt;
# Pavel Janik screenshots http://blog.janik.cz/images/MacOSX/2006-08-10&lt;br /&gt;
# Important screenshot (eventloop issue) : http://blog.janik.cz/images/MacOSX/  =&amp;gt; See : OOoMenus-separator-and-disabled_entries.png&lt;br /&gt;
# Native Menus : http://eric.bachard.free.fr/mac/aquavcl/screenshots/ericb_22august/native_menu_4.jpg&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Aqua]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=DomainDeveloper&amp;diff=17195</id>
		<title>DomainDeveloper</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=DomainDeveloper&amp;diff=17195"/>
		<updated>2006-09-21T10:17:21Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A mapping of names to OOo accounts.&lt;br /&gt;
&lt;br /&gt;
Abbrev.:&lt;br /&gt;
&lt;br /&gt;
* PL : Project Lead&lt;br /&gt;
* CL : Project Co-Lead&lt;br /&gt;
* CC : Community Council Member&lt;br /&gt;
* ESC : Engineering Steering Committee Member &lt;br /&gt;
* CVS : has write access to the OOo CVS repository&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Developers ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || CVS || @openoffice.org || IRC nick || Notes || Affiliation&lt;br /&gt;
|-&lt;br /&gt;
|      ||     ||                 ||          ||       ||  &lt;br /&gt;
|-&lt;br /&gt;
| Volker Ahrend||   || va||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Kai Ahrens|| X || ka || Kai_Ahrens ||PL Graphic Applications||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Gene Anaya||   || ganaya||||||&lt;br /&gt;
|-&lt;br /&gt;
| Joost Andrae|| X || ja||ja||CL qa, release testing en-US builds and releasing builds||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Eric Bachard|| X || ericb||ericb2||Mac OSX/Linux PPC ports/CL porting||French OOo project&lt;br /&gt;
|-&lt;br /&gt;
| Kai Backman||  || kaib ||KaiB||||&lt;br /&gt;
|-&lt;br /&gt;
| Sascha Ballach|| X || sab||||||&lt;br /&gt;
|-&lt;br /&gt;
| Jayant Balraj Madavi||   || jayant_madavi||aZEN_JM||Connectivity / Database||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Barfurth|| X || jb||JoergB||Configuration Util||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Mathias Bauer|| X || mba||||PL Framework, XML||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Thorsten Behrens|| X || thb||thorsten||vcl/impress/toolkit visionary||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Thomas Benisch|| X || tbe||||Scripting framework||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Stefan Bergmann|| X || sb||||CL UDK, tools&amp;amp;amp;UCB hacker||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Andreas Bille|| X || abi||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Éric Bischoff|| X || ebischoff||ebischoff||KDE A/B driver||Bureau Cornavin&lt;br /&gt;
|-&lt;br /&gt;
| Nick Blievers|| X || nick||||IRIX||&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Boelzle|| X || dbo||||UNO core/bridges/packages||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Bolte|| X || obo||||RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Rafaella Braconi||   || coni||||CL l10n, globalization program manager||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Brauer|| X || mib||||PL XML||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Braun|| X || obr||obr||System Integration/Accessibility Hacker||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Andreas Bregas|| X || ab||||StarBasic||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Brunsmann||   || jbrunsmann||||UDK||&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Budischewski||   || jbu||PyUNO hacker||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Peter Burow|| X  || pb||UI||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Aidan Butler||   || aidan||||XML filters||&lt;br /&gt;
|-&lt;br /&gt;
| Giuseppe Castagno || X || beppec56 || beppec56_  or beppe_c || PDF output&lt;br /&gt;
|-&lt;br /&gt;
| Scott Carr||   || kcarr||kcarr||Documentation||Progbits&lt;br /&gt;
|-&lt;br /&gt;
| Colin Charles||   || drbyte||bytee||Malaysian native-lang project||bytebot.net&lt;br /&gt;
|-&lt;br /&gt;
| Behrend Cornelius|| X || bc||||Wizards||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Cziebalski||   || mci||||||&lt;br /&gt;
|-&lt;br /&gt;
| [[User:pdefilippis|Pierre de Filippis]]|| X || pdefilippis||aliscafo||Mac OSX native porting||&lt;br /&gt;
|-&lt;br /&gt;
| Andrew Dent|| X ||ace_dent||ace_dent||ui/custom_images||&lt;br /&gt;
|-&lt;br /&gt;
| Naren Devaiah||   || ||ndev||Performance||Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
| Nitin Dongre||   || ||nitin_BITS||||Novell, Inc.(intern)&lt;br /&gt;
|-&lt;br /&gt;
| Radek Doulik||   || radekdoulik||rodo_||Canvas hacker||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Carsten Driesner|| X || cd||||Framework||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Herbert Duerr|| X || hdu||hdu_hh||GSL||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Düsterhoff|| X || od||Writer||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Eilers|| X || bei||rfc821||EIS||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| René Engelhard|| X || rene||_rene_||config_office, Debian packager||Debian&lt;br /&gt;
|-&lt;br /&gt;
| Andre Fischer|| X || af||||Impress||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Uwe Fischer || || ufi || || || Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ken Foskey||   || waratah||waratah||config_office/dmake man||slug.org.au&lt;br /&gt;
|-&lt;br /&gt;
| Duncan Foster||   || dfoster||||||&lt;br /&gt;
|-&lt;br /&gt;
| David Fraser||   || davidfraser||davidfraser||South African translations, multilingual builds||translate.org.za&lt;br /&gt;
|-&lt;br /&gt;
| Nils Fuhrmann||   || nf||||Localization||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Martin Gallwey|| X || mtg||marty_||XML/Writer/packaging||&lt;br /&gt;
|-&lt;br /&gt;
| Pierre-Andre Galmes || || pagalmes || pagalmes || Chart2 ||&lt;br /&gt;
|-&lt;br /&gt;
| Tony Galmiche|| X || tonygalmiche||||CL FR native-lang project||&lt;br /&gt;
|-&lt;br /&gt;
| Sunil Gandhi||   || ||tyro||||NOSIP&lt;br /&gt;
|-&lt;br /&gt;
| Sophie Gautier|| X || sgauti|| sophi ||PL FR native-lang project, CC ||.&lt;br /&gt;
|-&lt;br /&gt;
| Vladimir Glazounov|| X || vg||||RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Laurent Godard || X || laurentgodard || lgodard || CC, PL Extensions, Fr Native-lang Project || inDesko/Nuxeo &lt;br /&gt;
|-&lt;br /&gt;
| Jody Goldberg|| X || jodygoldberg||jody||spreadsheet-ness||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Dirk Grobler|| X || dg||||Database Access||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Bettina Haberer||   || bh||||RFEOwner||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ingrid Halama|| X || iha||||Chart||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Chris Halls|| X || haggai||haggai||Debian packager&amp;amp;amp;misc. hacker||Credativ Ltd., Debian&lt;br /&gt;
|-&lt;br /&gt;
| Gregor Hartmann|| X || gh|| Lachs ||Testtool||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Bustamam Harun||   || bustamam||||Malaysian stuff||&lt;br /&gt;
|-&lt;br /&gt;
| Kevin Hendricks|| X || khendricks||||PL Lingucomponent, PowerPC||&lt;br /&gt;
|-&lt;br /&gt;
| Con Hennessy||   || cphennessy||cph2 or cph_||hacker &amp;amp;amp; former council person||OpenApp&lt;br /&gt;
|-&lt;br /&gt;
| Ivo Hinkelmann|| X || ihi||ivo||l10n tooling/general/RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Eric Hoch|| X || maveric||mav_eric||Mac Porting||&lt;br /&gt;
|-&lt;br /&gt;
| Jan Holešovský|| X || kendy||kendy||KDE integration||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Martin Hollmichel|| X || mh||Ratte/Nesshof||Build Maestro, PL External, Tools, Porting, CC||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Karl Hong|| X || khong||||i18n, CJK expert||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Matthias Huetsch|| X || mhu||||Performance/strategy, PL UCB, CC, ESC||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Hönnig|| X || mi||||PL API||&lt;br /&gt;
|-&lt;br /&gt;
| [[User:icobgr|Hristo Hristov]] ||   || icobgr || icobgr || PL Bulgarian native-lang project ||&lt;br /&gt;
|-&lt;br /&gt;
| Sven Jacobi|| X || sj||||Escherwizard||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Jahnke||   || jj||||Internal tooling||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christian Jansen||   || cj ||||Menu and Toolbar?||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ocke Janssen|| X || oj||Base||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Pavel Janík|| X || pjanik||paveljanik||PL Czech native-lang project, CL l10n, CC, ESC, l10n builds||&lt;br /&gt;
|-&lt;br /&gt;
| Berry Jia|| X || berryjia||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Pascal Junck||   || pjunck||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christian Junker||   || Cyb||christianju||API||Trees For Life&lt;br /&gt;
|-&lt;br /&gt;
| Hirano Kazunari||   || khirano||||Japanese||&lt;br /&gt;
|-&lt;br /&gt;
| Dhananjay Keskar|| X || dkeskar ||dkeskar||Performance,Buildbot,cat-herder||Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
| Robert Kinsella||   || rkinsella||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Volodymyr Khrystynych||   || volody||||XML Filter||&lt;br /&gt;
|-&lt;br /&gt;
| Matthias Klose||   || doko||doko||Ubuntu, gcc, python packager||Canonical, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Laszlo Kovacs||   || lkovacs||||Documentation||&lt;br /&gt;
|-&lt;br /&gt;
| Martin Kretzschmar|| X || mkretzschmar||martink||Gnome / Debian||Student&lt;br /&gt;
|-&lt;br /&gt;
| Will Lachance||   || wlach||wlach_||Word Perfect File Filters||Net Integration Technologies, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Thomas Lange|| X || tl||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Lars Langhans|| X || lla||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Hans-Joachim Lankenau|| X || hjs||ause||dmake makefile expert, RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Németh László|| X || nemeth||||PL lingucomponent||&lt;br /&gt;
|-&lt;br /&gt;
| Michael Leibowitz||  X || mikeleib ||mikeleib||performance||Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
| Wind Li|| X || windly||||Address books||&lt;br /&gt;
|-&lt;br /&gt;
| Ping Liao||   || pliao||||||&lt;br /&gt;
|-&lt;br /&gt;
| Tor Lillqvist|| X || tml||tml_||||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Joachim Lingner|| X || jl||||Java, CLI||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christian Lippka|| X || cl||ChristianL||Graphic Applications||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Mindy Liu||   || mindyliu||||||&lt;br /&gt;
|-&lt;br /&gt;
| Dieter Loeschky|| X || ||||Localization||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Philipp Lohmann|| X || pl||pl_hh||VCL/X11 (GSL) hacker||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jackson Low|| X || xxjack12xx||||Porting||&lt;br /&gt;
|-&lt;br /&gt;
| Patrick Luby||   || pluby||||Mac||&lt;br /&gt;
|-&lt;br /&gt;
| Prasad Madhav || X || pmadhav || pmadhav || Buildbot || Intern@Intel &lt;br /&gt;
|-&lt;br /&gt;
| Babak Mahbod||   || bmahbod||||||&lt;br /&gt;
|-&lt;br /&gt;
| Martin Maher||   || mmaher||||Writer &amp;amp;amp; Filter chap||&lt;br /&gt;
|-&lt;br /&gt;
| Nakata Maho|| X || maho||_maho_||FreeBSD guy||Independent&lt;br /&gt;
|-&lt;br /&gt;
| John Marmion|| X || jmarmion||||||&lt;br /&gt;
|-&lt;br /&gt;
| Andreas Martens|| X || ama||||PL Writer||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Caolán McNamara|| X || cmc||caolan||CL Writer &amp;amp;amp; Filter man||RedHat, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Michael Meeks|| X || mmeeks||michael_||ugly hack-er, ESC||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Frank Meies|| X || fme||||Writer||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Federico Mena-Quintero||   || federicomena||federico||perfectionist||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Michael Mi||   || mmi||||||&lt;br /&gt;
|-&lt;br /&gt;
| Björn Milcke|| X || bm||bm_||Chart||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Petr Mladek||   || pmladek||pmladek||SUSE RPMs, ooo-build releases||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Cyrille Moureaux|| X || cyrillem||Cyrille||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Mmp|Matthias Müller-Prove]]|| || mmp|| || [[OpenOffice.org User Experience]] Engineer, http://ui.openoffice.org || Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Niklas Nebel|| X || nn||||PL Calc||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christoph Neumann|| X || cn||||API tests||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| NicelKM|| X || mnicel||nicel||||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Bertram Nolte||   || bnolte||||||&lt;br /&gt;
|-&lt;br /&gt;
| Tomas O&amp;#039;Connor||   || toconnor||||Scripting Framework||&lt;br /&gt;
|-&lt;br /&gt;
| Lars Oppermann|| X || lo||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Rodrigo Parra Novo|| X || rodarvus||rodarvus||Gnumeric/Abiword OpenDocument Format support and port to Maemo||INdT (Instituto Nokia de Tecnologia)&lt;br /&gt;
|-&lt;br /&gt;
| Edward Peterlin|| X || OPENSTEP||||Mac||&lt;br /&gt;
|-&lt;br /&gt;
| Frank Peters|| X || fpe||||Documentation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christof Pintaske|| X || cp||||Calc||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ron Piterman||   || rpiterman||||||&lt;br /&gt;
|-&lt;br /&gt;
| Noel Power||   || npower||noelp||VBA Interop, Scripting||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Nikolai Pretzell|| X || np || ||Autodoc, code quality philosopher||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Volker Quetschke||   || vq||vq||Windows Build Genius||Gravity Waves&lt;br /&gt;
|-&lt;br /&gt;
| Tino Rachui|| X || tra||tinor||GSL/Unix Hacker||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Kr|Kay Ramme]]|| X || kr||||PL UDK||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ErAck|Eike Rathke]]|| X || er||erAck||CL Calc, engine; CL i18n; stricken with number formatter||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Rauch|| X || mrauch||||NetBSD||&lt;br /&gt;
|-&lt;br /&gt;
| Jens-Heiner Rechtien|| X || hr||blauwal||RE; OOo SCM (CVS, CWS tooling); Porting; Compilers||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Rentz|| X || dr||||Calc Excel filter, UI||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Florian Reuter|| X || flr||||Writer filters||&lt;br /&gt;
|-&lt;br /&gt;
| Georg Richter|| X || grichter||georg||Base, native MySQL driver||MySQL AB&lt;br /&gt;
|-&lt;br /&gt;
| G. Roderick Singleton||   || grsingleton||grsingleton||Documentation||pathtech.org&lt;br /&gt;
|-&lt;br /&gt;
| Hennes Rohling|| X || hro||||GSL &amp;amp;amp; Util||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Bibek Sahu||   || Bibek||bibek||Impress pieces||Trees For Life&lt;br /&gt;
|-&lt;br /&gt;
| Andreas Schlüns|| X || as||||Framework||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ingo Schmidt|| X || is||||(Native) Installation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jürgen Schmidt|| X || jsc||||PL API, UNO, SDK||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Stephan Schäfer|| X || ssa||ssa||VCL||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Frank Schönheit|| X || fs||FrankS||Database Access, Forms||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Julian Seward || || sewardj || || valgrind ||&lt;br /&gt;
|-&lt;br /&gt;
| Darragh Sherwin||   || dsherwin||darragh||E-Legislation / E-GovSystems||Propylon&lt;br /&gt;
|-&lt;br /&gt;
| Raul Siddhartha||   || rsiddhartha||raul||GTK File Selector||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Sarah Smith||   || ssmith||||||&lt;br /&gt;
|-&lt;br /&gt;
| Rajesh Sola||   || rajeshsola||sola||misc.||NOSIP&lt;br /&gt;
|-&lt;br /&gt;
| Kai Sommerfeld|| X || kso||||manager &amp;amp;amp; hacker||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Specht|| X || os||||PL UI||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Spindler||   || jspindler||||||&lt;br /&gt;
|-&lt;br /&gt;
| Fridrich Štrba|| X || fridrich_strba||Fridrich||Word Perfect Hacker||&lt;br /&gt;
|-&lt;br /&gt;
| Ulf Stroehler||   || us||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Muthu Subramanian||   || muthusuba||muthusuba||misc.||&lt;br /&gt;
|-&lt;br /&gt;
| Louis Suárez-Potts||   || louis||louis||Community Manager||Collab.net&lt;br /&gt;
|-&lt;br /&gt;
| Claus Sørensen||   || cs||c26n,cHBs,chbs||Danish Localization and Project Management Tool(oopm)||ProFOSS&lt;br /&gt;
|-&lt;br /&gt;
| Stefan Taxhet|| X || st||stx12||CC, interpersonal problem fixer||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Armin Theissen||   || armin||||||&lt;br /&gt;
|-&lt;br /&gt;
| Caio Tiago Oliveira|| X || asrail||asrail||QA||Independent&lt;br /&gt;
|-&lt;br /&gt;
| Jan Tietjens||   || tietjens||||||&lt;br /&gt;
|-&lt;br /&gt;
| Rüdiger Timm|| X || rt||||RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Malte Timmermann|| X || mt||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Gerhard Tonn||   || tonn||||s390||&lt;br /&gt;
|-&lt;br /&gt;
| Willem van Dorp||   || willem.vandorp||||||&lt;br /&gt;
|-&lt;br /&gt;
| Tom Verbeek|| X || tv||||Wizards, Art team||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Sander Vesik||   || svesik||||||&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Vogelheim|| X || dvo||||XML||&lt;br /&gt;
|-&lt;br /&gt;
| Mikhail Voitenko|| X || mav||Framework||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Robert Vojta|| X || rvojta||rvojta||VBA Interop||&lt;br /&gt;
|-&lt;br /&gt;
| Dirk Völzke|| X || dv||||Installation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Sparcmoz|Jim Watson]]|| X || sparcmoz|| sparcmoz||GNU Linux sparc porter||clug.org.au&lt;br /&gt;
|-&lt;br /&gt;
| Armin Weiss|| X || aw||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Dan Williams|| X || fa||dcbw||Mac et. al. hacker||RedHat, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Stephan Wunderlich|| X || sw||||||&lt;br /&gt;
|-&lt;br /&gt;
| Kohei Yoshida|| X || kohei||kohei_||Calc hacker, Calc optimization solver developer||SlickEdit, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| George Zahopoulos|| X || georgez||||||&lt;br /&gt;
|-&lt;br /&gt;
| Kurt Zenker|| X || kz||smoketester||RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Claudio F Filho||   || filhocf||filhocf||Brazilian portuguese Localization||BrOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| Xiaoyang Yu||   || || ||Disk block reordering||Intel Corporation &lt;br /&gt;
|- &lt;br /&gt;
| Antonio Xu|| X || antoxu || antoxu || Async dialogs, PRC improvements || Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
| Rail Aliev || X  || rail || rail ||  Ru and Tr NL Co-lead || Infra-Resource &lt;br /&gt;
|-&lt;br /&gt;
| Jeremy Zheng|| X || zhiming || Jeremy || Async dialogs, PRC improvements || Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Schmidtm|Matthias Schmidt]] ||   || schmidtm || schmidtm || Mac OSX Aqua Port || Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== QA Engineers ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || @openoffice.org || IRC nick || Interested modules || Notes || Affiliation&lt;br /&gt;
|-&lt;br /&gt;
| Stefan Baltzer||sba||||writer||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Craemer||oc||||calc||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Hasan Ilter||hi||||writer, printing, pdf export||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Rüß||mru||||writer, word im/export||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Éric Savary||es||||writer, accessibility||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Joerg Skottke||jsk||skotti||||QA framework / Automation framework||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Marc Neumann||msc||||database||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Chris Lukasiak||clu||||database||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Frank Stecher||fst||||calc||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jack Warchold|| jw||||writer, import/export filters||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Uwe Luebbers||ul||||framework||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Thorsten Martens||tm||||framework||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Olaf Felka||of||||framework, installation||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Thomas Klarhoefer||kla||||chart||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Wolfram Garten||wg||||draw, impress||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christian Guenther||cgu||||draw, impress||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Thorsten Ziehm|| thorstenziehm||||||QA lead||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are tracking pending JCAs in the document [[Pending JCAs]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A map of OOo developers around the world is available at http://www.frappr.com/ooodev, please add yourself to the map if you&amp;#039;re involved in OOo development. It&amp;#039;s just fun to see who&amp;#039;s where :-)&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=DomainDeveloper&amp;diff=17194</id>
		<title>DomainDeveloper</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=DomainDeveloper&amp;diff=17194"/>
		<updated>2006-09-21T10:14:40Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A mapping of names to OOo accounts.&lt;br /&gt;
&lt;br /&gt;
Abbrev.:&lt;br /&gt;
&lt;br /&gt;
* PL : Project Lead&lt;br /&gt;
* CL : Project Co-Lead&lt;br /&gt;
* CC : Community Council Member&lt;br /&gt;
* ESC : Engineering Steering Committee Member &lt;br /&gt;
* CVS : has write access to the OOo CVS repository&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Developers ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || CVS || @openoffice.org || IRC nick || Notes || Affiliation&lt;br /&gt;
|-&lt;br /&gt;
|      ||     ||                 ||          ||       ||  &lt;br /&gt;
|-&lt;br /&gt;
| Volker Ahrend||   || va||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Kai Ahrens|| X || ka || Kai_Ahrens ||PL Graphic Applications||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Gene Anaya||   || ganaya||||||&lt;br /&gt;
|-&lt;br /&gt;
| Joost Andrae|| X || ja||ja||CL qa, release testing en-US builds and releasing builds||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Eric Bachard|| X || ericb||ericb2||Mac OSX/Linux PPC ports/CL porting||French OOo project&lt;br /&gt;
|-&lt;br /&gt;
| Kai Backman||  || kaib ||KaiB||||&lt;br /&gt;
|-&lt;br /&gt;
| Sascha Ballach|| X || sab||||||&lt;br /&gt;
|-&lt;br /&gt;
| Jayant Balraj Madavi||   || jayant_madavi||aZEN_JM||Connectivity / Database||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Barfurth|| X || jb||JoergB||Configuration Util||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Mathias Bauer|| X || mba||||PL Framework, XML||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Thorsten Behrens|| X || thb||thorsten||vcl/impress/toolkit visionary||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Thomas Benisch|| X || tbe||||Scripting framework||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Stefan Bergmann|| X || sb||||CL UDK, tools&amp;amp;amp;UCB hacker||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Andreas Bille|| X || abi||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Éric Bischoff|| X || ebischoff||ebischoff||KDE A/B driver||Bureau Cornavin&lt;br /&gt;
|-&lt;br /&gt;
| Nick Blievers|| X || nick||||IRIX||&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Boelzle|| X || dbo||||UNO core/bridges/packages||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Bolte|| X || obo||||RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Rafaella Braconi||   || coni||||CL l10n, globalization program manager||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Brauer|| X || mib||||PL XML||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Braun|| X || obr||obr||System Integration/Accessibility Hacker||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Andreas Bregas|| X || ab||||StarBasic||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Brunsmann||   || jbrunsmann||||UDK||&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Budischewski||   || jbu||PyUNO hacker||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Peter Burow|| X  || pb||UI||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Aidan Butler||   || aidan||||XML filters||&lt;br /&gt;
|-&lt;br /&gt;
| Giuseppe Castagno || X || beppec56 || beppec56_  or beppe_c || PDF output&lt;br /&gt;
|-&lt;br /&gt;
| Scott Carr||   || kcarr||kcarr||Documentation||Progbits&lt;br /&gt;
|-&lt;br /&gt;
| Colin Charles||   || drbyte||bytee||Malaysian native-lang project||bytebot.net&lt;br /&gt;
|-&lt;br /&gt;
| Behrend Cornelius|| X || bc||||Wizards||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Cziebalski||   || mci||||||&lt;br /&gt;
|-&lt;br /&gt;
| Pierre de Filippis|| X || pdefilippis||aliscafo||Mac OSX native porting||&lt;br /&gt;
|-&lt;br /&gt;
| Andrew Dent|| X ||ace_dent||ace_dent||ui/custom_images||&lt;br /&gt;
|-&lt;br /&gt;
| Naren Devaiah||   || ||ndev||Performance||Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
| Nitin Dongre||   || ||nitin_BITS||||Novell, Inc.(intern)&lt;br /&gt;
|-&lt;br /&gt;
| Radek Doulik||   || radekdoulik||rodo_||Canvas hacker||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Carsten Driesner|| X || cd||||Framework||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Herbert Duerr|| X || hdu||hdu_hh||GSL||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Düsterhoff|| X || od||Writer||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Eilers|| X || bei||rfc821||EIS||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| René Engelhard|| X || rene||_rene_||config_office, Debian packager||Debian&lt;br /&gt;
|-&lt;br /&gt;
| Andre Fischer|| X || af||||Impress||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Uwe Fischer || || ufi || || || Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ken Foskey||   || waratah||waratah||config_office/dmake man||slug.org.au&lt;br /&gt;
|-&lt;br /&gt;
| Duncan Foster||   || dfoster||||||&lt;br /&gt;
|-&lt;br /&gt;
| David Fraser||   || davidfraser||davidfraser||South African translations, multilingual builds||translate.org.za&lt;br /&gt;
|-&lt;br /&gt;
| Nils Fuhrmann||   || nf||||Localization||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Martin Gallwey|| X || mtg||marty_||XML/Writer/packaging||&lt;br /&gt;
|-&lt;br /&gt;
| Pierre-Andre Galmes || || pagalmes || pagalmes || Chart2 ||&lt;br /&gt;
|-&lt;br /&gt;
| Tony Galmiche|| X || tonygalmiche||||CL FR native-lang project||&lt;br /&gt;
|-&lt;br /&gt;
| Sunil Gandhi||   || ||tyro||||NOSIP&lt;br /&gt;
|-&lt;br /&gt;
| Sophie Gautier|| X || sgauti|| sophi ||PL FR native-lang project, CC ||.&lt;br /&gt;
|-&lt;br /&gt;
| Vladimir Glazounov|| X || vg||||RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Laurent Godard || X || laurentgodard || lgodard || CC, PL Extensions, Fr Native-lang Project || inDesko/Nuxeo &lt;br /&gt;
|-&lt;br /&gt;
| Jody Goldberg|| X || jodygoldberg||jody||spreadsheet-ness||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Dirk Grobler|| X || dg||||Database Access||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Bettina Haberer||   || bh||||RFEOwner||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ingrid Halama|| X || iha||||Chart||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Chris Halls|| X || haggai||haggai||Debian packager&amp;amp;amp;misc. hacker||Credativ Ltd., Debian&lt;br /&gt;
|-&lt;br /&gt;
| Gregor Hartmann|| X || gh|| Lachs ||Testtool||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Bustamam Harun||   || bustamam||||Malaysian stuff||&lt;br /&gt;
|-&lt;br /&gt;
| Kevin Hendricks|| X || khendricks||||PL Lingucomponent, PowerPC||&lt;br /&gt;
|-&lt;br /&gt;
| Con Hennessy||   || cphennessy||cph2 or cph_||hacker &amp;amp;amp; former council person||OpenApp&lt;br /&gt;
|-&lt;br /&gt;
| Ivo Hinkelmann|| X || ihi||ivo||l10n tooling/general/RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Eric Hoch|| X || maveric||mav_eric||Mac Porting||&lt;br /&gt;
|-&lt;br /&gt;
| Jan Holešovský|| X || kendy||kendy||KDE integration||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Martin Hollmichel|| X || mh||Ratte/Nesshof||Build Maestro, PL External, Tools, Porting, CC||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Karl Hong|| X || khong||||i18n, CJK expert||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Matthias Huetsch|| X || mhu||||Performance/strategy, PL UCB, CC, ESC||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Hönnig|| X || mi||||PL API||&lt;br /&gt;
|-&lt;br /&gt;
| [[User:icobgr|Hristo Hristov]] ||   || icobgr || icobgr || PL Bulgarian native-lang project ||&lt;br /&gt;
|-&lt;br /&gt;
| Sven Jacobi|| X || sj||||Escherwizard||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Jahnke||   || jj||||Internal tooling||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christian Jansen||   || cj ||||Menu and Toolbar?||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ocke Janssen|| X || oj||Base||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Pavel Janík|| X || pjanik||paveljanik||PL Czech native-lang project, CL l10n, CC, ESC, l10n builds||&lt;br /&gt;
|-&lt;br /&gt;
| Berry Jia|| X || berryjia||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Pascal Junck||   || pjunck||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christian Junker||   || Cyb||christianju||API||Trees For Life&lt;br /&gt;
|-&lt;br /&gt;
| Hirano Kazunari||   || khirano||||Japanese||&lt;br /&gt;
|-&lt;br /&gt;
| Dhananjay Keskar|| X || dkeskar ||dkeskar||Performance,Buildbot,cat-herder||Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
| Robert Kinsella||   || rkinsella||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Volodymyr Khrystynych||   || volody||||XML Filter||&lt;br /&gt;
|-&lt;br /&gt;
| Matthias Klose||   || doko||doko||Ubuntu, gcc, python packager||Canonical, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Laszlo Kovacs||   || lkovacs||||Documentation||&lt;br /&gt;
|-&lt;br /&gt;
| Martin Kretzschmar|| X || mkretzschmar||martink||Gnome / Debian||Student&lt;br /&gt;
|-&lt;br /&gt;
| Will Lachance||   || wlach||wlach_||Word Perfect File Filters||Net Integration Technologies, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Thomas Lange|| X || tl||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Lars Langhans|| X || lla||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Hans-Joachim Lankenau|| X || hjs||ause||dmake makefile expert, RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Németh László|| X || nemeth||||PL lingucomponent||&lt;br /&gt;
|-&lt;br /&gt;
| Michael Leibowitz||  X || mikeleib ||mikeleib||performance||Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
| Wind Li|| X || windly||||Address books||&lt;br /&gt;
|-&lt;br /&gt;
| Ping Liao||   || pliao||||||&lt;br /&gt;
|-&lt;br /&gt;
| Tor Lillqvist|| X || tml||tml_||||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Joachim Lingner|| X || jl||||Java, CLI||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christian Lippka|| X || cl||ChristianL||Graphic Applications||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Mindy Liu||   || mindyliu||||||&lt;br /&gt;
|-&lt;br /&gt;
| Dieter Loeschky|| X || ||||Localization||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Philipp Lohmann|| X || pl||pl_hh||VCL/X11 (GSL) hacker||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jackson Low|| X || xxjack12xx||||Porting||&lt;br /&gt;
|-&lt;br /&gt;
| Patrick Luby||   || pluby||||Mac||&lt;br /&gt;
|-&lt;br /&gt;
| Prasad Madhav || X || pmadhav || pmadhav || Buildbot || Intern@Intel &lt;br /&gt;
|-&lt;br /&gt;
| Babak Mahbod||   || bmahbod||||||&lt;br /&gt;
|-&lt;br /&gt;
| Martin Maher||   || mmaher||||Writer &amp;amp;amp; Filter chap||&lt;br /&gt;
|-&lt;br /&gt;
| Nakata Maho|| X || maho||_maho_||FreeBSD guy||Independent&lt;br /&gt;
|-&lt;br /&gt;
| John Marmion|| X || jmarmion||||||&lt;br /&gt;
|-&lt;br /&gt;
| Andreas Martens|| X || ama||||PL Writer||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Caolán McNamara|| X || cmc||caolan||CL Writer &amp;amp;amp; Filter man||RedHat, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Michael Meeks|| X || mmeeks||michael_||ugly hack-er, ESC||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Frank Meies|| X || fme||||Writer||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Federico Mena-Quintero||   || federicomena||federico||perfectionist||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Michael Mi||   || mmi||||||&lt;br /&gt;
|-&lt;br /&gt;
| Björn Milcke|| X || bm||bm_||Chart||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Petr Mladek||   || pmladek||pmladek||SUSE RPMs, ooo-build releases||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Cyrille Moureaux|| X || cyrillem||Cyrille||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Mmp|Matthias Müller-Prove]]|| || mmp|| || [[OpenOffice.org User Experience]] Engineer, http://ui.openoffice.org || Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Niklas Nebel|| X || nn||||PL Calc||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christoph Neumann|| X || cn||||API tests||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| NicelKM|| X || mnicel||nicel||||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Bertram Nolte||   || bnolte||||||&lt;br /&gt;
|-&lt;br /&gt;
| Tomas O&amp;#039;Connor||   || toconnor||||Scripting Framework||&lt;br /&gt;
|-&lt;br /&gt;
| Lars Oppermann|| X || lo||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Rodrigo Parra Novo|| X || rodarvus||rodarvus||Gnumeric/Abiword OpenDocument Format support and port to Maemo||INdT (Instituto Nokia de Tecnologia)&lt;br /&gt;
|-&lt;br /&gt;
| Edward Peterlin|| X || OPENSTEP||||Mac||&lt;br /&gt;
|-&lt;br /&gt;
| Frank Peters|| X || fpe||||Documentation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christof Pintaske|| X || cp||||Calc||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ron Piterman||   || rpiterman||||||&lt;br /&gt;
|-&lt;br /&gt;
| Noel Power||   || npower||noelp||VBA Interop, Scripting||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Nikolai Pretzell|| X || np || ||Autodoc, code quality philosopher||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Volker Quetschke||   || vq||vq||Windows Build Genius||Gravity Waves&lt;br /&gt;
|-&lt;br /&gt;
| Tino Rachui|| X || tra||tinor||GSL/Unix Hacker||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Kr|Kay Ramme]]|| X || kr||||PL UDK||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ErAck|Eike Rathke]]|| X || er||erAck||CL Calc, engine; CL i18n; stricken with number formatter||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Rauch|| X || mrauch||||NetBSD||&lt;br /&gt;
|-&lt;br /&gt;
| Jens-Heiner Rechtien|| X || hr||blauwal||RE; OOo SCM (CVS, CWS tooling); Porting; Compilers||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Rentz|| X || dr||||Calc Excel filter, UI||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Florian Reuter|| X || flr||||Writer filters||&lt;br /&gt;
|-&lt;br /&gt;
| Georg Richter|| X || grichter||georg||Base, native MySQL driver||MySQL AB&lt;br /&gt;
|-&lt;br /&gt;
| G. Roderick Singleton||   || grsingleton||grsingleton||Documentation||pathtech.org&lt;br /&gt;
|-&lt;br /&gt;
| Hennes Rohling|| X || hro||||GSL &amp;amp;amp; Util||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Bibek Sahu||   || Bibek||bibek||Impress pieces||Trees For Life&lt;br /&gt;
|-&lt;br /&gt;
| Andreas Schlüns|| X || as||||Framework||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ingo Schmidt|| X || is||||(Native) Installation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jürgen Schmidt|| X || jsc||||PL API, UNO, SDK||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Stephan Schäfer|| X || ssa||ssa||VCL||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Frank Schönheit|| X || fs||FrankS||Database Access, Forms||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Julian Seward || || sewardj || || valgrind ||&lt;br /&gt;
|-&lt;br /&gt;
| Darragh Sherwin||   || dsherwin||darragh||E-Legislation / E-GovSystems||Propylon&lt;br /&gt;
|-&lt;br /&gt;
| Raul Siddhartha||   || rsiddhartha||raul||GTK File Selector||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Sarah Smith||   || ssmith||||||&lt;br /&gt;
|-&lt;br /&gt;
| Rajesh Sola||   || rajeshsola||sola||misc.||NOSIP&lt;br /&gt;
|-&lt;br /&gt;
| Kai Sommerfeld|| X || kso||||manager &amp;amp;amp; hacker||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Specht|| X || os||||PL UI||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Spindler||   || jspindler||||||&lt;br /&gt;
|-&lt;br /&gt;
| Fridrich Štrba|| X || fridrich_strba||Fridrich||Word Perfect Hacker||&lt;br /&gt;
|-&lt;br /&gt;
| Ulf Stroehler||   || us||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Muthu Subramanian||   || muthusuba||muthusuba||misc.||&lt;br /&gt;
|-&lt;br /&gt;
| Louis Suárez-Potts||   || louis||louis||Community Manager||Collab.net&lt;br /&gt;
|-&lt;br /&gt;
| Claus Sørensen||   || cs||c26n,cHBs,chbs||Danish Localization and Project Management Tool(oopm)||ProFOSS&lt;br /&gt;
|-&lt;br /&gt;
| Stefan Taxhet|| X || st||stx12||CC, interpersonal problem fixer||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Armin Theissen||   || armin||||||&lt;br /&gt;
|-&lt;br /&gt;
| Caio Tiago Oliveira|| X || asrail||asrail||QA||Independent&lt;br /&gt;
|-&lt;br /&gt;
| Jan Tietjens||   || tietjens||||||&lt;br /&gt;
|-&lt;br /&gt;
| Rüdiger Timm|| X || rt||||RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Malte Timmermann|| X || mt||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Gerhard Tonn||   || tonn||||s390||&lt;br /&gt;
|-&lt;br /&gt;
| Willem van Dorp||   || willem.vandorp||||||&lt;br /&gt;
|-&lt;br /&gt;
| Tom Verbeek|| X || tv||||Wizards, Art team||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Sander Vesik||   || svesik||||||&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Vogelheim|| X || dvo||||XML||&lt;br /&gt;
|-&lt;br /&gt;
| Mikhail Voitenko|| X || mav||Framework||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Robert Vojta|| X || rvojta||rvojta||VBA Interop||&lt;br /&gt;
|-&lt;br /&gt;
| Dirk Völzke|| X || dv||||Installation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Sparcmoz|Jim Watson]]|| X || sparcmoz|| sparcmoz||GNU Linux sparc porter||clug.org.au&lt;br /&gt;
|-&lt;br /&gt;
| Armin Weiss|| X || aw||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Dan Williams|| X || fa||dcbw||Mac et. al. hacker||RedHat, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Stephan Wunderlich|| X || sw||||||&lt;br /&gt;
|-&lt;br /&gt;
| Kohei Yoshida|| X || kohei||kohei_||Calc hacker, Calc optimization solver developer||SlickEdit, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| George Zahopoulos|| X || georgez||||||&lt;br /&gt;
|-&lt;br /&gt;
| Kurt Zenker|| X || kz||smoketester||RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Claudio F Filho||   || filhocf||filhocf||Brazilian portuguese Localization||BrOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| Xiaoyang Yu||   || || ||Disk block reordering||Intel Corporation &lt;br /&gt;
|- &lt;br /&gt;
| Antonio Xu|| X || antoxu || antoxu || Async dialogs, PRC improvements || Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
| Rail Aliev || X  || rail || rail ||  Ru and Tr NL Co-lead || Infra-Resource &lt;br /&gt;
|-&lt;br /&gt;
| Jeremy Zheng|| X || zhiming || Jeremy || Async dialogs, PRC improvements || Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Schmidtm|Matthias Schmidt]] ||   || schmidtm || schmidtm || Mac OSX Aqua Port || Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== QA Engineers ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || @openoffice.org || IRC nick || Interested modules || Notes || Affiliation&lt;br /&gt;
|-&lt;br /&gt;
| Stefan Baltzer||sba||||writer||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Craemer||oc||||calc||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Hasan Ilter||hi||||writer, printing, pdf export||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Rüß||mru||||writer, word im/export||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Éric Savary||es||||writer, accessibility||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Joerg Skottke||jsk||skotti||||QA framework / Automation framework||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Marc Neumann||msc||||database||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Chris Lukasiak||clu||||database||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Frank Stecher||fst||||calc||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jack Warchold|| jw||||writer, import/export filters||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Uwe Luebbers||ul||||framework||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Thorsten Martens||tm||||framework||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Olaf Felka||of||||framework, installation||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Thomas Klarhoefer||kla||||chart||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Wolfram Garten||wg||||draw, impress||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christian Guenther||cgu||||draw, impress||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Thorsten Ziehm|| thorstenziehm||||||QA lead||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are tracking pending JCAs in the document [[Pending JCAs]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A map of OOo developers around the world is available at http://www.frappr.com/ooodev, please add yourself to the map if you&amp;#039;re involved in OOo development. It&amp;#039;s just fun to see who&amp;#039;s where :-)&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Scrollbar&amp;diff=16942</id>
		<title>Mac OS X Porting - Scrollbar</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Scrollbar&amp;diff=16942"/>
		<updated>2006-09-18T02:07:05Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Scrollbar=&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
* Eric Bachard: [[User:Ericb|Ericb]]&lt;br /&gt;
* Pierre de Filippis: [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is first to present our current knowledge of the implementation of scrollbars in the native Mac OS X version of OpenOffice.org and second to be a tutorial on how to create scrollbars with HITheme.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Conceptual/ProgAppearance_Manager/index.html Inside Carbon: Appearance Manager]&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
As stated on the Native Controls page, HITheme is the new version of the Appearance Manager. Apple is pushing developers to use it since they are not supporting the AE anymore. But to make the transition easy Apple made the HITheme API very close to the AE. For example both  have functions with very similar name and both share the same constants. You can always refer back to the AE to find the list of these constants and use them in HITheme functions.&lt;br /&gt;
&lt;br /&gt;
==The Track==&lt;br /&gt;
The Appearance Manager hence HITheme group controls under 2 categories: buttons and tracks. Is considered a track: various types of rectangular controls including scroll bars, sliders, and progress bars.&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:Pdefilippis&amp;diff=16797</id>
		<title>User:Pdefilippis</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:Pdefilippis&amp;diff=16797"/>
		<updated>2006-09-14T17:35:06Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Articles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Developer ID===&lt;br /&gt;
* Name: Pierre de Filippis&lt;br /&gt;
* User ID: pdefilippis&lt;br /&gt;
* Blog: [http://aliscafo.blogspot.com/ http://aliscafo.blogspot.com/]&lt;br /&gt;
* Website: [http://www.aliscafo.com/ http://www.aliscafo.com/]&lt;br /&gt;
* IRC Nickname: aliscafo&lt;br /&gt;
* E-mail: [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
===Current Work===&lt;br /&gt;
I am working on the implementation of native controls for the native Mac OS X version of OpenOffice.org.&lt;br /&gt;
&lt;br /&gt;
===Articles===&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Scrollbar Native Scrollbar] (2006-09-13)&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Native_Controls Native Controls] (2006-09-02)&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Intro_To_Mac_Porting Intro To Mac Porting] (2006-08-23)&lt;br /&gt;
&lt;br /&gt;
===How did I become an OOo developer?===&lt;br /&gt;
I first joined the Mac OS X porting team as a member of the Google Summer of Code 2006 program. I spent my Summer learning about OOo&amp;#039; source code and VCL in particular. I was able to add the Fullscreen capability and worked on some geometrical shapes representation. After the end of the program I decided to keep contributing for two reasons. First it is very interesting and it gives me the opportunity of acquiring a valuable experience. Second it wouldn&amp;#039;t have made sense to just stop after spending a lot of time learning the structure of VCL, the features of the Carbon API and how to use them.&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Scrollbar&amp;diff=16780</id>
		<title>Mac OS X Porting - Scrollbar</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Scrollbar&amp;diff=16780"/>
		<updated>2006-09-14T02:22:43Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Scrollbar=&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
* Eric Bachard: [[User:Ericb|Ericb]]&lt;br /&gt;
* Pierre de Filippis: [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is first to present our current knowledge of the implementation of scrollbars in the native Mac OS X version of OpenOffice.org and second to be a tutorial on how to create scrollbars with HITheme.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Conceptual/ProgAppearance_Manager/index.html Inside Carbon: Appearance Manager]&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
As stated on the Native Controls page, HITheme is the new version of the Appearance Manager. Apple is pushing developers to use it since they are not supporting the AE anymore. But to make the transition easy Apple made the HITheme API very close to the AE. For example both  have functions with very similar name and both share the same constants. You can always refer back to the AE to find the list of these constants and use them in HITheme functions.&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Scrollbar&amp;diff=16777</id>
		<title>Mac OS X Porting - Scrollbar</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Scrollbar&amp;diff=16777"/>
		<updated>2006-09-13T20:55:47Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
* Eric Bachard: [[User:Ericb|Ericb]]&lt;br /&gt;
* Pierre de Filippis: [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is first to present our current knowledge of the implementation of scrollbars in the native Mac OS X version of OpenOffice.org and second to be a tutorial on how to create scrollbars with HITheme.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Conceptual/ProgAppearance_Manager/index.html Inside Carbon: Appearance Manager]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:Ericb&amp;diff=16776</id>
		<title>User:Ericb</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:Ericb&amp;diff=16776"/>
		<updated>2006-09-13T15:28:05Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Important Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Public Documentation License Notice==&lt;br /&gt;
&lt;br /&gt;
The contents of this Documentation (excepted Native Port Roadmap),are subject to the Public Documentation License Version 1.0 (the &amp;quot;License&amp;quot;); you may only use this Documentation if you comply with the terms of this License. A copy of the License is available at http://www.openoffice.org/licenses/PDL.html.&lt;br /&gt;
The Original Documentation is &amp;quot;Mac OS X native port&amp;quot;. The Initial Writer of the Original Documentation is (JCA) Eric Bachard (C) 2005-2006. All Rights Reserved. (Initial Writer contact(s): ericb@openoffice.org.)&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Mac OS X Native port&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;messagebox cleanup metadata&amp;quot; style=&amp;quot;border:1px solid blue;background-color:#B3FFF5;padding:7px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The first Mac OS X native port objective is make OpenOffice.org run without X11 use, to make it a real Mac application.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The second one is respect Aqua Human interface Guidelines&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; This is a long term work, and every help and/or contributions, like donations** are welcome.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 **see http://contributing.openoffice.org/index.html&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Native Port Roadmap&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;2006&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
&lt;br /&gt;
*  June 2006 : work in progress &lt;br /&gt;
&lt;br /&gt;
- Basis : frame, instances, threads, drawing, painting, resizing (Stephan Schaefer, Tino Rachui )&lt;br /&gt;
&lt;br /&gt;
 Done : &lt;br /&gt;
 implement threads&lt;br /&gt;
 create, manage instance&lt;br /&gt;
 create, manage windows ( including parents)&lt;br /&gt;
 create, manage events&lt;br /&gt;
 create manage drawing, resizing&lt;br /&gt;
 create, add menus ( Pavel Janik )&lt;br /&gt;
 toggle window fullscreen( Pierre de Filippis )&lt;br /&gt;
 make font server work (Stephan Schaefer )&lt;br /&gt;
&lt;br /&gt;
* Current status font support (Stephan Schaefer, 2006/07/28): the following features are basically working now&lt;br /&gt;
** font selection&lt;br /&gt;
** font size&lt;br /&gt;
** simple font attributes (bold, italic)&lt;br /&gt;
&lt;br /&gt;
 Next step :  document first part, and propose design&lt;br /&gt;
&lt;br /&gt;
- native filepicker ( Oliver Braun )&lt;br /&gt;
&lt;br /&gt;
- native printing implementation  ( Oliver ? )&lt;br /&gt;
&lt;br /&gt;
- native font implementation  ( Eric Bachard )&lt;br /&gt;
&lt;br /&gt;
* September 2006 : &lt;br /&gt;
&lt;br /&gt;
- first proofs of concept :  fonts, filepicker .. (more ?)&lt;br /&gt;
- show the results ( OOoCon 2006 ? )&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;2007&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
&lt;br /&gt;
* January 2007 : first alpha implementation&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Strategy for native port&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Possible Actions&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
Identify us :&lt;br /&gt;
&lt;br /&gt;
#Complete the arrays below&lt;br /&gt;
#Update photos on frapr.com  ?&lt;br /&gt;
&lt;br /&gt;
Share the work :&lt;br /&gt;
&lt;br /&gt;
#Divide the work between little Teams&lt;br /&gt;
#Update Todo list regularly -&amp;gt; needs some love these days ... [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s]&lt;br /&gt;
&lt;br /&gt;
Help :&lt;br /&gt;
&lt;br /&gt;
#Teach tools between us&lt;br /&gt;
#Do a debug party on IRC&lt;br /&gt;
#write documentation&lt;br /&gt;
&lt;br /&gt;
Meet us :&lt;br /&gt;
&lt;br /&gt;
#IRC&lt;br /&gt;
#Mac Meeting  (like nov2005 in Hamburg ? )&lt;br /&gt;
&lt;br /&gt;
Inform:&lt;br /&gt;
&lt;br /&gt;
#Update website regularly&lt;br /&gt;
#Blogs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHO&amp;#039;&amp;#039;&amp;#039; :&lt;br /&gt;
&lt;br /&gt;
Mac Team :&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
|Developer \ skills || build || write code || code review || debug/trace (higher is better) || contribute to documentation ||&lt;br /&gt;
|-&lt;br /&gt;
|ericb|| x || x ||  || 1 || x ||&lt;br /&gt;
|-&lt;br /&gt;
|pjanik||  ||  ||  ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|ssa||  ||  || ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|maho||  ||  || ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|tinor||  ||  ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|schmidtm||  ||  ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|ebischoff||  ||  ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|obr||  ||  ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|cl||  ||  ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|aliscafo||  ||  ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|fheckl||  ||  ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|Fridrich||  ||  ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Other resources&amp;#039;&amp;#039;&amp;#039; :&lt;br /&gt;
&lt;br /&gt;
fonts: ?&lt;br /&gt;
&lt;br /&gt;
events: ?&lt;br /&gt;
&lt;br /&gt;
QA: ?&lt;br /&gt;
&lt;br /&gt;
graphical: ?&lt;br /&gt;
&lt;br /&gt;
Communication: ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHAT&amp;#039;&amp;#039;&amp;#039; : Status of most important tasks&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Task || Names|| Urgency (1=higher)|| Work in Progress || Done || Code review || Debug || Integration || &lt;br /&gt;
|-&lt;br /&gt;
|Get rid of X11|| || 1 || x || x || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Bundle|| || 1 || x || || || || | ||&lt;br /&gt;
|-&lt;br /&gt;
|Drawing|| || 1 || x ||  || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Fonts|| || 1 || x ||  || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Events management|| || 2 || x ||  || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Controls (see list)||ericb, aliscafo || 2 || x ||  || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native FilePicker|| || 3 || x || x || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native Printing|| || 3 || x ||  || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native SpellChecker|| || 4 ||  ||  || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Player|| || 4 || x ||  || || || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other tasks :&lt;br /&gt;
&lt;br /&gt;
Help for writing bug lists, status of bugs ..etc&lt;br /&gt;
&lt;br /&gt;
Write howto use gdb, leaks, other tools&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHEN&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
From Christian Lippka (last meeting, 25th of august 2006) : &lt;br /&gt;
 Aug 26 00:21:38 ChristianL	from my point of view what is missing for point 1: text layout, complete font support, keyboard support,&lt;br /&gt;
 fixing repaint issues, having aqua install and run out of the box&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;September 2006&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Present the current state of the project at the 2006 OpenOffice conference in Lyon and Paris&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Late 2006&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
fix OpenOffice.org launch&lt;br /&gt;
fix drawing (repainting)&lt;br /&gt;
Implement missing methods and fix most important bugs (mainly the one leading to crash) in :&lt;br /&gt;
ATS&lt;br /&gt;
Salgraphics&lt;br /&gt;
Salinstance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;January or February 2007&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
make Java work (works partially)&lt;br /&gt;
make intensive debug&lt;br /&gt;
present something working as alpha&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;June 2007	&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Implementation of:&lt;br /&gt;
native filepicker&lt;br /&gt;
native printing&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;2nd Mac porters meeting&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
===Todo===&lt;br /&gt;
&lt;br /&gt;
1) define location and date&lt;br /&gt;
 Easy to attend for all people coming&lt;br /&gt;
 Some University ?&lt;br /&gt;
 An airport close to the meeting is prefered&lt;br /&gt;
 &lt;br /&gt;
2) write a list of interested people&lt;br /&gt;
&lt;br /&gt;
 ericb&lt;br /&gt;
 pjanik&lt;br /&gt;
 obr&lt;br /&gt;
 fheckl&lt;br /&gt;
&lt;br /&gt;
 [complete the list]&lt;br /&gt;
&lt;br /&gt;
3) define needed resources &lt;br /&gt;
&lt;br /&gt;
 rooms for 10 to 20 people ( as cheap as possible)&lt;br /&gt;
 Food ?&lt;br /&gt;
 Hardware :  1 per workshop -&amp;gt; 4 machines would be great&lt;br /&gt;
&lt;br /&gt;
4) Find money for travels, rooms and food&lt;br /&gt;
 &lt;br /&gt;
 By plane ? &lt;br /&gt;
 come together by car ?&lt;br /&gt;
 Note : I&amp;#039;ll propose the amount of money we need to Louis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Location&lt;br /&gt;
&lt;br /&gt;
 not defined, but Pavel proposed CZ (Prague ? ) and fheckl has never been to Prague so it would be OK for him&lt;br /&gt;
 &lt;br /&gt;
 [FIXME]&lt;br /&gt;
&lt;br /&gt;
6) Duration  &lt;br /&gt;
&lt;br /&gt;
 A weekend : e.g. Saturday 2nd  / Sunday 3rd december 2006&lt;br /&gt;
&lt;br /&gt;
7) Content&lt;br /&gt;
&lt;br /&gt;
 Common sessions / Workshops around native issues : &lt;br /&gt;
 &lt;br /&gt;
 - windowing (salinst*)&lt;br /&gt;
 - redrawing&lt;br /&gt;
 - fonts&lt;br /&gt;
 - controls&lt;br /&gt;
 - native printing&lt;br /&gt;
 - packaging&lt;br /&gt;
 ..etc (propose other)&lt;br /&gt;
&lt;br /&gt;
===Agenda (can be modified)===&lt;br /&gt;
&lt;br /&gt;
[FIXME] create an array ..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Saturday :&lt;br /&gt;
&lt;br /&gt;
- Common session from 12:00 to 15:00 &lt;br /&gt;
&lt;br /&gt;
- Workshops : From 16:00 to 19:00 &lt;br /&gt;
&lt;br /&gt;
[Saturday evening :  some dinner in the city ? ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sunday :&lt;br /&gt;
&lt;br /&gt;
- Workshops from 10:00 to 12:00&lt;br /&gt;
&lt;br /&gt;
- Conclusions from 13:00 to 14:00&lt;br /&gt;
&lt;br /&gt;
Time to return after ...&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;IRC Mac port meetings&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
This section has been moved to [[MacOSXPortMeetings]].&lt;br /&gt;
&lt;br /&gt;
==Description of the Native Port problem==&lt;br /&gt;
&lt;br /&gt;
=== How does OpenOffice.org work on Mac OS X ? ===&lt;br /&gt;
&lt;br /&gt;
Currently, on Mac OS X, OpenOffice.org uses X11, as &amp;quot;client&amp;quot; : X11 is a graphical server, coming from Unix world, and able to run under Linux, *BSD, Solaris, Mac OS X.&lt;br /&gt;
&lt;br /&gt;
 - X11 is run as an application, managed like other Apple applications.&lt;br /&gt;
 - All unix like applications are managed by X11, and from Aqua environment, only X11 is seen as only one applicatiion, &lt;br /&gt;
   even if other Unix/Linux (e.g. ) applications are runing.&lt;br /&gt;
&lt;br /&gt;
OpenOffice.org asks X11 to display a window, waits for X11 acknowledgment, and OpenOffice.org displays the window. All transactions use the network, locally or not. the same mechanism is used for everything to be displayed.&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Issues and known problems ===&lt;br /&gt;
&lt;br /&gt;
All events are managed by OpenOffice.org and X11, using the Xlib&lt;br /&gt;
&lt;br /&gt;
Only .ttf fonts type is currently available. Note : &amp;#039;&amp;#039;&amp;#039;system fonts are available &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The rendering is made by X11, not by Mac OS X rendering engine.&lt;br /&gt;
&lt;br /&gt;
X11 and all its clients are seen as one application only : drag and drop protocol does not work because of that ( solution : Pasteboard Manager)&lt;br /&gt;
&lt;br /&gt;
==== Other links ====&lt;br /&gt;
&lt;br /&gt;
http://wiki.services.openoffice.org/wiki/List_of_OpenOffice.org_Mac_OS_X_issues_and_problems#&lt;br /&gt;
&lt;br /&gt;
http://wiki.services.openoffice.org/wiki/Printing_problems_with_OpenOffice.org_2.0_for_Mac_OS_X#Reporting_printing_problems&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== What do we have to do ?==&lt;br /&gt;
&lt;br /&gt;
* Implement direct access to Apple graphical engine,  using Apple API : Quartz2D/CoreGraphics (and replacing Xlib use )&lt;br /&gt;
&lt;br /&gt;
like : instantiate, manage events and threads for a graphical instance + all needed objects, drawing : manage all drawing cases&lt;br /&gt;
&lt;br /&gt;
* Implement native events management, using CarbonEventManager  ( replacing Xlib management)&lt;br /&gt;
&lt;br /&gt;
* Implement native font use, using Apple Type Server and ATSUI ( for Unicode Imagery) (replacing X11 management )&lt;br /&gt;
&lt;br /&gt;
Work in progress : http://wiki.services.openoffice.org/wiki/Fonts_starting_point_and_documentation&lt;br /&gt;
&lt;br /&gt;
* Implement native sound, using QuickTime (replacing Java Media Framework )&lt;br /&gt;
&lt;br /&gt;
[[Native Sound Implementation on Mac OS X]]&lt;br /&gt;
(page under construction) &lt;br /&gt;
&lt;br /&gt;
* Implement native Drag and drop,  Implementing Pasteboard Manager&lt;br /&gt;
&lt;br /&gt;
[[Native Drag and drop implementation on Mac OS X]] (page under construction)&lt;br /&gt;
&lt;br /&gt;
* Implement Native Filepicker&lt;br /&gt;
&lt;br /&gt;
* Implement Native Printing : current uses cups, but native printing is mandatory&lt;br /&gt;
&lt;br /&gt;
[[Native Printing implementation on Mac OS X]] (page under construction)&lt;br /&gt;
&lt;br /&gt;
* Implement Apple Spellchecker&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Where is the code located to be modified ?&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
Most of the changes are located in vcl ( Visual Class Layer ), for everything graphical, events, fonts, rendering and printing.&lt;br /&gt;
&lt;br /&gt;
Other, for sound and movies will be in avmedia ( where the player is implemented in OpenOffice.org sources).&lt;br /&gt;
&lt;br /&gt;
For drag and drop, dtrans is concerned ( Pasteboard Manager implementation )&lt;br /&gt;
&lt;br /&gt;
[FIXME] : Filepicker ? Apple Spellchecker ?&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;How will the new implementation be tested ?==&lt;br /&gt;
&lt;br /&gt;
Currently, all openOffice.org code can be compiled without using the Xlib. but of course, a lot of features are missing,&lt;br /&gt;
&lt;br /&gt;
and the final package simply won&amp;#039;t work&lt;br /&gt;
&lt;br /&gt;
In vcl module&amp;quot;, a &amp;#039;&amp;#039;&amp;#039;toy&amp;#039;&amp;#039;&amp;#039; called svdem is built at buildtime.  This binary is linked to libvcl*  and so all new stuff can be tested.&lt;br /&gt;
&lt;br /&gt;
e.g.  : draw anti-aliased lines works well. &lt;br /&gt;
&lt;br /&gt;
Everything implemented in aqua vcl code will be included in libvclplug_aqua, and svdem source code will contain a specific part to proceed tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;messagebox cleanup metadata&amp;quot; style=&amp;quot;border:1px solid blue;background-color:#B3FFF5;padding:7px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The magic is : when all needed features will work with svdem, it will work in the new version of OpenOffice.org !!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[FIXME] : add more complete list of features to implement and test.&lt;br /&gt;
&lt;br /&gt;
== &amp;#039;&amp;#039;&amp;#039;Sort out documentation about VCL around Native Mac OS X port&amp;#039;&amp;#039;&amp;#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do we really need to understand how it works ?  ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vcl content :&lt;br /&gt;
&lt;br /&gt;
ls -laR | wc -l&lt;br /&gt;
   1750&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Uff 1750 files to analyse  :-/&lt;br /&gt;
&lt;br /&gt;
Our purpose is to describe the vcl organisation. The content of vcl is so important, that at the begining, the content will looks a bit confused. e.g. class names ..etc have nothing to do, only description with words and sense, but this will need some time before we can understand everything.&lt;br /&gt;
&lt;br /&gt;
How analyse with more efficiency ?  After some months to anlalyse &amp;#039;&amp;#039;&amp;#039;&amp;quot;horizontaly&amp;quot;&amp;#039;&amp;#039;&amp;#039;, it appears that list all the content of a directory is not the solution. Of course, we learned a lot, but we now have to complete with &amp;#039;&amp;#039;&amp;#039;&amp;quot;orthogonal&amp;quot;&amp;#039;&amp;#039;&amp;#039; method (compared to the previous one). The first method wasn&amp;#039;t obviously not the good/best way to describe vcl.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[FIXME] a different approach (will ask confirmation to Philipp Lohman), could be a description of how it work in runtime. First define what an instance is, a frame, and what exactly is concerned by such &amp;quot;objects&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
With that, we can write a list of different objects all using the same scheme : empty boxes (means pure virtual methods and classes in generic libvvcl), really implemented in the specific part, and finally, the API &amp;quot;encapsulated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The most difficult is to see where the API is used. But for all the parts, this is the same.&lt;br /&gt;
&lt;br /&gt;
Finally, &amp;#039;&amp;#039;&amp;#039;what is important is the design of vcl&amp;#039;&amp;#039;&amp;#039;. Which &amp;#039;&amp;#039;&amp;#039;patterns&amp;#039;&amp;#039;&amp;#039; are used ?  What are the dependencies, how works the stack for the events, how works the scheduler, the timers too is very important, even fundamental for Aqua implementation. Will have a look at gsl mailing list, and other resources. Probably everything is already (randomly) written somewhere.&lt;br /&gt;
&lt;br /&gt;
=== VCL organisation ===&lt;br /&gt;
&lt;br /&gt;
Thank&amp;#039;s to Philipp Lohmann for this short, but precise description :&lt;br /&gt;
&lt;br /&gt;
Basically vcl is divided in the system dependent and the system independent part. The interface between these two is mostly the Sal interface (every interface name Sal*: SalInstance, SalFrame, SalGraphics, SalPrinter, etc.).&lt;br /&gt;
&lt;br /&gt;
SalInstance is a factory that can create all the other abstracted interfaces of the system dependent part. It also provides the main loop SalInstance::Yield()&lt;br /&gt;
&lt;br /&gt;
SalFrame abstracts any kind of system window.&lt;br /&gt;
&lt;br /&gt;
SalVirtualDevice abstracts an offscreen window (e.g. a Pixmap on X11)&lt;br /&gt;
&lt;br /&gt;
SalPrinter and SalInfoPrinter abstract the system print queues where SalInfoPrinter is for querying and SalPrinter for actual printing.&lt;br /&gt;
&lt;br /&gt;
SalGraphics is an interface produced by either SalFrame, SalVirtualDevice or SalPrinter which is used for actual drawing operations (text, bitmaps, vector graphics)&lt;br /&gt;
&lt;br /&gt;
SalSound is for sound playing.&lt;br /&gt;
&lt;br /&gt;
SalBitmap provides memory for bitmap graphics as well as methods converting this memory to a system handle (e.g. a Pixmap on X11).&lt;br /&gt;
&lt;br /&gt;
SalOpenGL provides OpenGL functionality if available.&lt;br /&gt;
&lt;br /&gt;
SalTimer is an interface for periodically triggering the event queue (to timer implementation).&lt;br /&gt;
&lt;br /&gt;
SalI18NImeStatus handles how the status window of an Input Method Editor (IME) should display (this is mainly X11 specific).&lt;br /&gt;
&lt;br /&gt;
SalSystem has some system specific methods that did not belong anywhere else :-)&lt;br /&gt;
&lt;br /&gt;
Of all these there interfaces is at least one implementation per system (Windows, X11 or Mac). The Unix implementation also has a plugin concept to allow for integration of different native toolkits (currently gtk and Qt) which became necessary for the implementation of Native Widget Framework (NWF) to display controls like their normal desktop counterparts.&lt;br /&gt;
&lt;br /&gt;
Basically the independent part (what is beneath vcl/source directory) has generic methods for drawing, window handling and stuff which it brings into a suitable form and then delegates to the system specific implementaion (located beneath vcl/win for Windows and vcl/unx for the X11 platforms).&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 16:12, 1 July 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
===Sub-directories description ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;#039;&amp;#039;&amp;#039;Organisation of vcl directories&amp;#039;&amp;#039;&amp;#039; ====&lt;br /&gt;
&lt;br /&gt;
[[Image:aquavcl_organisation_complete_02.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;#039;&amp;#039;&amp;#039;Directories in vcl. Short description&amp;#039;&amp;#039;&amp;#039; ====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; aqua &amp;#039;&amp;#039;&amp;#039; : The name Aqua means Apple look and feel, and is well known as [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIntro/chapter_1_section_1.html Aqua Human Interface Guidelines]. This look and feel means Mac OS X. The work was begun by (probably) P. luby, Dan Williams Herbert Duerr (most of fonts stuff) and Ed Peterlin. Currently in ruin, this directory does contain a lot of ideas to investigate. The most important part of needed changes for native version (3.0) will be done inside aqua dir inc : does contain all vcl relative includes [PART1]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; prj &amp;#039;&amp;#039;&amp;#039; :  Does contain build.lst and d.lst build.lst give us dependencies : probably a lot for vcl, build 98th module over ~148. Everything graphical depends in vcl.  &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; qa &amp;#039;&amp;#039;&amp;#039; does contain all quality assurancy stuff&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;source&amp;#039;&amp;#039;&amp;#039; : the most important :-) This directory contains common sources for all architectures and OS. Mainly : Windows, Unix : Linux , Mac OS X (X11), Solaris, including generic, kde and gtk plugins, and Aqua ( Mac OS X without X11, work currently in progress). &lt;br /&gt;
&lt;br /&gt;
Depending on the OS and the architecture, binaries are built or not.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; test &amp;#039;&amp;#039;&amp;#039; : This directory does contain all the needed stuff for tests. As example, in qa/testdocuments, you&amp;#039;ll find three documents (one writer, one calc and one impress) for tests purpose. &lt;br /&gt;
Other available tests are about memcheck and persistent window state. &lt;br /&gt;
 &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; unx &amp;#039;&amp;#039;&amp;#039; : this directory does contain all unixes stuff. We have to understand what is inside to implement aqua port. For example, a lot of classes/strutures and objects use Xlib calls we have to replace with Carbon/Cocoa call (at least at first time) for Mac OS X native port.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; win &amp;#039;&amp;#039;&amp;#039; : Doing Mac OS X native port, I first believed this directory was not interesting for us, but I was wrong : OpenOffice.org roots are inside this directory, and a lot of comments and resources are inside.  Mainly interesting if Carbon is used.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;workben&amp;#039;&amp;#039;&amp;#039; : Does contain a toy called &amp;quot;svdem&amp;quot;. svdem is a binary, used for new implementations. For example, actual aqua development uses svdem intensively, to verify all  important properties we need : &lt;br /&gt;
&lt;br /&gt;
- display a window first ( al least ... :) ) &lt;br /&gt;
&lt;br /&gt;
- close cleanly this window&lt;br /&gt;
&lt;br /&gt;
- display a point&lt;br /&gt;
&lt;br /&gt;
- trace a line&lt;br /&gt;
&lt;br /&gt;
- trace an area &lt;br /&gt;
&lt;br /&gt;
- superpose two areas doing some important graphical operations, (like xor),&lt;br /&gt;
&lt;br /&gt;
- display a character&lt;br /&gt;
&lt;br /&gt;
- display a menu. &lt;br /&gt;
&lt;br /&gt;
- intercept events correctly.&lt;br /&gt;
&lt;br /&gt;
[FIXME] add more tests&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 13:21, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Naming convention ==&lt;br /&gt;
&lt;br /&gt;
* Class names start with upper case letters, to improve readability.&lt;br /&gt;
&lt;br /&gt;
* Implemented Class names are derived from the virtual classes but can of course take arbitrary names.&lt;br /&gt;
To increase readability, it&amp;#039;s recommended to closely follow the base class name.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Impl prefix : means Implementation details&amp;#039;&amp;#039;&amp;#039;. The concerned class or method or function is not used outside of this module, so no external code (or other libraries) can see it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[ Events types using Carbon API (Mac OS X) : ]]&amp;#039;&amp;#039;&amp;#039; A lot of events have to be managed in runtime. Here is a short description&lt;br /&gt;
&lt;br /&gt;
- do not freeze because bad event loops&lt;br /&gt;
&lt;br /&gt;
- event types implementation : currently, they are defined in vcl/aqua/inc/aquavclevents.hxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Apart : exact sense of hedabu ? -&amp;gt; [FIXME] as far as I understood it: it is like &amp;quot;copy&amp;quot; to deliver software into the solver, with extra magic. The header files for example are manipulated so paths need not be exact. &amp;quot;headabu&amp;quot; is supposed to disappear little by little.&lt;br /&gt;
&lt;br /&gt;
== &amp;#039;&amp;#039;&amp;#039;What do we have to build in vcl ?&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
Two libraries, corresponding ressources (localized) and a toy so called « svdem »&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Common part&amp;#039;&amp;#039;&amp;#039; :  &lt;br /&gt;
&lt;br /&gt;
in grey on right.  The result will be a non architecture dependant library, built in all cases : for instance, libvcl680mxi.dylib on Mac Intel.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Specific part   &amp;quot; a plugin &amp;quot; &amp;#039;&amp;#039;&amp;#039; : &lt;br /&gt;
&lt;br /&gt;
Light yellow : aqua part will only concern Mac OS X (non X11) the name will probably be  libvcl_aqua680mxi.dylib &lt;br /&gt;
&lt;br /&gt;
As you can see, win means windows part, in blue&lt;br /&gt;
&lt;br /&gt;
For Unix build ( Linux, Solaris or current Mac OS X X11), in purple.&lt;br /&gt;
&lt;br /&gt;
Result will be :&lt;br /&gt;
&lt;br /&gt;
libvclplug_PLUGIN680mxi.DLLSUFFIX , where PLUGIN can be iether gen (generic) or gtk (using gtk+ ) or kde (using qt), and DLLSUFFIX can be either .so (linux) or .dylib (Mac OS X) ...etc (I&amp;#039;m not sure for other cases).&lt;br /&gt;
&lt;br /&gt;
Example :  libvcl680mxi.dylib and libvclplug_aqua680mxi.dylib&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;In runtime&amp;#039;&amp;#039;&amp;#039;, libvclplug_aqua will be linked to libvcl680. the first one will contain the real implementation ( respecting the API, e.g. Carbon ) while the generic libvcl will only contain pure virtual methods ...etc like &amp;quot;empty boxes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Current Aqua content ===&lt;br /&gt;
&lt;br /&gt;
A more complete description of aqua (Mac OS X / no X11 specific ) : [[Image:Vcl_aqua_organisation_02_tree.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==EXISTING objects to build in aqua==&lt;br /&gt;
&lt;br /&gt;
===Sal APP  &amp;quot;everything application&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
[FIXME] add all objects descriptions&lt;br /&gt;
&lt;br /&gt;
==== saldata ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Defined in plugin exclusively&amp;#039;&amp;#039;&amp;#039; (i.e. for headers)&lt;br /&gt;
&lt;br /&gt;
Unix : unx/source/app/saldata.cxx (header in unx/inc )&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Aqua : aqua/source/app/saldata.cxx (header in win/inc )&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Windows : win/source/app/saldata.cxx (header in aqua/inc )&lt;br /&gt;
&lt;br /&gt;
* Role : saldata contains various kind of data used by the implementation for the concerned platform. &amp;#039;&amp;#039;&amp;#039;It is a bunch of global data collections reserved for the platform&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
It is just completely platform dependent, and nobody except this plugin can see it.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Saldata is something like a &amp;quot;second sal&amp;quot;, but providing an abstraction regarding windowing and graphics&amp;#039;&amp;#039;&amp;#039;, while SAL module provides an abstraction more Operating System oriented ) &lt;br /&gt;
&lt;br /&gt;
e.g.  : have a look at XRequest array in vcl/unx/source/app/saldata.cxx  =&amp;gt; all calls are for Xlib (X11).   Ok, useless there, but interesting :-)&lt;br /&gt;
&lt;br /&gt;
[FIXME] : use Windows implementation could be a good starting point. Nothing is the same, but the current aquavcl cws uses similar objects, and it works very correctly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
saldatax.cxx  uses classes SalInstance, SalObject, SalFrame, SalVirtualDevice, SalPrinter and fontList.&lt;br /&gt;
&lt;br /&gt;
Current list of possible objects who can be instantiated/released :&lt;br /&gt;
&lt;br /&gt;
structure SalData : does contain pointers on all kind of objects from other classes used in saldata.&lt;br /&gt;
&lt;br /&gt;
inline functions : [FIXME] : complete the description&lt;br /&gt;
&lt;br /&gt;
- SetSalData :&lt;br /&gt;
- GetSalData :&lt;br /&gt;
- GetAppSalData :&lt;br /&gt;
&lt;br /&gt;
==== salinst ====&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; implemented in vcl/aqua/source/app/salinst.cxx&lt;br /&gt;
&lt;br /&gt;
Role: &lt;br /&gt;
&lt;br /&gt;
* get environment, mutexes, instantiate AquaSalInstance (Ctor, Dtor ),&lt;br /&gt;
&lt;br /&gt;
* instantiates/releases a lot of other objects using Get( ) / CreateObject() / DestroyObject() methods.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current list of possible objects who can be instantiated/released :&lt;br /&gt;
&lt;br /&gt;
 * VirtualDevice [FIXME] : exact role ?&lt;br /&gt;
&lt;br /&gt;
 *Printer   &lt;br /&gt;
&lt;br /&gt;
-  GetDefaultPrinter/ CreatePrinter() / DestroyPrinter - what a name ;-)  -&lt;br /&gt;
&lt;br /&gt;
- InfoPrinter ( Get/Create/Delete )&lt;br /&gt;
&lt;br /&gt;
- PrinterQueue ( DeletePrinterQueueInfo / GetPrinterQueueInfo / GetPrinterQueueState )&lt;br /&gt;
&lt;br /&gt;
 * System ( Create / Delete )  [FIXME] : what means system here ?&lt;br /&gt;
&lt;br /&gt;
 * Events : &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::SetEventCallback( )&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::SetErrorEvenCallback( )&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::GetConnectionIdentifier( )&lt;br /&gt;
&lt;br /&gt;
 * Menu / MenuItem : &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateMenu( ) / same for DestroyMenu( )&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateMenuItem / same DestroyMenuItem( )&lt;br /&gt;
&lt;br /&gt;
 * Sound : &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateSalSound( )    =&amp;gt; object to a pointer of SalSound type&lt;br /&gt;
&lt;br /&gt;
Note : AquaSalInstance::DestroySalSound is not implemented  (? )&lt;br /&gt;
&lt;br /&gt;
 * Timer : CreateTimer( ) /&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance:: DestroyTimer( ) is not yet implemented ( ? )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Class MacImeStatus : inherits of SalI18NImeStatus&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; only there to see if there is a window to toggle into menubar [FIXME] ??&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateI18NImeStatus( ) :  instantiates MacImeStatus&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;For futher informations, see: &amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;[[Content of salinst.cxx]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
( [[User:Ericb|Ericb]] 16:11, 20 May 2006 (CEST)  )&lt;br /&gt;
&lt;br /&gt;
==== salmain ====&lt;br /&gt;
&lt;br /&gt;
Role : if possible, runs the standard vcl application code SVMain( )&lt;br /&gt;
&lt;br /&gt;
( [[User:Ericb|Ericb]] 16:15, 20 May 2006 (CEST) )&lt;br /&gt;
&lt;br /&gt;
==== salsound ====&lt;br /&gt;
&lt;br /&gt;
==== salsys  ====&lt;br /&gt;
&lt;br /&gt;
==== saltimer ====&lt;br /&gt;
&lt;br /&gt;
=== Sal GDI ( everything Graphical Display Interface ) ===&lt;br /&gt;
&lt;br /&gt;
====salgdinativewidgets====&lt;br /&gt;
&lt;br /&gt;
[[native controls]]&lt;br /&gt;
&lt;br /&gt;
==== salatslayout ====&lt;br /&gt;
&lt;br /&gt;
==== salatsuiutils ====&lt;br /&gt;
&lt;br /&gt;
==== salfontutils ====&lt;br /&gt;
&lt;br /&gt;
==== salmathutils ====&lt;br /&gt;
&lt;br /&gt;
==== sal bmp ====&lt;br /&gt;
&lt;br /&gt;
==== salvd ====&lt;br /&gt;
&lt;br /&gt;
==== salframe ====&lt;br /&gt;
&lt;br /&gt;
==== salpixmaputils====&lt;br /&gt;
&lt;br /&gt;
==== salprn ====&lt;br /&gt;
&lt;br /&gt;
====salrectangle====&lt;br /&gt;
&lt;br /&gt;
==== salvd ====&lt;br /&gt;
&lt;br /&gt;
=== Sal Window===&lt;br /&gt;
&lt;br /&gt;
==== salframe ====&lt;br /&gt;
&lt;br /&gt;
====salobj====&lt;br /&gt;
&lt;br /&gt;
== TO BE IMPLEMENTED (missing in Aqua)==&lt;br /&gt;
&lt;br /&gt;
===Audio===&lt;br /&gt;
&lt;br /&gt;
====audioconvert====&lt;br /&gt;
 (obsolete ?) &lt;br /&gt;
&lt;br /&gt;
====devaudio====&lt;br /&gt;
(obsolete ? )&lt;br /&gt;
&lt;br /&gt;
====native sound====&lt;br /&gt;
&lt;br /&gt;
====salimpsound====&lt;br /&gt;
&lt;br /&gt;
====vsound====&lt;br /&gt;
&lt;br /&gt;
===i18n===&lt;br /&gt;
&lt;br /&gt;
===keysymnames===&lt;br /&gt;
&lt;br /&gt;
===saldisp===&lt;br /&gt;
&lt;br /&gt;
===sm===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[FIXME]: is session manager usefull ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is used for Linux, Windows, Mac OS X ...build  ? ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Description of the dependencies]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Windows]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[MacOS X]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Linux]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Solaris]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Content of Aqua ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Click here to see the complete list]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Content of vcl/inc&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Notes : &lt;br /&gt;
&lt;br /&gt;
1) Where to find includes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;foo/bar.hxx&amp;gt;  means you can find bar.hxx in the foo module. The new style file is foo/inc/foo/bar.hxx, old style is foo/inc/bar.hxx and sometimes the file is somewhere else in the tree or generated. The deliver process copies/generates the file into solver at solver/680/build_type/inc/foo. Good for fixing broken builds. ;-)&lt;br /&gt;
&lt;br /&gt;
2) &lt;br /&gt;
suffix .h (for C calls or first version ?) or .hxx (C++ ) &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A) Family of includes&amp;#039;&amp;#039;&amp;#039; :&lt;br /&gt;
&lt;br /&gt;
Looking more closely at the list brings to the fore (expression from dictionary ;-)  ) that include names are&lt;br /&gt;
informatives. Most of the time, the name gives the function/role.&lt;br /&gt;
What is interesting is the files with name begining with &amp;quot;sal&amp;quot;. sal means System Abstraction Layer + include&amp;#039;s function (or explicit name). &lt;br /&gt;
&lt;br /&gt;
Partial list, for example :&lt;br /&gt;
&lt;br /&gt;
salatype.hxx&lt;br /&gt;
&lt;br /&gt;
salbmp.hxx&lt;br /&gt;
&lt;br /&gt;
salctrlhandle.hxx&lt;br /&gt;
&lt;br /&gt;
salctype.hxx&lt;br /&gt;
&lt;br /&gt;
salframe.hxx&lt;br /&gt;
&lt;br /&gt;
salgdi.hxx&lt;br /&gt;
&lt;br /&gt;
salgeom.hxx&lt;br /&gt;
&lt;br /&gt;
sallayout.hxx ( main header for fonts services )&lt;br /&gt;
...&lt;br /&gt;
salmenu&lt;br /&gt;
salnativewidgets&lt;br /&gt;
...etc&lt;br /&gt;
&lt;br /&gt;
Other important families are &amp;quot;sv&amp;quot; and &amp;quot;uno&amp;quot; or &amp;quot;win&amp;quot; (window) prefixed. sal family will be analysed apart.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B) Includes of includes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Some includes are more important than other. To prove this, just have a look is sufficient : some are always needed, and some more rarely.&lt;br /&gt;
&lt;br /&gt;
To verify, a simple test to do in vcl/inc :&lt;br /&gt;
&lt;br /&gt;
egrep -H &amp;quot;#include&amp;quot; ./* | wc -l   gives me 681 lines ! And some of them are the same...&lt;br /&gt;
&lt;br /&gt;
To know more, the precedent command line can be modified to make appear the numerous call &lt;br /&gt;
to the same includes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
egrep -H &amp;quot;#include&amp;quot; ./* | cut -d&amp;quot;#&amp;quot; -f2 | sort &amp;gt; liste.txt&lt;br /&gt;
&lt;br /&gt;
The content of liste.txt is explicit : dllapi.h, sv.h and some other are very important, while some other includes are only one or two times used. We can see too that vos includes are numerous, even if vos is deprecated**&lt;br /&gt;
&lt;br /&gt;
 **see http://wiki.services.openoffice.org/wiki/Source_code_directories&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;m nearly sure that a complete analysis of just this result will give us a lot of information.&lt;br /&gt;
&lt;br /&gt;
I propose to change the order of analysis starting with dllapi.h and sv.h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[to be continued]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B1) &amp;quot;sal&amp;quot; includes family&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[salinst.hxx]] This seems to be the main include file&lt;br /&gt;
&lt;br /&gt;
[[salatype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salctrlhandle.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salctype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salframe.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salgdi.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salgeom.hxx]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[ sallayout.hxx ]]&amp;#039;&amp;#039;&amp;#039;  &amp;lt;-- see Native Fonts implementation&lt;br /&gt;
&lt;br /&gt;
[[salgtype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[vcl/inc/salobj.hxx]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B2) Classicals includes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
file : abstdlg.hxx  [ means abstract dialog ]&lt;br /&gt;
&lt;br /&gt;
This includes does contain the following classes definitions:&lt;br /&gt;
&lt;br /&gt;
[FIXME]  : choose a precise presentation template for classes &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VclAbstractDialog,&lt;br /&gt;
&lt;br /&gt;
VclAbstractTerminateDialog, &lt;br /&gt;
&lt;br /&gt;
VclAbstractRefreshableDialog,&lt;br /&gt;
 &lt;br /&gt;
VclAbstractDialogFactory,  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
uses &amp;lt;tools/solar.h&amp;gt; , &amp;lt;tools/string.hxx&amp;gt;  + &lt;br /&gt;
&lt;br /&gt;
&amp;quot;dllapi.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note  : dllapi.h is very interesting because when we have to find (for example) a library suffix, SAL_DLLEXTENSSION can replace all suffixes (every OS&amp;#039;s and archs). Just including sal/config.h does it ! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Classes :&lt;br /&gt;
&lt;br /&gt;
Window -&amp;gt; what ? [FIXME]&lt;br /&gt;
ResId  -&amp;gt; what ?&lt;br /&gt;
&lt;br /&gt;
Does contain the prototype of VclAbstractDialog, inherit of VCL_DLLPUBLIC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
file : dllapi.h [ dll for dynamic linked library ]&lt;br /&gt;
Uses : &amp;lt;sal/config.h&amp;gt; and &amp;gt;sal/types/h&amp;gt;&lt;br /&gt;
includes : VCL_DLLPUBLIC macro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
file : accel.h  [ means accelerator ]&lt;br /&gt;
&lt;br /&gt;
Classes :&lt;br /&gt;
&lt;br /&gt;
Accelerator &lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
ImplAccelEntry &lt;br /&gt;
{&lt;br /&gt;
public members : &lt;br /&gt;
&lt;br /&gt;
Names&lt;br /&gt;
&lt;br /&gt;
mnId&lt;br /&gt;
maKeyCode&lt;br /&gt;
mpAccel&lt;br /&gt;
mpAutoAccel&lt;br /&gt;
mbEnabled&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function / returns / parameters&lt;br /&gt;
&lt;br /&gt;
ImplGetKeyCode / void / KeyFuncType eFunc, ref rCode1 , ref rCode2, ref rCode3&lt;br /&gt;
&lt;br /&gt;
file : accel.hxx  &lt;br /&gt;
&lt;br /&gt;
Uses : &amp;lt;sv.h&amp;gt; , &amp;quot;dllapi.h&amp;quot; ,&amp;lt;tools/resid.hxx&amp;gt;, &amp;lt;&amp;lt;tools/rc.hxx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Classes:&lt;br /&gt;
&lt;br /&gt;
ImplAccelData;&lt;br /&gt;
ImplAccelEntry;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Important Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Progressive implementation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Font server Implementation&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;&amp;#039;[[Fonts starting point and documentation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Sound Implementation&amp;#039;&amp;#039;&amp;#039;  : http://wiki.services.openoffice.org/wiki/Native_Sound_Implementation_on_Mac_OS_X&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Printing Implementation&amp;#039;&amp;#039;&amp;#039; : http://wiki.services.openoffice.org/wiki/Native_Printing_implementation_on_Mac_OS_X&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Drag and Drop implementation&amp;#039;&amp;#039;&amp;#039; : http://wiki.services.openoffice.org/wiki/Native_Drag_and_drop_implementation_on_Mac_OS_X&lt;br /&gt;
&lt;br /&gt;
This work is part of http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wish list for Mac OS X port&amp;#039;&amp;#039;&amp;#039; : [[Mac OS X port :  wish list]]&lt;br /&gt;
&lt;br /&gt;
[to be continued :-) ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Ericb|Ericb]] 15:00, 22 Jul 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Aqua]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:Pdefilippis&amp;diff=16775</id>
		<title>User:Pdefilippis</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:Pdefilippis&amp;diff=16775"/>
		<updated>2006-09-13T15:26:28Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* How did I become an OOo developer? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Developer ID===&lt;br /&gt;
* Name: Pierre de Filippis&lt;br /&gt;
* User ID: pdefilippis&lt;br /&gt;
* Blog: [http://aliscafo.blogspot.com/ http://aliscafo.blogspot.com/]&lt;br /&gt;
* Website: [http://www.aliscafo.com/ http://www.aliscafo.com/]&lt;br /&gt;
* IRC Nickname: aliscafo&lt;br /&gt;
* E-mail: [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
===Current Work===&lt;br /&gt;
I am working on the implementation of native controls for the native Mac OS X version of OpenOffice.org.&lt;br /&gt;
&lt;br /&gt;
===Articles===&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Intro_To_Mac_Porting Intro To Mac Porting]&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Native_Controls Native Controls]&lt;br /&gt;
* Working of an article about creating scrollbars with HITheme and Appearance Manager&lt;br /&gt;
&lt;br /&gt;
===How did I become an OOo developer?===&lt;br /&gt;
I first joined the Mac OS X porting team as a member of the Google Summer of Code 2006 program. I spent my Summer learning about OOo&amp;#039; source code and VCL in particular. I was able to add the Fullscreen capability and worked on some geometrical shapes representation. After the end of the program I decided to keep contributing for two reasons. First it is very interesting and it gives me the opportunity of acquiring a valuable experience. Second it wouldn&amp;#039;t have made sense to just stop after spending a lot of time learning the structure of VCL, the features of the Carbon API and how to use them.&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:Pdefilippis&amp;diff=16774</id>
		<title>User:Pdefilippis</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:Pdefilippis&amp;diff=16774"/>
		<updated>2006-09-13T15:24:00Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Developer ID===&lt;br /&gt;
* Name: Pierre de Filippis&lt;br /&gt;
* User ID: pdefilippis&lt;br /&gt;
* Blog: [http://aliscafo.blogspot.com/ http://aliscafo.blogspot.com/]&lt;br /&gt;
* Website: [http://www.aliscafo.com/ http://www.aliscafo.com/]&lt;br /&gt;
* IRC Nickname: aliscafo&lt;br /&gt;
* E-mail: [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
===Current Work===&lt;br /&gt;
I am working on the implementation of native controls for the native Mac OS X version of OpenOffice.org.&lt;br /&gt;
&lt;br /&gt;
===Articles===&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Intro_To_Mac_Porting Intro To Mac Porting]&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Native_Controls Native Controls]&lt;br /&gt;
* Working of an article about creating scrollbars with HITheme and Appearance Manager&lt;br /&gt;
&lt;br /&gt;
===How did I become an OOo developer?===&lt;br /&gt;
I first joined the Mac OS X porting team as a member of the Google Summer of Code 2006 program. I spent my Summer learning about OOo&amp;#039; source code and VCL in particular. I was able to add the Fullscreen capability and worked on some geometrical shapes representation. After the end of the program I decided to keep contributing for two reasons. First it is very interesting and it gives me the opportunity of acquiring a valuable experience. Second it wouldn&amp;#039;t have made sense to just stop after spending a lot of time learning the structure of VCL, the features of the Carbon API and how to use them.&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:Pdefilippis&amp;diff=16773</id>
		<title>User:Pdefilippis</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:Pdefilippis&amp;diff=16773"/>
		<updated>2006-09-13T15:23:04Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Developer ID===&lt;br /&gt;
* Name: Pierre de Filippis&lt;br /&gt;
* User ID: pdefilippis&lt;br /&gt;
* Blog: [http://aliscafo.blogspot.com/ http://aliscafo.blogspot.com/]&lt;br /&gt;
* IRC Nickname: aliscafo&lt;br /&gt;
* E-mail: [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
===Current Work===&lt;br /&gt;
I am working on the implementation of native controls for the native Mac OS X version of OpenOffice.org.&lt;br /&gt;
&lt;br /&gt;
===Articles===&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Intro_To_Mac_Porting Intro To Mac Porting]&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Native_Controls Native Controls]&lt;br /&gt;
* Working of an article about creating scrollbars with HITheme and Appearance Manager&lt;br /&gt;
&lt;br /&gt;
===How did I become an OOo developer?===&lt;br /&gt;
I first joined the Mac OS X porting team as a member of the Google Summer of Code 2006 program. I spent my Summer learning about OOo&amp;#039; source code and VCL in particular. I was able to add the Fullscreen capability and worked on some geometrical shapes representation. After the end of the program I decided to keep contributing for two reasons. First it is very interesting and it gives me the opportunity of acquiring a valuable experience. Second it wouldn&amp;#039;t have made sense to just stop after spending a lot of time learning the structure of VCL, the features of the Carbon API and how to use them.&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:Pdefilippis&amp;diff=16772</id>
		<title>User:Pdefilippis</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:Pdefilippis&amp;diff=16772"/>
		<updated>2006-09-13T15:21:47Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* How did I become an OOo developer? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Developer ID===&lt;br /&gt;
* Name: Pierre de Filippis&lt;br /&gt;
* User ID: pdefilippis&lt;br /&gt;
* Blog: [http://aliscafo.blogspot.com/]&lt;br /&gt;
* IRC Nickname: aliscafo&lt;br /&gt;
* E-mail: [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
===Current Work===&lt;br /&gt;
I am working on the implementation of native controls for the native Mac OS X version of OpenOffice.org.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Articles===&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Intro_To_Mac_Porting Intro To Mac Porting]&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Native_Controls Native Controls]&lt;br /&gt;
* Working of an article about creating scrollbars with HITheme and Appearance Manager&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===How did I become an OOo developer?===&lt;br /&gt;
I first joined the Mac OS X porting team as a member of the Google Summer of Code 2006 program. I spent my Summer learning about OOo&amp;#039; source code and VCL in particular. I was able to add the Fullscreen capability and worked on some geometrical shapes representation. After the end of the program I decided to keep contributing for two reasons. First it is very interesting and it gives me the opportunity of acquiring a valuable experience. Second it wouldn&amp;#039;t have made sense to just stop after spending a lot of time learning the structure of VCL, the features of the Carbon API and how to use them.&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:Pdefilippis&amp;diff=16771</id>
		<title>User:Pdefilippis</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:Pdefilippis&amp;diff=16771"/>
		<updated>2006-09-13T15:19:38Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Developer ID===&lt;br /&gt;
* Name: Pierre de Filippis&lt;br /&gt;
* User ID: pdefilippis&lt;br /&gt;
* Blog: [http://aliscafo.blogspot.com/]&lt;br /&gt;
* IRC Nickname: aliscafo&lt;br /&gt;
* E-mail: [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
===Current Work===&lt;br /&gt;
I am working on the implementation of native controls for the native Mac OS X version of OpenOffice.org.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Articles===&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Intro_To_Mac_Porting Intro To Mac Porting]&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Native_Controls Native Controls]&lt;br /&gt;
* Working of an article about creating scrollbars with HITheme and Appearance Manager&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===How did I become an OOo developer?===&lt;br /&gt;
I first joined the Mac OS X porting team as a member of the Google Summer of Code 2006 program. I spent my Summer learning about OOo&amp;#039; source code and VCL in particular. I was able to add the Fullscreen capability and worked on some geometrical shapes representation. After the end of the program I decided to keep contributing, first because it is very interesting and because I am acquiring a valuable experience and second because it wouldn&amp;#039;t have made sense to just stop after spending a lot of time trying to understand how the VCL is structured and learning the features of the Carbon API and how to use them.&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:Pdefilippis&amp;diff=16770</id>
		<title>User:Pdefilippis</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:Pdefilippis&amp;diff=16770"/>
		<updated>2006-09-13T15:04:07Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Developer ID===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Name: Pierre de Filippis&lt;br /&gt;
User ID: pdefilippis&lt;br /&gt;
Blog: [http://aliscafo.blogspot.com/]&lt;br /&gt;
IRC Nickname: aliscafo&lt;br /&gt;
E-mail: [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Current Work===&lt;br /&gt;
I am working on the implementation of native controls for the native Mac OS X version of OpenOffice.org.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Articles===&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Intro_To_Mac_Porting Intro To Mac Porting]&lt;br /&gt;
* [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Native_Controls]&lt;br /&gt;
* Working of an article about creating scrollbars with HITheme and Appearance Manager&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===How did I become an OOo developer?===&lt;br /&gt;
I&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16712</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16712"/>
		<updated>2006-09-11T02:26:15Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* How a ScrollBar is drawn */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
* Eric Bachard: [[User:Ericb|Ericb]]&lt;br /&gt;
* Pierre de Filippis: [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
* Pavel Janik&lt;br /&gt;
* Christian Lippka: [[User:CL|CL]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
* Location of HITheme.h: /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/HITheme.h&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: Boolean function. If the return value is TRUE, bIsInside contains information whether aPos was or not inside the native widget specified by the nType/nPart combination.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
&lt;br /&gt;
Uses AquaSalGraphics class, defined in vcl/aqua/inc/salgdi.h. AquaSalGraphics itself inherits of SalGraphics virtual class (defined in vcl/inc/salgdi.hxx).&lt;br /&gt;
&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
Most of the stuff used in salnativewidgets.hxx are from HITheme.h (or Appearance.h for previous test)&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
* Implemented by:  [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
* Implemented by: [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
* Implemented by:  [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
===ScrollBar===&lt;br /&gt;
* Implemented by:  [[User:Ericb|Ericb]]&lt;br /&gt;
This is the regular scrollbar.&lt;br /&gt;
&lt;br /&gt;
====Current status====&lt;br /&gt;
&lt;br /&gt;
=====How a ScrollBar is drawn=====&lt;br /&gt;
After printing out the part numbers passed to draw a ScrollBar, I found out how it is actually drawn out:&lt;br /&gt;
* 1. Part 101 - PART_BUTTON_UP&lt;br /&gt;
* 2. Part 102 - PART_BUTTON_DOWN&lt;br /&gt;
* 3. Part 211 - PART_THUMB_VERT&lt;br /&gt;
* 4. Part 201 - PART_TRACK_VERT_UPPER&lt;br /&gt;
* 5. Part 203 - PART_TRACK_VERT_LOWER&lt;br /&gt;
&lt;br /&gt;
The first two parts are self-explanatory. The last 3 are a little more confusing at first especially since some heights and widths can be negative. But here is what they are.&lt;br /&gt;
&lt;br /&gt;
=====Part 211=====&lt;br /&gt;
This part is the slider. As described by its value, it is vertical. The horizontal equivalent is part 210 - PART_THUMB_HORZ.&lt;br /&gt;
&lt;br /&gt;
=====Part 201 - Part 203=====&lt;br /&gt;
These are the parts that are between the slider and the arrows. Part 201 is between the slider and the upper arrow. Part 203 is between the slider and the lower arrow. Each one of them can actually have a negative size in the case where the slider touches one or both of the arrows. The equivalents for a horizontal scrollbar are part 200 - PART_TRACK_HORZ_LEFT and part 202 - PART_TRACK_HORZ_RIGHT.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(10th September) Now the scrollbar is correctly drawn. Missing: always full (needs some work). modify the top control coordinates, manage active/not active. &lt;br /&gt;
&lt;br /&gt;
Patch available here : http://eric.bachard.free.fr/mac/aquavcl/patches/controls/scrollbar/scrollbar10sept.diff&lt;br /&gt;
&lt;br /&gt;
Screenshot :&lt;br /&gt;
&lt;br /&gt;
http://eric.bachard.free.fr/mac/aquavcl/screenshots/scrollbar10sept/scrollbar10sept.jpg&lt;br /&gt;
 &lt;br /&gt;
(03rd September) Does not work as expected, work in progress to fix arrows issue, and obtain correct redrawing (arrows are correctly drawn, but not at good place). See screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrollbar02_mini.jpg|200px|frame|center|Current state of native scrollbar]]&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current state of native controls==&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16711</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16711"/>
		<updated>2006-09-11T02:25:38Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* How a ScrollBar is drawn */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
* Eric Bachard: [[User:Ericb|Ericb]]&lt;br /&gt;
* Pierre de Filippis: [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
* Pavel Janik&lt;br /&gt;
* Christian Lippka: [[User:CL|CL]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
* Location of HITheme.h: /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/HITheme.h&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: Boolean function. If the return value is TRUE, bIsInside contains information whether aPos was or not inside the native widget specified by the nType/nPart combination.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
&lt;br /&gt;
Uses AquaSalGraphics class, defined in vcl/aqua/inc/salgdi.h. AquaSalGraphics itself inherits of SalGraphics virtual class (defined in vcl/inc/salgdi.hxx).&lt;br /&gt;
&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
Most of the stuff used in salnativewidgets.hxx are from HITheme.h (or Appearance.h for previous test)&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
* Implemented by:  [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
* Implemented by: [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
* Implemented by:  [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
===ScrollBar===&lt;br /&gt;
* Implemented by:  [[User:Ericb|Ericb]]&lt;br /&gt;
This is the regular scrollbar.&lt;br /&gt;
&lt;br /&gt;
====Current status====&lt;br /&gt;
&lt;br /&gt;
=====How a ScrollBar is drawn=====&lt;br /&gt;
After printing out the part numbers passed to draw a ScrollBar. I found out how it is actually drawn out:&lt;br /&gt;
* 1. Part 101 - PART_BUTTON_UP&lt;br /&gt;
* 2. Part 102 - PART_BUTTON_DOWN&lt;br /&gt;
* 3. Part 211 - PART_THUMB_VERT&lt;br /&gt;
* 4. Part 201 - PART_TRACK_VERT_UPPER&lt;br /&gt;
* 5. Part 203 - PART_TRACK_VERT_LOWER&lt;br /&gt;
&lt;br /&gt;
The first two parts are self-explanatory. The last 3 are a little more confusing at first especially since some heights and widths are negative. But here is what they are.&lt;br /&gt;
&lt;br /&gt;
=====Part 211=====&lt;br /&gt;
This part is the slider. As described by its value, it is vertical. The horizontal equivalent is part 210 - PART_THUMB_HORZ.&lt;br /&gt;
&lt;br /&gt;
=====Part 201 - Part 203=====&lt;br /&gt;
These are the parts that are between the slider and the arrows. Part 201 is between the slider and the upper arrow. Part 203 is between the slider and the lower arrow. Each one of them can actually have a negative size in the case where the slider touches one or both of the arrows. The equivalents for a horizontal scrollbar are part 200 - PART_TRACK_HORZ_LEFT and part 202 - PART_TRACK_HORZ_RIGHT.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(10th September) Now the scrollbar is correctly drawn. Missing: always full (needs some work). modify the top control coordinates, manage active/not active. &lt;br /&gt;
&lt;br /&gt;
Patch available here : http://eric.bachard.free.fr/mac/aquavcl/patches/controls/scrollbar/scrollbar10sept.diff&lt;br /&gt;
&lt;br /&gt;
Screenshot :&lt;br /&gt;
&lt;br /&gt;
http://eric.bachard.free.fr/mac/aquavcl/screenshots/scrollbar10sept/scrollbar10sept.jpg&lt;br /&gt;
 &lt;br /&gt;
(03rd September) Does not work as expected, work in progress to fix arrows issue, and obtain correct redrawing (arrows are correctly drawn, but not at good place). See screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrollbar02_mini.jpg|200px|frame|center|Current state of native scrollbar]]&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current state of native controls==&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16710</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16710"/>
		<updated>2006-09-11T02:25:01Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* ScrollBar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
* Eric Bachard: [[User:Ericb|Ericb]]&lt;br /&gt;
* Pierre de Filippis: [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
* Pavel Janik&lt;br /&gt;
* Christian Lippka: [[User:CL|CL]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
* Location of HITheme.h: /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/HITheme.h&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: Boolean function. If the return value is TRUE, bIsInside contains information whether aPos was or not inside the native widget specified by the nType/nPart combination.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
&lt;br /&gt;
Uses AquaSalGraphics class, defined in vcl/aqua/inc/salgdi.h. AquaSalGraphics itself inherits of SalGraphics virtual class (defined in vcl/inc/salgdi.hxx).&lt;br /&gt;
&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
Most of the stuff used in salnativewidgets.hxx are from HITheme.h (or Appearance.h for previous test)&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
* Implemented by:  [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
* Implemented by: [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
* Implemented by:  [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
===ScrollBar===&lt;br /&gt;
* Implemented by:  [[User:Ericb|Ericb]]&lt;br /&gt;
This is the regular scrollbar.&lt;br /&gt;
&lt;br /&gt;
====Current status====&lt;br /&gt;
&lt;br /&gt;
=====How a ScrollBar is drawn=====&lt;br /&gt;
After printing out the part numbers passed to draw a ScrollBar. I found out how it is actually drawn out:&lt;br /&gt;
* 1. Part 101 - PART_BUTTON_UP&lt;br /&gt;
* 2. Part 102 - PART_BUTTON_DOWN&lt;br /&gt;
* 3. Part 211 - PART_THUMB_VERT&lt;br /&gt;
* 4. Part 201 - PART_TRACK_VERT_UPPER&lt;br /&gt;
* 5. Part 203 - PART_TRACK_VERT_LOWER&lt;br /&gt;
&lt;br /&gt;
The first two parts are self-explanatory. The last 3 are a little more confusing at first especially since some heights and widths are negative. But here is what they are.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Part 211&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
This part is the slider. As described by its value, it is vertical. The horizontal equivalent is part 210 - PART_THUMB_HORZ.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Part 201 - Part 203&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
These are the parts that are between the slider and the arrows. Part 201 is between the slider and the upper arrow. Part 203 is between the slider and the lower arrow. Each one of them can actually have a negative size in the case where the slider touches one or both of the arrows. The equivalents for a horizontal scrollbar are part 200 - PART_TRACK_HORZ_LEFT and part 202 - PART_TRACK_HORZ_RIGHT.&lt;br /&gt;
&lt;br /&gt;
(10th September) Now the scrollbar is correctly drawn. Missing: always full (needs some work). modify the top control coordinates, manage active/not active. &lt;br /&gt;
&lt;br /&gt;
Patch available here : http://eric.bachard.free.fr/mac/aquavcl/patches/controls/scrollbar/scrollbar10sept.diff&lt;br /&gt;
&lt;br /&gt;
Screenshot :&lt;br /&gt;
&lt;br /&gt;
http://eric.bachard.free.fr/mac/aquavcl/screenshots/scrollbar10sept/scrollbar10sept.jpg&lt;br /&gt;
 &lt;br /&gt;
(03rd September) Does not work as expected, work in progress to fix arrows issue, and obtain correct redrawing (arrows are correctly drawn, but not at good place). See screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrollbar02_mini.jpg|200px|frame|center|Current state of native scrollbar]]&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current state of native controls==&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16121</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16121"/>
		<updated>2006-09-03T15:12:35Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Contributors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
* Eric Bachard: [[User:Ericb|Ericb]]&lt;br /&gt;
* Pierre de Filippis: [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
* Pavel Janik&lt;br /&gt;
* Christian Lippka: [[User:CL|CL]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
* Location of HITheme.h: /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/HITheme.h&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: Boolean function. If the return value is TRUE, bIsInside contains information whether aPos was or not inside the native widget specified by the nType/nPart combination.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
&lt;br /&gt;
Uses AquaSalGraphics class, defined in vcl/aqua/inc/salgdi.h. AquaSalGraphics itself inherits of SalGraphics virtual class (defined in vcl/inc/salgdi.hxx).&lt;br /&gt;
&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
Most of the stuff used in salnativewidgets.hxx are from HITheme.h (or Appearance.h for previous test)&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
* Implemented by:  [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
* Implemented by: [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
* Implemented by:  [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
===ScrollBar===&lt;br /&gt;
* Implemented by:  [[User:Ericb|Ericb]]&lt;br /&gt;
This is the regular scrollbar.&lt;br /&gt;
&lt;br /&gt;
====Current status==== &lt;br /&gt;
Does not work as expected, work in progress to fix arrows issue, and obtain correct redrawing (arrows are correctly drawn, but not at good place). See screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrollbar02_mini.jpg|200px|frame|center|Current state of native scrollbar]]&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current state of native controls==&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16120</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16120"/>
		<updated>2006-09-03T14:45:14Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Contributors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
* Eric Bachard: [[User:Ericb|Ericb]]&lt;br /&gt;
* Pierre de Filippis: [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
* Christian Lippka: [[User:CL|CL]]&lt;br /&gt;
* Pavel Janik&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
* Location of HITheme.h: /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/HITheme.h&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: Boolean function. If the return value is TRUE, bIsInside contains information whether aPos was or not inside the native widget specified by the nType/nPart combination.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
&lt;br /&gt;
Uses AquaSalGraphics class, defined in vcl/aqua/inc/salgdi.h. AquaSalGraphics itself inherits of SalGraphics virtual class (defined in vcl/inc/salgdi.hxx).&lt;br /&gt;
&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
Most of the stuff used in salnativewidgets.hxx are from HITheme.h (or Appearance.h for previous test)&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
* Implemented by:  [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
* Implemented by: [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
* Implemented by:  [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
===ScrollBar===&lt;br /&gt;
* Implemented by:  [[User:Ericb|Ericb]]&lt;br /&gt;
This is the regular scrollbar.&lt;br /&gt;
&lt;br /&gt;
====Current status==== &lt;br /&gt;
Does not work as expected, work in progress to fix arrows issue, and obtain correct redrawing (arrows are correctly drawn, but not at good place). See screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrollbar02_mini.jpg|200px|frame|center|Current state of native scrollbar]]&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current state of native controls==&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16119</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16119"/>
		<updated>2006-09-03T14:43:47Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Native Controls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
* [[User:Ericb|Ericb]]&lt;br /&gt;
* [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
* Location of HITheme.h: /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/HITheme.h&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: Boolean function. If the return value is TRUE, bIsInside contains information whether aPos was or not inside the native widget specified by the nType/nPart combination.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
&lt;br /&gt;
Uses AquaSalGraphics class, defined in vcl/aqua/inc/salgdi.h. AquaSalGraphics itself inherits of SalGraphics virtual class (defined in vcl/inc/salgdi.hxx).&lt;br /&gt;
&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
Most of the stuff used in salnativewidgets.hxx are from HITheme.h (or Appearance.h for previous test)&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
* Implemented by:  [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
* Implemented by: [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
* Implemented by:  [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
===ScrollBar===&lt;br /&gt;
* Implemented by:  [[User:Ericb|Ericb]]&lt;br /&gt;
This is the regular scrollbar.&lt;br /&gt;
&lt;br /&gt;
====Current status==== &lt;br /&gt;
Does not work as expected, work in progress to fix arrows issue, and obtain correct redrawing (arrows are correctly drawn, but not at good place). See screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrollbar02_mini.jpg|200px|frame|center|Current state of native scrollbar]]&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current state of native controls==&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16118</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16118"/>
		<updated>2006-09-03T14:42:10Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* The native controls and the implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
* Location of HITheme.h: /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/HITheme.h&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: Boolean function. If the return value is TRUE, bIsInside contains information whether aPos was or not inside the native widget specified by the nType/nPart combination.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
&lt;br /&gt;
Uses AquaSalGraphics class, defined in vcl/aqua/inc/salgdi.h. AquaSalGraphics itself inherits of SalGraphics virtual class (defined in vcl/inc/salgdi.hxx).&lt;br /&gt;
&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
Most of the stuff used in salnativewidgets.hxx are from HITheme.h (or Appearance.h for previous test)&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
* Implemented by:  [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
* Implemented by: [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
* Implemented by:  [[User:Pdefilippis|Pdefilippis]]&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
===ScrollBar===&lt;br /&gt;
* Implemented by:  [[User:Ericb|Ericb]]&lt;br /&gt;
This is the regular scrollbar.&lt;br /&gt;
&lt;br /&gt;
====Current status==== &lt;br /&gt;
Does not work as expected, work in progress to fix arrows issue, and obtain correct redrawing (arrows are correctly drawn, but not at good place). See screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrollbar02_mini.jpg|200px|frame|center|Current state of native scrollbar]]&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current state of native controls==&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16117</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16117"/>
		<updated>2006-09-03T14:40:38Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* The native controls and the implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
* Location of HITheme.h: /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/HITheme.h&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: Boolean function. If the return value is TRUE, bIsInside contains information whether aPos was or not inside the native widget specified by the nType/nPart combination.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
&lt;br /&gt;
Uses AquaSalGraphics class, defined in vcl/aqua/inc/salgdi.h. AquaSalGraphics itself inherits of SalGraphics virtual class (defined in vcl/inc/salgdi.hxx).&lt;br /&gt;
&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
Most of the stuff used in salnativewidgets.hxx are from HITheme.h (or Appearance.h for previous test)&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
===ScrollBar===&lt;br /&gt;
* Implemented by:  [[User:Ericb|Ericb]]&lt;br /&gt;
This is the regular scrollbar.&lt;br /&gt;
&lt;br /&gt;
====Current status==== &lt;br /&gt;
Does not work as expected, work in progress to fix arrows issue, and obtain correct redrawing (arrows are correctly drawn, but not at good place). See screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrollbar02_mini.jpg|200px|frame|center|Current state of native scrollbar]]&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current state of native controls==&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16116</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16116"/>
		<updated>2006-09-03T14:39:45Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* ScrollBar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
* Location of HITheme.h: /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/HITheme.h&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: Boolean function. If the return value is TRUE, bIsInside contains information whether aPos was or not inside the native widget specified by the nType/nPart combination.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
&lt;br /&gt;
Uses AquaSalGraphics class, defined in vcl/aqua/inc/salgdi.h. AquaSalGraphics itself inherits of SalGraphics virtual class (defined in vcl/inc/salgdi.hxx).&lt;br /&gt;
&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
Most of the stuff used in salnativewidgets.hxx are from HITheme.h (or Appearance.h for previous test)&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
===ScrollBar===&lt;br /&gt;
* Implemented by:  [[User:Ericb|Ericb]]&lt;br /&gt;
This is the regular scrollbar.&lt;br /&gt;
&lt;br /&gt;
====Current status==== &lt;br /&gt;
Does not work as expected, work in progress to fix arrows issue, and obtain correct redrawing (arrows are correctly drawn, but not at good place). See screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrollbar02_mini.jpg|200px|frame|center|Current state of native scrollbar]]&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16115</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16115"/>
		<updated>2006-09-03T14:38:32Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* The native controls and the implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
* Location of HITheme.h: /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/HITheme.h&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: Boolean function. If the return value is TRUE, bIsInside contains information whether aPos was or not inside the native widget specified by the nType/nPart combination.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
&lt;br /&gt;
Uses AquaSalGraphics class, defined in vcl/aqua/inc/salgdi.h. AquaSalGraphics itself inherits of SalGraphics virtual class (defined in vcl/inc/salgdi.hxx).&lt;br /&gt;
&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
Most of the stuff used in salnativewidgets.hxx are from HITheme.h (or Appearance.h for previous test)&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
===ScrollBar===&lt;br /&gt;
* Implemented by:  [[User:Ericb|Ericb]]&lt;br /&gt;
This is the regular scrollbar (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Scrollbar02_mini.jpg|200px|frame|center|Current state of native scrollbar]]&lt;br /&gt;
&lt;br /&gt;
====Current status==== &lt;br /&gt;
Does not work as expected, work in progress to fix arrows issue, and obtain correct redrawing (arrows are correctly drawn, but not at good place).&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16084</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16084"/>
		<updated>2006-09-03T01:56:07Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Using HITheme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
* Location of hitheme.h: /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/HITheme.h&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16083</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16083"/>
		<updated>2006-09-03T01:40:26Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Using HITheme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
* Location of hitheme.h: &lt;br /&gt;
/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/HITheme.h&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16082</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16082"/>
		<updated>2006-09-03T01:40:10Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Using HITheme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
* Location of hitheme.h: &lt;br /&gt;
/Volumes/Macintosh HD/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/HITheme.h&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16081</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16081"/>
		<updated>2006-09-03T01:39:30Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Using HITheme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
* Location of hitheme.h: :/Volumes/Macintosh HD/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/HITheme.h&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16080</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16080"/>
		<updated>2006-09-02T22:27:53Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Native Controls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/2006-09-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16077</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16077"/>
		<updated>2006-09-02T22:11:54Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Current state */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|Current state of native controls. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/08-23-06-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16076</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16076"/>
		<updated>2006-09-02T22:11:12Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Pictures of the current state */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Current state==&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|The svdem application in svtools. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/08-23-06-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16075</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16075"/>
		<updated>2006-09-02T22:10:43Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Current state==&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|The svdem application in svtools. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/08-23-06-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|The svdem application in svtools. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/08-23-06-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16074</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16074"/>
		<updated>2006-09-02T22:01:39Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Pictures of the current state */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|The svdem application in svtools. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/08-23-06-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16073</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16073"/>
		<updated>2006-09-02T21:57:11Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
==The native controls and the implementation==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16072</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16072"/>
		<updated>2006-09-02T21:55:43Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* List of all the controls to change + pictures (VCL&amp;lt;-&amp;gt;Apple) equivalent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
==All the controls==&lt;br /&gt;
Here is a list of all the controls that need to be native. Since some of them do not have the same name in VCL and Carbon, they are listed in this format: &amp;lt;VCL name&amp;gt; - &amp;lt;Carbon name&amp;gt; when they are different.&lt;br /&gt;
&lt;br /&gt;
===Push Button===&lt;br /&gt;
This is the regular OK, Cancel buttons.&lt;br /&gt;
&lt;br /&gt;
===Radio Button===&lt;br /&gt;
This is the regular radio button.&lt;br /&gt;
&lt;br /&gt;
===Check Box===&lt;br /&gt;
This is the regular check box.&lt;br /&gt;
&lt;br /&gt;
More to come...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
// Combobox, i.e. a ListBox&lt;br /&gt;
// that allows data entry by user&lt;br /&gt;
#define CTRL_COMBOBOX			20&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
#define CTRL_EDITBOX			30&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry, but without the usual border&lt;br /&gt;
// Has to be handled separately, because this one cannot handle&lt;br /&gt;
// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box&amp;#039;es&lt;br /&gt;
// border window.&lt;br /&gt;
#define CTRL_EDITBOX_NOBORDER	31&lt;br /&gt;
&lt;br /&gt;
// Control that allows text entry&lt;br /&gt;
// ( some systems distingish between single and multi line edit boxes )&lt;br /&gt;
#define CTRL_MULTILINE_EDITBOX 32&lt;br /&gt;
&lt;br /&gt;
// Control that pops up a menu,&lt;br /&gt;
// but does NOT allow data entry&lt;br /&gt;
#define CTRL_LISTBOX			35&lt;br /&gt;
&lt;br /&gt;
// An edit field together with two little &lt;br /&gt;
// buttons on the side (aka spin field)&lt;br /&gt;
#define CTRL_SPINBOX			40&lt;br /&gt;
&lt;br /&gt;
// Two standalone spin buttons&lt;br /&gt;
// without an edit field&lt;br /&gt;
#define CTRL_SPINBUTTONS		45&lt;br /&gt;
&lt;br /&gt;
// A single tab&lt;br /&gt;
#define CTRL_TAB_ITEM			50&lt;br /&gt;
&lt;br /&gt;
// The border around a tab area,&lt;br /&gt;
// but without the tabs themselves.&lt;br /&gt;
// May have a gap at the top for&lt;br /&gt;
// the active tab&lt;br /&gt;
#define CTRL_TAB_PANE			55&lt;br /&gt;
&lt;br /&gt;
// Background of a Tab Pane&lt;br /&gt;
#define CTRL_TAB_BODY			56&lt;br /&gt;
&lt;br /&gt;
// Normal scrollbar, including&lt;br /&gt;
// all parts like slider, buttons&lt;br /&gt;
#define CTRL_SCROLLBAR			60&lt;br /&gt;
&lt;br /&gt;
// Border around a group of related&lt;br /&gt;
// items, perhaps also displaying&lt;br /&gt;
// a label of identification&lt;br /&gt;
#define CTRL_GROUPBOX			70&lt;br /&gt;
&lt;br /&gt;
// A separator line&lt;br /&gt;
#define CTRL_FIXEDLINE			80&lt;br /&gt;
&lt;br /&gt;
// A rectangular border, like a&lt;br /&gt;
// Tab Pane, but without the&lt;br /&gt;
// possible gap for a tab&lt;br /&gt;
#define CTRL_FIXEDBORDER		90&lt;br /&gt;
&lt;br /&gt;
// A toolbar control with buttons and a grip&lt;br /&gt;
#define CTRL_TOOLBAR		    100&lt;br /&gt;
&lt;br /&gt;
// The menubar&lt;br /&gt;
#define CTRL_MENUBAR		    120&lt;br /&gt;
// popup menu&lt;br /&gt;
#define CTRL_MENU_POPUP         121&lt;br /&gt;
&lt;br /&gt;
// The statusbar&lt;br /&gt;
#define CTRL_STATUSBAR		    130&lt;br /&gt;
&lt;br /&gt;
// tool tips&lt;br /&gt;
#define CTRL_TOOLTIP            140 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==To do==&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16071</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16071"/>
		<updated>2006-09-02T21:40:03Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* salnativewidgets.cxx */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 6 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
==List of all the controls to change + pictures (VCL&amp;lt;-&amp;gt;Apple) equivalent==&lt;br /&gt;
==To do==&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16070</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16070"/>
		<updated>2006-09-02T21:39:39Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.cxx===&lt;br /&gt;
This file was copied directly from the Windows implementation of native controls. All the useless functions were removed and we are left with 4 functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;isNativeControlSupported&amp;#039;&amp;#039;&amp;#039;: function called to see if a control should be implemented natively or not. A big switch statement that goes through all the controls and part of controls possible. Returns true when a control is supported. Each time a new control is implemented this function should be modified so the new native code is used at compile time.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;hitTestNativeControl&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getState&amp;#039;&amp;#039;&amp;#039;: a translation from the VCL constants to the Carbon constants of the state of controls.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControl&amp;#039;&amp;#039;&amp;#039;: the most important function. This is where the code for new native controls is written. Again it is a big switch statment that lists each control with the corresponding implementation. Needs to be modified each time a new control is implemented.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;drawNativeControlText&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getNativeControlRegion&amp;#039;&amp;#039;&amp;#039;: [TO DO]&lt;br /&gt;
&lt;br /&gt;
===salnativewidgets.hxx===&lt;br /&gt;
This header file describes all the structures, classes and constants used to get the state and properties of the VCL controls. It is necessary to be familiar with this file since its content will be used to translate the state and properties to their Carbon equivalent.&lt;br /&gt;
&lt;br /&gt;
==List of all the controls to change + pictures (VCL&amp;lt;-&amp;gt;Apple) equivalent==&lt;br /&gt;
==To do==&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16067</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16067"/>
		<updated>2006-09-02T21:26:39Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Overview of the Files that we need to deal with + graph */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
==Native controls in VCL==&lt;br /&gt;
&lt;br /&gt;
[[Image:Controls.jpg|frame|center|Native Controls Files in VCL]]&lt;br /&gt;
&lt;br /&gt;
==Overview of the Apple documentation that we need==&lt;br /&gt;
==List of all the controls to change + pictures (VCL&amp;lt;-&amp;gt;Apple) equivalent==&lt;br /&gt;
==To do==&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=File:Controls.jpg&amp;diff=16066</id>
		<title>File:Controls.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=File:Controls.jpg&amp;diff=16066"/>
		<updated>2006-09-02T21:25:20Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: Graph representing the path to the files for native controls&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Graph representing the path to the files for native controls&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16060</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16060"/>
		<updated>2006-09-02T20:24:45Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* The Appearance Manager and HITheme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants used to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful and should always be opened when implementing native controls. The AM and HITheme are very similar in the way they approach the implementation of native controls, most of the time the functions have similar names and the arguments different types so you can always use the AM reference to give you an idea about the procedure to follow.&lt;br /&gt;
&lt;br /&gt;
==Overview of the Files that we need to deal with + graph==&lt;br /&gt;
==Overview of the Apple documentation that we need==&lt;br /&gt;
==List of all the controls to change + pictures (VCL&amp;lt;-&amp;gt;Apple) equivalent==&lt;br /&gt;
==To do==&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16058</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16058"/>
		<updated>2006-09-02T19:29:28Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* The Appearance Manager and HITheme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface, by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. &lt;br /&gt;
&lt;br /&gt;
===Using HITheme===&lt;br /&gt;
Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful.&lt;br /&gt;
&lt;br /&gt;
==Overview of the Files that we need to deal with + graph==&lt;br /&gt;
==Overview of the Apple documentation that we need==&lt;br /&gt;
==List of all the controls to change + pictures (VCL&amp;lt;-&amp;gt;Apple) equivalent==&lt;br /&gt;
==To do==&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16055</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16055"/>
		<updated>2006-09-02T19:11:13Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Tradeoff between the Appearance Manager and HITheme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==The Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface, by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful.&lt;br /&gt;
&lt;br /&gt;
==Overview of the Files that we need to deal with + graph==&lt;br /&gt;
==Overview of the Apple documentation that we need==&lt;br /&gt;
==List of all the controls to change + pictures (VCL&amp;lt;-&amp;gt;Apple) equivalent==&lt;br /&gt;
==To do==&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16054</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16054"/>
		<updated>2006-09-02T19:09:36Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Tradeoff between the Appearance Manager and HITheme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==Tradeoff between the Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface, by using the Appearance Manager(AM). This API was first developed for Mac OS 8 and is centered around QuickDraw. The AM is less and less supported by Apple since 10.2 and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore some functions in the 10.4 version might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher only. Unfortunately there is not much documentation provided by Apple about HITheme. Thus we have to look at the HITheme.h header file directly and read the extensive comments to understand how to use this API. All the constants to describe the type of controls that we want to implement is still the same as in the AM. This is the reason why the AM reference document is still useful.&lt;br /&gt;
&lt;br /&gt;
==Overview of the Files that we need to deal with + graph==&lt;br /&gt;
==Overview of the Apple documentation that we need==&lt;br /&gt;
==List of all the controls to change + pictures (VCL&amp;lt;-&amp;gt;Apple) equivalent==&lt;br /&gt;
==To do==&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16053</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16053"/>
		<updated>2006-09-02T19:03:29Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Tradeoff between the Appearance Manager and HITheme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==Tradeoff between the Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface, by using the Appearance Manager. This API was first developed for Mac OS 8 and is centered around QuickDraw. The appearance manager is less and less supported by Apple and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been progressively added with each new version of OS X. Therefore functions in 10.4 might not be in 10.3 or 10.2. This will probably be one of the reason why the native version of OpenOffice.org will run on Mac OS X 10.4 and higher.&lt;br /&gt;
&lt;br /&gt;
==Overview of the Files that we need to deal with + graph==&lt;br /&gt;
==Overview of the Apple documentation that we need==&lt;br /&gt;
==List of all the controls to change + pictures (VCL&amp;lt;-&amp;gt;Apple) equivalent==&lt;br /&gt;
==To do==&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16052</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16052"/>
		<updated>2006-09-02T18:58:59Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==Tradeoff between the Appearance Manager and HITheme==&lt;br /&gt;
Apple provides an easy way to change a custom user interface to an aqua interface, by using the Appearance Manager. This API was developed for Mac OS 8 and 9, it is centered around QuickDraw. The appearance manager is less and less supported by Apple and any implementation needs to be replaced with the [http://developer.apple.com/referencelibrary/Carbon/idxHumanInterfaceToolbox-date.html HIToolbox] version: HITheme. The problem with HITheme is that its implementation started on Mac OS X 10.2 (Jaguar) and has since gone under many revisions and new functions have been added. So &lt;br /&gt;
&lt;br /&gt;
==Overview of the Files that we need to deal with + graph==&lt;br /&gt;
==Overview of the Apple documentation that we need==&lt;br /&gt;
==List of all the controls to change + pictures (VCL&amp;lt;-&amp;gt;Apple) equivalent==&lt;br /&gt;
==To do==&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16048</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16048"/>
		<updated>2006-09-02T18:33:09Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel using the Carbon API.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==Tradeoff between the Appearance Manager and HITheme==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview of the Files that we need to deal with + graph==&lt;br /&gt;
==Overview of the Apple documentation that we need==&lt;br /&gt;
==List of all the controls to change + pictures (VCL&amp;lt;-&amp;gt;Apple) equivalent==&lt;br /&gt;
==To do==&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16047</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16047"/>
		<updated>2006-09-02T18:32:10Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The purpose of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org. Our goal by implementing native controls is to remove the win32 look as much as possible and replace it by the Aqua look and feel.&lt;br /&gt;
&lt;br /&gt;
==Apple Documentation and References==&lt;br /&gt;
* [http://developer.apple.com/documentation/Carbon/Reference/Appearance_Manager/index.html Appearance Manager Reference]&lt;br /&gt;
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html Apple Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
==Tradeoff between the Appearance Manager and HITheme==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview of the Files that we need to deal with + graph==&lt;br /&gt;
==Overview of the Apple documentation that we need==&lt;br /&gt;
==List of all the controls to change + pictures (VCL&amp;lt;-&amp;gt;Apple) equivalent==&lt;br /&gt;
==To do==&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16046</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16046"/>
		<updated>2006-09-02T18:24:41Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The goal of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org.&lt;br /&gt;
&lt;br /&gt;
==Overview of the Files that we need to deal with + graph==&lt;br /&gt;
==Overview of the Apple documentation that we need==&lt;br /&gt;
==List of all the controls to change + pictures (VCL&amp;lt;-&amp;gt;Apple) equivalent==&lt;br /&gt;
==To do==&lt;br /&gt;
==Pictures of the current state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16045</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16045"/>
		<updated>2006-09-02T18:16:54Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The goal of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16044</id>
		<title>Mac OS X Porting - Native Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Mac_OS_X_Porting_-_Native_Controls&amp;diff=16044"/>
		<updated>2006-09-02T18:16:25Z</updated>

		<summary type="html">&lt;p&gt;Pdefilippis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Native Controls=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The goal of this article is to present our current knowledge and progress of the implementation of native controls in the native Mac OS X version of OpenOffice.org.&lt;/div&gt;</summary>
		<author><name>Pdefilippis</name></author>
	</entry>
</feed>