18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *           (C) 1999 Antti Koivisto (koivisto@kde.org)
4231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version.
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful,
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details.
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB.  If not, write to
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA.
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef Text_h
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define Text_h
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CharacterData.h"
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Text : public CharacterData {
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic:
32231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    static const unsigned defaultLengthLimit = 1 << 16;
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
34231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    static PassRefPtr<Text> create(Document*, const String&);
3581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    static PassRefPtr<Text> createWithLengthLimit(Document*, const String&, unsigned positionInString, unsigned lengthLimit = defaultLengthLimit);
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    PassRefPtr<Text> splitText(unsigned offset, ExceptionCode&);
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // DOM Level 3: http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-1312295772
40231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    String wholeText() const;
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    PassRefPtr<Text> replaceWholeText(const String&, ExceptionCode&);
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
44231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    virtual void attach();
45231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
46231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockprotected:
4721939df44de1705786c545cd1bf519d47250322dBen Murdoch    Text(Document* document, const String& data)
4821939df44de1705786c545cd1bf519d47250322dBen Murdoch        : CharacterData(document, data, CreateText)
4921939df44de1705786c545cd1bf519d47250322dBen Murdoch    {
5021939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
52231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockprivate:
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual String nodeName() const;
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual NodeType nodeType() const;
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual PassRefPtr<Node> cloneNode(bool deep);
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool rendererIsNeeded(RenderStyle*);
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void recalcStyle(StyleChange = NoChange);
592daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual bool childTypeAllowed(NodeType) const;
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
61231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    virtual PassRefPtr<Text> virtualCreate(const String&);
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef NDEBUG
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void formatForDebugger(char* buffer, unsigned length) const;
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // Text_h
71