Home | History | Annotate | Download | only in docs
      1 ## -*- coding: utf-8 -*-
      2 <?xml version="1.0" encoding="UTF-8"?>
      3 <!-- Copyright (C) 2012 The Android Open Source Project
      4 
      5      Licensed under the Apache License, Version 2.0 (the "License");
      6      you may not use this file except in compliance with the License.
      7      You may obtain a copy of the License at
      8 
      9           http://www.apache.org/licenses/LICENSE-2.0
     10 
     11      Unless required by applicable law or agreed to in writing, software
     12      distributed under the License is distributed on an "AS IS" BASIS,
     13      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14      See the License for the specific language governing permissions and
     15      limitations under the License.
     16 -->
     17 <metadata
     18     xmlns="http://schemas.android.com/service/camera/metadata/"
     19     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     20     xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata_properties.xsd">
     21 
     22 <tags>
     23 % for tag in metadata.tags:
     24   % if tag.description and tag.description.strip():
     25   <tag id="${tag.id}">${tag.description | x}</tag>
     26   % else:
     27   <tag id="${tag.id}"><!-- TODO: fill the tag description --></tag>
     28   % endif
     29 % endfor
     30 </tags>
     31 
     32 <types>
     33 % for typedef in metadata.types:
     34   <typedef name="${typedef.name}">
     35     % for (language, klass) in typedef.languages.iteritems():
     36       <language name="${language}">${klass}</language>
     37     % endfor
     38   </typedef>
     39 % endfor
     40 </types>
     41 
     42 % for root in metadata.outer_namespaces:
     43 <namespace name="${root.name}">
     44   % for section in root.sections:
     45   <section name="${section.name}">
     46 
     47     % if section.description is not None:
     48       <description>${section.description}</description>
     49     % endif
     50 
     51     % for kind in section.kinds: # dynamic,static,controls
     52       <${kind.name}>
     53 
     54         <%def name="insert_body(node)">
     55             % for nested in node.namespaces:
     56                 ${insert_namespace(nested)}
     57             % endfor
     58 
     59             % for entry in node.entries:
     60                 ${insert_entry(entry)}
     61             % endfor
     62         </%def>
     63 
     64         <%def name="insert_namespace(namespace)">
     65         <namespace name="${namespace.name}">
     66             ${insert_body(namespace)}
     67         </namespace>
     68         </%def>
     69 
     70         <%def name="insert_entry(prop)">
     71         % if prop.is_clone():
     72             <clone entry="${prop.name}" kind="${prop.target_kind}">
     73 
     74               % if prop.notes is not None:
     75                 <notes>${prop.notes}</notes>
     76               % endif
     77 
     78               % for tag in prop.tags:
     79                 <tag id="${tag.id}" />
     80               % endfor
     81 
     82             </clone>
     83         % else:
     84             <entry name="${prop.name_short}" type="${prop.type}"
     85           % if prop.visibility:
     86                 visibility="${prop.visibility}"
     87           % endif
     88           % if prop.optional:
     89                 optional="${str(prop.optional).lower()}"
     90           % endif
     91           % if prop.enum:
     92                 enum="true"
     93           % endif
     94           % if prop.type_notes is not None:
     95                 type_notes="${prop.type_notes}"
     96           % endif
     97           % if prop.container is not None:
     98                 container="${prop.container}"
     99           % endif
    100 
    101           % if prop.typedef is not None:
    102                 typedef="${prop.typedef.name}"
    103           % endif
    104             >
    105 
    106               % if prop.container == 'array':
    107                 <array>
    108                   % for size in prop.container_sizes:
    109                     <size>${size}</size>
    110                   % endfor
    111                 </array>
    112               % elif prop.container == 'tuple':
    113                 <tuple>
    114                   % for size in prop.container_sizes:
    115                     <value /> <!-- intentionally generated empty. manually fix -->
    116                   % endfor
    117                 </tuple>
    118               % endif
    119               % if prop.enum:
    120                 <enum>
    121                   % for value in prop.enum.values:
    122                       <value
    123                     % if value.optional:
    124                              optional="true"
    125                     % endif:
    126                     % if value.id is not None:
    127                              id="${value.id}"
    128                     % endif
    129                       >${value.name}
    130                     % if value.notes is not None:
    131                              <notes>${value.notes}</notes>
    132                     % endif
    133                       </value>
    134                   % endfor
    135                 </enum>
    136               % endif
    137 
    138               % if prop.description is not None:
    139                 <description>${prop.description | x}</description>
    140               % endif
    141 
    142               % if prop.units is not None:
    143                 <units>${prop.units | x}</units>
    144               % endif
    145 
    146               % if prop.range is not None:
    147                 <range>${prop.range | x}</range>
    148               % endif
    149 
    150               % if prop.notes is not None:
    151                 <notes>${prop.notes | x}</notes>
    152               % endif
    153 
    154               % for tag in prop.tags:
    155                 <tag id="${tag.id}" />
    156               % endfor
    157 
    158             </entry>
    159         % endif
    160         </%def>
    161 
    162         ${insert_body(kind)}
    163 
    164       </${kind.name}>
    165     % endfor # for each kind
    166 
    167   </section>
    168   % endfor
    169 </namespace>
    170 % endfor
    171 
    172 </metadata>
    173