Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/layout/painting/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 3 kB image not shown  

Quelle  ActiveLayerTracker.h   Sprache: C

 
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#ifndef ACTIVELAYERTRACKER_H_
#define ACTIVELAYERTRACKER_H_

#include "nsCSSPropertyID.h"

class nsIFrame;
class nsIContent;
class nsCSSPropertyIDSet;
class nsDOMCSSDeclaration;

namespace mozilla {

class nsDisplayListBuilder;

/**
 * This class receives various notifications about style changes and content
 * changes that affect layerization decisions, and implements the heuristics
 * that drive those decisions. It manages per-frame state to support those
 * heuristics.
 */

class ActiveLayerTracker {
 public:
  static void Shutdown();

  /*
   * We track style changes to selected styles:
   *   eCSSProperty_transform, eCSSProperty_translate,
   *   eCSSProperty_rotate, eCSSProperty_scale
   *   eCSSProperty_offset_path, eCSSProperty_offset_distance,
   *   eCSSProperty_offset_rotate, eCSSProperty_offset_anchor,
   *   eCSSProperty_offset_position, eCSSProperty_opacity
   * and use that information to guess whether style changes are animated.
   */


  /**
   * Notify aFrame's style property as having changed due to a restyle,
   * and therefore possibly wanting an active layer to render that style.
   * Any such marking will time out after a short period.
   * @param aProperty the property that has changed
   */

  static void NotifyRestyle(nsIFrame* aFrame, nsCSSPropertyID aProperty);

  /**
   * Notify that a property in the inline style rule of aFrame's element
   * has been modified.
   */

  static void NotifyInlineStyleRuleModified(nsIFrame* aFrame,
                                            nsCSSPropertyID aProperty);
  /**
   * Notify that a frame needs to be repainted. This is important for layering
   * decisions where, say, aFrame's transform is updated from JS, but we need
   * to repaint aFrame anyway, so we get no benefit from giving it its own
   * layer.
   */

  static void NotifyNeedsRepaint(nsIFrame* aFrame);
  /**
   * Return true if aFrame's property style in |aPropertySet| should be
   * considered as being animated for constructing active layers.
   */

  static bool IsStyleAnimated(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
                              const nsCSSPropertyIDSet& aPropertySet);
  /**
   * Return true if aFrame's transform-like property,
   * i.e. transform/translate/rotate/scale, is animated.
   */

  static bool IsTransformAnimated(nsDisplayListBuilder* aBuilder,
                                  nsIFrame* aFrame);
  /**
   * Return true if aFrame's transform style should be considered as being
   * animated for pre-rendering.
   */

  static bool IsTransformMaybeAnimated(nsIFrame* aFrame);
  /**
   * Return true if aFrame either has an animated scale now, or is likely to
   * have one in the future because it has a CSS animation or transition
   * (which may not be playing right now) that affects its scale.
   */

  static bool IsScaleSubjectToAnimation(nsIFrame* aFrame);

  /**
   * Transfer the LayerActivity property to the frame's content node when the
   * frame is about to be destroyed so that layer activity can be tracked
   * throughout reframes of an element. Only call this when aFrame is the
   * primary frame of aContent.
   */

  static void TransferActivityToContent(nsIFrame* aFrame, nsIContent* aContent);
  /**
   * Transfer the LayerActivity property back to the content node's primary
   * frame after the frame has been created.
   */

  static void TransferActivityToFrame(nsIContent* aContent, nsIFrame* aFrame);
};

}  // namespace mozilla

#endif /* ACTIVELAYERTRACKER_H_ */

Messung V0.5
C=92 H=98 G=94

¤ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.