Home | History | Annotate | Download | only in protos
      1 /*
      2  * Copyright (C) 2015 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 syntax = "proto2";
     18 
     19 package android.uirenderer.proto;
     20 
     21 option optimize_for = LITE_RUNTIME;
     22 
     23 message RenderNode {
     24     required uint64 id = 1;
     25     required string name = 2;
     26     required RenderProperties properties = 3;
     27     optional DisplayList display_list = 4;
     28     repeated RenderNode children = 5;
     29 };
     30 
     31 message RenderProperties {
     32     required int32 left = 1;
     33     required int32 right = 2;
     34     required int32 top = 3;
     35     required int32 bottom = 4;
     36     required int32 clip_flags = 5;
     37     required float alpha = 6;
     38     required float translation_x = 7;
     39     required float translation_y = 8;
     40     required float translation_z = 9;
     41     required float elevation = 10;
     42     required float rotation = 11;
     43     required float rotation_x = 12;
     44     required float rotation_y = 13;
     45     required float scale_x = 14;
     46     required float scale_y = 15;
     47     required float pivot_x = 16;
     48     required float pivot_y = 17;
     49     required bool has_overlapping_rendering = 18;
     50     required bool pivot_explicitly_set = 19;
     51     required bool project_backwards = 20;
     52     required bool projection_receiver = 21;
     53     required RectF clip_bounds = 22;
     54     optional Outline outline = 23;
     55     optional RevealClip reveal_clip = 24;
     56 };
     57 
     58 message RectF {
     59     required float left = 1;
     60     required float right = 2;
     61     required float top = 3;
     62     required float bottom = 4;
     63 }
     64 
     65 message Outline {
     66     required bool should_clip = 1;
     67     enum Type {
     68         None = 0;
     69         Empty = 1;
     70         ConvexPath = 2;
     71         RoundRect = 3;
     72     }
     73     required Type type = 2;
     74     required RectF bounds = 3;
     75     required float radius = 4;
     76     required float alpha = 5;
     77     optional bytes path = 6;
     78 }
     79 
     80 message RevealClip {
     81     required float x = 1;
     82     required float y = 2;
     83     required float radius = 3;
     84 }
     85 
     86 message DisplayList {
     87     optional int32 projection_receive_index = 1;
     88     repeated DrawOp draw_ops = 2;
     89 }
     90 
     91 message DrawOp {
     92     oneof drawop {
     93         DrawOp_RenderNode render_node = 1;
     94     }
     95 }
     96 
     97 message DrawOp_RenderNode {
     98     optional RenderNode node = 1;
     99 }
    100