2
* Copyright (C) 2003, 2006, 2008 Apple Inc. All rights reserved.
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
7
* 1. Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* 2. Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
13
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
#ifndef RenderTreeAsText_h
27
#define RenderTreeAsText_h
28
#include "TextStream.h"
30
#include <wtf/Forward.h>
44
enum RenderAsTextBehaviorFlags {
45
RenderAsTextBehaviorNormal = 0,
46
RenderAsTextShowAllLayers = 1 << 0, // Dump all layers, not just those that would paint.
47
RenderAsTextShowLayerNesting = 1 << 1, // Annotate the layer lists.
48
RenderAsTextShowCompositedLayers = 1 << 2, // Show which layers are composited.
49
RenderAsTextShowAddresses = 1 << 3, // Show layer and renderer addresses.
50
RenderAsTextShowIDAndClass = 1 << 4, // Show id and class attributes
51
RenderAsTextPrintingMode = 1 << 5, // Dump the tree in printing mode.
52
RenderAsTextDontUpdateLayout = 1 << 6, // Don't update layout, to make it safe to call showLayerTree() from the debugger inside layout or painting code.
53
RenderAsTextShowLayoutState = 1 << 7 // Print the various 'needs layout' bits on renderers.
55
typedef unsigned RenderAsTextBehavior;
57
// You don't need pageWidthInPixels if you don't specify RenderAsTextInPrintingMode.
58
String externalRepresentation(Frame*, RenderAsTextBehavior = RenderAsTextBehaviorNormal);
59
String externalRepresentation(Element*, RenderAsTextBehavior = RenderAsTextBehaviorNormal);
60
void write(TextStream&, const RenderObject&, int indent = 0, RenderAsTextBehavior = RenderAsTextBehaviorNormal);
61
void writeIndent(TextStream&, int indent);
63
class RenderTreeAsText {
64
// FIXME: This is a cheesy hack to allow easy access to RenderStyle colors. It won't be needed if we convert
65
// it to use visitedDependentColor instead. (This just involves rebaselining many results though, so for now it's
68
static void writeRenderObject(TextStream& ts, const RenderObject& o, RenderAsTextBehavior behavior);
71
TextStream& operator<<(TextStream&, const IntPoint&);
72
TextStream& operator<<(TextStream&, const IntRect&);
73
TextStream& operator<<(TextStream&, const LayoutPoint&);
74
TextStream& operator<<(TextStream&, const FloatPoint&);
75
TextStream& operator<<(TextStream&, const FloatSize&);
77
template<typename Item>
78
TextStream& operator<<(TextStream& ts, const Vector<Item>& vector)
82
unsigned size = vector.size();
83
for (unsigned i = 0; i < size; ++i) {
93
// Helper function shared with SVGRenderTreeAsText
94
String quoteAndEscapeNonPrintables(const String&);
96
String counterValueForElement(Element*);
98
String markerTextForListItem(Element*);
100
} // namespace WebCore
102
#endif // RenderTreeAsText_h