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

Side by Side Diff: cc/ipc/shared_quad_state_struct_traits.h

Issue 2174843003: cc mojo: Use ArrayDataViews in RenderPasses (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix RenderPassId Created 4 years, 4 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
« no previous file with comments | « cc/ipc/shared_quad_state.mojom ('k') | cc/ipc/struct_traits_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CC_IPC_SHARED_QUAD_STATE_STRUCT_TRAITS_H_ 5 #ifndef CC_IPC_SHARED_QUAD_STATE_STRUCT_TRAITS_H_
6 #define CC_IPC_SHARED_QUAD_STATE_STRUCT_TRAITS_H_ 6 #define CC_IPC_SHARED_QUAD_STATE_STRUCT_TRAITS_H_
7 7
8 #include "cc/ipc/shared_quad_state.mojom.h" 8 #include "cc/ipc/shared_quad_state.mojom.h"
9 #include "cc/quads/shared_quad_state.h" 9 #include "cc/quads/shared_quad_state.h"
10 10
11 namespace mojo { 11 namespace mojo {
12 12
13 struct OptSharedQuadState {
14 const cc::SharedQuadState* sqs;
15 };
16
17 template <>
18 struct StructTraits<cc::mojom::SharedQuadState, OptSharedQuadState> {
19 static bool IsNull(const OptSharedQuadState& input) { return !input.sqs; }
20
21 static void SetToNull(OptSharedQuadState* output) { output->sqs = nullptr; }
22
23 static const gfx::Transform& quad_to_target_transform(
24 const OptSharedQuadState& input) {
25 return input.sqs->quad_to_target_transform;
26 }
27
28 static const gfx::Size& quad_layer_bounds(const OptSharedQuadState& input) {
29 return input.sqs->quad_layer_bounds;
30 }
31
32 static const gfx::Rect& visible_quad_layer_rect(
33 const OptSharedQuadState& input) {
34 return input.sqs->visible_quad_layer_rect;
35 }
36
37 static const gfx::Rect& clip_rect(const OptSharedQuadState& input) {
38 return input.sqs->clip_rect;
39 }
40
41 static bool is_clipped(const OptSharedQuadState& input) {
42 return input.sqs->is_clipped;
43 }
44
45 static float opacity(const OptSharedQuadState& input) {
46 return input.sqs->opacity;
47 }
48
49 static uint32_t blend_mode(const OptSharedQuadState& input) {
50 return input.sqs->blend_mode;
51 }
52
53 static int32_t sorting_context_id(const OptSharedQuadState& input) {
54 return input.sqs->sorting_context_id;
55 }
56 };
57
13 template <> 58 template <>
14 struct StructTraits<cc::mojom::SharedQuadState, cc::SharedQuadState> { 59 struct StructTraits<cc::mojom::SharedQuadState, cc::SharedQuadState> {
15 static const gfx::Transform& quad_to_target_transform( 60 static const gfx::Transform& quad_to_target_transform(
16 const cc::SharedQuadState& sqs) { 61 const cc::SharedQuadState& sqs) {
17 return sqs.quad_to_target_transform; 62 return sqs.quad_to_target_transform;
18 } 63 }
19 64
20 static const gfx::Size& quad_layer_bounds(const cc::SharedQuadState& sqs) { 65 static const gfx::Size& quad_layer_bounds(const cc::SharedQuadState& sqs) {
21 return sqs.quad_layer_bounds; 66 return sqs.quad_layer_bounds;
22 } 67 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 out->is_clipped = data.is_clipped(); 101 out->is_clipped = data.is_clipped();
57 out->opacity = data.opacity(); 102 out->opacity = data.opacity();
58 if (data.blend_mode() > SkXfermode::kLastMode) 103 if (data.blend_mode() > SkXfermode::kLastMode)
59 return false; 104 return false;
60 out->blend_mode = static_cast<SkXfermode::Mode>(data.blend_mode()); 105 out->blend_mode = static_cast<SkXfermode::Mode>(data.blend_mode());
61 out->sorting_context_id = data.sorting_context_id(); 106 out->sorting_context_id = data.sorting_context_id();
62 return true; 107 return true;
63 } 108 }
64 }; 109 };
65 110
66 struct SharedQuadStateListArray {
67 cc::SharedQuadStateList* list;
68 };
69
70 template <>
71 struct ArrayTraits<SharedQuadStateListArray> {
72 using Element = cc::SharedQuadState;
73 using Iterator = cc::SharedQuadStateList::Iterator;
74 using ConstIterator = cc::SharedQuadStateList::ConstIterator;
75
76 static ConstIterator GetBegin(const SharedQuadStateListArray& input) {
77 return input.list->begin();
78 }
79 static Iterator GetBegin(SharedQuadStateListArray& input) {
80 return input.list->begin();
81 }
82 static void AdvanceIterator(ConstIterator& iterator) { ++iterator; }
83 static void AdvanceIterator(Iterator& iterator) { ++iterator; }
84 static const Element& GetValue(ConstIterator& iterator) { return **iterator; }
85 static Element& GetValue(Iterator& iterator) { return **iterator; }
86 static size_t GetSize(const SharedQuadStateListArray& input) {
87 return input.list->size();
88 }
89 static bool Resize(SharedQuadStateListArray& input, size_t size) {
90 if (input.list->size() == size)
91 return true;
92 input.list->clear();
93 for (size_t i = 0; i < size; ++i)
94 input.list->AllocateAndConstruct<cc::SharedQuadState>();
95 return true;
96 }
97 };
98
99 template <>
100 struct StructTraits<cc::mojom::SharedQuadStateList, cc::SharedQuadStateList> {
101 static SharedQuadStateListArray shared_quad_states(
102 const cc::SharedQuadStateList& list) {
103 return {const_cast<cc::SharedQuadStateList*>(&list)};
104 }
105
106 static bool Read(cc::mojom::SharedQuadStateListDataView data,
107 cc::SharedQuadStateList* out) {
108 SharedQuadStateListArray sqs_array = {out};
109 return data.ReadSharedQuadStates(&sqs_array);
110 }
111 };
112
113 } // namespace mojo 111 } // namespace mojo
114 112
115 #endif // CC_IPC_SHARED_QUAD_STATE_STRUCT_TRAITS_H_ 113 #endif // CC_IPC_SHARED_QUAD_STATE_STRUCT_TRAITS_H_
OLDNEW
« no previous file with comments | « cc/ipc/shared_quad_state.mojom ('k') | cc/ipc/struct_traits_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698