xref: /aosp_15_r20/system/media/camera/docs/html.mako (revision b9df5ad1c9ac98a7fefaac271a55f7ae3db05414)
1*b9df5ad1SAndroid Build Coastguard Worker## -*- coding: utf-8 -*-
2*b9df5ad1SAndroid Build Coastguard Worker<!DOCTYPE html>
3*b9df5ad1SAndroid Build Coastguard Worker<html>
4*b9df5ad1SAndroid Build Coastguard Worker<!-- Copyright (C) 2012 The Android Open Source Project
5*b9df5ad1SAndroid Build Coastguard Worker
6*b9df5ad1SAndroid Build Coastguard Worker     Licensed under the Apache License, Version 2.0 (the "License");
7*b9df5ad1SAndroid Build Coastguard Worker     you may not use this file except in compliance with the License.
8*b9df5ad1SAndroid Build Coastguard Worker     You may obtain a copy of the License at
9*b9df5ad1SAndroid Build Coastguard Worker
10*b9df5ad1SAndroid Build Coastguard Worker          http://www.apache.org/licenses/LICENSE-2.0
11*b9df5ad1SAndroid Build Coastguard Worker
12*b9df5ad1SAndroid Build Coastguard Worker     Unless required by applicable law or agreed to in writing, software
13*b9df5ad1SAndroid Build Coastguard Worker     distributed under the License is distributed on an "AS IS" BASIS,
14*b9df5ad1SAndroid Build Coastguard Worker     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15*b9df5ad1SAndroid Build Coastguard Worker     See the License for the specific language governing permissions and
16*b9df5ad1SAndroid Build Coastguard Worker     limitations under the License.
17*b9df5ad1SAndroid Build Coastguard Worker-->
18*b9df5ad1SAndroid Build Coastguard Worker<head>
19*b9df5ad1SAndroid Build Coastguard Worker  <!-- automatically generated from html.mako. do NOT edit directly -->
20*b9df5ad1SAndroid Build Coastguard Worker  <meta charset="utf-8" />
21*b9df5ad1SAndroid Build Coastguard Worker  <title>Android Camera HAL3.4 Properties</title>
22*b9df5ad1SAndroid Build Coastguard Worker  <style type="text/css">
23*b9df5ad1SAndroid Build Coastguard Worker     body { background-color: #f7f7f7; font-family: Roboto, sans-serif;}
24*b9df5ad1SAndroid Build Coastguard Worker     h1 { color: #333333; }
25*b9df5ad1SAndroid Build Coastguard Worker     h2 { color: #333333; }
26*b9df5ad1SAndroid Build Coastguard Worker     a:link { color: #258aaf; text-decoration: none}
27*b9df5ad1SAndroid Build Coastguard Worker     a:hover { color: #459aaf; text-decoration: underline }
28*b9df5ad1SAndroid Build Coastguard Worker     a:visited { color: #154a5f; text-decoration: none}
29*b9df5ad1SAndroid Build Coastguard Worker    .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777}
30*b9df5ad1SAndroid Build Coastguard Worker    .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa }
31*b9df5ad1SAndroid Build Coastguard Worker    .entry { background-color: #f0f0f0 }
32*b9df5ad1SAndroid Build Coastguard Worker    .entry_cont { background-color: #f0f0f0 }
33*b9df5ad1SAndroid Build Coastguard Worker    .entries_header { background-color: #dddddd; text-align: center}
34*b9df5ad1SAndroid Build Coastguard Worker
35*b9df5ad1SAndroid Build Coastguard Worker    /* toc style */
36*b9df5ad1SAndroid Build Coastguard Worker    .toc_section_header { font-size:1.3em;  }
37*b9df5ad1SAndroid Build Coastguard Worker    .toc_kind_header { font-size:1.2em;  }
38*b9df5ad1SAndroid Build Coastguard Worker    .toc_deprecated { text-decoration:line-through; }
39*b9df5ad1SAndroid Build Coastguard Worker
40*b9df5ad1SAndroid Build Coastguard Worker    /* table column sizes */
41*b9df5ad1SAndroid Build Coastguard Worker    table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word }
42*b9df5ad1SAndroid Build Coastguard Worker    td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em }
43*b9df5ad1SAndroid Build Coastguard Worker    .th_name { width: 20% }
44*b9df5ad1SAndroid Build Coastguard Worker    .th_units { width: 10% }
45*b9df5ad1SAndroid Build Coastguard Worker    .th_tags { width: 5% }
46*b9df5ad1SAndroid Build Coastguard Worker    .th_details { width: 25% }
47*b9df5ad1SAndroid Build Coastguard Worker    .th_type { width: 17% }
48*b9df5ad1SAndroid Build Coastguard Worker    .th_description { width: 20% }
49*b9df5ad1SAndroid Build Coastguard Worker    .th_range { width: 8% }
50*b9df5ad1SAndroid Build Coastguard Worker    .th_hal_version { width: 5% }
51*b9df5ad1SAndroid Build Coastguard Worker    td { font-size: 0.9em; }
52*b9df5ad1SAndroid Build Coastguard Worker
53*b9df5ad1SAndroid Build Coastguard Worker    /* hide the first thead, we need it there only to enforce column sizes */
54*b9df5ad1SAndroid Build Coastguard Worker    .thead_dummy { visibility: hidden; }
55*b9df5ad1SAndroid Build Coastguard Worker
56*b9df5ad1SAndroid Build Coastguard Worker    /* Entry flair */
57*b9df5ad1SAndroid Build Coastguard Worker    .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
58*b9df5ad1SAndroid Build Coastguard Worker    .entry_name_deprecated { text-decoration:line-through; }
59*b9df5ad1SAndroid Build Coastguard Worker
60*b9df5ad1SAndroid Build Coastguard Worker    /* Entry type flair */
61*b9df5ad1SAndroid Build Coastguard Worker    .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
62*b9df5ad1SAndroid Build Coastguard Worker    .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
63*b9df5ad1SAndroid Build Coastguard Worker    .entry_type_visibility { font-weight: bolder; padding-left:1em}
64*b9df5ad1SAndroid Build Coastguard Worker    .entry_type_synthetic { font-weight: bolder; color: #996600; }
65*b9df5ad1SAndroid Build Coastguard Worker    .entry_type_hwlevel { font-weight: bolder; color: #000066; }
66*b9df5ad1SAndroid Build Coastguard Worker    .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
67*b9df5ad1SAndroid Build Coastguard Worker    .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
68*b9df5ad1SAndroid Build Coastguard Worker    .entry_type_enum_notes:before { content:" - " }
69*b9df5ad1SAndroid Build Coastguard Worker    .entry_type_enum_notes>p:first-child { display:inline; }
70*b9df5ad1SAndroid Build Coastguard Worker    .entry_type_enum_value:before { content:" = " }
71*b9df5ad1SAndroid Build Coastguard Worker    .entry_type_enum_value { font-family: monospace; }
72*b9df5ad1SAndroid Build Coastguard Worker    .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
73*b9df5ad1SAndroid Build Coastguard Worker    .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
74*b9df5ad1SAndroid Build Coastguard Worker    .entry_range_deprecated { font-weight: bolder; }
75*b9df5ad1SAndroid Build Coastguard Worker
76*b9df5ad1SAndroid Build Coastguard Worker    /* Entry tags flair */
77*b9df5ad1SAndroid Build Coastguard Worker    .entry_tags ul { list-style-type: none; }
78*b9df5ad1SAndroid Build Coastguard Worker
79*b9df5ad1SAndroid Build Coastguard Worker    /* Entry details (full docs) flair */
80*b9df5ad1SAndroid Build Coastguard Worker    .entry_details_header { font-weight: bold; background-color: #dddddd;
81*b9df5ad1SAndroid Build Coastguard Worker      text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
82*b9df5ad1SAndroid Build Coastguard Worker
83*b9df5ad1SAndroid Build Coastguard Worker    /* Entry spacer flair */
84*b9df5ad1SAndroid Build Coastguard Worker    .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
85*b9df5ad1SAndroid Build Coastguard Worker
86*b9df5ad1SAndroid Build Coastguard Worker    /* TODO: generate abbr element for each tag link? */
87*b9df5ad1SAndroid Build Coastguard Worker    /* TODO for each x.y.z try to link it to the entry */
88*b9df5ad1SAndroid Build Coastguard Worker
89*b9df5ad1SAndroid Build Coastguard Worker  </style>
90*b9df5ad1SAndroid Build Coastguard Worker
91*b9df5ad1SAndroid Build Coastguard Worker  <style>
92*b9df5ad1SAndroid Build Coastguard Worker
93*b9df5ad1SAndroid Build Coastguard Worker    {
94*b9df5ad1SAndroid Build Coastguard Worker      /* broken...
95*b9df5ad1SAndroid Build Coastguard Worker         supposedly there is a bug in chrome that it lays out tables before
96*b9df5ad1SAndroid Build Coastguard Worker         it knows its being printed, so the page-break-* styles are ignored
97*b9df5ad1SAndroid Build Coastguard Worker         */
98*b9df5ad1SAndroid Build Coastguard Worker        tr { page-break-after: always; page-break-inside: avoid; }
99*b9df5ad1SAndroid Build Coastguard Worker    }
100*b9df5ad1SAndroid Build Coastguard Worker
101*b9df5ad1SAndroid Build Coastguard Worker  </style>
102*b9df5ad1SAndroid Build Coastguard Worker</head>
103*b9df5ad1SAndroid Build Coastguard Worker
104*b9df5ad1SAndroid Build Coastguard Worker<%!
105*b9df5ad1SAndroid Build Coastguard Worker  import re
106*b9df5ad1SAndroid Build Coastguard Worker  from metadata_helpers import md
107*b9df5ad1SAndroid Build Coastguard Worker  from metadata_helpers import IMAGE_SRC_METADATA
108*b9df5ad1SAndroid Build Coastguard Worker  from metadata_helpers import filter_tags
109*b9df5ad1SAndroid Build Coastguard Worker  from metadata_helpers import filter_links
110*b9df5ad1SAndroid Build Coastguard Worker  from metadata_helpers import wbr
111*b9df5ad1SAndroid Build Coastguard Worker
112*b9df5ad1SAndroid Build Coastguard Worker  # insert line breaks after every two \n\n
113*b9df5ad1SAndroid Build Coastguard Worker  def br(text):
114*b9df5ad1SAndroid Build Coastguard Worker    return re.sub(r"(\r?\n)(\r?\n)", r"\1<br>\2<br>", text)
115*b9df5ad1SAndroid Build Coastguard Worker
116*b9df5ad1SAndroid Build Coastguard Worker  # Convert node name "x.y.z" of kind w to an HTML anchor of form
117*b9df5ad1SAndroid Build Coastguard Worker  # <a href="#w_x.y.z">x.y.z</a>
118*b9df5ad1SAndroid Build Coastguard Worker  def html_anchor(node):
119*b9df5ad1SAndroid Build Coastguard Worker    return '<a href="#%s_%s">%s</a>' % (node.kind, node.name, node.name)
120*b9df5ad1SAndroid Build Coastguard Worker
121*b9df5ad1SAndroid Build Coastguard Worker  # Convert target "xxx.yyy#zzz" to a HTML reference to Android public developer
122*b9df5ad1SAndroid Build Coastguard Worker  # docs with link name from shortname.
123*b9df5ad1SAndroid Build Coastguard Worker  def html_link(target, target_ndk, shortname):
124*b9df5ad1SAndroid Build Coastguard Worker    if shortname == '':
125*b9df5ad1SAndroid Build Coastguard Worker      lastdot = target.rfind('.')
126*b9df5ad1SAndroid Build Coastguard Worker      if lastdot == -1:
127*b9df5ad1SAndroid Build Coastguard Worker        shortname = target
128*b9df5ad1SAndroid Build Coastguard Worker      else:
129*b9df5ad1SAndroid Build Coastguard Worker        shortname = target[lastdot + 1:]
130*b9df5ad1SAndroid Build Coastguard Worker
131*b9df5ad1SAndroid Build Coastguard Worker    target = target.replace('.','/')
132*b9df5ad1SAndroid Build Coastguard Worker    if target.find('#') != -1:
133*b9df5ad1SAndroid Build Coastguard Worker      target = target.replace('#','.html#')
134*b9df5ad1SAndroid Build Coastguard Worker    else:
135*b9df5ad1SAndroid Build Coastguard Worker      target = target + '.html'
136*b9df5ad1SAndroid Build Coastguard Worker
137*b9df5ad1SAndroid Build Coastguard Worker    # Work around html links with inner classes.
138*b9df5ad1SAndroid Build Coastguard Worker    target = target.replace('CaptureRequest/Builder', 'CaptureRequest.Builder')
139*b9df5ad1SAndroid Build Coastguard Worker    target = target.replace('Build/VERSION', 'Build.VERSION')
140*b9df5ad1SAndroid Build Coastguard Worker
141*b9df5ad1SAndroid Build Coastguard Worker    return '<a href="https://developer.android.com/reference/%s">%s</a>' % (target, shortname)
142*b9df5ad1SAndroid Build Coastguard Worker
143*b9df5ad1SAndroid Build Coastguard Worker  # Render as markdown, and do HTML-doc-specific rewrites
144*b9df5ad1SAndroid Build Coastguard Worker  def md_html(text):
145*b9df5ad1SAndroid Build Coastguard Worker    return md(text, IMAGE_SRC_METADATA)
146*b9df5ad1SAndroid Build Coastguard Worker
147*b9df5ad1SAndroid Build Coastguard Worker  # linkify tag names such as "android.x.y.z" into html anchors
148*b9df5ad1SAndroid Build Coastguard Worker  def linkify_tags(metadata):
149*b9df5ad1SAndroid Build Coastguard Worker    def linkify_filter(text):
150*b9df5ad1SAndroid Build Coastguard Worker      tagged_text = filter_tags(text, metadata, html_anchor)
151*b9df5ad1SAndroid Build Coastguard Worker      return filter_links(tagged_text, html_link)
152*b9df5ad1SAndroid Build Coastguard Worker    return linkify_filter
153*b9df5ad1SAndroid Build Coastguard Worker
154*b9df5ad1SAndroid Build Coastguard Worker  # Number of rows an entry will span
155*b9df5ad1SAndroid Build Coastguard Worker  def entry_cols(prop):
156*b9df5ad1SAndroid Build Coastguard Worker    cols = 1
157*b9df5ad1SAndroid Build Coastguard Worker    if prop.details: cols = cols + 2
158*b9df5ad1SAndroid Build Coastguard Worker    if prop.hal_details: cols = cols + 2
159*b9df5ad1SAndroid Build Coastguard Worker    return cols
160*b9df5ad1SAndroid Build Coastguard Worker%>
161*b9df5ad1SAndroid Build Coastguard Worker
162*b9df5ad1SAndroid Build Coastguard Worker<body>
163*b9df5ad1SAndroid Build Coastguard Worker  <h1>Android Camera HAL3.2 Properties</h1>
164*b9df5ad1SAndroid Build Coastguard Worker\
165*b9df5ad1SAndroid Build Coastguard Worker<%def name="insert_toc_body(node)">
166*b9df5ad1SAndroid Build Coastguard Worker  % for nested in node.namespaces:
167*b9df5ad1SAndroid Build Coastguard Worker${    insert_toc_body(nested)}
168*b9df5ad1SAndroid Build Coastguard Worker  % endfor
169*b9df5ad1SAndroid Build Coastguard Worker  % for entry in node.merged_entries:
170*b9df5ad1SAndroid Build Coastguard Worker            <li
171*b9df5ad1SAndroid Build Coastguard Worker    % if entry.deprecated:
172*b9df5ad1SAndroid Build Coastguard Worker                class="toc_deprecated"
173*b9df5ad1SAndroid Build Coastguard Worker    % endif
174*b9df5ad1SAndroid Build Coastguard Worker            >${html_anchor(entry)}</li>
175*b9df5ad1SAndroid Build Coastguard Worker  % endfor
176*b9df5ad1SAndroid Build Coastguard Worker</%def>
177*b9df5ad1SAndroid Build Coastguard Worker
178*b9df5ad1SAndroid Build Coastguard Worker  <h2>Table of Contents</h2>
179*b9df5ad1SAndroid Build Coastguard Worker  <ul class="toc">
180*b9df5ad1SAndroid Build Coastguard Worker    <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
181*b9df5ad1SAndroid Build Coastguard Worker% for root in metadata.outer_namespaces:
182*b9df5ad1SAndroid Build Coastguard Worker  % for section in root.sections:
183*b9df5ad1SAndroid Build Coastguard Worker    <li>
184*b9df5ad1SAndroid Build Coastguard Worker      <span class="toc_section_header"><a href="#section_${section.name}">${section.name}</a></span>
185*b9df5ad1SAndroid Build Coastguard Worker      <ul class="toc_section">
186*b9df5ad1SAndroid Build Coastguard Worker      % for kind in section.merged_kinds: # dynamic,static,controls
187*b9df5ad1SAndroid Build Coastguard Worker        <li>
188*b9df5ad1SAndroid Build Coastguard Worker          <span class="toc_kind_header">${kind.name}</span>
189*b9df5ad1SAndroid Build Coastguard Worker          <ul class="toc_section">\
190*b9df5ad1SAndroid Build Coastguard Worker${          insert_toc_body(kind)}\
191*b9df5ad1SAndroid Build Coastguard Worker          </ul>
192*b9df5ad1SAndroid Build Coastguard Worker        </li>
193*b9df5ad1SAndroid Build Coastguard Worker      % endfor
194*b9df5ad1SAndroid Build Coastguard Worker      </ul> <!-- toc_section -->
195*b9df5ad1SAndroid Build Coastguard Worker    </li>
196*b9df5ad1SAndroid Build Coastguard Worker  % endfor
197*b9df5ad1SAndroid Build Coastguard Worker% endfor
198*b9df5ad1SAndroid Build Coastguard Worker  </ul>
199*b9df5ad1SAndroid Build Coastguard Worker
200*b9df5ad1SAndroid Build Coastguard Worker
201*b9df5ad1SAndroid Build Coastguard Worker  <h1>Properties</h1>
202*b9df5ad1SAndroid Build Coastguard Worker  <table class="properties">
203*b9df5ad1SAndroid Build Coastguard Worker
204*b9df5ad1SAndroid Build Coastguard Worker    <thead class="thead_dummy">
205*b9df5ad1SAndroid Build Coastguard Worker      <tr>
206*b9df5ad1SAndroid Build Coastguard Worker        <th class="th_name">Property Name</th>
207*b9df5ad1SAndroid Build Coastguard Worker        <th class="th_type">Type</th>
208*b9df5ad1SAndroid Build Coastguard Worker        <th class="th_description">Description</th>
209*b9df5ad1SAndroid Build Coastguard Worker        <th class="th_units">Units</th>
210*b9df5ad1SAndroid Build Coastguard Worker        <th class="th_range">Range</th>
211*b9df5ad1SAndroid Build Coastguard Worker        <th class="th_hal_version">HIDL HAL version</th>
212*b9df5ad1SAndroid Build Coastguard Worker        <th class="th_tags">Tags</th>
213*b9df5ad1SAndroid Build Coastguard Worker      </tr>
214*b9df5ad1SAndroid Build Coastguard Worker    </thead> <!-- so that the first occurrence of thead is not
215*b9df5ad1SAndroid Build Coastguard Worker                         above the first occurrence of tr -->
216*b9df5ad1SAndroid Build Coastguard Worker% for root in metadata.outer_namespaces:
217*b9df5ad1SAndroid Build Coastguard Worker<!-- <namespace name="${root.name}"> -->
218*b9df5ad1SAndroid Build Coastguard Worker  % for section in root.sections:
219*b9df5ad1SAndroid Build Coastguard Worker  <tr><td colspan="7" id="section_${section.name}" class="section">${section.name}</td></tr>
220*b9df5ad1SAndroid Build Coastguard Worker
221*b9df5ad1SAndroid Build Coastguard Worker    % if section.description is not None:
222*b9df5ad1SAndroid Build Coastguard Worker      <tr class="description"><td>${section.description}</td></tr>
223*b9df5ad1SAndroid Build Coastguard Worker    % endif
224*b9df5ad1SAndroid Build Coastguard Worker
225*b9df5ad1SAndroid Build Coastguard Worker    % for kind in section.merged_kinds: # dynamic,static,controls
226*b9df5ad1SAndroid Build Coastguard Worker      <tr><td colspan="7" class="kind">${kind.name}</td></tr>
227*b9df5ad1SAndroid Build Coastguard Worker
228*b9df5ad1SAndroid Build Coastguard Worker      <thead class="entries_header">
229*b9df5ad1SAndroid Build Coastguard Worker        <tr>
230*b9df5ad1SAndroid Build Coastguard Worker          <th class="th_name">Property Name</th>
231*b9df5ad1SAndroid Build Coastguard Worker          <th class="th_type">Type</th>
232*b9df5ad1SAndroid Build Coastguard Worker          <th class="th_description">Description</th>
233*b9df5ad1SAndroid Build Coastguard Worker          <th class="th_units">Units</th>
234*b9df5ad1SAndroid Build Coastguard Worker          <th class="th_range">Range</th>
235*b9df5ad1SAndroid Build Coastguard Worker          <th class="th_hal_version">Initial HIDL HAL version</th>
236*b9df5ad1SAndroid Build Coastguard Worker          <th class="th_tags">Tags</th>
237*b9df5ad1SAndroid Build Coastguard Worker        </tr>
238*b9df5ad1SAndroid Build Coastguard Worker      </thead>
239*b9df5ad1SAndroid Build Coastguard Worker
240*b9df5ad1SAndroid Build Coastguard Worker      <tbody>
241*b9df5ad1SAndroid Build Coastguard Worker
242*b9df5ad1SAndroid Build Coastguard Worker        <%def name="insert_body(node)">
243*b9df5ad1SAndroid Build Coastguard Worker            % for nested in node.namespaces:
244*b9df5ad1SAndroid Build Coastguard Worker                ${insert_namespace(nested)}
245*b9df5ad1SAndroid Build Coastguard Worker            % endfor
246*b9df5ad1SAndroid Build Coastguard Worker
247*b9df5ad1SAndroid Build Coastguard Worker            % for entry in node.merged_entries:
248*b9df5ad1SAndroid Build Coastguard Worker                ${insert_entry(entry)}
249*b9df5ad1SAndroid Build Coastguard Worker            % endfor
250*b9df5ad1SAndroid Build Coastguard Worker        </%def>
251*b9df5ad1SAndroid Build Coastguard Worker
252*b9df5ad1SAndroid Build Coastguard Worker        <%def name="insert_namespace(namespace)">
253*b9df5ad1SAndroid Build Coastguard Worker            ${insert_body(namespace)}
254*b9df5ad1SAndroid Build Coastguard Worker        </%def>
255*b9df5ad1SAndroid Build Coastguard Worker
256*b9df5ad1SAndroid Build Coastguard Worker        <%def name="insert_entry(prop)">
257*b9df5ad1SAndroid Build Coastguard Worker          <tr class="entry" id="${prop.kind}_${prop.name}">
258*b9df5ad1SAndroid Build Coastguard Worker            <td class="entry_name
259*b9df5ad1SAndroid Build Coastguard Worker              % if prop.deprecated:
260*b9df5ad1SAndroid Build Coastguard Worker                entry_name_deprecated
261*b9df5ad1SAndroid Build Coastguard Worker              % endif
262*b9df5ad1SAndroid Build Coastguard Worker             " rowspan="${entry_cols(prop)}">
263*b9df5ad1SAndroid Build Coastguard Worker              ${prop.name | wbr}
264*b9df5ad1SAndroid Build Coastguard Worker            </td>
265*b9df5ad1SAndroid Build Coastguard Worker            <td class="entry_type">
266*b9df5ad1SAndroid Build Coastguard Worker              % if prop.enum:
267*b9df5ad1SAndroid Build Coastguard Worker                <span class="entry_type_name entry_type_name_enum">${prop.type}</span>
268*b9df5ad1SAndroid Build Coastguard Worker              % else:
269*b9df5ad1SAndroid Build Coastguard Worker                <span class="entry_type_name">${prop.type}</span>
270*b9df5ad1SAndroid Build Coastguard Worker              % endif
271*b9df5ad1SAndroid Build Coastguard Worker              % if prop.container is not None:
272*b9df5ad1SAndroid Build Coastguard Worker                <span class="entry_type_container">x</span>
273*b9df5ad1SAndroid Build Coastguard Worker              % endif
274*b9df5ad1SAndroid Build Coastguard Worker
275*b9df5ad1SAndroid Build Coastguard Worker              % if prop.container == 'array':
276*b9df5ad1SAndroid Build Coastguard Worker                <span class="entry_type_array">
277*b9df5ad1SAndroid Build Coastguard Worker                  ${" x ".join(prop.container_sizes)}
278*b9df5ad1SAndroid Build Coastguard Worker                </span>
279*b9df5ad1SAndroid Build Coastguard Worker              % elif prop.container == 'tuple':
280*b9df5ad1SAndroid Build Coastguard Worker                <ul class="entry_type_tuple">
281*b9df5ad1SAndroid Build Coastguard Worker                % for val in prop.tuple_values:
282*b9df5ad1SAndroid Build Coastguard Worker                  <li>${val}</li>
283*b9df5ad1SAndroid Build Coastguard Worker                % endfor
284*b9df5ad1SAndroid Build Coastguard Worker                </ul>
285*b9df5ad1SAndroid Build Coastguard Worker              % endif
286*b9df5ad1SAndroid Build Coastguard Worker              <span class="entry_type_visibility"> [${prop.applied_visibility}${" as %s" %prop.typedef.name if prop.typedef else ""}]</span>
287*b9df5ad1SAndroid Build Coastguard Worker
288*b9df5ad1SAndroid Build Coastguard Worker              % if prop.synthetic:
289*b9df5ad1SAndroid Build Coastguard Worker              <span class="entry_type_synthetic">[synthetic] </span>
290*b9df5ad1SAndroid Build Coastguard Worker              % endif
291*b9df5ad1SAndroid Build Coastguard Worker
292*b9df5ad1SAndroid Build Coastguard Worker              % if prop.hwlevel:
293*b9df5ad1SAndroid Build Coastguard Worker              <span class="entry_type_hwlevel">[${prop.hwlevel}] </span>
294*b9df5ad1SAndroid Build Coastguard Worker              % endif
295*b9df5ad1SAndroid Build Coastguard Worker
296*b9df5ad1SAndroid Build Coastguard Worker              % if prop.deprecated:
297*b9df5ad1SAndroid Build Coastguard Worker              <span class="entry_type_deprecated">[deprecated] </span>
298*b9df5ad1SAndroid Build Coastguard Worker              % endif
299*b9df5ad1SAndroid Build Coastguard Worker
300*b9df5ad1SAndroid Build Coastguard Worker              % if prop.type_notes is not None:
301*b9df5ad1SAndroid Build Coastguard Worker                <div class="entry_type_notes">${prop.type_notes | wbr}</div>
302*b9df5ad1SAndroid Build Coastguard Worker              % endif
303*b9df5ad1SAndroid Build Coastguard Worker
304*b9df5ad1SAndroid Build Coastguard Worker              % if prop.enum:
305*b9df5ad1SAndroid Build Coastguard Worker                <ul class="entry_type_enum">
306*b9df5ad1SAndroid Build Coastguard Worker                  % for value in prop.enum.values:
307*b9df5ad1SAndroid Build Coastguard Worker                  <li>
308*b9df5ad1SAndroid Build Coastguard Worker                    <span class="entry_type_enum_name">${value.name} (v${value.hal_major_version}.${value.hal_minor_version})</span>
309*b9df5ad1SAndroid Build Coastguard Worker                  % if value.deprecated:
310*b9df5ad1SAndroid Build Coastguard Worker                    <span class="entry_type_enum_deprecated">[deprecated]</span>
311*b9df5ad1SAndroid Build Coastguard Worker                  % endif:
312*b9df5ad1SAndroid Build Coastguard Worker                  % if value.optional:
313*b9df5ad1SAndroid Build Coastguard Worker                    <span class="entry_type_enum_optional">[optional]</span>
314*b9df5ad1SAndroid Build Coastguard Worker                  % endif:
315*b9df5ad1SAndroid Build Coastguard Worker                  % if value.applied_visibility != 'public':
316*b9df5ad1SAndroid Build Coastguard Worker                    <span class="entry_type_enum_hidden">[${value.visibility}]</span>
317*b9df5ad1SAndroid Build Coastguard Worker                  % endif:
318*b9df5ad1SAndroid Build Coastguard Worker                  % if value.id is not None:
319*b9df5ad1SAndroid Build Coastguard Worker                    <span class="entry_type_enum_value">${value.id}</span>
320*b9df5ad1SAndroid Build Coastguard Worker                  % endif
321*b9df5ad1SAndroid Build Coastguard Worker                  % if value.notes is not None:
322*b9df5ad1SAndroid Build Coastguard Worker                    <span class="entry_type_enum_notes">${value.notes | md_html, linkify_tags(metadata), wbr}</span>
323*b9df5ad1SAndroid Build Coastguard Worker                  % endif
324*b9df5ad1SAndroid Build Coastguard Worker                  </li>
325*b9df5ad1SAndroid Build Coastguard Worker                  % endfor
326*b9df5ad1SAndroid Build Coastguard Worker                </ul>
327*b9df5ad1SAndroid Build Coastguard Worker              % endif
328*b9df5ad1SAndroid Build Coastguard Worker
329*b9df5ad1SAndroid Build Coastguard Worker            </td> <!-- entry_type -->
330*b9df5ad1SAndroid Build Coastguard Worker
331*b9df5ad1SAndroid Build Coastguard Worker            <td class="entry_description">
332*b9df5ad1SAndroid Build Coastguard Worker            % if prop.description is not None:
333*b9df5ad1SAndroid Build Coastguard Worker              ${prop.description | md_html, linkify_tags(metadata), wbr}
334*b9df5ad1SAndroid Build Coastguard Worker            % endif
335*b9df5ad1SAndroid Build Coastguard Worker            </td>
336*b9df5ad1SAndroid Build Coastguard Worker
337*b9df5ad1SAndroid Build Coastguard Worker            <td class="entry_units">
338*b9df5ad1SAndroid Build Coastguard Worker            % if prop.units is not None:
339*b9df5ad1SAndroid Build Coastguard Worker              ${prop.units | wbr}
340*b9df5ad1SAndroid Build Coastguard Worker            % endif
341*b9df5ad1SAndroid Build Coastguard Worker            </td>
342*b9df5ad1SAndroid Build Coastguard Worker
343*b9df5ad1SAndroid Build Coastguard Worker            <td class="entry_range">
344*b9df5ad1SAndroid Build Coastguard Worker            % if prop.deprecated:
345*b9df5ad1SAndroid Build Coastguard Worker              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
346*b9df5ad1SAndroid Build Coastguard Worker            % endif
347*b9df5ad1SAndroid Build Coastguard Worker            % if prop.range is not None:
348*b9df5ad1SAndroid Build Coastguard Worker              ${prop.range | md_html, linkify_tags(metadata), wbr}
349*b9df5ad1SAndroid Build Coastguard Worker            % endif
350*b9df5ad1SAndroid Build Coastguard Worker            </td>
351*b9df5ad1SAndroid Build Coastguard Worker
352*b9df5ad1SAndroid Build Coastguard Worker            <td class="entry_hal_version">
353*b9df5ad1SAndroid Build Coastguard Worker              ${"%d.%d" % (prop.hal_major_version, prop.hal_minor_version) | md_html, linkify_tags(metadata), wbr}
354*b9df5ad1SAndroid Build Coastguard Worker            </td>
355*b9df5ad1SAndroid Build Coastguard Worker
356*b9df5ad1SAndroid Build Coastguard Worker            <td class="entry_tags">
357*b9df5ad1SAndroid Build Coastguard Worker            % if next(prop.tags, None):
358*b9df5ad1SAndroid Build Coastguard Worker              <ul class="entry_tags">
359*b9df5ad1SAndroid Build Coastguard Worker              % for tag in prop.tags:
360*b9df5ad1SAndroid Build Coastguard Worker                  <li><a href="#tag_${tag.id}">${tag.id}</a></li>
361*b9df5ad1SAndroid Build Coastguard Worker              % endfor
362*b9df5ad1SAndroid Build Coastguard Worker              </ul>
363*b9df5ad1SAndroid Build Coastguard Worker            % endif
364*b9df5ad1SAndroid Build Coastguard Worker            </td>
365*b9df5ad1SAndroid Build Coastguard Worker
366*b9df5ad1SAndroid Build Coastguard Worker          </tr>
367*b9df5ad1SAndroid Build Coastguard Worker          % if prop.details is not None:
368*b9df5ad1SAndroid Build Coastguard Worker          <tr class="entries_header">
369*b9df5ad1SAndroid Build Coastguard Worker            <th class="th_details" colspan="6">Details</th>
370*b9df5ad1SAndroid Build Coastguard Worker          </tr>
371*b9df5ad1SAndroid Build Coastguard Worker          <tr class="entry_cont">
372*b9df5ad1SAndroid Build Coastguard Worker            <td class="entry_details" colspan="6">
373*b9df5ad1SAndroid Build Coastguard Worker              ${prop.details | md_html, linkify_tags(metadata), wbr}
374*b9df5ad1SAndroid Build Coastguard Worker            </td>
375*b9df5ad1SAndroid Build Coastguard Worker          </tr>
376*b9df5ad1SAndroid Build Coastguard Worker          % endif
377*b9df5ad1SAndroid Build Coastguard Worker
378*b9df5ad1SAndroid Build Coastguard Worker          % if prop.hal_details is not None:
379*b9df5ad1SAndroid Build Coastguard Worker          <tr class="entries_header">
380*b9df5ad1SAndroid Build Coastguard Worker            <th class="th_details" colspan="6">HAL Implementation Details</th>
381*b9df5ad1SAndroid Build Coastguard Worker          </tr>
382*b9df5ad1SAndroid Build Coastguard Worker          <tr class="entry_cont">
383*b9df5ad1SAndroid Build Coastguard Worker            <td class="entry_details" colspan="6">
384*b9df5ad1SAndroid Build Coastguard Worker              ${prop.hal_details | md_html, linkify_tags(metadata), wbr}
385*b9df5ad1SAndroid Build Coastguard Worker            </td>
386*b9df5ad1SAndroid Build Coastguard Worker          </tr>
387*b9df5ad1SAndroid Build Coastguard Worker          % endif
388*b9df5ad1SAndroid Build Coastguard Worker
389*b9df5ad1SAndroid Build Coastguard Worker          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
390*b9df5ad1SAndroid Build Coastguard Worker           <!-- end of entry -->
391*b9df5ad1SAndroid Build Coastguard Worker        </%def>
392*b9df5ad1SAndroid Build Coastguard Worker
393*b9df5ad1SAndroid Build Coastguard Worker        ${insert_body(kind)}
394*b9df5ad1SAndroid Build Coastguard Worker
395*b9df5ad1SAndroid Build Coastguard Worker      <!-- end of kind -->
396*b9df5ad1SAndroid Build Coastguard Worker      </tbody>
397*b9df5ad1SAndroid Build Coastguard Worker    % endfor # for each kind
398*b9df5ad1SAndroid Build Coastguard Worker
399*b9df5ad1SAndroid Build Coastguard Worker  <!-- end of section -->
400*b9df5ad1SAndroid Build Coastguard Worker  % endfor
401*b9df5ad1SAndroid Build Coastguard Worker<!-- </namespace> -->
402*b9df5ad1SAndroid Build Coastguard Worker% endfor
403*b9df5ad1SAndroid Build Coastguard Worker  </table>
404*b9df5ad1SAndroid Build Coastguard Worker
405*b9df5ad1SAndroid Build Coastguard Worker  <div class="tags" id="tag_index">
406*b9df5ad1SAndroid Build Coastguard Worker    <h2>Tags</h2>
407*b9df5ad1SAndroid Build Coastguard Worker    <ul>
408*b9df5ad1SAndroid Build Coastguard Worker    % for tag in metadata.tags:
409*b9df5ad1SAndroid Build Coastguard Worker      <li id="tag_${tag.id}">${tag.id} - ${tag.description}
410*b9df5ad1SAndroid Build Coastguard Worker        <ul class="tags_entries">
411*b9df5ad1SAndroid Build Coastguard Worker        % for prop in tag.entries:
412*b9df5ad1SAndroid Build Coastguard Worker          <li>${html_anchor(prop)} (${prop.kind})</li>
413*b9df5ad1SAndroid Build Coastguard Worker        % endfor
414*b9df5ad1SAndroid Build Coastguard Worker        </ul>
415*b9df5ad1SAndroid Build Coastguard Worker      </li> <!-- tag_${tag.id} -->
416*b9df5ad1SAndroid Build Coastguard Worker    % endfor
417*b9df5ad1SAndroid Build Coastguard Worker    </ul>
418*b9df5ad1SAndroid Build Coastguard Worker  </div>
419*b9df5ad1SAndroid Build Coastguard Worker
420*b9df5ad1SAndroid Build Coastguard Worker  [ <a href="#">top</a> ]
421*b9df5ad1SAndroid Build Coastguard Worker
422*b9df5ad1SAndroid Build Coastguard Worker</body>
423*b9df5ad1SAndroid Build Coastguard Worker</html>
424