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