// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef FragmentationContext_h
#define FragmentationContext_h

#include "core/CoreExport.h"
#include "platform/LayoutUnit.h"
#include "platform/geometry/LayoutSize.h"

namespace blink {

// A fragmentation context is either established by a multicol container, or by pages when
// printing. A fragmentation context consists of a series of fragmentainers. A fragmentainer is
// simply a column or page, depending on the type of fragmentation context. [1]
//
// A couple of methods here take a |blockOffset| parameter. This is the offset from the start of the
// fragmentation context, pretending that everything is laid out in one single strip (and not sliced
// into pages or columns). In multicol, this is referred to as the flow thread coordinate space.
//
// It should be noted that a multicol container may be nested inside another fragmentation context
// (another multicol container, or the pages when printing), although this class doesn't deal with
// that (it's internal to the multicol implementation).
//
// [1] http://www.w3.org/TR/css3-break/#fragmentation-model
class CORE_EXPORT FragmentationContext {
public:
    virtual ~FragmentationContext() { }

    // The height of the fragmentainers may depend on the total height of the contents (column
    // balancing), in which case false is returned if we haven't laid out yet. Otherwise, true is
    // returned.
    virtual bool isFragmentainerLogicalHeightKnown() = 0;

    // Return the height of the fragmentainer at the specified offset. The fragmentainer height
    // isn't necessarily uniform all across the fragmentation context.
    virtual LayoutUnit fragmentainerLogicalHeightAt(LayoutUnit blockOffset) = 0;

    // Return how much is left of the fragmentainer at the specified offset. Callers typically want
    // this information to decide whether some piece of content fits in this fragmentainer, or if it
    // has to push the content to the next fragmentainer.
    virtual LayoutUnit remainingLogicalHeightAt(LayoutUnit blockOffset) = 0;

    // Return the flow thread of the fragmentation context, if it is a multicol fragmentation
    // context. Since multicol containers may be nested inside other fragmentation contexts,
    // sometimes we need to know if it's a multicol container that we're dealing with.
    virtual class LayoutMultiColumnFlowThread* associatedFlowThread() { return nullptr; }
};

} // namespace blink

#endif // FragmentationContext_h
