15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *           (C) 2000 Antti Koivisto (koivisto@kde.org)
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *           (C) 2000 Dirk Mueller (mueller@kde.org)
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *           (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2009 Google Inc. All rights reserved.
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is free software; you can redistribute it and/or
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modify it under the terms of the GNU Library General Public
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * License as published by the Free Software Foundation; either
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * version 2 of the License, or (at your option) any later version.
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is distributed in the hope that it will be useful,
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Library General Public License for more details.
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * You should have received a copy of the GNU Library General Public License
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * along with this library; see the file COPYING.LIB.  If not, write to
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Boston, MA 02110-1301, USA.
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef PaintPhase_h
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PaintPhase_h
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WebCore {
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *  The painting of a layer occurs in three distinct phases.  Each phase involves
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *  a recursive descent into the layer's render objects. The first phase is the background phase.
345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *  The backgrounds and borders of all blocks are painted.  Inlines are not painted at all.
355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *  Floats must paint above block backgrounds but entirely below inline content that can overlap them.
365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *  In the foreground phase, all inlines are fully painted.  Inline replaced elements will get all
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *  three phases invoked on them during this phase.
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)enum PaintPhase {
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintPhaseBlockBackground,
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintPhaseChildBlockBackground,
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintPhaseChildBlockBackgrounds,
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintPhaseFloat,
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintPhaseForeground,
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintPhaseOutline,
475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintPhaseChildOutlines,
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintPhaseSelfOutline,
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintPhaseSelection,
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintPhaseCollapsedTableBorders,
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintPhaseTextClip,
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintPhaseMask
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)enum PaintBehaviorFlags {
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintBehaviorNormal = 0,
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintBehaviorSelectionOnly = 1 << 0,
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintBehaviorForceBlackText = 1 << 1,
595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PaintBehaviorFlattenCompositingLayers = 1 << 2,
60926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    PaintBehaviorRenderingSVGMask = 1 << 3,
61926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    PaintBehaviorSkipRootBackground = 1 << 4,
62926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    PaintBehaviorRootBackgroundOnly = 1 << 5
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef unsigned PaintBehavior;
665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace WebCore
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // PaintPhase_h
70