16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ******************************************************************************* 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (C) 1999-2007, International Business Machines 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Corporation and others. All Rights Reserved. 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ******************************************************************************* 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * file name: Paragraph.h 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * created on: 09/06/2000 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * created by: Eric R. Mader 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef __PARAGRAPH_H 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define __PARAGRAPH_H 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/ubidi.h" 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "layout/LEFontInstance.h" 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "layout/ParagraphLayout.h" 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "GUISupport.h" 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "RenderingSurface.h" 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_USE 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define MARGIN 10 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if 0 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass LineInfo; 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass Paragraph 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Paragraph(const LEUnicode chars[], le_int32 charCount, const FontRuns *fontRuns, LEErrorCode &status); 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ~Paragraph(); 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org le_int32 getAscent(); 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org le_int32 getLineHeight(); 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org le_int32 getLineCount(); 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void breakLines(le_int32 width, le_int32 height); 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void draw(RenderingSurface *surface, le_int32 firstLine, le_int32 lastLine); 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static Paragraph *paragraphFactory(const char *fileName, const LEFontInstance *font, GUISupport *guiSupport); 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate: 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void addLine(const ParagraphLayout::Line *line); 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ParagraphLayout **fParagraphLayout; 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org le_int32 fParagraphCount; 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org le_int32 fParagraphMax; 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org le_int32 fParagraphGrow; 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org le_int32 fLineCount; 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org le_int32 fLinesMax; 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org le_int32 fLinesGrow; 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const ParagraphLayout::Line **fLines; 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LEUnicode *fChars; 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org le_int32 fLineHeight; 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org le_int32 fAscent; 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org le_int32 fWidth; 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org le_int32 fHeight; 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBiDiLevel fParagraphLevel; 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orginline le_int32 Paragraph::getLineHeight() 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return fLineHeight; 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orginline le_int32 Paragraph::getLineCount() 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return fLineCount; 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orginline le_int32 Paragraph::getAscent() 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return fAscent; 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 89