Difference between revisions of "User:Ericb"

From Apache OpenOffice Wiki
Jump to: navigation, search
m (Reverted edits by Medicalbillingcod (Talk) to last revision by Ericb)
 
(222 intermediate revisions by 5 users not shown)
Line 4: Line 4:
 
The Original Documentation is "Mac OS X native port". The Initial Writer of the Original Documentation is (JCA) Eric Bachard (C) 2005-2006. All Rights Reserved. (Initial Writer contact(s): ericb@openoffice.org.)
 
The Original Documentation is "Mac OS X native port". The Initial Writer of the Original Documentation is (JCA) Eric Bachard (C) 2005-2006. All Rights Reserved. (Initial Writer contact(s): ericb@openoffice.org.)
  
=='''Mac OS X Native port'''==
+
== My contributions to OpenOffice.org (the most recents, the first listed) ==  
  
<div class="messagebox cleanup metadata" style="border:1px solid blue;background-color:#B3FFF5;padding:7px;">
+
=== Integrated ===
'''The first Mac OS X native port objective is make OpenOffice.org run without X11 use, to make it a real Mac application.'''
 
  
'''The second one is respect Aqua Human interface Guidelines'''
+
Alle the cws's I contributed for OpenOffice.org Project (means <u>commit in the cws, and/or as cws owner</u>)
  
''' This is a long term work, and every help and/or contributions, like donations** are welcome.'''
+
Integrated in {{m|50|DEV300}}
</div>
 
  
  **see http://contributing.openoffice.org/index.html
+
* '''{{CWS|moz2seamonkey01|DEV300}}''' Mozilla 1.7.5 -> Seamonkey 1.1.14 migration ( Windows, Mac OS X , Linux )
  
=='''Native Port Roadmap'''==
+
Integrated in {{m|42|DEV300}}
  
==='''2006'''===
+
* '''{{CWS|macmiscfixes|DEV300}}''' (created, 2 issues fixed) : fix some mac misc issues
  
* June 2006: work in progress
+
Integrated in {{m|40|DEV300}}
  
- Basis: frame, instances, threads, drawing, painting, resizing (Stephan Schaefer, Tino Rachui)
+
* '''{{CWS|appleremote02|DEV300}}''' : replace keyCodes, using MEDIA_COMMAND_* instead
  
Done:
 
implement threads
 
create, manage instance
 
create, manage windows (including parents)
 
create, manage events
 
create manage drawing, resizing
 
create, add menus (Pavel Janik)
 
toggle window fullscreen (Pierre de Filippis)
 
make font server work (Stephan Schaefer)
 
  
* Current status font support (Stephan Schaefer, 2006/07/28): the following features are basically working now
+
Integrated in {{m|38|DEV300}}
** font selection
 
** font size
 
** simple font attributes (bold, italic)
 
  
Next step: document first part, and propose design
+
* '''{{CWS|macmenusquit|DEV300}}''' : this cws aims to remove the useless " Quit ", "About", "Tools->Options" entries in the menus, on Mac OS X Aqua only
  
- native filepicker (Pavel Janik, Florian Heckl)
+
Integrated in {{m|35|DEV300}}
  
- native printing implementation (Oliver?)
+
* '''{{CWS|appleremote01|DEV300}}''' : use the Apple Remote with Impress
  
- native font implementation (Eric Bachard)
+
Integrated in {{m|26|DEV300}}
 +
* '''{{CWS|aquavcl09}}''': many fixes for the Aqua-GSL layer
  
* September 2006:  
+
Integrated in {{m|23|DEV300}} and {{m|3|BEB300}}
 +
* '''{{CWS|aquavcl08}}''' : fixes drag&drop crashes, CJK enhancements, copy&paste fixes, drawing fixes, multimonitor fixes, etc.
  
- first proofs of concept: fonts, filepicker .. (more?)
+
Integrated in {{m|22|DEV300}}
- show the results (OOoCon 2006?)
+
* '''{{CWS|canvas05|DEV300}}''' : contributions
  
==='''2007'''===
+
* '''{{CWS|aquavcl07|DEV300}}''': misc Aqua related fixes
  
* January 2007: first alpha implementation
+
Integrated in {{m|6|DEV300}}
 +
* '''{{CWS|aquavcl06|DEV300}}''': misc Aqua related fixes
 +
 
 +
Integrated in {{m|2|DEV300}}
 +
*'''{{CWS|aquavcl05|SRC680}}''': misc Aqua related fixes
 +
 
 +
*'''{{CWS|nativeprintdlg01|SRC680}}''' : add support for native print dialog
 +
 
 +
Integrated in {{m|243|SRC680}}
 +
*'''{{CWS|stl4leopardppc|SRC680}}''' : fix the build with system STL for on OSX 10.5 PowerPC
 +
*'''{{CWS|aquavcl04|SRC680}}''': misc Aqua related fixes
 +
* '''{{CWS|wae4extensions|DEV300}}''': This cws is an effort to fix warnings at buildtime in extensions
 +
 
 +
Integrated in {{m|238|SRC680}}
 +
*'''{{CWS|macosx24dmg|SRC680}}''': fix bad icon positionning in the mounted disk image
 +
 
 +
*'''{{CWS|macleopardbuild|SRC680}}''' : be Leopard compatible, when building on Tiger
 +
 
 +
Integrated in {{m|233|SRC680}}
 +
*'''{{CWS|readme4macintel|SRC680}}''' 
  
=='''Strategy for native port'''==
+
*'''{{CWS|aquavcl03|SRC680}}''': migrating from Carbon to Cocoa API
  
'''Possible Actions''':  
+
*'''{{CWS|spotlightplugin01|SRC680}}''': add a new Sportlight plugin
  
Identify us:
+
*'''{{CWS|aquavclcarbonfixes|SRC680}}''': fix the 5 most important issues for the  Carbon version of Aqua OpenOffice.org
  
#Complete the arrays below
+
Integrated in {{m|229|SRC680}}
#Update photos on frapr.com?
+
*'''{{CWS|macaddressbook01|SRC680}}''' : use native OSX address book
  
Share the work:
+
Integrated in {{m|228|SRC680}}
 +
*'''{{CWS|cloph09|SRC680}}''': remove X11SDK dependance for Aquabuild
  
#Divide the work between little Teams
+
Integrated in {{m|227|SRC680}}
#Update Todo list regularly -> needs some love these days ... [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s]
+
*'''{{CWS|aquaremovescripts|SRC680}}''': remove useless Applescripts from Aqua version
  
Help:
+
Integrated in {{m|223|SRC680}}:
 +
*'''{{CWS|aquavcl02|SRC680}}''': second child workspace for OSX native related issues
  
#Teach tools between us
+
Integrated in {{m|222|SRC680}} :
#Do a debug party on IRC
+
*'''{{CWS|aquaremovefondu|SRC680}}''': remove obsolete code from the OSX X11 port
#write documentation
+
*'''{{CWS|macosxdmg23|SRC680}}''': improve the generated disk image
  
Meet us:
+
Integrated in {{m|221|SRC680}}:
 +
*'''{{CWS|aquafilepicker01|SRC680}}''': use native OSX filepicker
  
#IRC
+
Integrated in {{m|219|SRC680}}:
#Mac Meeting (like nov2005 in Hamburg?)
+
*'''{{CWS|salaquatox11|SRC680}}''': Include sal changes we did in aquavcl01 into normal milestone, and verify X11 build works too using them, avoiding break in others OS. Means : remove systools/macxp_extras + files inside add osxlocale object in libuno_sal and build it remove libsalsystool (was macosx only ), simplify locale detection, protect other OS from the changes
  
Inform:
+
Integrated in {{m|217|SRC680}}:
 +
*'''{{CWS|aquavcl01|SRC680}}''': the mother of all OpenOffice.org Aqua related CWSses
  
#Update website regularly
+
Integrated in {{m|212|SRC680}}:
#Blogs
+
*'''{{CWS|macosxpbuildrepair|SRC680}}''': the mother of all OpenOffice.org Aqua related CWSses
  
 +
Integrated in {{m|200|SRC680}}:
 +
*'''{{CWS|macosx22fixes|SRC680}}''': misc fixes for coming 2.2 , including version number changes
  
'''WHO''':
+
Integrated in {{m|187|SRC680}}:
 +
*'''{{CWS|macmozplugfix|SRC680}}''': Fix mozilla plugin issue on Mac OS X, building or not mozilla plugin
  
Mac Team:
+
Integrated in {{m|180|SRC680}}:
 +
*'''{{CWS|macosx204fixes|SRC680}}''': Some little fixes for OpenOffice.org 2.0.4 on Mac OS X
  
{| style="vertical-align:top; text-align:left; background-color:#efefef;"
+
Integrated in {{m|177|SRC680}}:
|- style="background-color:#d6d6d6;font-weight:bold;"
+
*'''{{CWS|macosxkbd|SRC680}}''': Fix caplocks bug when +kb extension is used to start X11, hardcode mod5 remap for ALT key and remove +kb extension
|Developer \ skills || build || write code || code review || debug/trace (higher is better) || contribute to documentation ||
 
|-
 
|ericb|| x || x || || 1 || x ||
 
|-
 
|pjanik|| || || || || ||
 
|-
 
|ssa|| || || || || ||
 
|-
 
|maho|| || || || || ||
 
|-
 
|tinor|| || || || || ||
 
|-
 
|schmidtm|| || || || || ||
 
|-
 
|ebischoff|| || || || || ||
 
|-
 
|obr|| || || || || ||
 
|-
 
|cl|| || || || || ||
 
|-
 
|aliscafo|| || || || || ||
 
|-
 
|fheckl|| || || || || ||
 
|-
 
|Fridrich|| || || || || ||
 
|-
 
|plipli|| || x || || || x ||
 
|-
 
|}
 
  
 +
Integrated in {{m|176|SRC680}}:
 +
*'''{{CWS|linuxppcrpm|SRC680}}''': make rpm packages buildable on Linux PowerPC when building
 +
OpenOffice.org using Debian or Ubuntu distribution
  
'''Other resources''':
+
Integrated in {{m|170|SRC680}}:
 +
*'''{{CWS|macosxfondu2|SRC680}}''': Implement fondu and X11 check for Mac OS X. Include fondu in OOo for Mac OS X to automatically extract natives fonts
  
fonts:?
+
Integrated in {{m|159|SRC680}}:
 +
*'''{{CWS|aquacolors|SRC680}}''': Change User Interface colors on Mac OS X only
  
events:?
+
Integrated in {{m|156|SRC680}}:
 +
*'''{{CWS|macintel01|SRC680}}''': add Intel architecture for Mac OS X  (Universal Binary later)
  
QA: James McKenzie leads QA for the Mac OS X port of OpenOffice.org and is looking for volunteers to spread this effort over several people and needs people from all over the world to test various languages.
+
Integrated in {{m|146|SRC680}}:
 +
*'''{{CWS|unxlngppc02|SRC680}}''': fix LINK for unxlngppc and work around GCC bug in svx
  
graphical:?
+
Integrated in {{m|2|SRC680}}:
 +
*'''{{CWS|macosx11|SRC680}}''': Important Mac OS X fix for Java 1.4.2  AWT +fix for correct portaudio detection in configure +fix for problem when query for  locale or ui language fails +fix for avmedia player crashes (using external JMF) + fix for --without-nas detection in configure
  
Communication:?
+
Integrated in {{m|125|SRC680}}:
 +
*'''{{CWS|macosx10|SRC680}}''': Builds and smoketests executed successfully under Solaris, Linux, Windows, Mac OS X
  
 +
Integrated in {{m|53|SRC680}}:
 +
*'''{{CWS|macxjoin1153|SRX645}}''':  canceled
  
 +
Integrated in {{m|118|SRC680}}:
 +
*'''{{CWS|linuxppc04|SRC680}}''': export JITC_PROCESSOR_TYPE=6 for the build env on Linux/powerpc, IBMs JDK needs it + epm patch for Debian has to be modified
  
'''WHAT''': Status of most important tasks
 
  
{| style="vertical-align:top; text-align:left; background-color:#efefef;"
+
Integrated in {{m|114|SRC680}}:
|- style="background-color:#d6d6d6;font-weight:bold;"
+
*'''{{CWS|macosx09|SRC680}}''': build fixes for Mac OSX and FreeBSD to integrate asap
| Task || Names|| Urgency (1=higher)|| Work in Progress || Done || Code review || Debug || Integration ||  
+
 
|-
+
Integrated in {{m|112|SRC680}}:
|Get rid of X11||done || 1 || x || x || || || ||
+
*'''{{CWS|linuxppc03|SRC680}}''': Fix installation bug for Linux PPC architecture for Debian
|-
+
 
|Bundle|| || 1 || x || || || || | ||
+
Integrated in {{m|110|SRC680}}:
|-
+
*'''{{CWS|macosx08|SRC680}}''': Mac OSX fixes for : mozilla environment build + fix bad test in soffice.sh
|Drawing|| || 1 || x || || || || || ||
 
|-
 
|Fonts||plipli || 1 || x || || || || || ||
 
|-
 
|Events management|| || 2 || x || || || || || ||
 
|-
 
|Controls (see list) ||ericb, aliscafo || 2 || x || || || || || ||
 
|-
 
|Native FilePicker||Florian Heckl, Pavel Janik || 3 || x || x || || || || ||
 
|-
 
|Native Printing||Yvan Barthelemy || 3 || x || || || || || ||
 
|-
 
|Native SpellChecker|| || 4 || || || || || || ||
 
|-
 
|Player|| || 4 ||  || || || || || ||
 
|}
 
  
 +
Integrated in {{m|107|SRC680}}:
 +
*'''{{CWS|macosx07|SRC680}}''': Some fixes for Mac OSX port :  enable UTF-8 for filenames and dirnames, make use of scanner available, other fixes in extensions ...  [to be completed]
  
Other tasks:
+
Integrated in {{m|103|SRC680}}:
 +
*'''{{CWS|linuxppc02|SRC680}}''': misc linux PPC fixes
  
Help for writing bug lists, status of bugs ..etc
+
Integrated in {{m|101|SRC680}}:
 +
*'''{{CWS|thesau01|SRC680}}''': wrong "replace" suggestion in thesaurus
  
Write howto use gdb, leaks, other tools
+
Integrated in {{m|98|SRC680}}:
 +
*'''{{CWS|macosx06|SRC680}}''': Java and database did'nt work at all on Mac OSX
  
'''WHEN''':
+
=== Close for development ===
 +
<br>
  
From Christian Lippka (last meeting, 25th of august 2006):
 
Aug 26 00:21:38 ChristianL
 
from my point of view what is missing for point 1:
 
text layout, complete font support, keyboard support,
 
fixing repaint issues, having aqua install and run out of the box
 
  
'''September 2006'''
+
* '''{{CWS|eraser01|DEV300}}''' (soon RfQA) : extra feature for the Impress : can use the pen, change the color, erase ..and so on using the HP Tablet PC
  
Present the current state of the project at the 2006 OpenOffice conference in Lyon and Paris
+
=== Work in progress, or planned ===
  
'''Late 2006'''
+
<br>
  
fix OpenOffice.org launch
 
fix drawing (repainting)
 
Implement missing methods and fix most important bugs (mainly the one leading to crash) in:
 
ATS
 
Salgraphics
 
Salinstance
 
  
'''January or February 2007'''
+
* '''{{CWS|macmetallicremote2009|DEV300}}''' (completed, to be verified) : new cookies for the metallic Apple remote (2009 model)
  
make Java work (works partially)
 
make intensive debug
 
present something working as alpha
 
  
'''June 2007 '''
+
* '''{{CWS|appleremote03|DEV300}}''' (created) : try to make the contextual menus work in Impress presentation mode with Apple remote
  
Implementation of:
 
native filepicker
 
native printing
 
  
== '''Become a Domain Developer for Mac OS X port''' ==
+
* '''{{CWS|quicklookplugin01|DEV300}}''' : contributions
  
People regularly contributing to Mac OS x port with regular and quality patches are, after proposal, invited to become a [[DomainDeveloper]].
+
* '''{{CWS|maclibtests|DEV300}}''' (works) :  fix builds issues and make it more robust
  
The purpose of this document is to clearly define all the steps to become a [[DomainDeveloper]].
+
* '''{{CWS|ooo4kids|DEV300}}''' (planned) : a simple try to simplify OOo 4 kids use
  
  
Preliminary:  step 1 in  [[Commit_Rights]] must be completed and checked, and you must be in the list of [[http://www.openoffice.org/FAQs/faq-licensing.html#jca1 JCA Licensed people]]
+
* '''{{CWS|ogltrans4mac|DEV300}}''' (works already, yet some work in progress) : make the OpenGL transitions work with the Aqua version of OpenOffice.org
  
=== Steps for ssh2 key to be uploaded ===
+
* '''{{CWS|wae4binfilter01|DEV300}}'''  (completed, but will never be integrated ) : fix warnings building binfilter
  
==== Create the key ====
+
* '''{{CWS|macosxscanner01|DEV300}}''' (planned)
  
Everything is described here: [[http://www.openoffice.org/scdocs/ddSSHGuide.html SSH Guide]]
+
'''FIXME''': add some other cws's not listed
  
==== Upload the key ====
+
== Education Project ==
  
You must create an issue, like described below  :
+
[[Image:Ericb.jpg|right]]
  
'''Assign it to "ssh2key" in the "www" component'''
+
The new page is there:
  
Sub Component: openoffice.org cvs
+
[[Education Project]]
  
Title: CVS Commit access request
+
[[Project EDUCATION-ch]]
  
Add louis (Louis Suarez Potts) or st (Stefan Taxhet) on CC
+
[[fr-EDUCATION]]
  
Upload your ssh2 public key respecting the process (Attach a DSA key, not an RSA)
+
[[Education_ClassRoom]]
  
A project lead will confirm your request
+
[[Education_Applications]]
  
Then the support will upload your key
+
IRC meetings for Education project is there :
 
+
Once done the issue is set to Fixed , and the next step has to be verified before '''you''' close it.
+
[[Education IRC meetings]]
  
'''EXAMPLE''': [[http://www.openoffice.org/issues/show_bug.cgi?id=75291 Upload SSH2 Key for Etsushi Kato]]
+
=== Strategy for Education project ===
  
==== Verify it works ====
+
* create a bridge between Education world and OpenOffice.org project
 +
* find developers for OpenOffice.org project
  
You now can try to connect via tunnel, and follow instructions given [[http://www.openoffice.org/scdocs/ddSSHGuide.html SSH Guide]]
+
==== Social contract ====
  
If something goes wrong, ask for help to support, with a maximum of details, to solve the problem.
+
# Create an Education Team for OpenOffice.org project
 +
# Create a network of contacts (e.g. Academic contacts in France )
 +
# Valorize and support Education Community
  
Once it works, the issue can be closed, and you can e.g. test downloading a module from tunnel repository :
+
==== Visibility  ====
  
First create a tunnel with the command:
+
# Website
<pre>
+
# Be present in important events FIXME: write a list ... 
ssh -2 -x -L 2401:localhost:2401 tunnel@openoffice.org
+
# Blogs
</pre>
+
# Lists
 +
# IRC
 +
# Schools and sponsors
  
Then in a new window:
+
==== Content ====
  
<pre>
+
# Provide pedagogical tools
export CVSROOT=":pserver:your_login@localhost:/cvs"
+
# Provide howtos for migrations in schools
 +
# Provide courses as school cases of applications or writingcode ( existing cases)
  
cvs login (enter)
+
==== Knowledge ====
  
(your password)
+
# Connect with other projects
 +
# Define a pool of devs and resources
 +
# Separate tools learning and pure code learning
 +
# Create courses with identified levels
  
mkdir TEST
 
  
cd TEST
+
=== FOSDEM 2008 ===
  
cvs -z4 co -r SRC680_m205 vcl
+
Draft will be completed once sure expenses will be funded
  
cd vcl
+
=== Draft of existing cases ===
 +
Existing cases and thoughts about them ...
  
cat CVS/Root  -> should indicate: your local repository
+
<pre>
 +
+ A is a student who is doing advanced studies (possibly computer science/engineering) and is well up with Java and C -
 +
> A wants to know what can be the steps towards becoming a contributor to bits of OO.o where a difference can be made
 
</pre>
 
</pre>
  
=== Ask for CVS access for all modules required ===
+
skills : be computer science/engineering
  
Two steps: create an issue is mandatory because the concerned project is tools, and because people can have only ssh2 key without being [[DomainDeveloper]].
+
Now: possible
  
==== Create an issue ====
+
Important: only a few students can be mentored, because ot lack of resources
  
You must create an issue, described below  :
+
About C skills:
  
Component: tools
+
There is some C in sal, and in some other places in OpenOffice.org source code (mainly tools or external tools).
 +
For Java there is ~ 5% max of Java code, C++ does represent 90% of the source code of OpenOffice.org
 +
There are some Python , bash and objective-C ( in Aqua version) too, but just a bit.
 +
C language, even advanced, is not a bad thing, but OpenOffice.org source code is more Academic C++ (not sure of the term) than C.
  
Sub Component: www
+
First steps : learn C++, learn coding guidelines in OpenOffice.org project (they are existing documents on the wiki), learn stl use, and learn the sources organisation. Then learn the code present in some extensions, learn how trace OpenOffice.org using a debugger, or try to fix some bugs, and finally experiment is imho the next step.
  
Title: CVS access to all modules required
+
The real case is not exactly turned like that :
  
Assigned to mh  +  CC for ericb and/or pjanik
+
Either the student has a precise idea of what he wants to contribute for. e.g. : implement a new feature in writer, or help for porting project, or .. (other application)
  
Present yourself quickly, and ask the access
+
... or the application is already existing (there are some applications already proposed (Just not the link in mind right now)
  
A project lead will confirm
 
  
An admin will confirm this is ok, and set the issue to Fixed
+
In the first case, the steps could be :
  
 +
- choose an OS (e.g. Linux prefered, for soupleness) , and learn what happens when OpenOffice.org Framework is built.
 +
- learn how modules are organized ( why such f.. organization ? )
 +
- when sw ( means Star Writer ) is built, understand what are the dependencies, how link, what must be built before, where are all part used by writer.
  
'''EXAMPLE''': [[http://www.openoffice.org/issues/show_bug.cgi?id=75494 CVS Access all modules for Etsushi Kato]]
+
Once everything is in place, then learn writer source code. Lot of lines ( really ! )
  
==== Verify ====
+
Missing: learn OpenOffice.org tools, cvs, cwstools, bonsai, LXR, EIS, how commit, what a cws is, OpenOffice.org scheduling .. and so on, like write a documentation for the next students to come, following the golden rule : not redo over and over ..
  
Create the tunnel :
+
This would need IMHO a lot of time. With the little experience I have with Google Summer of code, imho several months are mandatory.
 +
 +
Second case: help porting project
  
open a terminal and type :
+
- learn how build OpenOffice.org ( yes, before to test some new feature, you need a working set)
 +
- discover vcl
 +
- learn how it works, (virtual classes, implementation OS dependant ... etc ) , some other fun
 +
- understand what is the problem ( bind an OS over virtual - empty - boxes) and start (uff) to work for what he wanted to contribute for .. long time ago.
  
ssh -2 -x -L 2401:localhost:2401 tunnel@openoffice.org
+
(same next steps .. )
  
once logged in, open a new terminal, and do (for example):
+
Third case :  
<pre>
 
cd $OOO_SRC_ROOT/
 
  
source MacOSXPPCEnv.Set.sh { source MacOSXX86Env.Set.sh for Mac Intel }
+
... etc. Other possibilities: implement UNO services. Means learn (again) how build an installset, understand what offapi does contain, and what is the role of all those interfaces. Learn examples (lot of time, and code and energy) and finally, implement the new feature.
  
cd vcl  (for example)
+
( same next steps )
  
IMPORTANT: be sure vcl has been checked from tunnel, not from anoncvs (cat CVS/Root will give you the answer)
+
Jürgen Schmidt will complete, since he's a better specialist than me there  ( please add how create a new extension case too  ;-)
 +
 +
As summary, the common denominator is:
  
export CWS_WORK_STAMP=aquavcl01  # Only needed for working with [[EIS]], can change for a different CWS ;)
+
- learn how build OpenOffice.org framework
 +
- learn alone such tools is not possible, and one mentor must be there
 +
- OpenOffice.org developers are paid for a lot of things, and that's not easy to bother them for everything randomly.
  
cd aqua/source/gdi
+
I think, one student, one dedicated dev like Jürgen or me, or you maybe to accompagn him.
  
add your changes to your_file.cxx, then commit :
+
If you see a shorter way to produce an OpenOffice.org developer, please tell me :-)
  
cvs commit -m "#i75689# bla bla ... the reason of the modification(s)"  your_file.cxx  # The #i75689# is an issue number in the tracker
+
<pre>
 +
+ B is a professor who is in charge of a class of students tasked with doing a credit based FOSS project and B would really like for OO.o to
 +
help tell how the students can be involved
 +
</pre>
 +
See above, this is similar to A. Just the professor will have more autonomy and add interesting point of views in discussions ... and maybe will propose improvements, or find some issues.
  
cvs update
+
This is the prefered case, because we valorize a professor, a student, a school and the project.
  
If nothing is wrong, cvs update should not return M for your_file.cxx, means the commit is successfull.
+
<pre>
 +
+ C is an artist and C wants to contribute to OO.o's art effort but is not sure if Education Project is the way to go
 
</pre>
 
</pre>
In case of problem, use the issue until it is fixed
 
  
 +
We can help too. but this would be limited to OpenOffice.org projeect introduction, orient these artist on art project, how register, .etc.  The list combined to IRC is perfect. Start now is possible.
  
<big>'''Welcome aboard :)'''</big>
+
<pre>
 +
+ D is a senior student trying to coach juniors into understanding how FOSS projects work and thinks teaching them to triage bugs would be
 +
> awesome - can this project help D ?
 +
</pre>
  
== '''Mac OS X porter Team at WWDC 2007''' ==
+
Yes, sure.
  
=== What is WWDC 2007? ===
+
We can welcome, explain the project, discover together, and show examples of issues. I know some, but we certainly will have to define better how proceed.
  
See [http://developer.apple.com/wwdc/ Apple WWDC 2007]
+
<pre>
 +
+ E is a fresher in pre-college who has used OO.o, knows something about Linux and FOSS and thinks that there are ideas that can be proposed to
 +
> enhance the user experience - should E get in touch with Education Project ?
 +
</pre>
  
====Labs Agenda====
+
I think we can welcome, explain OpenOffice.org project, orient and ask in return to the newcomer to write what he learned with us, preparing the next student in the same case.
  
It is extremely important to organize us for Labs.
+
This is another important example we should take care: User Experience is extremely important and we have a lot of work before to pretend welcome E case.
  
The rule is extremely simple: bring your laptop, your code, and ask :)
+
Needs some work
 +
 +
<pre>
 +
+ F is a freelance developer good in Python and wants to create extensions that would also allow a business to be wrapped around that
 +
</pre>
  
{| border="1" cellpadding="10"
+
Jürgen  .. please help me :-)
| Days
 
|monday<br>June 11
 
|tuesday<br>June 12
 
|wednesday<br>June 13 <br>'''BOOKED''' <br>1 hour starting from ~ 10:30 11:00 pm <br>John Gelynse User User Interface design
 
|thursday<br>June 14 : <br>'''BOOKED''' <br>from 10:45 to 11:30 pm <br>Deric Horn / Keith Mortensen <br>Carbon and Cocoa Integration Lab
 
|friday <br>June 15
 
|-
 
|Labs
 
|<br>Afternoon
 
|Morning<br>Afternoon
 
|Morning<br>Afternoon
 
|Morning<br>Afternoon
 
|Morning<br>Afternoon
 
|}
 
  
===='''Interesting Labs'''====
 
  
The complete list: [http://developer.apple.com/wwdc/tracks/macosx.html Mac OS X Essentials]
+
Other cases :  
  
 +
A professor/teacher wrote a tool, including pedagogical notice about it, and wants to share it
  
*Core Text Lab
+
A professor/teacher is searching what does exist
Receive one-on-one technical assistance and troubleshooting advice from the Core Text engineering team. Learn how to use the advanced font handling and blazingly fast Unicode layout capabilities of Core Text. Bring your laptop, your code, and your questions.
 
  
*HIToolbox Lab
+
A professor/teacher wants to install OpenOffice.org on a network for his job
Work on tuning and debugging HIToolbox code in your Carbon application. Receive one-on-one technical assistance and troubleshooting advice from the High Level Toolbox engineering team, Apple DTS engineers, and technology evangelists. Bring your laptop, your code, and your questions.
 
  
=== Our Objectives at the WWDC 2007 ===
+
=='''Mac OS X Native port'''==
  
'''1) Connection OOo Mac team / Apple engineers'''  
+
<div class="messagebox cleanup metadata" style="border:1px solid blue;background-color:#B3FFF5;padding:7px;">
 +
'''The first Mac OS X native port objective is make OpenOffice.org run without X11 use, to make it a real Mac application.'''
  
-Goal 1.1: "Get infos, contacts, human to human conversation :-)"
+
'''The second one is respect Aqua Human interface Guidelines'''
  
-> Present our current work, methods and team to Apple people :
+
''' This is a long term work, and every help and/or contributions, like donations** are welcome.'''
 +
</div>
  
-> Meet them during WWDC: give us/them a face, keep contacts
+
**see http://contributing.openoffice.org/index.html
  
-> Get their impression about what we have already done and what is still ToDo
+
[[Mac OS X Porting - Apple Remote implementation]]
  
  
'''2) Improve from Apple's engineers expertise'''
 
  
-Goal 2.1: "Give MacOS X users the OOo suite they deserve"
+
=='''Native Port Roadmap'''==
 +
http://eric.bachard.free.fr/mac/aquavcl/screenshots/july2007/Tango_icons/Draw/Image31_mini.png
 +
==='''2006'''===
  
=> As mac platform and apple's product fans, we are proud to bring the quality and power of OOo to mac users community
+
* June 2006: work in progress
  
=> Make OOo uses all the power of Mac OSX, including upcoming Leopard !
+
- Basis: frame, instances, threads, drawing, painting, resizing (Stephan Schaefer, Tino Rachui)
  
-Goal 2.2: "OO.org Mac port has to be as Apple HIG compliant as possible"
+
Done:  
 +
implement threads
 +
create, manage instance
 +
create, manage windows (including parents)
 +
create, manage events
 +
create manage drawing, resizing
 +
create, add menus (Pavel Janik)
 +
toggle window fullscreen (Pierre de Filippis)
 +
make font server work (Stephan Schaefer)
  
=> Define what is expected for User Interface of OpenOffice.org suite with people from Apple UI project
+
* Current status font support (Stephan Schaefer, 2006/07/28): the following features are basically working now
 +
** font selection
 +
** font size
 +
** simple font attributes (bold, italic)
  
  - FYI: Last year, Apple UI project proposed ericb to help us, once our native menus will be working.
+
  Next step: document first part, and propose design
  This is now done.
 
  
 +
- native filepicker (Pavel Janik, Florian Heckl)
  
'''3) Get code guidelines, tips, samples'''
+
- native printing implementation (Oliver?)
  
-Goal 3.1: "Ask for code review and find code snippets"
+
- native font implementation (Eric Bachard)
  
  - HIView
+
* September 2006:
  - Printing
 
  - Drag and Drop
 
  - as muc has possible
 
  
=> More than 1000 Apple engineers are present, and can answer our questions regarding the code, during the whole week
+
- first proofs of concept: fonts, filepicker .. (more?)
 +
- show the results (OOoCon 2006?)
  
-Goal 3.2: "Attend key Labs and Sessions to get full overview of Tiger/Leopard/Core's and useful code"
+
==='''2007'''===
  
  - Core*
+
* January 2007: first alpha implementation
  - Tiger / Leopard
 
  
 +
=='''Strategy for native port'''==
  
'''4) Social Contacts / Team emulation'''  
+
'''Possible Actions''':
  
-> Discuss and meet new developers and / or american people working for Mac OS X port (like Michael Sicotte, Vijay Venkatraman , other..)
+
Identify us:
-> Share ideas, tips, conviviality !
 
  
 +
#Complete the arrays below
 +
#Update photos on frapr.com?
  
'''5) Visibility'''
+
Share the work:
  
OpenOffice.org Native Mac port has to be recognized as the professionnal office suite for Mac users it is !
+
#Divide the work between little Teams
 +
#Update Todo list regularly -> needs some love these days ... [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s]
  
=== Who? ===
+
Help:
  
* Sébastien Plisson
+
#Teach tools between us
* Eric Bachard
+
#Do a debug party on IRC
* Philipp Lohmann
+
#write documentation
  
=== Todo list ===
+
Meet us:
  
Please add topics, technical questions you would see asked by attendees to Apple engineers during WWDC
+
#IRC
 +
#Mac Meeting (like nov2005 in Hamburg?)
  
====Suggestions for current issues to be fixed ====
+
Inform:
  
 +
#Update website regularly
 +
#Blogs
  
  
Timers: Current code is obsolete, and compatibility with Leopard won't probably exist.  Pavel wrote a patch using recent code. Seems to work fine, excepted a thread issue (crash not easy to be reproduced)
+
'''WHO''':
  
Questions ( pavel )
+
Mac Team:
  
Does Apple have a plan to enable UI drawing from threads different from the first one?
+
{| style="vertical-align:top; text-align:left; background-color:#efefef;"
 
+
|- style="background-color:#d6d6d6;font-weight:bold;"
Does Apple have a plan to allow java to be run from other threads as well?
+
|Developer \ skills || build || write code || code review || debug/trace (higher is better) || contribute to documentation ||
 
+
|-
 
+
|ericb|| x || x || || 1 || x ||
Salframe:
+
|-
 
+
|pjanik|| || || || || ||
Looot of things:
+
|-
 +
|ssa|| || || || || ||
 +
|-
 +
|maho|| || || || || ||
 +
|-
 +
|tinor|| || || || || ||
 +
|-
 +
|schmidtm|| || || || || ||
 +
|-
 +
|ebischoff|| || || || || ||
 +
|-
 +
|obr|| || || || || ||
 +
|-
 +
|cl|| || || || || ||
 +
|-
 +
|aliscafo|| || || || || ||
 +
|-
 +
|fheckl|| || || || || ||
 +
|-
 +
|Fridrich|| || || || || ||
 +
|-
 +
|plipli|| || x || || || x ||
 +
|-
 +
|}
  
* fix all our busy paint places
 
  
*Find infos/code sample about parenting
+
'''Other resources''':
  
*Code review for HIFrameWork implementation
+
fonts:?
  
*Menus: every window creates it's own menu. Redesign it?
+
events:?
  
*adapt native widget framework
+
QA: James McKenzie leads QA for the Mac OS X port of OpenOffice.org and is looking for volunteers to spread this effort over several people and needs people from all over the world to test various languages.
  
*Use XCode to build OpenOffice.org
+
graphical:?
  
Events: code review, tips
+
Communication:?
  
ATS: code review, ATS issues
 
  
Mike Sicotte: 
 
I understood that implementing printing in aqua OOo was a topic that we didn't get accepted into Google SOC - so remains on the ToDo list.  I notice that there are three Sessions specfically related to printing at WWDC:
 
    Leveraging the Common Unix Printing System (CUPS)
 
    Printing with Style in Mac OS X
 
    Printing Lab
 
If this is judged to be a good use of time at WWDC I would be willing to spend some time to help further develop the questions to be addressed with the Apple engineers.
 
  
ericb->Mike Sicotte
+
'''WHAT''': Status of most important tasks
  
Good idea. You are welcome :)
+
{| style="vertical-align:top; text-align:left; background-color:#efefef;"
 
+
|- style="background-color:#d6d6d6;font-weight:bold;"
==== Travel ====
+
| Task || Names|| Urgency (1=higher)|| Work in Progress || Done || Code review || Debug || Integration ||
 
+
|-
*describe the schedule of the travel
+
|Get rid of X11||done || 1 || x || x || || || ||
 
+
|-
ericb :
+
|Bundle|| || 1 || x || || || || | ||
<pre>
+
|-
Mulhouse -> Paris -> SF:  9th of June    SF scheduled arrival: 7:13 pm
+
|Drawing|| || 1 || x || || || || || ||
SF -> Paris -> Mulhouse:  16th of June (arrival 17thSF departure for the return:  3:00 pm
+
|-
 +
|Fonts||plipli || 1 || x || || || || || ||
 +
|-
 +
|Events management|| || 2 || x || || || || || ||
 +
|-
 +
|Controls (see list) ||ericb, aliscafo || 2 || x || || || || || ||
 +
|-
 +
|Native FilePicker||Florian Heckl, Pavel Janik || 3 || x || x || || || || ||
 +
|-
 +
|Native Printing||Yvan Barthelemy || 3 || x || || || || || ||
 +
|-
 +
|Native SpellChecker|| || 4 || || || || || || ||
 +
|-
 +
|Player|| || 4 || || || || || || ||
 +
|}
  
Hotel: King Georges (close to Union Square)
 
  
Airport to Hotel transportation: not included
+
Other tasks:
</pre>
 
  
sebastien (aka plipli):
+
Help for writing bug lists, status of bugs ..etc
<pre>
 
Paris->SF: 3rd June
 
SF->Paris: 15th June in the evening
 
  
Hotel: to be coompleted
+
Write howto use gdb, leaks, other tools
</pre>
 
  
 +
'''WHEN''':
  
Philipp Lohmann:  
+
From Christian Lippka (last meeting, 25th of august 2006):  
<pre>
+
Aug 26 00:21:38 ChristianL
Hamburg->SF: 9th June
+
from my point of view what is missing for point 1:
SF->Hamburg: 16th June
+
text layout, complete font support, keyboard support,
 +
fixing repaint issues, having aqua install and run out of the box
  
Hotel: King Georges
+
'''September 2006'''
</pre>
 
  
==== Misc ====
+
Present the current state of the project at the 2006 OpenOffice conference in Lyon and Paris
  
*don't forget sector adaptator for laptop: US connectors are '''different'''  
+
'''Late 2006'''
  
*don't forget Cameras (and chargers)
+
fix OpenOffice.org launch
 +
fix drawing (repainting)
 +
Implement missing methods and fix most important bugs (mainly the one leading to crash) in:
 +
ATS
 +
Salgraphics
 +
Salinstance
  
*Prepare 50 to 100 business cards :  the most simple is to use the model I can provide on demand , and print them with special paper (pre-cut)
+
'''January or February 2007'''
  
== '''Mac OS X porter Team at OOoCon 2007''' ==
+
make Java work (works partially)
 +
make intensive debug
 +
present something working as alpha
  
=== Who? ===
+
'''June 2007 '''
  
* Shaun McDonald
+
Implementation of:
* Eric Bachard
+
native filepicker
* (list to be completed)
+
native printing
  
Todo: ask for Mickael Sicotte travel (New York <-> Barcelona) + rooms
+
== '''Become a Domain Developer for Mac OS X port (or other)''' ==
  
=== What? ===
+
People regularly contributing to Mac OS x port with regular and quality patches are, after proposal, invited to become a [[DomainDeveloper]].
  
 +
The purpose of this document is to clearly define all the steps to become a [[DomainDeveloper]].
  
The conference is over 3 days. Presentations should last around 45 minutes. http://www.openoffice.org/servlets/ReadMsg?list=announce&msgNo=320 Papers have to be submitted by 1st June to be considered.
 
  
Ideas :
+
Preliminary: step 1 in  [[Commit_Rights]] must be completed and checked, and you must be in the list of [[http://www.openoffice.org/FAQs/faq-licensing.html#jca1 JCA Licensed people]]
  
Mike Sicotte:  Perhaps the results of the Google SOC could be a presentation.
+
=== Steps for ssh2 key to be uploaded ===
  
*create a complete topic for Mac port (one stream for a day or half day)
+
==== Create the key ====
*How to improve ooo usability though the use of floating palettes instead of modal dialogs
 
  
- several presentations / BOF
+
Everything is described here: [[http://www.openoffice.org/scdocs/ddSSHGuide.html SSH Guide]]
  
Eric Bachard: Aqua OpenOffice.org (conf / 1 hour)
+
==== Upload the key ====
  
Others?
+
You must create an issue, like described below  :
  
*reserve rooms together? Better rent a house?
+
'''Assign it to "ssh2key" in the "www" component'''
  
* [FIXME]
+
Sub Component: openoffice.org cvs
  
=='''2nd Mac porters meeting'''==
+
Title: CVS Commit access request
  
This section has been moved to [[2nd Mac porters meeting]]
+
Add louis (Louis Suarez Potts) or st (Stefan Taxhet) on CC
  
=='''IRC Mac port meetings'''==
+
Upload your ssh2 public key respecting the process (Attach a DSA key, not an RSA)
  
This section has been moved to [[MacOSXPortMeetings]].
+
A project lead will confirm your request
  
== '''Mac OS X (X11) Quality Assurance'''==
+
Then the support will upload your key
  
This section has been moved to [[Mac OS X (X11) Quality Assurance]]
+
Once done the issue is set to Fixed , and the next step has to be verified before '''you''' close it.
  
== '''Mac OS X Implementing HIView and Carbon events'''==
+
'''EXAMPLE''': [[http://www.openoffice.org/issues/show_bug.cgi?id=75291 Upload SSH2 Key for Etsushi Kato]]
  
This section has been moved to [[Mac OS X Implementing HIView ]]
+
==== Verify it works ====
  
== '''Debug OpenOffice.org using XCode '''==
+
You now can try to connect via tunnel, and follow instructions given [[http://www.openoffice.org/scdocs/ddSSHGuide.html SSH Guide]]
  
[[ MacOSX Debug OpenOffice.org using XCode]]
+
If something goes wrong, ask for help to support, with a maximum of details, to solve the problem.
  
=='''Description of the Native Port problem'''==
+
Once it works, the issue can be closed, and you can e.g. test downloading a module from tunnel repository :
  
=== How does OpenOffice.org work on Mac OS X? ===
+
First create a tunnel with the command:
 +
<pre>
 +
ssh -2 -x -L 2401:localhost:2401 tunnel@openoffice.org
 +
</pre>
  
Currently, on Mac OS X, OpenOffice.org uses X11, as "client": X11 is a graphical server, coming from Unix world, and able to run under Linux, *BSD, Solaris, Mac OS X.
+
Then in a new window:
  
- X11 is run as an application, managed like other Apple applications.
+
<pre>
- All unix like applications are managed by X11, and from Aqua environment, only X11 is seen as only one applicatiion,
+
export CVSROOT=":pserver:your_login@localhost:/cvs"
  even if other Unix/Linux (e.g.) applications are runing.
 
  
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.
+
cvs login (enter)
  
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)
+
(your password)
  
=== Issues and known problems ===
+
mkdir TEST
  
All events are managed by OpenOffice.org and X11, using the Xlib
+
cd TEST
  
Only .ttf fonts type is currently available. Note: '''system fonts are available '''
+
cvs -z4 co -r SRC680_m205 vcl
  
The rendering is made by X11, not by Mac OS X rendering engine.
+
cd vcl
  
X11 and all its clients are seen as one application only: drag and drop protocol does not work because of that (solution: Pasteboard Manager)
+
cat CVS/Root  -> should indicate: your local repository
 +
</pre>
  
==== Other links ====
+
=== Ask for CVS access for all modules required ===
  
http://wiki.services.openoffice.org/wiki/List_of_OpenOffice.org_Mac_OS_X_issues_and_problems#
+
Two steps: create an issue is mandatory because the concerned project is tools, and because people can have only ssh2 key without being [[DomainDeveloper]].
  
http://wiki.services.openoffice.org/wiki/Printing_problems_with_OpenOffice.org_2.0_for_Mac_OS_X#Reporting_printing_problems
+
==== Create an issue ====
  
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)
+
You must create an issue, described below  :
  
== What do we have to do?==
+
Component: tools
  
* (in progress): Implement direct access to Apple graphical engine, using Apple API: Quartz2D/CoreGraphics (and replacing Xlib use)
+
Sub Component: www
  
like: instantiate, manage events and threads for a graphical instance + all needed objects, drawing: manage all drawing cases
+
Title: CVS access to all modules required
  
* (in progress): Implement native events management, using CarbonEventManager (replacing Xlib management)
+
Assigned to mh  +  CC for ericb and/or pjanik
  
* (in progress): Implement native font use, using Apple Type Server and ATSUI (for Unicode Imagery) (replacing X11 management)
+
Present yourself quickly, and ask the access
  
Work in progress: [[Mac OS X Porting - Native Fonts]]
+
A project lead will confirm
  
* Implement native sound, using QuickTime (replacing Java Media Framework): [[Mac OS X Porting - Native Audio and Video]]
+
An admin will confirm this is ok, and set the issue to Fixed
  
* Implement native Drag and drop, Implementing Pasteboard Manager: [[Mac OS X Porting - Native Drag and drop]]
 
  
* (done experimental) Implement Native Filepicker
+
'''EXAMPLE''': [[http://www.openoffice.org/issues/show_bug.cgi?id=75494 CVS Access all modules for Etsushi Kato]]
  
* Implement Native Printing: current uses cups, but native printing is mandatory: [[Mac OS X Porting - Native_Printing]]
+
==== Verify ====
  
* Implement Apple Spellchecker
+
Create the tunnel :
  
--[[User:Plipli|Plipli]] 09:27, 25 March 2007 (CEST)
+
open a terminal and type :
  
=='''Where is located the code to be modified?'''==
+
ssh -2 -x -L 2401:localhost:2401 tunnel@openoffice.org
  
Most of the changes are located in vcl (Visual Class Layer), for everything graphical, events, fonts, rendering and printing.
+
once logged in, open a new terminal, and do (for example):
 +
<pre>
 +
cd $OOO_SRC_ROOT/
  
Other, for sound and movies will be in avmedia (where the player is implemented in OpenOffice.org sources).
+
source MacOSXPPCEnv.Set.sh  { source MacOSXX86Env.Set.sh for Mac Intel }
  
For drag and drop, dtrans is concerned (Pasteboard Manager implementation)
+
cd vcl  (for example)
  
[FIXME]: Filepicker? Apple Spellchecker?
+
IMPORTANT: be sure vcl has been checked from tunnel, not from anoncvs (cat CVS/Root will give you the answer)
  
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)
+
export CWS_WORK_STAMP=aquavcl01  # Only needed for working with [[EIS]], can change for a different CWS ;)  
  
=='''How will the new implementation be tested?==
+
cd aqua/source/gdi
  
Currently, all openOffice.org code can be compiled without using the Xlib. but of course, a lot of features are missing,
+
add your changes to your_file.cxx, then commit :
  
and the final package simply won't work
+
cvs commit -m "#i75689# bla bla ... the reason of the modification(s)"  your_file.cxx  # The #i75689# is an issue number in the tracker
  
In vcl module", a '''toy''' called svdem is built at buildtime. This binary is linked to libvcl* and so all new stuff can be tested.
+
cvs update
  
e.g.: draw anti-aliased lines works well.  
+
If nothing is wrong, cvs update should not return M for your_file.cxx, means the commit is successfull.
 +
</pre>
 +
In case of problem, use the issue until it is fixed
  
Everything implemented in aqua vcl code will be included in libvclplug_aqua, and svdem source code will contain a specific part to proceed tests.
 
  
<div class="messagebox cleanup metadata" style="border:1px solid blue;background-color:#B3FFF5;padding:7px;">
+
<big>'''Welcome aboard :)'''</big>
  
'''The magic is: when all needed features will work with svdem, it will work in the new version of OpenOffice.org !!'''
+
[[Mac port and  WWDC2008]]
  
</div>
+
== '''Mac OS X porter Team at WWDC 2008''' ==
  
 +
=== What is WWDC 2008? ===
  
 +
See [http://developer.apple.com/wwdc/ Apple WWDC 2008]
  
[FIXME]: add more complete list of features to implement and test.
+
==== Our needs with Aqua version ====
  
== AquaVCL 01 cws ==
+
* Compile on Intel for PPC (if time UB) [ ]
 +
* Proxy icon in the title bar [ ]
 +
* Use of the apple remote, especially for presentations [7]
 +
* Printing to PDF to keep links in the same way as iWork does it. [8]
 +
* Translating the native dialogs to the Community supported languages (that Apple doesn't support).
 +
* Compiling on Leopard to run on Tiger. Note: QuickLook plugin ( from quicklookplugin01 cws) builds on tiger [9]
 +
* Import/Export of iWork documents [10]
 +
* Signing OpenOffice.org .app bundle.
 +
* Localize the voice for accessibility features ? (only english available for Voice Over at the moment)
 +
* Implement the native Color Picker
  
[[http://qa.openoffice.org/issues/buglist.cgi?keywords=aqua Top 10 of Aqua issues]]
 
  
[[Aquavcl01 tasks]]
+
==== Interesting Labs ====
  
===Changelog ===
+
Accessibility Lab (ericb selection)
  
====Work in progress: alpha :-) ====
+
Receive one-on-one technical assistance on using the Accessibility API and making your application accessible. Whether you are access-enabling your application or developing an application that uses assistive technolgies, this is the lab to attend to get advice and answers to your questions. Bring your code, your laptop, and your questions.
  
(31th May)
+
'''Advances in Modern OpenGL'''
  
(Shaun) prepared the webiste for development snapshot announce
+
Understand how advances in OpenGL unlock the rendering power of the GPU. Tackle GPU-based vertex and fragment processing with the OpenGL Shading Language (GLSL) and use the most current capabilities of OpenGL to modernize your code. Learn techniques for integrating the high-performance 3D graphics pipeline with the other graphics frameworks on Mac OS X. A must-attend session for Mac OpenGL developers to learn how to take advantage of the recent innovations in graphics hardware.
  
(cloph)  Torrent are available for develoment snapshot of Aqua version
+
'''Apple Help Lab'''
  
(pl) Added desktop and framework into aquavcl01 : to add preferences in menu entries, and improve about
+
Receive one-on-one technical assistance with Apple Help integration, content authoring, and troubleshooting from Apple Help engineers and content writers. Bring your laptop, your code, your Help content, and your questions.
  
(pl) other fix for captureMouse ( do not dipatch artificial dispatch mouse move if another frame has captured the mouse since posting)
+
'''Assigning Your Application an Identity with Code Signing'''
(pl) save and restore to protect the context
 
(pl) fixed menu popup jump of  highlighted text
 
(pl) implemented captureMouse , using overlay window
 
  
(ericb) testing new functions to retrieve highlighted color (and other) from System Preferences ( proof of concept only)
+
Code signing in Mac OS X allows the Keychain and other operating system features to verify your application's ownership without prompting your users--even after you've updated your application. Find out how digitally signing your application ensures the integrity of your code and enables the system to recognize and alert users to unauthorized changes. Learn how to sign your applications, how signed applications work and how signing improves security and your customers' experience.
  
(30th May)
 
  
 +
'''Cocoa Open Lab'''
  
(hdu) fixed madness in formula when switching from formula to text
+
Get expert one-on-one assistance from the Cocoa engineering team, DTS engineers, and Technology Evangelists on Cocoa topics. Bring your laptop, your code, and your questions.
(hdu)  removed font size in UpdateSettings() to avoid overwritting fonts size from Appearance Manager
 
(hdu) cleanup in ATSLyout::DrawText()
 
  
( Etsushi Kato ) commited change to implement preedit text drawing from input method
 
  
(28th May)
+
'''Image Capture, Manipulation, and Display with Image Kit'''
  
pl proposed a new AquaSalGraphics implementation.
+
Image Kit provides Cocoa developers with a straightforward interface for common image handling tasks. Discover how easily you can equip your application with image capture, browsing, viewing, import, adjustment and presentation, all within a crisp and consistent user experience. Learn how to apply image processing filters for lightweight image editing, how to capture images from the camera and how to assemble an enhanced image browser. An important technology for Cocoa developers who want to handle photos and other media in their Mac OS X applications.
  
http://porting.openoffice.org/servlets/ReadMsg?list=mac&msgNo=5433
+
'''Image Kit Lab'''
  
Needs a review and some tests
+
Work directly with the Image Kit engineering team to add image browsing, viewing, capture, adjustment and presentation to your Cocoa application. Bring your laptop, your code and your questions.
  
(26th May)
+
'''OpenGL on the Mac Lab'''
  
(ericb) goodbye uggly grey
+
Meet with members of the OpenGL engineering team to dig deeper into desktop OpenGL features and profiling. Bring your laptop, your code and your questions.
  
(24th May)
+
'''Spotlight and Quick Look Lab'''
  
 +
Meet one-on-one with Spotlight and Quick Look engineers to see how much these technologies have in common and polish your use of them. Make sure your document declarations are correct and your plug-ins are as fast and lightweight as possible. Bring your laptop, your code, and your questions.
  
(pl) Various changes (from Bonsai database) : do not use XOR on QUARTZ either, implement flush, no view on VirDev
 
  
(pl) fixed issue 77755 : bad resizing /positionning for parent windows
+
=== Interesting presentations===
  
(pl) Philipp Lohmann added AQUA_LOG to trace on Aqua  -> Usage :  export AQUA_LOG=off
+
* Performance Tuning Your Application with Shark
 +
* Making Your Application Scriptable
 +
* Managing X.509 Certificates and Digital Identities
  
(hdu) started MacOSXIntegrator to use System Fonts ( objective : Aqua version now will uses Lucida Grande or System default if different)
+
==== ericb's Agenda====
  
(pl) fixed issues 77529 and 77530 Implement AquaSalFrame::Get/SetWindowState
 
  
 +
The rule is extremely simple: bring your laptop, your code, and ask :)
  
(23th May) :
+
{| border="1" cellpadding="10"
 +
| Days
 +
|monday<br>June 9
 +
|tuesday<br>June 10
 +
|wednesday<br>June 11
 +
|thursday<br>June 12
 +
|friday <br>June 13
 +
|-
 +
| Morning
 +
| 10:00 am <br> Keynote <br> Presidio
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| Afternoon
 +
|2:00 pm -3:15 pm <br>Mac OS X <br>State of the Union <br> (Presidio) <br> 3:30 pm - 4:45 pm <br> Developer Tools<br> State of the Union <br> (Presidio) <br> 5:00 pm - 6:15 pm  <br> Graphics & Media<br> State of the Union <br>(Presidio) <br> 6:30 pm - 7:30 pm <br> WWDC <br>Welcome Reception
 +
|
 +
|
 +
|
 +
|
 +
|}
  
(hdu)  fixed some text breaking/text measurements : works started (works already)
+
====Labs Agenda====
  
(hdu)  fixed refresh issues using mrRGBColorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
+
It is extremely important to organize us for Labs.
instead of : mrRGBColorSpace = CGColorSpaceCreateDeviceRGB(); " in  vcl/aqua/source/gdi/salgdi.cxx (~105)
 
  
(pl) did AquaSalFrame non copyable
+
The rule is extremely simple: bring your laptop, your code, and ask :)
  
(pl) added InitShow() + centered windows relative to parents : now splashscreen appears centered, like all windows having parents
+
{| border="1" cellpadding="10"
 +
| Days
 +
|monday<br>June 9
 +
|tuesday<br>June 10
 +
|wednesday<br>June 11
 +
|thursday<br>June 12
 +
|friday <br>June 13
 +
|-
 +
|Labs Morning
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
|Labs Afternoon
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|}
  
Note : In the long run it is planned to handle modal dialogs differently rolling down from the parent' titlebar is AFAIK the method on Mac
+
===='''Interesting Labs'''====
( Ismael started some experimentation for his Google SoC )
 
  
(pl) Contextual menus are shadowed
+
The complete list: [http://developer.apple.com/wwdc/tracks/macosx.html Mac OS X Essentials]
  
==== alpha 0.9 ====
+
=== Our Objectives at the WWDC 2008 ===
  
<br><div align="left" style="color:grey; font-size:18px">[[User:Ericb/Top10 of Issues | '''Top 10 of Issues with alpha 0.9 (click me to know more) ''']]</div><br><br>
+
'''1) Connection OOo Mac team / Apple engineers'''  
  
(22th May)
+
-Goal 1.1: "Get infos, contacts, human to human conversation :-)"
  
thb: proposed a patch to workaround the missing animations in Impress (issue 77692)  ( verified working )
+
-> Present our current work, methods and team to Apple people :
  
fheckl: fixed problem when switching between OOo picker and native picker ( verified working )
+
-> Meet them during WWDC: give us/them a face, keep contacts
  
hdu: fixed the refresh and clipping => many problems with wrong clipping and wrong graphics attributes are gone
+
-> Get their impression about what we have already done and what is still ToDo
  
hdu: fixed the text drawn at bad size when resizing 
 
  
(19th may)
+
'''2) Improve from Apple's engineers expertise'''
  
Begining of Drag and Drop (Tino)
+
-Goal 2.1: "Give MacOS X users the OOo suite they deserve"
  
Using Aqua keyword, 123 issues created + macport user created.
+
=> As mac platform and apple's product fans, we are proud to bring the quality and power of OOo to mac users community
  
user macport assigned means nobody is working on the issue.
+
=> Make OOo uses all the power of Mac OSX, including upcoming Leopard !
Once someone assigned the issue to himself + sert issue as started, means issue has an owner.
 
  
Experimental code to test SetThemeWindowBackground to refresh everything (ericb)  (18th may)
+
-Goal 2.2: "OO.org Mac port has to be as Apple HIG compliant as possible"
  
+: refresh is ok, bitmap refresh is ok when scrolling, typing text works in writer , pulse effect works, refresh checkbuttons works, refresh the window during scrolling works
+
  => Define what is expected for User Interface of OpenOffice.org suite with people from Apple UI project
  
-: no more cursor, excessive system load (lot of Begin /EndGraphic()
+
- FYI: Last year, Apple UI project proposed ericb to help us, once our native menus will be working.
 +
  This is now done.
  
  
 +
'''3) Get code guidelines, tips, samples'''
  
Important infos / WIP
+
-Goal 3.1: "Ask for code review and find code snippets"
  
The main work in progress is about refresh not working in all situations. We isolated the cause: very probably the clipping is either missing, or buggy.
 
  
Once fixed: pulse effect for buttons, text refresh (blinking cursor, and bitmaps in menus will be ok.
 
  
ericb add Aqua look for toolbars and tooltips (17th may)
 
  
==== alpha 0.8 ====
+
-Goal 3.2: "Attend key Labs and Sessions to get full overview of Tiger/Leopard/Core's and useful code"
  
Christian Bernd Krippendorf joined the port (16th May)  
+
- Image capture
 +
- Key signing (digital signature, to avoid Mozilla bazaar
 +
  - Apple Remote
  
hdu: memcpy sizeof(data) instead of sizeof(pointer) bytes  (16th May)
 
  
hdu: fix ATSLayout::GetTextWidth() for multiple glyph-bound-trapezoids
+
'''4) Social Contacts / Team emulation'''
  
msicotte: added definition for makeCGptArray - helper for AquaSalGraphics::invert
+
Try to contact Pierre de Filippis, Sébastien Plisson and some other frenchies :)
  
msicotte: added AquaSalGraphics::invert(ULONG nPoints...
+
-> Discuss and meet new developers and / or american people working for Mac OS X port (like Michael Sicotte, other..)
 +
-> Share ideas, tips, conviviality !
  
hdu: implement stretched/squeezed text
 
  
hdu: prepare font rotation directly in ATSUI units
+
'''5) Visibility'''
  
hdu: simplify a little by removing dead code
+
OpenOffice.org Native Mac port has to be recognized as the professionnal office suite for Mac users it is !
  
hdu: enable bold-/italic-emulation for fonts only if needed
+
=== Who? ===
  
mikesic: #77317# - fix for wrong menu displayed when last Writer window closed
+
* Michael Sicotte
 +
* Eric Bachard
 +
* Philipp Lohmann
  
ericb: add pulse effect (it will help to verify refresh issues are fixed)
+
=== Todo list ===
  
pl: safer yield mutex protection through guards
+
Please add topics, technical questions you would see asked by attendees to Apple engineers during WWDC
  
hdu: default to standard font attributes
+
====Suggestions for current issues to be fixed ====
  
pl: protect against dispatching to dead or dying AquaSalFrames
+
(ericb)
  
ericb: #i77327# add alpha to user install dir until Aqua version is stabilized
+
I am volunteer to take over what follows:
  
hdu: rewrote ATSUFontID-based font enumeration
+
*Find information about SpotLight and QuickLook ( what happens with our generator ? How improve it ?)
 +
*Find information about Image Capture : API obsolete on Tiger, under NDA on Leopard ... can we trust 10.4 sources ?
 +
*Apple remote implementation
  
mikesic: Workaround for issue 77262 - frames around selected items don't disappear
+
==== Travel ====
  
mikesic: Fix for issue 74392 - aquavcl01: tooltip crash
+
*describe the schedule of the travel
  
mikesic: Fix for issue 77261 - Menu disappears when you hover over tooltip
+
ericb :  
 +
<pre>
 +
Basel -> Paris -> SF:  7th of June    SF scheduled arrival: 12:30
 +
SF -> Paris -> Basel:  13th of June (arrival 17th)  SF departure for the return:  3:30 pm
  
mikesic: Fix for issue 75889 - aquavcl01: Extended tooltips text truncated
+
Hotel: Hotel des Arts (close to Union Square)
  
fheckl: adapting to changes since resync  (aquafilepicker01)
+
Airport to Hotel transportation: (BART) not included
 +
</pre>
  
fheckl:  enabling fps_aqua lib only for aqua build
 
  
pjanik: Reformat for easier reading (according to OOo C++ rules).
+
Michael Sicotte:  
 +
<pre>
  
Monday 15th May
+
To be completed
 +
</pre>
  
Changes:
 
  
Yvan Barthelemy provided the first screenshot for printing :)
+
Philipp Lohmann:  
 +
<pre>
  
http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Native_Printing
+
To be completed
 +
</pre>
  
http://eric.bachard.free.fr/mac/aquavcl/screenshots/printing/native_printing/native_printing_dialog.jpg
+
==== Misc ====
  
F 73688: use default font system  (WIP, hdu)
+
*don't forget sector adaptator for laptop: US connectors are '''different'''
  
several fixes in salatsuifontutils  (hdu)
+
*don't forget Cameras (and chargers)
  
several fixes in salframe (pl)
+
*Prepare 50 to 100 business cards :  the most simple is to use the model I can provide on demand , and print them with special paper (pre-cut)
  
defaut user install dir is now ~/Library/Application Support/OpenOffice.org-aqua (ericb)
+
== '''Mac OS X porter Team at WWDC 2007''' ==
  
added pulse effect to help for refresh
+
=== What is WWDC 2007? ===
  
 +
See [http://developer.apple.com/wwdc/ Apple WWDC 2007]
  
Saturday 13th / Sunday 14th
+
====Labs Agenda====
  
F 74392: tooltip crash  (mikesic)
+
It is extremely important to organize us for Labs.
  
(IMHO fixed with mikesic patch) 72250: toolbar icon click -> crash with aqua menus (not fixed? Worksforme)
+
The rule is extremely simple: bring your laptop, your code, and ask :)
  
F 74392: tooltip crash  (mikesic)
+
{| border="1" cellpadding="10"
 +
| Days
 +
|monday<br>June 11
 +
|tuesday<br>June 12
 +
|wednesday<br>June 13
 +
|thursday<br>June 14
 +
|friday <br>June 15
 +
|-
 +
|Labs Morning
 +
|
 +
|
 +
|
 +
|'''BOOKED''' <br>from 10:45 to 11:30 AM <br>Deric Horn / Keith Mortensen <br>Carbon and Cocoa Integration Lab
 +
|'''BOOKED''' <br>starting from 11:45 AM <br>Ernest Prabhakar <br>Apple and Free Softwares<br>Rendez-vous at Spotlight lab (Mac OS X Lab B)  
 +
|-
 +
|Labs Afternoon
 +
|
 +
|
 +
|
 +
|'''BOOKED''' <br>1 hour <br>starting from ~ 4:30 5:30 pm <br>John Geleynse <br> User Interface design
 +
|
 +
|}
  
==== alpha 0.7 ====
+
===='''Interesting Labs'''====
  
Sun decided to officialy supports the Mac OS x port  (3rd May)
+
The complete list: [http://developer.apple.com/wwdc/tracks/macosx.html Mac OS X Essentials]
  
Welcome to Philipp Lohmann and Herbert Duerr , who joined the Team  (3rd May)
 
  
resync m211 (1st May)
+
*Core Text Lab
 +
Receive one-on-one technical assistance and troubleshooting advice from the Core Text engineering team. Learn how to use the advanced font handling and blazingly fast Unicode layout capabilities of Core Text. Bring your laptop, your code, and your questions.
  
[Top 10 of issues] modify Bundle tree (issue 73693): change committed 28th April (ericb)
+
*HIToolbox Lab
 +
Work on tuning and debugging HIToolbox code in your Carbon application. Receive one-on-one technical assistance and troubleshooting advice from the High Level Toolbox engineering team, Apple DTS engineers, and technology evangelists. Bring your laptop, your code, and your questions.
  
Google SoC: welcome to Ismael Merzaq and Omer BarOr , our two selected candidates: ismael will work on aqua look (NWF), and Omer will work on Mac OS X Address Book Integration.
+
=== Our Objectives at the WWDC 2007 ===
  
resync: m208 (11th April)
+
'''1) Connection OOo Mac team / Apple engineers'''
  
(exp / not commited) Ismael proposed a patch for Utility Windows more Aqua compliant + SetMin/MaxSize()  (9th April)
+
-Goal 1.1: "Get infos, contacts, human to human conversation :-)"
  
 +
-> Present our current work, methods and team to Apple people :
  
Native menus are defaults (ericb)  (8th April)
+
-> Meet them during WWDC: give us/them a face, keep contacts
  
Frederic Barbaise (alias boulifb) joined the port (3rd April)
+
-> Get their impression about what we have already done and what is still ToDo
  
Work on saltimer.cxx started mikesic (27th March)
 
  
Pavel commited Michael patch for invert and drawAlphaRect()  (27th March)
+
'''2) Improve from Apple's engineers expertise'''
  
Started 27th March
+
-Goal 2.1: "Give MacOS X users the OOo suite they deserve"
  
==== alpha 0.6 ====
+
=> As mac platform and apple's product fans, we are proud to bring the quality and power of OOo to mac users community
  
Damien started to work on drawEPS()
+
=> Make OOo uses all the power of Mac OSX, including upcoming Leopard !
  
plipli and ericb work on refresh
+
-Goal 2.2: "OO.org Mac port has to be as Apple HIG compliant as possible"
  
Michael Sicotte proposed to investigate in timers, and continue [[http://www.openoffice.org/issues/show_bug.cgi?id=75228 Pavel's work]]: objective is to replace obsolete code. (23th March)
+
=> Define what is expected for User Interface of OpenOffice.org suite with people from Apple UI project
  
[experimental] plipli proposed a patch for a new salframe implementation, using HIView + optionally compositing  (21th March)
+
- FYI: Last year, Apple UI project proposed ericb to help us, once our native menus will be working.
 +
  This is now done.
  
[commit scheduled] Michael Sicotte proposed a complete patch for invert() (SAL_INVERT SAL_INVERT_50 and SAL_INVERT_TRACKFRAME)  (20th March)
 
  
Tino proposed to work on code cleanup in salatsuifontutils.cxx, removing obsolete code
+
'''3) Get code guidelines, tips, samples'''
  
ismael and michael work on invert() + drawAlphaRect()
+
-Goal 3.1: "Ask for code review and find code snippets"
  
Started (19th March) :
+
  - HIView
 +
  - Printing
 +
  - Drag and Drop
 +
  - as muc has possible
  
==== alpha 0.5====
+
=> More than 1000 Apple engineers are present, and can answer our questions regarding the code, during the whole week
  
 +
-Goal 3.2: "Attend key Labs and Sessions to get full overview of Tiger/Leopard/Core's and useful code"
  
Top 10 Summary:  7 issues over 10 are fixed or very close to be:
+
  - Core*
 +
  - Tiger / Leopard
  
'''time to code review, tracing, and search for memory leaks'''
 
  
 +
'''4) Social Contacts / Team emulation'''
  
[done] Unicode input in salframe (ekato) (19th March)
+
-> Discuss and meet new developers and / or american people working for Mac OS X port (like Michael Sicotte, Vijay Venkatraman , other..)
 +
-> Share ideas, tips, conviviality !
  
[experimental, works partially] beginning of HIView + HIComboxes works (text still missing)  (ericb + plipli)  (14th March)
 
  
[done] replace NewRgn() in salframe (ericb (11th March)
+
'''5) Visibility'''
  
[experimental, but very interesting] Improved native windows (ismael) (7th March)
+
OpenOffice.org Native Mac port has to be recognized as the professionnal office suite for Mac users it is !
  
====alpha 0.4====  
+
=== Who? ===
  
'''[Informative]''' build runs with Leopard 9A377a (fheckl) (7th March)
+
* Sébastien Plisson
 +
* Eric Bachard
 +
* Philipp Lohmann
  
Refresh screen issues  (plipli) (4th to 10th March)
+
=== Todo list ===
  
'''[informative]'''  plipli announced  progress with refresh screen issues  (28th February)
+
Please add topics, technical questions you would see asked by attendees to Apple engineers during WWDC
  
[experimental, not yet commited] Proxy configuration from system (pjanik)  (28th February)
+
====Suggestions for current issues to be fixed ====
  
[done] highlighted native button (pjanik)  (27th February)
 
  
Native File Picker works (fheckl  / pjanik)  (23th February )
 
  
====alpha 0.3====
+
Timers: Current code is obsolete, and compatibility with Leopard won't probably exist. Pavel wrote a patch using recent code. Seems to work fine, excepted a thread issue (crash not easy to be reproduced)
  
Cursor does appear -> invert() + setting a setBlinkTime value in UpdateSettings()  (pjanik /ericb)  
+
Questions ( pavel )
  
[done] mirroring negative images (ismael) + DrawAlphaBitmap() + CreateWithMask()
+
Does Apple have a plan to enable UI drawing from threads different from the first one?
  
pjanik patch for Focus Events
+
Does Apple have a plan to allow java to be run from other threads as well?
  
[done] scrolling works (pjanik) (17th February)
 
  
[done ] carret works (plipli) (17th February)
+
Salframe:
  
[done] checkbuttons fix for checkmarks  (ericb) (17th February)
+
Looot of things:
  
'''[Informative]''' Pavel Janik propose to solve offScreen buffer using HIView (17th February)
+
* fix all our busy paint places
  
[experimental, never commited] patch for macosxrc.txt use + UpdateSettings() use in salframe.cxx (ericb (16th February)
+
*Find infos/code sample about parenting
  
Michael Sicotte joined the Team (15th February)
+
*Code review for HIFrameWork implementation
  
invert(): first try (ericb)  (13th february)
+
*Menusevery window creates it's own menu. Redesign it?
  
====alpha 0.2====
+
*adapt native widget framework
  
[12th February 2007 ]
+
*Use XCode to build OpenOffice.org
  
[done] calc does not start: bug identified by tino , first workaround (ericb)  [[http://www.openoffice.org/issues/show_bug.cgi?id=73691 issue 73691]]
+
Events: code review, tips
  
[done] bitmaps in native popup menus (ismael) 
+
ATS: code review, ATS issues
  
[done] replace obsolete code for HandleWindowPaintEvent(), newRgn() .. etc (ericb)  (12th February)
+
Mike Sicotte:  
 +
I understood that implementing printing in aqua OOo was a topic that we didn't get accepted into Google SOC - so remains on the ToDo listI notice that there are three Sessions specfically related to printing at WWDC:
 +
    Leveraging the Common Unix Printing System (CUPS)
 +
    Printing with Style in Mac OS X
 +
    Printing Lab
 +
If this is judged to be a good use of time at WWDC I would be willing to spend some time to help further develop the questions to be addressed with the Apple engineers.
  
correct salatslayout patch (plipli)  (11th February)
+
ericb->Mike Sicotte
  
'''[Informative]'''  Michel Renon proposed a summary about his work on fonts issues
+
Good idea. You are welcome :)
  
[patch] Pavel fixed several menu crashes (09th February)
+
Ismael:
 +
What is the best way to draw editable textfields? Using DrawThemeEditTextFrame() from appareance manager although it is a bit old and we can't choose the context to draw but it is more in the OOo approach? Or use CreateEditUnicodeTextControl and create a control?
  
'''[Informative]''': Pavel posted a mail about several crashes origin
+
==== Travel ====
 
patch for radioboxes and checkboxes (ericb) (9th February)
 
  
first complete patch for salatslayout.cxx (plipli) (9th February)
+
*describe the schedule of the travel
  
[done] most important crashes fixed (pjanik(09th february)
+
ericb :
 +
<pre>
 +
Mulhouse -> Paris -> SF:  9th of June    SF scheduled arrival: 7:13 pm
 +
SF -> Paris -> Mulhouse:  16th of June (arrival 17thSF departure for the return:  3:00 pm
  
Modified baseline for 2.2.: Mac OS X10.4 -> Aqua will be 10.4 and 10.5 compatible only (ericb)
+
Hotel: King George (close to Union Square)
  
first try with multi line sallayout (plipli)  (08th February)
+
Airport to Hotel transportation: not included
 +
</pre>
  
 +
sebastien (aka plipli):
 +
<pre>
 +
Paris->SF: 3rd June
 +
SF->Paris: 15th June in the evening
  
Damien Duportal joined the Team (7th February)
+
Hotel: to be coompleted
 
+
</pre>
[done] scrollbar changes (ericb)  (4th February)
 
  
====alpha 0.1====
 
  
create Top 10 of issues before alpha  3rd February 2007: See: [[http://porting.openoffice.org/mac/news/2007/20070203toptenbeforealpha.html Top 10 of issues]]
+
Philipp Lohmann:  
 +
<pre>
 +
Hamburg->SF: 9th June
 +
SF->Hamburg: 16th June
  
[experimental, not commited] patch for TPT() implementation (ericb)  (2nd February 2007)
+
Hotel: King George
 +
</pre>
  
Pavel Janik proposed to implement TransformProcessType() (2nd February 2007)
+
==== Misc ====
  
[not commited] implement UpdateSettings()  (ericb) 
+
*don't forget sector adaptator for laptop: US connectors are '''different'''
  
Pavel Janik resynchronized aquavel01 cws  with m202  (2nd February 2007)
+
*don't forget Cameras (and chargers)
  
====alpha 0.03====
+
*Prepare 50 to 100 business cards :  the most simple is to use the model I can provide on demand , and print them with special paper (pre-cut)
  
Michel Renon joined the Team (1st February)
+
== '''Mac OS X porter Team at OOoCon 2007''' ==
  
[done] fix checkbuttons and radiobuttons issues: offsets, redrawing of the check marks (ericb)
+
=== Who? ===
  
[done] fix scrollbar buttons (implement correct methods to retrieve dimensions)
+
* Shaun McDonald
 +
* Eric Bachard
 +
* (list to be completed)
  
[done] implement mapfiles for Mac OS X (Stephan Bergmann, Daniel Boelzle, Tino Rachui , Pavel Janik)
+
Todo: ask for Mickael Sicotte travel (New York <-> Barcelona) + rooms
  
====alpha 0.02====
+
=== What? ===
  
[done] modify libsalsystools.dylib to be correctly loaded with the bundle  (ericb, + pjanik)
 
  
[done] add mouse drag events  (pjanik)
+
The conference is over 3 days. Presentations should last around 45 minutes. http://www.openoffice.org/servlets/ReadMsg?list=announce&msgNo=320 Papers have to be submitted by 1st June to be considered.
  
 +
Ideas :
  
====alpha 0.01====
+
Mike Sicotte:  Perhaps the results of the Google SOC could be a presentation.
  
[done] add new feature for Aqua windows, to allow QuickTime player use(mox)
+
*create a complete topic for Mac port (one stream for a day or half day)
 +
*How to improve ooo usability though the use of floating palettes instead of modal dialogs
  
[done] replace obsolete code in salframe.cxx with (ericb)
+
- several presentations / BOF
  
[done] fix correct size for main window (GetOptimaWindowSize() ) (ericb)
+
Eric Bachard: Aqua OpenOffice.org (conf / 1 hour)
  
[done] fix alpha channel in pixmaps (ismael)
+
Others?
  
====alpha 0.0====
+
*reserve rooms together? Better rent a house?
  
[done] pushbutton where not correctly drawn (ericb)
+
* [FIXME]
  
[done] fix missing mouse events  (pjanik)
+
=='''2nd Mac porters meeting'''==
  
[done] fix nRepeat in text entry  (ssa)
+
This section has been moved to [[2nd Mac porters meeting]]
  
2nd Mac porters Meeting
+
[[FOSDEM_2007]]
  
===Work in progress ===
+
=='''IRC Mac port meetings'''==
  
URGENT :
+
This section has been moved to [[MacOSXPortMeetings]].
  
Top of issues causing crashes: event issue when tips is enabled causes crashes (well known window / handler  / window desctructor / event loop bug)
+
== '''Mac OS X (X11) Quality Assurance'''==
  
 +
This section has been moved to [[Mac OS X (X11) Quality Assurance]]
  
Salatsuifontutils:  replace old code, track leaks: tino
+
== '''Mac OS X Implementing HIView and Carbon events'''==
  
[done] Bitmaps: (isma87)
+
This section has been moved to [[Mac OS X Implementing HIView ]]
  
[running]  Crashes: (tino, pjanik, ericb, isma87, plipli)
+
== '''Debug OpenOffice.org using XCode '''==
  
[???] Drag and drop:  (vijay)
+
[[ MacOSX Debug OpenOffice.org using XCode]]
  
[???] Printing  (ybart) 
+
== '''Implement OpenGL transitions in Impress'''==
  
Florian Heckl proposed a subject for Google Summer of Code about native printing
+
[[Mac_OS_X_Porting_-_OpenGL_transitions | OpenGL Tansitions]]
  
Drawing/ windowing (plipli / ericb) -> mainly refresh
+
[[Mac_OS_X_Porting_-_OpenGL_transitions/Feedback | Feedback]]
  
[done] Implement cursor
+
== '''Implement Proxy Icons for Drag and Drop''' ==
  
[started] Native Controls  (ericb)
+
[[Mac_OS_X_Porting_-_Proxy_Icon_implementation | Proxy Icon Implementation]]
  
[work in progress] partial multiline sallayout  (plipli)
+
== '''Reviewers Guide for OpenOffice.org Aqua''' ==
  
To do:
+
[[Mac_OS_X_Porting_Reviewers_Guide_for_OpenOffice.org_Aqua | Reviewers Guide for OpenOffice.org Aqua]]
  
(started, Oliver) - modify the tree to make the bundle start without hack (issue fixed during buildtime)
+
=='''Description of the Native Port problem'''==
  
(started, Florian Heckl)  verify Native FilePicker implementation (works , tested in Hamburg )
+
=== How does OpenOffice.org work on Mac OS X? ===
  
[done] Ismael Merzaq)  implement blit functions in salgdi  (important fix: probably apha version to be tested once done)
+
Currently, on Mac OS X, OpenOffice.org uses X11, as "client": X11 is a graphical server, coming from Unix world, and able to run under Linux, *BSD, Solaris, Mac OS X.
  
[done] Sebastien Plisson- update the missing functions list (fonts ... ask hdu & cl
+
- X11 is run as an application, managed like other Apple applications.
 +
- All unix like applications are managed by X11, and from Aqua environment, only X11 is seen as only one applicatiion,
 +
  even if other Unix/Linux (e.g.) applications are runing.
  
[started] ericb, Mox Soini, Sebastien Plisson, Tino Rachui, Pavel janik continue to replace obsolete code
+
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.
  
 +
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)
  
 +
=== Issues and known problems ===
  
 +
All events are managed by OpenOffice.org and X11, using the Xlib
  
fix crashes with menus  (started: tino)
+
Only .ttf fonts type is currently available. Note: '''system fonts are available '''
  
== '''Sort of documentation about VCL around Native Mac OS X port''' ==
+
The rendering is made by X11, not by Mac OS X rendering engine.
  
 +
X11 and all its clients are seen as one application only: drag and drop protocol does not work because of that (solution: Pasteboard Manager)
  
Do we really need to understand how it works? ;-)
+
==== Other links ====
  
 +
http://wiki.services.openoffice.org/wiki/List_of_OpenOffice.org_Mac_OS_X_issues_and_problems#
  
vcl content:
+
http://wiki.services.openoffice.org/wiki/Printing_problems_with_OpenOffice.org_2.0_for_Mac_OS_X#Reporting_printing_problems
  
ls -laR | wc -l
+
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)
  1750
 
  
-> Uff 1750 files to analyse :-/
+
== What do we have to do?==
  
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.
+
* (in progress): Implement direct access to Apple graphical engine, using Apple API: Quartz2D/CoreGraphics (and replacing Xlib use)
  
How analyse with more efficiency? After some months to anlalyse '''"horizontaly"''', 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 '''"orthogonal"''' method (compared to the previous one). The first method wasn't obviously not the good/best way to describe vcl.
+
like: instantiate, manage events and threads for a graphical instance + all needed objects, drawing: manage all drawing cases
 
[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 "objects".
 
  
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 "encapsulated".
+
* (in progress): Implement native events management, using CarbonEventManager (replacing Xlib management)
  
The most difficult is to see where the API is used. But for all the parts, this is the same.
+
* (in progress): Implement native font use, using Apple Type Server and ATSUI (for Unicode Imagery) (replacing X11 management)
  
Finally, '''what is important is the design of vcl'''. Which '''patterns''' 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.
+
Work in progress: [[Mac OS X Porting - Native Fonts]]
  
=== VCL organisation ===
+
* Implement native sound, using QuickTime (replacing Java Media Framework): [[Mac OS X Porting - Native Audio and Video]]
  
Thank's to Philipp Lohmann for this short, but precise description:
+
* Implement native Drag and drop, Implementing Pasteboard Manager: [[Mac OS X Porting - Native Drag and drop]]
  
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.).
+
* (done experimental) Implement Native Filepicker
  
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()
+
* Implement Native Printing: current uses cups, but native printing is mandatory: [[Mac OS X Porting - Native_Printing]]
  
SalFrame abstracts any kind of system window.
+
* Implement Apple Spellchecker
  
SalVirtualDevice abstracts an offscreen window (e.g. a Pixmap on X11)
+
--[[User:Plipli|Plipli]] 09:27, 25 March 2007 (CEST)
  
SalPrinter and SalInfoPrinter abstract the system print queues where SalInfoPrinter is for querying and SalPrinter for actual printing.
+
=='''Where is located the code to be modified?'''==
  
SalGraphics is an interface produced by either SalFrame, SalVirtualDevice or SalPrinter which is used for actual drawing operations (text, bitmaps, vector graphics)
+
Most of the changes are located in vcl (Visual Class Layer), for everything graphical, events, fonts, rendering and printing.
  
SalSound is for sound playing.
+
Other, for sound and movies will be in avmedia (where the player is implemented in OpenOffice.org sources).
  
SalBitmap provides memory for bitmap graphics as well as methods converting this memory to a system handle (e.g. a Pixmap on X11).
+
For drag and drop, dtrans is concerned (Pasteboard Manager implementation)
  
SalOpenGL provides OpenGL functionality if available.
+
[FIXME]: Filepicker? Apple Spellchecker?
  
SalTimer is an interface for periodically triggering the event queue (to timer implementation).
+
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)
  
SalI18NImeStatus handles how the status window of an Input Method Editor (IME) should display (this is mainly X11 specific).
+
=='''How will the new implementation be tested?==
  
SalSystem has some system specific methods that did not belong anywhere else:-)
+
Currently, all openOffice.org code can be compiled without using the Xlib. but of course, a lot of features are missing,
  
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.
+
and the final package simply won't work
  
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 implementation (located beneath vcl/win for Windows and vcl/unx for the X11 platforms).
+
In vcl module", a '''toy''' called svdem is built at buildtime. This binary is linked to libvcl* and so all new stuff can be tested.
  
[[User:Ericb|Ericb]] 16:12, 1 July 2006 (CEST)
+
e.g.: draw anti-aliased lines works well.
  
===Sub-directories description ===
+
Everything implemented in aqua vcl code will be included in libvclplug_aqua, and svdem source code will contain a specific part to proceed tests.
  
==== '''Organisation of vcl directories''' ====
+
<div class="messagebox cleanup metadata" style="border:1px solid blue;background-color:#B3FFF5;padding:7px;">
  
[[Image:aquavcl_organisation_complete_02.jpg]]
+
'''The magic is: when all needed features will work with svdem, it will work in the new version of OpenOffice.org !!'''
  
==== '''Directories in vcl. Short description''' ====
+
</div>
  
''' aqua ''': 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]
 
  
''' prj ''': 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.
 
  
''' qa ''' does contain all quality assurancy stuff
+
[FIXME]: add more complete list of features to implement and test.
  
'''source''': 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).
+
== AquaVCL 01 cws ==
  
Depending on the OS and the architecture, binaries are built or not.
+
[[http://qa.openoffice.org/issues/buglist.cgi?keywords=aqua Top 10 of Aqua issues]]
  
''' test ''': This directory does contain all the needed stuff for tests. As example, in qa/testdocuments, you'll find three documents (one writer, one calc and one impress) for tests purpose.
+
[[Aquavcl01 tasks]]
Other available tests are about memcheck and persistent window state.
 
 
''' unx ''': 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.
 
  
''' win ''': 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.
+
===Changelog ===
  
'''workben''': Does contain a toy called "svdem". svdem is a binary, used for new implementations. For example, actual aqua development uses svdem intensively, to verify all important properties we need:  
+
==== Scheduled : beta  version ====
  
- display a window first (al least ...:))
+
Once printing and Drag and drop will work, alpha will be over
  
- close cleanly this window
+
Remaining issues for beta :
 +
 +
* adjust control metrics
 +
* fix some refresh issues
 +
* complete Leopard port
  
- display a point
+
To be discussed  : native dialogs for printing ?
  
- trace a line
+
====Work in progress: alpha :-) ====
  
- trace an area
 
  
- superpose two areas doing some important graphical operations, (like xor),
+
26th july
  
- display a character
+
aquavcl03 : start Cocoa integration.
  
- display a menu.
+
The toy we will use for Cocoa begining is called vcldemo +  milestone m220
  
- intercept events correctly.
+
Changes have been made in solenv ( use objC++ switch ) , in all includes to implement events, frames
  
[FIXME] add more tests
+
(pl)
  
[[User:Ericb|Ericb]] 13:21, 3 June 2006 (CEST)
+
(pl) #i80066# add cocoa framework and objective c++ switches
  
=='''Naming convention''' ==
+
(pl) #i80025# initial checking for carbon to cocoa migration
  
* Class names start with upper case letters, to improve readability.
+
24th july
  
* Implemented Class names are derived from the virtual classes but can of course take arbitrary names.
+
(pjanik) #i10000#: Fix build breaker on other platforms.
To increase readability, it's recommended to closely follow the base class name.
 
  
* '''Impl prefix: means Implementation details'''. The concerned class or method or function is not used outside of this module, so no external code (or other libraries) can see it.
+
22th july
  
 +
(pjanik) Whitespace cleanup.
  
'''[[ Events types using Carbon API (Mac OS X): ]]''' A lot of events have to be managed in runtime. Here is a short description
+
21th july
  
- do not freeze because bad event loops
+
(isma87) #i79748 add RTL support to tabs
  
- event types implementation: currently, they are defined in vcl/aqua/inc/aquavclevents.hxx
 
  
 +
19th july
  
Apart: exact sense of hedabu? -> [FIXME] as far as I understood it: it is like "copy" to deliver software into the solver, with extra magic. The header files for example are manipulated so paths need not be exact. "headabu" is supposed to disappear little by little.
+
(ekato) #i79737# fix incorrect spacing with punctuations
  
== '''What do we have to build in vcl?'''==
 
  
Two libraries, corresponding ressources (localized) and a toy so called « svdem »
+
18th july
  
'''Common part''':
+
(pl) #i79475# enhance NWF focus for comboboxes
  
in grey on right. The result will be a non architecture dependant library, built in all cases: for instance, libvcl680mxi.dylib on Mac Intel.
+
(isma87) #i79765 add native check marks and radio marks to menus
  
'''Specific part  " a plugin " ''':
+
(isma87) #i79764 add native borders
  
Light yellow: aqua part will only concern Mac OS X (non X11) the name will probably be libvcl_aqua680mxi.dylib
+
17th july
  
As you can see, win means windows part, in blue
 
  
For Unix build (Linux, Solaris or current Mac OS X X11), in purple.
 
  
Result will be:
+
(pl) #i79475# disable NWF focus drawing on dropdown boxes temporarily
  
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'm not sure for other cases).
+
(pl) #i79475# enable native focus drawing for edit fields
  
Example: libvcl680mxi.dylib and libvclplug_aqua680mxi.dylib
+
(ekato) #i78970# Mac-Encoding test for the heuristic with CJK fonts
  
'''In runtime''', 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 "empty boxes".
+
(ekato) Use SAL_EXTTEXTINPUT_ATTR_HIGHLIGHT instead of SAL_EXTTEXTINPUT_ATTR_DOTTEDUNDERLINE for kTSMHiliteSelectedRawText.
  
=== Current Aqua content ===
 
  
A more complete description of aqua (Mac OS X / no X11 specific): [[Image:Vcl_aqua_organisation_02_tree.jpg]]
+
16th july
  
 +
(pjanik) Aquavcl02 now resync'ed with m221
  
==EXISTING objects to build in aqua==
+
(ericb) #i77549# simplify
  
===Sal APP "everything application"===
+
13th July
  
[FIXME] add all objects descriptions
+
(hdu) #i79567# the Aqua port uses the native font subsystem
  
==== saldata ====
+
(pl) #i79599# do not send useless paint events and fix an endless recursion
  
* '''Defined in plugin exclusively''' (i.e. for headers)
+
(pl) #i79581# optional immediate paint handling
  
Unix: unx/source/app/saldata.cxx (header in unx/inc)
+
(pl) code cleanup / review
  
'''Aqua: aqua/source/app/saldata.cxx (header in win/inc)'''
+
(hdu) #i78358# queue new application events also while handling old application events
  
Windows: win/source/app/saldata.cxx (header in aqua/inc)
+
(hdu) remove freetype (unneeded ) 
  
* Role: saldata contains various kind of data used by the implementation for the concerned platform. '''It is a bunch of global data collections reserved for the platform'''
+
Note : modules freetype + scp2 added in aquavcl02
  
It is just completely platform dependent, and nobody except this plugin can see it.
+
12th July
  
'''Saldata is something like a "second sal", but providing an abstraction regarding windowing and graphics''', while SAL module provides an abstraction more Operating System oriented)  
+
(pl) #i79300# better refresh rectangles
  
e.g.: have a look at XRequest array in vcl/unx/source/app/saldata.cxx => all calls are for Xlib (X11).  Ok, useless there, but interesting:-)
+
(pl) #i79300# fix shadow issue with native progress bar
  
[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.
+
(pl) #i79300# change in DrawProgress API, SetBorderStyle can remove border window, removed a now unneeded workaround (flush in ImplCallPaint)
  
 +
(ericb) #i79553# add TPT in AquaSalInstance constructor to make testtool receive events + put it in foreground
  
saldatax.cxx uses classes SalInstance, SalObject, SalFrame, SalVirtualDevice, SalPrinter and fontList.
+
(ericb) #i79553# modify linking for MacOSX builds (initialy for testtool build)
  
Current list of possible objects who can be instantiated/released:
+
(pl) #i79300# changein DrawProgress API
  
structure SalData: does contain pointers on all kind of objects from other classes used in saldata.
+
(hdu) #i78358# handle only one delayed AppleEvent at a time
  
inline functions: [FIXME]: complete the description
+
(hdu) #i78358# handle aqua's AppleEvents immediately in the SVMainHook
  
- SetSalData:
+
11th July
- GetSalData:
 
- GetAppSalData:
 
  
==== salinst ====
+
(pl) #i79487# be more lenient to themes that draw outside their defined box
  
=> implemented in vcl/aqua/source/app/salinst.cxx
+
(pl) #i79487# improve native progress bar
  
Role:  
+
(pl) #i10000#: Adapt VCL header paths.
  
* get environment, mutexes, instantiate AquaSalInstance (Ctor, Dtor),
+
(pjanik) '''m220 resync'''
  
* instantiates/releases a lot of other objects using Get() / CreateObject() / DestroyObject() methods.
+
10th July
  
 +
To be verified: pl fixed bitmap issue on Leopard today (Florian will check ). If so, it should work out of the box.
  
Current list of possible objects who can be instantiated/released:
+
(ericb) : #i79447# allow to use System Preferences colors for highlighted text
  
* VirtualDevice [FIXME]: exact role?
+
(pl) #i79441# add a similar magic to window background like for menus
  
*Printer 
+
(ismae87) fix focused rightmost tab not being recognized as rightmost : the right tab is now correctly drawn when selected
  
- GetDefaultPrinter/ CreatePrinter() / DestroyPrinter - what a name ;-) -
+
To be fixed : RTL issue with tab ( left is right and vice versa )
  
- InfoPrinter (Get/Create/Delete)
+
(pl) no focus rect for native tab control on aqua
  
- PrinterQueue (DeletePrinterQueueInfo / GetPrinterQueueInfo / GetPrinterQueueState)
+
(pl) #i79424# use an image mask instead of an image to support native menus, too
  
* System (Create / Delete) [FIXME]: what means system here?
+
(pl) #i79424# reuse colorspace
  
* Events:
+
(pl) #i79424# new implmentation for CreateWithMask ( includes several changes )
  
AquaSalInstance::SetEventCallback()
+
(pl) #i79402# fix some overpaint issues 
  
AquaSalInstance::SetErrorEvenCallback()
+
9th July
  
AquaSalInstance::GetConnectionIdentifier()
+
(isma87) add native spinbox : now spinboxes are seen in controls :)
  
* Menu / MenuItem:
+
8th July
  
AquaSalInstance::CreateMenu() / same for DestroyMenu()
+
(isma87) add native EditBox, MultiLineEditBox and non-dropdown Listbox
  
AquaSalInstance::CreateMenuItem / same DestroyMenuItem()
+
(isma87) AHIG dimensions for comboboxes and listboxes, and add disabled state for listboxes
  
* Sound:
+
6th July
  
AquaSalInstance::CreateSalSound() => object to a pointer of SalSound type
+
(pl) #i79068# RTL mirroring
  
Note: AquaSalInstance::DestroySalSound is not implemented (?)
+
(pl) fix drawAlphaRect for LineColor
  
* Timer: CreateTimer() /
+
(pl) #i79212# fix another menu related crash
  
AquaSalInstance:: DestroyTimer() is not yet implemented (?)
+
(cd) #i79228# Support application event APPEVENT_PRINT for the mac port
  
 +
(isma87) add aqua tabs
  
Class MacImeStatus: inherits of SalI18NImeStatus
+
(isma87) center tabs and ask for native size
  
-> only there to see if there is a window to toggle into menubar [FIXME]??
+
(isma87) remove bold text for focused tab
  
AquaSalInstance::CreateI18NImeStatus(): instantiates MacImeStatus
+
(hdu) #i78147# make OOo the default document handler for OpenDocument (mheily: thank you for the patch)
  
'''For futher informations, see: ''' '''[[Content of salinst.cxx]]'''
+
(pl) #i79300# no surrounding frame for NWF progress bar
  
([[User:Ericb|Ericb]] 16:11, 20 May 2006 (CEST))
+
(pl) #i79300# support NWF for progress bars
  
==== salmain ====
 
  
Role: if possible, runs the standard vcl application code SVMain()
+
5th July
  
([[User:Ericb|Ericb]] 16:15, 20 May 2006 (CEST))
+
aquavcl03 has been created : start Cocoa migration. This cws will be resync'ed with m220 ( including aquavcl01) and first Cocoa changes will be included.
  
==== salsound ====
+
'''Great day for Mac OS X port: aquavcl01 is nominated and integrated : should be in m220 !!''' 
  
==== salsys ====
+
(hdu) #i78358# Aqua AppleEvents: handle multiple open/print files at once
  
==== saltimer ====
+
(hdu) #i78358# handle AppleEvents: OpenDoc and PrintDoc :
  
==== saltimer ====
+
4th July
  
The main problem with SalTimer is the code we use is obsolete. To remove this deprecated code, sevarl work have been tried
+
(hdu) #i79212# apply GH's patch to fix testtool crashes on Aqua  :  testtool does crash when aqua menus are used.  
  
1) Pavel Janik, in issue 75228
+
3rd July
  
works, but a serious problem is remaining (a thread issue, nothing anybody explained yet)
+
(hdu)  #i78358# handle AppleEvents: AEQuitApplication ->  will help to fix the issue, open more doors, and prepare Cocoa transition
  
2) eric bacahrd (code will be attached soon)
+
(pl) #i78943# disable drawing mnemonics on aqua :  mnemonics are not aqua compliant
  
3) Michael Sicotte, who proposed to work on that, and continue Pavel implementation.
+
(pl) make debug window work on mac again, using MOD5 ( was not used before )
  
 +
(hdu) #i78970# CJK fonts require extra leading
  
SalTimer description
+
2nd July
  
AquaSalTimerproc
+
(pl) join from aquavcl01 : aquavcl02 starting point is vcl from aquavcl01. Only vcl will have to be modified for now, other modules will arrive later.
  
AquaSalTimer::Start()
+
aquavcl02 creation : aquavcl01 will be integrated (if nothing's going wrong) and aqua will become buildable just checking m220 sources
  
AquaSalTimer::Stop()
+
29th June
  
AquaSalTimer::Restart()
+
aquavcl01 is closed : no more commits allowed ( excepted for QA reason )
  
AquaSalTimer::Installtask()  // yet needed?
+
28th June
  
=== Sal GDI (everything Graphical Display Interface) ===
+
Tino announced bitmap copy paste works, and he's looking forward about drag and drop
  
====salgdinativewidgets====
+
Commits of the day:
  
[[native controls]]
+
(msicotte) #i78982# numeric keypad ENTER == RETURN in GetKeyCode
  
==== salatslayout ====
+
(pl) cleaning up some unused headers
  
==> implemented in vcl/aqua/source/gdi/salatslayout.cxx
+
(pl) #i77562# improvements from code review session
  
- Handle text layouting :
+
(tra) #i77593#Hack to prevent warning caused by the use of deprecated APIs
  
    * Use ATSUI (ATSUCreateTextLayoutFromPtr) to layout the text unicode char buffer
+
(tra) #i77593#support for copy&paste of pictures, OLE data exchanges with MS Office etc.
    * Use ATSUI (ATSU..) to get informations about glyphs
 
    * Populate different arrays (mpGlyph2Chars, mpChars2Glyph, mpCharsWidths, mpGlyphAdvances)
 
      that are used in various methods.
 
  
==== salatsuiutils ====
+
(pl) fix key up handling
  
==== salfontutils ====
+
(ericb) #i77551# improve metrics for listboxes buttons
  
==== salmathutils ====
+
(pl) #i77562# fix pro build warning
  
==== sal bmp ====
+
(pl) #i77562# landscape support
  
==== salvd ====
+
(hdu) #i77562# handle Printer dpi<->transformation matrix interaction
 +
 
 +
(ericb) #i78847# use MOD5 instead of MOD2 to fix formulas issue with ALT
  
==== salpixmaputils====
+
(pl) #i77552# do not override explicit control background
  
==== salprn ====
+
(hdu) #i78924# implement bHandleAllCurrentEvents mode for AquaSalInstance::Yield() and ignore obsoleted timer events
  
====salrectangle====
+
(pjanik) whitespace cleanup
  
==== salvd ====
+
(ericb) #i77551# add correct buttons for listboxes
  
=== Sal Window===
+
(ekato) Don't swallow Command-Space with menu as it is often used for TSM.
  
==== salframe ====
+
(ekato) Fix crash with SALEVENT_KEYUP on non text widget.
Documentation in progress, from damiend :
 
[[User:Damiend|Damiend page]]
 
  
====salobj====
+
27th June
  
== TO BE IMPLEMENTED (missing in Aqua)==
+
(pjanik) announced resync/ aquavcl01 integration in good shape.
  
===Audio===
+
(jogi) will start QA next week for all platforms
  
====audioconvert====
+
(ericb) not commited add equation input iin formula //
(obsolete?)  
 
  
====devaudio====
+
(pl) announced the printing working for soon (without the native dialogs ) :tested working with images, needs some work with equations
(obsolete?)
+
some strange behaviour with equations import
  
====native sound====
+
26th June
  
====salimpsound====
+
Pavel found the way to make the testtool working.
  
====vsound====
+
Automated test are already working, but the changes need to be commited ( probably in aquavcl02 or another cws to come)
  
===i18n===
+
(pl) #i78907# paint menubar, add a magical 2 pixel border offset
  
===keysymnames===
+
(hdu) Aqua only: link to font subsetter library
  
===saldisp===
+
(ericb) #i78548# adjust aquavcl01 to salaquatox11
  
===sm===
+
(pl) #i77552# temporarily disable native dialog background in about dialog
  
 +
(pjanik) #i78712#: Add events for entering and leaving, send MOUSELEAVE event
 +
to prevent "aggressive tooltips".
  
[FIXME]: is session manager usefull?
+
(pjanik) #i78712#: Add events for entering and leaving.
  
 +
25th June
  
 +
Aquavcl01 is now resynchronized with m217. New : Tango iconset ( see issue 78784 )
  
=='''Native Controls'''==
+
(ericb) #i78528# workaround for build breaker in desktop, the time cloph provides a better fix
  
====Scrollbar====
+
(hdu) #i78815# measure the caret positions directly instead of using glyph positions
  
'''Works as expected'''. The most important work is done
 
  
See: [[Mac_OS_X_Porting_-_Native_Controls#ScrollBar]]
 
  
====DrawThemeButton() documentation====
 
  
'''Started'''
 
  
See: [[Mac_OS_X_Porting_-_Native_Controls#ComboBox]]
+
22th June
  
Started
 
<pre>
 
DrawThemeButton
 
Draws a button.
 
  
OSStatus DrawThemeButton (
+
Philipp commited the code we worked on during WWDC : now windows have Aqua theme for true :)
  const Rect * inBounds,
+
 
  ThemeButtonKind inKind,
+
The refresh issue for windows is vanished. Not the time to file an issue
  const ThemeButtonDrawInfo * inNewInfo,
 
  const ThemeButtonDrawInfo * inPrevInfo,
 
  ThemeEraseUPP inEraseProc,
 
  ThemeButtonDrawUPP inLabelProc,
 
  UInt32 inUserData
 
);
 
Parameters
 
inBounds
 
A pointer to a structure of type Rect. Pass a rectangle specifying the boundary of the button, in local coordinates.
 
  
inKind
+
(hdu) fix inverted debug assertion
A value of type ThemeButtonKind. Pass a constant specifying the type of button to draw.
 
See “Theme Buttons” for descriptions of possible values.
 
  
inNewInfo
+
(pl) remove unused functions
A pointer to a structure of type ThemeButtonDrawInfo. Before calling DrawThemeButton,
 
set the structure to contain the new state, value, and adornment for the button.
 
DrawThemeButton uses the information passed in the inNewInfo and inPrevInfo parameters
 
to apply transitional animation or sound effects as the button state changes, if such are
 
specified under the current theme.
 
  
inPrevInfo
 
A pointer to a structure of type ThemeButtonDrawInfo. If the button state is changing,
 
set the structure to contain the previous state, value, and adornment for the button,
 
to allow DrawThemeButton to apply any transitional effects. If the button state is not
 
changing, you can pass NULL.
 
  
inEraseProc
+
21th June
A value of type ThemeEraseUPP. If you have a custom background, use this parameter to pass
+
 
a universal function pointer to an application-defined function such as that described in
+
* Today, looks like japanese fonts can be used properly
ThemeEraseProcPtr. DrawThemeButton calls this function to erase the background before drawing
+
 
the button. If you pass NULL, DrawThemeButton's default behavior is to erase the background
+
* XOR has been implemented (partially, using basebmp )
for you.
+
 
 +
* aquafilepicker01 cws is close to be ready for QA
  
inLabelProc
+
* salaquatox11 has to be reviewed first
A value of type ThemeButtonDrawUPP. If you pass a universal function pointer to an
 
application-defined function such as that described in ThemeButtonDrawProcPtr, DrawThemeButton
 
calls that function to draw the label of the button. If you pass NULL, no label is drawn.
 
  
inUserData
+
(hdu) remove code comment for less accurate but more reliable layout measurement
An unsigned 32-bit integer. Provide any data to be passed in to the callback functions specified in
 
the inLabelProc and inEraseProc parameters. Pass NULL if you do not wish to provide any data.
 
  
Return Value
+
(hdu) implement detailed measurements in complex text layouts
A result code. See “Appearance Manager Result Codes”.
 
  
Discussion
+
(hdu) #i78704# add a new pixelformat, minor cosmetics
The DrawThemeButton function draws a theme-compliant button. If a ThemeEraseProcPtr is
 
specified in the inEraseProc parameter, DrawThemeButton uses that function to erase the
 
background of the button before drawing the button. After the button is drawn, if a
 
ThemeButtonDrawProcPtr is specified in the inLabelProc parameter, DrawThemeButton calls
 
that function to draw the button’s label.
 
  
Note that DrawThemeButton also draws any appearance adornments for the button and that these
+
(ekato)  issue #77846: use appropriate text attributes for input method
can extend beyond the button’s basic bounding rectangle, as specified in the inBounds parameter,
 
and may be of variable shape. You may therefore wish to call the function
 
GetThemeButtonBackgroundBounds to obtain the actual rectangle containing the pixels belonging
 
to a button under the current theme.
 
  
Version Notes
+
(pjanik) Whitespace cleanup.
This function is available with Appearance Manager 1.1 and later.
 
  
Availability
+
(pjanik) Unify Windows and Aqua parts to have shorter diff against the base milestone.
Available in CarbonLib 1.0 and later when Appearance 1.1 or later is present.
+
 
Available in Mac OS X 10.0 and later.
+
(ekato) Call SALEVENT_{GETFOCUS,LOSEFOCUS} in HandleWindowActivatedEvent().
Declared In
+
 
Appearance.h
+
(ekato)  Handle window activate and deactivate events properly.
</pre>
 
  
====HIComboBoxCreate() documentation====
+
(pl)   fixed a constness issue
  
<pre>
 
HIComboBoxCreate
 
Creates a combo box control.
 
  
OSStatus HIComboBoxCreate (
+
At this point, we have, since the previous development snapshot ( I *didn't wrote* we commited everything ) :
  const HIRect* boundsRect,
 
  CFStringRef text,
 
  const ControlFontStyleRec* style,
 
  CFArrayRef list,
 
  OptionBits inAttributes,
 
  HIViewRef* outComboBox
 
);
 
Parameters
 
boundsRect
 
The bounding box of the control.
 
  
text
 
The default text in the editable portion of the control. Can be NULL.
 
  
style
+
- Impress : animations work now (excepted sound)
The font style of the both editable text and the text in the disclosure list. Can be NULL.
 
  
list
+
- export pdf works now (some remaining issues with arabian locales maybe)
The default values available in the disclosure list. Can be NULL.
 
  
inAttributes
+
- copy paste works partially (text only )
The default attributes of the combo box. For possible values, see “Combo Box Attributes”.
 
  
outComboBox
+
- 2 instant crashes vanished since new saltimer implementation ( spellchecker and quit )
On exit, a pointer to a reference for the new control.
 
  
Discussion
+
- native fonts et OpenOffice.org bundled fonts are now usable -> equations are now correctly displayed, since OpenSymbol is found
The combo box can be used in compositing mode, as well as traditional Control Manager mode.
+
 
When created, this view is invisible. To see the view, you must show the view by calling HIViewSetVisible.
+
- start of native comboboxes (needs work)
</pre>
+
 
 +
- listboxes ( not complete)
  
== What is used for Linux, Windows, Mac OS X ...build? ==
+
- window background use Aqua theme ( patch not commited, but available : http://eric.bachard.free.fr/mac/aquavcl/patches/aquavcl01_june2007/window_background/aqua_window_background.diff  )
  
'''[[Description of the dependencies]]'''
+
- Calc works (white cell issue solved)
  
'''[[Windows]]'''
+
- Writer works ( text input ok, space issue  ... etc)
  
'''[[MacOS X]]'''
+
- Maths works (exccepted braces, to be discussed soon )
  
'''[[Linux]]'''
+
We can include in the build (at least I do ) :
  
'''[[Solaris]]'''
+
- native FilePicker, incuding the possibility to choose OpenOffice.org native one (allows URLs entries like http:// ..  )
 +
- new Chart module
  
== Content of Aqua ==
 
  
'''[[Click here to see the complete list]]'''
 
  
 +
20th June
  
'''Content of vcl/inc'''
+
(pl) some very minor cleanups
  
Notes:
+
19th june
  
1) Where to find includes
+
(pl) #i75228# initialize all members
  
<foo/bar.hxx> 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. ;-)
+
(hdu) ATSLayout::GetBoundRect() is also called for positioned text (e.g. in Insert->SpecialChar)
  
2)
+
(hdu) log usage of unimplemented methods
suffix .h (for C calls or first version?) or .hxx (C++)  
 
  
'''A) Family of includes''':
+
18th June
  
Looking more closely at the list brings to the fore (expression from dictionary ;-)) that include names are
+
(hdu) ATSLayout::GetBoundRect(): do not reverse y-measurement in flipped context
informatives. Most of the time, the name gives the function/role.
 
What is interesting is the files with name begining with "sal". sal means System Abstraction Layer + include's function (or explicit name).
 
  
Partial list, for example:
+
(pl) : #i78600# change AQUA_LOG default behaviour
  
salatype.hxx
+
(hdu) workaround for ATSUI not using trailing spaces for justification
  
salbmp.hxx
+
16th June
  
salctrlhandle.hxx
+
(pjanik) Add vcldemo demo application.
  
salctype.hxx
+
(pjanik) New demo application that draws something.
  
salframe.hxx
+
(pjanik) vcl is now WaE clean, remove the workaround introduced in the past.
  
salgdi.hxx
+
15th June
  
salgeom.hxx
+
(pl) #i75228# replace timer implementation
  
sallayout.hxx (main header for fonts services)
+
14th June
...
 
salmenu
 
salnativewidgets
 
...etc
 
  
Other important families are "sv" and "uno" or "win" (window) prefixed. sal family will be analysed apart.
+
(tra) copy /paste partial (only text) : work in progress, checked in to have it saved in the repos.
  
'''B) Includes of includes'''
+
(hdu) register OOo-specific temporary fonts
  
Some includes are more important than other. To prove this, just have a look is sufficient: some are always needed, and some more rarely.
+
13th June
  
To verify, a simple test to do in vcl/inc:
+
(ericb) draw correct button for Comboboxes (Ismael will complete)
  
egrep -H "#include" ./* | wc -l  gives me 681 lines ! And some of them are the same...
+
(hdu) ATSLayout::GetIdealX(): get multiple widths at once
  
To know more, the precedent command line can be modified to make appear the numerous call
+
(hdu) better text measurements, PDF export, etc. by faking point==pixel
to the same includes files.
 
  
 +
(hdu) PDF exported text can now be searched
  
egrep -H "#include" ./* | cut -d"#" -f2 | sort > liste.txt
+
(hdu) ImplMacFontData gets the GetImplFontCharMap() method
  
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**
+
12th June
  
**see http://wiki.services.openoffice.org/wiki/Source_code_directories
+
(hdu) fix PDF font properties => correct font sizes
  
 +
(hdu) refactor ATSLayout::InitGIA() => much better text measurements (and less resource leaks)
  
I'm nearly sure that a complete analysis of just this result will give us a lot of information.
+
(pjanik) Remove FIXME comments, revert original tabbing to prevent useless changes.
  
I propose to change the order of analysis starting with dllapi.h and sv.h.
+
(pjanik) Backport masterfix from SRC680_m215 to aquavcl01. It will be removed when we resync to SRC680_m215+.
  
 +
11th June
  
 +
(ekato) issuse #78288: Fix for a wrapped line.
  
[to be continued]
+
(hdu) simplify SystemFontList header even more
  
'''B1) "sal" includes family'''
+
(hdu) simplify SystemFontList header
  
[[salinst.hxx]] This seems to be the main include file
+
(hdu) implement methods needed for PDF export
  
[[salatype.hxx]]
+
(hdu) aquaport: link PSPLIB statically
  
[[salctrlhandle.hxx]]
+
10th June
  
[[salctype.hxx]]
+
(hdu) add PSPLIB for static linking
  
[[salframe.hxx]]
+
9th June
  
[[salgdi.hxx]]
+
(ekato) Don't pass NULL to CFRelease().
  
[[salgeom.hxx]]
+
(pjanik) Cleanup, prepare for integration.
  
'''[[ sallayout.hxx ]]''' <-- see Native Fonts implementation
+
8th June
  
[[salgtype.hxx]]
+
(pjanik) fix typos.
  
[[vcl/inc/salobj.hxx]]
+
(pjanik) No headless plugin on AQUA.
  
 +
(hdu) provide subsetting lib-archive for aqua port
  
'''B2) Classicals includes'''
+
(hdu) fix CMAP table loading in AquaSalGraphics::GetImplFontCharMap()
  
file: abstdlg.hxx [ means abstract dialog ]
+
(pl) preparations for XOR mode using basebmp BitmapDevice
  
This includes does contain the following classes definitions:
+
7th June
  
[FIXME]: choose a precise presentation template for classes
+
(ericb) #i77549# be sure CFRelease every time
  
 +
(hdu) #i77549# redesign how system preferences are found
  
VclAbstractDialog,
+
(hdu) remove salfontutils.cxx that has been obsoleted by salatsfontutils.cxx
  
VclAbstractTerminateDialog,
+
(thb) #i10000# Fixed build break for enable-dbgutil build again - this time also patching STLport-4.5-macxp-panther.patch
  
VclAbstractRefreshableDialog,
+
(6th June)
 
VclAbstractDialogFactory,
 
  
 +
(ericb) resync with m214 : New Chart is now inside
  
uses <tools/solar.h> , <tools/string.hxx> +
+
(hdu) aqua: build fontsubsetting for static linking
  
"dllapi.h"
+
(hdu) optimistic assumption that all ATS fonts are subsettable
  
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's and archs). Just including sal/config.h does it !
+
(hdu) minor code reshuffling to prepare for PDF font subsetting
  
 +
(hdu) read and digest a MacFont's CMAP table : should be usefull for PDF export
  
Classes:
 
  
Window -> what? [FIXME]
+
(5th June)
ResId -> what?
 
  
Does contain the prototype of VclAbstractDialog, inherit of VCL_DLLPUBLIC
+
(hdu) fixed justified text for huge fonts : now justified text works
  
 +
(pl) implemented AquaSalFrame::SetPointerPos()  #i77534#
  
file: dllapi.h [ dll for dynamic linked library ]
+
(pl) CFString <-> OUString conversion + other usefull functions for type conversion between Apple API and OpenOffice.org, like :
Uses: <sal/config.h> and >sal/types/h>
 
includes: VCL_DLLPUBLIC macro
 
  
 +
CFStringRef rStr = CreateCFString() ,
  
file: accel.h [ means accelerator ]
+
rtl::OUString GetOUString()
  
Classes:
+
(hdu) DrawText: refresh correct rect, remove unneeded CGContextTranslateCTM() call
  
Accelerator
+
(ericb) #i72248# new patch for spirit, to include the correct macos.hpp in boost includes
{
 
}
 
ImplAccelEntry
 
{
 
public members:
 
  
Names
+
(4th June)
  
mnId
+
(ericb) Development snapshot announced
maKeyCode
 
mpAccel
 
mpAutoAccel
 
mbEnabled
 
}
 
  
function / returns / parameters
+
(shaun) mac website modified for development snapshot announce
  
ImplGetKeyCode / void / KeyFuncType eFunc, ref rCode1 , ref rCode2, ref rCode3
+
(pl) antialias in context only if appropriate
  
file: accel.hxx
+
(pl) solve compile problem
 +
 
 +
(ericb) fix little warnings in salatslayout.cxx
 +
 
 +
(hdu) ATSLayout: justified text starts to work
 +
 
 +
(hdu) implement ATSLayout::DisableFontScaling() to prevent drawing problems with huge fonts
  
Uses: <sv.h> , "dllapi.h" ,<tools/resid.hxx>, <<tools/rc.hxx>
+
(pl) #i78078# add: window command dispatcher
  
 +
(hdu) #i72248# prevent inconsistent builds for TARGET_CARBON platforms
  
Classes:
+
(2nd June)
  
ImplAccelData;
+
(ekato) Use kFontFamilyName if it is appropriate.
ImplAccelEntry;
 
  
 +
(ekato) Consider an user language setting with GetSystemFontSetting()
  
== Important Links ==
+
(1st June)
'''[[Progressive implementation]]'''
 
  
'''Native Font server Implementation''' '''[[Mac OS X Porting - Native Fonts]]'''
+
(pl) deactivate vclplugin in QUARTZ
  
'''Native Sound Implementation''': [[Mac OS X Porting - Native Audio and Video]]
+
(pl) don't builds useless library ( we don't need libvclplug in aqua port)
  
'''Native Printing Implementation''': [[Mac OS X Porting - Native_Printing]]
+
(pl) check context before setting blendmode  ( does fix very visible issue : white cell in Calc )
 +
 +
(pl) preliminary: use blendmode hack for XOR mode
  
'''Drag and Drop implementation''': [[Mac OS X Porting - Native Drag and drop]]
 
  
'''Data Acquisition''': [[Mac OS X Porting - Data Acquisition]]
+
(31th May)
  
This work is part of http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s
+
(Shaun) prepared the webiste for development snapshot announce
  
[to be continued:-) ]
+
(cloph) Torrent are available for develoment snapshot of Aqua version
  
== Keyboard comparizon between OpenOffice.org / Mac OS X  application ==
+
(pl) Added desktop and framework into aquavcl01 : to add preferences in menu entries, and improve about
  
[FIXME] redo a cleanest array
+
(pl) other fix for captureMouse ( do not dipatch artificial dispatch mouse move if another frame has captured the mouse since posting)
  
{| style="vertical-align:top; text-align:centered; background-color:#F0F0F0;"
+
(pl) save and restore to protect the context
|- style="background-color:#99CCFF; font-weight:bold;"  
+
 
| Modifier||+ key  || Result || TextEdit  returns
+
(pl) fixed menu popup jump of  highlighted text
|-
+
 
|ALT|| a||æ ||æ  
+
(pl) implemented captureMouse , using overlay window
|-
+
 
|ALT||b||ß ||ß
+
(ericb) testing new functions to retrieve highlighted color (and other) from System Preferences ( proof of concept only)
|-
+
 
|ALT||c||© ||©
+
(30th May)
|-
+
 
|ALT||d||∂ ||∂
+
 
|-
+
(hdu) fixed madness in formula when switching from formula to text
|ALT||e||ê ||ê
+
 
|-
+
(hdu)  removed font size in UpdateSettings() to avoid overwritting fonts size from Appearance Manager
|ALT||f||ƒ ||ƒ
+
 
|-
+
(hdu) cleanup in ATSLyout::DrawText()
|ALT||g ||fi ||fi
+
 
|-
+
( Etsushi Kato ) commited change to implement preedit text drawing from input method
|ALT||h ||Ì ||Ì
+
 
|-
+
(28th May)
|ALT||i ||î ||î
+
 
|-
+
pl proposed a new AquaSalGraphics implementation.
|ALT||j ||Ï ||Ï
+
 
|-
+
http://porting.openoffice.org/servlets/ReadMsg?list=mac&msgNo=5433
|ALT||k ||È ||È
+
 
|-
+
Needs a review and some tests
|ALT||l ||¬ ||¬
+
 
|-
+
(26th May)
|ALT||m ||µ ||µ
+
 
|-
+
(ericb) goodbye uggly grey
|ALT||n ||~ ||~
+
 
|-
+
(24th May)
|ALT||o ||œ ||œ
+
 
|-
+
 
|ALT||p ||π ||π
+
(pl) Various changes (from Bonsai database) : do not use XOR on QUARTZ either, implement flush, no view on VirDev
|-
+
 
|ALT||q ||‡ ||‡
+
(pl) fixed issue 77755 : bad resizing /positionning for parent windows
|-
+
 
|ALT||r ||® ||®
+
(pl) Philipp Lohmann added AQUA_LOG to trace on Aqua  -> Usage :  export AQUA_LOG=off
|-
+
 
|ALT||s ||Ò ||Ò
+
(hdu) started MacOSXIntegrator to use System Fonts ( objective : Aqua version now will uses Lucida Grande or System default if different)
|-
+
 
|ALT||t ||† ||†
+
(pl) fixed issues 77529 and 77530 Implement AquaSalFrame::Get/SetWindowState
|-
+
 
|ALT||u ||º ||º
+
 
|-
+
(23th May) :
|ALT||v ||◊ ||◊
+
 
|-
+
(hdu)  fixed some text breaking/text measurements : works started (works already)
|ALT||w ||‹ ||‹
+
 
|-
+
(hdu)  fixed refresh issues using mrRGBColorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
|ALT||x ||≈ ||≈
+
instead of : mrRGBColorSpace = CGColorSpaceCreateDeviceRGB(); " in  vcl/aqua/source/gdi/salgdi.cxx (~105)
|-
+
 
|ALT||y ||Ú ||Ú
+
(pl) did AquaSalFrame non copyable
|-
+
 
|ALT||z ||Â ||Â
+
(pl) added InitShow() + centered windows relative to parents : now splashscreen appears centered, like all windows having parents
|-
+
 
|ALT||A ||Æ ||Æ
+
Note : In the long run it is planned to handle modal dialogs differently rolling down from the parent' titlebar is AFAIK the method on Mac
|-
+
( Ismael started some experimentation for his Google SoC )
|ALT||B ||∫ ||∫
+
 
|-
+
(pl) Contextual menus are shadowed
|ALT||C ||¢ ||¢
+
 
|-
+
==== alpha 0.9 ====
|ALT||D||∆||∆
+
 
|-
+
<br><div align="left" style="color:grey; font-size:18px">[[User:Ericb/Top10 of Issues | '''Top 10 of Issues with alpha 0.9 (click me to know more) ''']]</div><br><br>
|ALT||F ||· ||·
+
 
|-
+
(22th May)
|ALT||G ||fl ||fl
+
 
|-
+
thb: proposed a patch to workaround the missing animations in Impress (issue 77692)  ( verified working )
|ALT||H ||Î ||Î
+
 
|-
+
fheckl: fixed problem when switching between OOo picker and native picker ( verified working )
|ALT||I ||Î ||Î
+
 
|-
+
hdu: fixed the refresh and clipping => many problems with wrong clipping and wrong graphics attributes are gone
|ALT||J ||Í ||Í
+
 
|-
+
hdu: fixed the text drawn at bad size when resizing 
|ALT||K ||Ë ||Ë
+
 
|-
+
(19th may)
|ALT||L || <nowiki>|</nowiki> ||<nowiki>|</nowiki>
+
 
|-
+
Begining of Drag and Drop (Tino)
|ALT||M ||Ó ||Ó
+
 
|-
+
Using Aqua keyword, 123 issues created + macport user created.
|ALT||N ||ı ||ı
+
 
|-
+
user macport assigned means nobody is working on the issue.
|ALT||O ||Œ ||Œ
+
Once someone assigned the issue to himself + sert issue as started, means issue has an owner.
|-
+
 
|ALT||P ||∏ ||∏
+
Experimental code to test SetThemeWindowBackground to refresh everything (ericb)  (18th may)
|-
+
 
 +
+:  refresh is ok, bitmap refresh is ok when scrolling, typing text works in writer , pulse effect works, refresh checkbuttons works, refresh the window during scrolling works
 +
 
 +
-: no more cursor, excessive system load (lot of Begin /EndGraphic()
 +
 
 +
 
 +
 
 +
Important infos / WIP
 +
 
 +
The main work in progress is about refresh not working in all situations. We isolated the cause: very probably the clipping is either missing, or buggy.
 +
 
 +
Once fixed: pulse effect for buttons, text refresh (blinking cursor, and bitmaps in menus will be ok.
 +
 
 +
ericb add Aqua look for toolbars and tooltips (17th may)
 +
 
 +
==== alpha 0.8 ====
 +
 
 +
Christian Bernd Krippendorf joined the port (16th May) 
 +
 
 +
hdu: memcpy sizeof(data) instead of sizeof(pointer) bytes  (16th May)
 +
 
 +
hdu: fix ATSLayout::GetTextWidth() for multiple glyph-bound-trapezoids
 +
 
 +
msicotte: added definition for makeCGptArray - helper for AquaSalGraphics::invert
 +
 
 +
msicotte: added AquaSalGraphics::invert(ULONG nPoints...
 +
 
 +
hdu: implement stretched/squeezed text
 +
 
 +
hdu: prepare font rotation directly in ATSUI units
 +
 
 +
hdu: simplify a little by removing dead code
 +
 
 +
hdu: enable bold-/italic-emulation for fonts only if needed
 +
 
 +
mikesic: #77317# - fix for wrong menu displayed when last Writer window closed
 +
 
 +
ericb: add pulse effect (it will help to verify refresh issues are fixed)
 +
 
 +
pl: safer yield mutex protection through guards
 +
 
 +
hdu: default to standard font attributes
 +
 
 +
pl: protect against dispatching to dead or dying AquaSalFrames
 +
 
 +
ericb: #i77327# add alpha to user install dir until Aqua version is stabilized
 +
 
 +
hdu:  rewrote ATSUFontID-based font enumeration
 +
 
 +
mikesic: Workaround for issue 77262 - frames around selected items don't disappear
 +
 
 +
mikesic: Fix for issue 74392 - aquavcl01: tooltip crash
 +
 
 +
mikesic: Fix for issue 77261 - Menu disappears when you hover over tooltip
 +
 
 +
mikesic: Fix for issue 75889 - aquavcl01: Extended tooltips text truncated
 +
 
 +
fheckl: adapting to changes since resync  (aquafilepicker01)
 +
 
 +
fheckl:  enabling fps_aqua lib only for aqua build
 +
 
 +
pjanik: Reformat for easier reading (according to OOo C++ rules).
 +
 
 +
Monday 15th May
 +
 
 +
Changes:
 +
 
 +
Yvan Barthelemy provided the first screenshot for printing :)
 +
 
 +
http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Native_Printing
 +
 
 +
http://eric.bachard.free.fr/mac/aquavcl/screenshots/printing/native_printing/native_printing_dialog.jpg
 +
 
 +
F 73688: use default font system  (WIP, hdu)
 +
 
 +
several fixes in salatsuifontutils  (hdu)
 +
 
 +
several fixes in salframe (pl)
 +
 
 +
defaut user install dir is now ~/Library/Application Support/OpenOffice.org-aqua (ericb)
 +
 
 +
added pulse effect to help for refresh
 +
 
 +
 
 +
Saturday 13th / Sunday 14th
 +
 
 +
F 74392: tooltip crash  (mikesic)
 +
 
 +
(IMHO fixed with mikesic patch) 72250: toolbar icon click -> crash with aqua menus (not fixed? Worksforme)
 +
 
 +
F 74392: tooltip crash  (mikesic)
 +
 
 +
==== alpha 0.7 ====
 +
 
 +
Sun decided to officialy supports the Mac OS x port  (3rd May)
 +
 
 +
Welcome to Philipp Lohmann and Herbert Duerr , who joined the Team  (3rd May)
 +
 
 +
resync m211 (1st May)
 +
 
 +
[Top 10 of issues] modify Bundle tree (issue 73693): change committed 28th April (ericb)
 +
 
 +
Google SoC: welcome to Ismael Merzaq and Omer BarOr , our two selected candidates: ismael will work on aqua look (NWF), and Omer will work on Mac OS X Address Book Integration.
 +
 
 +
resync: m208 (11th April)
 +
 
 +
(exp / not commited) Ismael proposed a patch for Utility Windows more Aqua compliant + SetMin/MaxSize()  (9th April)
 +
 
 +
 
 +
Native menus are defaults (ericb)  (8th April)
 +
 
 +
Frederic Barbaise (alias boulifb) joined the port (3rd April)
 +
 
 +
Work on saltimer.cxx started mikesic (27th March)
 +
 
 +
Pavel commited Michael patch for invert and drawAlphaRect()  (27th March)
 +
 
 +
Started 27th March
 +
 
 +
==== alpha 0.6 ====
 +
 
 +
Damien started to work on drawEPS()
 +
 
 +
plipli and ericb work on refresh
 +
 
 +
Michael Sicotte proposed to investigate in timers, and continue [[http://www.openoffice.org/issues/show_bug.cgi?id=75228 Pavel's work]]: objective is to replace obsolete code.  (23th March)
 +
 
 +
[experimental] plipli proposed a patch for a new salframe implementation, using HIView + optionally compositing  (21th March)
 +
 
 +
[commit scheduled] Michael Sicotte proposed a complete patch for invert() (SAL_INVERT SAL_INVERT_50 and SAL_INVERT_TRACKFRAME)  (20th March)
 +
 
 +
Tino proposed to work on code cleanup in salatsuifontutils.cxx, removing obsolete code
 +
 
 +
ismael and michael work on invert() + drawAlphaRect()
 +
 
 +
Started (19th March) :
 +
 
 +
==== alpha 0.5====
 +
 
 +
 
 +
Top 10 Summary:  7 issues over 10 are fixed or very close to be:
 +
 
 +
'''time to code review, tracing, and search for memory leaks'''
 +
 
 +
 
 +
[done] Unicode input in salframe (ekato) (19th March)
 +
 
 +
[experimental, works partially] beginning of HIView + HIComboxes works (text still missing)  (ericb + plipli)  (14th March)
 +
 
 +
[done] replace NewRgn() in salframe (ericb (11th March)
 +
 
 +
[experimental, but very interesting] Improved native windows (ismael) (7th March)
 +
 
 +
====alpha 0.4====
 +
 
 +
'''[Informative]''' build runs with Leopard 9A377a (fheckl) (7th March)
 +
 
 +
Refresh screen issues  (plipli) (4th to 10th March)
 +
 
 +
'''[informative]'''  plipli announced  progress with refresh screen issues  (28th February)
 +
 
 +
[experimental, not yet commited] Proxy configuration from system (pjanik)  (28th February)
 +
 
 +
[done] highlighted native button (pjanik)  (27th February)
 +
 
 +
Native File Picker works (fheckl  / pjanik)  (23th February )
 +
 
 +
====alpha 0.3====
 +
 
 +
Cursor does appear -> invert() + setting a setBlinkTime value in UpdateSettings()  (pjanik /ericb)
 +
 
 +
[done] mirroring negative images (ismael) + DrawAlphaBitmap() + CreateWithMask()
 +
 
 +
pjanik patch for Focus Events
 +
 
 +
[done] scrolling works (pjanik) (17th February)
 +
 
 +
[done ] carret works (plipli) (17th February)
 +
 
 +
[done] checkbuttons fix for checkmarks  (ericb) (17th February)
 +
 
 +
'''[Informative]''' Pavel Janik propose to solve offScreen buffer using HIView (17th February)
 +
 
 +
[experimental, never commited] patch for macosxrc.txt use + UpdateSettings() use in salframe.cxx (ericb (16th February)
 +
 
 +
Michael Sicotte joined the Team (15th February)
 +
 
 +
invert(): first try  (ericb)  (13th february)
 +
 
 +
====alpha 0.2====
 +
 
 +
[12th February 2007 ]
 +
 
 +
[done] calc does not start: bug identified by tino , first workaround (ericb)  [[http://www.openoffice.org/issues/show_bug.cgi?id=73691 issue 73691]]
 +
 
 +
[done] bitmaps in native popup menus (ismael) 
 +
 
 +
[done]  replace obsolete code for HandleWindowPaintEvent(), newRgn() .. etc  (ericb)  (12th February)
 +
 
 +
correct salatslayout patch (plipli)  (11th February)
 +
 
 +
'''[Informative]'''  Michel Renon proposed a summary about his work on fonts issues
 +
 
 +
[patch] Pavel fixed several menu crashes (09th February)
 +
 
 +
'''[Informative]''': Pavel posted a mail about several crashes origin
 +
 +
patch for radioboxes and checkboxes (ericb) (9th February)
 +
 
 +
first complete patch for salatslayout.cxx (plipli) (9th February)
 +
 
 +
[done] most important crashes fixed (pjanik)  (09th february)
 +
 
 +
Modified baseline for 2.2.: Mac OS X10.4 -> Aqua will be 10.4 and 10.5 compatible only (ericb)
 +
 
 +
first try with multi line sallayout (plipli)  (08th February)
 +
 
 +
 
 +
Damien Duportal joined the Team (7th February)
 +
 
 +
[done] scrollbar changes (ericb)  (4th February)
 +
 
 +
====alpha 0.1====
 +
 
 +
create Top 10 of issues before alpha  3rd February 2007:  See: [[http://porting.openoffice.org/mac/news/2007/20070203toptenbeforealpha.html Top 10 of issues]]
 +
 
 +
[experimental, not commited] patch for TPT() implementation (ericb)  (2nd February 2007)
 +
 
 +
Pavel Janik proposed to implement TransformProcessType() (2nd February 2007)
 +
 
 +
[not commited] implement UpdateSettings()  (ericb) 
 +
 
 +
Pavel Janik resynchronized aquavel01 cws  with m202  (2nd February 2007)
 +
 
 +
====alpha 0.03====
 +
 
 +
Michel Renon joined the Team (1st February)
 +
 
 +
[done] fix checkbuttons and radiobuttons issues: offsets, redrawing of the check marks (ericb)
 +
 
 +
[done] fix scrollbar buttons (implement correct methods to retrieve dimensions)
 +
 
 +
[done] implement mapfiles for Mac OS X (Stephan Bergmann, Daniel Boelzle, Tino Rachui , Pavel Janik)
 +
 
 +
====alpha 0.02====
 +
 
 +
[done] modify libsalsystools.dylib to be correctly loaded with the bundle  (ericb, + pjanik)
 +
 
 +
[done] add mouse drag events  (pjanik)
 +
 
 +
 
 +
====alpha 0.01====
 +
 
 +
[done] add new feature for Aqua windows, to allow QuickTime player use(mox)
 +
 
 +
[done] replace obsolete code in salframe.cxx with (ericb)
 +
 
 +
[done] fix correct size for main window (GetOptimaWindowSize() ) (ericb)
 +
 
 +
[done] fix alpha channel in pixmaps (ismael)
 +
 
 +
====alpha 0.0====
 +
 
 +
[done] pushbutton where not correctly drawn (ericb)
 +
 
 +
[done] fix missing mouse events  (pjanik)
 +
 
 +
[done] fix nRepeat in text entry  (ssa)
 +
 
 +
2nd Mac porters Meeting
 +
 
 +
===Work in progress ===
 +
 
 +
URGENT :
 +
 
 +
Top of issues causing crashes: event issue when tips is enabled causes crashes (well known window / handler  / window desctructor / event loop bug)
 +
 
 +
 
 +
Salatsuifontutils:  replace old code, track leaks: tino
 +
 
 +
[done] Bitmaps: (isma87)
 +
 
 +
[running]  Crashes: (tino, pjanik, ericb, isma87, plipli)
 +
 
 +
[???] Drag and drop:  (vijay)
 +
 
 +
[???] Printing  (ybart) 
 +
 
 +
Florian Heckl proposed a subject for Google Summer of Code about native printing
 +
 
 +
Drawing/ windowing (plipli / ericb) -> mainly refresh
 +
 
 +
[done] Implement cursor
 +
 
 +
[started] Native Controls  (ericb)
 +
 
 +
[work in progress] partial multiline sallayout  (plipli)
 +
 
 +
To do:
 +
 
 +
(started, Oliver) - modify the tree to make the bundle start without hack (issue fixed during buildtime)
 +
 
 +
(started, Florian Heckl)  verify Native FilePicker implementation (works , tested in Hamburg )
 +
 
 +
[done] Ismael Merzaq)  implement blit functions in salgdi  (important fix:  probably apha version to be tested once done)
 +
 
 +
[done] Sebastien Plisson- update the missing functions list (fonts ... ask hdu & cl
 +
 
 +
[started] ericb, Mox Soini, Sebastien Plisson, Tino Rachui, Pavel janik continue to replace obsolete code
 +
 
 +
 
 +
 
 +
 
 +
fix crashes with menus  (started: tino)
 +
 
 +
== Aquavcl01 integration ==
 +
 
 +
Log of discussion 26th June 2007 on #ooo_macport
 +
 
 +
<br><div align="left" style="color:grey; font-size:18px">[[User:Ericb/Log26th June  | '''Log of the discussion about Aquavcl01 integration (click me to know more) ''']]</div>
 +
 
 +
<br><div align="left" style="color:grey; font-size:18px">[[User:Ericb/LogESC_aqua  | '''Log of the discussion about Aquavcl01 integration in ESC IRC meeting(click me to know more) ''']]</div>
 +
 
 +
<br>
 +
 
 +
== '''Sort of documentation about VCL around Native Mac OS X port''' ==
 +
 
 +
 
 +
Do we really need to understand how it works? ;-)
 +
 
 +
 
 +
vcl content:
 +
 
 +
ls -laR | wc -l
 +
  1750
 +
 
 +
-> Uff 1750 files to analyse :-/
 +
 
 +
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.
 +
 
 +
How analyse with more efficiency? After some months to anlalyse '''"horizontaly"''', 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 '''"orthogonal"''' method (compared to the previous one). The first method wasn't obviously not the good/best way to describe vcl.
 +
 +
[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 "objects".
 +
 
 +
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 "encapsulated".
 +
 
 +
The most difficult is to see where the API is used. But for all the parts, this is the same.
 +
 
 +
Finally, '''what is important is the design of vcl'''. Which '''patterns''' 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.
 +
 
 +
=== VCL organisation ===
 +
 
 +
Thank's to Philipp Lohmann for this short, but precise description:
 +
 
 +
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.).
 +
 
 +
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()
 +
 
 +
SalFrame abstracts any kind of system window.
 +
 
 +
SalVirtualDevice abstracts an offscreen window (e.g. a Pixmap on X11)
 +
 
 +
SalPrinter and SalInfoPrinter abstract the system print queues where SalInfoPrinter is for querying and SalPrinter for actual printing.
 +
 
 +
SalGraphics is an interface produced by either SalFrame, SalVirtualDevice or SalPrinter which is used for actual drawing operations (text, bitmaps, vector graphics)
 +
 
 +
SalSound is for sound playing.
 +
 
 +
SalBitmap provides memory for bitmap graphics as well as methods converting this memory to a system handle (e.g. a Pixmap on X11).
 +
 
 +
SalOpenGL provides OpenGL functionality if available.
 +
 
 +
SalTimer is an interface for periodically triggering the event queue (to timer implementation).
 +
 
 +
SalI18NImeStatus handles how the status window of an Input Method Editor (IME) should display (this is mainly X11 specific).
 +
 
 +
SalSystem has some system specific methods that did not belong anywhere else:-)
 +
 
 +
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.
 +
 
 +
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 implementation (located beneath vcl/win for Windows and vcl/unx for the X11 platforms).
 +
 
 +
[[User:Ericb|Ericb]] 16:12, 1 July 2006 (CEST)
 +
 
 +
===Sub-directories description ===
 +
 
 +
==== '''Organisation of vcl directories''' ====
 +
 
 +
[[Image:aquavcl_organisation_complete_02.jpg]]
 +
 
 +
==== '''Directories in vcl. Short description''' ====
 +
 
 +
''' aqua ''': 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]
 +
 
 +
''' prj ''': 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.
 +
 
 +
''' qa ''' does contain all quality assurancy stuff
 +
 
 +
'''source''': 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).
 +
 
 +
Depending on the OS and the architecture, binaries are built or not.
 +
 
 +
''' test ''': This directory does contain all the needed stuff for tests. As example, in qa/testdocuments, you'll find three documents (one writer, one calc and one impress) for tests purpose.
 +
Other available tests are about memcheck and persistent window state.
 +
 +
''' unx ''': 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.
 +
 
 +
''' win ''': 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.
 +
 
 +
'''workben''': Does contain a toy called "svdem". svdem is a binary, used for new implementations. For example, actual aqua development uses svdem intensively, to verify all important properties we need:
 +
 
 +
- display a window first (al least ...:))
 +
 
 +
- close cleanly this window
 +
 
 +
- display a point
 +
 
 +
- trace a line
 +
 
 +
- trace an area
 +
 
 +
- superpose two areas doing some important graphical operations, (like xor),
 +
 
 +
- display a character
 +
 
 +
- display a menu.
 +
 
 +
- intercept events correctly.
 +
 
 +
[FIXME] add more tests
 +
 
 +
[[User:Ericb|Ericb]] 13:21, 3 June 2006 (CEST)
 +
 
 +
=='''Naming convention''' ==
 +
 
 +
* Class names start with upper case letters, to improve readability.
 +
 
 +
* Implemented Class names are derived from the virtual classes but can of course take arbitrary names.
 +
To increase readability, it's recommended to closely follow the base class name.
 +
 
 +
* '''Impl prefix: means Implementation details'''. The concerned class or method or function is not used outside of this module, so no external code (or other libraries) can see it.
 +
 
 +
 
 +
'''[[ Events types using Carbon API (Mac OS X): ]]''' A lot of events have to be managed in runtime. Here is a short description
 +
 
 +
- do not freeze because bad event loops
 +
 
 +
- event types implementation: currently, they are defined in vcl/aqua/inc/aquavclevents.hxx
 +
 
 +
 
 +
Apart: exact sense of hedabu? -> [FIXME] as far as I understood it: it is like "copy" to deliver software into the solver, with extra magic. The header files for example are manipulated so paths need not be exact. "headabu" is supposed to disappear little by little.
 +
 
 +
== '''What do we have to build in vcl?'''==
 +
 
 +
Two libraries, corresponding ressources (localized) and a toy so called « svdem »
 +
 
 +
'''Common part''':
 +
 
 +
in grey on right. The result will be a non architecture dependant library, built in all cases: for instance, libvcl680mxi.dylib on Mac Intel.
 +
 
 +
'''Specific part  " a plugin " ''':
 +
 
 +
Light yellow: aqua part will only concern Mac OS X (non X11) the name will probably be libvcl_aqua680mxi.dylib
 +
 
 +
As you can see, win means windows part, in blue
 +
 
 +
For Unix build (Linux, Solaris or current Mac OS X X11), in purple.
 +
 
 +
Result will be:
 +
 
 +
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'm not sure for other cases).
 +
 
 +
Example: libvcl680mxi.dylib and libvclplug_aqua680mxi.dylib
 +
 
 +
'''In runtime''', 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 "empty boxes".
 +
 
 +
=== Current Aqua content ===
 +
 
 +
A more complete description of aqua (Mac OS X / no X11 specific): [[Image:Vcl_aqua_organisation_02_tree.jpg]]
 +
 
 +
 
 +
==EXISTING objects to build in aqua==
 +
 
 +
===Sal APP "everything application"===
 +
 
 +
[FIXME] add all objects descriptions
 +
 
 +
==== saldata ====
 +
 
 +
* '''Defined in plugin exclusively''' (i.e. for headers)
 +
 
 +
Unix: unx/source/app/saldata.cxx (header in unx/inc)
 +
 
 +
'''Aqua: aqua/source/app/saldata.cxx (header in win/inc)'''
 +
 
 +
Windows: win/source/app/saldata.cxx (header in aqua/inc)
 +
 
 +
* Role: saldata contains various kind of data used by the implementation for the concerned platform. '''It is a bunch of global data collections reserved for the platform'''
 +
 
 +
It is just completely platform dependent, and nobody except this plugin can see it.
 +
 
 +
'''Saldata is something like a "second sal", but providing an abstraction regarding windowing and graphics''', while SAL module provides an abstraction more Operating System oriented)
 +
 
 +
e.g.: have a look at XRequest array in vcl/unx/source/app/saldata.cxx => all calls are for Xlib (X11).  Ok, useless there, but interesting:-)
 +
 
 +
[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.
 +
 
 +
 
 +
saldatax.cxx uses classes SalInstance, SalObject, SalFrame, SalVirtualDevice, SalPrinter and fontList.
 +
 
 +
Current list of possible objects who can be instantiated/released:
 +
 
 +
structure SalData: does contain pointers on all kind of objects from other classes used in saldata.
 +
 
 +
inline functions: [FIXME]: complete the description
 +
 
 +
- SetSalData:
 +
- GetSalData:
 +
- GetAppSalData:
 +
 
 +
==== salinst ====
 +
 
 +
=> implemented in vcl/aqua/source/app/salinst.cxx
 +
 
 +
Role:
 +
 
 +
* get environment, mutexes, instantiate AquaSalInstance (Ctor, Dtor),
 +
 
 +
* instantiates/releases a lot of other objects using Get() / CreateObject() / DestroyObject() methods.
 +
 
 +
 
 +
Current list of possible objects who can be instantiated/released:
 +
 
 +
* VirtualDevice [FIXME]: exact role?
 +
 
 +
*Printer 
 +
 
 +
- GetDefaultPrinter/ CreatePrinter() / DestroyPrinter - what a name ;-) -
 +
 
 +
- InfoPrinter (Get/Create/Delete)
 +
 
 +
- PrinterQueue (DeletePrinterQueueInfo / GetPrinterQueueInfo / GetPrinterQueueState)
 +
 
 +
* System (Create / Delete) [FIXME]: what means system here?
 +
 
 +
* Events:
 +
 
 +
AquaSalInstance::SetEventCallback()
 +
 
 +
AquaSalInstance::SetErrorEvenCallback()
 +
 
 +
AquaSalInstance::GetConnectionIdentifier()
 +
 
 +
* Menu / MenuItem:
 +
 
 +
AquaSalInstance::CreateMenu() / same for DestroyMenu()
 +
 
 +
AquaSalInstance::CreateMenuItem / same DestroyMenuItem()
 +
 
 +
* Sound:
 +
 
 +
AquaSalInstance::CreateSalSound()  => object to a pointer of SalSound type
 +
 
 +
Note: AquaSalInstance::DestroySalSound is not implemented (?)
 +
 
 +
* Timer: CreateTimer() /
 +
 
 +
AquaSalInstance:: DestroyTimer() is not yet implemented (?)
 +
 
 +
 
 +
Class MacImeStatus: inherits of SalI18NImeStatus
 +
 
 +
-> only there to see if there is a window to toggle into menubar [FIXME]??
 +
 
 +
AquaSalInstance::CreateI18NImeStatus(): instantiates MacImeStatus
 +
 
 +
'''For futher informations, see: ''' '''[[Content of salinst.cxx]]'''
 +
 
 +
([[User:Ericb|Ericb]] 16:11, 20 May 2006 (CEST))
 +
 
 +
==== salmain ====
 +
 
 +
Role: if possible, runs the standard vcl application code SVMain()
 +
 
 +
([[User:Ericb|Ericb]] 16:15, 20 May 2006 (CEST))
 +
 
 +
==== salsound ====
 +
 
 +
==== salsys ====
 +
 
 +
==== saltimer ====
 +
 
 +
==== saltimer ====
 +
 
 +
The main problem with SalTimer is the code we use is obsolete. To remove this deprecated code, sevarl work have been tried
 +
 
 +
1) Pavel Janik, in issue 75228
 +
 
 +
works, but a serious problem is remaining (a thread issue, nothing anybody explained yet)
 +
 
 +
2) eric bacahrd (code will be attached soon)
 +
 
 +
3) Michael Sicotte, who proposed to work on that, and continue Pavel implementation.
 +
 
 +
 
 +
SalTimer description
 +
 
 +
AquaSalTimerproc
 +
 
 +
AquaSalTimer::Start()
 +
 
 +
AquaSalTimer::Stop()
 +
 
 +
AquaSalTimer::Restart()
 +
 
 +
AquaSalTimer::Installtask()  // yet needed?
 +
 
 +
=== Sal GDI (everything Graphical Display Interface) ===
 +
 
 +
====salgdinativewidgets====
 +
 
 +
[[native controls]]
 +
 
 +
==== salatslayout ====
 +
 
 +
==> implemented in vcl/aqua/source/gdi/salatslayout.cxx
 +
 
 +
- Handle text layouting :
 +
 
 +
    * Use ATSUI (ATSUCreateTextLayoutFromPtr) to layout the text unicode char buffer
 +
    * Use ATSUI (ATSU..) to get informations about glyphs
 +
    * Populate different arrays (mpGlyph2Chars, mpChars2Glyph, mpCharsWidths, mpGlyphAdvances)
 +
      that are used in various methods.
 +
 
 +
==== salatsuiutils ====
 +
 
 +
==== salfontutils ====
 +
 
 +
==== salmathutils ====
 +
 
 +
==== sal bmp ====
 +
 
 +
==== salvd ====
 +
 
 +
==== salpixmaputils====
 +
 
 +
==== salprn ====
 +
 
 +
====salrectangle====
 +
 
 +
==== salvd ====
 +
 
 +
=== Sal Window===
 +
 
 +
==== salframe ====
 +
Documentation in progress, from damiend :
 +
[[User:Damiend|Damiend page]]
 +
 
 +
====salobj====
 +
 
 +
== TO BE IMPLEMENTED (missing in Aqua)==
 +
 
 +
=== OpenGL ===
 +
 
 +
VCL implementation of OpenGL is obsolete-> first plan canceled
 +
 
 +
 
 +
'''New plan'''
 +
 
 +
Use existing Windows implementation as model, and bind Cocoa OpenGLView from Apple customCocoaOpenGL code sample  (see files [http://eric.bachard.free.fr/mac/aquavcl/patches/aqua_April2008/Canvas05/AquaOpenGL/files/aquaOpenGLView.h aquaOpenGLView.h] and [http://eric.bachard.free.fr/mac/aquavcl/patches/aqua_April2008/Canvas05/AquaOpenGL/files/aquaOpenGLView.m aquaOpenGLView.m] like in the Cocoa implementation of the AquaPrintView
 +
 
 +
[done]
 +
 
 +
* Define interface of the AquaOpenGLView class  [done using Apple code]
 +
* Define the implementation of the AquaOpenGLView class [done, using Apple code]
 +
 
 +
* Define the OpenGL implementation strategy in OGLTran_Transitioner.cxx
 +
 
 +
# aquaOpenGLView.m will stand in vcl/aqua/source/gdi
 +
# aquaOpenGLView.h and vcl/aqua/inc
 +
# aquaOpenGLView object will be built in libvcl.dylib
 +
 
 +
[todo]
 +
 
 +
# complete the class OGLTransitionerImpl implementation (for QUARTZ only, mainly define the right GLWin structure members)
 +
# complete OGLTransitionerImpl::initWindowFromSlideShowView()  ( QUARTZ case)
 +
 
 +
Philipp Lohmann suggestions :
 +
 
 +
create your own OpenGLView with the view of the parent window as superview
 +
 
 +
like NSOpenGLView pMyView = [[NSOpenGLView alloc] init....]
 +
 
 +
and then [pView addSubView: pMyView]
 +
 
 +
commit the changes ?
 +
 
 +
Later
 +
 
 +
test ?  :-)
 +
 
 +
===Audio===
 +
 
 +
====audioconvert====
 +
(obsolete?)
 +
 
 +
====devaudio====
 +
(obsolete?)
 +
 
 +
====native sound====
 +
 
 +
====salimpsound====
 +
 
 +
====vsound====
 +
 
 +
===i18n===
 +
 
 +
===keysymnames===
 +
 
 +
===saldisp===
 +
 
 +
===sm===
 +
 
 +
 
 +
[FIXME]: is session manager usefull?
 +
 
 +
=='''Native Controls'''==
 +
 
 +
====Scrollbar====
 +
 
 +
'''Works as expected'''. The most important work is done
 +
 
 +
See: [[Mac_OS_X_Porting_-_Native_Controls#ScrollBar]]
 +
 
 +
====DrawThemeButton() documentation====
 +
 
 +
'''Started'''
 +
 
 +
See: [[Mac_OS_X_Porting_-_Native_Controls#ComboBox]]
 +
 
 +
Started
 +
<pre>
 +
DrawThemeButton
 +
Draws a button.
 +
 
 +
OSStatus DrawThemeButton (
 +
  const Rect * inBounds,
 +
  ThemeButtonKind inKind,
 +
  const ThemeButtonDrawInfo * inNewInfo,
 +
  const ThemeButtonDrawInfo * inPrevInfo,
 +
  ThemeEraseUPP inEraseProc,
 +
  ThemeButtonDrawUPP inLabelProc,
 +
  UInt32 inUserData
 +
);
 +
Parameters
 +
inBounds
 +
A pointer to a structure of type Rect. Pass a rectangle specifying the boundary of the button, in local coordinates.
 +
 
 +
inKind
 +
A value of type ThemeButtonKind. Pass a constant specifying the type of button to draw.
 +
See “Theme Buttons” for descriptions of possible values.
 +
 
 +
inNewInfo
 +
A pointer to a structure of type ThemeButtonDrawInfo. Before calling DrawThemeButton,
 +
set the structure to contain the new state, value, and adornment for the button.
 +
DrawThemeButton uses the information passed in the inNewInfo and inPrevInfo parameters
 +
to apply transitional animation or sound effects as the button state changes, if such are
 +
specified under the current theme.
 +
 
 +
inPrevInfo
 +
A pointer to a structure of type ThemeButtonDrawInfo. If the button state is changing,
 +
set the structure to contain the previous state, value, and adornment for the button,
 +
to allow DrawThemeButton to apply any transitional effects. If the button state is not
 +
changing, you can pass NULL.
 +
 
 +
inEraseProc
 +
A value of type ThemeEraseUPP. If you have a custom background, use this parameter to pass
 +
a universal function pointer to an application-defined function such as that described in
 +
ThemeEraseProcPtr. DrawThemeButton calls this function to erase the background before drawing
 +
the button. If you pass NULL, DrawThemeButton's default behavior is to erase the background
 +
for you.
 +
 
 +
inLabelProc
 +
A value of type ThemeButtonDrawUPP. If you pass a universal function pointer to an
 +
application-defined function such as that described in ThemeButtonDrawProcPtr, DrawThemeButton
 +
calls that function to draw the label of the button. If you pass NULL, no label is drawn.
 +
 
 +
inUserData
 +
An unsigned 32-bit integer. Provide any data to be passed in to the callback functions specified in
 +
the inLabelProc and inEraseProc parameters. Pass NULL if you do not wish to provide any data.
 +
 
 +
Return Value
 +
A result code. See “Appearance Manager Result Codes”.
 +
 
 +
Discussion
 +
The DrawThemeButton function draws a theme-compliant button. If a ThemeEraseProcPtr is
 +
specified in the inEraseProc parameter, DrawThemeButton uses that function to erase the
 +
background of the button before drawing the button. After the button is drawn, if a
 +
ThemeButtonDrawProcPtr is specified in the inLabelProc parameter, DrawThemeButton calls
 +
that function to draw the button’s label.
 +
 
 +
Note that DrawThemeButton also draws any appearance adornments for the button and that these
 +
can extend beyond the button’s basic bounding rectangle, as specified in the inBounds parameter,
 +
and may be of variable shape. You may therefore wish to call the function
 +
GetThemeButtonBackgroundBounds to obtain the actual rectangle containing the pixels belonging
 +
to a button under the current theme.
 +
 
 +
Version Notes
 +
This function is available with Appearance Manager 1.1 and later.
 +
 
 +
Availability
 +
Available in CarbonLib 1.0 and later when Appearance 1.1 or later is present.
 +
Available in Mac OS X 10.0 and later.
 +
Declared In
 +
Appearance.h
 +
</pre>
 +
 
 +
====HIComboBoxCreate() documentation====
 +
 
 +
<pre>
 +
HIComboBoxCreate
 +
Creates a combo box control.
 +
 
 +
OSStatus HIComboBoxCreate (
 +
  const HIRect* boundsRect,
 +
  CFStringRef text,
 +
  const ControlFontStyleRec* style,
 +
  CFArrayRef list,
 +
  OptionBits inAttributes,
 +
  HIViewRef* outComboBox
 +
);
 +
Parameters
 +
boundsRect
 +
The bounding box of the control.
 +
 
 +
text
 +
The default text in the editable portion of the control. Can be NULL.
 +
 
 +
style
 +
The font style of the both editable text and the text in the disclosure list. Can be NULL.
 +
 
 +
list
 +
The default values available in the disclosure list. Can be NULL.
 +
 
 +
inAttributes
 +
The default attributes of the combo box. For possible values, see “Combo Box Attributes”.
 +
 
 +
outComboBox
 +
On exit, a pointer to a reference for the new control.
 +
 
 +
Discussion
 +
The combo box can be used in compositing mode, as well as traditional Control Manager mode.
 +
When created, this view is invisible. To see the view, you must show the view by calling HIViewSetVisible.
 +
</pre>
 +
 
 +
== What is used for Linux, Windows, Mac OS X ...build? ==
 +
 
 +
'''[[Description of the dependencies]]'''
 +
 
 +
'''[[Windows]]'''
 +
 
 +
'''[[MacOS X]]'''
 +
 
 +
'''[[Linux]]'''
 +
 
 +
'''[[Solaris]]'''
 +
 
 +
== Content of Aqua ==
 +
 
 +
'''[[Click here to see the complete list]]'''
 +
 
 +
 
 +
'''Content of vcl/inc'''
 +
 
 +
Notes:
 +
 
 +
1) Where to find includes
 +
 
 +
<foo/bar.hxx> 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. ;-)
 +
 
 +
2)
 +
suffix .h (for C calls or first version?) or .hxx (C++)
 +
 
 +
'''A) Family of includes''':
 +
 
 +
Looking more closely at the list brings to the fore (expression from dictionary ;-)) that include names are
 +
informatives. Most of the time, the name gives the function/role.
 +
What is interesting is the files with name begining with "sal". sal means System Abstraction Layer + include's function (or explicit name).
 +
 
 +
Partial list, for example:
 +
 
 +
salatype.hxx
 +
 
 +
salbmp.hxx
 +
 
 +
salctrlhandle.hxx
 +
 
 +
salctype.hxx
 +
 
 +
salframe.hxx
 +
 
 +
salgdi.hxx
 +
 
 +
salgeom.hxx
 +
 
 +
sallayout.hxx (main header for fonts services)
 +
...
 +
salmenu
 +
salnativewidgets
 +
...etc
 +
 
 +
Other important families are "sv" and "uno" or "win" (window) prefixed. sal family will be analysed apart.
 +
 
 +
'''B) Includes of includes'''
 +
 
 +
Some includes are more important than other. To prove this, just have a look is sufficient: some are always needed, and some more rarely.
 +
 
 +
To verify, a simple test to do in vcl/inc:
 +
 
 +
egrep -H "#include" ./* | wc -l  gives me 681 lines ! And some of them are the same...
 +
 
 +
To know more, the precedent command line can be modified to make appear the numerous call
 +
to the same includes files.
 +
 
 +
 
 +
egrep -H "#include" ./* | cut -d"#" -f2 | sort > liste.txt
 +
 
 +
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**
 +
 
 +
**see http://wiki.services.openoffice.org/wiki/Source_code_directories
 +
 
 +
 
 +
I'm nearly sure that a complete analysis of just this result will give us a lot of information.
 +
 
 +
I propose to change the order of analysis starting with dllapi.h and sv.h.
 +
 
 +
 
 +
 
 +
[to be continued]
 +
 
 +
'''B1) "sal" includes family'''
 +
 
 +
[[salinst.hxx]] This seems to be the main include file
 +
 
 +
[[salatype.hxx]]
 +
 
 +
[[salctrlhandle.hxx]]
 +
 
 +
[[salctype.hxx]]
 +
 
 +
[[salframe.hxx]]
 +
 
 +
[[salgdi.hxx]]
 +
 
 +
[[salgeom.hxx]]
 +
 
 +
'''[[ sallayout.hxx ]]''' <-- see Native Fonts implementation
 +
 
 +
[[salgtype.hxx]]
 +
 
 +
[[vcl/inc/salobj.hxx]]
 +
 
 +
 
 +
'''B2) Classicals includes'''
 +
 
 +
file: abstdlg.hxx [ means abstract dialog ]
 +
 
 +
This includes does contain the following classes definitions:
 +
 
 +
[FIXME]: choose a precise presentation template for classes
 +
 
 +
 
 +
VclAbstractDialog,
 +
 
 +
VclAbstractTerminateDialog,
 +
 
 +
VclAbstractRefreshableDialog,
 +
 +
VclAbstractDialogFactory,
 +
 
 +
 
 +
uses <tools/solar.h> , <tools/string.hxx> +
 +
 
 +
"dllapi.h"
 +
 
 +
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's and archs). Just including sal/config.h does it !
 +
 
 +
 
 +
Classes:
 +
 
 +
Window -> what? [FIXME]
 +
ResId -> what?
 +
 
 +
Does contain the prototype of VclAbstractDialog, inherit of VCL_DLLPUBLIC
 +
 
 +
 
 +
file: dllapi.h [ dll for dynamic linked library ]
 +
Uses: <sal/config.h> and >sal/types/h>
 +
includes: VCL_DLLPUBLIC macro
 +
 
 +
 
 +
file: accel.h [ means accelerator ]
 +
 
 +
Classes:
 +
 
 +
Accelerator
 +
{
 +
}
 +
ImplAccelEntry
 +
{
 +
public members:
 +
 
 +
Names
 +
 
 +
mnId
 +
maKeyCode
 +
mpAccel
 +
mpAutoAccel
 +
mbEnabled
 +
}
 +
 
 +
function / returns / parameters
 +
 
 +
ImplGetKeyCode / void / KeyFuncType eFunc, ref rCode1 , ref rCode2, ref rCode3
 +
 
 +
file: accel.hxx
 +
 
 +
Uses: <sv.h> , "dllapi.h" ,<tools/resid.hxx>, <<tools/rc.hxx>
 +
 
 +
 
 +
Classes:
 +
 
 +
ImplAccelData;
 +
ImplAccelEntry;
 +
 
 +
 
 +
== Important Links ==
 +
'''[[Progressive implementation]]'''
 +
 
 +
'''Native Font server Implementation''' '''[[Mac OS X Porting - Native Fonts]]'''
 +
 
 +
'''Native Sound Implementation''': [[Mac OS X Porting - Native Audio and Video]]
 +
 
 +
'''Native Printing Implementation''': [[Mac OS X Porting - Native_Printing]]
 +
 
 +
'''Drag and Drop implementation''': [[Mac OS X Porting - Native Drag and drop]]
 +
 
 +
'''Data Acquisition''': [[Mac OS X Porting - Data Acquisition]]
 +
 
 +
This work is part of http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s
 +
 
 +
[to be continued:-) ]
 +
 
 +
== Keyboard comparizon between OpenOffice.org / Mac OS X  application ==
 +
 
 +
[FIXME] redo a cleanest array
 +
 
 +
{| style="vertical-align:top; text-align:centered; background-color:#F0F0F0;"
 +
|- style="background-color:#99CCFF; font-weight:bold;"  
 +
| Modifier||+ key  || Result || TextEdit  returns
 +
|-
 +
|ALT|| a||æ ||æ  
 +
|-
 +
|ALT||b||ß ||ß
 +
|-
 +
|ALT||c||© ||©
 +
|-
 +
|ALT||d||∂ ||∂
 +
|-
 +
|ALT||e||ê ||ê
 +
|-
 +
|ALT||f||ƒ ||ƒ
 +
|-
 +
|ALT||g ||fi ||fi
 +
|-
 +
|ALT||h ||Ì ||Ì
 +
|-
 +
|ALT||i ||î ||î
 +
|-
 +
|ALT||j ||Ï ||Ï
 +
|-
 +
|ALT||k ||È ||È
 +
|-
 +
|ALT||l ||¬ ||¬
 +
|-
 +
|ALT||m ||µ ||µ
 +
|-
 +
|ALT||n ||~ ||~
 +
|-
 +
|ALT||o ||œ ||œ
 +
|-
 +
|ALT||p ||π ||π
 +
|-
 +
|ALT||q ||‡ ||‡
 +
|-
 +
|ALT||r ||® ||®
 +
|-
 +
|ALT||s ||Ò ||Ò
 +
|-
 +
|ALT||t ||† ||†
 +
|-
 +
|ALT||u ||º ||º
 +
|-
 +
|ALT||v ||◊ ||◊
 +
|-
 +
|ALT||w ||‹ ||‹
 +
|-
 +
|ALT||x ||≈ ||≈
 +
|-
 +
|ALT||y ||Ú ||Ú
 +
|-
 +
|ALT||z ||Â ||Â
 +
|-
 +
|ALT||A ||Æ ||Æ
 +
|-
 +
|ALT||B ||∫ ||∫
 +
|-
 +
|ALT||C ||¢ ||¢
 +
|-
 +
|ALT||D||∆||∆
 +
|-
 +
|ALT||F ||· ||·
 +
|-
 +
|ALT||G ||fl ||fl
 +
|-
 +
|ALT||H ||Î ||Î
 +
|-
 +
|ALT||I ||Î ||Î
 +
|-
 +
|ALT||J ||Í ||Í
 +
|-
 +
|ALT||K ||Ë ||Ë
 +
|-
 +
|ALT||L || <nowiki>|</nowiki> ||<nowiki>|</nowiki>
 +
|-
 +
|ALT||M ||Ó ||Ó
 +
|-
 +
|ALT||N ||ı ||ı
 +
|-
 +
|ALT||O ||Œ ||Œ
 +
|-
 +
|ALT||P ||∏ ||∏
 +
|-
 
|ALT||Q ||Ω ||Ω
 
|ALT||Q ||Ω ||Ω
|-
+
|-
|ALT||R ||‚ ||‚
+
|ALT||R ||‚ ||‚
|-
+
|-
|ALT||S ||∑ ||∑
+
|ALT||S ||∑ ||∑
|-
+
|-
|ALT||T ||™ ||™
+
|ALT||T ||™ ||™
|-
+
|-
|ALT||U ||ª ||ª
+
|ALT||U ||ª ||ª
|-
+
|-
|ALT||V ||√ ||√
+
|ALT||V ||√ ||√
|-
+
|-
|ALT||W ||› ||›
+
|ALT||W ||› ||›
|-
+
|-
|ALT||X ||⁄ ||⁄
+
|ALT||X ||⁄ ||⁄
|-
+
|-
|ALT||Y ||Ÿ ||Ÿ
+
|ALT||Y ||Ÿ ||Ÿ
|-
+
|-
|ALT||Z ||Å ||Å
+
|ALT||Z ||Å ||Å
|-
+
|-
|ALT||$ ||€ ||€
+
|ALT||$ ||€ ||€
|-
+
|-
|ALT||` ||@ ||@
+
|ALT||` ||@ ||@
|-
+
|-
|ALT||£ ||# ||#
+
|ALT||£ ||# ||#
|-
+
|-
|ALT||* ||¥ ||¥
+
|ALT||* ||¥ ||¥
|}
+
|}
 +
 
 +
Sous réserve d'erreur ou omission [[User:Ericb|Ericb]] 00:05, 14 January 2007 (CET)
 +
 
 +
== Register a new IRC channel ==
 +
 
 +
To register an IRC a channel, this one must exist
 +
 
 +
1)
 +
 
 +
'''/join #education.openoffice.org'''
 +
 
 +
-> if you are registered user, the channel is created
 +
 
 +
You have to register it :
 +
 
 +
help : /msg chanserv help register, returns :
 +
 
 +
'''/msg chanserv register #education.openoffice.org PASSWORD '''
 +
 
 +
( choose a password, and don't forget it ! )
 +
 
 +
3) to keep all customizations, you must set a guard
 +
 
 +
Help :  /msg chanserv help set, returns :
 +
 
 +
[10:53] -ChanServ- Syntax: SET <channel> <option> [parameters]
 +
 
 +
[10:53] -ChanServ-
 +
 
 +
[10:53] -ChanServ- Allows the channel contact or level 25 to set various
 +
 
 +
[10:53] -ChanServ- channel options and other information. All options may
 +
 
 +
[10:53] -ChanServ- be abbreviated, such as:
 +
 
 +
[10:53] -ChanServ- /msg ChanServ set #channel CONT newcontact
 +
 
 +
[10:53] -ChanServ- to set the CONTACT nickname to "newcontact".  For more
 +
 
 +
[10:53] -ChanServ- specific information on each option, type:
 +
 
 +
[10:53] -ChanServ- /msg ChanServ HELP SET <option>
 +
 
 +
[10:53] -ChanServ-
 +
 
 +
[10:53] -ChanServ- Available options:
 +
 
 +
[10:53] -ChanServ-
 +
 
 +
[10:53] -ChanServ-     CONTACT    Set the contact of a channel (contact)
 +
 
 +
[10:53] -ChanServ-     ALTERNATE  Set the alternate contact for the channel
 +
 
 +
[10:53] -ChanServ-     PASSWORD    Set the contact password (contact)
 +
 
 +
[10:53] -ChanServ-     MLOCK      Lock channel modes on or off
 +
 
 +
[10:53] -ChanServ-     TOPICLOCK  Restrict topic changes
 +
 
 +
[10:53] -ChanServ-     PRIVATE    Hide channel from ChanServ lists
 +
 
 +
[10:53] -ChanServ-     SECUREOPS  Stricter control of chanop status
 +
 
 +
[10:53] -ChanServ-     SECURE      Activate ChanServ security features
 +
 
 +
[10:53] -ChanServ-     ENTRYMSG    Send a message to users upon entry
 +
 
 +
[10:53] -ChanServ-     EMAIL      Set the channel email address
 +
 
 +
[10:53] -ChanServ-     URL        Set the channel url
 +
 
 +
[10:53] -ChanServ-     GUARD      Have ChanServ join your channel
 +
 
 +
[10:53] -ChanServ-     SPLITOPS    Let anyone keep ops from a netsplit
 +
 
 +
[10:53] -ChanServ-     VERBOSE    Notify chanops on access changes
 +
 
 +
 
 +
Correct command is :
 +
 
 +
'''/msg chanserv set #education.openoffice.org guard on'''
 +
 
 +
[11:01] >chanserv< set #education.openoffice.org guard on
 +
 
 +
[11:01] * ChanServ (ChanServ@services.) has joined #education.openoffice.org
 +
 
 +
[11:01] * irc.freenode.net gives channel operator status to ChanServ
 +
 
 +
Other commands :
 +
 
 +
Set me as contact :
 +
 
 +
'''/msg chanserv set contact eribc2'''
 +
 
 +
[10:59] >chanserv< set contact eribc2
 +
 
 +
/msg chanserv set #education.openoffice.org contact ericb2
 +
 
 +
[11:00] >chanserv< set #education.openoffice.org contact ericb2
 +
 
 +
Set security features on
 +
 
 +
'''/msg chanserv set #education.openoffice.org secure on'''
 +
 
 +
[11:03] >chanserv< set #education.openoffice.org secure on
 +
 
 +
[11:03] -ChanServ- Toggled Security for channel #education.openoffice.org [ON]
 +
 
 +
 
 +
Set Topic Lock on
 +
 
 +
'''/msg chanserv set #education.openoffice.org topiclock on'''
 +
 
 +
[11:04] >chanserv< set #education.openoffice.org topiclock on
 +
 
 +
[11:04] -ChanServ- Toggled Topic Lock for channel #education.openoffice.org [ON]
 +
 
 +
Channel ops
 +
 
 +
[11:05] -ChanServ- Toggled Verbose for channel #education.openoffice.org [ON]
 +
 
 +
[11:06] * ericb2 gives channel operator status to lgodard
 +
 
 +
'''/msg chanserv set #education.openoffice.org verbose on'''
 +
 
 +
[11:05]  >chanserv< set #education.openoffice.org verbose on
 +
 
 +
[11:05]  -ChanServ/#education.openoffice.org- ericb2!n=eric@aud25-1-88-166-8-11.fbx.proxad.net enabled notices of
 +
#education.openoffice.org access list changes
 +
 
 +
[11:05]  -ChanServ- Toggled Verbose for channel #education.openoffice.org [ON]
 +
 
 +
'''/msg chanserv  access #education.openoffice.org add ericb2 20 '''
 +
 
 +
[11:11]  >chanserv< access #education.openoffice.org add ericb2 20
 +
 
 +
[11:11]  -ChanServ- [ericb2] has been added to the access list for #education.openoffice.org with level [20]
 +
 
 +
[11:11]  -ChanServ/#education.openoffice.org- ericb2!n=eric@aud25-1-88-166-8-11.fbx.proxad.net ACCESS [#education.openoffice.org] ADD
 +
ericb2 20
 +
 
 +
[11:11]  -ChanServ- You have been added to the access list for #education.openoffice.org with level [20]
 +
 
 +
[11:11]  -ChanServ/#education.openoffice.org- ericb2!n=eric@aud25-1-88-166-8-11.fbx.proxad.net ACCESS [#education.openoffice.org] ADD
 +
lgodard 10
 +
 
 +
'''/msg chanserv  access #education.openoffice.org add rbircher 10  '''
 +
 
 +
[11:11]  >chanserv< access #education.openoffice.org add rbircher 10 
 +
 
 +
[11:11]  -ChanServ- [rbircher] has been added to the access list for #education.openoffice.org with level [10]
 +
 
 +
[11:11]  -ChanServ/#education.openoffice.org- ericb2!n=eric@aud25-1-88-166-8-11.fbx.proxad.net ACCESS [#education.openoffice.org] ADD
 +
rbircher 10
 +
 
 +
[11:13]  * ericb2 has changed the topic to: Welcome to education.openoffice.org project: The channel for the OpenOffice.org education Project.
 +
 
 +
Website : http://education.openoffice.org
 +
 
 +
[11:13]  >chanserv< access #education.openoffice.org add louis_to 10
 +
 
 +
[11:13]  -ChanServ- [louis_to] has been added to the access list for #education.openoffice.org with level [10]
 +
 
 +
[11:13]  -ChanServ/#education.openoffice.org- ericb2!n=eric@aud25-1-88-166-8-11.fbx.proxad.net ACCESS [#education.openoffice.org] ADD
 +
 
 +
louis_to 10
 +
 
 +
 
 +
Hope this help :)
 +
 
 +
 
 +
--[[User:Ericb|Ericb]] 15:00, 22 Jul 2005 (EDT)
 +
 
 +
[[Category:Porting]]
 +
[[Category:MacOSX]]
 +
[[Category:Aqua]]
 +
[[Category:Education]]
 +
 
 +
 
 +
= Avoid Warnings =
 +
 
 +
What follows is based on [http://bonsai.go-oo.org/cvsquery.cgi?treeid=default&module=all&branch=cws_src680_wae4extensions&branchtype=match&dir=&file=&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=all&mindate=&maxdate=&cvsroot=%2Fhome%2Fooweb%2Fcvsup wae4extensions],  [http://bonsai.go-oo.org/cvsquery.cgi?treeid=default&module=all&branch=cws_dev300_wae4binfilter01&branchtype=match&dir=&file=&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=all&mindate=&maxdate=&cvsroot=%2Fhome%2Fooweb%2Fcvsup wae4binfilter01], [http://bonsai.go-oo.org/cvsquery.cgi?treeid=default&module=all&branch=cws_dev300_wae4binfilter02&branchtype=match&dir=&file=&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=all&mindate=&maxdate=&cvsroot=%2Fhome%2Fooweb%2Fcvsup wae4binfilter02]  cws's.
 +
 
 +
 
 +
== Variables initialization in C++ ==
 +
 
 +
Associated typical warning :
 +
 
 +
 
 +
=== Why ===
 +
 
 +
C++ langage requests that variables are declared. Variables can be declared at any place (same in C, when using C99 standard). To use a variable, one has to define it, means give it a '''name''', AND a '''data type''' to be stored, then the compiler can reserve a memory location for it.
 +
 
 +
=== Define it ===
 +
 
 +
One variable can be defined as follow :
 +
 
 +
type Name_of_variable;
 +
 
 +
 
 +
Or, if ever there are several variables with the same type :
 +
 
 +
type Name_variable1, Name_variable2, ...;
 +
 
 +
Note: for readability reason, prefer one line per variable :
 +
 
 +
type Name_variable1;
 +
type Name_variable2;
 +
 
 +
Examples:
 +
 
 +
char my_character = 'B';
 +
short nValue = 10;
 +
 
 +
=== Initialize it ===
 +
 
 +
Variable declaration does only reserve a place for it, where store it. Until a value has been defined for it, this variable does contain a random value (garbage), what is not acceptable.
 +
 
 +
'''Good practice''', coupled with '''good Design''', consists in initilalize the variable, and the best moment is '''at declaration time'''.
 +
 
 +
Affectation operator is '''=''' , and the syntax is:
 +
 
 +
type Name_of_the_variable = value;
 +
 
 +
For  example :
 +
 
 +
float nFoo = 125.36;
 +
 
 +
=== Other cases (examples)  ===
 +
 
 +
==== Pointers ====
 +
 
 +
const String* pRet; // Bad
 +
 
 +
const String* pRet = NULL  ; //  Good: until &pRet is used, we have no content in pRet
 +
 
 +
==== Integers ====
 +
 
 +
Typical warning :
 +
 
 +
 
 +
Example of fix :
 +
 
 +
sal_Int16 nMode;  // Bad
 +
sal_Int16 nMode = 0;  // Good
 +
 
 +
==== Booleans ====
 +
 
 +
sal_Bool bParaSpace;  // bad -> random value, or whorst, the previous one will be used
 +
 
 +
sal_Bool bParaSpace = sal_False;  // good
 +
 
 +
==== Other examples (OpenOffice.org specific)  ====
 +
 
 +
== Ctors initialization in C++ ==
 +
 
 +
 
 +
Most of the issues we have, are due to a non matching order between the ctor in the interface, and the implementation.
 +
 
 +
Typical warning :
 +
 
 +
<pre>
 +
../../inc/bf_starmath/symbol.hxx: In constructor 'binfilter::SmSym::SmSym()':
 +
 
 +
../../inc/bf_starmath/symbol.hxx:102: warning: 'binfilter::SmSym::bDocSymbol' will be initialized after
 +
 
 +
../../inc/bf_starmath/symbol.hxx:96: warning:  'String binfilter::SmSym::aSetName'
 +
 
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_symbol.cxx:84: warning:  when initialized here
 +
 
 +
</pre>
 +
 
 +
As you can see, the order of the declaration in the prototype differs of the one in the implementation ( starmath_symbol.cxx for instance).
 +
 
 +
To avoid warnings, we must reorder the variables/members/functions initialization in the Ctor, in the .cxx, or in the header, but only in the case the initialization follows the definition (find such initialization in the header is basically strange or maybe wrong, but that's not the point)
 +
 
 +
For example :
 +
 
 +
<pre>
 +
Index: binfilter/bf_forms/source/component/forms_GroupManager.cxx
 +
===================================================================
 +
RCS file: /cvs/framework/binfilter/bf_forms/source/component/forms_GroupManager.cxx,v
 +
retrieving revision 1.8
 +
diff -u -r1.8 forms_GroupManager.cxx
 +
--- binfilter/bf_forms/source/component/forms_GroupManager.cxx 10 Apr 2008 07:46:20 -0000 1.8
 +
+++ binfilter/bf_forms/source/component/forms_GroupManager.cxx 6 May 2008 11:45:41 -0000
 +
@@ -100,8 +100,8 @@
 +
 +
//------------------------------------------------------------------
 +
OGroupComp::OGroupComp()
 +
- :m_nTabIndex( 0 )
 +
- ,m_nPos( -1 )
 +
+ :m_nPos( -1 )
 +
+              ,m_nTabIndex( 0 )
 +
{
 +
}
 +
</pre>
 +
 
 +
== Enumerations in C++ ==
 +
 
 +
When X cases are defined in an enumeration, and only several used in a switch, without a "default" case being defined, warnings are ttriggered at build time by the compiler.
 +
 
 +
Typical warnings (can be extremely verbose) !! ):
 +
 
 +
<pre>
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:
 +
 
 +
In member function 'void binfilter::SmXMLExport::ExportFont(const binfilter::SmNode*, int)':
 +
 
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946:
 +
 
 +
warning: enumeration value 'TEND' not handled in switch
 +
 
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946:
 +
 
 +
warning: enumeration value 'TLGROUP' not handled in switch
 +
 
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946:
 +
 
 +
warning: enumeration value 'TRGROUP' not handled in switch
 +
 
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946:
 +
 
 +
warning: enumeration value 'TLPARENT' not handled in switch
 +
 
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946:
 +
 
 +
warning: enumeration value 'TRPARENT' not handled in switch
 +
 
 +
</pre>
 +
'''[...  lot of lines including all other cases not handled in switch .. ]'''
 +
<pre>
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946:
 +
 
 +
warning: enumeration value 'TRDBRACKET' not handled in switch
 +
 
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946:
 +
 
 +
warning: enumeration value 'TUNKNOWN' not handled in switch
 +
 
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946:
 +
 
 +
warning: enumeration value 'TDEBUG' not handled in switch
 +
 
 +
</pre>
 +
 
 +
 
 +
Verbose warnings can be avoided simply adding :
 +
 
 +
  default:
 +
      break;
 +
 
 +
For example :
 +
 
 +
<pre>
 +
@@ -831,6 +830,8 @@
 +
/*N*/ case SC_CAT_INSERT_TABS :
 +
/*N*/ pDoc->DeleteTab( aRange.aStart.Tab() );
 +
/*N*/ break;
 +
+/*N*/      default:
 +
+/*N*/      break;
 +
/*N*/ }
 +
/*N*/ SetState( SC_CAS_REJECTED );
 +
/*N*/ RemoveAllLinks();
 +
</pre>
 +
 
 +
Be carefull: before to add default case, please verify you don't break the algorithm.
 +
 
 +
== Unused variables ==
 +
 
 +
Bad copy paste can lead to defined but never used variables -> compiler complains, and create warnings.
 +
 
 +
Typical warning :
 +
 
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_cfgitem.cxx: In member function 'binfilter::SmSym binfilter::SmMathConfig::ReadSymbol(binfilter::SmMathConfigItem&, const rtl::OUString&, const rtl::OUString&) const':
 +
 
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_cfgitem.cxx:412: warning: unused variable 'nTmp16'
 +
 
 +
 
 +
Solution:  see [http://wiki.services.openoffice.org/wiki/Writing_warning-free_code#Unused_parameters  unused parameters (Stephan Bergmann explanation)]
 +
 
 +
== Variables in catch blocks ==
 +
 
 +
A varialbe well defined and initialized, but put in catch block, can trigger warnings.
 +
 
 +
Solution: cast the variable using void type
 +
 
 +
For example :
 +
 
 +
@@ -3310,7 +3309,7 @@
 +
  }
 +
  catch(RowSetVetoException& eVeto)
 +
  {
 +
- eVeto;
 +
+ (void)eVeto; // makes compiler happy
 +
  throw;
 +
  }
 +
== Missing braces in arrays ==
 +
 
 +
Every compounded members of an array, must be inside round braces { }
 +
 
 +
Typical warning :
 +
 
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_sw/source/core/bastyp/sw_calc.cxx: At global scope:
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_sw/source/core/bastyp/sw_calc.cxx:181: warning: missing braces around initializer
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_sw/source/core/bastyp/sw_calc.cxx:181: warning: missing braces around initializer
 +
...
 +
 
 +
... lot of lines, typically one per line in the array
 +
 
 +
 
 +
For example :
 +
 
 +
<pre>
 +
Index: binfilter/bf_sw/source/core/bastyp/sw_calc.cxx
 +
===================================================================
 +
RCS file: /cvs/framework/binfilter/bf_sw/source/core/bastyp/sw_calc.cxx,v
 +
retrieving revision 1.10
 +
diff -u -r1.10 sw_calc.cxx
 +
--- binfilter/bf_sw/source/core/bastyp/sw_calc.cxx 10 Apr 2008 15:13:22 -0000 1.10
 +
+++ binfilter/bf_sw/source/core/bastyp/sw_calc.cxx 6 May 2008 11:45:49 -0000
 +
@@ -150,34 +150,34 @@
 +
};
 +
 +
_CalcOp __READONLY_DATA aOpTable[] = {
 +
-/* ACOS */    {sCalc_Acos, CALC_ACOS},  // Arcuscosinus
 +
-/* ADD */    {sCalc_Add,        CALC_PLUS},  // Addition
 +
-/* AND */    {sCalc_And,        CALC_AND},  // log. und
 +
-/* ASIN */    {sCalc_Asin,      CALC_ASIN},  // Arcussinus
 +
-/* ATAN */    {sCalc_Atan,      CALC_ATAN},  // Arcustangens
 +
-/* COS */    {sCalc_Cos,        CALC_COS},  // Cosinus
 +
-/* DIV */    {sCalc_Div,        CALC_DIV},  // Dividieren
 +
-/* EQ */      {sCalc_Eq,        CALC_EQ},  // gleich
 +
-/* G */      {sCalc_G,          CALC_GRE},  // groesser
 +
-/* GEQ */    {sCalc_Geq,        CALC_GEQ},  // groesser gleich
 +
-/* L */      {sCalc_L,          CALC_LES},  // kleiner
 +
-/* LEQ */    {sCalc_Leq,        CALC_LEQ},  // kleiner gleich
 +
-/* MAX */    {sCalc_Max,        CALC_MAX},  // Maximalwert
 +
-/* MEAN */    {sCalc_Mean,      CALC_MEAN},  // Mittelwert
 +
-/* MIN */    {sCalc_Min,        CALC_MIN},  // Minimalwert
 +
-/* MUL */    {sCalc_Mul,        CALC_MUL},  // Multiplizieren
 +
-/* NEQ */    {sCalc_Neq,        CALC_NEQ},  // nicht gleich
 +
-/* NOT */    {sCalc_Not,        CALC_NOT},  // log. nicht
 +
-/* OR */      {sCalc_Or,        CALC_OR},  // log. oder
 +
-/* PHD */    {sCalc_Phd,        CALC_PHD},  // Prozent
 +
-/* POW */    {sCalc_Pow,        CALC_POW}, // Potenzieren
 +
-/* ROUND */  {sCalc_Round,      CALC_ROUND}, // Runden
 +
-/* SIN */    {sCalc_Sin,        CALC_SIN},  // Sinus
 +
-/* SQRT */    {sCalc_Sqrt,      CALC_SQRT}, // Wurzel
 +
-/* SUB */    {sCalc_Sub,        CALC_MINUS}, // Subtraktion
 +
-/* SUM */    {sCalc_Sum,        CALC_SUM},  // Summe
 +
-/* TAN */    {sCalc_Tan,        CALC_TAN},  // Tangens
 +
-/* XOR */    {sCalc_Xor,        CALC_XOR}  // log. xoder
 +
+/* ACOS */    {{sCalc_Acos}, CALC_ACOS},  // Arcuscosinus
 +
+/* ADD */    {{sCalc_Add},        CALC_PLUS},  // Addition
 +
+/* AND */    {{sCalc_And},        CALC_AND},  // log. und
 +
+/* ASIN */    {{sCalc_Asin},      CALC_ASIN},  // Arcussinus
 +
+/* ATAN */    {{sCalc_Atan},      CALC_ATAN},  // Arcustangens
 +
+/* COS */    {{sCalc_Cos},        CALC_COS},  // Cosinus
 +
+/* DIV */    {{sCalc_Div},        CALC_DIV},  // Dividieren
 +
+/* EQ */      {{sCalc_Eq},        CALC_EQ},  // gleich
 +
+/* G */      {{sCalc_G},          CALC_GRE},  // groesser
 +
+/* GEQ */    {{sCalc_Geq},        CALC_GEQ},  // groesser gleich
 +
+/* L */      {{sCalc_L},          CALC_LES},  // kleiner
 +
+/* LEQ */    {{sCalc_Leq},        CALC_LEQ},  // kleiner gleich
 +
+/* MAX */    {{sCalc_Max},        CALC_MAX},  // Maximalwert
 +
+/* MEAN */    {{sCalc_Mean},      CALC_MEAN},  // Mittelwert
 +
+/* MIN */    {{sCalc_Min},        CALC_MIN},  // Minimalwert
 +
+/* MUL */    {{sCalc_Mul},        CALC_MUL},  // Multiplizieren
 +
+/* NEQ */    {{sCalc_Neq},        CALC_NEQ},  // nicht gleich
 +
+/* NOT */    {{sCalc_Not},        CALC_NOT},  // log. nicht
 +
+/* OR */      {{sCalc_Or},        CALC_OR},  // log. oder
 +
+/* PHD */    {{sCalc_Phd},        CALC_PHD},  // Prozent
 +
+/* POW */    {{sCalc_Pow},        CALC_POW}, // Potenzieren
 +
+/* ROUND */  {{sCalc_Round},      CALC_ROUND}, // Runden
 +
+/* SIN */    {{sCalc_Sin},        CALC_SIN},  // Sinus
 +
+/* SQRT */    {{sCalc_Sqrt},      CALC_SQRT}, // Wurzel
 +
+/* SUB */    {{sCalc_Sub},        CALC_MINUS}, // Subtraktion
 +
+/* SUM */    {{sCalc_Sum},        CALC_SUM},  // Summe
 +
+/* TAN */    {{sCalc_Tan},        CALC_TAN},  // Tangens
 +
+/* XOR */    {{sCalc_Xor},        CALC_XOR}  // log. xoder
 +
};
 +
 +
double __READONLY_DATA nRoundVal[] = {
 +
 
 +
</pre>
 +
 
 +
== Missing parenthesis around a boolean expression in an '''if''' ==
 +
 
 +
 
 +
Typical warning :
 +
 
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx: In member function 'void binfilter::SmXMLExport::ExportBrace(const binfilter::SmNode*, int)':
 +
 
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3832: warning: suggest parentheses around assignment used as truth value
 +
 
 +
For example :
 +
 
 +
@@ -178,7 +178,7 @@
 +
{
 +
    if ( ppPrev )
 +
    {
 +
-      if ( *ppPrev = pNext )
 +
+ if ( (*ppPrev = pNext) )
 +
 
 +
 
 +
== Comments interlaced (/* between /* and */) ==
 +
 
 +
/* */ is C comment and is not the best in C++ files. The problem is two C like comments cannot be interlaced.
 +
 
 +
When occuring, a warning is triggered
 +
 
 +
Typical warning :
 +
 
 +
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_sfx2/source/doc/sfx2_objxtor.cxx:151:1: warning: "/*" within comment
 +
 
 +
Example of solution :
 +
<pre>
 +
 
 +
Index: binfilter/inc/bf_sw/unoobj.hxx
 +
===================================================================
 +
RCS file: /cvs/framework/binfilter/inc/bf_sw/unoobj.hxx,v
 +
retrieving revision 1.7
 +
diff -u -r1.7 unoobj.hxx
 +
--- binfilter/inc/bf_sw/unoobj.hxx 11 Apr 2008 02:48:42 -0000 1.7
 +
+++ binfilter/inc/bf_sw/unoobj.hxx 6 May 2008 11:45:59 -0000
 +
@@ -584,7 +584,7 @@
 +
    virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
 +
                  const ::com::sun::star::uno::Reference
 +
                  < ::com::sun::star::beans::XVetoableChangeListener >& aListener )
 +
                  throw(
 +
                        ::com::sun::star::beans::UnknownPropertyException,
 +
                        ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException
 +
                  );
 +
 +
};
 +
-/*-----------------20.03.98 08:26-------------------
 +
+//-----------------20.03.98 08:26-------------------
 +
 +
--------------------------------------------------*/
 +
/* das wird zunaechst nicht gebraucht - bisher fuer den XPropertySetCloner
 +
 
 +
</pre>
 +
Note: the code has been modified for readability reason.
 +
 
 +
== Todo ==
 +
 
 +
Have a deeper look into potential students applications around sc :
 +
 
 +
http://wiki.services.openoffice.org/wiki/Calc/Implementation/Spreadsheet_Functions
 +
 
 +
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office-formula
 +
 
 +
http://wiki.oasis-open.org/office/Formula_Work
 +
 
 +
http://wiki.services.openoffice.org/wiki/Calc/ODFF_Implementation/Schedule
  
Sous réserve d'erreur ou omission [[User:Ericb|Ericb]] 00:05, 14 January 2007 (CET)
 
  
 +
== Links ==
  
 +
[http://www.cplusplus.com/doc/tutorial/variables.html Variables: Tutorial]
  
--[[User:Ericb|Ericb]] 15:00, 22 Jul 2005 (EDT)
+
== Backup ==
  
[[Category:Porting]]
+
[[User:Ericb/backup]]
[[Category:MacOSX]]
 
[[Category:Aqua]]
 

Latest revision as of 08:48, 9 December 2011

Public Documentation License Notice

The contents of this Documentation (excepted Native Port Roadmap),are subject to the Public Documentation License Version 1.0 (the "License"); 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. The Original Documentation is "Mac OS X native port". The Initial Writer of the Original Documentation is (JCA) Eric Bachard (C) 2005-2006. All Rights Reserved. (Initial Writer contact(s): ericb@openoffice.org.)

My contributions to OpenOffice.org (the most recents, the first listed)

Integrated

Alle the cws's I contributed for OpenOffice.org Project (means commit in the cws, and/or as cws owner)

Integrated in m50 DEV300 

Integrated in m42 DEV300 

Integrated in m40 DEV300 


Integrated in m38 DEV300 

  • CWS DEV300 macmenusquit   : this cws aims to remove the useless " Quit ", "About", "Tools->Options" entries in the menus, on Mac OS X Aqua only

Integrated in m35 DEV300 

Integrated in m26 DEV300 

Integrated in m23 DEV300  and m3 BEB300 

  • CWS aquavcl08   : fixes drag&drop crashes, CJK enhancements, copy&paste fixes, drawing fixes, multimonitor fixes, etc.

Integrated in m22 DEV300 

Integrated in m6 DEV300 

Integrated in m2 DEV300 

Integrated in m243 SRC680 

Integrated in m238 SRC680 

Integrated in m233 SRC680 

Integrated in m229 SRC680 

Integrated in m228 SRC680 

Integrated in m227 SRC680 

Integrated in m223 SRC680 :

Integrated in m222 SRC680  :

Integrated in m221 SRC680 :

Integrated in m219 SRC680 :

  • CWS SRC680 salaquatox11  : Include sal changes we did in aquavcl01 into normal milestone, and verify X11 build works too using them, avoiding break in others OS. Means : remove systools/macxp_extras + files inside add osxlocale object in libuno_sal and build it remove libsalsystool (was macosx only ), simplify locale detection, protect other OS from the changes

Integrated in m217 SRC680 :

Integrated in m212 SRC680 :

Integrated in m200 SRC680 :

Integrated in m187 SRC680 :

Integrated in m180 SRC680 :

Integrated in m177 SRC680 :

  • CWS SRC680 macosxkbd  : Fix caplocks bug when +kb extension is used to start X11, hardcode mod5 remap for ALT key and remove +kb extension

Integrated in m176 SRC680 :

OpenOffice.org using Debian or Ubuntu distribution

Integrated in m170 SRC680 :

  • CWS SRC680 macosxfondu2  : Implement fondu and X11 check for Mac OS X. Include fondu in OOo for Mac OS X to automatically extract natives fonts

Integrated in m159 SRC680 :

Integrated in m156 SRC680 :

Integrated in m146 SRC680 :

Integrated in m2 SRC680 :

  • CWS SRC680 macosx11  : Important Mac OS X fix for Java 1.4.2 AWT +fix for correct portaudio detection in configure +fix for problem when query for locale or ui language fails +fix for avmedia player crashes (using external JMF) + fix for --without-nas detection in configure

Integrated in m125 SRC680 :

  • CWS SRC680 macosx10  : Builds and smoketests executed successfully under Solaris, Linux, Windows, Mac OS X

Integrated in m53 SRC680 :

Integrated in m118 SRC680 :

  • CWS SRC680 linuxppc04  : export JITC_PROCESSOR_TYPE=6 for the build env on Linux/powerpc, IBMs JDK needs it + epm patch for Debian has to be modified


Integrated in m114 SRC680 :

Integrated in m112 SRC680 :

Integrated in m110 SRC680 :

Integrated in m107 SRC680 :

  • CWS SRC680 macosx07  : Some fixes for Mac OSX port : enable UTF-8 for filenames and dirnames, make use of scanner available, other fixes in extensions ... [to be completed]

Integrated in m103 SRC680 :

Integrated in m101 SRC680 :

Integrated in m98 SRC680 :

Close for development



  • CWS DEV300 eraser01   (soon RfQA) : extra feature for the Impress : can use the pen, change the color, erase ..and so on using the HP Tablet PC

Work in progress, or planned




  • CWS DEV300 appleremote03   (created) : try to make the contextual menus work in Impress presentation mode with Apple remote



  • CWS DEV300 ogltrans4mac   (works already, yet some work in progress) : make the OpenGL transitions work with the Aqua version of OpenOffice.org

FIXME: add some other cws's not listed

Education Project

Ericb.jpg

The new page is there:

Education Project

Project EDUCATION-ch

fr-EDUCATION

Education_ClassRoom

Education_Applications

IRC meetings for Education project is there :

Education IRC meetings

Strategy for Education project

  • create a bridge between Education world and OpenOffice.org project
  • find developers for OpenOffice.org project

Social contract

  1. Create an Education Team for OpenOffice.org project
  2. Create a network of contacts (e.g. Academic contacts in France )
  3. Valorize and support Education Community

Visibility

  1. Website
  2. Be present in important events FIXME: write a list ...
  3. Blogs
  4. Lists
  5. IRC
  6. Schools and sponsors

Content

  1. Provide pedagogical tools
  2. Provide howtos for migrations in schools
  3. Provide courses as school cases of applications or writingcode ( existing cases)

Knowledge

  1. Connect with other projects
  2. Define a pool of devs and resources
  3. Separate tools learning and pure code learning
  4. Create courses with identified levels


FOSDEM 2008

Draft will be completed once sure expenses will be funded

Draft of existing cases

Existing cases and thoughts about them ...

 + A is a student who is doing advanced studies (possibly computer science/engineering) and is well up with Java and C -
> A wants to know what can be the steps towards becoming a contributor to bits of OO.o where a difference can be made

skills : be computer science/engineering

Now: possible

Important: only a few students can be mentored, because ot lack of resources

About C skills:

There is some C in sal, and in some other places in OpenOffice.org source code (mainly tools or external tools). For Java there is ~ 5% max of Java code, C++ does represent 90% of the source code of OpenOffice.org There are some Python , bash and objective-C ( in Aqua version) too, but just a bit. C language, even advanced, is not a bad thing, but OpenOffice.org source code is more Academic C++ (not sure of the term) than C.

First steps : learn C++, learn coding guidelines in OpenOffice.org project (they are existing documents on the wiki), learn stl use, and learn the sources organisation. Then learn the code present in some extensions, learn how trace OpenOffice.org using a debugger, or try to fix some bugs, and finally experiment is imho the next step.

The real case is not exactly turned like that :

Either the student has a precise idea of what he wants to contribute for. e.g. : implement a new feature in writer, or help for porting project, or .. (other application)

... or the application is already existing (there are some applications already proposed (Just not the link in mind right now)


In the first case, the steps could be :

- choose an OS (e.g. Linux prefered, for soupleness) , and learn what happens when OpenOffice.org Framework is built. - learn how modules are organized ( why such f.. organization ? ) - when sw ( means Star Writer ) is built, understand what are the dependencies, how link, what must be built before, where are all part used by writer.

Once everything is in place, then learn writer source code. Lot of lines ( really ! )

Missing: learn OpenOffice.org tools, cvs, cwstools, bonsai, LXR, EIS, how commit, what a cws is, OpenOffice.org scheduling .. and so on, like write a documentation for the next students to come, following the golden rule : not redo over and over ..

This would need IMHO a lot of time. With the little experience I have with Google Summer of code, imho several months are mandatory.

Second case: help porting project

- learn how build OpenOffice.org ( yes, before to test some new feature, you need a working set) - discover vcl - learn how it works, (virtual classes, implementation OS dependant ... etc ) , some other fun - understand what is the problem ( bind an OS over virtual - empty - boxes) and start (uff) to work for what he wanted to contribute for .. long time ago.

(same next steps .. )

Third case :

... etc. Other possibilities: implement UNO services. Means learn (again) how build an installset, understand what offapi does contain, and what is the role of all those interfaces. Learn examples (lot of time, and code and energy) and finally, implement the new feature.

( same next steps )

Jürgen Schmidt will complete, since he's a better specialist than me there ( please add how create a new extension case too ;-)

As summary, the common denominator is:

- learn how build OpenOffice.org framework - learn alone such tools is not possible, and one mentor must be there - OpenOffice.org developers are paid for a lot of things, and that's not easy to bother them for everything randomly.

I think, one student, one dedicated dev like Jürgen or me, or you maybe to accompagn him.

If you see a shorter way to produce an OpenOffice.org developer, please tell me :-)

 + B is a professor who is in charge of a class of students tasked with doing a credit based FOSS project and B would really like for OO.o to
 help tell how the students can be involved

See above, this is similar to A. Just the professor will have more autonomy and add interesting point of views in discussions ... and maybe will propose improvements, or find some issues.

This is the prefered case, because we valorize a professor, a student, a school and the project.

 
+ C is an artist and C wants to contribute to OO.o's art effort but is not sure if Education Project is the way to go

We can help too. but this would be limited to OpenOffice.org projeect introduction, orient these artist on art project, how register, .etc. The list combined to IRC is perfect. Start now is possible.

 + D is a senior student trying to coach juniors into understanding how FOSS projects work and thinks teaching them to triage bugs would be
> awesome - can this project help D ?

Yes, sure.

We can welcome, explain the project, discover together, and show examples of issues. I know some, but we certainly will have to define better how proceed.

+ E is a fresher in pre-college who has used OO.o, knows something about Linux and FOSS and thinks that there are ideas that can be proposed to
> enhance the user experience - should E get in touch with Education Project ?

I think we can welcome, explain OpenOffice.org project, orient and ask in return to the newcomer to write what he learned with us, preparing the next student in the same case.

This is another important example we should take care: User Experience is extremely important and we have a lot of work before to pretend welcome E case.

Needs some work

 + F is a freelance developer good in Python and wants to create extensions that would also allow a business to be wrapped around that

Jürgen .. please help me :-)


Other cases :

A professor/teacher wrote a tool, including pedagogical notice about it, and wants to share it

A professor/teacher is searching what does exist

A professor/teacher wants to install OpenOffice.org on a network for his job

Mac OS X Native port

**see http://contributing.openoffice.org/index.html

Mac OS X Porting - Apple Remote implementation


Native Port Roadmap

Image31_mini.png

2006

  • June 2006: work in progress

- Basis: frame, instances, threads, drawing, painting, resizing (Stephan Schaefer, Tino Rachui)

Done: 
implement threads
create, manage instance
create, manage windows (including parents)
create, manage events
create manage drawing, resizing
create, add menus (Pavel Janik)
toggle window fullscreen (Pierre de Filippis)
make font server work (Stephan Schaefer)
  • Current status font support (Stephan Schaefer, 2006/07/28): the following features are basically working now
    • font selection
    • font size
    • simple font attributes (bold, italic)
Next step: document first part, and propose design

- native filepicker (Pavel Janik, Florian Heckl)

- native printing implementation (Oliver?)

- native font implementation (Eric Bachard)

  • September 2006:

- first proofs of concept: fonts, filepicker .. (more?) - show the results (OOoCon 2006?)

2007

  • January 2007: first alpha implementation

Strategy for native port

Possible Actions:

Identify us:

  1. Complete the arrays below
  2. Update photos on frapr.com?

Share the work:

  1. Divide the work between little Teams
  2. Update Todo list regularly -> needs some love these days ... [1]

Help:

  1. Teach tools between us
  2. Do a debug party on IRC
  3. write documentation

Meet us:

  1. IRC
  2. Mac Meeting (like nov2005 in Hamburg?)

Inform:

  1. Update website regularly
  2. Blogs


WHO:

Mac Team:

Developer \ skills build write code code review debug/trace (higher is better) contribute to documentation
ericb x x 1 x
pjanik
ssa
maho
tinor
schmidtm
ebischoff
obr
cl
aliscafo
fheckl
Fridrich
plipli x x


Other resources:

fonts:?

events:?

QA: James McKenzie leads QA for the Mac OS X port of OpenOffice.org and is looking for volunteers to spread this effort over several people and needs people from all over the world to test various languages.

graphical:?

Communication:?


WHAT: Status of most important tasks

Task Names Urgency (1=higher) Work in Progress Done Code review Debug Integration
Get rid of X11 done 1 x x
Bundle 1 x
Drawing 1 x
Fonts plipli 1 x
Events management 2 x
Controls (see list) ericb, aliscafo 2 x
Native FilePicker Florian Heckl, Pavel Janik 3 x x
Native Printing Yvan Barthelemy 3 x
Native SpellChecker 4
Player 4


Other tasks:

Help for writing bug lists, status of bugs ..etc

Write howto use gdb, leaks, other tools

WHEN:

From Christian Lippka (last meeting, 25th of august 2006):

Aug 26 00:21:38 ChristianL
from my point of view what is missing for point 1:
text layout, complete font support, keyboard support,
fixing repaint issues, having aqua install and run out of the box

September 2006

Present the current state of the project at the 2006 OpenOffice conference in Lyon and Paris

Late 2006

fix OpenOffice.org launch fix drawing (repainting) Implement missing methods and fix most important bugs (mainly the one leading to crash) in: ATS Salgraphics Salinstance

January or February 2007

make Java work (works partially) make intensive debug present something working as alpha

June 2007

Implementation of: native filepicker native printing

Become a Domain Developer for Mac OS X port (or other)

People regularly contributing to Mac OS x port with regular and quality patches are, after proposal, invited to become a DomainDeveloper.

The purpose of this document is to clearly define all the steps to become a DomainDeveloper.


Preliminary: step 1 in Commit_Rights must be completed and checked, and you must be in the list of [JCA Licensed people]

Steps for ssh2 key to be uploaded

Create the key

Everything is described here: [SSH Guide]

Upload the key

You must create an issue, like described below :

Assign it to "ssh2key" in the "www" component

Sub Component: openoffice.org cvs

Title: CVS Commit access request

Add louis (Louis Suarez Potts) or st (Stefan Taxhet) on CC

Upload your ssh2 public key respecting the process (Attach a DSA key, not an RSA)

A project lead will confirm your request

Then the support will upload your key

Once done the issue is set to Fixed , and the next step has to be verified before you close it.

EXAMPLE: [Upload SSH2 Key for Etsushi Kato]

Verify it works

You now can try to connect via tunnel, and follow instructions given [SSH Guide]

If something goes wrong, ask for help to support, with a maximum of details, to solve the problem.

Once it works, the issue can be closed, and you can e.g. test downloading a module from tunnel repository :

First create a tunnel with the command:

ssh -2 -x -L 2401:localhost:2401 tunnel@openoffice.org

Then in a new window:

export CVSROOT=":pserver:your_login@localhost:/cvs"

cvs login (enter)

(your password)

mkdir TEST

cd TEST

cvs -z4 co -r SRC680_m205 vcl 

cd vcl 

cat CVS/Root  -> should indicate: your local repository

Ask for CVS access for all modules required

Two steps: create an issue is mandatory because the concerned project is tools, and because people can have only ssh2 key without being DomainDeveloper.

Create an issue

You must create an issue, described below :

Component: tools

Sub Component: www

Title: CVS access to all modules required

Assigned to mh + CC for ericb and/or pjanik

Present yourself quickly, and ask the access

A project lead will confirm

An admin will confirm this is ok, and set the issue to Fixed


EXAMPLE: [CVS Access all modules for Etsushi Kato]

Verify

Create the tunnel :

open a terminal and type :

ssh -2 -x -L 2401:localhost:2401 tunnel@openoffice.org

once logged in, open a new terminal, and do (for example):

cd $OOO_SRC_ROOT/

source MacOSXPPCEnv.Set.sh  { source MacOSXX86Env.Set.sh for Mac Intel }

cd vcl  (for example)

IMPORTANT: be sure vcl has been checked from tunnel, not from anoncvs (cat CVS/Root will give you the answer)

export CWS_WORK_STAMP=aquavcl01   # Only needed for working with [[EIS]], can change for a different CWS ;) 

cd aqua/source/gdi

add your changes to your_file.cxx, then commit :

cvs commit -m "#i75689# bla bla ... the reason of the modification(s)"  your_file.cxx  # The #i75689# is an issue number in the tracker

cvs update

If nothing is wrong, cvs update should not return M for your_file.cxx, means the commit is successfull.

In case of problem, use the issue until it is fixed


Welcome aboard :)

Mac port and WWDC2008

Mac OS X porter Team at WWDC 2008

What is WWDC 2008?

See Apple WWDC 2008

Our needs with Aqua version

  • Compile on Intel for PPC (if time UB) [ ]
  • Proxy icon in the title bar [ ]
  • Use of the apple remote, especially for presentations [7]
  • Printing to PDF to keep links in the same way as iWork does it. [8]
  • Translating the native dialogs to the Community supported languages (that Apple doesn't support).
  • Compiling on Leopard to run on Tiger. Note: QuickLook plugin ( from quicklookplugin01 cws) builds on tiger [9]
  • Import/Export of iWork documents [10]
  • Signing OpenOffice.org .app bundle.
  • Localize the voice for accessibility features ? (only english available for Voice Over at the moment)
  • Implement the native Color Picker


Interesting Labs

Accessibility Lab (ericb selection)

Receive one-on-one technical assistance on using the Accessibility API and making your application accessible. Whether you are access-enabling your application or developing an application that uses assistive technolgies, this is the lab to attend to get advice and answers to your questions. Bring your code, your laptop, and your questions.

Advances in Modern OpenGL

Understand how advances in OpenGL unlock the rendering power of the GPU. Tackle GPU-based vertex and fragment processing with the OpenGL Shading Language (GLSL) and use the most current capabilities of OpenGL to modernize your code. Learn techniques for integrating the high-performance 3D graphics pipeline with the other graphics frameworks on Mac OS X. A must-attend session for Mac OpenGL developers to learn how to take advantage of the recent innovations in graphics hardware.

Apple Help Lab

Receive one-on-one technical assistance with Apple Help integration, content authoring, and troubleshooting from Apple Help engineers and content writers. Bring your laptop, your code, your Help content, and your questions.

Assigning Your Application an Identity with Code Signing

Code signing in Mac OS X allows the Keychain and other operating system features to verify your application's ownership without prompting your users--even after you've updated your application. Find out how digitally signing your application ensures the integrity of your code and enables the system to recognize and alert users to unauthorized changes. Learn how to sign your applications, how signed applications work and how signing improves security and your customers' experience.


Cocoa Open Lab

Get expert one-on-one assistance from the Cocoa engineering team, DTS engineers, and Technology Evangelists on Cocoa topics. Bring your laptop, your code, and your questions.


Image Capture, Manipulation, and Display with Image Kit

Image Kit provides Cocoa developers with a straightforward interface for common image handling tasks. Discover how easily you can equip your application with image capture, browsing, viewing, import, adjustment and presentation, all within a crisp and consistent user experience. Learn how to apply image processing filters for lightweight image editing, how to capture images from the camera and how to assemble an enhanced image browser. An important technology for Cocoa developers who want to handle photos and other media in their Mac OS X applications.

Image Kit Lab

Work directly with the Image Kit engineering team to add image browsing, viewing, capture, adjustment and presentation to your Cocoa application. Bring your laptop, your code and your questions.

OpenGL on the Mac Lab

Meet with members of the OpenGL engineering team to dig deeper into desktop OpenGL features and profiling. Bring your laptop, your code and your questions.

Spotlight and Quick Look Lab

Meet one-on-one with Spotlight and Quick Look engineers to see how much these technologies have in common and polish your use of them. Make sure your document declarations are correct and your plug-ins are as fast and lightweight as possible. Bring your laptop, your code, and your questions.


Interesting presentations

  • Performance Tuning Your Application with Shark
  • Making Your Application Scriptable
  • Managing X.509 Certificates and Digital Identities

ericb's Agenda

The rule is extremely simple: bring your laptop, your code, and ask :)

Days monday
June 9
tuesday
June 10
wednesday
June 11
thursday
June 12
friday
June 13
Morning 10:00 am
Keynote
Presidio
Afternoon 2:00 pm -3:15 pm
Mac OS X
State of the Union
(Presidio)
3:30 pm - 4:45 pm
Developer Tools
State of the Union
(Presidio)
5:00 pm - 6:15 pm
Graphics & Media
State of the Union
(Presidio)
6:30 pm - 7:30 pm
WWDC
Welcome Reception

Labs Agenda

It is extremely important to organize us for Labs.

The rule is extremely simple: bring your laptop, your code, and ask :)

Days monday
June 9
tuesday
June 10
wednesday
June 11
thursday
June 12
friday
June 13
Labs Morning
Labs Afternoon

Interesting Labs

The complete list: Mac OS X Essentials

Our Objectives at the WWDC 2008

1) Connection OOo Mac team / Apple engineers

-Goal 1.1: "Get infos, contacts, human to human conversation :-)"

-> Present our current work, methods and team to Apple people :

-> Meet them during WWDC: give us/them a face, keep contacts

-> Get their impression about what we have already done and what is still ToDo


2) Improve from Apple's engineers expertise

-Goal 2.1: "Give MacOS X users the OOo suite they deserve"

=> As mac platform and apple's product fans, we are proud to bring the quality and power of OOo to mac users community
=> Make OOo uses all the power of Mac OSX, including upcoming Leopard !

-Goal 2.2: "OO.org Mac port has to be as Apple HIG compliant as possible"

=> Define what is expected for User Interface of OpenOffice.org suite with people from Apple UI project
- FYI: Last year, Apple UI project proposed ericb to help us, once our native menus will be working. 
  This is now done.


3) Get code guidelines, tips, samples

-Goal 3.1: "Ask for code review and find code snippets"



-Goal 3.2: "Attend key Labs and Sessions to get full overview of Tiger/Leopard/Core's and useful code"

- Image capture
- Key signing (digital signature, to avoid Mozilla bazaar 
- Apple Remote


4) Social Contacts / Team emulation

Try to contact Pierre de Filippis, Sébastien Plisson and some other frenchies :)

-> Discuss and meet new developers and / or american people working for Mac OS X port (like Michael Sicotte, other..) -> Share ideas, tips, conviviality !


5) Visibility

OpenOffice.org Native Mac port has to be recognized as the professionnal office suite for Mac users it is !

Who?

  • Michael Sicotte
  • Eric Bachard
  • Philipp Lohmann

Todo list

Please add topics, technical questions you would see asked by attendees to Apple engineers during WWDC

Suggestions for current issues to be fixed

(ericb)

I am volunteer to take over what follows:

  • Find information about SpotLight and QuickLook ( what happens with our generator ? How improve it ?)
  • Find information about Image Capture : API obsolete on Tiger, under NDA on Leopard ... can we trust 10.4 sources ?
  • Apple remote implementation

Travel

  • describe the schedule of the travel

ericb :

Basel -> Paris -> SF:  7th of June    SF scheduled arrival: 12:30 
SF -> Paris -> Basel:  13th of June (arrival 17th)  SF departure for the return:  3:30 pm

Hotel: Hotel des Arts (close to Union Square)

Airport to Hotel transportation: (BART) not included


Michael Sicotte:


To be completed


Philipp Lohmann:


To be completed

Misc

  • don't forget sector adaptator for laptop: US connectors are different
  • don't forget Cameras (and chargers)
  • Prepare 50 to 100 business cards : the most simple is to use the model I can provide on demand , and print them with special paper (pre-cut)

Mac OS X porter Team at WWDC 2007

What is WWDC 2007?

See Apple WWDC 2007

Labs Agenda

It is extremely important to organize us for Labs.

The rule is extremely simple: bring your laptop, your code, and ask :)

Days monday
June 11
tuesday
June 12
wednesday
June 13
thursday
June 14
friday
June 15
Labs Morning BOOKED
from 10:45 to 11:30 AM
Deric Horn / Keith Mortensen
Carbon and Cocoa Integration Lab
BOOKED
starting from 11:45 AM
Ernest Prabhakar
Apple and Free Softwares
Rendez-vous at Spotlight lab (Mac OS X Lab B)
Labs Afternoon BOOKED
1 hour
starting from ~ 4:30 5:30 pm
John Geleynse
User Interface design

Interesting Labs

The complete list: Mac OS X Essentials


  • Core Text Lab

Receive one-on-one technical assistance and troubleshooting advice from the Core Text engineering team. Learn how to use the advanced font handling and blazingly fast Unicode layout capabilities of Core Text. Bring your laptop, your code, and your questions.

  • HIToolbox Lab

Work on tuning and debugging HIToolbox code in your Carbon application. Receive one-on-one technical assistance and troubleshooting advice from the High Level Toolbox engineering team, Apple DTS engineers, and technology evangelists. Bring your laptop, your code, and your questions.

Our Objectives at the WWDC 2007

1) Connection OOo Mac team / Apple engineers

-Goal 1.1: "Get infos, contacts, human to human conversation :-)"

-> Present our current work, methods and team to Apple people :

-> Meet them during WWDC: give us/them a face, keep contacts

-> Get their impression about what we have already done and what is still ToDo


2) Improve from Apple's engineers expertise

-Goal 2.1: "Give MacOS X users the OOo suite they deserve"

=> As mac platform and apple's product fans, we are proud to bring the quality and power of OOo to mac users community
=> Make OOo uses all the power of Mac OSX, including upcoming Leopard !

-Goal 2.2: "OO.org Mac port has to be as Apple HIG compliant as possible"

=> Define what is expected for User Interface of OpenOffice.org suite with people from Apple UI project
- FYI: Last year, Apple UI project proposed ericb to help us, once our native menus will be working. 
  This is now done.


3) Get code guidelines, tips, samples

-Goal 3.1: "Ask for code review and find code snippets"

 - HIView
 - Printing
 - Drag and Drop
 - as muc has possible

=> More than 1000 Apple engineers are present, and can answer our questions regarding the code, during the whole week

-Goal 3.2: "Attend key Labs and Sessions to get full overview of Tiger/Leopard/Core's and useful code"

 - Core*
 - Tiger / Leopard


4) Social Contacts / Team emulation

-> Discuss and meet new developers and / or american people working for Mac OS X port (like Michael Sicotte, Vijay Venkatraman , other..) -> Share ideas, tips, conviviality !


5) Visibility

OpenOffice.org Native Mac port has to be recognized as the professionnal office suite for Mac users it is !

Who?

  • Sébastien Plisson
  • Eric Bachard
  • Philipp Lohmann

Todo list

Please add topics, technical questions you would see asked by attendees to Apple engineers during WWDC

Suggestions for current issues to be fixed

Timers: Current code is obsolete, and compatibility with Leopard won't probably exist. Pavel wrote a patch using recent code. Seems to work fine, excepted a thread issue (crash not easy to be reproduced)

Questions ( pavel )

Does Apple have a plan to enable UI drawing from threads different from the first one?

Does Apple have a plan to allow java to be run from other threads as well?


Salframe:

Looot of things:

  • fix all our busy paint places
  • Find infos/code sample about parenting
  • Code review for HIFrameWork implementation
  • Menus: every window creates it's own menu. Redesign it?
  • adapt native widget framework
  • Use XCode to build OpenOffice.org

Events: code review, tips

ATS: code review, ATS issues

Mike Sicotte: I understood that implementing printing in aqua OOo was a topic that we didn't get accepted into Google SOC - so remains on the ToDo list. I notice that there are three Sessions specfically related to printing at WWDC:

   Leveraging the Common Unix Printing System (CUPS)
   Printing with Style in Mac OS X
   Printing Lab

If this is judged to be a good use of time at WWDC I would be willing to spend some time to help further develop the questions to be addressed with the Apple engineers.

ericb->Mike Sicotte

Good idea. You are welcome :)

Ismael: What is the best way to draw editable textfields? Using DrawThemeEditTextFrame() from appareance manager although it is a bit old and we can't choose the context to draw but it is more in the OOo approach? Or use CreateEditUnicodeTextControl and create a control?

Travel

  • describe the schedule of the travel

ericb :

Mulhouse -> Paris -> SF:  9th of June    SF scheduled arrival: 7:13 pm
SF -> Paris -> Mulhouse:  16th of June (arrival 17th)  SF departure for the return:  3:00 pm

Hotel: King George (close to Union Square)

Airport to Hotel transportation: not included

sebastien (aka plipli):

Paris->SF: 3rd June
SF->Paris: 15th June in the evening

Hotel: to be coompleted


Philipp Lohmann:

Hamburg->SF: 9th June
SF->Hamburg: 16th June

Hotel: King George

Misc

  • don't forget sector adaptator for laptop: US connectors are different
  • don't forget Cameras (and chargers)
  • Prepare 50 to 100 business cards : the most simple is to use the model I can provide on demand , and print them with special paper (pre-cut)

Mac OS X porter Team at OOoCon 2007

Who?

  • Shaun McDonald
  • Eric Bachard
  • (list to be completed)

Todo: ask for Mickael Sicotte travel (New York <-> Barcelona) + rooms

What?

The conference is over 3 days. Presentations should last around 45 minutes. http://www.openoffice.org/servlets/ReadMsg?list=announce&msgNo=320 Papers have to be submitted by 1st June to be considered.

Ideas :

Mike Sicotte: Perhaps the results of the Google SOC could be a presentation.

  • create a complete topic for Mac port (one stream for a day or half day)
  • How to improve ooo usability though the use of floating palettes instead of modal dialogs

- several presentations / BOF

Eric Bachard: Aqua OpenOffice.org (conf / 1 hour)

Others?

  • reserve rooms together? Better rent a house?
  • [FIXME]

2nd Mac porters meeting

This section has been moved to 2nd Mac porters meeting

FOSDEM_2007

IRC Mac port meetings

This section has been moved to MacOSXPortMeetings.

Mac OS X (X11) Quality Assurance

This section has been moved to Mac OS X (X11) Quality Assurance

Mac OS X Implementing HIView and Carbon events

This section has been moved to Mac OS X Implementing HIView

Debug OpenOffice.org using XCode

MacOSX Debug OpenOffice.org using XCode

Implement OpenGL transitions in Impress

OpenGL Tansitions

Feedback

Implement Proxy Icons for Drag and Drop

Proxy Icon Implementation

Reviewers Guide for OpenOffice.org Aqua

Reviewers Guide for OpenOffice.org Aqua

Description of the Native Port problem

How does OpenOffice.org work on Mac OS X?

Currently, on Mac OS X, OpenOffice.org uses X11, as "client": X11 is a graphical server, coming from Unix world, and able to run under Linux, *BSD, Solaris, Mac OS X.

- X11 is run as an application, managed like other Apple applications.
- All unix like applications are managed by X11, and from Aqua environment, only X11 is seen as only one applicatiion, 
 even if other Unix/Linux (e.g.) applications are runing.

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.

Ericb 11:39, 3 June 2006 (CEST)

Issues and known problems

All events are managed by OpenOffice.org and X11, using the Xlib

Only .ttf fonts type is currently available. Note: system fonts are available

The rendering is made by X11, not by Mac OS X rendering engine.

X11 and all its clients are seen as one application only: drag and drop protocol does not work because of that (solution: Pasteboard Manager)

Other links

http://wiki.services.openoffice.org/wiki/List_of_OpenOffice.org_Mac_OS_X_issues_and_problems#

http://wiki.services.openoffice.org/wiki/Printing_problems_with_OpenOffice.org_2.0_for_Mac_OS_X#Reporting_printing_problems

Ericb 11:39, 3 June 2006 (CEST)

What do we have to do?

  • (in progress): Implement direct access to Apple graphical engine, using Apple API: Quartz2D/CoreGraphics (and replacing Xlib use)

like: instantiate, manage events and threads for a graphical instance + all needed objects, drawing: manage all drawing cases

  • (in progress): Implement native events management, using CarbonEventManager (replacing Xlib management)
  • (in progress): Implement native font use, using Apple Type Server and ATSUI (for Unicode Imagery) (replacing X11 management)

Work in progress: Mac OS X Porting - Native Fonts

  • (done experimental) Implement Native Filepicker
  • Implement Apple Spellchecker

--Plipli 09:27, 25 March 2007 (CEST)

Where is located the code to be modified?

Most of the changes are located in vcl (Visual Class Layer), for everything graphical, events, fonts, rendering and printing.

Other, for sound and movies will be in avmedia (where the player is implemented in OpenOffice.org sources).

For drag and drop, dtrans is concerned (Pasteboard Manager implementation)

[FIXME]: Filepicker? Apple Spellchecker?

Ericb 11:39, 3 June 2006 (CEST)

How will the new implementation be tested?

Currently, all openOffice.org code can be compiled without using the Xlib. but of course, a lot of features are missing,

and the final package simply won't work

In vcl module", a toy called svdem is built at buildtime. This binary is linked to libvcl* and so all new stuff can be tested.

e.g.: draw anti-aliased lines works well.

Everything implemented in aqua vcl code will be included in libvclplug_aqua, and svdem source code will contain a specific part to proceed tests.


[FIXME]: add more complete list of features to implement and test.

AquaVCL 01 cws

[Top 10 of Aqua issues]

Aquavcl01 tasks

Changelog

Scheduled : beta version

Once printing and Drag and drop will work, alpha will be over

Remaining issues for beta :

  • adjust control metrics
  • fix some refresh issues
  • complete Leopard port

To be discussed : native dialogs for printing ?

Work in progress: alpha :-)

26th july

aquavcl03 : start Cocoa integration.

The toy we will use for Cocoa begining is called vcldemo + milestone m220

Changes have been made in solenv ( use objC++ switch ) , in all includes to implement events, frames

(pl)

(pl) #i80066# add cocoa framework and objective c++ switches

(pl) #i80025# initial checking for carbon to cocoa migration

24th july

(pjanik) #i10000#: Fix build breaker on other platforms.

22th july

(pjanik) Whitespace cleanup.

21th july

(isma87) #i79748 add RTL support to tabs


19th july

(ekato) #i79737# fix incorrect spacing with punctuations


18th july

(pl) #i79475# enhance NWF focus for comboboxes

(isma87) #i79765 add native check marks and radio marks to menus

(isma87) #i79764 add native borders

17th july


(pl) #i79475# disable NWF focus drawing on dropdown boxes temporarily

(pl) #i79475# enable native focus drawing for edit fields

(ekato) #i78970# Mac-Encoding test for the heuristic with CJK fonts

(ekato) Use SAL_EXTTEXTINPUT_ATTR_HIGHLIGHT instead of SAL_EXTTEXTINPUT_ATTR_DOTTEDUNDERLINE for kTSMHiliteSelectedRawText.


16th july

(pjanik) Aquavcl02 now resync'ed with m221

(ericb) #i77549# simplify

13th July

(hdu) #i79567# the Aqua port uses the native font subsystem

(pl) #i79599# do not send useless paint events and fix an endless recursion

(pl) #i79581# optional immediate paint handling

(pl) code cleanup / review

(hdu) #i78358# queue new application events also while handling old application events

(hdu) remove freetype (unneeded )

Note : modules freetype + scp2 added in aquavcl02

12th July

(pl) #i79300# better refresh rectangles

(pl) #i79300# fix shadow issue with native progress bar

(pl) #i79300# change in DrawProgress API, SetBorderStyle can remove border window, removed a now unneeded workaround (flush in ImplCallPaint)

(ericb) #i79553# add TPT in AquaSalInstance constructor to make testtool receive events + put it in foreground

(ericb) #i79553# modify linking for MacOSX builds (initialy for testtool build)

(pl) #i79300# changein DrawProgress API

(hdu) #i78358# handle only one delayed AppleEvent at a time

(hdu) #i78358# handle aqua's AppleEvents immediately in the SVMainHook

11th July

(pl) #i79487# be more lenient to themes that draw outside their defined box

(pl) #i79487# improve native progress bar

(pl) #i10000#: Adapt VCL header paths.

(pjanik) m220 resync

10th July

To be verified: pl fixed bitmap issue on Leopard today (Florian will check ). If so, it should work out of the box.

(ericb) : #i79447# allow to use System Preferences colors for highlighted text

(pl) #i79441# add a similar magic to window background like for menus

(ismae87) fix focused rightmost tab not being recognized as rightmost : the right tab is now correctly drawn when selected

To be fixed : RTL issue with tab ( left is right and vice versa )

(pl) no focus rect for native tab control on aqua

(pl) #i79424# use an image mask instead of an image to support native menus, too

(pl) #i79424# reuse colorspace

(pl) #i79424# new implmentation for CreateWithMask ( includes several changes )

(pl) #i79402# fix some overpaint issues

9th July

(isma87) add native spinbox : now spinboxes are seen in controls :)

8th July

(isma87) add native EditBox, MultiLineEditBox and non-dropdown Listbox

(isma87) AHIG dimensions for comboboxes and listboxes, and add disabled state for listboxes

6th July

(pl) #i79068# RTL mirroring

(pl) fix drawAlphaRect for LineColor

(pl) #i79212# fix another menu related crash

(cd) #i79228# Support application event APPEVENT_PRINT for the mac port

(isma87) add aqua tabs

(isma87) center tabs and ask for native size

(isma87) remove bold text for focused tab

(hdu) #i78147# make OOo the default document handler for OpenDocument (mheily: thank you for the patch)

(pl) #i79300# no surrounding frame for NWF progress bar

(pl) #i79300# support NWF for progress bars


5th July

aquavcl03 has been created : start Cocoa migration. This cws will be resync'ed with m220 ( including aquavcl01) and first Cocoa changes will be included.

Great day for Mac OS X port: aquavcl01 is nominated and integrated : should be in m220 !!

(hdu) #i78358# Aqua AppleEvents: handle multiple open/print files at once

(hdu) #i78358# handle AppleEvents: OpenDoc and PrintDoc :

4th July

(hdu) #i79212# apply GH's patch to fix testtool crashes on Aqua : testtool does crash when aqua menus are used.

3rd July

(hdu) #i78358# handle AppleEvents: AEQuitApplication -> will help to fix the issue, open more doors, and prepare Cocoa transition

(pl) #i78943# disable drawing mnemonics on aqua : mnemonics are not aqua compliant

(pl) make debug window work on mac again, using MOD5 ( was not used before )

(hdu) #i78970# CJK fonts require extra leading

2nd July

(pl) join from aquavcl01 : aquavcl02 starting point is vcl from aquavcl01. Only vcl will have to be modified for now, other modules will arrive later.

aquavcl02 creation : aquavcl01 will be integrated (if nothing's going wrong) and aqua will become buildable just checking m220 sources

29th June

aquavcl01 is closed : no more commits allowed ( excepted for QA reason )

28th June

Tino announced bitmap copy paste works, and he's looking forward about drag and drop

Commits of the day:

(msicotte) #i78982# numeric keypad ENTER == RETURN in GetKeyCode

(pl) cleaning up some unused headers

(pl) #i77562# improvements from code review session

(tra) #i77593#Hack to prevent warning caused by the use of deprecated APIs

(tra) #i77593#support for copy&paste of pictures, OLE data exchanges with MS Office etc.

(pl) fix key up handling

(ericb) #i77551# improve metrics for listboxes buttons

(pl) #i77562# fix pro build warning

(pl) #i77562# landscape support

(hdu) #i77562# handle Printer dpi<->transformation matrix interaction

(ericb) #i78847# use MOD5 instead of MOD2 to fix formulas issue with ALT

(pl) #i77552# do not override explicit control background

(hdu) #i78924# implement bHandleAllCurrentEvents mode for AquaSalInstance::Yield() and ignore obsoleted timer events

(pjanik) whitespace cleanup

(ericb) #i77551# add correct buttons for listboxes

(ekato) Don't swallow Command-Space with menu as it is often used for TSM.

(ekato) Fix crash with SALEVENT_KEYUP on non text widget.

27th June

(pjanik) announced resync/ aquavcl01 integration in good shape.

(jogi) will start QA next week for all platforms

(ericb) not commited add equation input iin formula //

(pl) announced the printing working for soon (without the native dialogs ) :tested working with images, needs some work with equations some strange behaviour with equations import

26th June

Pavel found the way to make the testtool working.

Automated test are already working, but the changes need to be commited ( probably in aquavcl02 or another cws to come)

(pl) #i78907# paint menubar, add a magical 2 pixel border offset

(hdu) Aqua only: link to font subsetter library

(ericb) #i78548# adjust aquavcl01 to salaquatox11

(pl) #i77552# temporarily disable native dialog background in about dialog

(pjanik) #i78712#: Add events for entering and leaving, send MOUSELEAVE event to prevent "aggressive tooltips".

(pjanik) #i78712#: Add events for entering and leaving.

25th June

Aquavcl01 is now resynchronized with m217. New : Tango iconset ( see issue 78784 )

(ericb) #i78528# workaround for build breaker in desktop, the time cloph provides a better fix

(hdu) #i78815# measure the caret positions directly instead of using glyph positions



22th June


Philipp commited the code we worked on during WWDC : now windows have Aqua theme for true :)

The refresh issue for windows is vanished. Not the time to file an issue

(hdu) fix inverted debug assertion

(pl) remove unused functions


21th June

  • Today, looks like japanese fonts can be used properly
  • XOR has been implemented (partially, using basebmp )
  • aquafilepicker01 cws is close to be ready for QA
  • salaquatox11 has to be reviewed first

(hdu) remove code comment for less accurate but more reliable layout measurement

(hdu) implement detailed measurements in complex text layouts

(hdu) #i78704# add a new pixelformat, minor cosmetics

(ekato) issue #77846: use appropriate text attributes for input method

(pjanik) Whitespace cleanup.

(pjanik) Unify Windows and Aqua parts to have shorter diff against the base milestone.

(ekato) Call SALEVENT_{GETFOCUS,LOSEFOCUS} in HandleWindowActivatedEvent().

(ekato) Handle window activate and deactivate events properly.

(pl) fixed a constness issue


At this point, we have, since the previous development snapshot ( I *didn't wrote* we commited everything ) :


- Impress : animations work now (excepted sound)

- export pdf works now (some remaining issues with arabian locales maybe)

- copy paste works partially (text only )

- 2 instant crashes vanished since new saltimer implementation ( spellchecker and quit )

- native fonts et OpenOffice.org bundled fonts are now usable -> equations are now correctly displayed, since OpenSymbol is found

- start of native comboboxes (needs work)

- listboxes ( not complete)

- window background use Aqua theme ( patch not commited, but available : http://eric.bachard.free.fr/mac/aquavcl/patches/aquavcl01_june2007/window_background/aqua_window_background.diff )

- Calc works (white cell issue solved)

- Writer works ( text input ok, space issue ... etc)

- Maths works (exccepted braces, to be discussed soon )

We can include in the build (at least I do ) :

- native FilePicker, incuding the possibility to choose OpenOffice.org native one (allows URLs entries like http:// .. ) - new Chart module


20th June

(pl) some very minor cleanups

19th june

(pl) #i75228# initialize all members

(hdu) ATSLayout::GetBoundRect() is also called for positioned text (e.g. in Insert->SpecialChar)

(hdu) log usage of unimplemented methods

18th June

(hdu) ATSLayout::GetBoundRect(): do not reverse y-measurement in flipped context

(pl) : #i78600# change AQUA_LOG default behaviour

(hdu) workaround for ATSUI not using trailing spaces for justification

16th June

(pjanik) Add vcldemo demo application.

(pjanik) New demo application that draws something.

(pjanik) vcl is now WaE clean, remove the workaround introduced in the past.

15th June

(pl) #i75228# replace timer implementation

14th June

(tra) copy /paste partial (only text) : work in progress, checked in to have it saved in the repos.

(hdu) register OOo-specific temporary fonts

13th June

(ericb) draw correct button for Comboboxes (Ismael will complete)

(hdu) ATSLayout::GetIdealX(): get multiple widths at once

(hdu) better text measurements, PDF export, etc. by faking point==pixel

(hdu) PDF exported text can now be searched

(hdu) ImplMacFontData gets the GetImplFontCharMap() method

12th June

(hdu) fix PDF font properties => correct font sizes

(hdu) refactor ATSLayout::InitGIA() => much better text measurements (and less resource leaks)

(pjanik) Remove FIXME comments, revert original tabbing to prevent useless changes.

(pjanik) Backport masterfix from SRC680_m215 to aquavcl01. It will be removed when we resync to SRC680_m215+.

11th June

(ekato) issuse #78288: Fix for a wrapped line.

(hdu) simplify SystemFontList header even more

(hdu) simplify SystemFontList header

(hdu) implement methods needed for PDF export

(hdu) aquaport: link PSPLIB statically

10th June

(hdu) add PSPLIB for static linking

9th June

(ekato) Don't pass NULL to CFRelease().

(pjanik) Cleanup, prepare for integration.

8th June

(pjanik) fix typos.

(pjanik) No headless plugin on AQUA.

(hdu) provide subsetting lib-archive for aqua port

(hdu) fix CMAP table loading in AquaSalGraphics::GetImplFontCharMap()

(pl) preparations for XOR mode using basebmp BitmapDevice

7th June

(ericb) #i77549# be sure CFRelease every time

(hdu) #i77549# redesign how system preferences are found

(hdu) remove salfontutils.cxx that has been obsoleted by salatsfontutils.cxx

(thb) #i10000# Fixed build break for enable-dbgutil build again - this time also patching STLport-4.5-macxp-panther.patch

(6th June)

(ericb) resync with m214 : New Chart is now inside

(hdu) aqua: build fontsubsetting for static linking

(hdu) optimistic assumption that all ATS fonts are subsettable

(hdu) minor code reshuffling to prepare for PDF font subsetting

(hdu) read and digest a MacFont's CMAP table : should be usefull for PDF export


(5th June)

(hdu) fixed justified text for huge fonts : now justified text works

(pl) implemented AquaSalFrame::SetPointerPos() #i77534#

(pl) CFString <-> OUString conversion + other usefull functions for type conversion between Apple API and OpenOffice.org, like :

CFStringRef rStr = CreateCFString() ,

rtl::OUString GetOUString()

(hdu) DrawText: refresh correct rect, remove unneeded CGContextTranslateCTM() call

(ericb) #i72248# new patch for spirit, to include the correct macos.hpp in boost includes

(4th June)

(ericb) Development snapshot announced

(shaun) mac website modified for development snapshot announce

(pl) antialias in context only if appropriate

(pl) solve compile problem

(ericb) fix little warnings in salatslayout.cxx

(hdu) ATSLayout: justified text starts to work

(hdu) implement ATSLayout::DisableFontScaling() to prevent drawing problems with huge fonts

(pl) #i78078# add: window command dispatcher

(hdu) #i72248# prevent inconsistent builds for TARGET_CARBON platforms

(2nd June)

(ekato) Use kFontFamilyName if it is appropriate.

(ekato) Consider an user language setting with GetSystemFontSetting()

(1st June)

(pl) deactivate vclplugin in QUARTZ

(pl) don't builds useless library ( we don't need libvclplug in aqua port)

(pl) check context before setting blendmode ( does fix very visible issue : white cell in Calc )

(pl) preliminary: use blendmode hack for XOR mode


(31th May)

(Shaun) prepared the webiste for development snapshot announce

(cloph) Torrent are available for develoment snapshot of Aqua version

(pl) Added desktop and framework into aquavcl01 : to add preferences in menu entries, and improve about

(pl) other fix for captureMouse ( do not dipatch artificial dispatch mouse move if another frame has captured the mouse since posting)

(pl) save and restore to protect the context

(pl) fixed menu popup jump of highlighted text

(pl) implemented captureMouse , using overlay window

(ericb) testing new functions to retrieve highlighted color (and other) from System Preferences ( proof of concept only)

(30th May)


(hdu) fixed madness in formula when switching from formula to text

(hdu) removed font size in UpdateSettings() to avoid overwritting fonts size from Appearance Manager

(hdu) cleanup in ATSLyout::DrawText()

( Etsushi Kato ) commited change to implement preedit text drawing from input method

(28th May)

pl proposed a new AquaSalGraphics implementation.

http://porting.openoffice.org/servlets/ReadMsg?list=mac&msgNo=5433

Needs a review and some tests

(26th May)

(ericb) goodbye uggly grey

(24th May)


(pl) Various changes (from Bonsai database) : do not use XOR on QUARTZ either, implement flush, no view on VirDev

(pl) fixed issue 77755 : bad resizing /positionning for parent windows

(pl) Philipp Lohmann added AQUA_LOG to trace on Aqua -> Usage : export AQUA_LOG=off

(hdu) started MacOSXIntegrator to use System Fonts ( objective : Aqua version now will uses Lucida Grande or System default if different)

(pl) fixed issues 77529 and 77530 Implement AquaSalFrame::Get/SetWindowState


(23th May) :

(hdu) fixed some text breaking/text measurements : works started (works already)

(hdu) fixed refresh issues using mrRGBColorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); instead of : mrRGBColorSpace = CGColorSpaceCreateDeviceRGB(); " in vcl/aqua/source/gdi/salgdi.cxx (~105)

(pl) did AquaSalFrame non copyable

(pl) added InitShow() + centered windows relative to parents : now splashscreen appears centered, like all windows having parents

Note : In the long run it is planned to handle modal dialogs differently rolling down from the parent' titlebar is AFAIK the method on Mac ( Ismael started some experimentation for his Google SoC )

(pl) Contextual menus are shadowed

alpha 0.9




(22th May)

thb: proposed a patch to workaround the missing animations in Impress (issue 77692) ( verified working )

fheckl: fixed problem when switching between OOo picker and native picker ( verified working )

hdu: fixed the refresh and clipping => many problems with wrong clipping and wrong graphics attributes are gone

hdu: fixed the text drawn at bad size when resizing

(19th may)

Begining of Drag and Drop (Tino)

Using Aqua keyword, 123 issues created + macport user created.

user macport assigned means nobody is working on the issue. Once someone assigned the issue to himself + sert issue as started, means issue has an owner.

Experimental code to test SetThemeWindowBackground to refresh everything (ericb) (18th may)

+: refresh is ok, bitmap refresh is ok when scrolling, typing text works in writer , pulse effect works, refresh checkbuttons works, refresh the window during scrolling works

-: no more cursor, excessive system load (lot of Begin /EndGraphic()


Important infos / WIP

The main work in progress is about refresh not working in all situations. We isolated the cause: very probably the clipping is either missing, or buggy.

Once fixed: pulse effect for buttons, text refresh (blinking cursor, and bitmaps in menus will be ok.

ericb add Aqua look for toolbars and tooltips (17th may)

alpha 0.8

Christian Bernd Krippendorf joined the port (16th May)

hdu: memcpy sizeof(data) instead of sizeof(pointer) bytes (16th May)

hdu: fix ATSLayout::GetTextWidth() for multiple glyph-bound-trapezoids

msicotte: added definition for makeCGptArray - helper for AquaSalGraphics::invert

msicotte: added AquaSalGraphics::invert(ULONG nPoints...

hdu: implement stretched/squeezed text

hdu: prepare font rotation directly in ATSUI units

hdu: simplify a little by removing dead code

hdu: enable bold-/italic-emulation for fonts only if needed

mikesic: #77317# - fix for wrong menu displayed when last Writer window closed

ericb: add pulse effect (it will help to verify refresh issues are fixed)

pl: safer yield mutex protection through guards

hdu: default to standard font attributes

pl: protect against dispatching to dead or dying AquaSalFrames

ericb: #i77327# add alpha to user install dir until Aqua version is stabilized

hdu: rewrote ATSUFontID-based font enumeration

mikesic: Workaround for issue 77262 - frames around selected items don't disappear

mikesic: Fix for issue 74392 - aquavcl01: tooltip crash

mikesic: Fix for issue 77261 - Menu disappears when you hover over tooltip

mikesic: Fix for issue 75889 - aquavcl01: Extended tooltips text truncated

fheckl: adapting to changes since resync (aquafilepicker01)

fheckl: enabling fps_aqua lib only for aqua build

pjanik: Reformat for easier reading (according to OOo C++ rules).

Monday 15th May

Changes:

Yvan Barthelemy provided the first screenshot for printing :)

http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Native_Printing

native_printing_dialog.jpg

F 73688: use default font system (WIP, hdu)

several fixes in salatsuifontutils (hdu)

several fixes in salframe (pl)

defaut user install dir is now ~/Library/Application Support/OpenOffice.org-aqua (ericb)

added pulse effect to help for refresh


Saturday 13th / Sunday 14th

F 74392: tooltip crash (mikesic)

(IMHO fixed with mikesic patch) 72250: toolbar icon click -> crash with aqua menus (not fixed? Worksforme)

F 74392: tooltip crash (mikesic)

alpha 0.7

Sun decided to officialy supports the Mac OS x port (3rd May)

Welcome to Philipp Lohmann and Herbert Duerr , who joined the Team (3rd May)

resync m211 (1st May)

[Top 10 of issues] modify Bundle tree (issue 73693): change committed 28th April (ericb)

Google SoC: welcome to Ismael Merzaq and Omer BarOr , our two selected candidates: ismael will work on aqua look (NWF), and Omer will work on Mac OS X Address Book Integration.

resync: m208 (11th April)

(exp / not commited) Ismael proposed a patch for Utility Windows more Aqua compliant + SetMin/MaxSize() (9th April)


Native menus are defaults (ericb) (8th April)

Frederic Barbaise (alias boulifb) joined the port (3rd April)

Work on saltimer.cxx started mikesic (27th March)

Pavel commited Michael patch for invert and drawAlphaRect() (27th March)

Started 27th March

alpha 0.6

Damien started to work on drawEPS()

plipli and ericb work on refresh

Michael Sicotte proposed to investigate in timers, and continue [Pavel's work]: objective is to replace obsolete code. (23th March)

[experimental] plipli proposed a patch for a new salframe implementation, using HIView + optionally compositing (21th March)

[commit scheduled] Michael Sicotte proposed a complete patch for invert() (SAL_INVERT SAL_INVERT_50 and SAL_INVERT_TRACKFRAME) (20th March)

Tino proposed to work on code cleanup in salatsuifontutils.cxx, removing obsolete code

ismael and michael work on invert() + drawAlphaRect()

Started (19th March) :

alpha 0.5

Top 10 Summary: 7 issues over 10 are fixed or very close to be:

time to code review, tracing, and search for memory leaks


[done] Unicode input in salframe (ekato) (19th March)

[experimental, works partially] beginning of HIView + HIComboxes works (text still missing) (ericb + plipli) (14th March)

[done] replace NewRgn() in salframe (ericb (11th March)

[experimental, but very interesting] Improved native windows (ismael) (7th March)

alpha 0.4

[Informative] build runs with Leopard 9A377a (fheckl) (7th March)

Refresh screen issues (plipli) (4th to 10th March)

[informative] plipli announced progress with refresh screen issues (28th February)

[experimental, not yet commited] Proxy configuration from system (pjanik) (28th February)

[done] highlighted native button (pjanik) (27th February)

Native File Picker works (fheckl / pjanik) (23th February )

alpha 0.3

Cursor does appear -> invert() + setting a setBlinkTime value in UpdateSettings() (pjanik /ericb)

[done] mirroring negative images (ismael) + DrawAlphaBitmap() + CreateWithMask()

pjanik patch for Focus Events

[done] scrolling works (pjanik) (17th February)

[done ] carret works (plipli) (17th February)

[done] checkbuttons fix for checkmarks (ericb) (17th February)

[Informative] Pavel Janik propose to solve offScreen buffer using HIView (17th February)

[experimental, never commited] patch for macosxrc.txt use + UpdateSettings() use in salframe.cxx (ericb (16th February)

Michael Sicotte joined the Team (15th February)

invert(): first try (ericb) (13th february)

alpha 0.2

[12th February 2007 ]

[done] calc does not start: bug identified by tino , first workaround (ericb) [issue 73691]

[done] bitmaps in native popup menus (ismael)

[done] replace obsolete code for HandleWindowPaintEvent(), newRgn() .. etc (ericb) (12th February)

correct salatslayout patch (plipli) (11th February)

[Informative] Michel Renon proposed a summary about his work on fonts issues

[patch] Pavel fixed several menu crashes (09th February)

[Informative]: Pavel posted a mail about several crashes origin

patch for radioboxes and checkboxes (ericb) (9th February)

first complete patch for salatslayout.cxx (plipli) (9th February)

[done] most important crashes fixed (pjanik) (09th february)

Modified baseline for 2.2.: Mac OS X10.4 -> Aqua will be 10.4 and 10.5 compatible only (ericb)

first try with multi line sallayout (plipli) (08th February)


Damien Duportal joined the Team (7th February)

[done] scrollbar changes (ericb) (4th February)

alpha 0.1

create Top 10 of issues before alpha 3rd February 2007: See: [Top 10 of issues]

[experimental, not commited] patch for TPT() implementation (ericb) (2nd February 2007)

Pavel Janik proposed to implement TransformProcessType() (2nd February 2007)

[not commited] implement UpdateSettings() (ericb)

Pavel Janik resynchronized aquavel01 cws with m202 (2nd February 2007)

alpha 0.03

Michel Renon joined the Team (1st February)

[done] fix checkbuttons and radiobuttons issues: offsets, redrawing of the check marks (ericb)

[done] fix scrollbar buttons (implement correct methods to retrieve dimensions)

[done] implement mapfiles for Mac OS X (Stephan Bergmann, Daniel Boelzle, Tino Rachui , Pavel Janik)

alpha 0.02

[done] modify libsalsystools.dylib to be correctly loaded with the bundle (ericb, + pjanik)

[done] add mouse drag events (pjanik)


alpha 0.01

[done] add new feature for Aqua windows, to allow QuickTime player use(mox)

[done] replace obsolete code in salframe.cxx with (ericb)

[done] fix correct size for main window (GetOptimaWindowSize() ) (ericb)

[done] fix alpha channel in pixmaps (ismael)

alpha 0.0

[done] pushbutton where not correctly drawn (ericb)

[done] fix missing mouse events (pjanik)

[done] fix nRepeat in text entry (ssa)

2nd Mac porters Meeting

Work in progress

URGENT :

Top of issues causing crashes: event issue when tips is enabled causes crashes (well known window / handler / window desctructor / event loop bug)


Salatsuifontutils: replace old code, track leaks: tino

[done] Bitmaps: (isma87)

[running] Crashes: (tino, pjanik, ericb, isma87, plipli)

[???] Drag and drop: (vijay)

[???] Printing (ybart)

Florian Heckl proposed a subject for Google Summer of Code about native printing

Drawing/ windowing (plipli / ericb) -> mainly refresh

[done] Implement cursor

[started] Native Controls (ericb)

[work in progress] partial multiline sallayout (plipli)

To do:

(started, Oliver) - modify the tree to make the bundle start without hack (issue fixed during buildtime)

(started, Florian Heckl) verify Native FilePicker implementation (works , tested in Hamburg )

[done] Ismael Merzaq) implement blit functions in salgdi (important fix: probably apha version to be tested once done)

[done] Sebastien Plisson- update the missing functions list (fonts ... ask hdu & cl

[started] ericb, Mox Soini, Sebastien Plisson, Tino Rachui, Pavel janik continue to replace obsolete code



fix crashes with menus (started: tino)

Aquavcl01 integration

Log of discussion 26th June 2007 on #ooo_macport




Sort of documentation about VCL around Native Mac OS X port

Do we really need to understand how it works? ;-)


vcl content:

ls -laR | wc -l

 1750

-> Uff 1750 files to analyse :-/

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.

How analyse with more efficiency? After some months to anlalyse "horizontaly", 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 "orthogonal" method (compared to the previous one). The first method wasn't obviously not the good/best way to describe vcl.

[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 "objects".

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 "encapsulated".

The most difficult is to see where the API is used. But for all the parts, this is the same.

Finally, what is important is the design of vcl. Which patterns 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.

VCL organisation

Thank's to Philipp Lohmann for this short, but precise description:

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.).

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()

SalFrame abstracts any kind of system window.

SalVirtualDevice abstracts an offscreen window (e.g. a Pixmap on X11)

SalPrinter and SalInfoPrinter abstract the system print queues where SalInfoPrinter is for querying and SalPrinter for actual printing.

SalGraphics is an interface produced by either SalFrame, SalVirtualDevice or SalPrinter which is used for actual drawing operations (text, bitmaps, vector graphics)

SalSound is for sound playing.

SalBitmap provides memory for bitmap graphics as well as methods converting this memory to a system handle (e.g. a Pixmap on X11).

SalOpenGL provides OpenGL functionality if available.

SalTimer is an interface for periodically triggering the event queue (to timer implementation).

SalI18NImeStatus handles how the status window of an Input Method Editor (IME) should display (this is mainly X11 specific).

SalSystem has some system specific methods that did not belong anywhere else:-)

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.

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 implementation (located beneath vcl/win for Windows and vcl/unx for the X11 platforms).

Ericb 16:12, 1 July 2006 (CEST)

Sub-directories description

Organisation of vcl directories

Aquavcl organisation complete 02.jpg

Directories in vcl. Short description

aqua : The name Aqua means Apple look and feel, and is well known as 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]

prj : 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.

qa does contain all quality assurancy stuff

source: 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).

Depending on the OS and the architecture, binaries are built or not.

test : This directory does contain all the needed stuff for tests. As example, in qa/testdocuments, you'll find three documents (one writer, one calc and one impress) for tests purpose. Other available tests are about memcheck and persistent window state.

unx : 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.

win : 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.

workben: Does contain a toy called "svdem". svdem is a binary, used for new implementations. For example, actual aqua development uses svdem intensively, to verify all important properties we need:

- display a window first (al least ...:))

- close cleanly this window

- display a point

- trace a line

- trace an area

- superpose two areas doing some important graphical operations, (like xor),

- display a character

- display a menu.

- intercept events correctly.

[FIXME] add more tests

Ericb 13:21, 3 June 2006 (CEST)

Naming convention

  • Class names start with upper case letters, to improve readability.
  • Implemented Class names are derived from the virtual classes but can of course take arbitrary names.

To increase readability, it's recommended to closely follow the base class name.

  • Impl prefix: means Implementation details. The concerned class or method or function is not used outside of this module, so no external code (or other libraries) can see it.


Events types using Carbon API (Mac OS X): A lot of events have to be managed in runtime. Here is a short description

- do not freeze because bad event loops

- event types implementation: currently, they are defined in vcl/aqua/inc/aquavclevents.hxx


Apart: exact sense of hedabu? -> [FIXME] as far as I understood it: it is like "copy" to deliver software into the solver, with extra magic. The header files for example are manipulated so paths need not be exact. "headabu" is supposed to disappear little by little.

What do we have to build in vcl?

Two libraries, corresponding ressources (localized) and a toy so called « svdem »

Common part:

in grey on right. The result will be a non architecture dependant library, built in all cases: for instance, libvcl680mxi.dylib on Mac Intel.

Specific part " a plugin " :

Light yellow: aqua part will only concern Mac OS X (non X11) the name will probably be libvcl_aqua680mxi.dylib

As you can see, win means windows part, in blue

For Unix build (Linux, Solaris or current Mac OS X X11), in purple.

Result will be:

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'm not sure for other cases).

Example: libvcl680mxi.dylib and libvclplug_aqua680mxi.dylib

In runtime, 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 "empty boxes".

Current Aqua content

A more complete description of aqua (Mac OS X / no X11 specific): Vcl aqua organisation 02 tree.jpg


EXISTING objects to build in aqua

Sal APP "everything application"

[FIXME] add all objects descriptions

saldata

  • Defined in plugin exclusively (i.e. for headers)

Unix: unx/source/app/saldata.cxx (header in unx/inc)

Aqua: aqua/source/app/saldata.cxx (header in win/inc)

Windows: win/source/app/saldata.cxx (header in aqua/inc)

  • Role: saldata contains various kind of data used by the implementation for the concerned platform. It is a bunch of global data collections reserved for the platform

It is just completely platform dependent, and nobody except this plugin can see it.

Saldata is something like a "second sal", but providing an abstraction regarding windowing and graphics, while SAL module provides an abstraction more Operating System oriented)

e.g.: have a look at XRequest array in vcl/unx/source/app/saldata.cxx => all calls are for Xlib (X11). Ok, useless there, but interesting:-)

[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.


saldatax.cxx uses classes SalInstance, SalObject, SalFrame, SalVirtualDevice, SalPrinter and fontList.

Current list of possible objects who can be instantiated/released:

structure SalData: does contain pointers on all kind of objects from other classes used in saldata.

inline functions: [FIXME]: complete the description

- SetSalData: - GetSalData: - GetAppSalData:

salinst

=> implemented in vcl/aqua/source/app/salinst.cxx

Role:

  • get environment, mutexes, instantiate AquaSalInstance (Ctor, Dtor),
  • instantiates/releases a lot of other objects using Get() / CreateObject() / DestroyObject() methods.


Current list of possible objects who can be instantiated/released:

* VirtualDevice [FIXME]: exact role?
*Printer  

- GetDefaultPrinter/ CreatePrinter() / DestroyPrinter - what a name ;-) -

- InfoPrinter (Get/Create/Delete)

- PrinterQueue (DeletePrinterQueueInfo / GetPrinterQueueInfo / GetPrinterQueueState)

* System (Create / Delete) [FIXME]: what means system here?
* Events: 

AquaSalInstance::SetEventCallback()

AquaSalInstance::SetErrorEvenCallback()

AquaSalInstance::GetConnectionIdentifier()

* Menu / MenuItem: 

AquaSalInstance::CreateMenu() / same for DestroyMenu()

AquaSalInstance::CreateMenuItem / same DestroyMenuItem()

* Sound: 

AquaSalInstance::CreateSalSound() => object to a pointer of SalSound type

Note: AquaSalInstance::DestroySalSound is not implemented (?)

* Timer: CreateTimer() /

AquaSalInstance:: DestroyTimer() is not yet implemented (?)


Class MacImeStatus: inherits of SalI18NImeStatus

-> only there to see if there is a window to toggle into menubar [FIXME]??

AquaSalInstance::CreateI18NImeStatus(): instantiates MacImeStatus

For futher informations, see: Content of salinst.cxx

(Ericb 16:11, 20 May 2006 (CEST))

salmain

Role: if possible, runs the standard vcl application code SVMain()

(Ericb 16:15, 20 May 2006 (CEST))

salsound

salsys

saltimer

saltimer

The main problem with SalTimer is the code we use is obsolete. To remove this deprecated code, sevarl work have been tried

1) Pavel Janik, in issue 75228

works, but a serious problem is remaining (a thread issue, nothing anybody explained yet)

2) eric bacahrd (code will be attached soon)

3) Michael Sicotte, who proposed to work on that, and continue Pavel implementation.


SalTimer description

AquaSalTimerproc

AquaSalTimer::Start()

AquaSalTimer::Stop()

AquaSalTimer::Restart()

AquaSalTimer::Installtask() // yet needed?

Sal GDI (everything Graphical Display Interface)

salgdinativewidgets

native controls

salatslayout

==> implemented in vcl/aqua/source/gdi/salatslayout.cxx

- Handle text layouting :

   * Use ATSUI (ATSUCreateTextLayoutFromPtr) to layout the text unicode char buffer
   * Use ATSUI (ATSU..) to get informations about glyphs
   * Populate different arrays (mpGlyph2Chars, mpChars2Glyph, mpCharsWidths, mpGlyphAdvances)
     that are used in various methods.

salatsuiutils

salfontutils

salmathutils

sal bmp

salvd

salpixmaputils

salprn

salrectangle

salvd

Sal Window

salframe

Documentation in progress, from damiend : Damiend page

salobj

TO BE IMPLEMENTED (missing in Aqua)

OpenGL

VCL implementation of OpenGL is obsolete-> first plan canceled


New plan

Use existing Windows implementation as model, and bind Cocoa OpenGLView from Apple customCocoaOpenGL code sample (see files aquaOpenGLView.h and aquaOpenGLView.m like in the Cocoa implementation of the AquaPrintView

[done]

  • Define interface of the AquaOpenGLView class [done using Apple code]
  • Define the implementation of the AquaOpenGLView class [done, using Apple code]
  • Define the OpenGL implementation strategy in OGLTran_Transitioner.cxx
  1. aquaOpenGLView.m will stand in vcl/aqua/source/gdi
  2. aquaOpenGLView.h and vcl/aqua/inc
  3. aquaOpenGLView object will be built in libvcl.dylib

[todo]

  1. complete the class OGLTransitionerImpl implementation (for QUARTZ only, mainly define the right GLWin structure members)
  2. complete OGLTransitionerImpl::initWindowFromSlideShowView() ( QUARTZ case)

Philipp Lohmann suggestions :

create your own OpenGLView with the view of the parent window as superview

like NSOpenGLView pMyView = [[NSOpenGLView alloc] init....]

and then [pView addSubView: pMyView]

commit the changes ?

Later

test ? :-)

Audio

audioconvert

(obsolete?) 

devaudio

(obsolete?)

native sound

salimpsound

vsound

i18n

keysymnames

saldisp

sm

[FIXME]: is session manager usefull?

Native Controls

Scrollbar

Works as expected. The most important work is done

See: Mac_OS_X_Porting_-_Native_Controls#ScrollBar

DrawThemeButton() documentation

Started

See: Mac_OS_X_Porting_-_Native_Controls#ComboBox

Started

DrawThemeButton
Draws a button.

OSStatus DrawThemeButton (
   const Rect * inBounds,
   ThemeButtonKind inKind,
   const ThemeButtonDrawInfo * inNewInfo,
   const ThemeButtonDrawInfo * inPrevInfo,
   ThemeEraseUPP inEraseProc,
   ThemeButtonDrawUPP inLabelProc,
   UInt32 inUserData
);
Parameters
inBounds
A pointer to a structure of type Rect. Pass a rectangle specifying the boundary of the button, in local coordinates.

inKind
A value of type ThemeButtonKind. Pass a constant specifying the type of button to draw. 
See “Theme Buttons” for descriptions of possible values.

inNewInfo
A pointer to a structure of type ThemeButtonDrawInfo. Before calling DrawThemeButton, 
set the structure to contain the new state, value, and adornment for the button. 
DrawThemeButton uses the information passed in the inNewInfo and inPrevInfo parameters
to apply transitional animation or sound effects as the button state changes, if such are 
specified under the current theme.

inPrevInfo
A pointer to a structure of type ThemeButtonDrawInfo. If the button state is changing,
set the structure to contain the previous state, value, and adornment for the button, 
to allow DrawThemeButton to apply any transitional effects. If the button state is not 
changing, you can pass NULL.

inEraseProc
A value of type ThemeEraseUPP. If you have a custom background, use this parameter to pass
a universal function pointer to an application-defined function such as that described in 
ThemeEraseProcPtr. DrawThemeButton calls this function to erase the background before drawing
 the button. If you pass NULL, DrawThemeButton's default behavior is to erase the background
 for you.

inLabelProc
A value of type ThemeButtonDrawUPP. If you pass a universal function pointer to an 
application-defined function such as that described in ThemeButtonDrawProcPtr, DrawThemeButton
 calls that function to draw the label of the button. If you pass NULL, no label is drawn.

inUserData
An unsigned 32-bit integer. Provide any data to be passed in to the callback functions specified in 
the inLabelProc and inEraseProc parameters. Pass NULL if you do not wish to provide any data.

Return Value
A result code. See “Appearance Manager Result Codes”.

Discussion
The DrawThemeButton function draws a theme-compliant button. If a ThemeEraseProcPtr is 
specified in the inEraseProc parameter, DrawThemeButton uses that function to erase the 
background of the button before drawing the button. After the button is drawn, if a
ThemeButtonDrawProcPtr is specified in the inLabelProc parameter, DrawThemeButton calls
that function to draw the button’s label.

Note that DrawThemeButton also draws any appearance adornments for the button and that these
can extend beyond the button’s basic bounding rectangle, as specified in the inBounds parameter,
and may be of variable shape. You may therefore wish to call the function
GetThemeButtonBackgroundBounds to obtain the actual rectangle containing the pixels belonging
to a button under the current theme.

Version Notes
This function is available with Appearance Manager 1.1 and later.

Availability
Available in CarbonLib 1.0 and later when Appearance 1.1 or later is present.
Available in Mac OS X 10.0 and later.
Declared In
Appearance.h

HIComboBoxCreate() documentation

HIComboBoxCreate
Creates a combo box control.

OSStatus HIComboBoxCreate (
   const HIRect* boundsRect,
   CFStringRef text,
   const ControlFontStyleRec* style,
   CFArrayRef list,
   OptionBits inAttributes,
   HIViewRef* outComboBox
);
Parameters
boundsRect
The bounding box of the control.

text
The default text in the editable portion of the control. Can be NULL.

style
The font style of the both editable text and the text in the disclosure list. Can be NULL.

list
The default values available in the disclosure list. Can be NULL.

inAttributes
The default attributes of the combo box. For possible values, see “Combo Box Attributes”.

outComboBox
On exit, a pointer to a reference for the new control.

Discussion
The combo box can be used in compositing mode, as well as traditional Control Manager mode.
When created, this view is invisible. To see the view, you must show the view by calling HIViewSetVisible.

What is used for Linux, Windows, Mac OS X ...build?

Description of the dependencies

Windows

MacOS X

Linux

Solaris

Content of Aqua

Click here to see the complete list


Content of vcl/inc

Notes:

1) Where to find includes

<foo/bar.hxx> 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. ;-)

2) suffix .h (for C calls or first version?) or .hxx (C++)

A) Family of includes:

Looking more closely at the list brings to the fore (expression from dictionary ;-)) that include names are informatives. Most of the time, the name gives the function/role. What is interesting is the files with name begining with "sal". sal means System Abstraction Layer + include's function (or explicit name).

Partial list, for example:

salatype.hxx

salbmp.hxx

salctrlhandle.hxx

salctype.hxx

salframe.hxx

salgdi.hxx

salgeom.hxx

sallayout.hxx (main header for fonts services) ... salmenu salnativewidgets ...etc

Other important families are "sv" and "uno" or "win" (window) prefixed. sal family will be analysed apart.

B) Includes of includes

Some includes are more important than other. To prove this, just have a look is sufficient: some are always needed, and some more rarely.

To verify, a simple test to do in vcl/inc:

egrep -H "#include" ./* | wc -l gives me 681 lines ! And some of them are the same...

To know more, the precedent command line can be modified to make appear the numerous call to the same includes files.


egrep -H "#include" ./* | cut -d"#" -f2 | sort > liste.txt

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**

**see http://wiki.services.openoffice.org/wiki/Source_code_directories


I'm nearly sure that a complete analysis of just this result will give us a lot of information.

I propose to change the order of analysis starting with dllapi.h and sv.h.


[to be continued]

B1) "sal" includes family

salinst.hxx This seems to be the main include file

salatype.hxx

salctrlhandle.hxx

salctype.hxx

salframe.hxx

salgdi.hxx

salgeom.hxx

sallayout.hxx <-- see Native Fonts implementation

salgtype.hxx

vcl/inc/salobj.hxx


B2) Classicals includes

file: abstdlg.hxx [ means abstract dialog ]

This includes does contain the following classes definitions:

[FIXME]: choose a precise presentation template for classes


VclAbstractDialog,

VclAbstractTerminateDialog,

VclAbstractRefreshableDialog,

VclAbstractDialogFactory,


uses <tools/solar.h> , <tools/string.hxx> +

"dllapi.h"

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's and archs). Just including sal/config.h does it !


Classes:

Window -> what? [FIXME] ResId -> what?

Does contain the prototype of VclAbstractDialog, inherit of VCL_DLLPUBLIC


file: dllapi.h [ dll for dynamic linked library ] Uses: <sal/config.h> and >sal/types/h> includes: VCL_DLLPUBLIC macro


file: accel.h [ means accelerator ]

Classes:

Accelerator { } ImplAccelEntry { public members:

Names

mnId maKeyCode mpAccel mpAutoAccel mbEnabled }

function / returns / parameters

ImplGetKeyCode / void / KeyFuncType eFunc, ref rCode1 , ref rCode2, ref rCode3

file: accel.hxx

Uses: <sv.h> , "dllapi.h" ,<tools/resid.hxx>, <<tools/rc.hxx>


Classes:

ImplAccelData; ImplAccelEntry;


Important Links

Progressive implementation

Native Font server Implementation Mac OS X Porting - Native Fonts

Native Sound Implementation: Mac OS X Porting - Native Audio and Video

Native Printing Implementation: Mac OS X Porting - Native_Printing

Drag and Drop implementation: Mac OS X Porting - Native Drag and drop

Data Acquisition: Mac OS X Porting - Data Acquisition

This work is part of http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s

[to be continued:-) ]

Keyboard comparizon between OpenOffice.org / Mac OS X application

[FIXME] redo a cleanest array

Modifier + key Result TextEdit returns
ALT a æ æ
ALT b ß ß
ALT c © ©
ALT d
ALT e ê ê
ALT f ƒ ƒ
ALT g
ALT h Ì Ì
ALT i î î
ALT j Ï Ï
ALT k È È
ALT l ¬ ¬
ALT m µ µ
ALT n ~ ~
ALT o œ œ
ALT p π π
ALT q
ALT r ® ®
ALT s Ò Ò
ALT t
ALT u º º
ALT v
ALT w
ALT x
ALT y Ú Ú
ALT z  Â
ALT A Æ Æ
ALT B
ALT C ¢ ¢
ALT D
ALT F · ·
ALT G
ALT H Î Î
ALT I Î Î
ALT J Í Í
ALT K Ë Ë
ALT L | |
ALT M Ó Ó
ALT N ı ı
ALT O Œ Œ
ALT P
ALT Q Ω Ω
ALT R
ALT S
ALT T
ALT U ª ª
ALT V
ALT W
ALT X
ALT Y Ÿ Ÿ
ALT Z Å Å
ALT $
ALT ` @ @
ALT £ # #
ALT * ¥ ¥

Sous réserve d'erreur ou omission Ericb 00:05, 14 January 2007 (CET)

Register a new IRC channel

To register an IRC a channel, this one must exist

1)

/join #education.openoffice.org

-> if you are registered user, the channel is created

You have to register it :

help : /msg chanserv help register, returns :

/msg chanserv register #education.openoffice.org PASSWORD

( choose a password, and don't forget it ! )

3) to keep all customizations, you must set a guard

Help : /msg chanserv help set, returns :

[10:53] -ChanServ- Syntax: SET <channel> <option> [parameters]

[10:53] -ChanServ-

[10:53] -ChanServ- Allows the channel contact or level 25 to set various

[10:53] -ChanServ- channel options and other information. All options may

[10:53] -ChanServ- be abbreviated, such as:

[10:53] -ChanServ- /msg ChanServ set #channel CONT newcontact

[10:53] -ChanServ- to set the CONTACT nickname to "newcontact". For more

[10:53] -ChanServ- specific information on each option, type:

[10:53] -ChanServ- /msg ChanServ HELP SET <option>

[10:53] -ChanServ-

[10:53] -ChanServ- Available options:

[10:53] -ChanServ-

[10:53] -ChanServ- CONTACT Set the contact of a channel (contact)

[10:53] -ChanServ- ALTERNATE Set the alternate contact for the channel

[10:53] -ChanServ- PASSWORD Set the contact password (contact)

[10:53] -ChanServ- MLOCK Lock channel modes on or off

[10:53] -ChanServ- TOPICLOCK Restrict topic changes

[10:53] -ChanServ- PRIVATE Hide channel from ChanServ lists

[10:53] -ChanServ- SECUREOPS Stricter control of chanop status

[10:53] -ChanServ- SECURE Activate ChanServ security features

[10:53] -ChanServ- ENTRYMSG Send a message to users upon entry

[10:53] -ChanServ- EMAIL Set the channel email address

[10:53] -ChanServ- URL Set the channel url

[10:53] -ChanServ- GUARD Have ChanServ join your channel

[10:53] -ChanServ- SPLITOPS Let anyone keep ops from a netsplit

[10:53] -ChanServ- VERBOSE Notify chanops on access changes


Correct command is :

/msg chanserv set #education.openoffice.org guard on

[11:01] >chanserv< set #education.openoffice.org guard on

[11:01] * ChanServ (ChanServ@services.) has joined #education.openoffice.org

[11:01] * irc.freenode.net gives channel operator status to ChanServ

Other commands :

Set me as contact :

/msg chanserv set contact eribc2

[10:59] >chanserv< set contact eribc2

/msg chanserv set #education.openoffice.org contact ericb2

[11:00] >chanserv< set #education.openoffice.org contact ericb2

Set security features on

/msg chanserv set #education.openoffice.org secure on

[11:03] >chanserv< set #education.openoffice.org secure on

[11:03] -ChanServ- Toggled Security for channel #education.openoffice.org [ON]


Set Topic Lock on

/msg chanserv set #education.openoffice.org topiclock on

[11:04] >chanserv< set #education.openoffice.org topiclock on

[11:04] -ChanServ- Toggled Topic Lock for channel #education.openoffice.org [ON]

Channel ops

[11:05] -ChanServ- Toggled Verbose for channel #education.openoffice.org [ON]

[11:06] * ericb2 gives channel operator status to lgodard

/msg chanserv set #education.openoffice.org verbose on

[11:05] >chanserv< set #education.openoffice.org verbose on

[11:05] -ChanServ/#education.openoffice.org- ericb2!n=eric@aud25-1-88-166-8-11.fbx.proxad.net enabled notices of

  1. education.openoffice.org access list changes

[11:05] -ChanServ- Toggled Verbose for channel #education.openoffice.org [ON]

/msg chanserv access #education.openoffice.org add ericb2 20

[11:11] >chanserv< access #education.openoffice.org add ericb2 20

[11:11] -ChanServ- [ericb2] has been added to the access list for #education.openoffice.org with level [20]

[11:11] -ChanServ/#education.openoffice.org- ericb2!n=eric@aud25-1-88-166-8-11.fbx.proxad.net ACCESS [#education.openoffice.org] ADD ericb2 20

[11:11] -ChanServ- You have been added to the access list for #education.openoffice.org with level [20]

[11:11] -ChanServ/#education.openoffice.org- ericb2!n=eric@aud25-1-88-166-8-11.fbx.proxad.net ACCESS [#education.openoffice.org] ADD lgodard 10

/msg chanserv access #education.openoffice.org add rbircher 10

[11:11] >chanserv< access #education.openoffice.org add rbircher 10

[11:11] -ChanServ- [rbircher] has been added to the access list for #education.openoffice.org with level [10]

[11:11] -ChanServ/#education.openoffice.org- ericb2!n=eric@aud25-1-88-166-8-11.fbx.proxad.net ACCESS [#education.openoffice.org] ADD rbircher 10

[11:13] * ericb2 has changed the topic to: Welcome to education.openoffice.org project: The channel for the OpenOffice.org education Project.

Website : http://education.openoffice.org

[11:13] >chanserv< access #education.openoffice.org add louis_to 10

[11:13] -ChanServ- [louis_to] has been added to the access list for #education.openoffice.org with level [10]

[11:13] -ChanServ/#education.openoffice.org- ericb2!n=eric@aud25-1-88-166-8-11.fbx.proxad.net ACCESS [#education.openoffice.org] ADD

louis_to 10


Hope this help :)


--Ericb 15:00, 22 Jul 2005 (EDT)


Avoid Warnings

What follows is based on wae4extensions, wae4binfilter01, wae4binfilter02 cws's.


Variables initialization in C++

Associated typical warning :


Why

C++ langage requests that variables are declared. Variables can be declared at any place (same in C, when using C99 standard). To use a variable, one has to define it, means give it a name, AND a data type to be stored, then the compiler can reserve a memory location for it.

Define it

One variable can be defined as follow :

type Name_of_variable;


Or, if ever there are several variables with the same type :

type Name_variable1, Name_variable2, ...;

Note: for readability reason, prefer one line per variable :

type Name_variable1;
type Name_variable2;

Examples:

char my_character = 'B';
short nValue = 10;

Initialize it

Variable declaration does only reserve a place for it, where store it. Until a value has been defined for it, this variable does contain a random value (garbage), what is not acceptable.

Good practice, coupled with good Design, consists in initilalize the variable, and the best moment is at declaration time.

Affectation operator is = , and the syntax is:

type Name_of_the_variable = value;

For example :

float nFoo = 125.36;

Other cases (examples)

Pointers

const String* pRet; // Bad 
const String* pRet = NULL  ; //  Good: until &pRet is used, we have no content in pRet

Integers

Typical warning :


Example of fix :

sal_Int16 nMode;  // Bad 
sal_Int16 nMode = 0;  // Good

Booleans

sal_Bool bParaSpace;  // bad -> random value, or whorst, the previous one will be used
sal_Bool bParaSpace = sal_False;  // good

Other examples (OpenOffice.org specific)

Ctors initialization in C++

Most of the issues we have, are due to a non matching order between the ctor in the interface, and the implementation.

Typical warning :

../../inc/bf_starmath/symbol.hxx: In constructor 'binfilter::SmSym::SmSym()':

../../inc/bf_starmath/symbol.hxx:102: warning: 'binfilter::SmSym::bDocSymbol' will be initialized after

../../inc/bf_starmath/symbol.hxx:96: warning:   'String binfilter::SmSym::aSetName'

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_symbol.cxx:84: warning:   when initialized here

As you can see, the order of the declaration in the prototype differs of the one in the implementation ( starmath_symbol.cxx for instance).

To avoid warnings, we must reorder the variables/members/functions initialization in the Ctor, in the .cxx, or in the header, but only in the case the initialization follows the definition (find such initialization in the header is basically strange or maybe wrong, but that's not the point)

For example :

Index: binfilter/bf_forms/source/component/forms_GroupManager.cxx
===================================================================
RCS file: /cvs/framework/binfilter/bf_forms/source/component/forms_GroupManager.cxx,v
retrieving revision 1.8
diff -u -r1.8 forms_GroupManager.cxx
--- binfilter/bf_forms/source/component/forms_GroupManager.cxx	10 Apr 2008 07:46:20 -0000	1.8
+++ binfilter/bf_forms/source/component/forms_GroupManager.cxx	6 May 2008 11:45:41 -0000
@@ -100,8 +100,8 @@
 
 //------------------------------------------------------------------
 OGroupComp::OGroupComp()
-		:m_nTabIndex( 0 )
-		,m_nPos( -1 )
+		:m_nPos( -1 )
+               ,m_nTabIndex( 0 )
 {
 }

Enumerations in C++

When X cases are defined in an enumeration, and only several used in a switch, without a "default" case being defined, warnings are ttriggered at build time by the compiler.

Typical warnings (can be extremely verbose) !! ):

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx: 

In member function 'void binfilter::SmXMLExport::ExportFont(const binfilter::SmNode*, int)':

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946: 

warning: enumeration value 'TEND' not handled in switch

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946: 

warning: enumeration value 'TLGROUP' not handled in switch

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946: 

warning: enumeration value 'TRGROUP' not handled in switch

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946: 

warning: enumeration value 'TLPARENT' not handled in switch

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946: 

warning: enumeration value 'TRPARENT' not handled in switch

[... lot of lines including all other cases not handled in switch .. ]

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946:

warning: enumeration value 'TRDBRACKET' not handled in switch

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946:

warning: enumeration value 'TUNKNOWN' not handled in switch

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3946:

warning: enumeration value 'TDEBUG' not handled in switch


Verbose warnings can be avoided simply adding :

 default:
     break;

For example :

@@ -831,6 +830,8 @@
 /*N*/ 		case SC_CAT_INSERT_TABS :
 /*N*/ 			pDoc->DeleteTab( aRange.aStart.Tab() );
 /*N*/ 		break;
+/*N*/       default:
+/*N*/       break;
 /*N*/ 	}
 /*N*/ 	SetState( SC_CAS_REJECTED );
 /*N*/ 	RemoveAllLinks();

Be carefull: before to add default case, please verify you don't break the algorithm.

Unused variables

Bad copy paste can lead to defined but never used variables -> compiler complains, and create warnings.

Typical warning :

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_cfgitem.cxx: In member function 'binfilter::SmSym binfilter::SmMathConfig::ReadSymbol(binfilter::SmMathConfigItem&, const rtl::OUString&, const rtl::OUString&) const':

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_cfgitem.cxx:412: warning: unused variable 'nTmp16'


Solution: see unused parameters (Stephan Bergmann explanation)

Variables in catch blocks

A varialbe well defined and initialized, but put in catch block, can trigger warnings.

Solution: cast the variable using void type

For example :

@@ -3310,7 +3309,7 @@
 	}
 	catch(RowSetVetoException& eVeto)
 	{
-		eVeto;
+		(void)eVeto; // makes compiler happy
 		throw;
 	}

Missing braces in arrays

Every compounded members of an array, must be inside round braces { }

Typical warning :

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_sw/source/core/bastyp/sw_calc.cxx: At global scope:
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_sw/source/core/bastyp/sw_calc.cxx:181: warning: missing braces around initializer
/Users/ericb/Desktop/DEV300_m26/binfilter/bf_sw/source/core/bastyp/sw_calc.cxx:181: warning: missing braces around initializer
...

... lot of lines, typically one per line in the array


For example :

Index: binfilter/bf_sw/source/core/bastyp/sw_calc.cxx
===================================================================
RCS file: /cvs/framework/binfilter/bf_sw/source/core/bastyp/sw_calc.cxx,v
retrieving revision 1.10
diff -u -r1.10 sw_calc.cxx
--- binfilter/bf_sw/source/core/bastyp/sw_calc.cxx	10 Apr 2008 15:13:22 -0000	1.10
+++ binfilter/bf_sw/source/core/bastyp/sw_calc.cxx	6 May 2008 11:45:49 -0000
@@ -150,34 +150,34 @@
 };
 
 _CalcOp	__READONLY_DATA aOpTable[] = {
-/* ACOS */    {sCalc_Acos,		CALC_ACOS},  // Arcuscosinus
-/* ADD */     {sCalc_Add,        CALC_PLUS},  // Addition
-/* AND */     {sCalc_And,        CALC_AND},  	// log. und
-/* ASIN */    {sCalc_Asin,       CALC_ASIN},  // Arcussinus
-/* ATAN */    {sCalc_Atan,       CALC_ATAN},  // Arcustangens
-/* COS */     {sCalc_Cos,        CALC_COS},  	// Cosinus
-/* DIV */     {sCalc_Div,        CALC_DIV},   // Dividieren
-/* EQ */      {sCalc_Eq,         CALC_EQ},   	// gleich
-/* G */       {sCalc_G,          CALC_GRE},  	// groesser
-/* GEQ */     {sCalc_Geq,        CALC_GEQ},  	// groesser gleich
-/* L */       {sCalc_L,          CALC_LES},  	// kleiner
-/* LEQ */     {sCalc_Leq,        CALC_LEQ},  	// kleiner gleich
-/* MAX */     {sCalc_Max,        CALC_MAX},  	// Maximalwert
-/* MEAN */    {sCalc_Mean,       CALC_MEAN},  // Mittelwert
-/* MIN */     {sCalc_Min,        CALC_MIN},  	// Minimalwert
-/* MUL */     {sCalc_Mul,        CALC_MUL},  	// Multiplizieren
-/* NEQ */     {sCalc_Neq,        CALC_NEQ},  	// nicht gleich
-/* NOT */     {sCalc_Not,        CALC_NOT},  	// log. nicht
-/* OR */      {sCalc_Or,         CALC_OR},   	// log. oder
-/* PHD */     {sCalc_Phd,        CALC_PHD},   // Prozent
-/* POW */     {sCalc_Pow,        CALC_POW},	// Potenzieren
-/* ROUND */   {sCalc_Round,      CALC_ROUND},	// Runden
-/* SIN */     {sCalc_Sin,        CALC_SIN},  	// Sinus
-/* SQRT */    {sCalc_Sqrt,       CALC_SQRT},	// Wurzel
-/* SUB */     {sCalc_Sub,        CALC_MINUS},	// Subtraktion
-/* SUM */     {sCalc_Sum,        CALC_SUM},  	// Summe
-/* TAN */     {sCalc_Tan,        CALC_TAN},  	// Tangens
-/* XOR */     {sCalc_Xor,        CALC_XOR}   	// log. xoder
+/* ACOS */    {{sCalc_Acos},		CALC_ACOS},  // Arcuscosinus
+/* ADD */     {{sCalc_Add},        CALC_PLUS},  // Addition
+/* AND */     {{sCalc_And},        CALC_AND},  	// log. und
+/* ASIN */    {{sCalc_Asin},       CALC_ASIN},  // Arcussinus
+/* ATAN */    {{sCalc_Atan},       CALC_ATAN},  // Arcustangens
+/* COS */     {{sCalc_Cos},        CALC_COS},  	// Cosinus
+/* DIV */     {{sCalc_Div},        CALC_DIV},   // Dividieren
+/* EQ */      {{sCalc_Eq},         CALC_EQ},   	// gleich
+/* G */       {{sCalc_G},          CALC_GRE},  	// groesser
+/* GEQ */     {{sCalc_Geq},        CALC_GEQ},  	// groesser gleich
+/* L */       {{sCalc_L},          CALC_LES},  	// kleiner
+/* LEQ */     {{sCalc_Leq},        CALC_LEQ},  	// kleiner gleich
+/* MAX */     {{sCalc_Max},        CALC_MAX},  	// Maximalwert
+/* MEAN */    {{sCalc_Mean},       CALC_MEAN},  // Mittelwert
+/* MIN */     {{sCalc_Min},        CALC_MIN},  	// Minimalwert
+/* MUL */     {{sCalc_Mul},        CALC_MUL},  	// Multiplizieren
+/* NEQ */     {{sCalc_Neq},        CALC_NEQ},  	// nicht gleich
+/* NOT */     {{sCalc_Not},        CALC_NOT},  	// log. nicht
+/* OR */      {{sCalc_Or},         CALC_OR},   	// log. oder
+/* PHD */     {{sCalc_Phd},        CALC_PHD},   // Prozent
+/* POW */     {{sCalc_Pow},        CALC_POW},	// Potenzieren
+/* ROUND */   {{sCalc_Round},      CALC_ROUND},	// Runden
+/* SIN */     {{sCalc_Sin},        CALC_SIN},  	// Sinus
+/* SQRT */    {{sCalc_Sqrt},       CALC_SQRT},	// Wurzel
+/* SUB */     {{sCalc_Sub},        CALC_MINUS},	// Subtraktion
+/* SUM */     {{sCalc_Sum},        CALC_SUM},  	// Summe
+/* TAN */     {{sCalc_Tan},        CALC_TAN},  	// Tangens
+/* XOR */     {{sCalc_Xor},        CALC_XOR}   	// log. xoder
 };
 
 double __READONLY_DATA nRoundVal[] = {

Missing parenthesis around a boolean expression in an if

Typical warning :

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx: In member function 'void binfilter::SmXMLExport::ExportBrace(const binfilter::SmNode*, int)':

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_starmath/source/starmath_mathml.cxx:3832: warning: suggest parentheses around assignment used as truth value

For example :

@@ -178,7 +178,7 @@
{
    if ( ppPrev )
    {
-      if ( *ppPrev = pNext )
+	if ( (*ppPrev = pNext) )


Comments interlaced (/* between /* and */)

/* */ is C comment and is not the best in C++ files. The problem is two C like comments cannot be interlaced.

When occuring, a warning is triggered

Typical warning :

/Users/ericb/Desktop/DEV300_m26/binfilter/bf_sfx2/source/doc/sfx2_objxtor.cxx:151:1: warning: "/*" within comment

Example of solution :


Index: binfilter/inc/bf_sw/unoobj.hxx
===================================================================
RCS file: /cvs/framework/binfilter/inc/bf_sw/unoobj.hxx,v
retrieving revision 1.7
diff -u -r1.7 unoobj.hxx
--- binfilter/inc/bf_sw/unoobj.hxx	11 Apr 2008 02:48:42 -0000	1.7
+++ binfilter/inc/bf_sw/unoobj.hxx	6 May 2008 11:45:59 -0000
@@ -584,7 +584,7 @@
     virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
                   const ::com::sun::star::uno::Reference
                   < ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 
                   throw(
                        ::com::sun::star::beans::UnknownPropertyException, 
                        ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException
                   );
 
 };
-/*-----------------20.03.98 08:26-------------------
+//-----------------20.03.98 08:26-------------------
 
 --------------------------------------------------*/
 /* das wird zunaechst nicht gebraucht - bisher fuer den XPropertySetCloner

Note: the code has been modified for readability reason.

Todo

Have a deeper look into potential students applications around sc :

http://wiki.services.openoffice.org/wiki/Calc/Implementation/Spreadsheet_Functions

http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office-formula

http://wiki.oasis-open.org/office/Formula_Work

http://wiki.services.openoffice.org/wiki/Calc/ODFF_Implementation/Schedule


Links

Variables: Tutorial

Backup

User:Ericb/backup

Personal tools