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

Quelle  BasicTableLayoutStrategy.h   Sprache: C

 
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
// vim:cindent:ts=4:et:sw=4:
/* 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/. */


/*
 * Web-compatible algorithms that determine column and table isizes,
 * used for CSS2's 'table-layout: auto'.
 */


#ifndef BasicTableLayoutStrategy_h_
#define BasicTableLayoutStrategy_h_

#include "mozilla/Attributes.h"
#include "nsITableLayoutStrategy.h"

class nsTableFrame;

class BasicTableLayoutStrategy : public nsITableLayoutStrategy {
 public:
  explicit BasicTableLayoutStrategy(nsTableFrame* aTableFrame);
  virtual ~BasicTableLayoutStrategy();

  // nsITableLayoutStrategy implementation
  virtual nscoord GetMinISize(gfxContext* aRenderingContext) override;
  virtual nscoord GetPrefISize(gfxContext* aRenderingContext,
                               bool aComputingSize) override;
  virtual void MarkIntrinsicISizesDirty() override;
  virtual void ComputeColumnISizes(const ReflowInput& aReflowInput) override;

 private:
  // NOTE: Using prefix "BTLS" to avoid overlapping names with
  // the values of mozilla::IntrinsicISizeType.
  enum class BtlsISizeType : uint8_t { MinISize, PrefISize, FinalISize };

  // Compute intrinsic isize member variables on the columns.
  void ComputeColumnIntrinsicISizes(gfxContext* aRenderingContext);

  // Distribute a colspanning cell's percent isize (if any) to its columns.
  void DistributePctISizeToColumns(float aSpanPrefPct, int32_t aFirstCol,
                                   int32_t aColCount);

  // Distribute an isize of some BltsISizeType type to a set of columns.
  //  aISize: The amount of isize to be distributed
  //  aFirstCol: The index (in the table) of the first column to be
  //             considered for receiving isize
  //  aColCount: The number of consecutive columns (starting with aFirstCol)
  //             to be considered for receiving isize
  //  aISizeType: The type of isize being distributed.  (BTLS_MIN_ISIZE and
  //              BTLS_PREF_ISIZE are intended to be used for dividing up
  //              colspan's min & pref isize.  BTLS_FINAL_ISIZE is intended
  //              to be used for distributing the table's final isize across
  //              all its columns)
  //  aSpanHasSpecifiedISize: Should be true iff:
  //                           - We're distributing a colspanning cell's
  //                             pref or min isize to its columns
  //                           - The colspanning cell has a specified isize.
  void DistributeISizeToColumns(nscoord aISize, int32_t aFirstCol,
                                int32_t aColCount, BtlsISizeType aISizeType,
                                bool aSpanHasSpecifiedISize);

  // Compute the min and pref isizes of the table from the isize
  // variables on the columns.
  void ComputeIntrinsicISizes(gfxContext* aRenderingContext);

  nsTableFrame* mTableFrame;
  nscoord mMinISize;
  nscoord mPrefISize;
  nscoord mPrefISizePctExpand;
  nscoord mLastCalcISize;
};

#endif /* !defined(BasicTableLayoutStrategy_h_) */

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

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© 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.