CameraMetadataKeys.mako revision ef40ad6249555a0a45c57907f4b9509b59e3e9f5
1## -*- coding: utf-8 -*- 2## 3## Copyright (C) 2013 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\ 18## These sections of metadata Key definitions are inserted into the middle of 19## android.hardware.camera2.CameraCharacteristics, CaptureRequest, and CaptureResult. 20<%page args="java_class, xml_kind" />\ 21 /*@O~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ 22 * The key entries below this point are generated from metadata 23 * definitions in /system/media/camera/docs. Do not modify by hand or 24 * modify the comment blocks at the start or end. 25 *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~*/ 26 27## 28## Generate a single key and docs 29<%def name="generate_key(entry)">\ 30 /** 31 % if entry.description: 32${entry.description | javadoc}\ 33 % endif 34 % if entry.notes: 35${entry.notes | javadoc}\ 36 % endif 37 % if entry.enum and not (entry.typedef and entry.typedef.languages.get('java')): 38 % for value in entry.enum.values: 39 * @see #${jenum_value(entry, value)} 40 % endfor 41 % endif 42 % if entry.optional: 43 * 44 * <b>Optional</b> - This value may be null on some devices. 45 % endif 46 % if any(tag.name == 'FULL' for tag in entry.tags): 47 * 48 * <b>{@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL}</b> - 49 * Present on all devices that report being FULL level hardware devices in the 50 * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL HARDWARE_LEVEL} key. 51 % endif 52 % if entry.applied_visibility == 'hidden': 53 * 54 * @hide 55 % endif 56 */ 57 public static final Key<${jtype_boxed(entry)}> ${entry.name | jkey_identifier} = 58 new Key<${jtype_boxed(entry)}>("${entry.name}", ${jclass(entry)}); 59</%def>\ 60## 61## Generate a list of only Static, Controls, or Dynamic properties. 62<%def name="single_kind_keys(java_name, xml_name)">\ 63% for outer_namespace in metadata.outer_namespaces: ## assumes single 'android' namespace 64 % for section in outer_namespace.sections: 65 % if section.find_first(lambda x: isinstance(x, metadata_model.Entry) and x.kind == xml_name) and \ 66 any_visible(section, xml_name, ('public','hidden') ): 67 % for inner_namespace in get_children_by_filtering_kind(section, xml_name, 'namespaces'): 68## We only support 1 level of inner namespace, i.e. android.a.b and android.a.b.c works, but not android.a.b.c.d 69## If we need to support more, we should use a recursive function here instead.. but the indentation gets trickier. 70 % for entry in filter_visibility(inner_namespace.merged_entries, ('hidden','public')): 71${generate_key(entry)} 72 % endfor 73 % endfor 74 % for entry in filter_visibility( \ 75 get_children_by_filtering_kind(section, xml_name, 'merged_entries'), \ 76 ('hidden', 'public')): 77${generate_key(entry)} 78 % endfor 79 % endif 80 % endfor 81% endfor 82</%def>\ 83## 84## Static properties only 85##${single_kind_keys('CameraCharacteristicsKeys', 'static')} 86## 87## Controls properties only 88##${single_kind_keys('CaptureRequestKeys', 'controls')} 89## 90## Dynamic properties only 91##${single_kind_keys('CaptureResultKeys', 'dynamic')} 92${single_kind_keys(java_class, xml_kind)}\ 93 /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ 94 * End generated code 95 *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/ 96