Files
MapLibreParticleLab/misc/proto/style.proto

111 lines
2.6 KiB
Protocol Buffer

enum bucket_type {
fill = 1;
line = 2;
point = 3;
background = 15;
}
enum cap_type {
round_cap = 1;
butt_cap = 2;
square_cap = 3;
}
enum join_type {
miter_join = 1;
bevel_join = 2;
round_join = 3;
}
enum winding_type {
evenodd = 1;
nonzero = 2;
}
enum property_type {
null = 1;
constant = 2;
stops = 3;
linear = 4;
}
message value {
// Exactly one of these values may be present in a valid message
optional string string_value = 1;
optional float float_value = 2;
optional double double_value = 3;
optional int64 int_value = 4;
optional uint64 uint_value = 5;
optional sint64 sint_value = 6;
optional bool bool_value = 7;
extensions 8 to max;
}
message bucket {
required string name = 1;
required bucket_type type = 2;
// Specify what data to pull into this bucket
required string source_name = 3;
required string source_layer = 4;
optional string source_field = 5;
repeated value source_value = 6;
// Specifies how the geometry for this bucket should be created
optional cap_type cap = 7;
optional join_type join = 8;
optional string font = 9;
optional float font_size = 10;
}
message layer {
required string name = 1;
optional string bucket_name = 2;
repeated layer child_layer = 3;
}
message property {
required property_type function = 1;
repeated float value = 2 [ packed = true ];
}
message fill_style {
required string layer_name = 1;
optional property hidden = 2;
optional winding_type winding = 3 [ default = nonzero ];
optional property antialias = 4;
optional fixed32 fill_color = 5 [ default = 0x000000FF ]; // rgba (=> rgb << 8 | 0xFF for opaque!)
optional fixed32 stroke_color = 6; // if none is specified, no stroke will be painted
optional property opacity = 7; // values from 0..1
optional string image = 8;
// TODO: translate x/y
}
message stroke_style {
required string layer_name = 1;
optional property hidden = 2;
optional fixed32 color = 3 [ default = 0x000000FF ]; // rgba (=> rgb << 8 | 0xFF for opaque!)
optional property width = 4;
optional property offset = 5;
optional property opacity = 6; // values from 0..1
// line join + line cap are already defined in the
// TODO: dasharray
// TODO: image/icon
// TODO: translate x/y
}
message class {
required string name = 1;
repeated fill_style fill = 2;
repeated stroke_style stroke = 3;
}
// root level object
message style {
repeated bucket bucket = 1;
repeated layer layer = 2;
repeated class class = 3;
}