incubator-ooo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ksch...@apache.org
Subject svn commit: r1175548 - in /incubator/ooo/ooo-site/trunk/content/sc: ./ addin_howto.html compdocfileformat.odt compdocfileformat.pdf excelfileformat.odt excelfileformat.pdf index.html robots.txt row-limit.html solver.html
Date Sun, 25 Sep 2011 19:42:15 GMT
Author: kschenk
Date: Sun Sep 25 19:42:14 2011
New Revision: 1175548

URL: http://svn.apache.org/viewvc?rev=1175548&view=rev
Log:
KLS - added sc repository

Added:
    incubator/ooo/ooo-site/trunk/content/sc/
    incubator/ooo/ooo-site/trunk/content/sc/addin_howto.html   (with props)
    incubator/ooo/ooo-site/trunk/content/sc/compdocfileformat.odt   (with props)
    incubator/ooo/ooo-site/trunk/content/sc/compdocfileformat.pdf   (with props)
    incubator/ooo/ooo-site/trunk/content/sc/excelfileformat.odt   (with props)
    incubator/ooo/ooo-site/trunk/content/sc/excelfileformat.pdf   (with props)
    incubator/ooo/ooo-site/trunk/content/sc/index.html   (with props)
    incubator/ooo/ooo-site/trunk/content/sc/robots.txt   (with props)
    incubator/ooo/ooo-site/trunk/content/sc/row-limit.html   (with props)
    incubator/ooo/ooo-site/trunk/content/sc/solver.html   (with props)

Added: incubator/ooo/ooo-site/trunk/content/sc/addin_howto.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/sc/addin_howto.html?rev=1175548&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/sc/addin_howto.html (added)
+++ incubator/ooo/ooo-site/trunk/content/sc/addin_howto.html Sun Sep 25 19:42:14 2011
@@ -0,0 +1,395 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
+	<TITLE></TITLE>
+	<META NAME="GENERATOR" CONTENT="StarOffice">
+	<META NAME="CREATED" CONTENT="20010729;13095251">
+	<META NAME="CHANGEDBY" CONTENT="Gunnar Timm">
+	<META NAME="CHANGED" CONTENT="20010802;17080864">
+</HEAD>
+<BODY>
+<H1>How to add-in in OpenOffice.org Calc</H1>
+<P>This text is an instruction on how to use the add-in interface of
+OpenOffice.org Calc to create additional functions, which can be
+used like the embedded ones. The Analysis add-in gives us an example,
+on how this could work in the practice. You should also take into
+account, that only basic techniques are explained. Furthermore this
+shouldn't be a detailed instruction on UNO, but only some parts are
+mentioned, which are used in the context of solving problems in the
+Analysis add-in. The intention is, that you can reach a result in a
+few hours, without any knowledge of UNO. But you should approximately
+know, what OpenOffice.org Calc is and what and how you can solve
+something with Calc. Of course the knowledge on how to create
+C-/C++-programms and which tools are used for that, is essential. For
+an explanation of the necessary interfaces please see the description
+of the add-in interface at <A HREF="http://sc.openoffice.org/">sc.openoffice.org</A>.</P>
+<P>A good point to start with an own add-in might be to copy the
+explained files and modify all identifier with &#147;Analysis&#148;
+to your own needings. E.g. to &#147;MyOwnAddin&#148;. Although this
+name is unusual, it will help you to find the important places... ;-)</P>
+<P>Another remark: You will often find the use of macros like
+&#147;constREFXPS&#148;. I didn't use this to make the source
+obscure, but to make the very long expressions more readable.
+Furthermore, if you know the meaning ones, it's no longer of big
+interest. Important macros can be found in &quot;analysisdefs.hxx&quot;.</P>
+<H2>What we need to create an add-in</H2>
+<UL>
+	<LI><P>UDK</P>
+	<P>The so called &quot;UNO Development Kit&quot; is necessary to
+	deal with the OpenOffice.org API. Descriptions and other important
+	things around this theme are located on <A HREF="http://udk.openoffice.org/">http://udk.openoffice.org/</A></P>
+	<LI><P>OpenOffice.org Calc</P>
+	<P>If you want to run an add-in, the easiest way is to use
+	OpenOffice.org Calc. The AutoPilot for functions is a good place,
+	where the functionality of the add-in can be checked.</P>
+	<LI><P>Solver Tarball</P>
+	<P>The Analysis add-in makes use of a library called &quot;tools&quot;,
+	which contains e.g. the resource manager and other usable stuff.
+  This is not always necessary for another add-in, but in this case it
+	was a great help.</P>
+	<LI><P>Appropriate compiler</P>
+	<P>Find more infos on which environment to use on homepage of the
+	UDK.</P>
+	<LI><P>Additional descriptions</P>
+	<P>The OpenOffice.org Calc project has got its own homepage on
+	<A HREF="http://sc.openoffice.org/">http://sc.openoffice.org/</A>.
+	There you will also find a link to description of the add-in service.</P>
+</UL>
+<H2>Minimum parts to use</H2>
+<P>The Analysis add-in mainly consists of the class &quot;AnalysisAddIn&quot;.
+To implement this class, I used the following files.</P>
+<H3>IDL-file</H3>
+<P>This file defines the interfaces. In this case it is called
+&#147;analysisadd.idl&#148;. All the interfaces are located in the
+module com::sun:star::sheet:addin. All functions, which are extending
+the OpenOffice.org Calc, are listed here. What you define here by the
+signature of a function, will reflect the type of the parameters and
+the type of return value. At the end of the module declaration, these
+interfaces are combined to the service &quot;Analysis&quot;. In the
+Analysis add-in we are using three interfaces: XcompatibilityNames
+(which will be described in the &#147;Advanced parts to use&#148;),
+&#147;XAnalysis&#148; and &quot;XAddin&quot;.</P>
+<P>For a further description of the IDL stuff used here, please look
+at <A HREF="http://udk.openoffice.org/common/man/concept/unointro.html#UNOIDL">http://udk.openoffice.org/common/man/concept/unointro.html#UNOIDL</A>
+and in the context with add-ins
+<A HREF="http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/AddIn.html">http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/AddIn.html</A>.</P>
+<H3>Header file(s)</H3>
+<P>The main header file is &quot;analysis.hxx&quot; which contains
+the class &quot;AnalysisAddIn&quot;. Each declaration of a function
+in the IDL file matches to its counterpart as a method in this class.
+You should always consider that neither something is left out, nor
+may the signature differ from the one in the IDL file, because the
+derivation is pure virtual.</P>
+<P>Furthermore, there are several methods which must be implemented
+to provide all required functionality for an add-in.</P>
+<H4>Constructor</H4>
+<P>&quot;AnalysisAddIn()&quot; (constructor) is called, when the
+shared library is initialised. In these add-in in, nothing is created
+at this time. This will happen, when it's necassaray (and possible)
+at later time.</P>
+<H4>Destructor</H4>
+<P>But much more important in the context of initialise/deinitialise
+a shared library is the destructor. While collecting experiences with
+the handling of resources, it happend to me, that the destructor of
+the resource manager crashed. In the end I found out, that all
+resource managers are deleted before the destructor of a shared
+library is called. In the case of an add-in, it is nearly impossible
+(or with a huge amount) to delete resource managers by yourself.
+Fortunately is not really a must, because it's done from another
+instance.</P>
+<H4>getProgrammaticFuntionName</H4>
+<P>This is not used by OpenOffice.org Calc, but it might be
+implemented, when the add-in is used in another context.</P>
+<H4>getDisplayFunctionName</H4>
+<P>This method returns the name for a given function, which should be
+displayed for the user, e.g. in a formula. In the Analysis add-in, the
+strings for this names are stored in resource files, so you will find
+several ones for different languages.</P>
+<H4>getFunctionDescription</H4>
+<P>The strings which this method returns are displayed in the
+AutoPilot for functions to give a short description for the entire
+function. As the DisplayFunctionName these strings resides in
+resources.</P>
+<H4>getDisplayArgumentName</H4>
+<P>For each parameter you will find a name which occurs in the
+parameter list. These strings are requested parameter wise.</P>
+<P>One special parameter should be mentioned here: The &quot;constREFXPS&amp;&quot;
+(&quot;com::sun::star::beans::XPropertySet&quot; in the IDL file) in
+some functions is not visible in the UI. It's a &quot;hidden&quot;
+parameter for which no request is generated, but it must be
+considered in the count of parameters, when informations for the
+other parameters are requested.</P>
+<P>Same with resources applies here.</P>
+<H4>getArgumentDescription</H4>
+<P>Unlike the previous method, a description of a parameter is
+returned, which is also used in the AutoPilot for functions. The
+remarks done before also applying here.</P>
+<H4>getProgrammaticCategoryName</H4>
+<P>Each function in OpenOffice.org Calc can be assigned to a
+category. This is also used in AutoPilot for functions to make the
+listing of functions clearer. The lack in the current implementation
+of Calc is, that only the predefined categories are displayed. But I
+recommend to use own categories (e.g. &quot;Technical&quot;), when
+the predefined don't fit the proper context, even if these categories
+are displayed under add-in. But if one day the user defined will work,
+you don't need to change something! ;-)</P>
+<P>So this method returns the internal name for the category, which
+the function should be assigned to.</P>
+<H4>getDisplayCategoryName</H4>
+<P>Same as getProgrammaticCategoryName but this name of the category
+will be displayed in the UI. Of course this makes only sense, if it's
+a user defined one. For the build in categories the names of course
+are fix. In the current implementation no language dependent strings
+are returned. This should be done, when Calc gets support for user
+defined categories.</P>
+<H4>getCompatibilityNames</H4>
+<P>This method is very important in the context with the im- and
+export of Excel files. For each function a list is returned, where
+every element holds a name and a accompanying language. With this it
+is possible to parse a number of language variants of the add-in for
+the import. One remark: Excel is only able to load such add-in
+functions, which are in the same language as the installed add-in. In
+this case, OpenOffice.org Calc is a little bit more advanced than
+Excel... :-) In the opposite direction, when exporting to Excel, the
+installed OpenOffice.org language is chosen to select a name.</P>
+<P>The main goal for the implementation of the Analysis add-in was to
+get a better compatibility to Excel. For this reason the
+&quot;CompatibilityNames&quot; are chosen in a way, that they are
+identically to those which are uses by Excel. These don't need to
+match the &quot;DisplayFunctionNames&quot;, but in most cases they
+do. Exceptions are the cases, where the Excel namings colliding with
+already build in functions of Calc. In this cases, a simple &quot;_ADD&quot;
+is appended to the name.</P>
+<H4>setLocale</H4>
+<P>By calling this method, Calc tells the add-in, in which language to
+operate. This affects of course the resource manager. Because this
+method is called after running the constructor, the resource manager
+is not initialised in the constructor but by calling this method. It
+would be even possible to change this language in the runtime,
+because all dependent parts will be created newly. But this is not
+provided by OpenOffice.org.</P>
+<H4>getLocale</H4>
+<P>Gives back, what is set by setLocale before.</P>
+<H4>getServiceName</H4>
+<P>The name is in this case simply
+&quot;com.sun.star.sheet.addin.Analysis&quot;.</P>
+<H4>getImplementationName</H4>
+<P>&quot;com.sun.star.sheet.addin.AnalysisImpl&quot; is given back
+here.</P>
+<H4>supportsService</H4>
+<P>This method checks, wether a requested service can be supported or
+not. The Analysis add-in supports only &quot;com.sun.star.sheet.AddIn&quot;
+and &quot;com.sun.star.sheet.addin.Analysis&quot;.</P>
+<H4>getSupportedServiceNames</H4>
+<P>In the returned sequence of strings are all services listed, which
+are supported by the add-in. This is a little bit &quot;double&quot;
+to supportsService, but it must be implemented to meet the
+requirements of an add-in implementation. The strings are same as
+supportsService can check.</P>
+<H4>Other methods in the class AnalysisAddIn</H4>
+<P>I'm only explaining that functions, which gives a good overview of
+the ways parameter can be passed to and from a function. A good
+description of possible parameters can also be found on
+<A HREF="http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/AddIn.html">http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/AddIn.html</A>.</P>
+<H4>getWorkday</H4>
+<P>This function returns a simple signed integer with a length of 32
+Bits (sal_Int32). Even this is just a simple number, it represents a
+date. This date can be displayed in OpenOffice.org Calc by choosing
+a proper date format for a cell. The meaning of this number is the
+offset in days from a given base date. So it is necessary to get
+this base date to do the date calculations in the right way, e.g. if
+you try to get the weekday, month, etc. from a date. For this purpose
+the first parameter is good for. The XPropertySet contains a
+PropertyValue named &quot;NullDate&quot;, which is the mentioned base
+for all date calculations in Calc.</P>
+<P>In the context of passing parameters to an add-in another remark is
+essential: When a user e.g. enters a floating point value, the
+resulting double value is cut to a sal_Int32. So there is no need to
+do this in the add-in. This also applies to strings entered directly
+(not strings which are the result of a reference). When the functions
+want to have a number, Calc will convert the text to a proper
+number.</P>
+<P>The next very important parameter is the ANY
+(::com::sun::star::uno::Any). This data type can carry various other
+(basic) data types like double, OUString, Sequence, Void... An
+optional paramter will be represented e.g. by Void, when this
+parameter is left empty from the user. But be carefull: The content
+of an empty cell is an empty string, not a Void as you may expected.
+This must be considered when dealing with a range of cells as a
+parameter and empty cells must be ignored for the calculation.</P>
+<H4>getYearfrac</H4>
+<P>This method gives back a double. This data type is similar to the
+usage of a sal_Int32, but with a bigger definition range. A special
+application for a double could also be the combination of a date and
+a time. In this case the fractional part of the number is the day
+time expressed as a fraction of a whole day. E.g. &quot;0.5&quot;
+would be displayed as &quot;12:00&quot; when you choose a number
+format like &quot;hh:mm&quot;.</P>
+<H4>getIseven</H4>
+<P>This function is another example of the different meaning of
+number. The returned sal_Int32 is used as a boolean value where a
+zero simply means false and all other numbers true. This behaviour is
+like in C/C++.</P>
+<H4>getMultinomial</H4>
+<P>When a range is used as a parameter, e.g. &quot;A1:D42&quot;, a
+sequence of sequences (in this case of sal_Int32) is passed to the
+method. The implementation of this function is also a good example on
+how to get each element of a sequence (of sequences).</P>
+<H4>What is missing as an example in the Analysis add-in</H4>
+<P>Whenever you want to do calculations with matrixes, a sequence of
+sequences must be given back as the result. Calc will call the
+function ones and copy the single results to the matching cells,
+depending on how the formula was entered. E.g., if you enter the matrix
+formula in the array A1:E5 and you give back a 5x5 sequence as the result
+of your function, you will find each element of the sequence in the
+corresponding cell. Since you won't find an
+example for this purpose, just try to play around on your own... ;-)</P>
+<H4>How errors are returned to Calc</H4>
+<P>When errors occur in an add-in, an exception is thrown to indicate,
+that something went wrong. In the current implementation, there are
+only two different exceptions used: RuntimeException and
+IllegalArgumentException.</P>
+<P>The RuntimeException is thrown, when the resource manager could
+not be initialised.</P>
+<P>But whenever a value paramter is invalid or a calculation can't be
+done (for several reasons), an IllegalArgumentException is used.
+Other errors (e.g. number of parameters is wrong) are checked by Calc
+so the function in the add-in isn't called in this cases. That's why
+other errors than &quot;Illegal Argument&quot; can be shown, although
+the add-in functions only use this one.</P>
+<H3>Source file(s)</H3>
+<P>Most things in the context of the needed methods are already
+mentioned in the part before. Here I want to draw your attention on
+some structs, wich might reduce the amount of work for a new add-in.</P>
+<P>For each function the add-in has to know a bunch of information
+which are asked from Calc in the initialisation phase (see also the
+description of getProgrammaticFuntionName up to
+getSupportedServiceNames). This information is stored in the table
+pFuncDataArr at the beginning of &quot;analysishelper.cxx&quot;. Each
+line expands to the info about the internal name (of the method to
+the function), Resource ID of the UI name, Resource ID of the
+function description (also with parameter name and parameter
+description), a boolean value which is true if the name already exists
+in Calc, a boolean value which is true when the internal parameter
+(XPropertySet) is passed to the function, Resource ID of the list for
+the translated function names for several languages, the number of
+parameters which are described and at least the category to which the
+function should belong to. Because the Resource IDs and the method
+names use a similar name scheme, the necessary number of details in
+a data line is reduced with the use of a macro to good readable
+amount. Another yield is the good extendability of this table.</P>
+<P>When you go into the sources you might wonder, why in some cases a
+functionality is implemented, which is already availlable in other
+parts of the OpenOffice.org. Well, this is done because we wanted the
+Analysis add-in to be as independent as possible from the
+OpenOffice.org. The optimum would have been to be only dependent from
+UNO (or the UDK). This was not possible at all, e.g. the handling of
+the resources is to complicated. But when you create your own add-in
+it would be possible (without the use of resources and other small
+things) to be independent from these shared libs so you can use your
+add-in in various versions of OpenOffice.org Calc until the UDK
+changes its version (this happens much less for the UDK than for the
+OpenOffice.org!). The Analysis add-in must however be build new when
+the version number (e.g. 632 -&gt; 638) of the OpenOffice.org is
+changed. This is of course uncomfortable when you have to do a build
+every several weeks to be always up to date even if you didn't change a
+bit of your own code.</P>
+<H2>Advanced parts to use</H2>
+<P>One big goal of the Analysis add-in should have been the ability to
+provide the function name translation for as much languages (in which
+the Excel Analysis add-in is provided for) as possible. To achieve
+this I used resources to get multiple language support for the names
+and descriptions. So depending from the installed language, you will
+get the proper (hope so) translation of all strings. A side effect of
+our translation process is, that I get a list of all translated
+function names in the a correct character encoding (UTF-8) from an
+intermediate file. Read more to this topic later in a following
+paragraph. Even so it's not that hard to use resources, it would be
+much heavier to translate them into several languages. It's not the
+process of translating itself which is not so easy, but to convert
+the strings to an encoding, which the resource manager can cope with.
+Internally we use several tools and automatism to control the flow of
+the data from the development &lt;-&gt; translation. Because this is
+not yet available / usable for the public, it's not easy to provide
+more than English for an outsider. Perhaps this will change in the
+future.</P>
+<P>When dealing with resources, we need IDs to select the desired one
+out of *.res-files. These IDs are located in &quot;analysis.hrc&quot;.
+The description of the functions and the name and description of
+the parameters is located in &quot;analysis.src&quot;. In each
+sub-resource you will find several strings. The first one (String 1)
+is always the function description. After this (String 2) the name
+and description (String 3) of the first parameter is following.
+String 4 and String 5 belongs to the second parameter, and so on. The
+first step in the development was the providing of the texts without
+tag (default development languages = German) and (if possible) the
+English. The rest of the strings was merged with the above mentioned
+tools for the translation. To learn more about how to get these
+strings, you should follow what &quot;AnalysisAddIn::GetFuncDescrStr()&quot;
+does when it's called.</P>
+<P>The next part of the resources is &quot;analysis_funcnames.src&quot;.
+Here are function names located, which are visible in the UI of
+OpenOffice.org Calc. Follow &quot;AnalysisAddIn::GetDisplFuncStr()&quot;
+to examine the access to these strings.</P>
+<P>But the more &quot;tricky&quot; part of the resources is in
+&quot;analysis_deffuncnames.src&quot;. This set of string arrays,
+where each array holds all known function names in different
+languages for one function. These are always sorted in a special
+order. And even if they might be the same in some languages, they
+must appear for every language seperately to ensure, that the proper
+string is selected (for a given language) for the Excel export! In
+&quot;AnalysisAddIn::getCompatibilityNames()&quot; you can see the
+usage of these string arrays.</P>
+<H2>Building an add-in</H2>
+<P>When you create your own add-in you surely want to make it run in
+OpenOffice.org Calc. To do so you must build your source to get an
+executable shared library. This process is controlled by a makefile
+called &quot;makefile.mk&quot;. As a first step for your own project
+you might copy the one from the Analysis add-in and exchange all name
+with &quot;Analysis&quot; by the name of your own add-in.</P>
+<P>All source files which generate object files (C++/C-source) are
+listed in the define for &quot;SLOFILES&quot; e.g.
+&quot;$(SLO)$/analysis.obj&quot; for &quot;analysis.cxx&quot;. So
+your additional C++ source files will go here.</P>
+<P>The right place for resource files is found in the define for
+&quot;SRCFILES&quot;. Put your one here and you should succeed with
+resources. If you don't use any resources, you should remove the
+section which is marked with &quot;Resourcen&quot;.</P>
+<P>In the definition for &quot;SHL1STDLIBS&quot; you will find at
+least all libraries to which the add-in should be linked against.
+While &quot;CPPUHELPERLIB&quot;, &quot;CPPULIB&quot;, &quot;VOSLIB&quot;
+and &quot;SALLIB&quot; is a good default for your own add-in, the use
+of &quot;TOOLSLIB&quot; is optional. Of course it's always possible
+to use the functionality of the shared libraries coming with
+OpenOffice.org. In this case you have to look up, which lib to link
+additionally.</P>
+<H2>Using an add-in</H2>
+<P>When you've successfully created an add-in, Calc should know, that
+this exists. So copy the created shared library into the directory
+&quot;program&quot; and if you use resources, copy the *.res files
+into &quot;program/resource&quot; directory. Then you have to
+register this new library with the regcomp tool (wich should come
+together with the Solver tarball), e.g. &quot;regcomp -register -r
+\program\applicat.rdb -c analysis638mi.dll&quot;. If you then start
+OpenOffice.org and open a Calc spreadsheet, you can access your new
+functions as the build in ones. To check this, open the AutoPilot for
+functions an search in the list for your new ones. There they should
+work like all others. You can also check, if the functions are listed
+in the proper category.</P>
+<H2>Link summary</H2>
+<P>
+<A HREF="http://sc.openoffice.org/">OpenOffice.org Calc project homepage</A><BR>
+<A HREF="http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/AddIn.html">AddIn service API documentation</A><BR>
+<A HREF="http://sc.openoffice.org/source/browse/sc/scaddins/source/analysis/">Browsable source code of the Analysis add-in</A><BR>
+<A HREF="http://udk.openoffice.org/">UDK project homepage</A><BR>
+<A HREF="http://udk.openoffice.org/common/man/concept/unointro.html#UNOIDL">UNO-IDL description (in the UDK project)</A><BR>
+</P>
+<P><BR><BR>
+</P>
+<P>
+Author: Gunnar Timm (created: 20010802)<BR>
+Last change: 20011002
+</P>
+</BODY>
+</HTML>

Propchange: incubator/ooo/ooo-site/trunk/content/sc/addin_howto.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/ooo/ooo-site/trunk/content/sc/compdocfileformat.odt
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/sc/compdocfileformat.odt?rev=1175548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/sc/compdocfileformat.odt
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/ooo/ooo-site/trunk/content/sc/compdocfileformat.pdf
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/sc/compdocfileformat.pdf?rev=1175548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/sc/compdocfileformat.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf

Added: incubator/ooo/ooo-site/trunk/content/sc/excelfileformat.odt
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/sc/excelfileformat.odt?rev=1175548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/sc/excelfileformat.odt
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/ooo/ooo-site/trunk/content/sc/excelfileformat.pdf
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/sc/excelfileformat.pdf?rev=1175548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/sc/excelfileformat.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf

Added: incubator/ooo/ooo-site/trunk/content/sc/index.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/sc/index.html?rev=1175548&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/sc/index.html (added)
+++ incubator/ooo/ooo-site/trunk/content/sc/index.html Sun Sep 25 19:42:14 2011
@@ -0,0 +1,171 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
+	<TITLE>Spreadsheet Project</TITLE>
+	<META NAME="GENERATOR" CONTENT="StarOffice 9  (Win32)">
+	<META NAME="AUTHOR" CONTENT="Niklas Nebel">
+	<META NAME="CREATED" CONTENT="20061208;17510400">
+	<META NAME="CHANGED" CONTENT="20090330;16354400">
+	<STYLE TYPE="text/css">
+	<!--
+		@page { size: 21.01cm 29.69cm }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en-US" DIR="LTR">
+<H1>Spreadsheet Project</H1>
+<P>Project Lead: <A HREF="mailto:niklas.nebel@oracle.com">Niklas Nebel</A>,
+Co-Lead: <A HREF="mailto:eike.rathke@oracle.com">Eike Rathke</A> (for
+questions, please use the <A HREF="/servlets/ProjectMailingListList">mailing
+lists</A>).</P>
+<P>This is the home page for the OpenOffice.org spreadsheet
+application, named Calc. A product description (including screenshot)
+can be found <A HREF="http://www.openoffice.org/product/calc.html">here</A>.
+Note that the Chart module has <A HREF="http://graphics.openoffice.org/chart/chart.html">its
+own page</A>.</P>
+<H2>User Information</H2>
+<P>If you're looking for user information about Calc, try these
+links:</P>
+<UL>
+	<LI><P><A HREF="http://wiki.services.openoffice.org/wiki/FAQ:Calc">FAQ:
+	Calc in the Wiki</A></P>
+	<LI><P><A HREF="http://user-faq.openoffice.org/new-faq/Calc/">User
+	FAQ: Calc</A></P>
+	<LI><P><A HREF="http://documentation.openoffice.org/faqs/spreadsheet/index.html">Calc
+	FAQs</A></P>
+	<LI><P><A HREF="http://documentation.openoffice.org/HOW_TO/index.html">HOW
+	TO (scroll down for Calc)</A></P>
+	<LI><P><A HREF="http://documentation.openoffice.org/manuals/index.html">User
+	Guides (all modules)</A></P>
+	<LI><P><A HREF="http://documentation.openoffice.org/tutorials/index.html">Tutorials
+	(all modules)</A></P>
+</UL>
+<H2>Submit an Issue</H2>
+<P>If you found a bug or want to suggest an enhancement, find the
+information about submitting issues <A HREF="http://qa.openoffice.org/issue_handling/project_issues.html">in
+the QA project</A>.</P>
+<H2>Develop Extensions</H2>
+<P>In addition to general <A HREF="http://wiki.services.openoffice.org/wiki/Extensions_development">extension
+development</A>, Calc supports the use of <A HREF="http://wiki.services.openoffice.org/wiki/Add-In">Add-In</A>
+components to extend the set of functions that can be used in cell
+formulas. Add-Ins can easily be created using the <A HREF="http://wiki.services.openoffice.org/wiki/OpenOffice_Calc_Add-In_Project_Type">Add-In
+Wizard</A> of the <A HREF="http://wiki.services.openoffice.org/wiki/OpenOffice_NetBeans_Integration">NetBeans
+integration</A>. Besides that, some articles are available:</P>
+<UL>
+	<LI><P><A HREF="http://wiki.services.openoffice.org/wiki/Simple_Calc_Add-in">Simple
+	Calc Add-in</A> in the Wiki</P>
+	<LI><P><A HREF="http://wiki.services.openoffice.org/wiki/CompleteAddIn">CompleteAddIn</A>
+	in the Wiki</P>
+	<LI><P>An older article <A HREF="http://sc.openoffice.org/addin_howto.html">&ldquo;How
+	to add-in&rdquo;</A></P>
+</UL>
+<H2>Development Documentation</H2>
+<UL>
+	<LI><P>The <A HREF="http://wiki.services.openoffice.org/wiki/Main_Page">OpenOffice.org
+	wiki</A> has a <A HREF="http://wiki.services.openoffice.org/wiki/Category:Calc">category
+	&quot;Calc&quot;</A>.</P>
+	<LI><P><A HREF="http://specs.openoffice.org/calc/index.html">Specifications</A>
+	for some spreadsheet features</P>
+	<LI><P><A HREF="testdocs/index.html">Import/export filter test
+	documents</A></P>
+	<LI><P>Excel file format documentation (in progress), available as
+	<A HREF="http://sc.openoffice.org/excelfileformat.odt">odt</A> or
+	<A HREF="http://sc.openoffice.org/excelfileformat.pdf">pdf</A>, and
+	Compound Document file format documentation, also as <A HREF="http://sc.openoffice.org/compdocfileformat.odt">odt</A>
+	or <A HREF="http://sc.openoffice.org/compdocfileformat.pdf">pdf</A></P>
+	<LI><P>See also the &ldquo;Documents &amp; files&rdquo; link to the
+	left of this page.</P>
+</UL>
+<H2>Current Development</H2>
+<P>To see what the Calc team at Sun is doing, look for the weekly
+update entries in the <A HREF="http://blogs.sun.com/GullFOSS/">GullFOSS
+blog</A>.</P>
+<P>Currently, the major topics of Calc development are:</P>
+<UL>
+	<LI><P>Performance</P>
+	<P>Current Calc activities within the <A HREF="http://performance.openoffice.org/">performance
+	project</A> are listed on the <A HREF="http://wiki.services.openoffice.org/wiki/Performance">performance
+	wiki page</A>.</P>
+	<LI><P>Excel 2007 import filter</P>
+	<P>The import filter for Excel 2007 files is continually improved.
+	For details about the filter implementation, see <A HREF="http://wiki.services.openoffice.org/wiki/SpreadsheetML">its
+	wiki page</A>.</P>
+	<LI><P>ODF formula specification</P>
+	<P>Within the OASIS OpenDocument <A HREF="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office-formula">Formula
+	Subcommittee</A>, a specification for spreadsheet formulas is being
+	created. Necessary changes are being implemented.</P>
+	<LI><P>Integration of R into Calc</P>
+	<P>A Summer of Code project has integrated the R environment with
+	Calc, see <A HREF="http://wiki.services.openoffice.org/wiki/R_and_Calc">the
+	page in the wiki</A>. The Summer of Code project is completed, but
+	the integration will continue to be improved.</P>
+	<LI><P>Usability improvements</P>
+	<P>There's a separate <A HREF="http://wiki.services.openoffice.org/wiki/Calc_Usability_Activities">wiki
+	page</A> about our usability activities.</P>
+	<LI><P>Solver</P>
+	<P>Calc has a <A HREF="http://blogs.sun.com/GullFOSS/entry/spreadsheet_solver_infrastructure">built-in
+	dialog</A> to control different solver components, and a linear
+	solver component included in the installation set. A non-linear
+	component is available as a <A HREF="http://blogs.sun.com/GullFOSS/entry/solver_for_nonlinear_programming">preliminary
+	version</A>.</P>
+</UL>
+<H2>To-Do List</H2>
+<P>These are some areas where help would be useful. Well thought-out
+patches are welcome, but please file your Joint Copyright Assignment
+(JCA) first, see <A HREF="http://contributing.openoffice.org/programming.html#jca">How
+to submit code to OpenOffice.org</A>.</P>
+<H3>Possible extensions</H3>
+<UL>
+	<LI><P>Statistical data analysis tools (ANOVA etc.), see <A HREF="http://www.openoffice.org/issues/show_bug.cgi?id=4921">issue
+	4921</A>.</P>
+	<P>Leonard Mada has posted <A HREF="http://sc.openoffice.org/servlets/ReadMsg?list=dev&amp;msgNo=1936">some
+	code</A> for ANOVA to the sc-dev mailing list.</P>
+	<LI><P>Component to check spreadsheet documents for potential errors</P>
+	<P>Write an extension that checks a spreadsheet document for
+	potential errors in formulas, presents a list of the findings to the
+	user, and allows to correct them. Note that the conversion of text
+	to numbers is already handled by the <A HREF="http://extensions.services.openoffice.org/project/CT2N">CT2N
+	extension</A>.</P>
+</UL>
+<H3>Other features</H3>
+<UL>
+	<LI><P>A Watch Window to watch certain cells</P>
+	<P>A Watch Window is a separate, small window that remains &quot;on
+	top&quot; and enables users to monitor a selected set of cells, see
+	<A HREF="http://www.openoffice.org/issues/show_bug.cgi?id=28386">issue
+	28386</A>. This could possibly also be done as an extension.</P>
+	<LI><P>CSV import enhancements</P>
+	<P>Most of the changes that were originally planned for the import
+	of csv (text) files have already been done. Some open points are
+	issues <A HREF="http://qa.openoffice.org/issues/show_bug.cgi?id=60110">60110</A>,
+	<A HREF="http://qa.openoffice.org/issues/show_bug.cgi?id=37668">37668</A>,
+	<A HREF="http://qa.openoffice.org/issues/show_bug.cgi?id=19369">19369</A>,
+	<A HREF="http://qa.openoffice.org/issues/show_bug.cgi?id=24076">24076</A>
+	and <A HREF="http://qa.openoffice.org/issues/show_bug.cgi?id=3687">3687</A>.</P>
+	<LI><P>Add new spreadsheet functions and parameters according to
+	ODFF</P>
+	<P>The <A HREF="http://www.oasis-open.org/committees/documents.php?wg_abbrev=office">OpenDocument
+	Format Formula specification</A> (ODFF aka OpenFormula) defines
+	several new spreadsheet functions and new optional parameters to
+	already existing functions that have to be implemented.</P>
+	<LI><P>See also the <A HREF="http://wiki.services.openoffice.org/wiki/Community_Innovation_Program/proposals">list
+	of suggestions</A> for the Community Innovation Program.</P>
+</UL>
+<H3>IssueZilla queries</H3>
+<UL>
+	<LI><P><A HREF="http://www.openoffice.org/issues/buglist.cgi?Submit+query=Submit+query&amp;component=Spreadsheet&amp;issue_status=NEW&amp;issue_status=STARTED&amp;issue_status=REOPENED&amp;email1=&amp;emailtype1=exact&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=exact&amp;emailreporter2=1&amp;issueidtype=include&amp;issue_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;short_desc=&amp;short_desc_type=substring&amp;long_desc=&amp;long_desc_type=substring&amp;issue_file_loc=&amp;issue_file_loc_type=substring&amp;status_whiteboard=&amp;status_whiteboard_type=substring&amp;keywords=easy2dev&amp;keywords_type=anytokens&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time">Spreadsheet
+	issues with keyword &ldquo;easy2dev&rdquo;</A></P>
+	<P>These are issues that someone new to the project might want to
+	look at. They generally don't require very deep insight into the
+	inner workings of Calc.</P>
+	<LI><P><A HREF="http://www.openoffice.org/issues/buglist.cgi?Submit+query=Submit+query&amp;component=Spreadsheet&amp;issue_status=NEW&amp;issue_status=STARTED&amp;issue_status=REOPENED&amp;email1=&amp;emailtype1=exact&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=exact&amp;emailreporter2=1&amp;issueidtype=include&amp;issue_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;short_desc=&amp;short_desc_type=substring&amp;long_desc=&amp;long_desc_type=substring&amp;issue_file_loc=&amp;issue_file_loc_type=substring&amp;status_whiteboard=&amp;status_whiteboard_type=substring&amp;keywords=needhelp&amp;keywords_type=anytokens&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time">Spreadsheet
+	issues with keyword &ldquo;needhelp&rdquo;</A></P>
+	<P>These are issues where help is needed.</P>
+	<LI><P><A HREF="http://qa.openoffice.org/issues/buglist.cgi?issue_type=ENHANCEMENT&amp;issue_type=FEATURE&amp;issue_type=TASK&amp;component=Spreadsheet&amp;issue_status=NEW&amp;issue_status=STARTED&amp;issue_status=REOPENED&amp;target_milestone=OOo+Later&amp;order=issues.target_milestone,%20issues.priority,%20issues.votes%20desc,%20issues.issue_id">Features
+	&amp; Enhancements with target &quot;Later&quot;</A></P>
+	<P>This is a long list, sorted by priority and votes. Some of these
+	may currently be blocked by other issues.</P>
+</UL>
+</BODY>
+</HTML>

Propchange: incubator/ooo/ooo-site/trunk/content/sc/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/ooo/ooo-site/trunk/content/sc/robots.txt
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/sc/robots.txt?rev=1175548&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/sc/robots.txt (added)
+++ incubator/ooo/ooo-site/trunk/content/sc/robots.txt Sun Sep 25 19:42:14 2011
@@ -0,0 +1,7 @@
+User-Agent: *
+Disallow: /source/
+Disallow: /issues/
+Disallow: /search/
+Disallow: /servlets/
+Disallow: /project/
+Disallow: /nonav/

Propchange: incubator/ooo/ooo-site/trunk/content/sc/robots.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/ooo/ooo-site/trunk/content/sc/row-limit.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/sc/row-limit.html?rev=1175548&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/sc/row-limit.html (added)
+++ incubator/ooo/ooo-site/trunk/content/sc/row-limit.html Sun Sep 25 19:42:14 2011
@@ -0,0 +1,1005 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
+	<TITLE>Increasing the row limit above 32000 rows</TITLE>
+	<META NAME="GENERATOR" CONTENT="StarOffice 7  (Solaris Sparc)">
+	<META NAME="AUTHOR" CONTENT="Eike Rathke">
+	<META NAME="CREATED" CONTENT="20010906;18022045">
+	<META NAME="CHANGEDBY" CONTENT="Eike Rathke">
+	<META NAME="CHANGED" CONTENT="20041206;13362800">
+	<META NAME="Document state" CONTENT="CWS rowlimit integrated as of SRC680_m42; CWS rowlimit2 integrated as of SRC680_m52; bugfixes as of SRC680_m59">
+	<META NAME="TODO" CONTENT="beyond 64k plan">
+	<STYLE>
+	<!--
+		@page { size: 8.5in 11in }
+		TD P { font-family: "Arial", sans-serif }
+		H1 { font-family: "Arial", sans-serif }
+		P { font-family: "Arial", sans-serif }
+		H2 { font-family: "Arial", sans-serif }
+		TH P { font-family: "Arial", sans-serif }
+		CODE { font-family: "Courier", monospace }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en-US" DIR="LTR">
+<H1 ALIGN=CENTER><SDFIELD TYPE=DOCINFO SUBTYPE=TITLE>Increasing the row limit above 32000 rows</SDFIELD></H1>
+<P>Author: <A HREF="mailto:er@openoffice.org?subject=Increasing the row limit above 32000 rows">Eike
+Rathke</A><BR>Document state: <SDFIELD TYPE=DOCINFO SUBTYPE=INFO1>CWS rowlimit integrated as of SRC680_m42; CWS rowlimit2 integrated as of SRC680_m52; bugfixes as of SRC680_m59</SDFIELD><BR>TODO:
+<SDFIELD TYPE=DOCINFO SUBTYPE=INFO2>beyond 64k plan</SDFIELD><BR>Last
+changed: <SDFIELD TYPE=DOCINFO SUBTYPE=CHANGE FORMAT=DATE SDNUM="1033;1033;NNNNMMMM D, YYYY">Monday, December 6, 2004</SDFIELD></P>
+<H2>Table of content</H2>
+<OL>
+	<LI><DD><A HREF="#Preliminary|outline" NAME="TOC Preliminary">Preliminary</A></DD><LI><DD>
+	<A HREF="#History|outline" NAME="TOC History">History</A></DD><LI><DD>
+	<A HREF="#Document structure overview|outline" NAME="TOC Document structure overview">Document
+	structure overview</A></DD><LI><DD>
+	<A HREF="#Position accessing methods|outline" NAME="TOC Position accessing methods">Position
+	accessing methods</A></DD><LI><DD>
+	<A HREF="#List of structs and classes having an USHORT (or short or UINT16 or INT16) row value as member variable|outline" NAME="TOC List of structs and classes having an USHORT (or short or UINT16 or INT16) row value as member variable">List
+	of structs and classes having an USHORT (or short or UINT16 or
+	INT16) row value as member variable</A></DD><LI><DD>
+	<A HREF="#List of defines using a limited row value|outline" NAME="TOC List of defines using a limited row value">List
+	of defines using a limited row value</A></DD><LI><DD>
+	<A HREF="#Some specials about row numbers|outline" NAME="TOC Some specials about row numbers">Some
+	specials about row numbers</A></DD><LI><DD>
+	<A HREF="#Strategy|outline" NAME="TOC Strategy">Strategy</A></DD><LI><DD>
+	<A HREF="#Road map and time frame|outline" NAME="TOC Road map and time frame">Road
+	map and time frame</A> 
+	</DD><LI><DD STYLE="margin-bottom: 0.2in">
+	<A HREF="#Table_of_steps" NAME="TOC_Table_of_steps">Table of steps</A>
+		</DD></OL>
+<H2><A NAME="Preliminary|outline"></A><A HREF="#TOC Preliminary">Preliminary</A></H2>
+<P>Currently the spreadsheet application is limited to 32000 rows per
+sheet. As we all know that is not enough for some uses. In this
+document I will describe the code changes which have to be done to
+increase the limit. Where necessary I will also insert some remarks
+about why the code is like it is, pitfalls and things to have in mind
+when changing the code. This document is under development, the goal
+is to have it completed by the end of the year, so changing the code
+may start next year (apart from some minor changes here and there
+which can be done on the fly). [Editor's note: that was back in 2001.
+The goal was shifted twice because of other tasks to be completed
+with higher priority. Hopefully we'll start modifying code by the end
+of July / start of August 2002]. You may wonder about that time
+frame, but increasing the row limit is not a task of changing one
+defined constant or similar. You will see as this document evolves.</P>
+<H2><A NAME="History|outline"></A><A HREF="#TOC History">History</A></H2>
+<P>Bear in mind that most document structures were designed back in
+old Win31 days and the number of rows was limited to 8192 then. Win31
+couldn't address more than 64kB in one contiguous memory area without
+<VAR>huge</VAR> effort (it could have been 16384 instead of 8192
+(what the unnamed competitors program implemented in its version 5)
+because with size_of_ptr==4 an array of 64kB could hold 16384
+pointers to rows, but anyways, it wasn't). In general, addressing a
+spreadsheet position is done using <VAR>unsigned short</VAR> type
+variables for column, row, sheet (AKA table). Theoretically this
+would allow 65536 rows to be addressed, but at some places there are
+<VAR>short</VAR> type variables used where relative addressing is
+needed, for example in cell references. Some special values like
+<VAR>USHRT_MAX</VAR> or <VAR>MAXROW+1</VAR> are used to denote an
+invalid row position, and furthermore the number of rows has to be
+dividable by a reasonable number producing a whole-numbered result
+which is necessary for the mechanism of broadcasting changes in areas
+where formulas are listening to. Hence the change from 16384 to 32000
+instead of 32768.</P>
+<H2><A NAME="Document structure overview|outline"></A><A HREF="#TOC Document structure overview">Document
+structure overview</A></H2>
+<P>Roughly said, a spreadsheet document may consist of up to 256
+sheets, each sheet having 256 columns with each column containing a
+dynamic array with elements containing the row number and a pointer
+to the cell for a given row. Empty cells are not stored. The array is
+binary searchable and for evenly distributed filled columns an
+interpolating search is used. A similar array holds the cell style
+attributes (font, alignment, number format and so on) with each entry
+specifying an end row for that attribute, thus formatting an entire
+column with identical attributes results in only one entry.</P>
+<H2><A NAME="Position accessing methods|outline"></A><A HREF="#TOC Position accessing methods">Position
+accessing methods</A></H2>
+<P>There are a lot of <CODE>class ScDocument</CODE> methods (see
+<CODE>inc/document.hxx</CODE> and <CODE>source/data/documen*.cxx</CODE>
+accessing a cell position by<BR><CODE>MethodName( USHORT nCol, USHORT
+nRow, USHORT nTab );</CODE><BR>where at least the <VAR>nRow</VAR>
+parameter will have to be changed to <VAR>long</VAR>, but it should
+be evaluated if all methods taking separated col/row/tab parameters
+couldn't be changed to take one <CODE>ScAddress</CODE> (see below)
+parameter instead. Similar, the <CODE>class ScTable</CODE> methods
+(see <CODE>inc/table.hxx</CODE> and
+<CODE>source/core/data/table*.cxx</CODE>)<BR><CODE>MethodName( USHORT
+nCol, USHORT nRow );</CODE><BR>and the <CODE>class ScColumn</CODE>
+methods (see <CODE>inc/column.hxx</CODE> and
+<CODE>source/core/data/column*.cxx</CODE>)<BR><CODE>MethodName(
+USHORT nRow );<BR></CODE>and the <CODE><CODE>class ScAttrArray</CODE></CODE>
+methods (see <CODE><CODE>inc/attarray.hxx</CODE></CODE> and
+<CODE><CODE>source/core/data/<CODE>attarray</CODE>.cxx</CODE></CODE>)<BR><CODE><CODE>MethodName(
+USHORT nRow );</CODE></CODE><BR>row parameters have to be changed,
+also all<BR><CODE><CODE>MethodName( ..., USHORT nStartRow, <CODE>USHORT
+nEndRow, ...</CODE> );</CODE></CODE><BR>of all of those
+classes.<BR><CODE>Search( USHORT nRow, short&amp; nIndex );</CODE><BR>of
+<CODE>ScColumn</CODE> and <CODE>ScAttrArray</CODE> and similar are
+special in a way that the <CODE>short&amp; nIndex</CODE> reference is
+used to return a position within an array where the position may at
+most be the number of rows used. This of course has to be changed as
+well. <BR><BR>Additionally, a <CODE>class ScAddress</CODE> (see
+<CODE>inc/global.hxx</CODE> and <CODE>source/core/data/global2.cxx</CODE>)
+contains column/row/table values encoded into one <VAR>UINT32</VAR>
+value such that the row value occupies 16 bit and column and table
+values each occupy 8 bit. Changing these would also affect the old
+binary file format, so appropriate conversion methods would have to
+be provided. It should be evaluated how a packing of information into
+any whatsoever sized variable space could be accomplished, since an
+<CODE>ScAddress</CODE> is quite often stored in memory. For example,
+one <VAR>INT32</VAR> may hold the row value and column and sheet
+positions may be stored in <VAR>INT16</VAR> values each. <VAR>INT16</VAR>
+because at least the sheet number shouldn't be limited to 256 anymore
+(this as a side effect of all the row limit changes, though a change
+of the real sheet accessing methods would have to be carried out in a
+second step).</P>
+<P>A cell reference (<CODE>struct SingleRefData</CODE> and <CODE>struct
+ComplRefData</CODE>, see <CODE>inc/refdata.hxx</CODE> and
+<CODE>source/core/tool/refdata.cxx</CODE>) in a formula contains an
+absolute position and an relative position. Both values are <VAR>INT16</VAR>
+values. If those are to be changed it should be thought over if it
+would be really necessary to keep both the absolute value and the
+relative value or if it wouldn't be sufficient to keep either one
+(which of course would imply some changes in the <CODE>class
+ScInterpreter</CODE> (see <CODE>source/core/inc/interpre.hxx</CODE>
+and <CODE>source/core/tool/interpr*.cxx</CODE>) and <CODE>class
+ScCompiler</CODE> (see <CODE>inc/compiler.hxx</CODE> and
+<CODE>source/core/tool/compiler.cxx</CODE> position accessing
+methods). This would save a significant amount of memory if a lot of
+references were used in a lot of formulas (which usually is the
+case).</P>
+<P>There is also a <CODE>class ScTripel</CODE> which partly
+implements features found in <CODE>class ScAddress</CODE>, and a
+<CODE>class ScRefTripel</CODE> which is similar to the <CODE>SingleRefData</CODE>
+with the exception that it is never used in formula data and has
+slightly different capabilities. Both, ScTripel and ScRefTripel (see
+<CODE>inc/global.hxx</CODE> and <CODE>source/core/data/global.cxx</CODE>),
+are leftovers from prior versions and should be replaced by <CODE>ScAddress</CODE>
+and a new (to be created) <CODE>class ScRefAddress</CODE>
+respectively throughout the entire application.</P>
+<H2><A NAME="List of structs and classes having an USHORT (or short or UINT16 or INT16) row value as member variable|outline"></A>
+<A HREF="#TOC List of structs and classes having an USHORT (or short or UINT16 or INT16) row value as member variable">List
+of structs and classes having an <VAR>USHORT</VAR> (or <VAR>short</VAR>
+or <VAR>UINT16</VAR> or <VAR>INT16</VAR>) row value as member
+variable</A></H2>
+<H3>Note: this list was created in 2001 and is incomplete
+[2004-01-26]</H3>
+<H3>inc/*.hxx</H3>
+<UL>
+	<LI><P>class ScAddress<BR>UINT32 nAddress; encoded row in lower 16
+	bit</P>
+</UL>
+<UL>
+	<LI><P>struct ScAttrEntry<BR>nRow; the end row of the range spanned
+	by the attribute</P>
+	<LI><P>class ScAttrArray<BR>nCount; number of used ScAttrEntry
+	entries (max: number of used rows)<BR>nLimit; number of allocated
+	entries (ditto)</P>
+	<LI><P>class ScAttrIterator<BR>short nPos; holds the index position
+	to a ScAttrArray element obtained by ScAttrArray::Search()
+	<BR>nRow;<BR>nEndRow;</P>
+	<LI><P>class ScMergeAttr<BR>INT16 nRowMerge;</P>
+	<LI><P>class ScFormulaCell<BR>nMatRows;</P>
+	<LI><P>class ScChartPositionMap<BR>nRowCount;</P>
+	<LI><P>class ScChartArray<BR>nStartRow;</P>
+	<LI><P>class ScChangeTrack<BR>nContentRowsPerSlot;<BR>nContentSlots;</P>
+	<LI><P>struct ColEntry<BR>nRow;</P>
+	<LI><P>class ScColumn<BR>nCount; number of used ColEntry entries
+	(max: number of used rows)<BR>nLimit; number of allocated entries
+	(ditto)</P>
+	<LI><P>struct ScReferenceEntry<BR>nRow;</P>
+	<LI><P>class ScConsData<BR>nRowCount;</P>
+	<LI><P>class
+	ScDBData<BR>nStartRow;<BR>nEndRow;<BR>nSortDestRow;<BR>nQueryDestRow;</P>
+	<LI><P>class ScDocumentIterator<BR>nRow;</P>
+	<LI><P>class
+	ScValueIterator<BR>nStartRow;<BR>nEndRow;<BR>nRow;<BR>nColRow;<BR>nNextRow;<BR>nAttrEndRow;</P>
+	<LI><P>class ScQueryValueIterator<BR>nRow;<BR>nColRow;<BR>nAttrEndRow;</P>
+	<LI><P>class ScCellIterator<BR>nStartRow;<BR>nEndRow;<BR>nRow;<BR>nColRow;</P>
+	<LI><P>class ScQueryCellIterator<BR>nRow;<BR>nColRow;<BR>nAttrEndRow;</P>
+	<LI><P>class ScDocAttrIterator<BR>nStartRow;<BR>nEndRow;</P>
+	<LI><P>class ScAttrRectIterator<BR>nStartRow;<BR>nEndRow;</P>
+	<LI><P>class ScHorizontalCellIterator<BR>nEndRow;<BR>USHORT*
+	pNextRows;<BR>nRow;</P>
+	<LI><P>class ScHorizontalAttrIterator<BR>nStartRow;<BR>nEndRow;<BR>USHORT*
+	pNextEnd;<BR>nRow;</P>
+	<LI><P>class
+	ScUsedAreaIterator<BR>nNextRow;<BR>nCellRow;<BR>nAttrRow;<BR>nFoundRow;</P>
+	<LI><P>struct RowInfo<BR>nRowNo;</P>
+	<LI><P>struct ScSymbolStringCellEntry<BR>nRow;</P>
+	<LI><P>class ScDocument<BR>nSrcMaxRow;</P>
+	<LI><P>class ScTableRowsObj<BR>nStartRow;<BR>nEndRow;</P>
+	<LI><P>class
+	ScDPOutput<BR>nTabStartRow;<BR>nMemberStartRow;<BR>nDataStartRow;<BR>nTabEndRow;</P>
+	<LI><P>class ScDPSaveData<BR>nRowGrandMode;</P>
+	<LI><P>struct ScDPTableIteratorParam<BR>nRowCount;</P>
+	<LI><P>class ScEditUtil<BR>nRow;</P>
+	<LI><P>struct ScImportParam<BR>nRow1;<BR>nRow2;</P>
+	<LI><P>class ScTripel<BR>nRow;<BR>NOTE: Replace usage of ScTripel
+	with ScAddress and delete ScTripel code. Delete ScTripel conversion
+	code from ScAddress.</P>
+	<LI><P>struct ScQueryParam<BR>nRow1;<BR>nRow2;<BR>nDestRow;</P>
+	<LI><P>struct ScSubTotalParam<BR>nRow1;<BR>nRow2;</P>
+	<LI><P>struct ScConsolidateParam<BR>nRow;</P>
+	<LI><P>struct ScPivotParam<BR>nRow;<BR>nRowCount;</P>
+	<LI><P>struct ScMarkEntry<BR>nRow;</P>
+	<LI><P>class ScMarkArray<BR>nCount; number of used ScMarkEntry
+	entries (max: number of used rows)<BR>nLimit; number of allocated
+	entries (ditto)</P>
+	<LI><P>class
+	ScPivot<BR>nSrcRow1;<BR>nSrcRow2;<BR>nDestRow1;<BR>nDestRow2;<BR>nDataStartRow;<BR>short
+	nRowCount; a count which in program flow may not exceed a value of
+	8. Just a nice trap for a grep.<BR>short
+	nDataRowCount;<BR>nRowIndex;<BR>This class is some old stuff almost
+	not needed anymore, was used for the old ... (pssst, we can't use
+	the word here since it is a registered trademark, guess by whom)
+	what is called DataPilot in our application. The class is only used
+	for import/export of the old binary file format.</P>
+	<LI><P>class ScArea<BR>nRowStart;<BR>nRowEnd;</P>
+	<LI><P>struct SingleRefData<BR>INT16 nRow;<BR>INT16 nRelRow;</P>
+	<LI><P>struct ScExtTabOptions<BR>UINT16 nTopRow;<BR>UINT16
+	nTopSplitRow;</P>
+	<LI><P>class ScExtDocOptions<BR>UINT16 nCurRow;</P>
+	<LI><P>struct ScSortParam<BR>nRow1;<BR>nRow2;<BR>nDestRow;</P>
+</UL>
+<H3>source/core/inc/*.hxx</H3>
+<UL>
+	<LI><P>class ScMatrix<BR>nAnzRow;</P>
+</UL>
+<H3>source/filter/inc/*.hxx</H3>
+<UL>
+	<LI><P>struct ScEEParseEntry<BR>nRow;<BR>nRowOverlap;</P>
+	<LI><P>class ScEEParser<BR>nRowCnt;<BR>nRowMax;</P>
+	<LI><P>class
+	XclExpTableOp<BR>nFirstRow;<BR>nLastRow;<BR>nColInpRow;<BR>nRowInpCol;<BR>nRowInpRow;</P>
+	<LI><P>struct ScHTMLTableStackEntry<BR>nRowCnt;</P>
+	<LI><P>struct ScHTMLAdjustStackEntry<BR>nNextRow;<BR>nCurRow;</P>
+	<LI><P>class ScHTMLTableData<BR>nFirstRow;<BR>nLastRow;<BR>nRowSpan;<BR>nDocRow;</P>
+	<LI><P>struct Sc10ColData<BR>Row;<BR>NOTE: Calc 1.0 import filter,
+	there shouldn't be any changes necessary.</P>
+	<LI><P>class XclExpCachedValueList<BR>nRows;</P>
+	<LI><P>class XclImpChart_LinkedData<BR>nMinRowVal;</P>
+</UL>
+<H3>source/filter/xml/*.hxx</H3>
+<UL>
+	<LI><P>class ScMyNotEmptyCellsIterator<BR>sal_uInt16 nCellRow;</P>
+</UL>
+<H3>source/ui/inc/*.hxx</H3>
+<UL>
+	<LI><P>class ScRedlinData<BR>nRow;</P>
+	<LI><P>class ScDataGrid<BR>nNumberOfRows;</P>
+	<LI><P>class ScGridWindow<BR>nFilterBoxRow;</P>
+	<LI><P>class ScNavigatorDlg<BR>nCurRow;</P>
+	<LI><P>class ScOutputData<BR>nEditRow;</P>
+	<LI><P>struct ScPrintState<BR>nStartRow;<BR>nEndRow;</P>
+	<LI><P>class ScPageRowEntry<BR>nStartRow;<BR>nEndRow;</P>
+	<LI><P>class
+	ScPrintFunc<BR>nRepeatStartRow;<BR>nRepeatEndRow;<BR>nStartRow;<BR>nEndRow;</P>
+	<LI><P>class ScSpellingEngine<BR>nOrgRow;<BR>nOldRow;</P>
+	<LI><P>class ScTabPageSortFields<BR>nFirstRow;</P>
+	<LI><P>class ScUndoCursorAttr<BR>nRow;</P>
+	<LI><P>class ScUndoEnterData<BR>nRow;</P>
+	<LI><P>class ScUndoPageBreak<BR>nRow;</P>
+	<LI><P>class ScUndoThesaurus<BR>nRow;</P>
+	<LI><P>class ScUndoSubTotals<BR>nNewEndRow;</P>
+	<LI><P>class ScUndoImportData<BR>nEndRow;</P>
+	<LI><P>class ScUndoRepeatDB<BR>nNewEndRow;</P>
+	<LI><P>class ScViewData<BR>nEditRow;<BR>nEditEndRow;</P>
+</UL>
+<H2><A NAME="List of defines using a limited row value|outline"></A><A HREF="#TOC List of defines using a limited row value">List
+of defines using a limited row value</A></H2>
+<UL>
+	<LI><P><CODE>#define MAXROW 31999<BR>inc/global.hxx</CODE><BR><B><U><I>THE</I></U></B>
+	limit.</P>
+	<LI><P><CODE>#define BCA_BRDCST_ALWAYS ScAddress( 0, 32767, 0
+	)<BR>inc/global.hxx</CODE><BR>A special address (outside the normal
+	valid address range) used to signal an &ldquo;always changed&rdquo;
+	function or cell.</P>
+	<LI><P><CODE>#define ASCIIDLG_MAXROWS
+	32000<BR>source/ui/dbgui/asciiopt.cxx</CODE><BR>The maximum number
+	of rows displayed in the ASCII import preview dialog. It is
+	questionable if this should be increased since arrays for holding
+	the imported data are created.</P>
+	<LI><P><CODE>NumericField ED_ROW: Maximum = 32000; Last = 32000;
+	<BR><CODE>source/ui/navipi/navipi.src</CODE>, <CODE>Window
+	RID_SCDLG_NAVIGATOR</CODE><BR></CODE>The navigator resource defines
+	an upper limit for the row edit field and its spin button.</P>
+</UL>
+<H2><A NAME="Some specials about row numbers|outline"></A><A HREF="#TOC Some specials about row numbers">Some
+specials about row numbers</A></H2>
+<P>A couple of iterators (see <CODE>inc/dociter.hxx</CODE> and
+<CODE>source/core/data/dociter.cxx</CODE>) make direct use of
+internal data structures like those of <CODE>ScColumn</CODE> and
+<CODE>ScAttrArray</CODE> using row values.</P>
+<P>Reference updating methods like those of <CODE>class ScRefUpdate</CODE>
+(see <CODE>inc/refupdat.hxx</CODE> and <CODE>source/core/tool/refupdat.cxx</CODE>)
+make extensive use of <VAR>USHORT</VAR> and <VAR>short</VAR>
+variables and the <VAR>MAXROW</VAR> limit.</P>
+<P>Each sheet contains two arrays, <CODE>pRowHeight</CODE> and
+<CODE>pRowFlags (see inc/table.hxx and source/core/data/table1.cxx)</CODE>,
+sized <VAR>MAXROW+1</VAR> each. If the number of rows is to be
+increased significantly a new mechanism would have to be implemented
+since keeping those row infos for a million rows or so isn't
+desirable. Even now these two arrays allocate about 90kB per sheet.</P>
+<P><CODE>class ScBroadcastAreaSlot</CODE> (see
+<CODE>source/core/data/bcaslot.cxx</CODE>) makes use of an upper row
+limit in the way that the rows are distributed over a number of
+slots. The number of slots is related to the number of rows.</P>
+<P><CODE>class ScChangeTrack</CODE> uses a similar technique to
+combine positions into slot buckets for faster access.</P>
+<P>Currently, both algorithms of <CODE>ScBroadcastAreaSlot</CODE> and
+<CODE>ScChangeTrack</CODE> can't work with an arbitrary changing row
+limit, they do need a fixed upper limit set at compile time. Both
+algorithms would also not work very well (regarding speed, memory
+footprint and efficiency) if the upper limit would be too high.</P>
+<P><CODE>ScChartArray::GlueState()</CODE> (see
+<CODE>source/core/tool/chartarr.cxx</CODE>) creates a temporary array
+which may become as big as the spanning area of a (multi-) selection.
+Currently the maximum limit this implies is 8MB (256 columns x 32000
+rows), this will automatically grow if more rows are available and
+the user spans a selection from upper left to lower right. However,
+the upcoming future chart implementation will not need this mechanism
+anymore, but we'll have to keep it for backwards compatibility.</P>
+<P>The drawing layer is not directly related to the row limit, but
+the area it covers is of course determined by the number of available
+rows.</P>
+<H2><A NAME="Strategy|outline"></A><A HREF="#TOC Strategy">Strategy</A></H2>
+<P>It would be challenging to offer an almost unlimited number of
+rows, say a million or two or hundred (if your system had that much
+memory). However, before that could be accomplished the above
+mentioned mechanisms of the drawing layer needed to be changed and
+row flags, ScBroadcastAreaSlot and ScChangeTrack needed to be changed
+to be less memory consuming.</P>
+<P>Therefor the changes should be carried out in several steps:</P>
+<OL>
+	<LI><P>Change all variables used for row numbers from <VAR>USHORT</VAR>
+	and <VAR>short</VAR> to <VAR>INT32</VAR> using a <CODE>SCROW</CODE>
+	typedef. This includes any changes needed or type conversion in
+	import/export filter, and to compensate for any side effect that
+	might occur. The change should be carried out successively instead
+	of in one big move in order to maintain a usable application and not
+	to render it useless for weeks. To help in finding all necessary
+	places a special access operators and methods converter class <CODE>SCROW</CODE>
+	should be used that forces the compiler to throw error diagnostics
+	whenever an <VAR>USHORT</VAR> or <VAR>short</VAR> is used in
+	combination with <CODE>SCROW</CODE>. A similar class is already
+	available (on the writer's machine ;-) and just needs some
+	modification.</P>
+	<LI><P>Find a solution for the memory footprint problem of the
+	<CODE>pRowHeight</CODE> and <CODE>pRowFlags</CODE> arrays. Similar
+	to the mechanism used to manage row entries of a column array of
+	used rows, dynamic arrays of applied row heights and flags should be
+	maintained.</P>
+	<LI><P>For MS-Excel compatibility increase the limit to 64k rows. It
+	should still be ok to use the same drawing layer and
+	<CODE>ScBroadcastAreaSlot</CODE> and <CODE>ScChangeTrack</CODE>
+	mechanisms at this stage, even if the latter two would result in
+	some more memory consumption, but those are on a per document basis
+	and not a per sheet basis.</P>
+	<LI><P>At this point, a version may be released to provide an
+	interim solution for those who need it, for example for extended
+	MS-Excel compatibility.</P>
+	<LI><P>Find solutions for the <CODE>ScBroadcastAreaSlot</CODE> and
+	<CODE>ScChangeTrack</CODE> problems which have to be really
+	scalable. The first might involve a complete redesign of the
+	broadcaster/listener concept of formula cells, a heavy change! But
+	it would be necessary anyways, because there are some performance
+	issues with it.</P>
+	<LI><P>Wait for a reimplementation of the drawing layer (which will
+	come) and use that because it will do away some quirks related to
+	anchor positions, different map modes, rounding errors, and the area
+	covered.</P>
+	<LI><P>Finally set an arbitrary row limit. Or don't have an
+	arbitrary limit at all?</P>
+</OL>
+<H2><A NAME="Road map and time frame|outline"></A><A HREF="#TOC Road map and time frame">Road
+map and time frame</A></H2>
+<P>Since we'll never touch the binary file format again in the sense
+of modifying anything of it's structure to store new features, and
+the fact that we're working on a method to strip the binary filters
+from the core code and have separate filters to convert SO5 file
+format to XML file format, we won't have to care about the binary
+file stream operators or code accessing file streams if we wait for
+the new filter code to be functional before touching the binary file
+format code. This will ease things a lot. A second mile stone we want
+to achieve before carrying out massive changes on the source code are
+the accessibility and CTL changes for the next release that are going
+on in the 642 builds. Both changes are expected to be finished by the
+end of July. The following table uses week x for the availability of
+the filter and main feature completeness on accessibility and CTL,
+and references to week x+1 and so on. For calculating the duration of
+tasks it is assumed that a week has about 2.5 developer's days, not
+counting time needed for other tasks such as fixing bugs, code
+reviews, and participating in mailing lists, meetings and conference
+calls. Time lines of best case &ndash; worst case are given, this
+includes assumptions of best case getting help when appropriate and
+worst case when I'd to do everything on my own. Vacations not
+included.</P>
+<P><STRONG>NOTE:</STRONG> Previous versions of this document stated a
+&quot;starting date&quot; of August 2002, based on the assumption
+that OOo1.1/SO6.1 were feature complete and that the binary filters
+were stripped until end of July. Unfortunately that wasn't the case,
+and people kept asking me about the progress and why this task wasn't
+even started. At the moment I cannot (and I don't want to) give yet
+another estimate of things that aren't even the slightest bit under
+my control to be nailed down on it. So I just state that waiting for
+other tasks is ongoing, without giving any due date.</P>
+<P><STRONG>NOTE2:</STRONG> Started in week 48 of 2003 without waiting
+for the binary filter to be stripped. Based on the 2.5 days per week
+calculation and including 2 weeks holidays the approximated end date
+will be between April and June of 2004.</P>
+<H3><A HREF="#TOC_Table_of_steps" NAME="Table_of_steps">Towards 64k</A></H3>
+<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
+	<COL WIDTH=15*>
+	<COL WIDTH=83*>
+	<COL WIDTH=26*>
+	<COL WIDTH=26*>
+	<COL WIDTH=13*>
+	<COL WIDTH=13*>
+	<COL WIDTH=27*>
+	<COL WIDTH=26*>
+	<COL WIDTH=26*>
+	<THEAD>
+		<TR>
+			<TH ROWSPAN=2 WIDTH=6%>
+				<P>Step</P>
+			</TH>
+			<TH ROWSPAN=2 WIDTH=33%>
+				<P>What</P>
+			</TH>
+			<TH ROWSPAN=2 WIDTH=10%>
+				<P>Start week</P>
+			</TH>
+			<TH ROWSPAN=2 WIDTH=10%>
+				<P>Effort (days)</P>
+			</TH>
+			<TH COLSPAN=2 WIDTH=10%>
+				<P>Duration (weeks)</P>
+			</TH>
+			<TH ROWSPAN=2 WIDTH=10%>
+				<P>End week</P>
+			</TH>
+			<TH ROWSPAN=2 WIDTH=10%>
+				<P>Status</P>
+			</TH>
+			<TH ROWSPAN=2 WIDTH=10%>
+				<P>Days used</P>
+			</TH>
+		</TR>
+		<TR>
+			<TH WIDTH=5%>
+				<P>min</P>
+			</TH>
+			<TH WIDTH=5%>
+				<P>max</P>
+			</TH>
+		</TR>
+	</THEAD>
+	<TBODY>
+		<TR>
+			<TD WIDTH=6% VALIGN=TOP>
+				<P ALIGN=CENTER><BR>
+				</P>
+			</TD>
+			<TD WIDTH=33% VALIGN=TOP>
+				<P>Wait for new SO5 binary filter.</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>past</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>-</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>-</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>-</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>???</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>done</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>-</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD WIDTH=6%>
+				<P ALIGN=CENTER><BR>
+				</P>
+			</TD>
+			<TD WIDTH=33% VALIGN=TOP>
+				<P>Start work on branch cws_src680_rowlimit, don't wait for
+				stripped binary filter anymore.</P>
+			</TD>
+			<TD WIDTH=10% SDVAL="48" SDNUM="1033;">
+				<P ALIGN=CENTER>48</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>-</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>-</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>-</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>-</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>done</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>-</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD WIDTH=6%>
+				<P ALIGN=CENTER>1</P>
+			</TD>
+			<TD WIDTH=33% VALIGN=TOP>
+				<P><A NAME="step1"></A>Isolate <CODE>class ScAddress</CODE> in an
+				own header file (move from <CODE>inc/global.hxx</CODE> to
+				<CODE>inc/address.hxx</CODE>), in the same header file add the
+				following typedefs and include that whenever needed.</P>
+				<P><CODE>typedef USHORT SCROW;<BR>typedef USHORT SCCOL;<BR>typedef
+				USHORT SCTAB;<BR>// temporarily for signed short types:<BR><CODE>typedef
+				short SCsROW;<BR><CODE>typedef short SCsCOL;<BR></CODE></CODE>typedef
+				short SCsTAB;</CODE></P>
+				<P>This can be done at almost any time. I'll do it.</P>
+			</TD>
+			<TD WIDTH=10% SDVAL="0" SDNUM="1033;">
+				<P ALIGN=CENTER>0</P>
+			</TD>
+			<TD WIDTH=10% SDVAL="2" SDNUM="1033;">
+				<P ALIGN=CENTER>2</P>
+			</TD>
+			<TD WIDTH=5% SDVAL="0.8" SDNUM="1033;">
+				<P ALIGN=CENTER>0.8</P>
+			</TD>
+			<TD WIDTH=5% SDVAL="0.8" SDNUM="1033;">
+				<P ALIGN=CENTER>0.8</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>0-1</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>done</P>
+			</TD>
+			<TD WIDTH=10% SDVAL="2" SDNUM="1033;">
+				<P ALIGN=CENTER>2</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD ROWSPAN=2 WIDTH=6%>
+				<P ALIGN=CENTER>2</P>
+			</TD>
+			<TD WIDTH=33% VALIGN=TOP>
+				<P><A NAME="step2"></A>Replace all <VAR>USHORT</VAR> and <VAR>UINT16
+				for row variables</VAR> with <VAR>SCROW</VAR>.</P>
+				<P>Replace <VAR>short</VAR> and <VAR>INT16</VAR> with <VAR>SCsROW</VAR>
+				for row variables. This is just to identify used signed row
+				variables and mark them for easier retrieval later on when they
+				are to be changed using a <CODE>typedef INT32 SCROW;</CODE> Maybe
+				those are places where some special handling will be necessary
+				(for example, in reference updating code) if the width of the
+				variable type is changed later on.</P>
+				<P>Additionally, while we're at it, we should change column
+				<VAR>USHORT</VAR> to <VAR>SCCOL</VAR> and change table <VAR>USHORT</VAR>
+				to <VAR>SCTAB</VAR> (and <VAR>SCsCOL</VAR> and <VAR>SCsTAB</VAR>
+				as above) for future reference.</P>
+				<P>This work could be parallelized in greater portions, I guess
+				up to 4 people could work on it together. This is a task where
+				one or two community members willing to dive deeper into the
+				spreadsheet code could participate in a coordinated effort.</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>1</P>
+			</TD>
+			<TD WIDTH=10% SDVAL="12" SDNUM="1033;">
+				<P ALIGN=CENTER>12</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>2.4</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>4.8</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>3-5</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>done</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>10.5</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD COLSPAN=8 WIDTH=94% VALIGN=TOP>
+				<P>Keeping this old note for documentation: Except for the
+				source/filter/excel/ directory the first wave is completed.
+				Reason to leave out the excel directory are heavy changes in the
+				calcrtl and calc18 childworkspaces that would end up in doing all
+				the work twice. We're waiting for integration of those.
+				Furthermore, we're waiting for integration of the cac CWS that
+				also introduces quite some changes to the
+				formula-compiler-interpreter related code, where a second run
+				will be necessary.</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD WIDTH=6%>
+				<P ALIGN=CENTER>3</P>
+			</TD>
+			<TD WIDTH=33% VALIGN=TOP>
+				<P><A NAME="step3"></A>Restructure <CODE>class ScAddress</CODE>
+				to use<BR><CODE>SCROW nRow;</CODE><BR><CODE>SCCOL nCol;<BR><CODE>SCTAB
+				nTab;<BR></CODE></CODE>and provide constructors and access
+				operators to set and get old <VAR>ULONG</VAR>/<VAR>UINT32</VAR>/<VAR>USHORT</VAR>
+				values with internal conversion so that no existing source code
+				using it has to be changed.</P>
+				<P>My task.</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>3-6</P>
+			</TD>
+			<TD WIDTH=10% SDVAL="2" SDNUM="1033;">
+				<P ALIGN=CENTER>2</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>0.8</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>0.8</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>3-6</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>done</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>2</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD WIDTH=6%>
+				<P ALIGN=CENTER>4</P>
+			</TD>
+			<TD WIDTH=33% VALIGN=TOP>
+				<P><A NAME="step4"></A>Implement functionality of <CODE>class
+				ScTripel</CODE> at <CODE>class ScAddress</CODE> (<CODE>GetText()</CODE>,
+				<CODE>GetColRowString()</CODE>).</P>
+				<P>Create <CODE>class ScRefAddress</CODE> similar to <CODE>class
+				ScRefTripel</CODE>.</P>
+				<P>Replace all usage of <CODE>class ScTripel</CODE> and <CODE>class
+				ScRefTripel</CODE> with <CODE>class ScAddress</CODE> and <CODE>class
+				ScRefAddress</CODE>.</P>
+				<P>My task.</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>4-7</P>
+			</TD>
+			<TD WIDTH=10% SDVAL="4" SDNUM="1033;">
+				<P ALIGN=CENTER>4</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>1.6</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>1.6</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>5-8</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>done</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>4</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD WIDTH=6% HEIGHT=128>
+				<P ALIGN=CENTER>5</P>
+			</TD>
+			<TD WIDTH=33% VALIGN=TOP>
+				<P><A NAME="step5"></A>Using a special converter class included
+				in <CODE>inc/address.hxx</CODE> identify pieces of code where an
+				implicit conversion of type <VAR>SCROW</VAR> to type <VAR>USHORT</VAR>
+				or <VAR>UINT16</VAR> is performed. Change the code found to use
+				<VAR>SCROW</VAR> or explicit conversion and take measures for
+				error handling if the value passed doesn't fit. Same for <VAR>SCsROW</VAR>
+				and <VAR>short</VAR> and <VAR>INT16</VAR>.</P>
+				<P>I'll provide the converter class and would appreciate the help
+				of another developer familiar with the code. This is a nasty task
+				because it means to compile every source file with the converter
+				class header, decide about modifications, make changes, compile
+				again, ...</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>5-9</P>
+			</TD>
+			<TD WIDTH=10% SDVAL="9" SDNUM="1033;">
+				<P ALIGN=CENTER>9</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>1.8</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>3.6</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>6-12</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>done</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>16</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD ROWSPAN=2 WIDTH=6%>
+				<P ALIGN=CENTER>6</P>
+			</TD>
+			<TD WIDTH=33% VALIGN=TOP>
+				<P><A NAME="step6"></A>Look for places where the signed <VAR>SCsROW</VAR>
+				is used and add special handling if necessary.</P>
+				<P>Task for two.</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>7-13</P>
+			</TD>
+			<TD WIDTH=10% SDVAL="6" SDNUM="1033;">
+				<P ALIGN=CENTER>6</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>1.2</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>2.4</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>8-15</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>done</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>2</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD COLSPAN=8 WIDTH=94% VALIGN=TOP>
+				<P>This turned out to be unnecessary as we replaced all unsigned
+				types with signed types. Instead, use of nRow&lt;=MAXROW and
+				similar were replaced with ValidRow(nRow), as also negative
+				values might be encountered now.</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD WIDTH=6%>
+				<P ALIGN=CENTER>7</P>
+			</TD>
+			<TD WIDTH=33% VALIGN=TOP>
+				<P><A NAME="step7"></A>Implement solution for <VAR>pRowHeight</VAR>
+				and <VAR>pRowFlags</VAR> arrays.</P>
+				<P>This may get a bit more complicated since it is woven with UI
+				issues.</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>8-16</P>
+			</TD>
+			<TD WIDTH=10% SDVAL="9" SDNUM="1033;">
+				<P ALIGN=CENTER>9</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>3</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>4</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>10-19</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>done</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>13</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD WIDTH=6%>
+				<P ALIGN=CENTER>8</P>
+			</TD>
+			<TD WIDTH=33% VALIGN=TOP>
+				<P><A NAME="step8"></A>Throw the switch to <CODE><CODE>typedef
+				INT32 SCROW;</CODE></CODE> and <CODE><CODE>typedef INT32 SCsROW;</CODE></CODE></P>
+				<P>Test and fix bugs.</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>11-20</P>
+			</TD>
+			<TD WIDTH=10% SDVAL="3" SDNUM="1033;">
+				<P ALIGN=CENTER>3</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>1.2</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>1.2</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>12-21</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>done</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>2</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD WIDTH=6%>
+				<P ALIGN=CENTER>9</P>
+			</TD>
+			<TD WIDTH=33% VALIGN=TOP>
+				<P><A NAME="step9"></A>Change <CODE>MAXROW</CODE> to 64k and
+				<CODE>BCA_BRDCST_ALWAYS</CODE> to <CODE>ScAddress(0,SCROW_MAX,0)</CODE>.
+				Adjust <CODE>ScBroadcastAreaSlot</CODE> and <CODE>ScChangeTrack</CODE>
+				slots.</P>
+				<P>Test and fix bugs.</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>12-21</P>
+			</TD>
+			<TD WIDTH=10% SDVAL="9" SDNUM="1033;">
+				<P ALIGN=CENTER>9</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>2</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>4</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>14-24</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>done</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>9</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD COLSPAN=9 WIDTH=100%>
+				<P ALIGN=CENTER>In order to provide an EarlyAccess version in
+				time, the rowlimit CWS will be QA'ed at this point and integrated
+				into the master. After that, I'll create a new CWS (rowlimit2) to
+				work on the remaining step7, addressing memory consumption. Note
+				that columns &quot;start week&quot;, &quot;duration in weeks&quot;,
+				and &quot;end week&quot; aren't aligned anymore.</P>
+				<P ALIGN=CENTER>CWS rowlimit2 was integrated as of SRC680_m52,
+				additional bugfixes went into SRC680_m59.</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD WIDTH=6%>
+				<P ALIGN=CENTER>10</P>
+			</TD>
+			<TD WIDTH=33% VALIGN=TOP>
+				<P><A NAME="step10"></A>Maybe <CODE>MAXROW</CODE> could be
+				increased to 128k or 256k with the current slot implementations,
+				would have to be investigated.</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>15-25</P>
+			</TD>
+			<TD WIDTH=10% SDVAL="3" SDNUM="1033;">
+				<P ALIGN=CENTER>3</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>1.2</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>2</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>16-26</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER><BR>
+				</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER><BR>
+				</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD WIDTH=6%>
+				<P ALIGN=CENTER><BR>
+				</P>
+			</TD>
+			<TD WIDTH=33% VALIGN=TOP>
+				<P>Be happy.</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>16-26</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>?</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER>?</P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER><BR>
+				</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER><BR>
+				</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER><BR>
+				</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER><BR>
+				</P>
+			</TD>
+		</TR>
+		<TR>
+			<TD WIDTH=6%>
+				<P ALIGN=CENTER><BR>
+				</P>
+			</TD>
+			<TD WIDTH=33%>
+				<P ALIGN=CENTER STYLE="text-decoration: none"><B>Sum</B></P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER><BR>
+				</P>
+			</TD>
+			<TD WIDTH=10% SDVAL="59" SDNUM="1033;">
+				<P ALIGN=CENTER STYLE="text-decoration: none"><B>59</B></P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER STYLE="text-decoration: none"><B>16</B></P>
+			</TD>
+			<TD WIDTH=5%>
+				<P ALIGN=CENTER STYLE="text-decoration: none"><B>25.2</B></P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER>week<BR>(x+16)-(x+26)<BR>==<BR>12-21 (2004)</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER><BR>
+				</P>
+			</TD>
+			<TD WIDTH=10%>
+				<P ALIGN=CENTER><BR>
+				</P>
+			</TD>
+		</TR>
+	</TBODY>
+</TABLE>
+<P><BR><BR>
+</P>
+<H3>Breaking the limit</H3>
+<P>To be done.</P>
+<P><BR><BR>
+</P>
+</BODY>
+</HTML>

Propchange: incubator/ooo/ooo-site/trunk/content/sc/row-limit.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/ooo/ooo-site/trunk/content/sc/solver.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/sc/solver.html?rev=1175548&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/sc/solver.html (added)
+++ incubator/ooo/ooo-site/trunk/content/sc/solver.html Sun Sep 25 19:42:14 2011
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
+	<TITLE>Optimization Solver component</TITLE>
+	<META NAME="GENERATOR" CONTENT="StarOffice 7  (Win32)">
+	<META NAME="AUTHOR" CONTENT="Niklas Nebel">
+	<META NAME="CREATED" CONTENT="20031022;12222170">
+	<META NAME="CHANGEDBY" CONTENT="Niklas Nebel">
+	<META NAME="CHANGED" CONTENT="20031022;12223596">
+</HEAD>
+<BODY LANG="de-DE" DIR="LTR">
+<H2>Short description of a possible Solver (optimization tool)
+component</H2>
+<P>A Solver component modifies a set of input cells in a spreadsheet,
+observing the impact on result and constraint formula cells. The goal
+is to find an optimal set of input values, for which the result is
+minimized, maximized or approximated to a target value, while the
+constraints remain within specified limits. There has to be a user
+interface to select the input and result cells, constraints and
+internal parameters. The component would then use the StarOffice API
+to fill the input cells and read the resulting formula results. For
+best results, a selection of algorithms (for example linear and
+non-linear) should be available.</P>
+<P>
+</P>
+</BODY>
+</HTML>

Propchange: incubator/ooo/ooo-site/trunk/content/sc/solver.html
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message