1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2018 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_cisyntax = "proto3"; 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_cipackage pvg; 11cb93a386Sopenharmony_ci 12cb93a386Sopenharmony_cienum ClipVerb { 13cb93a386Sopenharmony_ci INTERSECT = 0; 14cb93a386Sopenharmony_ci DIFFERENCE = 1; 15cb93a386Sopenharmony_ci} 16cb93a386Sopenharmony_ci 17cb93a386Sopenharmony_cimessage Point { 18cb93a386Sopenharmony_ci float x = 1; 19cb93a386Sopenharmony_ci float y = 2; 20cb93a386Sopenharmony_ci} 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_cimessage Rect { 23cb93a386Sopenharmony_ci float left = 1; 24cb93a386Sopenharmony_ci float top = 2; 25cb93a386Sopenharmony_ci float right = 3; 26cb93a386Sopenharmony_ci float bottom = 4; 27cb93a386Sopenharmony_ci} 28cb93a386Sopenharmony_ci 29cb93a386Sopenharmony_cimessage Color { 30cb93a386Sopenharmony_ci float r = 1; 31cb93a386Sopenharmony_ci float g = 2; 32cb93a386Sopenharmony_ci float b = 3; 33cb93a386Sopenharmony_ci float a = 4; // default to 1.0 34cb93a386Sopenharmony_ci} 35cb93a386Sopenharmony_ci 36cb93a386Sopenharmony_cimessage Matrix33 { 37cb93a386Sopenharmony_ci // m11, m22, m33 default to 1.0 38cb93a386Sopenharmony_ci 39cb93a386Sopenharmony_ci float m11 = 1; float m12 = 2; float m13 = 3; 40cb93a386Sopenharmony_ci float m21 = 4; float m22 = 5; float m23 = 6; 41cb93a386Sopenharmony_ci float m31 = 7; float m32 = 8; float m33 = 9; 42cb93a386Sopenharmony_ci} 43cb93a386Sopenharmony_ci 44cb93a386Sopenharmony_cimessage ClipArgs { 45cb93a386Sopenharmony_ci ClipVerb verb = 1; 46cb93a386Sopenharmony_ci bool is_aliased = 2; 47cb93a386Sopenharmony_ci} 48cb93a386Sopenharmony_ci 49cb93a386Sopenharmony_ci//////////////////////////////////////////////// 50cb93a386Sopenharmony_ci 51cb93a386Sopenharmony_cienum BlendMode { 52cb93a386Sopenharmony_ci SRC_OVER = 0; 53cb93a386Sopenharmony_ci CLEAR = 1; 54cb93a386Sopenharmony_ci SRC = 2; 55cb93a386Sopenharmony_ci // ... 56cb93a386Sopenharmony_ci} 57cb93a386Sopenharmony_ci 58cb93a386Sopenharmony_cienum PaintStyle { 59cb93a386Sopenharmony_ci FILL = 0; 60cb93a386Sopenharmony_ci STROKE = 1; 61cb93a386Sopenharmony_ci HAIRLINE = 2; 62cb93a386Sopenharmony_ci} 63cb93a386Sopenharmony_ci 64cb93a386Sopenharmony_cienum FilterQuality { 65cb93a386Sopenharmony_ci NONE = 0; 66cb93a386Sopenharmony_ci LOW = 1; 67cb93a386Sopenharmony_ci MEDIUM = 2; 68cb93a386Sopenharmony_ci HIGH = 3; 69cb93a386Sopenharmony_ci} 70cb93a386Sopenharmony_ci 71cb93a386Sopenharmony_cimessage Paint { 72cb93a386Sopenharmony_ci PaintStyle style = 1; 73cb93a386Sopenharmony_ci FilterQuality filter_quality = 2; 74cb93a386Sopenharmony_ci BlendMode blend_mode = 3; 75cb93a386Sopenharmony_ci bool is_aliased = 4; 76cb93a386Sopenharmony_ci 77cb93a386Sopenharmony_ci Color color = 5; 78cb93a386Sopenharmony_ci 79cb93a386Sopenharmony_ci int32 shader = 6; 80cb93a386Sopenharmony_ci int32 color_filter = 7; 81cb93a386Sopenharmony_ci int32 mask_filter = 8; 82cb93a386Sopenharmony_ci int32 path_filter = 9; 83cb93a386Sopenharmony_ci int32 image_filter = 10; 84cb93a386Sopenharmony_ci} 85cb93a386Sopenharmony_ci 86cb93a386Sopenharmony_ci//////////////////////////////////////////////// 87cb93a386Sopenharmony_ci 88cb93a386Sopenharmony_cienum Hinting { 89cb93a386Sopenharmony_ci NONE_Hinting = 0; 90cb93a386Sopenharmony_ci SLIGHT_Hinting = 1; 91cb93a386Sopenharmony_ci NORMAL_Hinting = 2; 92cb93a386Sopenharmony_ci FULL_Hinting = 3; 93cb93a386Sopenharmony_ci} 94cb93a386Sopenharmony_ci 95cb93a386Sopenharmony_cimessage Font { 96cb93a386Sopenharmony_ci int32 typeface = 1; 97cb93a386Sopenharmony_ci float size = 2; 98cb93a386Sopenharmony_ci float scale_x = 3; // default = 1.0 99cb93a386Sopenharmony_ci float skew_x = 4; 100cb93a386Sopenharmony_ci 101cb93a386Sopenharmony_ci Hinting Hinting = 5; 102cb93a386Sopenharmony_ci 103cb93a386Sopenharmony_ci bool force_autohinting = 6; 104cb93a386Sopenharmony_ci bool embedded_bitmaps = 7; 105cb93a386Sopenharmony_ci bool subpixel = 8; 106cb93a386Sopenharmony_ci bool linear_metrics = 9; 107cb93a386Sopenharmony_ci bool embolden = 10; 108cb93a386Sopenharmony_ci} 109cb93a386Sopenharmony_ci 110cb93a386Sopenharmony_ci//////////////////////////////////////////////// 111cb93a386Sopenharmony_ci 112cb93a386Sopenharmony_cienum PathVerb { 113cb93a386Sopenharmony_ci MOVE = 0; 114cb93a386Sopenharmony_ci LINE = 1; 115cb93a386Sopenharmony_ci QUAD = 2; 116cb93a386Sopenharmony_ci CUBIC = 3; 117cb93a386Sopenharmony_ci CONIC = 4; 118cb93a386Sopenharmony_ci} 119cb93a386Sopenharmony_ci 120cb93a386Sopenharmony_cimessage PathData { 121cb93a386Sopenharmony_ci repeated PathVerb verbs = 1; 122cb93a386Sopenharmony_ci repeated float points = 2; // count must be even, and correspond to verbs 123cb93a386Sopenharmony_ci repeated float conic_weights = 3; // count must be == # conic verbs 124cb93a386Sopenharmony_ci} 125cb93a386Sopenharmony_ci 126cb93a386Sopenharmony_cimessage DefinePath { 127cb93a386Sopenharmony_ci uint32 id = 1; 128cb93a386Sopenharmony_ci PathData data = 2; 129cb93a386Sopenharmony_ci} 130cb93a386Sopenharmony_ci 131cb93a386Sopenharmony_ci//////////////////////////////////////////////// 132cb93a386Sopenharmony_ci 133cb93a386Sopenharmony_cimessage DefineImage { 134cb93a386Sopenharmony_ci uint32 id = 1; 135cb93a386Sopenharmony_ci bytes encoded_data = 2; 136cb93a386Sopenharmony_ci} 137cb93a386Sopenharmony_ci 138cb93a386Sopenharmony_ci//////////////////////////////////////////////// 139cb93a386Sopenharmony_ci 140cb93a386Sopenharmony_cienum TileMode { 141cb93a386Sopenharmony_ci CLAMP_TileMode = 0; 142cb93a386Sopenharmony_ci REPEAT_TileMode = 1; 143cb93a386Sopenharmony_ci MIRROR_TileMode = 2; 144cb93a386Sopenharmony_ci DECAL_TileMode = 3; 145cb93a386Sopenharmony_ci} 146cb93a386Sopenharmony_ci 147cb93a386Sopenharmony_cimessage GradientCommon { 148cb93a386Sopenharmony_ci repeated Color colors = 1; 149cb93a386Sopenharmony_ci repeated float positions = 2; // empty or count == colors.count 150cb93a386Sopenharmony_ci Matrix33 local_matrix = 3; 151cb93a386Sopenharmony_ci TileMode tile_mode = 4; 152cb93a386Sopenharmony_ci} 153cb93a386Sopenharmony_ci 154cb93a386Sopenharmony_cimessage LinearGradient { 155cb93a386Sopenharmony_ci Point p0 = 1; 156cb93a386Sopenharmony_ci Point p1 = 2; 157cb93a386Sopenharmony_ci GradientCommon common = 3; 158cb93a386Sopenharmony_ci} 159cb93a386Sopenharmony_ci 160cb93a386Sopenharmony_cimessage RadialGradient { 161cb93a386Sopenharmony_ci Point center = 1; 162cb93a386Sopenharmony_ci float radius = 2; 163cb93a386Sopenharmony_ci GradientCommon common = 3; 164cb93a386Sopenharmony_ci} 165cb93a386Sopenharmony_ci 166cb93a386Sopenharmony_cimessage ImageShader { 167cb93a386Sopenharmony_ci uint32 image_id = 1; 168cb93a386Sopenharmony_ci TileMode tile_mode_x = 2; 169cb93a386Sopenharmony_ci TileMode tile_mode_y = 3; 170cb93a386Sopenharmony_ci Matrix33 local_matrix = 4; 171cb93a386Sopenharmony_ci} 172cb93a386Sopenharmony_ci 173cb93a386Sopenharmony_cimessage DefineShader { 174cb93a386Sopenharmony_ci uint32 id = 1; 175cb93a386Sopenharmony_ci oneof type { 176cb93a386Sopenharmony_ci Color color = 2; 177cb93a386Sopenharmony_ci LinearGradient linear_gradient = 3; 178cb93a386Sopenharmony_ci RadialGradient radial_gradient = 4; 179cb93a386Sopenharmony_ci ImageShader image = 5; 180cb93a386Sopenharmony_ci } 181cb93a386Sopenharmony_ci} 182cb93a386Sopenharmony_ci 183cb93a386Sopenharmony_ci//////////////////////////////////////////////// 184cb93a386Sopenharmony_ci 185cb93a386Sopenharmony_cimessage Save {} 186cb93a386Sopenharmony_ci 187cb93a386Sopenharmony_cimessage SaveLayer { 188cb93a386Sopenharmony_ci Rect bounds = 1; 189cb93a386Sopenharmony_ci Paint paint = 2; 190cb93a386Sopenharmony_ci // ... 191cb93a386Sopenharmony_ci} 192cb93a386Sopenharmony_ci 193cb93a386Sopenharmony_cimessage Restore {} 194cb93a386Sopenharmony_ci 195cb93a386Sopenharmony_cimessage Concat { 196cb93a386Sopenharmony_ci Matrix33 matrix = 1; 197cb93a386Sopenharmony_ci} 198cb93a386Sopenharmony_ci 199cb93a386Sopenharmony_cimessage ClipRect { 200cb93a386Sopenharmony_ci Rect rect = 1; 201cb93a386Sopenharmony_ci ClipArgs args = 2; 202cb93a386Sopenharmony_ci} 203cb93a386Sopenharmony_ci 204cb93a386Sopenharmony_cimessage ClipPath { 205cb93a386Sopenharmony_ci oneof path { 206cb93a386Sopenharmony_ci uint32 id = 1; 207cb93a386Sopenharmony_ci PathData data = 2; 208cb93a386Sopenharmony_ci } 209cb93a386Sopenharmony_ci ClipArgs args = 3; 210cb93a386Sopenharmony_ci} 211cb93a386Sopenharmony_ci 212cb93a386Sopenharmony_cimessage DrawPaint { 213cb93a386Sopenharmony_ci Paint paint = 1; 214cb93a386Sopenharmony_ci} 215cb93a386Sopenharmony_ci 216cb93a386Sopenharmony_cimessage DrawRect { 217cb93a386Sopenharmony_ci Rect rect = 1; 218cb93a386Sopenharmony_ci Paint paint = 2; 219cb93a386Sopenharmony_ci} 220cb93a386Sopenharmony_ci 221cb93a386Sopenharmony_cimessage DrawOval { 222cb93a386Sopenharmony_ci Rect oval = 1; 223cb93a386Sopenharmony_ci Paint paint = 2; 224cb93a386Sopenharmony_ci} 225cb93a386Sopenharmony_ci 226cb93a386Sopenharmony_cimessage DrawPath { 227cb93a386Sopenharmony_ci oneof path { 228cb93a386Sopenharmony_ci uint32 id = 1; 229cb93a386Sopenharmony_ci PathData data = 2; 230cb93a386Sopenharmony_ci } 231cb93a386Sopenharmony_ci Paint paint = 3; 232cb93a386Sopenharmony_ci} 233cb93a386Sopenharmony_ci 234cb93a386Sopenharmony_cimessage DrawImage { 235cb93a386Sopenharmony_ci uint32 id = 1; 236cb93a386Sopenharmony_ci Paint paint = 2; 237cb93a386Sopenharmony_ci} 238cb93a386Sopenharmony_ci 239cb93a386Sopenharmony_cimessage DrawText { 240cb93a386Sopenharmony_ci repeated uint32 glyphs = 1; // uint16? bytes? 241cb93a386Sopenharmony_ci repeated float pos_x = 2; // must match counts with glyphs 242cb93a386Sopenharmony_ci repeated float pos_y = 3; // must match counts with glyphs OR have 1 entry 243cb93a386Sopenharmony_ci 244cb93a386Sopenharmony_ci Font font = 4; 245cb93a386Sopenharmony_ci Paint paint = 5; 246cb93a386Sopenharmony_ci} 247cb93a386Sopenharmony_ci 248cb93a386Sopenharmony_cimessage CanvasMsg { 249cb93a386Sopenharmony_ci oneof msg { 250cb93a386Sopenharmony_ci Save save = 1; 251cb93a386Sopenharmony_ci SaveLayer save_layer = 2; 252cb93a386Sopenharmony_ci Restore restore = 3; 253cb93a386Sopenharmony_ci 254cb93a386Sopenharmony_ci Concat concat = 4; 255cb93a386Sopenharmony_ci 256cb93a386Sopenharmony_ci ClipRect clip_rect = 5; 257cb93a386Sopenharmony_ci ClipPath clip_path = 6; 258cb93a386Sopenharmony_ci 259cb93a386Sopenharmony_ci DrawPaint draw_paint = 7; 260cb93a386Sopenharmony_ci DrawRect draw_rect = 8; 261cb93a386Sopenharmony_ci DrawOval draw_oval = 9; 262cb93a386Sopenharmony_ci DrawPath draw_path = 10; 263cb93a386Sopenharmony_ci DrawImage draw_image = 11; 264cb93a386Sopenharmony_ci DrawText draw_text = 12; 265cb93a386Sopenharmony_ci 266cb93a386Sopenharmony_ci DefineImage def_image = 13; 267cb93a386Sopenharmony_ci DefinePath def_path = 14; 268cb93a386Sopenharmony_ci DefineShader def_shader = 15; 269cb93a386Sopenharmony_ci } 270cb93a386Sopenharmony_ci} 271