gecko/gfx/layers/protobuf/LayerScopePacket.proto
Boris Chiou 4f19b1f20c Bug 1121804 - Add websocket message listener. r=dglastonbury
1. Fix websocket listener, and implement a light-wight parser.
2. Handle the messages from clients by protobuf
3. Handle disconnection while receiving the close message.
2015-01-29 20:02:00 +01:00

153 lines
3.4 KiB
Protocol Buffer

/* vim:set ts=2 sw=2 sts=2 et: */
option optimize_for = LITE_RUNTIME;
package mozilla.layers.layerscope;
// ===============================
// Server to Client messages
// ===============================
message FramePacket {
optional uint64 value = 1;
}
message ColorPacket {
required uint64 layerref = 1;
optional uint32 width = 2;
optional uint32 height = 3;
optional uint32 color = 4;
}
message TexturePacket {
required uint64 layerref = 1;
optional uint32 width = 2;
optional uint32 height = 3;
optional uint32 stride = 4;
optional uint32 name = 5;
optional uint32 target = 6;
optional uint32 dataformat = 7;
optional uint64 glcontext = 8;
optional bytes data = 9;
}
message LayersPacket {
message Layer {
enum LayerType {
UnknownLayer = 0;
LayerManager = 1;
ContainerLayer = 2;
PaintedLayer = 3;
CanvasLayer = 4;
ImageLayer = 5;
ColorLayer = 6;
RefLayer = 7;
ReadbackLayer = 8;
}
enum ScrollingDirect {
VERTICAL = 1;
HORIZONTAL = 2;
}
enum Filter {
FILTER_FAST = 0;
FILTER_GOOD = 1;
FILTER_BEST = 2;
FILTER_NEAREST = 3;
FILTER_BILINEAR = 4;
FILTER_GAUSSIAN = 5;
FILTER_SENTINEL = 6;
}
message Size {
optional int32 w = 1;
optional int32 h = 2;
}
message Rect {
optional int32 x = 1;
optional int32 y = 2;
optional int32 w = 3;
optional int32 h = 4;
}
message Region {
repeated Rect r = 1;
}
message Matrix {
optional bool is2D = 1;
optional bool isId = 2;
repeated float m = 3;
}
message Shadow {
optional Rect clip = 1;
optional Matrix transform = 2;
optional Region vRegion = 3;
}
// Basic info
// Note: Parent's pointer is used to recontruct the layer tree
required LayerType type = 1;
required uint64 ptr = 2;
required uint64 parentPtr = 3;
// Common info (10 to 99)
optional Rect clip = 10;
optional Matrix transform = 11;
optional Region vRegion = 12; // visible region
optional Shadow shadow = 13; // shadow info
optional float opacity = 14;
optional bool cOpaque = 15; // content opaque
optional bool cAlpha = 16; // component alpha
optional ScrollingDirect direct = 17;
optional uint64 barID = 18;
optional uint64 mask = 19; // mask layer
// Specific info (100 to max)
// Painted Layer
optional Region valid = 100;
// Color Layer
optional uint32 color = 101;
// Canvas & Image Layer
optional Filter filter = 102;
// Ref Layer
optional uint64 refID = 103;
// Readback Layer
optional Size size = 104;
}
repeated Layer layer = 1;
}
message MetaPacket {
optional bool composedByHwc = 1;
}
// We only need to use this Packet.
// Other packet definitions are just type defines
message Packet {
enum DataType {
FRAMESTART = 1;
FRAMEEND = 2;
COLOR = 3;
TEXTURE = 4;
LAYERS = 5;
META = 6;
}
required DataType type = 1;
optional FramePacket frame = 2;
optional ColorPacket color = 3;
optional TexturePacket texture = 4;
optional LayersPacket layers = 5;
optional MetaPacket meta = 6;
}
// ===============================
// Client to Server messages
// ===============================
message CommandPacket {
enum CmdType {
NO_OP = 0;
LAYERS_TREE = 1;
LAYERS_BUFFER = 2;
}
required CmdType type = 1;
optional bool value = 2;
}