propresenter-php/proto/graphicsData.proto
Thorsten Bus 22ba4aff7d refactor: make repo Composer-compatible by moving php/ to root and ref/ to doc/reference_samples
- Move src/, tests/, bin/, generated/, proto/, composer.json, composer.lock, phpunit.xml from php/ to repo root
- Move ref/ to doc/reference_samples/ for better organization
- Remove vendor/ from git tracking (now properly gitignored)
- Update all test file paths (dirname adjustments and ref/ -> doc/reference_samples/)
- Update all documentation paths (AGENTS.md, doc/*.md)
- Remove php.bak/ directory
- All 252 tests pass
2026-03-30 13:26:29 +02:00

621 lines
16 KiB
Protocol Buffer
Executable file

syntax = "proto3";
package rv.data;
option cc_enable_arenas = true;
option csharp_namespace = "Pro.SerializationInterop.RVProtoData";
option swift_prefix = "RVData_";
import "alphaType.proto";
import "color.proto";
import "digitalAudio.proto";
import "effects.proto";
import "fileProperties.proto";
import "font.proto";
import "intRange.proto";
import "url.proto";
import "uuid.proto";
message Graphics {
message Element {
enum FlipMode {
FLIP_MODE_NONE = 0;
FLIP_MODE_VERTICAL = 1;
FLIP_MODE_HORIZONTAL = 2;
FLIP_MODE_BOTH = 3;
}
.rv.data.UUID uuid = 1;
string name = 2;
.rv.data.Graphics.Rect bounds = 3;
double rotation = 4;
double opacity = 5;
bool locked = 6;
bool aspect_ratio_locked = 7;
.rv.data.Graphics.Path path = 8;
.rv.data.Graphics.Fill fill = 9;
.rv.data.Graphics.Stroke stroke = 10;
.rv.data.Graphics.Shadow shadow = 11;
.rv.data.Graphics.Feather feather = 12;
.rv.data.Graphics.Text text = 13;
.rv.data.Graphics.Element.FlipMode flipMode = 15;
bool hidden = 16;
oneof Mask {
.rv.data.Graphics.Text.LineFillMask text_line_mask = 14;
}
}
message Rect {
.rv.data.Graphics.Point origin = 1;
.rv.data.Graphics.Size size = 2;
}
message Point {
double x = 1;
double y = 2;
}
message Size {
double width = 1;
double height = 2;
}
message EdgeInsets {
double left = 1;
double right = 2;
double top = 3;
double bottom = 4;
}
message Path {
message BezierPoint {
.rv.data.Graphics.Point point = 1;
.rv.data.Graphics.Point q0 = 2;
.rv.data.Graphics.Point q1 = 3;
bool curved = 4;
}
message Shape {
message RoundedRectangle {
double roundness = 1;
}
message Arrow {
.rv.data.Graphics.Point corner = 1;
}
message Polygon {
uint32 number_sides = 1;
}
message Star {
double inner_radius = 1;
uint32 number_points = 2;
}
enum Type {
TYPE_UNKNOWN = 0;
TYPE_RECTANGLE = 1;
TYPE_ELLIPSE = 2;
TYPE_ISOSCELES_TRIANGLE = 3;
TYPE_RIGHT_TRIANGLE = 4;
TYPE_RHOMBUS = 5;
TYPE_STAR = 6;
TYPE_POLYGON = 7;
TYPE_CUSTOM = 8;
TYPE_RIGHT_ARROW = 9;
TYPE_DOUBLE_ARROW = 10;
TYPE_ROUNDED_RECTANGLE = 11;
}
.rv.data.Graphics.Path.Shape.Type type = 1;
oneof AdditionalData {
.rv.data.Graphics.Path.Shape.RoundedRectangle rounded_rectangle = 2;
.rv.data.Graphics.Path.Shape.Polygon polygon = 3;
.rv.data.Graphics.Path.Shape.Star star = 4;
.rv.data.Graphics.Path.Shape.Arrow arrow = 5;
}
}
bool closed = 1;
repeated .rv.data.Graphics.Path.BezierPoint points = 2;
.rv.data.Graphics.Path.Shape shape = 3;
}
message Fill {
bool enable = 4;
oneof FillType {
.rv.data.Color color = 1;
.rv.data.Graphics.Gradient gradient = 2;
.rv.data.Media media = 3;
.rv.data.Graphics.BackgroundEffect backgroundEffect = 5;
}
}
message BackgroundEffect {
reserved "layer";
reserved 1;
message BackgroundEffectBlur {
double saturation = 1;
double blur_amount = 2;
}
message BackgroundEffectInvert {
}
oneof EffectType {
.rv.data.Graphics.BackgroundEffect.BackgroundEffectBlur backgroundBlur = 2;
.rv.data.Graphics.BackgroundEffect.BackgroundEffectInvert backgroundInvert = 3;
}
}
message Gradient {
message ColorStop {
.rv.data.Color color = 1;
double position = 2;
double blend_point = 3;
}
enum Type {
TYPE_LINEAR = 0;
TYPE_RADIAL = 1;
TYPE_ANGLE = 2;
}
.rv.data.Graphics.Gradient.Type type = 1;
double angle = 2;
double length = 3;
repeated .rv.data.Graphics.Gradient.ColorStop stops = 4;
}
message Shadow {
enum Style {
STYLE_DROP = 0;
}
.rv.data.Graphics.Shadow.Style style = 1;
double angle = 2;
double offset = 3;
double radius = 4;
.rv.data.Color color = 5;
double opacity = 6;
bool enable = 7;
}
message Stroke {
enum Style {
STYLE_SOLID_LINE = 0;
STYLE_SQUARE_DASH = 1;
STYLE_SHORT_DASH = 2;
STYLE_LONG_DASH = 3;
}
.rv.data.Graphics.Stroke.Style style = 1;
double width = 2;
.rv.data.Color color = 3;
repeated double pattern = 4;
bool enable = 5;
}
message Feather {
enum Style {
STYLE_INSIDE = 0;
STYLE_CENTER = 1;
STYLE_OUTSIDE = 2;
}
.rv.data.Graphics.Feather.Style style = 1;
double radius = 2;
bool enable = 3;
}
message Text {
reserved 1;
reserved 2;
message LineFillMask {
enum LineMaskStyle {
LINE_MASK_STYLE_FULL_WIDTH = 0;
LINE_MASK_STYLE_LINE_WIDTH = 1;
LINE_MASK_STYLE_MAX_LINE_WIDTH = 2;
}
bool enabled = 1;
double height_offset = 2;
double vertical_offset = 3;
.rv.data.Graphics.Text.LineFillMask.LineMaskStyle mask_style = 4;
double width_offset = 5;
double horizontal_offset = 6;
}
message GradientFill {
.rv.data.Graphics.Gradient gradient = 1;
bool stretch_to_document_bounds = 2;
}
message CutOutFill {
}
message MediaFill {
.rv.data.Media media = 1;
}
message ChordPro {
enum Notation {
NOTATION_CHORDS = 0;
NOTATION_NUMBERS = 1;
NOTATION_NUMERALS = 2;
NOTATION_DO_RE_MI = 3;
}
bool enabled = 1;
.rv.data.Graphics.Text.ChordPro.Notation notation = 2;
.rv.data.Color color = 3;
}
message Attributes {
message Underline {
enum Style {
STYLE_NONE = 0;
STYLE_SINGLE = 1;
STYLE_THICK = 2;
STYLE_DOUBLE = 3;
}
enum Pattern {
PATTERN_SOLID = 0;
PATTERN_DOT = 1;
PATTERN_DASH = 2;
PATTERN_DASH_DOT = 3;
PATTERN_DASH_DOT_DOT = 4;
}
.rv.data.Graphics.Text.Attributes.Underline.Style style = 1;
.rv.data.Graphics.Text.Attributes.Underline.Pattern pattern = 2;
bool by_word = 3;
}
message Paragraph {
message TabStop {
double location = 1;
.rv.data.Graphics.Text.Attributes.Alignment alignment = 2;
}
message TextList {
enum NumberType {
NUMBER_TYPE_BOX = 0;
NUMBER_TYPE_CHECK = 1;
NUMBER_TYPE_CIRCLE = 2;
NUMBER_TYPE_DIAMOND = 3;
NUMBER_TYPE_DISC = 4;
NUMBER_TYPE_HYPHEN = 5;
NUMBER_TYPE_SQUARE = 6;
NUMBER_TYPE_DECIMAL = 7;
NUMBER_TYPE_LOWERCASE_ALPHA = 8;
NUMBER_TYPE_UPPERCASE_ALPHA = 9;
NUMBER_TYPE_LOWERCASE_ROMAN = 10;
NUMBER_TYPE_UPPERCASE_ROMAN = 11;
}
bool is_enabled = 1;
.rv.data.Graphics.Text.Attributes.Paragraph.TextList.NumberType number_type = 2;
string prefix = 3;
string postfix = 4;
int32 starting_number = 5;
}
.rv.data.Graphics.Text.Attributes.Alignment alignment = 1;
double first_line_head_indent = 2;
double head_indent = 3;
double tail_indent = 4;
double line_height_multiple = 5;
double maximum_line_height = 6;
double minimum_line_height = 7;
double line_spacing = 8;
double paragraph_spacing = 9;
double paragraph_spacing_before = 10;
repeated .rv.data.Graphics.Text.Attributes.Paragraph.TabStop tab_stops = 11;
double default_tab_interval = 12;
.rv.data.Graphics.Text.Attributes.Paragraph.TextList text_list = 13;
repeated .rv.data.Graphics.Text.Attributes.Paragraph.TextList text_lists = 14;
}
message CustomAttribute {
.rv.data.IntRange range = 1;
oneof Attribute {
.rv.data.Graphics.Text.Attributes.Capitalization capitalization = 2;
double original_font_size = 3;
double font_scale_factor = 4;
.rv.data.Graphics.Text.GradientFill text_gradient_fill = 5;
bool should_preserve_foreground_color = 6;
string chord = 7;
.rv.data.Graphics.Text.CutOutFill cut_out_fill = 8;
.rv.data.Graphics.Text.MediaFill media_fill = 9;
.rv.data.Graphics.BackgroundEffect background_effect = 10;
}
}
enum Capitalization {
CAPITALIZATION_NONE = 0;
CAPITALIZATION_ALL_CAPS = 1;
CAPITALIZATION_SMALL_CAPS = 2;
CAPITALIZATION_TITLE_CASE = 3;
CAPITALIZATION_START_CASE = 4;
}
enum Alignment {
ALIGNMENT_LEFT = 0;
ALIGNMENT_RIGHT = 1;
ALIGNMENT_CENTER = 2;
ALIGNMENT_JUSTIFIED = 3;
ALIGNMENT_NATURAL = 4;
}
.rv.data.Font font = 1;
.rv.data.Graphics.Text.Attributes.Capitalization capitalization = 2;
.rv.data.Graphics.Text.Attributes.Underline underline_style = 4;
.rv.data.Color underline_color = 5;
.rv.data.Graphics.Text.Attributes.Paragraph paragraph_style = 6;
double kerning = 7;
int32 superscript = 8;
.rv.data.Graphics.Text.Attributes.Underline strikethrough_style = 9;
.rv.data.Color strikethrough_color = 10;
double stroke_width = 11;
.rv.data.Color stroke_color = 12;
repeated .rv.data.Graphics.Text.Attributes.CustomAttribute custom_attributes = 13;
.rv.data.Color background_color = 15;
oneof fill {
.rv.data.Color text_solid_fill = 3;
.rv.data.Graphics.Text.GradientFill text_gradient_fill = 14;
.rv.data.Graphics.Text.CutOutFill cut_out_fill = 16;
.rv.data.Graphics.Text.MediaFill media_fill = 17;
.rv.data.Graphics.BackgroundEffect background_effect = 18;
}
}
enum VerticalAlignment {
VERTICAL_ALIGNMENT_TOP = 0;
VERTICAL_ALIGNMENT_MIDDLE = 1;
VERTICAL_ALIGNMENT_BOTTOM = 2;
}
enum ScaleBehavior {
SCALE_BEHAVIOR_NONE = 0;
SCALE_BEHAVIOR_ADJUST_CONTAINER_HEIGHT = 1;
SCALE_BEHAVIOR_SCALE_FONT_DOWN = 2;
SCALE_BEHAVIOR_SCALE_FONT_UP = 3;
SCALE_BEHAVIOR_SCALE_FONT_UP_DOWN = 4;
}
enum Transform {
TRANSFORM_NONE = 0;
TRANSFORM_SINGLE_LINE = 1;
TRANSFORM_ONE_WORD_PER_LINE = 2;
TRANSFORM_ONE_CHARACTER_PER_LINE = 3;
TRANSFORM_REPLACE_LINE_RETURNS = 4;
}
.rv.data.Graphics.Text.Attributes attributes = 3;
.rv.data.Graphics.Shadow shadow = 4;
bytes rtf_data = 5;
.rv.data.Graphics.Text.VerticalAlignment vertical_alignment = 6;
.rv.data.Graphics.Text.ScaleBehavior scale_behavior = 7;
.rv.data.Graphics.EdgeInsets margins = 8;
bool is_superscript_standardized = 9;
.rv.data.Graphics.Text.Transform transform = 10;
string transformDelimiter = 11;
.rv.data.Graphics.Text.ChordPro chord_pro = 12;
}
}
message Media {
message Metadata {
string manufacture_name = 1;
.rv.data.URL manufacture_url = 2;
string information = 3;
string artist = 4;
string format = 5;
}
message VideoDevice {
enum Type {
TYPE_GENERIC = 0;
TYPE_DIRECTSHOW = 1;
TYPE_BLACKMAGIC = 2;
TYPE_AJA = 3;
TYPE_AV = 4;
TYPE_SYPHON = 5;
TYPE_NDI = 6;
TYPE_BLUEFISH = 7;
}
.rv.data.Media.VideoDevice.Type type = 1;
string name = 2;
string unique_id = 3;
string model_id = 4;
uint32 format_index = 5;
.rv.data.DigitalAudio.Device.Routing audio_routing = 6;
}
message AudioDevice {
string name = 1;
string unique_id = 2;
string model_id = 3;
uint32 channel_count = 4;
}
message Audio {
message Channel {
message Output {
reserved 1;
int32 channel_index = 2;
}
uint32 index = 1;
bool muted = 2;
double volume = 3;
bool compress_limit = 4;
repeated .rv.data.Media.Audio.Channel.Output outputs = 5;
}
}
message AudioProperties {
double volume = 1;
repeated .rv.data.Media.Audio.Channel audio_channels = 2;
bool is_custom_mapping = 3;
}
message TransportProperties {
reserved "start_ramp_time";
reserved "end_ramp_time";
reserved "fade_start_position";
reserved 4;
reserved 5;
reserved 6;
enum PlaybackBehavior {
PLAYBACK_BEHAVIOR_STOP = 0;
PLAYBACK_BEHAVIOR_LOOP = 1;
PLAYBACK_BEHAVIOR_LOOP_FOR_COUNT = 2;
PLAYBACK_BEHAVIOR_LOOP_FOR_TIME = 3;
}
enum RetriggerSetting {
RETRIGGER_SETTING_UNSET = 0;
RETRIGGER_SETTING_ALWAYS = 1;
RETRIGGER_SETTING_NEVER = 2;
RETRIGGER_SETTING_AUTOMATIC = 3;
}
double play_rate = 1;
double in_point = 2;
double out_point = 3;
double fade_in_duration = 7;
double fade_out_duration = 8;
bool should_fade_in = 9;
bool should_fade_out = 10;
double end_point = 11;
.rv.data.Media.TransportProperties.PlaybackBehavior playback_behavior = 12;
double loop_time = 13;
uint32 times_to_loop = 14;
.rv.data.Media.TransportProperties.RetriggerSetting retrigger = 15;
}
message DrawingProperties {
enum NativeRotationType {
NATIVE_ROTATION_TYPE_ROTATE_STANDARD = 0;
NATIVE_ROTATION_TYPE_ROTATE_90 = 90;
NATIVE_ROTATION_TYPE_ROTATE_180 = 180;
NATIVE_ROTATION_TYPE_ROTATE_270 = 270;
}
.rv.data.Media.ScaleBehavior scale_behavior = 1;
bool is_blurred = 16;
.rv.data.Media.ScaleAlignment scale_alignment = 2;
bool flipped_horizontally = 3;
bool flipped_vertically = 4;
.rv.data.Graphics.Size natural_size = 5;
double custom_image_rotation = 6;
.rv.data.Graphics.Rect custom_image_bounds = 7;
bool custom_image_aspect_locked = 8;
bool alpha_inverted = 9;
.rv.data.Media.DrawingProperties.NativeRotationType native_rotation = 10;
.rv.data.UUID selected_effect_preset_uuid = 11;
repeated .rv.data.Effect effects = 12;
bool crop_enable = 13;
.rv.data.Graphics.EdgeInsets crop_insets = 14;
.rv.data.AlphaType alpha_type = 15;
}
message VideoProperties {
enum EndBehavior {
END_BEHAVIOR_STOP = 0;
END_BEHAVIOR_STOP_ON_BLACK = 1;
END_BEHAVIOR_STOP_ON_CLEAR = 2;
END_BEHAVIOR_FADE_TO_BLACK = 3;
END_BEHAVIOR_FADE_TO_CLEAR = 4;
}
enum FieldType {
FIELD_TYPE_UNKNOWN = 0;
FIELD_TYPE_PROGRESSIVE = 1;
FIELD_TYPE_INTERLACED_UPPER_FIRST = 2;
FIELD_TYPE_INTERLACED_LOWER_FIRST = 3;
}
double frame_rate = 1;
.rv.data.Media.VideoProperties.FieldType field_type = 2;
double thumbnail_position = 3;
.rv.data.Media.VideoProperties.EndBehavior end_behavior = 4;
bool soft_loop = 5;
double soft_loop_duration = 6;
}
message LiveVideoProperties {
.rv.data.Media.VideoDevice video_device = 1;
.rv.data.Media.AudioDevice audio_device = 2;
int32 live_video_index = 3;
}
message AudioTypeProperties {
.rv.data.Media.AudioProperties audio = 1;
.rv.data.Media.TransportProperties transport = 2;
.rv.data.FileProperties file = 3;
}
message ImageTypeProperties {
.rv.data.Media.DrawingProperties drawing = 1;
.rv.data.FileProperties file = 2;
}
message VideoTypeProperties {
.rv.data.Media.DrawingProperties drawing = 1;
.rv.data.Media.AudioProperties audio = 2;
.rv.data.Media.TransportProperties transport = 3;
.rv.data.Media.VideoProperties video = 4;
.rv.data.FileProperties file = 5;
}
message LiveVideoTypeProperties {
.rv.data.Media.DrawingProperties drawing = 1;
.rv.data.Media.AudioProperties audio = 2;
.rv.data.Media.LiveVideoProperties live_video = 3;
}
message WebContentTypeProperties {
.rv.data.Media.DrawingProperties drawing = 1;
.rv.data.URL url = 2;
}
enum ScaleBehavior {
SCALE_BEHAVIOR_FIT = 0;
SCALE_BEHAVIOR_FILL = 1;
SCALE_BEHAVIOR_STRETCH = 2;
SCALE_BEHAVIOR_CUSTOM = 3;
}
enum ScaleAlignment {
SCALE_ALIGNMENT_MIDDLE_CENTER = 0;
SCALE_ALIGNMENT_TOP_LEFT = 1;
SCALE_ALIGNMENT_TOP_CENTER = 2;
SCALE_ALIGNMENT_TOP_RIGHT = 3;
SCALE_ALIGNMENT_MIDDLE_RIGHT = 4;
SCALE_ALIGNMENT_BOTTOM_RIGHT = 5;
SCALE_ALIGNMENT_BOTTOM_CENTER = 6;
SCALE_ALIGNMENT_BOTTOM_LEFT = 7;
SCALE_ALIGNMENT_MIDDLE_LEFT = 8;
}
.rv.data.UUID uuid = 1;
.rv.data.URL url = 2;
.rv.data.Media.Metadata metadata = 3;
oneof TypeProperties {
.rv.data.Media.AudioTypeProperties audio = 4;
.rv.data.Media.ImageTypeProperties image = 5;
.rv.data.Media.VideoTypeProperties video = 6;
.rv.data.Media.LiveVideoTypeProperties live_video = 7;
.rv.data.Media.WebContentTypeProperties web_content = 8;
}
}