1*b9df5ad1SAndroid Build Coastguard Worker## -*- coding: utf-8 -*- 2*b9df5ad1SAndroid Build Coastguard Worker## 3*b9df5ad1SAndroid Build Coastguard Worker## Copyright (C) 2013 The Android Open Source Project 4*b9df5ad1SAndroid Build Coastguard Worker## 5*b9df5ad1SAndroid Build Coastguard Worker## Licensed under the Apache License, Version 2.0 (the "License"); 6*b9df5ad1SAndroid Build Coastguard Worker## you may not use this file except in compliance with the License. 7*b9df5ad1SAndroid Build Coastguard Worker## You may obtain a copy of the License at 8*b9df5ad1SAndroid Build Coastguard Worker## 9*b9df5ad1SAndroid Build Coastguard Worker## http://www.apache.org/licenses/LICENSE-2.0 10*b9df5ad1SAndroid Build Coastguard Worker## 11*b9df5ad1SAndroid Build Coastguard Worker## Unless required by applicable law or agreed to in writing, software 12*b9df5ad1SAndroid Build Coastguard Worker## distributed under the License is distributed on an "AS IS" BASIS, 13*b9df5ad1SAndroid Build Coastguard Worker## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*b9df5ad1SAndroid Build Coastguard Worker## See the License for the specific language governing permissions and 15*b9df5ad1SAndroid Build Coastguard Worker## limitations under the License. 16*b9df5ad1SAndroid Build Coastguard Worker## 17*b9df5ad1SAndroid Build Coastguard Worker\ 18*b9df5ad1SAndroid Build Coastguard Worker## These sections of metadata Key definitions are inserted into the middle of 19*b9df5ad1SAndroid Build Coastguard Worker## android.hardware.camera2.CameraCharacteristics, CaptureRequest, and CaptureResult. 20*b9df5ad1SAndroid Build Coastguard Worker<%page args="java_class, xml_kind" />\ 21*b9df5ad1SAndroid Build Coastguard Worker /*@O~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ 22*b9df5ad1SAndroid Build Coastguard Worker * The key entries below this point are generated from metadata 23*b9df5ad1SAndroid Build Coastguard Worker * definitions in /system/media/camera/docs. Do not modify by hand or 24*b9df5ad1SAndroid Build Coastguard Worker * modify the comment blocks at the start or end. 25*b9df5ad1SAndroid Build Coastguard Worker *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~*/ 26*b9df5ad1SAndroid Build Coastguard Worker 27*b9df5ad1SAndroid Build Coastguard Worker## 28*b9df5ad1SAndroid Build Coastguard Worker## Generate a single key and docs 29*b9df5ad1SAndroid Build Coastguard Worker<%def name="generate_key(entry)">\ 30*b9df5ad1SAndroid Build Coastguard Worker /** 31*b9df5ad1SAndroid Build Coastguard Worker<% 32*b9df5ad1SAndroid Build Coastguard Worker # Dedent fixes markdown not to generate code blocks. Then do the rest. 33*b9df5ad1SAndroid Build Coastguard Worker description = "" 34*b9df5ad1SAndroid Build Coastguard Worker if entry.description: 35*b9df5ad1SAndroid Build Coastguard Worker description = dedent(entry.description) + "\n\n" 36*b9df5ad1SAndroid Build Coastguard Worker details = "" 37*b9df5ad1SAndroid Build Coastguard Worker if entry.details: 38*b9df5ad1SAndroid Build Coastguard Worker details = dedent(entry.details) 39*b9df5ad1SAndroid Build Coastguard Worker # Unconditionally add extra information if necessary 40*b9df5ad1SAndroid Build Coastguard Worker extra_detail = generate_extra_javadoc_detail(entry)("") 41*b9df5ad1SAndroid Build Coastguard Worker 42*b9df5ad1SAndroid Build Coastguard Worker concatenated_info = description + details + extra_detail 43*b9df5ad1SAndroid Build Coastguard Worker%>\ 44*b9df5ad1SAndroid Build Coastguard Worker## Glue description and details together before javadoc-izing. Otherwise @see in middle of javadoc. 45*b9df5ad1SAndroid Build Coastguard Worker## Avoid @see across differently-flagged API entries for now. 46*b9df5ad1SAndroid Build Coastguard Worker${concatenated_info | javadoc(metadata)}\ 47*b9df5ad1SAndroid Build Coastguard Worker % if entry.enum and not (entry.typedef and entry.typedef.languages.get('java')): 48*b9df5ad1SAndroid Build Coastguard Worker % for value in entry.enum.values: 49*b9df5ad1SAndroid Build Coastguard Worker % if not value.hidden and (value.aconfig_flag == entry.aconfig_flag): 50*b9df5ad1SAndroid Build Coastguard Worker * @see #${jenum_value(entry, value)} 51*b9df5ad1SAndroid Build Coastguard Worker % endif 52*b9df5ad1SAndroid Build Coastguard Worker % endfor 53*b9df5ad1SAndroid Build Coastguard Worker % endif 54*b9df5ad1SAndroid Build Coastguard Worker % if entry.deprecated: 55*b9df5ad1SAndroid Build Coastguard Worker * @deprecated 56*b9df5ad1SAndroid Build Coastguard Worker${entry.deprecation_description | javadoc(metadata)} 57*b9df5ad1SAndroid Build Coastguard Worker % endif 58*b9df5ad1SAndroid Build Coastguard Worker % if entry.applied_visibility in ('hidden', 'ndk_public', 'fwk_only', 'extension', 'fwk_system_public'): 59*b9df5ad1SAndroid Build Coastguard Worker * @hide 60*b9df5ad1SAndroid Build Coastguard Worker % endif 61*b9df5ad1SAndroid Build Coastguard Worker */ 62*b9df5ad1SAndroid Build Coastguard Worker % if entry.deprecated: 63*b9df5ad1SAndroid Build Coastguard Worker @Deprecated 64*b9df5ad1SAndroid Build Coastguard Worker % endif 65*b9df5ad1SAndroid Build Coastguard Worker % if entry.applied_visibility in ('public', 'java_public', 'fwk_java_public', 'fwk_public'): 66*b9df5ad1SAndroid Build Coastguard Worker @PublicKey 67*b9df5ad1SAndroid Build Coastguard Worker @NonNull 68*b9df5ad1SAndroid Build Coastguard Worker % endif 69*b9df5ad1SAndroid Build Coastguard Worker % if entry.applied_visibility == 'fwk_system_public': 70*b9df5ad1SAndroid Build Coastguard Worker @SystemApi 71*b9df5ad1SAndroid Build Coastguard Worker @NonNull 72*b9df5ad1SAndroid Build Coastguard Worker % endif 73*b9df5ad1SAndroid Build Coastguard Worker % if entry.synthetic: 74*b9df5ad1SAndroid Build Coastguard Worker @SyntheticKey 75*b9df5ad1SAndroid Build Coastguard Worker % endif 76*b9df5ad1SAndroid Build Coastguard Worker % if entry.applied_visibility in ('extension'): 77*b9df5ad1SAndroid Build Coastguard Worker @ExtensionKey 78*b9df5ad1SAndroid Build Coastguard Worker % endif 79*b9df5ad1SAndroid Build Coastguard Worker % if entry.aconfig_flag: 80*b9df5ad1SAndroid Build Coastguard Worker @FlaggedApi(Flags.FLAG_${entry.aconfig_flag | jkey_identifier}) 81*b9df5ad1SAndroid Build Coastguard Worker % endif 82*b9df5ad1SAndroid Build Coastguard Worker public static final Key<${jtype_boxed(entry)}> ${entry.name | jkey_identifier} = 83*b9df5ad1SAndroid Build Coastguard Worker new Key<${jtype_boxed(entry)}>("${entry.name}", ${jkey_type_token(entry)}); 84*b9df5ad1SAndroid Build Coastguard Worker</%def>\ 85*b9df5ad1SAndroid Build Coastguard Worker## 86*b9df5ad1SAndroid Build Coastguard Worker## Generate a list of only Static, Controls, or Dynamic properties. 87*b9df5ad1SAndroid Build Coastguard Worker<%def name="single_kind_keys(java_name, xml_name)">\ 88*b9df5ad1SAndroid Build Coastguard Worker% for outer_namespace in metadata.outer_namespaces: ## assumes single 'android' namespace 89*b9df5ad1SAndroid Build Coastguard Worker % for section in outer_namespace.sections: 90*b9df5ad1SAndroid Build Coastguard Worker % if section.find_first(lambda x: isinstance(x, metadata_model.Entry) and x.kind == xml_name) and \ 91*b9df5ad1SAndroid Build Coastguard Worker any_visible(section, xml_name, ('public','hidden','ndk_public','java_public','fwk_only',\ 92*b9df5ad1SAndroid Build Coastguard Worker 'fwk_java_public','fwk_public','extension','fwk_system_public') ): 93*b9df5ad1SAndroid Build Coastguard Worker % for inner_namespace in get_children_by_filtering_kind(section, xml_name, 'namespaces'): 94*b9df5ad1SAndroid Build Coastguard Worker## 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 95*b9df5ad1SAndroid Build Coastguard Worker## If we need to support more, we should use a recursive function here instead.. but the indentation gets trickier. 96*b9df5ad1SAndroid Build Coastguard Worker % for entry in filter_visibility(inner_namespace.merged_entries, ('hidden','public',\ 97*b9df5ad1SAndroid Build Coastguard Worker 'ndk_public','java_public','fwk_only','fwk_java_public','fwk_public',\ 98*b9df5ad1SAndroid Build Coastguard Worker 'extension','fwk_system_public')): 99*b9df5ad1SAndroid Build Coastguard Worker${generate_key(entry)} 100*b9df5ad1SAndroid Build Coastguard Worker % endfor 101*b9df5ad1SAndroid Build Coastguard Worker % endfor 102*b9df5ad1SAndroid Build Coastguard Worker % for entry in filter_visibility( \ 103*b9df5ad1SAndroid Build Coastguard Worker get_children_by_filtering_kind(section, xml_name, 'merged_entries'), \ 104*b9df5ad1SAndroid Build Coastguard Worker ('hidden', 'public', 'ndk_public', 'java_public', 'fwk_only', 'fwk_java_public',\ 105*b9df5ad1SAndroid Build Coastguard Worker 'fwk_public','extension','fwk_system_public')): 106*b9df5ad1SAndroid Build Coastguard Worker${generate_key(entry)} 107*b9df5ad1SAndroid Build Coastguard Worker % endfor 108*b9df5ad1SAndroid Build Coastguard Worker % endif 109*b9df5ad1SAndroid Build Coastguard Worker % endfor 110*b9df5ad1SAndroid Build Coastguard Worker% endfor 111*b9df5ad1SAndroid Build Coastguard Worker</%def>\ 112*b9df5ad1SAndroid Build Coastguard Worker## 113*b9df5ad1SAndroid Build Coastguard Worker## Static properties only 114*b9df5ad1SAndroid Build Coastguard Worker##${single_kind_keys('CameraCharacteristicsKeys', 'static')} 115*b9df5ad1SAndroid Build Coastguard Worker## 116*b9df5ad1SAndroid Build Coastguard Worker## Controls properties only 117*b9df5ad1SAndroid Build Coastguard Worker##${single_kind_keys('CaptureRequestKeys', 'controls')} 118*b9df5ad1SAndroid Build Coastguard Worker## 119*b9df5ad1SAndroid Build Coastguard Worker## Dynamic properties only 120*b9df5ad1SAndroid Build Coastguard Worker##${single_kind_keys('CaptureResultKeys', 'dynamic')} 121*b9df5ad1SAndroid Build Coastguard Worker${single_kind_keys(java_class, xml_kind)}\ 122