177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin## -*- coding: utf-8 -*-
277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin<?xml version="1.0" encoding="UTF-8"?>
377b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin<!-- Copyright (C) 2012 The Android Open Source Project
477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
577b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin     Licensed under the Apache License, Version 2.0 (the "License");
677b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin     you may not use this file except in compliance with the License.
777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin     You may obtain a copy of the License at
877b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
977b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin          http://www.apache.org/licenses/LICENSE-2.0
1077b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
1177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin     Unless required by applicable law or agreed to in writing, software
1277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin     distributed under the License is distributed on an "AS IS" BASIS,
1377b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin     See the License for the specific language governing permissions and
1577b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin     limitations under the License.
1677b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin-->
1777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin<metadata
1877b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin    xmlns="http://schemas.android.com/service/camera/metadata/"
1977b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2077b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin    xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata_properties.xsd">
2177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
2277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin<tags>
2377b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin% for tag in metadata.tags:
246ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin  % if tag.description and tag.description.strip():
257b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin  <tag id="${tag.id}">${tag.description | x}</tag>
266ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin  % else:
2777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin  <tag id="${tag.id}"><!-- TODO: fill the tag description --></tag>
286ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin  % endif
2977b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin% endfor
3077b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin</tags>
3177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
32b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin<types>
33b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin% for typedef in metadata.types:
34b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin  <typedef name="${typedef.name}">
35b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin    % for (language, klass) in typedef.languages.iteritems():
36b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin      <language name="${language}">${klass}</language>
37b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin    % endfor
38b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin  </typedef>
39b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin% endfor
40b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin</types>
41b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin
4277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin% for root in metadata.outer_namespaces:
4377b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin<namespace name="${root.name}">
4477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin  % for section in root.sections:
4577b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin  <section name="${section.name}">
4677b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
4777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin    % if section.description is not None:
4877b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin      <description>${section.description}</description>
4977b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin    % endif
5077b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
5177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin    % for kind in section.kinds: # dynamic,static,controls
5277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin      <${kind.name}>
5377b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
5477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin        <%def name="insert_body(node)">
5577b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin            % for nested in node.namespaces:
5677b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                ${insert_namespace(nested)}
5777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin            % endfor
5877b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
5977b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin            % for entry in node.entries:
6077b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                ${insert_entry(entry)}
6177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin            % endfor
6277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin        </%def>
6377b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
6477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin        <%def name="insert_namespace(namespace)">
6577b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin        <namespace name="${namespace.name}">
6677b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin            ${insert_body(namespace)}
6777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin        </namespace>
6877b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin        </%def>
6977b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
7077b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin        <%def name="insert_entry(prop)">
7177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin        % if prop.is_clone():
7277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin            <clone entry="${prop.name}" kind="${prop.target_kind}">
7377b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
7477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % if prop.notes is not None:
7577b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                <notes>${prop.notes}</notes>
7677b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % endif
7777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
7877b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % for tag in prop.tags:
7977b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                <tag id="${tag.id}" />
8077b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % endfor
8177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
8277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin            </clone>
8377b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin        % else:
8477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin            <entry name="${prop.name_short}" type="${prop.type}"
85f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala          % if prop.visibility:
86f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala                visibility="${prop.visibility}"
87f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala          % endif
88ef40ad6249555a0a45c57907f4b9509b59e3e9f5Alex Ray          % if prop.optional:
89ef40ad6249555a0a45c57907f4b9509b59e3e9f5Alex Ray                optional="${str(prop.optional).lower()}"
90ef40ad6249555a0a45c57907f4b9509b59e3e9f5Alex Ray          % endif
91b556bc47068d816cb319a5d0e2f6841b007b38f2Igor Murashkin          % if prop.enum:
92b556bc47068d816cb319a5d0e2f6841b007b38f2Igor Murashkin                enum="true"
93b556bc47068d816cb319a5d0e2f6841b007b38f2Igor Murashkin          % endif
9477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin          % if prop.type_notes is not None:
9577b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                type_notes="${prop.type_notes}"
9677b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin          % endif
9777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin          % if prop.container is not None:
9877b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                container="${prop.container}"
9977b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin          % endif
100b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin
101b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin          % if prop.typedef is not None:
102b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin                typedef="${prop.typedef.name}"
103b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin          % endif
10477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin            >
10577b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
10677b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % if prop.container == 'array':
10777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                <array>
10877b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                  % for size in prop.container_sizes:
10977b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                    <size>${size}</size>
11077b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                  % endfor
11177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                </array>
11277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % elif prop.container == 'tuple':
11377b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                <tuple>
11477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                  % for size in prop.container_sizes:
11577b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                    <value /> <!-- intentionally generated empty. manually fix -->
11677b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                  % endfor
11777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                </tuple>
11896bd019289c47433e1b3522500bb166a4662e0f5Igor Murashkin              % endif
119b556bc47068d816cb319a5d0e2f6841b007b38f2Igor Murashkin              % if prop.enum:
12077b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                <enum>
12177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                  % for value in prop.enum.values:
12277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                      <value
12377b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                    % if value.optional:
12477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                             optional="true"
12577b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                    % endif:
12677b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                    % if value.id is not None:
12777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                             id="${value.id}"
12877b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                    % endif
12977b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                      >${value.name}
13077b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                    % if value.notes is not None:
13177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                             <notes>${value.notes}</notes>
13277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                    % endif
13377b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                      </value>
13477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                  % endfor
13577b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                </enum>
13677b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % endif
13777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
13877b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % if prop.description is not None:
13977b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                <description>${prop.description | x}</description>
14077b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % endif
14177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
14277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % if prop.units is not None:
14377b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                <units>${prop.units | x}</units>
14477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % endif
14577b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
14677b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % if prop.range is not None:
14777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                <range>${prop.range | x}</range>
14877b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % endif
14977b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
15077b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % if prop.notes is not None:
15177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                <notes>${prop.notes | x}</notes>
15277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % endif
15377b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
15477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % for tag in prop.tags:
15577b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin                <tag id="${tag.id}" />
15677b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin              % endfor
15777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
15877b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin            </entry>
15977b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin        % endif
16077b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin        </%def>
16177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
16277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin        ${insert_body(kind)}
16377b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
16477b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin      </${kind.name}>
16577b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin    % endfor # for each kind
16677b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
16777b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin  </section>
16877b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin  % endfor
16977b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin</namespace>
17077b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin% endfor
17177b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin
17277b63ca0447545a4dac3ac062f218d878ce01ba0Igor Murashkin</metadata>
173