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"
15 WindowId
NewWindowId() {
16 static uint64_t sNextId
= 1;
19 id
.mHandle
= sNextId
++;
23 BorderStyle
ToBorderStyle(StyleBorderStyle 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
) {
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
;
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;
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;
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();
102 WrSpaceAndClipChain
InvalidScrollNodeWithChain() {
103 WrSpaceAndClipChain sacc
;
104 sacc
.clip_chain
= std::numeric_limits
<uint64_t>::max();
105 sacc
.space
= wr_root_scroll_node_id();
110 } // namespace mozilla