Update configs. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release ba=release
[gecko.git] / gfx / webrender_bindings / WebRenderTypes.cpp
blob3fa81d2a81a3918338a337ce6d58bb73e79ba307
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #include "WebRenderTypes.h"
9 #include "mozilla/ipc/ByteBuf.h"
10 #include "nsStyleConsts.h"
12 namespace mozilla {
13 namespace wr {
15 WindowId NewWindowId() {
16 static uint64_t sNextId = 1;
18 WindowId id;
19 id.mHandle = sNextId++;
20 return id;
23 BorderStyle ToBorderStyle(StyleBorderStyle aStyle) {
24 switch (aStyle) {
25 case StyleBorderStyle::None:
26 return wr::BorderStyle::None;
27 case StyleBorderStyle::Solid:
28 return wr::BorderStyle::Solid;
29 case StyleBorderStyle::Double:
30 return wr::BorderStyle::Double;
31 case StyleBorderStyle::Dotted:
32 return wr::BorderStyle::Dotted;
33 case StyleBorderStyle::Dashed:
34 return wr::BorderStyle::Dashed;
35 case StyleBorderStyle::Hidden:
36 return wr::BorderStyle::Hidden;
37 case StyleBorderStyle::Groove:
38 return wr::BorderStyle::Groove;
39 case StyleBorderStyle::Ridge:
40 return wr::BorderStyle::Ridge;
41 case StyleBorderStyle::Inset:
42 return wr::BorderStyle::Inset;
43 case StyleBorderStyle::Outset:
44 return wr::BorderStyle::Outset;
46 return wr::BorderStyle::None;
49 wr::RepeatMode ToRepeatMode(StyleBorderImageRepeat aRepeat) {
50 switch (aRepeat) {
51 case StyleBorderImageRepeat::Stretch:
52 return wr::RepeatMode::Stretch;
53 case StyleBorderImageRepeat::Repeat:
54 return wr::RepeatMode::Repeat;
55 case StyleBorderImageRepeat::Round:
56 return wr::RepeatMode::Round;
57 case StyleBorderImageRepeat::Space:
58 return wr::RepeatMode::Space;
59 default:
60 MOZ_ASSERT(false);
63 return wr::RepeatMode::Stretch;
66 ImageRendering ToImageRendering(StyleImageRendering aImageRendering) {
67 switch (aImageRendering) {
68 case StyleImageRendering::Auto:
69 case StyleImageRendering::Smooth:
70 case StyleImageRendering::Optimizequality:
71 return wr::ImageRendering::Auto;
72 case StyleImageRendering::CrispEdges:
73 // FIXME(bug 1728831): Historically we've returned Pixelated here, but
74 // this should arguably pass CrispEdges to WebRender?
75 // return wr::ImageRendering::CrispEdges;
76 [[fallthrough]];
77 case StyleImageRendering::Optimizespeed:
78 case StyleImageRendering::Pixelated:
79 return wr::ImageRendering::Pixelated;
81 return wr::ImageRendering::Auto;
84 void Assign_WrVecU8(wr::WrVecU8& aVec, mozilla::ipc::ByteBuf&& aOther) {
85 aVec.data = aOther.mData;
86 aVec.length = aOther.mLen;
87 aVec.capacity = aOther.mCapacity;
88 aOther.mData = nullptr;
89 aOther.mLen = 0;
90 aOther.mCapacity = 0;
93 WrSpatialId RootScrollNode() { return wr_root_scroll_node_id(); }
95 WrSpaceAndClipChain RootScrollNodeWithChain() {
96 WrSpaceAndClipChain sacc;
97 sacc.clip_chain = wr::ROOT_CLIP_CHAIN;
98 sacc.space = wr_root_scroll_node_id();
99 return sacc;
102 WrSpaceAndClipChain InvalidScrollNodeWithChain() {
103 WrSpaceAndClipChain sacc;
104 sacc.clip_chain = std::numeric_limits<uint64_t>::max();
105 sacc.space = wr_root_scroll_node_id();
106 return sacc;
109 } // namespace wr
110 } // namespace mozilla