<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
 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.
-->
<project name="Geometry">
  <bannerRight>
    <name>Apache Commons Geometry</name>
    <src>/images/commons_geometry.small.png</src>
    <href>/index.html</href>
  </bannerRight>

  <skin>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-skin</artifactId>
    <version>4.2</version>
  </skin>

  <body>
    <!-- Custom <head> tag with injected XHTML is supported. -->
    <head>
      <![CDATA[<script type="text/javascript" id="MathJax-script" async
               src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
               </script>]]>
    </head>

    <menu name="Geometry">
      <item name="Overview" href="/index.html"/>
      <item name="Downloads" href="https://commons.apache.org/geometry/download_geometry.cgi"/>
      <item name="Issue Tracking" href="/issue-tracking.html"/>
      <item name="Source Repository (current)"
         href="https://gitbox.apache.org/repos/asf/commons-geometry.git"/>
      <!-- <item name="Wiki"   -->
      <!--       href="http://wiki.apache.org/commons/Geometry"/> -->
      <item name="Developers Guide" href="/developers.html"/>
      <item name="Release History" href="/release-history.html" />
    </menu>

    <menu name="User Guide">
      <item name="Contents" href="/userguide/index.html"/>
    </menu>
  </body>

  <custom>
    <!-- Escaping with CDATA is not required. -->
    <footer>
      <div class="center">
        Apache Commons, Apache @project.name@, Apache, the Apache feather
        logo, and the Apache Commons project logos are trademarks of The Apache
        Software Foundation.
        All other marks mentioned may be trademarks or registered
        trademarks of their respective owners.
      </div>
    </footer>

    <!-- Custom properties controlling the commons-skin template. -->
    <commonsSkin>
      <!--
          Convert preformatted source section tags to prettyprint:
          <div class="source"><pre> to <div class="source"><pre
          class="prettyprint">
      -->
      <prettyPrintSourcePreTags>false</prettyPrintSourcePreTags>

      <!-- Add the "linenums" class to the prettyprint enabled source
           tags -->
      <prettyPrintLineNumbersEnabled>false</prettyPrintLineNumbersEnabled>
    </commonsSkin>
  </custom>

</project>
