15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2004, 2005, 2009 Apple Inc. All rights reserved.
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met:
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *    notice, this list of conditions and the following disclaimer.
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *    notice, this list of conditions and the following disclaimer in the
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *    documentation and/or other materials provided with the distribution.
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef SVGRenderTreeAsText_h
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define SVGRenderTreeAsText_h
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
291e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/text/TextStream.h"
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WebCore {
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class Color;
345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderObject;
355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderSVGGradientStop;
365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderSVGImage;
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderSVGInlineText;
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderSVGShape;
395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderSVGRoot;
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderSVGText;
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class AffineTransform;
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// functions used by the main RenderTreeAsText code
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void write(TextStream&, const RenderSVGShape&, int indent);
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void write(TextStream&, const RenderSVGRoot&, int indent);
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void writeSVGGradientStop(TextStream&, const RenderSVGGradientStop&, int indent);
475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void writeSVGResourceContainer(TextStream&, const RenderObject&, int indent);
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void writeSVGContainer(TextStream&, const RenderObject&, int indent);
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void writeSVGImage(TextStream&, const RenderSVGImage&, int indent);
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void writeSVGInlineText(TextStream&, const RenderSVGInlineText&, int indent);
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void writeSVGText(TextStream&, const RenderSVGText&, int indent);
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void writeResources(TextStream&, const RenderObject&, int indent);
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// helper operators defined used in various classes to dump the render tree.
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)TextStream& operator<<(TextStream&, const AffineTransform&);
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)TextStream& operator<<(TextStream&, const Color&);
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// helper operators specific to dumping the render tree. these are used in various classes to dump the render tree
595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// these could be defined in separate namespace to avoid matching these generic signatures unintentionally.
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)template<typename Item>
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)TextStream& operator<<(TextStream& ts, const Vector<Item*>& v)
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ts << "[";
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    for (unsigned i = 0; i < v.size(); i++) {
675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ts << *v[i];
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if (i < v.size() - 1)
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            ts << ", ";
705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    }
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ts << "]";
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    return ts;
745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)template<typename Pointer>
775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)TextStream& operator<<(TextStream& ts, Pointer* t)
785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ts << reinterpret_cast<intptr_t>(t);
805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    return ts;
815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace WebCore
845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // SVGRenderTreeAsText_h
86