Home | History | Annotate | Download | only in docs
      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 ## This section of enum integer definitions is inserted into
     19 ## android.hardware.camera2.CameraMetadata.
     20     /*@O~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~
     21      * The enum values below this point are generated from metadata
     22      * definitions in /system/media/camera/docs. Do not modify by hand or
     23      * modify the comment blocks at the start or end.
     24      *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~*/
     25 ##
     26 ## Generate an enum's integers
     27 <%def name="generate_enum(entry, target_class)">\
     28     //
     29     // Enumeration values for ${target_class}#${entry.name | jkey_identifier}
     30     //
     31 
     32   % for value in entry.enum.values:
     33     /**
     34     % if value.notes:
     35 ${value.notes | javadoc(metadata)}\
     36     % endif
     37      * @see ${target_class}#${entry.name | jkey_identifier}
     38     % if entry.applied_visibility in ('hidden', 'ndk_public') or value.hidden:
     39      * @hide
     40     %endif
     41     % if value.deprecated:
     42      * @deprecated Please refer to this API documentation to find the alternatives
     43     % endif
     44      */
     45     public static final int ${jenum_value(entry, value)} = ${enum_calculate_value_string(value)};
     46 
     47   % endfor
     48 </%def>\
     49 ##
     50 ## Generate a list of only Static, Controls, or Dynamic properties.
     51 <%def name="single_kind_keys(xml_name, target_class)">\
     52 % for outer_namespace in metadata.outer_namespaces: ## assumes single 'android' namespace
     53   % for section in outer_namespace.sections:
     54     % if section.find_first(lambda x: isinstance(x, metadata_model.Entry) and x.kind == xml_name) and \
     55          any_visible(section, xml_name, ('public','hidden', 'ndk_public', 'java_public') ):
     56       % for inner_namespace in get_children_by_filtering_kind(section, xml_name, 'namespaces'):
     57 ## 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
     58 ## If we need to support more, we should use a recursive function here instead.. but the indentation gets trickier.
     59         % for entry in filter_visibility(inner_namespace.entries, ('hidden','public', 'ndk_public', 'java_public')):
     60           % if entry.enum \
     61               and not (entry.typedef and entry.typedef.languages.get('java')) \
     62               and not entry.is_clone():
     63 ${generate_enum(entry, target_class)}\
     64           % endif
     65         % endfor
     66       % endfor
     67       % for entry in filter_visibility( \
     68           get_children_by_filtering_kind(section, xml_name, 'entries'), \
     69                                          ('hidden', 'public', 'ndk_public', 'java_public')):
     70         % if entry.enum \
     71              and not (entry.typedef and entry.typedef.languages.get('java')) \
     72              and not entry.is_clone():
     73 ${generate_enum(entry, target_class)}\
     74         % endif
     75       % endfor
     76     % endif
     77   % endfor
     78 % endfor
     79 </%def>\
     80 
     81 ##
     82 ## Static properties only
     83 ${single_kind_keys('static','CameraCharacteristics')}\
     84 ##
     85 ## Controls properties only
     86 ${single_kind_keys('controls','CaptureRequest')}\
     87 ##
     88 ## Dynamic properties only
     89 ${single_kind_keys('dynamic','CaptureResult')}\
     90     /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~
     91      * End generated code
     92      *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/
     93