| // Copyright 2018 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Contains the input used by filter_proto_converter to create a valid flattened |
| // skia image filter. These messages were made using CreateProc and flatten |
| // methods in mind so that a valid flattenable is produced. Many of the enums |
| // here are copied from skia. Most of the messages are straightforward, but |
| // there are a few things worth noting here. First is that many fields can be |
| // written to the flattenable output as-is (such as the fields x,y and z in |
| // Point3). And sometimes entire messages such as Point3 are written |
| // as-is. These Message and fields can be what we call "autovisited". For fields |
| // it means that they can be handled by the WriteFields method in |
| // filter_proto_converter.cc. For messages it means they can be handled by |
| // WriteFields and the generic Visit function (void Converter::Visit(const |
| // Message& msg)) and do not need their own specific code. In this file, we will |
| // put a comment "Autovisit:" before fields or messages that can be autovisited. |
| // A second thing to know is the parent and child pattern we use here. In many |
| // cases we need to specify one type of some kind of skia flattenable, like one |
| // ColorFilter. To do this we create a message $CONCEPT + "Child" (eg |
| // ColorFilterChild) that contains oneof these subtypes. In many cases these |
| // subtypes (or children) will share things in common with each other. To avoid |
| // re-implementing the same thing dozens of times, we give these children a |
| // field called parent, that when Visited handles this common functionality. One |
| // important exception to this general pattern is the LightParent message which |
| // contains its own children, rather than the usual practice (which is the other |
| // way around). That was done because the order in which the common |
| // functionality must be done is different than in other cases (here it must |
| // happen after the child functionality is handled, not before as in the other |
| // cases). Finally, the last thing to know is because protobuf doesn't have a |
| // good way to specify an array of a certain length so this functionality is |
| // implemented by defining a message containing required fields representing |
| // each element in the array (eg OverdrawColorFilter). |
| |
| syntax = "proto2"; |
| |
| package skia_image_filter_proto_converter; |
| |
| // Used for testcases. |
| message Input { |
| required ImageFilterChild image_filter = 1; |
| required uint64 rng_seed = 2; |
| } |
| |
| // No content when flattened. |
| message LumaColorFilter {} |
| |
| message OverdrawColorFilter { |
| // Autovisit: |
| required uint32 val1 = 1; |
| required uint32 val2 = 2; |
| required uint32 val3 = 3; |
| required uint32 val4 = 4; |
| required uint32 val5 = 5; |
| required uint32 val6 = 6; |
| } |
| |
| message ColorFilterChild { |
| oneof children { |
| ModeColorFilter mode_color_filter = 1; |
| ColorMatrixFilterRowMajor255 color_matrix_filter_row_major_255 = 2; |
| ComposeColorFilter compose_color_filter = 3; |
| SRGBGammaColorFilter srgb_gamma_color_filter = 4; |
| HighContrast_Filter high_contrast__filter = 5; |
| LumaColorFilter luma_color_filter = 6; |
| OverdrawColorFilter overdraw_color_filter = 7; |
| Table_ColorFilter table__color_filter = 8; |
| ToSRGBColorFilter to_srgb_color_filter = 9; |
| } |
| } |
| |
| message TransferFn { |
| required Named named = 1; |
| required float a = 2; |
| required float b = 3; |
| required float c = 4; |
| required float d = 5; |
| required float e = 6; |
| required float f = 7; |
| required float g = 8; |
| required ThreeByFour three_by_four = 9; |
| } |
| |
| enum Named { |
| kSRGB_Named = 0; |
| kAdobeRGB_Named = 1; |
| kSRGBLinear_Named = 2; |
| kSRGB_NonLinearBlending_Named = 3; |
| } |
| |
| message ColorSpace_XYZ { |
| enum GammaNamed { |
| kLinear_SkGammaNamed = 0; |
| kSRGB_SkGammaNamed = 1; |
| k2Dot2Curve_SkGammaNamed = 2; |
| } |
| required GammaNamed gamma_named = 1; |
| required ThreeByFour three_by_four = 2; |
| } |
| |
| message ColorSpaceNamed { |
| enum ColorSpaceNamedEnum { |
| kAdobeRGB_Named = 1; |
| kSRGBLinear_Named = 2; |
| } |
| required ColorSpaceNamedEnum named = 1; |
| required GammaNamed gamma_named = 2; |
| } |
| |
| message ColorSpaceChild { |
| oneof data { |
| ICC icc = 1; |
| TransferFn transfer_fn = 2; |
| ColorSpace_XYZ color_space__xyz = 3; |
| } |
| required ColorSpaceNamed named = 4; |
| } |
| |
| message ToSRGBColorFilter { |
| required ColorSpaceChild color_space = 1; |
| } |
| |
| message ColorTable { |
| required float val1 = 1; |
| required float val2 = 2; |
| required float val3 = 3; |
| required float val4 = 4; |
| required float val5 = 5; |
| required float val6 = 6; |
| required float val7 = 7; |
| required float val8 = 8; |
| required float val9 = 9; |
| required float val10 = 10; |
| required float val11 = 11; |
| required float val12 = 12; |
| required float val13 = 13; |
| required float val14 = 14; |
| required float val15 = 15; |
| required float val16 = 16; |
| required float val17 = 17; |
| required float val18 = 18; |
| required float val19 = 19; |
| required float val20 = 20; |
| required float val21 = 21; |
| required float val22 = 22; |
| required float val23 = 23; |
| required float val24 = 24; |
| required float val25 = 25; |
| required float val26 = 26; |
| required float val27 = 27; |
| required float val28 = 28; |
| required float val29 = 29; |
| required float val30 = 30; |
| required float val31 = 31; |
| required float val32 = 32; |
| required float val33 = 33; |
| required float val34 = 34; |
| required float val35 = 35; |
| required float val36 = 36; |
| required float val37 = 37; |
| required float val38 = 38; |
| required float val39 = 39; |
| required float val40 = 40; |
| required float val41 = 41; |
| required float val42 = 42; |
| required float val43 = 43; |
| required float val44 = 44; |
| required float val45 = 45; |
| required float val46 = 46; |
| required float val47 = 47; |
| required float val48 = 48; |
| required float val49 = 49; |
| required float val50 = 50; |
| required float val51 = 51; |
| required float val52 = 52; |
| required float val53 = 53; |
| required float val54 = 54; |
| required float val55 = 55; |
| required float val56 = 56; |
| required float val57 = 57; |
| required float val58 = 58; |
| required float val59 = 59; |
| required float val60 = 60; |
| required float val61 = 61; |
| required float val62 = 62; |
| required float val63 = 63; |
| required float val64 = 64; |
| } |
| |
| message Table_ColorFilter { |
| optional ColorTable table_a = 1; |
| optional ColorTable table_r = 2; |
| optional ColorTable table_g = 3; |
| optional ColorTable table_b = 4; |
| } |
| |
| // See SkHighContrastFilter.cpp |
| message HighContrast_Filter { |
| enum InvertStyle { |
| kNoInvert = 0; |
| kInvertBrightness = 1; |
| kInvertLightness = 2; |
| } |
| |
| required bool grayscale = 1; |
| required InvertStyle invert_style = 2; |
| // Autovisit up to here |
| required float contrast = 3; |
| } |
| |
| // Autovisit: |
| message SRGBGammaColorFilter { |
| enum Direction { |
| kLinearToSRGB = 0; |
| kSRGBToLinear = 1; |
| } |
| required Direction direction = 1; |
| } |
| |
| message ComposeColorFilter { |
| required ColorFilterChild outer = 1; |
| required ColorFilterChild inner = 2; |
| } |
| |
| message ColorFilterMatrix { |
| // Autovisit: |
| required float val1 = 1; |
| required float val2 = 2; |
| required float val3 = 3; |
| required float val4 = 4; |
| required float val5 = 5; |
| required float val6 = 6; |
| required float val7 = 7; |
| required float val8 = 8; |
| required float val9 = 9; |
| required float val10 = 10; |
| required float val11 = 11; |
| required float val12 = 12; |
| required float val13 = 13; |
| required float val14 = 14; |
| required float val15 = 15; |
| required float val16 = 16; |
| required float val17 = 17; |
| required float val18 = 18; |
| required float val19 = 19; |
| required float val20 = 20; |
| } |
| |
| // See SkColorMatrixFilterRowMajor255.cpp (https://goo.gl/qwF8DK) |
| message ColorMatrixFilterRowMajor255 { |
| // Autovisit: |
| required ColorFilterMatrix color_filter_matrix = 1; |
| } |
| |
| message ModeColorFilter { |
| required uint32 color = 1; |
| required BlendMode mode = 2; |
| } |
| |
| message Rectangle { |
| required float left = 1; |
| required float top = 2; |
| required float right = 3; |
| required float bottom = 4; |
| } |
| |
| message IRect { |
| required int32 left = 1; |
| required int32 top = 2; |
| required int32 right = 3; |
| required int32 bottom = 4; |
| } |
| |
| message CropRectangle { |
| required Rectangle rectangle = 1; |
| required uint32 flags = 2; |
| } |
| |
| message PictureInfo { |
| // TODO(metzman): Figure out how to keep this up to date. |
| enum Version { |
| V0 = 56; |
| V1 = 57; |
| V2 = 58; |
| V3 = 59; |
| kRemoveHeaderFlags_Version = 60; |
| V4 = 61; |
| } |
| |
| required Version version = 1; |
| required Rectangle rectangle = 2; |
| required uint32 flags = 3; |
| } |
| |
| message PictureData { |
| // SkPictureData.cpp (https://goo.gl/hDnKjz) |
| repeated PictureTagChild tags = 1; |
| required ReaderPictureTag reader_tag = 2; |
| } |
| |
| enum BlendMode { |
| kClear = 0; |
| kSrc = 1; |
| kDst = 2; |
| // TODO(metzman): Uncomment this when bug 786133 is fixed. |
| // kSrcOver = 3; |
| kDstOver = 4; |
| kSrcIn = 5; |
| kDstIn = 6; |
| kSrcOut = 7; |
| kDstOut = 8; |
| kSrcATop = 9; |
| kDstATop = 10; |
| kXor = 11; |
| kPlus = 12; |
| kModulate = 13; |
| kScreenAndLastCoeffMode = 14; |
| kOverlay = 15; |
| kDarken = 16; |
| kLighten = 17; |
| kColorDodge = 18; |
| kColorBurn = 19; |
| kHardLight = 20; |
| kSoftLight = 21; |
| kDifference = 22; |
| kExclusion = 23; |
| kLastSeparableModeAndMultiply = 24; |
| kHue = 25; |
| kSaturation = 26; |
| kColor = 27; |
| kLuminosity = 28; |
| } |
| |
| message Paint { |
| required float text_size = 1; |
| required float text_scale_x = 2; |
| required float text_skew_x = 3; |
| required float stroke_width = 4; |
| required float stroke_miter = 5; |
| required uint32 color = 6; |
| // Autovisit up to here |
| |
| enum TextEncoding { |
| kUTF8_TextEncoding = 0; |
| kUTF16_TextEncoding = 1; |
| kUTF32_TextEncoding = 2; |
| kGlyphID_TextEncoding = 3; |
| } |
| |
| enum Style { |
| kFill_Style = 0; |
| kStroke_Style = 1; |
| kStrokeAndFill_Style = 2; // no longer needed/used |
| } |
| |
| enum StrokeCap { |
| kButt_Cap = 0; |
| kRound_Cap = 1; |
| kSquare_Cap = 2; |
| } |
| |
| enum StrokeJoin { |
| kMiter_Join = 0; |
| kRound_Join = 1; |
| kBevel_Join = 2; |
| } |
| |
| required StrokeCap stroke_cap = 7; |
| required StrokeJoin stroke_join = 8; |
| required Style style = 9; |
| required TextEncoding text_encoding = 10; |
| required BlendMode blend_mode = 11; |
| optional PaintEffects effects = 12; |
| |
| enum PaintFlags { |
| kAntiAlias_Flag = 0x01; |
| kDither_Flag = 0x04; |
| kFakeBoldText_Flag = 0x20; |
| kLinearText_Flag = 0x40; |
| kSubpixelText_Flag = 0x80; |
| kDevKernText_Flag = 0x100; |
| kLCDRenderText_Flag = 0x200; |
| kEmbeddedBitmapText_Flag = 0x400; |
| kAutoHinting_Flag = 0x800; |
| kVerticalText_Flag = 0x1000; |
| kGenA8FromLCD_Flag = 0x2000; |
| kAllFlags = 0xFFFF; |
| } |
| |
| enum Hinting { |
| kNo_Hinting = 0; |
| kSlight_Hinting = 1; |
| kNormal_Hinting = 2; |
| kFull_Hinting = 3; |
| } |
| |
| enum Align { |
| kLeft_Align = 0; |
| kCenter_Align = 1; |
| kRight_Align = 2; |
| } |
| |
| // Stuff that gets packed into flags. |
| required PaintFlags flags = 13; |
| required Hinting hinting = 14; |
| required Align align = 15; |
| required FilterQuality filter_quality = 16; |
| } |
| |
| message Point { |
| required float x = 1; |
| required float y = 2; |
| } |
| |
| message PathEffectChild { |
| oneof children { |
| PairPathEffect pair_path_effect = 1; |
| Path2DPathEffect path_2d_path_effect = 2; |
| Line2DPathEffect line_2d_path_effect = 3; |
| CornerPathEffect corner_path_effect = 4; |
| DashImpl dash_impl = 5; |
| DiscretePathEffect discrete_path_effect = 6; |
| Path1DPathEffect path_1d_path_effect = 7; |
| } |
| } |
| |
| // Autovisit: |
| message CornerPathEffect { |
| // 0 is a very bad choice for radius, so make field optional with a default of |
| // 1. |
| optional float radius = 1 [default = 1]; |
| } |
| |
| message Path2DPathEffect { |
| required Matrix matrix = 1; |
| required Path path = 2; |
| } |
| |
| message Line2DPathEffect { |
| required Matrix matrix = 1; |
| required float width = 2; |
| } |
| |
| message DashImpl { |
| required float phase = 1; |
| required float interval_1 = 2; |
| required float interval_2 = 3; |
| repeated float intervals = 4; |
| } |
| |
| // Autovisit: |
| message DiscretePathEffect { |
| required float seg_length = 1; |
| required float perterb = 2; |
| required uint32 seed_assist = 3; |
| } |
| |
| message Path1DPathEffect { |
| enum Style { |
| kTranslate_Style = 0; |
| kRotate_Style = 1; |
| kMorph_Style = 2; |
| } |
| required float advance = 1; |
| required Path path = 2; |
| required float initial_offset = 3; |
| required Style style = 4; |
| } |
| |
| message Path { |
| enum Convexity { |
| kUnknown_Convexity = 0; |
| kConvex_Convexity = 1; |
| kConcave_Convexity = 2; |
| } |
| enum FirstDirection { |
| kCW_FirstDirection = 0; |
| kCCW_FirstDirection = 1; |
| kUnknown_FirstDirection = 2; |
| } |
| enum SerializationVersion { |
| kPathPrivFirstDirection_Version = 1; |
| kPathPrivLastMoveToIndex_Version = 2; |
| kPathPrivTypeEnumVersion = 3; |
| } |
| |
| required Convexity convexity = 1; |
| required uint32 fill_type = 2; // Should be 8 bytes |
| required FirstDirection first_direction = 3; |
| required bool is_volatile = 4; |
| required SerializationVersion serialized_version = 5; |
| required int32 last_move_to_index = 6; |
| required PathRef path_ref = 7; |
| } |
| |
| message ValidVerb { |
| enum Value { |
| kMove_Verb = 0; |
| kLine_Verb = 1; |
| kQuad_Verb = 2; |
| kConic_Verb = 3; |
| kCubic_Verb = 4; |
| kClose_Verb = 5; |
| // We don't actually want kDone_Verb. |
| } |
| required Value value = 1; |
| required Point point1 = 2; |
| required Point point2 = 3; |
| required Point point3 = 4; |
| required float conic_weight = 5; |
| } |
| |
| message PathRef { |
| repeated ValidVerb verbs = 1; |
| required bool is_finite = 2; |
| required uint32 segment_mask = 3; |
| required ValidVerb first_verb = 4; |
| } |
| |
| message PairPathEffect { |
| enum Type { |
| SUM = 1; |
| COMPOSE = 2; |
| } |
| required Type type = 1; |
| required PathEffectChild path_effect_1 = 2; |
| required PathEffectChild path_effect_2 = 3; |
| } |
| |
| message ShaderChild { |
| oneof children { |
| ColorShader color_shader = 1; |
| Color4Shader color_4_shader = 2; |
| ColorFilterShader color_filter_shader = 3; |
| ComposeShader compose_shader = 4; |
| EmptyShader empty_shader = 5; |
| ImageShader image_shader = 6; |
| PictureShader picture_shader = 7; |
| PerlinNoiseShaderImpl perlin_noise_shader_impl = 8; |
| LocalMatrixShader local_matrix_shader = 9; |
| LinearGradient linear_gradient = 10; |
| RadialGradient radial_gradient = 11; |
| SweepGradient sweep_gradient = 12; |
| TwoPointConicalGradient two_point_conical_gradient = 13; |
| } |
| } |
| |
| message TwoPointConicalGradient { |
| required GradientParent parent = 1; |
| // Autovisit: |
| required Point center1 = 2; |
| required Point center2 = 3; |
| required float radius1 = 4; |
| required float radius2 = 5; |
| } |
| |
| message SweepGradient { |
| required GradientParent parent = 1; |
| // Autovisit: |
| required Point center = 2; |
| // TODO(metzman): Handle case when buffer.fVersion >= |
| // kTileInfoInSweepGradient_Version or fVersion != 0. |
| required float bias = 3; |
| required float scale = 4; |
| } |
| |
| message RadialGradient { |
| required GradientParent parent = 1; |
| // Autovisit: |
| required Point center = 2; |
| required float radius = 3; |
| } |
| |
| message Color4f { |
| // Autovisit: |
| required float r = 1; |
| required float g = 2; |
| required float b = 3; |
| required float a = 4; |
| } |
| |
| // Note that this cannot be named "Descriptor" since that name is used by |
| // protobuf's reflection methods |
| message GradientDescriptor { |
| optional ColorSpaceChild color_space = 1; |
| optional float pos = 2; |
| optional Matrix local_matrix = 3; |
| required TileMode tile_mode = 4; |
| required uint32 grad_flags = 5; // <= UINT8_MAX |
| repeated Color4f colors = 6; |
| } |
| |
| // Contained by children |
| message GradientParent { |
| required GradientDescriptor gradient_descriptor = 1; |
| } |
| |
| message LinearGradient { |
| required GradientParent parent = 1; |
| // Autovisit: |
| required Point start = 2; |
| required Point end = 3; |
| } |
| |
| message LocalMatrixShader { |
| required Matrix matrix = 1; |
| required ShaderChild proxy_shader = 2; |
| } |
| |
| // Autovisit: |
| message PerlinNoiseShaderImpl { |
| enum Type { |
| kFractalNoise_Type = 0; |
| kTurbulence_Type = 1; |
| kImprovedNoise_Type = 2; |
| } |
| required Type type = 1; |
| required float base_frequency_x = 2; |
| required float base_frequency_y = 3; |
| required int32 octaves = 4; |
| required float seed = 5; |
| required int32 height = 6; |
| required int32 width = 7; |
| } |
| |
| message PictureShader { |
| required Matrix matrix = 1; |
| // Autovisit: |
| required TileMode tmx = 2; |
| required TileMode tmy = 3; |
| required Rectangle rect = 4; |
| } |
| |
| enum TileMode { |
| kClamp_TileMode = 0; |
| kRepeat_TileMode = 1; |
| kMirror_TileMode = 2; |
| } |
| |
| // Autovisit: |
| message ImageShader { |
| required TileMode tile_mode_x = 1; |
| required TileMode tile_mode_y = 2; |
| required Matrix matrix = 3; |
| required Image image = 4; |
| } |
| |
| message ImageInfo { |
| enum AlphaType { |
| kUnknown_SkAlphaType = 0; |
| kOpaque_SkAlphaType = 1; |
| kPremul_SkAlphaType = 2; |
| kUnpremul_SkAlphaType = 3; |
| } |
| |
| enum ColorType { |
| kUnknown_Stored_SkColorType = 0; |
| kAlpha_8_Stored_SkColorType = 1; |
| kRGB_565_Stored_SkColorType = 2; |
| kARGB_4444_Stored_SkColorType = 3; |
| kRGBA_8888_Stored_SkColorType = 4; |
| kBGRA_8888_Stored_SkColorType = 5; |
| kIndex_8_Stored_SkColorType_DEPRECATED = 6; |
| kGray_8_Stored_SkColorType = 7; |
| kRGBA_F16_Stored_SkColorType = 8; |
| } |
| |
| required int32 width = 1; |
| required int32 height = 2; |
| required AlphaType alpha_type = 3; |
| required ColorType color_type = 4; |
| required ColorSpaceChild color_space = 5; |
| } |
| |
| message ImageData { |
| repeated uint32 data = 1; |
| } |
| |
| // TODO(metzman): Finish implementing using ImageInfo. |
| message Image { |
| // Must be non-negative. |
| required int32 width = 1; |
| required int32 height = 2; |
| required ImageData data = 3; |
| // Must be nonnegative. |
| required int32 origin_x = 4; |
| required int32 origin_y = 5; |
| } |
| |
| // Autovisit: |
| message EmptyShader {} |
| |
| message ComposeShader { |
| required ShaderChild dst = 1; |
| required ShaderChild src = 2; |
| // Autovisit: |
| required BlendMode mode = 3; |
| required float lerp_t = 4; |
| } |
| |
| message ColorFilterShader { |
| required ShaderChild shader = 1; |
| required ColorFilterChild filter = 2; |
| } |
| |
| message Color4Shader { |
| required uint32 color = 1; |
| } |
| |
| // Autovisit: |
| message ColorShader { |
| required uint32 color = 1; |
| } |
| |
| message LooperChild { |
| required LayerDrawLooper layer_draw_looper = 1; |
| } |
| |
| message LayerDrawLooper { |
| repeated LayerInfo layer_infos = 1; |
| } |
| |
| message LayerInfo { |
| required int32 paint_bits = 1; |
| required BlendMode color_mode = 2; |
| required Point point = 3; |
| required bool post_translate = 4; |
| // Autovisit up to here |
| required Paint paint = 5; |
| } |
| |
| message MaskFilterChild { |
| oneof children { |
| BlurMaskFilter blur_mask_filter_impl = 1; |
| EmbossMaskFilter emboss_mask_filter = 2; |
| } |
| } |
| |
| message EmbossMaskFilterLight { |
| required float direction_x = 1; |
| required float direction_y = 2; |
| required float direction_z = 3; |
| required uint32 ambient = 4; |
| required uint32 specular = 5; |
| } |
| |
| message EmbossMaskFilter { |
| required EmbossMaskFilterLight light = 1; |
| required float blur_sigma = 2; |
| } |
| |
| enum BlurStyle { |
| kNormal_SkBlurStyle = 0; |
| kSolid_SkBlurStyle = 1; |
| kOuter_SkBlurStyle = 2; |
| kInner_SkBlurStyle = 3; |
| } |
| |
| // Copied from https://goo.gl/Yy5Euw |
| enum BlurFlags { |
| kNone_BlurFlag = 0x00; |
| kIgnoreTransform_BlurFlag = 0x01; |
| kHighQuality_BlurFlag = 0x02; |
| kAll_BlurFlag = 0x03; |
| } |
| |
| message BlurMaskFilter { |
| required float sigma = 1; |
| required BlurStyle style = 2; |
| required BlurFlags flags = 3; |
| required Rectangle occluder = 4; |
| } |
| |
| message PaintEffects { |
| optional PathEffectChild path_effect = 1; |
| optional ShaderChild shader = 2; |
| optional MaskFilterChild mask_filter = 3; |
| optional ColorFilterChild color_filter = 4; |
| optional LooperChild looper = 5; |
| optional ImageFilterChild image_filter = 6; |
| } |
| |
| message RecordingData { |
| repeated Paint paints = 1; |
| } |
| |
| message PaintImageFilter { |
| required ImageFilterParent image_filter_parent = 1; |
| required Paint paint = 2; |
| } |
| |
| message PictureTagChild { |
| oneof children { |
| PaintPictureTag paint = 1; |
| PathPictureTag path = 2; |
| Image image = 3; |
| Vertices vertices = 4; |
| TextBlob text_blob = 5; |
| } |
| } |
| |
| message TextBlob { |
| required Rectangle bounds = 1; |
| enum GlyphPositioning { |
| kDefault_Positioning = 0; |
| kHorizontal_Positioning = 1; |
| kFull_Positioning = 2; |
| } |
| required GlyphPositioning glyph_positioning = 2; |
| required bool extended = 3; |
| required Point offset = 4; |
| required Paint paint = 5; |
| required GlyphAndPosAndCluster glyph_pos_cluster_1 = 6; |
| required GlyphAndPosAndCluster glyph_pos_cluster_2 = 7; |
| repeated GlyphAndPosAndCluster glyph_pos_clusters = 8; |
| repeated uint32 text = 9; |
| } |
| |
| message GlyphAndPosAndCluster { |
| required uint32 glyph = 1; |
| required float position_1 = 2; |
| required float position_2 = 3; |
| required uint32 cluster = 4; |
| } |
| |
| message Vertices { |
| enum VertexMode { |
| kTriangles_VertexMode = 0; |
| kTriangleStrip_VertexMode = 1; |
| kTriangleFan_VertexMode = 2; |
| } |
| required VertexMode mode = 1; |
| required bool has_texs = 2; |
| required bool has_colors = 3; |
| repeated VertexTexColor vertex_text_colors = 4; |
| repeated uint32 indices = 5; |
| } |
| |
| message VertexTexColor { |
| required Point vertex = 1; |
| required Point tex = 2; |
| required Point color = 3; |
| } |
| |
| message ReaderPictureTag { |
| required uint32 first_bytes = 1; |
| repeated uint32 later_bytes = 2; |
| } |
| |
| message PaintPictureTag { |
| required Paint paint = 1; |
| } |
| |
| message PathPictureTag { |
| required Path path = 1; |
| } |
| |
| message Picture { |
| required PictureInfo info = 1; |
| optional PictureData data = 2; |
| } |
| |
| // Copied with comments from skia. |
| // Enums in C++ that don't have set values start at 0. |
| enum FilterQuality { |
| // fastest but lowest quality, typically nearest-neighbor |
| kNone_SkFilterQuality = 0; |
| kLow_SkFilterQuality = 1; // typically bilerp |
| kMedium_SkFilterQuality = 2; // typically bilerp + mipmaps for down-scaling |
| // slowest but highest quality, typically bicubic or better |
| kHigh_SkFilterQuality = 3; |
| } |
| |
| message PictureImageFilter { |
| enum PictureResolution { |
| kDeviceSpace_PictureResolution = 0; |
| kLocalSpace_PictureResolution = 1; |
| } |
| |
| optional Picture picture = 1; |
| required Rectangle crop_rectangle = 2; |
| required PictureResolution resolution = 3; |
| } |
| |
| message Matrix { |
| required float val1 = 1; |
| required float val2 = 2; |
| required float val3 = 3; |
| required float val4 = 4; |
| required float val5 = 5; |
| required float val6 = 6; |
| required float val7 = 7; |
| required float val8 = 8; |
| required float val9 = 9; |
| } |
| |
| message MatrixImageFilter { |
| required ImageFilterParent image_filter_parent = 1; |
| required Matrix transform = 2; |
| required FilterQuality filter_quality = 3; |
| } |
| |
| message ImageFilterChild { |
| oneof children { |
| PaintImageFilter paint_image_filter = 1; |
| MatrixImageFilter matrix_image_filter = 2; |
| SpecularLightingImageFilter specular_lighting_image_filter = 3; |
| ArithmeticImageFilter arithmetic_image_filter = 4; |
| AlphaThresholdFilterImpl alpha_threshold_filter_impl = 5; |
| BlurImageFilterImpl blur_image_filter_impl = 6; |
| ColorFilterImageFilter color_filter_image_filter = 7; |
| ComposeImageFilter compose_image_filter = 8; |
| DisplacementMapEffect displacement_map_effect = 9; |
| DropShadowImageFilter drop_shadow_image_filter = 10; |
| LocalMatrixImageFilter local_matrix_image_filter = 11; |
| MagnifierImageFilter magnifier_image_filter = 13; |
| MatrixConvolutionImageFilter matrix_convolution_image_filter = 14; |
| MergeImageFilter merge_image_filter = 15; |
| DilateImageFilter dilate_image_filter = 16; |
| ErodeImageFilter erode_image_filter = 17; |
| OffsetImageFilter offset_image_filter = 18; |
| PictureImageFilter picture_image_filter = 19; |
| TileImageFilter tile_image_filter = 20; |
| XfermodeImageFilter_Base xfermode_image_filter__base = 21; |
| XfermodeImageFilter xfermode_image_filter = 22; |
| DiffuseLightingImageFilter diffuse_lighting_image_filter = 23; |
| ImageSource image_source = 24; |
| } |
| } |
| |
| message DiffuseLightingImageFilter { |
| required ImageFilterParent parent = 1; |
| required LightParent light = 2; |
| required float surface_scale = 3; |
| required float kd = 4; |
| } |
| |
| message XfermodeImageFilter { |
| required ImageFilterParent parent = 1; |
| required BlendMode mode = 2; |
| } |
| |
| message XfermodeImageFilter_Base { |
| required ImageFilterParent parent = 1; |
| required BlendMode mode = 2; |
| } |
| |
| message TileImageFilter { |
| required ImageFilterParent parent = 1; |
| required Rectangle src = 2; |
| required Rectangle dst = 3; |
| } |
| |
| message OffsetImageFilter { |
| required ImageFilterParent parent = 1; |
| required Point offset = 2; |
| } |
| |
| message ErodeImageFilter { |
| required ImageFilterParent parent = 1; |
| required int32 width = 2; |
| required int32 height = 3; |
| } |
| |
| message DilateImageFilter { |
| required ImageFilterParent parent = 1; |
| required int32 width = 2; |
| required int32 height = 3; |
| } |
| |
| message MergeImageFilter { |
| required ImageFilterParent parent = 1; |
| } |
| |
| message MatrixConvolutionImageFilter { |
| required ImageFilterParent parent = 1; |
| required int32 width = 2; |
| required int32 height = 3; |
| // Since we can't specify a field of repeated bytes that is width*height, use |
| // a kernel_seed to seed a RNG to get the number of bytes we need. |
| required int64 kernel_seed = 4; |
| required float gain = 5; |
| required float bias = 6; |
| required int32 offset_x = 7; |
| required int32 offset_y = 8; |
| required TileMode tile_mode = 9; |
| required bool convolve_alpha = 10; |
| } |
| |
| message MagnifierImageFilter { |
| required ImageFilterParent parent = 1; |
| required Rectangle src = 2; |
| required float inset = 3; |
| } |
| |
| message LocalMatrixImageFilter { |
| required ImageFilterParent parent = 1; |
| required Matrix matrix = 2; |
| } |
| |
| message ImageSource { |
| required FilterQuality filter_quality = 1; |
| required Rectangle src = 2; |
| required Rectangle dst = 3; |
| // / Autovisit |
| required Image image = 4; |
| } |
| |
| message DropShadowImageFilter { |
| enum ShadowMode { |
| kDrawShadowAndForeground_ShadowMode = 0; |
| kDrawShadowOnly_ShadowMode = 1; |
| kDrawShadowOnly_ShadowMod = 2; |
| } |
| required ImageFilterParent parent = 1; |
| // Autovisit: |
| required float dx = 2; |
| required float dy = 3; |
| required float sigma_x = 4; |
| required float sigma_y = 5; |
| required uint32 color = 6; |
| required ShadowMode shadow_mode = 7; |
| } |
| |
| message DisplacementMapEffect { |
| enum ChannelSelectorType { |
| kUnknown_ChannelSelectorType = 0; |
| kR_ChannelSelectorType = 1; |
| kG_ChannelSelectorType = 2; |
| kB_ChannelSelectorType = 3; |
| kA_ChannelSelectorTyp = 4; |
| } |
| |
| required ImageFilterParent parent = 1; |
| // Autovisit: |
| required ChannelSelectorType xsel = 2; |
| required ChannelSelectorType ysel = 3; |
| required float scale = 4; |
| } |
| |
| message ComposeImageFilter { |
| required ImageFilterParent parent = 1; |
| } |
| |
| message ColorFilterImageFilter { |
| required ImageFilterParent parent = 1; |
| required ColorFilterChild color_filter = 2; |
| } |
| |
| message BlurImageFilterImpl { |
| required ImageFilterParent parent = 1; |
| required float sigma_x = 2; |
| required float sigma_y = 3; |
| required TileMode mode = 4; |
| } |
| |
| message AlphaThresholdFilterImpl { |
| required ImageFilterParent parent = 1; |
| required float inner = 2; |
| required float outer = 3; |
| required Region rgn = 4; |
| } |
| |
| message Region { |
| required IRect bounds = 1; |
| // TODO(metzman): Properly implement complex regions. |
| } |
| |
| message RegionComplex { |
| required int32 y_span_count = 1; |
| required int32 interval_count = 2; |
| repeated int32 run_seed = 3; |
| } |
| |
| message ArithmeticImageFilter { |
| required ImageFilterParent parent = 1; |
| |
| // Ignored see SkXfermodeImageFilter_Base::LegacyArithmeticCreateProc. |
| // Converter will write a mode even without a corresponding field. |
| // required BlendMode mode = 2; |
| |
| // Autovisit: |
| required float val1 = 2; |
| required float val2 = 3; |
| required float val3 = 4; |
| required float val4 = 5; |
| required bool enforce_pm_color = 6; |
| } |
| |
| // Contained by children |
| message ImageFilterParent { |
| required ImageFilterChild default_input = 1; |
| repeated ImageFilterChild inputs = 2; |
| required CropRectangle crop_rectangle = 3; |
| } |
| |
| // Autovisit: |
| message Point3 { |
| required float x = 1; |
| required float y = 2; |
| required float z = 3; |
| } |
| |
| // Contains children |
| message LightParent { |
| required Point3 color = 1; |
| required LightChild light_child = 2; |
| } |
| |
| // Autovisit: |
| message DistantLight { |
| required Point3 direction = 1; |
| } |
| |
| // Autovisit: |
| message PointLight { |
| required Point3 location = 1; |
| } |
| |
| // See SkLightingImageFilter.cpp |
| // Autovisit: |
| message SpotLight { |
| required Point3 location = 1; |
| required Point3 target = 2; |
| required float specular_exponent = 3; |
| required float cos_outer_cone_angle = 4; |
| required float cos_inner_cone_angle = 5; |
| required float cone_scale = 6; |
| required Point3 s = 7; |
| } |
| |
| message LightChild { |
| oneof children { |
| PointLight point_light = 1; |
| SpotLight spot_light = 2; |
| } |
| required DistantLight distant_light = 3; |
| } |
| |
| message SpecularLightingImageFilter { |
| required ImageFilterParent image_filter_parent = 1; |
| required LightParent light = 2; |
| required float surface_scale = 3; |
| required float ks = 4; |
| required float shininess = 5; |
| } |
| |
| enum GammaNamed { |
| kLinear_SkGammaNamed = 0; |
| kSRGB_SkGammaNamed = 1; |
| k2Dot2Curve_SkGammaNamed = 2; |
| kNonStandard_SkGammaNamed = 3; |
| } |
| |
| message ThreeByFour { |
| required float val1 = 1; |
| required float val2 = 2; |
| required float val3 = 3; |
| required float val4 = 4; |
| required float val5 = 5; |
| required float val6 = 6; |
| required float val7 = 7; |
| required float val8 = 8; |
| required float val9 = 9; |
| required float val10 = 10; |
| required float val11 = 11; |
| required float val12 = 12; |
| } |
| |
| enum ICCTag { |
| kTAG_rXYZ = 0; |
| kTAG_gXYZ = 1; |
| kTAG_bXYZ = 2; |
| kTAG_rTRC = 3; |
| kTAG_gTRC = 4; |
| kTAG_bTRC = 5; |
| kTAG_kTRC = 6; |
| kTAG_A2B0 = 7; |
| kTAG_CurveType = 8; |
| kTAG_ParaCurveType = 9; |
| kTAG_TextType = 10; |
| } |
| |
| // This contains a lot of commented out fields since they are in the actual |
| // struct this message represents, but are unused. We don't define them and |
| // WriteIgnoredFields is used to write them rather than wasting LPM's time |
| // setting them. However, we leave them here commented out for reference, and |
| // we don't use their numbers in case we use them in the future. |
| message ICC { |
| enum Profile { |
| Display_Profile = 0; |
| Input_Profile = 1; |
| Output_Profile = 2; |
| ColorSpace_Profile = 3; |
| } |
| |
| enum InputColorSpace { |
| RGB_ColorSpace = 0; |
| CMYK_ColorSpace = 1; |
| Gray_ColorSpace = 2; |
| } |
| enum PCS { |
| kXYZ_PCSSpace = 0; |
| kLAB_PCSSpace = 1; |
| } |
| enum RenderingIntent { |
| kPerceptual = 0; |
| kRelative = 1; |
| kSaturation = 2; |
| kAbsolute = 3; |
| } |
| required Named named = 34; |
| // required uint32 size = 1; // Always 132. |
| // required uint32 cmm_type_ignored = 2; |
| required uint32 version = 3; |
| required Profile profile_class = 4; |
| required InputColorSpace input_color_space = 5; |
| required PCS pcs = 6; |
| // required uint32 datetime_ignored_1 = 7; |
| // required uint32 datetime_ignored_2 = 8; |
| // required uint32 datetime_ignored_3 = 9; |
| // Always SkSetFourByteTag('a', 'c', 's', 'p') |
| // required uint32 signature = 10; |
| // required uint32 platform_target_ignored = 11; |
| // required uint32 flags_ignored = 12; |
| // required uint32 device_manufacturer_ignored = 13; |
| // required uint32 device_model_ignored = 14; |
| // required uint32 device_attributes_ignored_1 = 15; |
| // required uint32 device_attributes_ignored_2 = 16; |
| required RenderingIntent rendering_intent = 17; |
| required int32 illuminant_x = 18; |
| required int32 illuminant_y = 19; |
| required int32 illuminant_z = 20; |
| |
| // required uint32 creator_ignored = 21; |
| // required uint32 profileid_ignored_1 = 22; |
| // required uint32 profileid_ignored_2 = 23; |
| // required uint32 profileid_ignored_3 = 24; |
| // required uint32 profileid_ignored_4 = 25; |
| // required uint32 reserved_ignored_1 = 26; |
| // required uint32 reserved_ignored_2 = 27; |
| // required uint32 reserved_ignored_3 = 28; |
| // required uint32 reserved_ignored_4 = 29; |
| // required uint32 reserved_ignored_5 = 30; |
| // required uint32 reserved_ignored_6 = 31; |
| // required uint32 reserved_ignored_7 = 32; |
| |
| // We'll use colorspaces instead |
| required ICCColorSpace color_space = 33; |
| // repeated Tag tags = 33; |
| } |
| |
| message ICCColorSpace { |
| oneof color_space { |
| ICCXYZ xyz = 1; |
| ICCGray gray = 2; |
| } |
| // Default. |
| required ICCA2B0 a2b0 = 3; |
| } |
| |
| message ICCXYZ {} |
| |
| message ICCGray {} |
| |
| message ICCA2B0 { |
| oneof type { |
| ICCA2B0Lut8 lut8 = 1; |
| ICCA2B0Lut16 lut16 = 2; |
| } |
| // Default. |
| required ICCA2B0AToB atob = 3; |
| } |
| |
| enum Ignored { VALUE = 0; } |
| |
| enum UInt8 { |
| VAL0 = 0; |
| VAL1 = 1; |
| VAL2 = 2; |
| VAL3 = 3; |
| VAL4 = 4; |
| VAL5 = 5; |
| VAL6 = 6; |
| VAL7 = 7; |
| VAL8 = 8; |
| VAL9 = 9; |
| VAL10 = 10; |
| VAL11 = 11; |
| VAL12 = 12; |
| VAL13 = 13; |
| VAL14 = 14; |
| VAL15 = 15; |
| VAL16 = 16; |
| VAL17 = 17; |
| VAL18 = 18; |
| VAL19 = 19; |
| VAL20 = 20; |
| VAL21 = 21; |
| VAL22 = 22; |
| VAL23 = 23; |
| VAL24 = 24; |
| VAL25 = 25; |
| VAL26 = 26; |
| VAL27 = 27; |
| VAL28 = 28; |
| VAL29 = 29; |
| VAL30 = 30; |
| VAL31 = 31; |
| VAL32 = 32; |
| VAL33 = 33; |
| VAL34 = 34; |
| VAL35 = 35; |
| VAL36 = 36; |
| VAL37 = 37; |
| VAL38 = 38; |
| VAL39 = 39; |
| VAL40 = 40; |
| VAL41 = 41; |
| VAL42 = 42; |
| VAL43 = 43; |
| VAL44 = 44; |
| VAL45 = 45; |
| VAL46 = 46; |
| VAL47 = 47; |
| VAL48 = 48; |
| VAL49 = 49; |
| VAL50 = 50; |
| VAL51 = 51; |
| VAL52 = 52; |
| VAL53 = 53; |
| VAL54 = 54; |
| VAL55 = 55; |
| VAL56 = 56; |
| VAL57 = 57; |
| VAL58 = 58; |
| VAL59 = 59; |
| VAL60 = 60; |
| VAL61 = 61; |
| VAL62 = 62; |
| VAL63 = 63; |
| VAL64 = 64; |
| VAL65 = 65; |
| VAL66 = 66; |
| VAL67 = 67; |
| VAL68 = 68; |
| VAL69 = 69; |
| VAL70 = 70; |
| VAL71 = 71; |
| VAL72 = 72; |
| VAL73 = 73; |
| VAL74 = 74; |
| VAL75 = 75; |
| VAL76 = 76; |
| VAL77 = 77; |
| VAL78 = 78; |
| VAL79 = 79; |
| VAL80 = 80; |
| VAL81 = 81; |
| VAL82 = 82; |
| VAL83 = 83; |
| VAL84 = 84; |
| VAL85 = 85; |
| VAL86 = 86; |
| VAL87 = 87; |
| VAL88 = 88; |
| VAL89 = 89; |
| VAL90 = 90; |
| VAL91 = 91; |
| VAL92 = 92; |
| VAL93 = 93; |
| VAL94 = 94; |
| VAL95 = 95; |
| VAL96 = 96; |
| VAL97 = 97; |
| VAL98 = 98; |
| VAL99 = 99; |
| VAL100 = 100; |
| VAL101 = 101; |
| VAL102 = 102; |
| VAL103 = 103; |
| VAL104 = 104; |
| VAL105 = 105; |
| VAL106 = 106; |
| VAL107 = 107; |
| VAL108 = 108; |
| VAL109 = 109; |
| VAL110 = 110; |
| VAL111 = 111; |
| VAL112 = 112; |
| VAL113 = 113; |
| VAL114 = 114; |
| VAL115 = 115; |
| VAL116 = 116; |
| VAL117 = 117; |
| VAL118 = 118; |
| VAL119 = 119; |
| VAL120 = 120; |
| VAL121 = 121; |
| VAL122 = 122; |
| VAL123 = 123; |
| VAL124 = 124; |
| VAL125 = 125; |
| VAL126 = 126; |
| VAL127 = 127; |
| VAL128 = 128; |
| VAL129 = 129; |
| VAL130 = 130; |
| VAL131 = 131; |
| VAL132 = 132; |
| VAL133 = 133; |
| VAL134 = 134; |
| VAL135 = 135; |
| VAL136 = 136; |
| VAL137 = 137; |
| VAL138 = 138; |
| VAL139 = 139; |
| VAL140 = 140; |
| VAL141 = 141; |
| VAL142 = 142; |
| VAL143 = 143; |
| VAL144 = 144; |
| VAL145 = 145; |
| VAL146 = 146; |
| VAL147 = 147; |
| VAL148 = 148; |
| VAL149 = 149; |
| VAL150 = 150; |
| VAL151 = 151; |
| VAL152 = 152; |
| VAL153 = 153; |
| VAL154 = 154; |
| VAL155 = 155; |
| VAL156 = 156; |
| VAL157 = 157; |
| VAL158 = 158; |
| VAL159 = 159; |
| VAL160 = 160; |
| VAL161 = 161; |
| VAL162 = 162; |
| VAL163 = 163; |
| VAL164 = 164; |
| VAL165 = 165; |
| VAL166 = 166; |
| VAL167 = 167; |
| VAL168 = 168; |
| VAL169 = 169; |
| VAL170 = 170; |
| VAL171 = 171; |
| VAL172 = 172; |
| VAL173 = 173; |
| VAL174 = 174; |
| VAL175 = 175; |
| VAL176 = 176; |
| VAL177 = 177; |
| VAL178 = 178; |
| VAL179 = 179; |
| VAL180 = 180; |
| VAL181 = 181; |
| VAL182 = 182; |
| VAL183 = 183; |
| VAL184 = 184; |
| VAL185 = 185; |
| VAL186 = 186; |
| VAL187 = 187; |
| VAL188 = 188; |
| VAL189 = 189; |
| VAL190 = 190; |
| VAL191 = 191; |
| VAL192 = 192; |
| VAL193 = 193; |
| VAL194 = 194; |
| VAL195 = 195; |
| VAL196 = 196; |
| VAL197 = 197; |
| VAL198 = 198; |
| VAL199 = 199; |
| VAL200 = 200; |
| VAL201 = 201; |
| VAL202 = 202; |
| VAL203 = 203; |
| VAL204 = 204; |
| VAL205 = 205; |
| VAL206 = 206; |
| VAL207 = 207; |
| VAL208 = 208; |
| VAL209 = 209; |
| VAL210 = 210; |
| VAL211 = 211; |
| VAL212 = 212; |
| VAL213 = 213; |
| VAL214 = 214; |
| VAL215 = 215; |
| VAL216 = 216; |
| VAL217 = 217; |
| VAL218 = 218; |
| VAL219 = 219; |
| VAL220 = 220; |
| VAL221 = 221; |
| VAL222 = 222; |
| VAL223 = 223; |
| VAL224 = 224; |
| VAL225 = 225; |
| VAL226 = 226; |
| VAL227 = 227; |
| VAL228 = 228; |
| VAL229 = 229; |
| VAL230 = 230; |
| VAL231 = 231; |
| VAL232 = 232; |
| VAL233 = 233; |
| VAL234 = 234; |
| VAL235 = 235; |
| VAL236 = 236; |
| VAL237 = 237; |
| VAL238 = 238; |
| VAL239 = 239; |
| VAL240 = 240; |
| VAL241 = 241; |
| VAL242 = 242; |
| VAL243 = 243; |
| VAL244 = 244; |
| VAL245 = 245; |
| VAL246 = 246; |
| VAL247 = 247; |
| VAL248 = 248; |
| VAL249 = 249; |
| VAL250 = 250; |
| VAL251 = 251; |
| VAL252 = 252; |
| VAL253 = 253; |
| VAL254 = 254; |
| VAL255 = 255; |
| } |
| |
| enum InputChannels { |
| ONE = 1; |
| TWO = 2; |
| THREE = 3; |
| } |
| |
| enum OutputChannels { |
| // Can't be named THREE or else it will conflict with THREE in InputChannels. |
| // It doesn't matter, since we only use the numeric value on the converter |
| // side. |
| _THREE = 3; |
| } |
| |
| message ICCA2B0AToB { |
| required InputChannels input_channels = 1; |
| required OutputChannels output_channels = 2; // Must be 3 |
| } |
| |
| message ICCA2B0Lut16 { |
| required ICCA2B0Lut8 lut8 = 1; |
| |
| // TODO(metzman): allow these to be specified rather than generated. |
| // required uint32 in_table_entries = 2; // uint16_t |
| // required uint32 out_table_entries = 3; // uint16_t |
| required uint64 in_table_seed = 4; |
| required uint64 out_table_seed = 5; |
| } |
| |
| message ICCA2B0Lut8 { |
| required Ignored ignored_byte_4 = 1; |
| required Ignored ignored_byte_5 = 2; |
| required Ignored ignored_byte_6 = 3; |
| required Ignored ignored_byte_7 = 4; |
| // Needs to agree with output_channels |
| required OutputChannels input_channels = 5; |
| required OutputChannels output_channels = 6; // Must be 3 |
| required UInt8 clut_grid_points = 7; |
| required Ignored ignored_byte_11 = 8; |
| required Matrix matrix = 9; |
| required OneChannelGammas input_gammas_1 = 10; |
| required OneChannelGammas input_gammas_2 = 11; |
| required OneChannelGammas input_gammas_3 = 12; |
| required uint64 clut_bytes_seed = 13; |
| required OutputGammas output_gammas = 14; |
| } |
| |
| message OneChannelGammas { |
| required int32 bytes_0_3 = 1; |
| required int32 bytes_4_7 = 2; |
| required int32 bytes_8_11 = 3; |
| required int32 bytes_12_15 = 4; |
| required int32 bytes_16_19 = 5; |
| required int32 bytes_20_23 = 6; |
| required int32 bytes_24_27 = 7; |
| required int32 bytes_28_31 = 8; |
| required int32 bytes_32_35 = 9; |
| required int32 bytes_36_39 = 10; |
| required int32 bytes_40_43 = 11; |
| required int32 bytes_44_47 = 12; |
| required int32 bytes_48_51 = 13; |
| required int32 bytes_52_55 = 14; |
| required int32 bytes_56_59 = 15; |
| required int32 bytes_60_63 = 16; |
| required int32 bytes_64_67 = 17; |
| required int32 bytes_68_71 = 18; |
| required int32 bytes_72_75 = 19; |
| required int32 bytes_76_79 = 20; |
| required int32 bytes_80_83 = 21; |
| required int32 bytes_84_87 = 22; |
| required int32 bytes_88_91 = 23; |
| required int32 bytes_92_95 = 24; |
| required int32 bytes_96_99 = 25; |
| required int32 bytes_100_103 = 26; |
| required int32 bytes_104_107 = 27; |
| required int32 bytes_108_111 = 28; |
| required int32 bytes_112_115 = 29; |
| required int32 bytes_116_119 = 30; |
| required int32 bytes_120_123 = 31; |
| required int32 bytes_124_127 = 32; |
| required int32 bytes_128_131 = 33; |
| required int32 bytes_132_135 = 34; |
| required int32 bytes_136_139 = 35; |
| required int32 bytes_140_143 = 36; |
| required int32 bytes_144_147 = 37; |
| required int32 bytes_148_151 = 38; |
| required int32 bytes_152_155 = 39; |
| required int32 bytes_156_159 = 40; |
| required int32 bytes_160_163 = 41; |
| required int32 bytes_164_167 = 42; |
| required int32 bytes_168_171 = 43; |
| required int32 bytes_172_175 = 44; |
| required int32 bytes_176_179 = 45; |
| required int32 bytes_180_183 = 46; |
| required int32 bytes_184_187 = 47; |
| required int32 bytes_188_191 = 48; |
| required int32 bytes_192_195 = 49; |
| required int32 bytes_196_199 = 50; |
| required int32 bytes_200_203 = 51; |
| required int32 bytes_204_207 = 52; |
| required int32 bytes_208_211 = 53; |
| required int32 bytes_212_215 = 54; |
| required int32 bytes_216_219 = 55; |
| required int32 bytes_220_223 = 56; |
| required int32 bytes_224_227 = 57; |
| required int32 bytes_228_231 = 58; |
| required int32 bytes_232_235 = 59; |
| required int32 bytes_236_239 = 60; |
| required int32 bytes_240_243 = 61; |
| required int32 bytes_244_247 = 62; |
| required int32 bytes_248_251 = 63; |
| required int32 bytes_252_255 = 64; |
| } |
| |
| // Since output gammas are 3 times the size of input gammas, make |
| message OutputGammas { |
| required OneChannelGammas bytes_0_255 = 1; |
| required OneChannelGammas bytes_255_511 = 2; |
| required OneChannelGammas bytes_512_768 = 3; |
| } |