OLD | NEW |
(Empty) | |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 import "../geometry/geometry.mojom" |
| 6 import "surface_id.mojom" |
| 7 |
| 8 module mojo.surfaces { |
| 9 |
| 10 struct Color { |
| 11 uint32 rgba; |
| 12 }; |
| 13 |
| 14 // TODO(jamesr): Populate subtype fields. |
| 15 struct CheckerboardQuadState {}; |
| 16 |
| 17 struct DebugBorderQuadState {}; |
| 18 |
| 19 struct IoSurfaceContentQuadState {}; |
| 20 |
| 21 struct RenderPassQuadState {}; |
| 22 |
| 23 struct SolidColorQuadState { |
| 24 Color color; |
| 25 }; |
| 26 |
| 27 struct SurfaceQuadState { |
| 28 SurfaceId surface; |
| 29 }; |
| 30 |
| 31 struct TextureQuadState { |
| 32 uint32 resource_id; |
| 33 bool premultiplied_alpha; |
| 34 mojo.PointF uv_top_left; |
| 35 mojo.PointF uv_bottom_right; |
| 36 Color background_color; |
| 37 // Should have exactly 4 entries. |
| 38 float[] vertex_opacity; |
| 39 bool flipped; |
| 40 }; |
| 41 |
| 42 struct TiledContentQuadState {}; |
| 43 |
| 44 struct StreamVideoQuadState {}; |
| 45 |
| 46 struct YUVVideoQuadState {}; |
| 47 |
| 48 enum Material { |
| 49 CHECKERBOARD = 1, |
| 50 DEBUG_BORDER, |
| 51 IO_SURFACE_CONTENT, |
| 52 RENDER_PASS, |
| 53 SOLID_COLOR, |
| 54 STREAM_VIDEO_CONTENT, |
| 55 SURFACE_CONTENT, |
| 56 TEXTURE_CONTENT, |
| 57 TILED_CONTENT, |
| 58 YUV_VIDEO_CONTENT, |
| 59 }; |
| 60 |
| 61 struct Quad { |
| 62 Material material; |
| 63 |
| 64 // This rect, after applying the quad_transform(), gives the geometry that |
| 65 // this quad should draw to. This rect lives in content space. |
| 66 mojo.Rect rect; |
| 67 |
| 68 // This specifies the region of the quad that is opaque. This rect lives in |
| 69 // content space. |
| 70 mojo.Rect opaque_rect; |
| 71 |
| 72 // Allows changing the rect that gets drawn to make it smaller. This value |
| 73 // should be clipped to |rect|. This rect lives in content space. |
| 74 mojo.Rect visible_rect; |
| 75 |
| 76 // Allows changing the rect that gets drawn to make it smaller. This value |
| 77 // should be clipped to |rect|. This rect lives in content space. |
| 78 bool needs_blending; |
| 79 |
| 80 // Index into the containing pass' shared quad state array which has state |
| 81 // (transforms etc) shared by multiple quads. |
| 82 int32 shared_quad_state_index; |
| 83 |
| 84 // Only one of the following will be set, depending on the material. |
| 85 CheckerboardQuadState checkerboard_quad_state; |
| 86 DebugBorderQuadState debug_border_quad_state; |
| 87 IoSurfaceContentQuadState io_surface_quad_state; |
| 88 RenderPassQuadState render_pass_quad_state; |
| 89 SolidColorQuadState solid_color_quad_state; |
| 90 SurfaceQuadState surface_quad_state; |
| 91 TextureQuadState texture_quad_state; |
| 92 TiledContentQuadState tiled_content_quad_state; |
| 93 StreamVideoQuadState stream_video_quad_state; |
| 94 YUVVideoQuadState yuv_video_quad_state; |
| 95 }; |
| 96 |
| 97 enum SkXfermode { |
| 98 kClear_Mode = 0, //!< [0, 0] |
| 99 kSrc_Mode, //!< [Sa, Sc] |
| 100 kDst_Mode, //!< [Da, Dc] |
| 101 kSrcOver_Mode, //!< [Sa + Da - Sa*Da, Rc = Sc + (1 - Sa)*Dc] |
| 102 kDstOver_Mode, //!< [Sa + Da - Sa*Da, Rc = Dc + (1 - Da)*Sc] |
| 103 kSrcIn_Mode, //!< [Sa * Da, Sc * Da] |
| 104 kDstIn_Mode, //!< [Sa * Da, Sa * Dc] |
| 105 kSrcOut_Mode, //!< [Sa * (1 - Da), Sc * (1 - Da)] |
| 106 kDstOut_Mode, //!< [Da * (1 - Sa), Dc * (1 - Sa)] |
| 107 kSrcATop_Mode, //!< [Da, Sc * Da + (1 - Sa) * Dc] |
| 108 kDstATop_Mode, //!< [Sa, Sa * Dc + Sc * (1 - Da)] |
| 109 kXor_Mode, //!< [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc] |
| 110 kPlus_Mode, //!< [Sa + Da, Sc + Dc] |
| 111 kModulate_Mode, // multiplies all components (= alpha and color) |
| 112 |
| 113 // Following blend modes are defined in the CSS Compositing standard: |
| 114 // https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html#blending |
| 115 kScreen_Mode, |
| 116 kLastCoeffMode = kScreen_Mode, |
| 117 |
| 118 kOverlay_Mode, |
| 119 kDarken_Mode, |
| 120 kLighten_Mode, |
| 121 kColorDodge_Mode, |
| 122 kColorBurn_Mode, |
| 123 kHardLight_Mode, |
| 124 kSoftLight_Mode, |
| 125 kDifference_Mode, |
| 126 kExclusion_Mode, |
| 127 kMultiply_Mode, |
| 128 kLastSeparableMode = kMultiply_Mode, |
| 129 |
| 130 kHue_Mode, |
| 131 kSaturation_Mode, |
| 132 kColor_Mode, |
| 133 kLuminosity_Mode, |
| 134 kLastMode = kLuminosity_Mode |
| 135 }; |
| 136 |
| 137 struct SharedQuadState { |
| 138 // Transforms from quad's original content space to its target content space. |
| 139 mojo.Transform content_to_target_transform; |
| 140 |
| 141 // This size lives in the content space for the quad's originating layer. |
| 142 mojo.Size content_bounds; |
| 143 |
| 144 // This rect lives in the content space for the quad's originating layer. |
| 145 mojo.Rect visible_content_rect; |
| 146 |
| 147 // This rect lives in the target content space. |
| 148 mojo.Rect clip_rect; |
| 149 |
| 150 bool is_clipped; |
| 151 float opacity; |
| 152 SkXfermode blend_mode; |
| 153 }; |
| 154 |
| 155 struct Pass { |
| 156 int32 id; |
| 157 mojo.Rect output_rect; |
| 158 mojo.Rect damage_rect; |
| 159 mojo.Transform transform_to_root_target; |
| 160 bool has_transparent_pixels; |
| 161 Quad[] quads; |
| 162 SharedQuadState[] shared_quad_states; |
| 163 }; |
| 164 |
| 165 } |
OLD | NEW |