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