1635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*
2635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2009 Apple Inc. All rights reserved.
4635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *
5635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * This library is free software; you can redistribute it and/or
6635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * modify it under the terms of the GNU Library General Public
7635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * License as published by the Free Software Foundation; either
8635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * version 2 of the License, or (at your option) any later version.
9635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *
10635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * This library is distributed in the hope that it will be useful,
11635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
12635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Library General Public License for more details.
14635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *
15635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * You should have received a copy of the GNU Library General Public License
16635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * along with this library; see the file COPYING.LIB.  If not, write to
17635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Boston, MA 02110-1301, USA.
19635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *
20635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */
21635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
22635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#ifndef RenderTextControlMultiLine_h
23635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#define RenderTextControlMultiLine_h
24635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
25635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "RenderTextControl.h"
26635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
27635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectnamespace WebCore {
28635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
29635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectclass RenderTextControlMultiLine : public RenderTextControl {
30635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectpublic:
31231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    RenderTextControlMultiLine(Node*, bool);
32635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual ~RenderTextControlMultiLine();
33635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void forwardEvent(Event*);
350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochprivate:
37635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual bool isTextArea() const { return true; }
38635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
39635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual void subtreeHasChanged();
40635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
41635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, int x, int y, int tx, int ty, HitTestAction);
42635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
43692e5dbf12901edacf14812a6fae25462920af42Steve Block    virtual float getAvgCharWidth(AtomicString family);
44635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual int preferredContentWidth(float charWidth) const;
45635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual void adjustControlHeightBasedOnLineHeight(int lineHeight);
466b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner    virtual int baselinePosition(FontBaseline, bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const;
47635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
48635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual void updateFromElement();
49635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual void cacheSelection(int start, int end);
50635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
51231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    virtual RenderStyle* textBaseStyle() const;
52635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual PassRefPtr<RenderStyle> createInnerTextStyle(const RenderStyle* startStyle) const;
536b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner    virtual int textBlockInsetLeft() const;
546b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner    virtual int textBlockInsetRight() const;
55f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual int textBlockInsetTop() const;
56635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project};
57635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochinline RenderTextControlMultiLine* toRenderTextControlMultiLine(RenderObject* object)
590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    ASSERT(!object || object->isTextArea());
610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    return static_cast<RenderTextControlMultiLine*>(object);
620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// This will catch anyone doing an unnecessary cast.
650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid toRenderTextControlMultiLine(const RenderTextControlMultiLine*);
660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
67635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
68635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
69635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif
70