<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--
#**************************************************************
#
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing,
#  software distributed under the License is distributed on an
#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#  KIND, either express or implied.  See the License for the
#  specific language governing permissions and limitations
#  under the License.
#
#**************************************************************
 -->
<html>
<head>
  <title>Apache OpenOffice %PRODUCT_RELEASE% SDK - Development Tools</title>
  <link rel="stylesheet" type="text/css" href="sdk_styles.css">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="author" content="J&uuml;rgen Schmidt">
</head>

<body class="sdkbody"><a name="tools"></a>
<table class="table1" cellpadding=0>
  <tr style="background-image:url(images/sdk_head-2.png)">
    <td colspan="3" align="left"><img src="images/sdk_head-1.png" width="800" height="120" usemap="#Map" border="0"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="nothing10" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
    <td>
      <table class="table2">
	    <tr>
		  <td colspan="3"><img class="nothing1" src="images/nada.gif"></td>
        </tr>
        <tr>
          <td>
          <table class="table3">
		  <tr>
			<td colspan="2" class="head1">Development Tools</td>
			<td align="right"><a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a></td>
		  </tr>
		  </table>
          </td>
        </tr>
        <tr>
          <td>
          <table class="table3">
            <tr valign="top">
              <td class="content3"><img src="images/arrow-1.gif"></td>
              <td><a href="#unopkg" title="link to the unopkg tool description">unopkg</a></td>
              <td class="content87">The new UNO package deployment tool. It comes
			  with the office installation and can be found in the program
			  directory of the office installation.</td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="images/arrow-1.gif"></td>
              <td><a href="#unoexe" title="link to the uno tool description">uno</a></td>
              <td class="content87">Tool to provide a UNO runtime environment and
			  provide configured (deployed) or single components. This tool
			  comes with the office installation and can be found in the program
			  directory of the office installation.</td>
            </tr>
           <tr valign="top">
              <td class="content3"><img src="images/arrow-1.gif"></td>
              <td><a href="#regmerge" title="link to the regmerge tool description">regmerge</a></td>
              <td class="content87">Tool to merge several registry (e.g. type
			  libraries) files into one file. <b>Note:</b> Since OpenOffice.org 3 it is not longer part of the SDK but it comes directly with the office as part of the <b>ure</b>.</td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="images/arrow-1.gif"></td>
              <td><a href="#regview" title="link to the regview tool description">regview</a></td>
              <td class="content87">Tool to view the content of a registry file
			  in a human readable manner. Special support for type library
			  nodes. <b>Note:</b> Since OpenOffice.org 3 it is not longer part of the SDK but it comes directly with the office as part of the <b>ure</b>.</td>
            </tr>
            <tr valign="middle">
              <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="images/arrow-1.gif"></td>
              <td><a href="#idlc" title="link to the idlc tool description">idlc</a></td>
              <td class="content87">The UNOIDL compiler, generates a common
			  binary type library format as base for all codemaker tools and
			  the UNO runtime type library.</td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="images/arrow-1.gif"></td>
              <td><a href="#cppumaker" title="link to the cppumaker tool description">cppumaker</a></td>
              <td class="content87">Tool for generating C++ code for the UNOIDL
			  types stored in a type library.</td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="images/arrow-1.gif"></td>
              <td><a href="#javamaker" title="link to the javamaker tool description">javamaker</a></td>
              <td class="content87">Tool for generating Java class files for the
			  UNOIDL types stored in a type library.</td>
            </tr>
           <tr valign="top">
              <td class="content3"><img src="images/arrow-1.gif"></td>
              <td><a href="#climaker" title="link to the climaker tool description">climaker</a></td>
              <td class="content87">Tool for generating CLI assemblies for the
			  UNOIDL types stored in a type library (windows only).</td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="images/arrow-1.gif"></td>
              <td><a href="#uno-skeletonmaker" title="link to the uno-skeletonmaker tool description">uno-skeletonmaker</a></td>
              <td class="content87">Tool for dumping type definitions on stdout or generating complete code skeletons for Java/C++.</td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="images/arrow-1.gif"></td>
              <td><a href="#regcomp" title="link to the regcomp tool description">regcomp</a></td>
              <td class="content87">A simple UNO component registration tool.</td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="images/arrow-1.gif"></td>
              <td><a href="#regmerge" title="link to the regmerge tool description">regmerge</a></td>
              <td class="content87">Tool to merge several registry (e.g. type
			  libraries) files into one file.</td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="images/arrow-1.gif"></td>
              <td><a href="#regview"  title="link to the regview tool description">regview</a></td>
              <td class="content87">Tool to view the content of a registry file
			  in a human readable manner. Special support for type library
			  nodes.</td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="images/arrow-1.gif"></td>
              <td><a href="#autodoc" title="link to the autodoc tool description">autodoc</a></td>
              <td class="content87">Tool to generate javadoc-like documentation
			  for C/C++ and UNOIDL files.</td>
            </tr>
            </table>
          </td>
		</tr>
      </table>
    </td>
	<td class="content1"><img class="nothing8" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
  </tr>
  <tr>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
    <td>
      <table class="table2">
        <tr>
		  <td colspan="2" class="head1"><a name="unopkg"></a>unopkg</td>
		  <td align="right">
			<a style="a:link:visited #FFFFFF;" href="#tools" title="link to the tools overview"><img class="navigate" src="images/nav_up.png"></a>
			<a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a></td>
        </tr>
		<tr>
		  <td colspan="3">
		  <p>'unopkg' is a tool for easy deployment of UNO packages in an existing
		  office installation. UNO packages are UNO components (single libraries or
		  Jar files or more complex zip files that contains one or more libraries|
		  Jar files, type libraries and configuration items), scripts  and
		  Apache OpenOffice %PRODUCT_RELEASE% Basic libraries as zip package. 'unopkg' is not part of the
		  SDK but comes with the office directly and is a development tool as well
		  as an end user tool to deploy extension into an office installation.</p>
		  <p>More details concerning deployment and this tool can be find in the
		  Developer's Guide: <a href="https://wiki.openoffice.org/wiki/Documentation/DevGuide/Extensions/unopkg" title="link to the &quot;Extension Manager - unopkg&quot; chapter in the Developer's Guide">Extension Manager - <i>unopkg</i></a>.</p>
		  <p><b>Note:</b> This tool works only in the <i>&lt;office&gt;/program</i>
		  directory!</p>
		  <p class="head2">Usage:</p>
		  <blockquote>
		  <b><code>
		    unopkg add &lt;options&gt; package-path...<br>
			unopkg remove &lt;options&gt; package-name...<br>
			unopkg list &lt;options&gt; package-name...<br>
			unopkg reinstall &lt;options&gt;<br>
			unopkg gui<br>
			unopkg -V<br>
			unopkg -h<br>
		  </code></b>
		  </blockquote>
		  <p class="head2">Sub-commands:</p>
		  <p>
		  <table class="table4">
		  <tr>
		    <td class="cell15"><code>add</code></td>
			<td class="cell85">add packages</td>
		  </tr>
			<tr>
			<td class="cell15"><code>remove</code></td>
			<td class="cell85">remove packages by name</td>
          </tr>
		  <tr>
            <td class="cell15"><code>reinstall</code></td>
			<td class="cell85">export feature: reinstall all deployed
			packages</td>
          </tr>
		  <tr>
            <td class="cell15"><code>list</code></td>
			<td class="cell85">list information about deployed packages</td>
          </tr>
		  <tr>
            <td class="cell15"><code>gui</code></td>
			<td class="cell15">raise Package Manager Graphical User Interface
			(GUI)</td>
          </tr>
		  </table>
		  </p>
		  <p class="head2">Options:</p>
		  <p>
		  <table class="table4">
		  <tr>
            <td class="cell15"><code>-h, --help</code></td>
            <td class="cell85">show this help on the command line</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-V, --version</code></td>
			<td class="cell85">shows version information
			</td>
          </tr>
          <tr>
            <td class="cell15"><code>-v, --verbose</code></td>
			<td class="cell85">dump verbose output to stdout</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-f, --force</code></td>
			<td class="cell85">force overwriting existing packages</td>
          </tr>
          <tr>
            <td class="cell15"><code>--log-file &lt;file&gt;</code></td>
			<td class="cell85">custom log file; default:
			<i>&lt;cache-dir&gt;/log.txt</i>.</td>
          </tr>
          <tr>
            <td class="cell15"><code>--shared</code></td>
			<td class="cell85">expert feature: operate on shared installation
			deployment context; run only when no concurrent Office process(es) are
			running!</td>
          </tr>
          <tr>
		    <td class="cell15"><code>--deployment-context &lt;context&gt;</code>
			</td>
			<td class="cell85">expert feature: explicit deployment context</td>
          </tr>
		  </table>
		  </p>
		  </td>
		</tr>
      </table>
    </td>
	<td class="content1"><img class="nothing8" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
  </tr>
  <tr>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
    <td>
      <table class="table2">
        <tr>
		  <td colspan="2" class="head1"><a name="unoexe"></a>uno</td>
		  <td align="right">
		    <a href="#tools" title="link to the tools overview"><img class="navigate" src="images/nav_up.png"></a>
		    <a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a>
		  </td>
        </tr>
		<tr>
		  <td colspan="3">
		  <p>The UNO-starter is for running a component or service process, and
		  providing a runtime environment. Raising a component might look like
		  this </p>
		  <p><code>[c:\] uno.exe -c MyComponent -l mycomp.dll -r myregistry.rdb
		  -- foo bar</code></p>
		  <p>or</p>
		  <p><code>[c:\] uno.exe -s foo.bar.FooBarService -r myregistry.rdb
		  -- foo bar</code></p>
		  <p>The starter loads the component and instantiates it. The component
		  must export the interface <a href="common/ref/com/sun/star/lang/XMain.html" title="link into the IDL reference to the interface com.sun.star.lang.XMain">com.sun.star.lang.XMain</a>:</p>
		  <p>
		  <code>interface XMain : com::sun::star::uno::XInterface <br>
            { <br>
              &nbsp;&nbsp;&nbsp; /** This method is called to run the component.<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @param aArguments command line arguments <br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @return process error code to be returned to system <br>
              &nbsp;&nbsp;&nbsp; */ <br>
              &nbsp;&nbsp;&nbsp; long run( [in] sequence&lt; string &gt; arguments ); <br>
            };
          </code>
		  </p>
		  <p>Method run() will be called and returns the error code given, back
		  to the system. If the uno starter is executed with the -u (URL) option,
		  then XInitialization is used instead of XMain. The -u option is described
		  later.</p>
		  <p class="head2">Usage:</p>
		  <blockquote>
		  <b><code>uno (-c&lt;ComponentImplementationName&gt; -l &lt;LocationUrl&gt;
		    | -s &lt;ServiceName&gt;) <br>
            [-ro &lt;ReadOnlyRegistry1&gt;] [-ro &lt;ReadOnlyRegistry2&gt;] ... [-rw &lt;ReadWriteRegistry&gt;]<br>
            [-u uno:(socket[,host=&lt;HostName&gt;][,port=&lt;nnn&gt;]|pipe[,name=&lt;PipeName&gt;]);iiop|urp;&lt;Name&gt;<br>
            [--singleaccept] [--singleinstance]] <br>
            [-- &lt;Argument1 Argument2 ...&gt;]
          </code></b>
		  </blockquote>
		  <p class="head2">Options:</p>
		  <p>
		  <table class="table4">
          <tr>
            <td class="cell15"><code>&lt;HostName&gt;</code></td>
            <td class="cell85">Specifying a host name might be necessary to
			distinguish the network interface to be used, if a machine is part of
			two networks.</td>
          </tr>
          <tr>
            <td class="cell15"><code>&lt;PipeName&gt;</code></td>
            <td class="cell85">Name of a named pipe.</td>
          </tr>
          <tr>
            <td class="cell15"><code>&lt;Name&gt;</code></td>
            <td class="cell85">Identifier for demanded called component
			instances.</td>
          </tr>
          <tr>
            <td class="cell15"><code>&lt;Registries&gt;</code></td>
            <td class="cell85">The optional <code>&lt;Registries&gt;</code>
			(e.g., c:\myreg.rdb) are used by the ServiceManager. The <i>ro</i>
			ones are opened for reading only; whereas, a single <i>rw</i> one
			will be opened for reading and writing. If the <i>rw</i> one does
			not exist, then it may be created. Components may read and write to
			store their persistent state.</td>
          </tr>
          <tr>
            <td class="cell15"><code>--singleaccept</code></td>
            <td class="cell85">The uno starter will accept one connection,
			provide the component instance and die.</td>
          </tr>
          <tr>
            <td class="cell15"><code>--singleinstance</code></td>
            <td class="cell85">The uno starter will accept any number of
			connections, but will provide the same single component instance any
			time instead of creating a new instance for each connection.</td>
          </tr>
          </table>
		  <p><b>Service <a href="common/ref/com/sun/star/bridge/UnoUrlResolver.html" title="link into the IDL reference to the service com.sun.star.bridge.UnoUrlResolver">com.sun.star.bridge.UnoUrlResolver</a></b></p>
		  <p>You can easily connect to a server started with the
		  <code>-u (url)</code> option by using this service, giving the same url
		  to resolve. The service provides you an instance from remote.</p>
		  </td>
		</tr>
      </table>
    </td>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
  </tr>
  <tr>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
    <td>
      <table class="table2">
        <tr>
		  <td colspan="2" class="head1"><a name="idlc"></a>idlc</td>
		  <td align="right">
		    <a href="#tools" title="link to the tools overview"><img class="navigate" src="images/nav_up.png"></a>
		    <a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a>
		  </td>
        </tr>
		<tr>
		  <td colspan="3">
		  <p>'idlc' is the UNOIDL compiler.  It is a full featured compiler used
		  to check UNODL type definitions and transform valid type definitions
		  into a binary type library format, which is later used by all codemaker
		  tools. It is also used as a dynamic type library for UNO at runtime.<br>
		  You can find a syntax description for UNOIDL <a href="https://wiki.openoffice.org/wiki/Documentation/DevGuide/AppendixD/UNOIDL_Syntax_Specification" title="link to the &quot;UNOIDL Syntax Specification&quot; chapter in the Developer's Guide">here</a>.</p>
		  <p class="head2">Usage:</p>
		  <blockquote>
		  <b><code>idlc [-options] file_1 ... file_n | @&lt;filename&gt;</code></b>
		  </blockquote>
		  <p>
		  <table class="table4">
		  <tr>
            <td class="cell15"><code>file_1 ... file_n</code></td>
			<td class="cell85">specifies one or more idl files. Only files with
			the extension '.idl' are valid.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>@&lt;filename&gt;</code></td>
			<td class="cell85">filename specifies the name of a command
			file.</td>
          </tr>
		  </table>
		  </p>
		  <p class="head2">Options:</p>
		  <p>
		  <table class="table4">
		  <tr>
            <td class="cell15"><code>-O&lt;path&gt;</code></td>
			<td class="cell85">path describes the output directory. The
			generated output is a registry file with the same name as the idl
			input file.</td>
          </tr>
          <tr>
		    <td class="cell15"><code>-I&lt;path&gt;</code></td>
			<td class="cell85">path specifies a directory where included files
			that will be searched by the preprocessor are located. Multiple
			directories can be combined with ';'.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-D&lt;name&gt;</code></td>
			<td class="cell85">name defines a macro for the preprocessor.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-C</code></td>
			<td class="cell85">generates complete type information, including
			additional service information and documentation.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-h|?</code></td>
			<td class="cell85">print this help message and exit.</td>
          </tr>
		  </table>
		  </p>
		  </td>
		</tr>
      </table>
    </td>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
  </tr>
  <tr>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
    <td>
      <table class="table2">
        <tr>
		  <td colspan="2" class="head1"><a name="cppumaker"></a>cppumaker</td>
		  <td align="right">
		    <a href="#tools" title="link to the tools overview"><img class="navigate" src="images/nav_up.png"></a>
		    <a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a>
		  </td>
        </tr>
		<tr>
		  <td colspan="3">
		  <p>The 'cppumaker' generates a C++ representation for idl types. The
		  cppumaker works on a typelibrary, which is generated by the UNOIDL
		  compiler (<a href="#idlc" link="link to the idlc tool description">idlc</a>).
		  It generates the output for all specified types and for all
		  types the specified types depend on.</p>
		  <p class="head2">Usage:</p>
		  <blockquote>
		  <b><code>cppumaker [-options] file_1 ... file_n</code></b>
		  </blockquote>
		  <p class="head2">Options:</p>
		  <p>
		  <table class="table4">
		  <tr>
            <td class="cell15"><code>-O&lt;path&gt;</code></td>
			<td class="cell85">path describes the root directory for the
			generated output. The output directory tree is generated under this
			directory.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-T&lt;name&gt;<br>
			|-T&lt;t1&gt;;&lt;t2&gt;...</code></td>
			<td class="cell85">name specifies a type or a list of types. The
			output for this type and all dependent types are generated. If no '-T'
			option is specified, then output for all types is generated. It is also
			possible to use a wildcard 'xy.*' to generate a complete module
			inclusive all subdirectories. The use of '-T*' is equivalent to no '-T'
			option. Example: 'com.sun.star.uno.XInterface' or
			'com.sun.star.uno.*' are valid types.
			</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-B&lt;name&gt;</code></td>
			<td class="cell85">name specifies the base node. All types are
			searched under this node. Default is the root '/' of the registry
			files.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-L</code></td>
			<td class="cell85">UNO type functions are generated lightweight, that
			means only the name and typeclass are given and everything else is
			retrieved from the type library dynamically. The default is that UNO
			type functions provides enough type information for bootstrapping C++.
			'-L' should be the default for external components.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-C</code></td>
			<td class="cell85">UNO type functions are generated comprehensive
			that means all necessary information is available for bridging the
			type in UNO.
            </td>
          </tr>
		  <tr>
            <td class="cell15"><code>-G</code></td>
			<td class="cell85">generate only target files which do not
			exist.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-Gc</code></td>
			<td class="cell85">generate only target files whose content will
			be changed.</td>
		  </tr>
		  <tr>
            <td class="cell15"><code>-X&lt;name&gt;</code></td>
			<td class="cell85">extra types, which are not be taken into account
			for generation.</td>
          </tr>
		  </table>
		  </p>
		  </td>
		</tr>
      </table>
    </td>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
  </tr>
  <tr>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
    <td>
      <table class="table2">
        <tr>
		  <td colspan="2" class="head1"><a name="javamaker"></a>javamaker</td>
		  <td align="right">
		    <a href="#tools" title="link to the tools overview"><img class="navigate" src="images/nav_up.png"></a>
		    <a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a>
		  </td>
        </tr>
		<tr>
		  <td colspan="3">
		  <p>The 'javamaker' generates the appropriate Java class file for each idl
		  type. The javamaker works on a typelibrary which is generated by the
		  UNOIDL compiler (<a href="#idlc" link="link to the idlc tool description">idlc</a>).
		  It generates the output for all specified types and for all
		  types the specified types depend on.</p>
		  <p class="head2">Usage:</p>
		  <blockquote>
		  <b><code>javamaker [-options] file_1 ... file_n -Xfile_n+1 -Xfile_n+2</code></b>
		  </blockquote>	
		  <p class="head2">Options:</p>
		  <p>
		  <table class="table4">
		  <tr>
            <td class="cell15"><code>-O&lt;path&gt;</code></td>
			<td class="cell85">path describes the root directory for the
			generated output. The output directory tree is generated under this
			directory.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-T&lt;name&gt;|-T&lt;t1&gt;;&lt;t2&gt;...</code></td>
			<td class="cell85">name specifies a type or a list of types. The
			output for this type and all dependent types are generated. If no '-T'
			option is specified, then output for all types is generated. It is also
			possible to use a wildcard 'xy.*' to generate a complete module
			inclusive all subdirectories. The use of '-T*' is equivalent to no '-T'
			option. Example: 'com.sun.star.uno.XInterface'
			or 'com.sun.star.uno.*' are valid types.
            </td>
          </tr>
		  <tr>
		    <td class="cell15"><code>-B&lt;name&gt;</code></td>
			<td class="cell85">name specifies the base node. All types are
			searched under this node. Default is the root '/' of the registry
			files.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-nD</code></td>
			<td class="cell85">no dependent types are generated.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-G</code></td>
			<td class="cell85">generate only target files which do not
			exist.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-Gc</code></td>
			<td class="cell85">generate only target files whose content will
			be changed.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-X&lt;name&gt;</code></td>
			<td class="cell85">extra types, which will not be taken into account
			for generation.</td>
          </tr>
		  </table>
		  </p>
		  </td>
		</tr>
      </table>
    </td>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
  </tr>
  <tr>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
    <td>
      <table class="table2">
        <tr>
		  <td colspan="2" class="head1"><a name="climaker"></a>climaker</td>
		  <td align="right">
		    <a href="#tools" title="link to the tools overview"><img class="navigate" src="images/nav_up.png"></a>
		    <a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a>
		  </td>
        </tr>
		<tr>
		  <td colspan="3">
		  <p>The 'climaker' (windows only) generates the appropriate CLI assemblies file for each idl
		  type. The climaker works on a typelibrary which is generated by the
		  UNOIDL compiler (<a href="#idlc" link="link to the idlc tool description">idlc</a>).
		  It generates the output for all specified types and for all
		  types the specified types depend on.</p>
		  <p class="head2">Usage:</p>
		  <blockquote>
		  <b><code>climaker &lt;switches&gt; [registry-file-1 registry-file-2 ...]</code></b>
		  </blockquote>	
		  <p class="head2">Options:</p>
		  <p>
		  <table class="table4">
		  <tr>
		    <td class="cell15"><code>-O, --out &lt;output_file&gt;</code></td>
		    <td class="cell85">output assembly file;<br>
		      defaults to cli_unotypes.dll if more than one registry-file is given, else &lt;registry-file&gt;.dll</td>
		  </tr>
		  <tr>
		    <td class="cell15"><code>-T, --types &lt;type1[;type2;...]&gt;</code></td>
		    <td class="cell85">types to be generated (if none is given,
		      then all types of given registries are emitted</td>
		  </tr>
		  <tr>
		    <td class="cell15"><code>-X, --extra &lt;rdb-file&gt;></code></td>
		    <td class="cell85">additional rdb to saturate referenced types in
                      given registry file(s); these types will not be
                      emitted into the output assembly file</td>
		  </tr>
		  <tr>
		    <td class="cell15"><code>-r, --reference &lt;assembly-file&gt;</code></td>
		    <td class="cell85">reference metadata from assembly file</td>
		  </tr>
		  <tr>
		    <td class="cell15"><code>-k, --keyfile</code></td>
		    <td class="cell85">keyfile needed for strong name</td>
		  </tr>
		  <tr>
		    <td class="cell15"><code>--assembly-version &lt;version&gt;</code></td>
		    <td class="cell85">sets assembly version</td>
		  </tr>
		  <tr>
		    <td class="cell15"><code>--assembly-description &lt;text&gt;</code></td>
		    <td class="cell85">sets assembly description text</td>
		  </tr>
		  <tr>
		    <td class="cell15"><code>--assembly-product &lt;text&gt;</code></td>
		    <td class="cell85">sets assembly product name</td>
		  </tr>
		  <tr>
		    <td class="cell15"><code>--assembly-company &lt;text&gt;</code></td>
		    <td class="cell85">sets assembly company</td>
		  </tr>
		  <tr>
		    <td class="cell15"><code>--assembly-copyright &lt;text&gt;</code></td>
		    <td class="cell85">sets assembly copyright</td>
		  </tr>
		  <tr>
		    <td class="cell15"><code>--assembly-trademark &lt;text&gt;</code></td>
		    <td class="cell85">sets assembly trademark</td>
		  </tr>
		  <tr>
		    <td class="cell15"><code>-v, --verbose</code></td>
		    <td class="cell85">verbose output to stdout</td>
		  </tr>
		  <tr>
		    <td class="cell15"><code>-h, --help</code></td>
		    <td class="cell85">this message</td>
		  </tr>

		  </table>
		  </p>
		  <p><b>Example:</b> <code>climaker --out cli_mytypes.dll --reference cli_uretypes.dll --extra types.rdb mytypes.rdb</code></p>
		  </td>
		</tr>
      </table>
    </td>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
  </tr>
  <tr>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
    <td>
      <table class="table2">
        <tr>
		  <td colspan="2" class="head1"><a name="uno-skeletonmaker"></a>uno-skeletonmaker</td>
		  <td align="right">
		    <a href="#tools" title="link to the tools overview"><img class="navigate" src="images/nav_up.png"></a>
		    <a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a>
		  </td>
        </tr>
		<tr>
		  <td colspan="3">
		  <p>The 'uno-skeletonmaker' is a tool to simplify the UNO component development. It has different modes, from simply dumping code definitions for different languages on stdout up to generating complete code skeletons. The generation of code skeletons support common component skeletons as well as specialized skeletons for special service provider interfaces.</p>
		  <p class="head2">Usage:</p>
		  <blockquote>
		  <b><code>
			uno-skeletonmaker (-env:INIFILENAME=&lt;url&gt; | -env:UNO_TYPES=&lt;url>) dump [&lt;options>] -t &lt;type&gt; ...<br>
			uno-skeletonmaker (-env:INIFILENAME=&lt;url&gt; | -env:UNO_TYPES=&lt;url&gt;) component [&lt;options&gt;] -n &lt;name&gt; -t &lt;type&gt; ...<br>
			uno-skeletonmaker (-env:INIFILENAME=&lt;url&gt; | -env:UNO_TYPES=&lt;url&gt;) calc-add-in [&lt;options&gt;] -n &lt;name&gt; -t &lt;add-in_service&gt;<br>
			uno-skeletonmaker (-env:INIFILENAME=&lt;url&gt; | -env:UNO_TYPES=&lt;url&gt;) add-on [&lt;options&gt;] -n &lt;name&gt; -p &lt;protocol_name:command,...&gt;
			uno-skeletonmaker -V, --version<br>
			uno-skeletonmaker -h, --help<br>
		  </code></b>
		  </blockquote>
		  <p class="head2">Sub-commands:</p>
		  <p>
		  <table class="table4">
		  <tr>
		    <td class="cell15"><code>dump</code></td>
		    <td class="cell85">dump declarations on stdout (e.g. constructors, methods, type mapping for properties) or complete method bodies with method forwarding.</td>
		  </tr>
		  <tr>
                    <td class="cell15"><code>component</code></td>
		    <td class="cell85">generates language specific code skeleton files using the implementation name as the file and class name</td>
		  </tr>
		  <tr>
		    <td class="cell15"><code>calc-add-in</code></td>
		    <td class="cell85">generates a language specific code skeleton for a Calc Add-Ins using the implementation name as the file and class name. A service type is necessary, referencing an interface which defines the new add-in functions.</td>
		  </tr>
		  <tr>
		    <td class="cell15"><code>add-on</code></td>
		    <td class="cell85">generates a language specific code skeleton for an add-on component using the implementation name as the file and class name. The protocol name(s) and the corresponding command(s) have to be specified with the '-p' option.</td>
		  </tr>
		  </table>
		  </p>
		  <p class="head2">Options:</p>
		  <p>
		  <table class="table4">
		  <tr>
            <td class="cell15"><code>-env:INIFILENAME=&lt;url&gt;</code></td>
			<td class="cell85">url specifies a URL to an UNO ini|rc file of an existing UNO environment (URE, office installation).</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-env:UNO_TYPES=&lt;url&gt;</code></td>
			<td class="cell85">url specifies a binary type library file. It can be a space separated list of urls.</td>
          </tr>
		  <tr>
		    <td class="cell15"><code>-a, --all</code></td>
			<td class="cell85">list all interface methods, not only the direct ones</td>
          </tr>
          <tr>
            <td class="cell15"><code>--(java4|java5|cpp)</code></td>
			<td class="cell85">select the target language<br>
			--java4	generate output for Java 1.4 or earlier<br>
			--java5 generate output for Java 1.5 or later (is currently the default)<br>
			--cpp generate output for C++</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-sn, --shortnames</code></td>
			<td class="cell85">using namespace abbreviation 'css:': for '::com::sun::star::', only valid for sub-command 'dump' and target language 'cpp'. It is default for the sub-command 'component'.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>--propertysetmixin</code></td>
			<td class="cell85">the generated skeleton implements the cppu::PropertySetMixin helper if a referenced new style service specifies an interface which provides attributes (directly or inherited).</td>
          </tr>
          <tr>
            <td class="cell15"><code>-lh, --licenseheader</code></td>
			<td class="cell85">generates a default OpenOffice.org LGPL license header at the beginning of a component source file. This option is taken into account in 'component' mode only and if -o is unequal 'stdout'.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-bc,<br>--backward-compatible</code></td>
			<td class="cell85">specifies that the generated calc add-in is backward compatible to older office versions and implement the former required add-in interfaces where the implementation is mapped on the new add-in configuration. In this case the config schema needs to be bundled with the extension add-in as well. Default is a minimal add-in component skeleton based on the add-in configuration coming with the office since OO.org 2.0.4.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-o &lt;path&gt;</code></td>
			<td class="cell85">path specifies an existing directory where the output files are generated to, only valid for sub-command 'component'. If path=stdout the generated code is generated on standard out instead of a file.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-l &lt;file&gt;</code></td>
			<td class="cell85">specifies a binary type library (can be used more than once). The type library is integrated as an additional type provider in the bootstrapped type system.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-n &lt;name&gt;</code></td>
			<td class="cell85">specifies an implementation name for the component (used as classname, filename and package|namespace name). In 'dump' mode it is used as classname (e.g. &quot;MyBase::&quot;, C++ only) to generate method bodies not inline.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-d &lt;name&gt;</code></td>
			<td class="cell85">specifies a base classname or a delegator. In 'dump' mode it is used as a delegator to forward methods. It can be used as '&lt;name&gt;::' for base forwarding, or '&lt;name&gt;-&gt;|.' for composition. Using &quot;_&quot; means that a default bodies with default return values are dumped.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-t &lt;name&gt;</code></td>
			<td class="cell85">specifies an UNOIDL type name, e.g. com.sun.star.text.XText (can be used more than once).</td>
          </tr>
          <tr>
            <td class="cell15"><code>-p &lt;protocol:cmd(s)&gt;</code></td>
			<td class="cell85">specifies an add-on protocol name and the corresponding command names, where the commands are a ',' separated list of unique commands. This option is only valid for add-ons.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-V, --version</code></td>
			<td class="cell85">print version number and exit.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-h, --help</code></td>
			<td class="cell85">print this help and exit.</td>
          </tr>
		  </table>
		  </p>
		  </td>
		</tr>
      </table>
    </td>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
  </tr>
  <tr>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
    <td>
      <table class="table2">
        <tr>
		  <td colspan="2" class="head1"><a name="regcomp"></a>regcomp</td>
		  <td align="right">
		    <a href="#tools" title="link to the tools overview"><img class="navigate" src="images/nav_up.png"></a>
		    <a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a>
		  </td>
        </tr>
		<tr>
		  <td colspan="3">
		  <p>'regcomp' is a tool to register|revoke external UNO components
		  into|from a registry which is used in a UNO environment.</p>
		  <p class="head2">Usage:</p>
		  <blockquote>
		  <b><code>regcomp -revoke [-br&lt;registryfile&gt;] -r &lt;registryfile&gt; -c &lt;locationUrl&gt;[-l&lt;componentLoaderName&gt;]</code></b>
		  </blockquote>
		  <p class="head2">Options:</p>
		  <p>
		  <table class="table4">
		  <tr>
			<td class="cell15"><code>-register|revoke</code></td>
			<td class="cell85">register means that the components will be
			installed and revoke means that they will be removed.</td>
		  </tr>
		  <tr>
			<td class="cell15"><code>-br&lt;registryfile&gt;</code></td>
			<td class="cell85">the name of the registry used for bootstrapping
			the program. If the bootstrap registry is specified and has the same
			name as the registration registry, '-r' is optional.</td>
		  </tr>
		  <tr>
			<td class="cell15"><code>-r&lt;registryfile&gt;</code></td>
			<td class="cell85">the name of the registry (will be created if
			it does not exist) where the component should be registered.</td>
		  </tr>
		  <tr>
			<td class="cell15"><code>-c&lt;locationUrls&gt;</code></td>
			<td class="cell85">the location of a component (DLL, Class name,
			or an url of a jar file) or a list of urls separated by ';'s. Note
			that, if a list of urls is specified, the components must all need
			the same loader.</td>
		  </tr>
		  <tr>
			<td class="cell15"><code>-l&lt;componentLoaderName&gt;</code></td>
			<td class="cell85">the name of the needed loader, if no loader is
			specified the 'com.sun.star.loader.SharedLibrary' is used. Supported
			loaders: 'com.sun.star.loader.SharedLibrary' |
			'com.sun.star.loader.Java'.</td>
		  </tr>
		  </table>
		  </p>
		  </td>
		</tr>
      </table>
    </td>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
  </tr>
  <tr>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
    <td>
      <table class="table2">
        <tr>
		  <td colspan="2" class="head1"><a name="regmerge"></a>regmerge</td>
		  <td align="right">
		    <a href="#tools" title="link to the tools overview"><img class="navigate" src="images/nav_up.png"></a>
		    <a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a>
		  </td>
        </tr>
		<tr>
		  <td colspan="3">
		  <p>'regmerge' is a small tool to merge different registry files under a
		  specified key into another registry file. If a value already exists in
		  the target file the value is overwritten by the value of the source
		  file.</p>
		  <p class="head2">Usage:</p>
		  <blockquote>
		  <b><code>regmerge [-v|--verbose] &lt;mergefile&gt; &lt;mergeKeyName&gt; &lt;regfile_1&gt; ... &lt;regfile_n&gt;</code></b>
		  </blockquote>
		  <p class="head2">Options:</p>
		  <p>
		  <table class="table4">
		  <tr>
            <td class="cell15"><code>-v|--verbose</code></td>
			<td class="cell85">verbose output on stdout.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>&lt;mergefile&gt;</code></td>
			<td class="cell85">specifies the merged registry file. If this file
			doesn't exist, it is created.</td>
		  </tr>
		  <tr>
            <td class="cell15"><code>&lt;mergeKeyName&gt;</code></td>
			<td class="cell85">specifies the merge key, everything is merged
			under this key. If this key doesn't exist, it is created.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>&lt;regfile_1&gt; ... &lt;regfile_n&gt;</code></td>
			<td class="cell85">specifies one or more registry files that are
			merged.</td>
		  </tr>
		  </table>
		  </p>
		  </td>
		</tr>
      </table>
    </td>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
  </tr>
  <tr>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
    <td>
      <table class="table2">
        <tr>
		  <td colspan="2" class="head1"><a name="regview"></a>regview</td>
		  <td align="right">
		    <a href="#tools" title="link to the tools overview"><img class="navigate" src="images/nav_up.png"></a>
		    <a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a>
		  </td>
        </tr>
		<tr>
		  <td colspan="3">
		  <p>'regview' is a tool to show the contents of a registry file. The tool
		  dumps the hierarchical structure and the values of the nodes in a human
		  readable manner to stdout.</p>
		  <p class="head2">Usage:</p>
		  <blockquote>
		  <b><code>regview &lt;registryfile&gt; [&lt;keyName&gt;]</code></b>
		  </blockquote>
		  <p class="head2">Options:</p>
		  <p>
		  <table class="table4">
		  <tr>
            <td class="cell15">-br&lt;registryfile&gt;</code></td>
			<td class="cell85">the name of the registry whose contents should
			be viewed.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>&lt;keyName&gt;</code></td>
			<td class="cell85">the name of a registry key. The name must be
			fully qualified; for example, '/' means the root key and
			'/UCR/com/sun/star/uno/XInterface' shows the type specification of the
			XInterface type. If no key is specified, the tool dumps the whole
			content of the registry file.</td>
		  </tr>
		  </table>
		  </p>
		  </td>
		</tr>
      </table>
    </td>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
  </tr>
  <tr>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
    <td>
      <table class="table2">
        <tr>
		  <td colspan="2" class="head1"><a name="autodoc"></a>autodoc</td>
		  <td align="right">
		    <a href="#tools" title="link to the tools overview"><img class="navigate" src="images/nav_up.png"></a>
		    <a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a>
		  </td>
        </tr>
		<tr>
		  <td colspan="3">
		  <p>The 'autodoc' tool is used for creating javadoc-like documentation
		  from C++ and UNOIDL source code.</p>
		  <p>There are some conventions to follow when documenting C++- or
		  UNOIDL-sourcecode. See also the <a href="https://wiki.openoffice.org/wiki/Documentation/DevGuide/AppendixB/IDL_Documentation_Guidelines" title="link to the UNOIDL Documentation Guidelines">UNOIDL Documentation Guidelines</a>.<br>
          If you are not familiar with these, but do know javadoc: For simple C++
		  sourcecode documentation, using javadoc-style comments will work.</p>
		  <p class="head2">Usage:</p>
		  <blockquote>
		  <b><code>autodoc [ -v &lt;VerboseNr&gt; ] [ -name "&lt;TitleForTheDocu&gt;" ] -html &lt;OutputDirectory&gt; -lg &lt;SourcecodeLanguage&gt;<br>
          { [ -p &lt;ProjectName&gt; &lt;ProjectRootDirectory&gt; ] &nbsp;-t &lt;SourceTree&gt;* | -d &lt;SourceDirectory&gt;* | -f &lt;SourceFile&gt;* }*</code></b>
		  </blockquote>
		  <p class="head2">Options:</p>
		  <p>
		  <table class="table4">
		  <tr>
            <td class="cell15"><code>-v &lt;VerboseNr&gt;</code></td>
            <td class="cell85">&lt;VerboseNr&gt; == 5 displays the parsed source
		    code tokens, so you can locate which piece caused an parsing error.<br>
            &lt;VerboseNr&gt; == 2 displays not only the parsed source code,
		    but also the comments.<br><br>
		    This option must be the first one, if it is used.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-name "&lt;Title&gt;"</code></td>
		    <td class="cell85">&lt;Title&gt; occurs as the title of the start
		    page of the HTML output. If this option is omitted, a default title is
		    created.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-html &lt;OutputDirectory&gt;</code></td>
            <td class="cell85">specifies the root directory where the HTML output
		    is created.<br>
            Autodoc does not remove old files there, though it overwrites them.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-lg &lt;SourcecodeLanguage&gt;</code></td>
		    <td class="cell85">Possible values are: c++ | idl.<br><br>
            This also specifies which files will be parsed: &quot;c++&quot; parses
			all files with the endings .hxx and .h, &quot;idl&quot; parses all
			files with the ending '.idl' .<br>
            To change this behaviour, see at option <code>-f</code>.</td>
          </tr>
		  <tr>
            <td class="cell15"><code>-p &lt;ProjectName&gt; &lt;ProjectDirectory&gt;</code></td>
		    <td class="cell85">this option can be used to divide large code
		    bases into different projects.<br>
            &lt;ProjectName&gt; gives a user-defined name for the project.<br>
            &lt;ProjectDirectory&gt; is the root to which all paths, given with the
		    following options <code>-t,-d</code> and <code>-f</code>, are
			relative.<br>
		    This option can be omitted when there are no projects and all paths in
		    the following options are relative to the working directory.<br><br>
		    The &quot;{ ... }*&quot; around the options <code>-p,-t,-d,-f</code>
			indicates, that this whole block of options can be repeated, each block
			starting with a new <code>-p</code>.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-t &lt;SourceTree&gt;</code></td>
		    <td class="cell85">specifies that all files in the directory
		    &lt;SourceTree&gt; and it's subdirectories are parsed, where the file
		    ending matches the option <code>-lg</code>.<br>
            There can be given multiple directories after one <code>-t</code>
			option.<br>
            All relative paths &nbsp;are relative to the project-rootdirectory,
		    given with the <code>-p</code> option.<br>
            </td>
          </tr>
          <tr>
		    <td class="cell15"><code>-d &lt;SourceDirectory&gt;</code></td>
            <td class="cell85">Specifies that all files in th directory
		    &lt;SourceDirectory&gt;, but NOT it's subdirectories, are parsed, where
		    the file ending matches the option <code>-lg</code>.<br>
            There can be multiple directories given after one <code>-d</code>
			option.<br>
            All relative paths &nbsp;are relative to the project-rootdirectory,
			given with the <code>-p</code> option.</td>
          </tr>
          <tr>
            <td class="cell15"><code>-f &lt;SourceFile&gt;</code></td>
            <td class="cell85">parses the given file. The ending does not have
		    to match the <code>-lg</code> option.<br>
            There can be multiple files given after one <code>-f</code> option.<br>
            All relative paths &nbsp;are relative to the project-rootdirectory,
		    given with the <code>-p</code> option.</td>
          </tr>
		  </table>
		  </p><b>Remark:</b> The sequence of options matters! Use them in the order given
		  in the &quot;Usage&quot;-paragraph.</p>
		  </td>
		</tr>
      </table>
    </td>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
  </tr>
  <tr>
    <td colspan="3">
      <div class="centertext">
	<p><img class="apachelogo" src="images/sdk-footer-logo.png" title="Apache Logo" alt="Apache Logo">
            Copyright &copy; 2011-2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the ASF logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.<p>
      </div>
    </td>
  </tr>
</table>
<map name="Map">
  <area shape="rect" coords="25,100,385,25" href="https://www.openoffice.org">
</map>
</body>
</html>
