Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(209)

Side by Side Diff: mojo/services/public/interfaces/surfaces/quads.mojom

Issue 342543002: Mojom interface for Surfaces service (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698