tor-browser

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

nsDisplayListInvalidation.cpp (4602B)


      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 "nsDisplayListInvalidation.h"
      8 
      9 #include "nsDisplayList.h"
     10 #include "nsIFrame.h"
     11 #include "nsTableFrame.h"
     12 
     13 namespace mozilla {
     14 
     15 nsDisplayItemGeometry::nsDisplayItemGeometry(nsDisplayItem* aItem,
     16                                             nsDisplayListBuilder* aBuilder) {
     17  MOZ_COUNT_CTOR(nsDisplayItemGeometry);
     18  bool snap;
     19  mBounds = aItem->GetBounds(aBuilder, &snap);
     20 }
     21 
     22 nsDisplayItemGeometry::~nsDisplayItemGeometry() {
     23  MOZ_COUNT_DTOR(nsDisplayItemGeometry);
     24 }
     25 
     26 nsDisplayItemGenericGeometry::nsDisplayItemGenericGeometry(
     27    nsDisplayItem* aItem, nsDisplayListBuilder* aBuilder)
     28    : nsDisplayItemGeometry(aItem, aBuilder),
     29      mBorderRect(aItem->GetBorderRect()) {}
     30 
     31 bool ShouldSyncDecodeImages(nsDisplayListBuilder* aBuilder) {
     32  return aBuilder->ShouldSyncDecodeImages();
     33 }
     34 
     35 nsDisplayItemGeometry* GetPreviousGeometry(nsDisplayItem* aItem) {
     36  if (RefPtr<layers::WebRenderFallbackData> data =
     37          layers::GetWebRenderUserData<layers::WebRenderFallbackData>(
     38              aItem->Frame(), aItem->GetPerFrameKey())) {
     39    return data->GetGeometry();
     40  }
     41  return nullptr;
     42 }
     43 
     44 void nsDisplayItemGenericGeometry::MoveBy(const nsPoint& aOffset) {
     45  nsDisplayItemGeometry::MoveBy(aOffset);
     46  mBorderRect.MoveBy(aOffset);
     47 }
     48 
     49 nsDisplayItemBoundsGeometry::nsDisplayItemBoundsGeometry(
     50    nsDisplayItem* aItem, nsDisplayListBuilder* aBuilder)
     51    : nsDisplayItemGeometry(aItem, aBuilder) {
     52  nsRectCornerRadii radii;
     53  mHasRoundedCorners = aItem->Frame()->GetBorderRadii(radii);
     54 }
     55 
     56 nsDisplayBorderGeometry::nsDisplayBorderGeometry(nsDisplayItem* aItem,
     57                                                 nsDisplayListBuilder* aBuilder)
     58    : nsDisplayItemGeometry(aItem, aBuilder) {}
     59 
     60 nsDisplayBackgroundGeometry::nsDisplayBackgroundGeometry(
     61    nsDisplayBackgroundImage* aItem, nsDisplayListBuilder* aBuilder)
     62    : nsDisplayItemGeometry(aItem, aBuilder),
     63      mPositioningArea(aItem->GetPositioningArea()),
     64      mDestRect(aItem->GetDestRect()) {}
     65 
     66 void nsDisplayBackgroundGeometry::MoveBy(const nsPoint& aOffset) {
     67  nsDisplayItemGeometry::MoveBy(aOffset);
     68  mPositioningArea.MoveBy(aOffset);
     69  mDestRect.MoveBy(aOffset);
     70 }
     71 
     72 nsDisplayThemedBackgroundGeometry::nsDisplayThemedBackgroundGeometry(
     73    nsDisplayThemedBackground* aItem, nsDisplayListBuilder* aBuilder)
     74    : nsDisplayItemGeometry(aItem, aBuilder),
     75      mPositioningArea(aItem->GetPositioningArea()),
     76      mWindowIsActive(aItem->IsWindowActive()) {}
     77 
     78 void nsDisplayThemedBackgroundGeometry::MoveBy(const nsPoint& aOffset) {
     79  nsDisplayItemGeometry::MoveBy(aOffset);
     80  mPositioningArea.MoveBy(aOffset);
     81 }
     82 
     83 nsDisplayBoxShadowInnerGeometry::nsDisplayBoxShadowInnerGeometry(
     84    nsDisplayItem* aItem, nsDisplayListBuilder* aBuilder)
     85    : nsDisplayItemGeometry(aItem, aBuilder),
     86      mPaddingRect(aItem->GetPaddingRect()) {}
     87 
     88 void nsDisplayBoxShadowInnerGeometry::MoveBy(const nsPoint& aOffset) {
     89  nsDisplayItemGeometry::MoveBy(aOffset);
     90  mPaddingRect.MoveBy(aOffset);
     91 }
     92 
     93 void nsDisplaySolidColorRegionGeometry::MoveBy(const nsPoint& aOffset) {
     94  nsDisplayItemGeometry::MoveBy(aOffset);
     95  mRegion.MoveBy(aOffset);
     96 }
     97 
     98 nsDisplaySVGEffectGeometry::nsDisplaySVGEffectGeometry(
     99    nsDisplayEffectsBase* aItem, nsDisplayListBuilder* aBuilder)
    100    : nsDisplayItemGeometry(aItem, aBuilder),
    101      mBBox(aItem->BBoxInUserSpace()),
    102      mUserSpaceOffset(aItem->UserSpaceOffset()),
    103      mFrameOffsetToReferenceFrame(aItem->ToReferenceFrame()) {}
    104 
    105 void nsDisplaySVGEffectGeometry::MoveBy(const nsPoint& aOffset) {
    106  mBounds.MoveBy(aOffset);
    107  mFrameOffsetToReferenceFrame += aOffset;
    108 }
    109 
    110 nsDisplayMasksAndClipPathsGeometry::nsDisplayMasksAndClipPathsGeometry(
    111    nsDisplayMasksAndClipPaths* aItem, nsDisplayListBuilder* aBuilder)
    112    : nsDisplaySVGEffectGeometry(aItem, aBuilder),
    113      mDestRects(aItem->GetDestRects().Clone()) {}
    114 
    115 nsDisplayFiltersGeometry::nsDisplayFiltersGeometry(
    116    nsDisplayFilters* aItem, nsDisplayListBuilder* aBuilder)
    117    : nsDisplaySVGEffectGeometry(aItem, aBuilder) {}
    118 
    119 nsDisplayTableItemGeometry::nsDisplayTableItemGeometry(
    120    nsDisplayTableItem* aItem, nsDisplayListBuilder* aBuilder,
    121    const nsPoint& aFrameOffsetToViewport)
    122    : nsDisplayItemGenericGeometry(aItem, aBuilder),
    123      mFrameOffsetToViewport(aFrameOffsetToViewport) {}
    124 
    125 }  // namespace mozilla