diff -r 000000000000 -r 6474c204b198 layout/generic/nsHTMLParts.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/layout/generic/nsHTMLParts.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,200 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* 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/. */ + +/* factory functions for rendering object classes */ + +#ifndef nsHTMLParts_h___ +#define nsHTMLParts_h___ + +#include "nscore.h" +#include "nsISupports.h" +#include "nsIFrame.h" +class nsIAtom; +class nsNodeInfoManager; +class nsIContent; +class nsIContentIterator; +class nsIDocument; +class nsIFrame; +class nsIHTMLContentSink; +class nsIFragmentContentSink; +class nsStyleContext; +class nsIURI; +class nsString; +class nsIPresShell; +class nsIChannel; +class nsTableColFrame; + +// These are all the block specific frame bits, they are copied from +// the prev-in-flow to a newly created next-in-flow, except for the +// NS_BLOCK_FLAGS_NON_INHERITED_MASK bits below. +#define NS_BLOCK_FLAGS_MASK (NS_BLOCK_MARGIN_ROOT | \ + NS_BLOCK_FLOAT_MGR | \ + NS_BLOCK_CLIP_PAGINATED_OVERFLOW | \ + NS_BLOCK_HAS_FIRST_LETTER_STYLE | \ + NS_BLOCK_FRAME_HAS_OUTSIDE_BULLET | \ + NS_BLOCK_HAS_FIRST_LETTER_CHILD | \ + NS_BLOCK_FRAME_HAS_INSIDE_BULLET) + +// This is the subset of NS_BLOCK_FLAGS_MASK that is NOT inherited +// by default. They should only be set on the first-in-flow. +// See nsBlockFrame::Init. +#define NS_BLOCK_FLAGS_NON_INHERITED_MASK \ + (NS_BLOCK_FRAME_HAS_OUTSIDE_BULLET | \ + NS_BLOCK_HAS_FIRST_LETTER_CHILD | \ + NS_BLOCK_FRAME_HAS_INSIDE_BULLET) + +// Factory methods for creating html layout objects + +// Create a frame that supports "display: block" layout behavior +nsIFrame* +NS_NewBlockFrame(nsIPresShell* aPresShell, nsStyleContext* aContext, nsFrameState aFlags = nsFrameState(0)); + +// Special Generated Content Node. It contains text taken from an +// attribute of its *grandparent* content node. +nsresult +NS_NewAttributeContent(nsNodeInfoManager *aNodeInfoManager, + int32_t aNameSpaceID, nsIAtom* aAttrName, + nsIContent** aResult); + +// Create a basic area frame but the GetFrameForPoint is overridden to always +// return the option frame +// By default, area frames will extend +// their height to cover any children that "stick out". +nsIFrame* +NS_NewSelectsAreaFrame(nsIPresShell* aPresShell, nsStyleContext* aContext, nsFrameState aFlags); + +// Create a block formatting context blockframe +inline nsIFrame* NS_NewBlockFormattingContext(nsIPresShell* aPresShell, + nsStyleContext* aStyleContext) +{ + return NS_NewBlockFrame(aPresShell, aStyleContext, + NS_BLOCK_FLOAT_MGR | NS_BLOCK_MARGIN_ROOT); +} + +nsIFrame* +NS_NewBRFrame(nsIPresShell* aPresShell, nsStyleContext* aContext); + +nsIFrame* +NS_NewCommentFrame(nsIPresShell* aPresShell, nsStyleContext* aContext); + +// and