WebRenderTypes.cpp (3309B)
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/. */ 6 7 #include "WebRenderTypes.h" 8 9 #include "mozilla/ipc/ByteBuf.h" 10 #include "nsStyleConsts.h" 11 12 namespace mozilla { 13 namespace wr { 14 15 WindowId NewWindowId() { 16 static uint64_t sNextId = 1; 17 18 WindowId id; 19 id.mHandle = sNextId++; 20 return id; 21 } 22 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; 45 } 46 return wr::BorderStyle::None; 47 } 48 49 wr::RepeatMode ToRepeatMode(StyleBorderImageRepeatKeyword aRepeat) { 50 switch (aRepeat) { 51 case StyleBorderImageRepeatKeyword::Stretch: 52 return wr::RepeatMode::Stretch; 53 case StyleBorderImageRepeatKeyword::Repeat: 54 return wr::RepeatMode::Repeat; 55 case StyleBorderImageRepeatKeyword::Round: 56 return wr::RepeatMode::Round; 57 case StyleBorderImageRepeatKeyword::Space: 58 return wr::RepeatMode::Space; 59 default: 60 MOZ_ASSERT(false); 61 } 62 63 return wr::RepeatMode::Stretch; 64 } 65 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; 80 } 81 return wr::ImageRendering::Auto; 82 } 83 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; 91 } 92 93 WrSpatialId RootScrollNode() { return wr_root_scroll_node_id(); } 94 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; 100 } 101 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; 107 } 108 109 } // namespace wr 110 } // namespace mozilla