Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  nsBlockReflowContext.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/. */


/* class that a parent frame uses to reflow a block frame */

#ifndef nsBlockReflowContext_h___
#define nsBlockReflowContext_h___

#include "mozilla/ReflowOutput.h"

class nsIFrame;
class nsLineBox;
class nsPresContext;
class nsReflowStatus;
namespace mozilla {
class BlockReflowState;
}  // namespace mozilla

/**
 * An encapsulation of the state and algorithm for reflowing block frames.
 */

class nsBlockReflowContext {
  using BlockReflowState = mozilla::BlockReflowState;
  using ReflowInput = mozilla::ReflowInput;
  using ReflowOutput = mozilla::ReflowOutput;

 public:
  nsBlockReflowContext(nsPresContext* aPresContext,
                       const ReflowInput& aParentRI);
  ~nsBlockReflowContext() = default;

  void ReflowBlock(const mozilla::LogicalRect& aSpace, bool aApplyBStartMargin,
                   mozilla::CollapsingMargin& aPrevMargin, nscoord aClearance,
                   nsLineBox* aLine, ReflowInput& aReflowInput,
                   nsReflowStatus& aReflowStatus, BlockReflowState& aState);

  bool PlaceBlock(const ReflowInput& aReflowInput, bool aForceFit,
                  nsLineBox* aLine,
                  mozilla::CollapsingMargin& aBEndMarginResult /* out */,
                  mozilla::OverflowAreas& aOverflowAreas,
                  const nsReflowStatus& aReflowStatus);

  mozilla::CollapsingMargin& GetCarriedOutBEndMargin() {
    return mMetrics.mCarriedOutBEndMargin;
  }

  const ReflowOutput& GetMetrics() const { return mMetrics; }

  /**
   * Computes the collapsed block-start margin (in the context's parent's
   * writing mode) for a block whose reflow input is in aRI.
   * The computed margin is added into aMargin, whose writing mode is the
   * parent's mode as found in mMetrics.GetWritingMode(); note this may not be
   * the block's own writing mode as found in aRI.
   * If aClearanceFrame is null then this is the first optimistic pass which
   * shall assume that no frames have clearance, and we clear the HasClearance
   * on all frames encountered.
   * If non-null, this is the second pass and the caller has decided
   * aClearanceFrame needs clearance (and we will therefore stop collapsing
   * there); also, this function is responsible for marking it with
   * SetHasClearance.
   * If in the optimistic pass any frame is encountered that might possibly
   * need clearance (i.e., if we really needed the optimism assumption) then
   * we set aMayNeedRetry to true.
   * We return true if we changed the clearance state of any line and marked it
   * dirty.
   */

  bool ComputeCollapsedBStartMargin(const ReflowInput& aRI,
                                    mozilla::CollapsingMargin* aMargin,
                                    nsIFrame* aClearanceFrame,
                                    bool* aMayNeedRetry,
                                    bool* aIsEmpty = nullptr);

 protected:
  nsPresContext* mPresContext;
  const ReflowInput& mOuterReflowInput;

  nsIFrame* mFrame;
  mozilla::LogicalRect mSpace;

  nscoord mICoord, mBCoord;
  nsSize mContainerSize;
  mozilla::WritingMode mWritingMode;
  ReflowOutput mMetrics;
  mozilla::CollapsingMargin mBStartMargin;
};

#endif /* nsBlockReflowContext_h___ */

Messung V0.5
C=90 H=96 G=93

¤ Dauer der Verarbeitung: 0.20 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge