tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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