<?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>
      ]]>

     <!--
        Workaround to get styles for inline code elements. The current version
        of the site plugin strips "code" tags out of the content. The following
        style rules are a copy of the Bootstrap rules for "code" elements but
        applied to span elements with the class "code".
     -->
       <![CDATA[
          <style type="text/css">
              .code {
                font-family: Menlo, Monaco, "Courier New", monospace;
                color: #d14;
                padding: 3px 4px;
                background-color: #f7f7f9;
                border: 1px solid #e1e1e8;
                border-radius: 3px;
              }
          </style>
       ]]>
    </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#toc"/>
      <item name="Overview" href="/userguide/index.html#overview"/>
      <item name="Concepts" href="/userguide/index.html#concepts"/>
      <item name="Core Interfaces" href="/userguide/index.html#interfaces"/>
      <item name="Euclidean Space" href="/userguide/index.html#euclidean"/>
      <item name="Spherical Space" href="/userguide/index.html#spherical"/>
      <item name="Convex Hull" href="/userguide/index.html#hull"/>
      <item name="Enclosing" href="/userguide/index.html#enclosing"/>
    </menu>
    <menu name="Tutorials">
      <item name="BSP Trees" href="/tutorials/bsp-tree.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>true</prettyPrintSourcePreTags>

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

</project>
