// -*- C++ -*- /* This file is part of *====================================================== * *LyX,TheDocumentProcessor * *Copyright(C)1995MatthiasEttrich *
*======================================================*/
/// points to Buffer.params
BufferParams *parameters; /// points to Buffer
Buffer *params; /// int number_of_rows; /// long height; /// the current font settings
LyXFont current_font; /// the current font
LyXFont real_current_font;
///
LyXFont GetFont(LyXParagraph* par, int pos); /// void SetCharFont(LyXParagraph *par, int pos, LyXFont font);
/// returns a pointer to the very first LyXParagraph
LyXParagraph *FirstParagraph();
/// what you expect when pressing <enter> at cursor position void BreakParagraph(char keep_layout = 0);
/** set layout over selection and make a total rebreak of thoseparagraphs
*/ void SetLayout(char layout);
/// used in setlayout void MakeFontEntriesLayoutSpecific(LyXParagraph *par);
/** increment depth over selection and make a total rebreak of those paragraphs
*/ void IncDepth();
/** decrement depth over selection and make a total rebreak of those
paragraphs */ void DecDepth();
/** Get the depth at current cursor position
*/ int GetDepth() { return cursor.par->GetDepth(); }
/** set font over selection and make a total rebreak of those paragraphs. togglealldefaultstofalse.
*/ void SetFont(LyXFont font, bool toggleall=false);
/** deletes and inserts again all paragaphs between the cursor andthespecifiedpar.TheCursorisneededtosettherefreshing parameters. ThisfunctionisneededafterSetLayoutandSetFontetc.
*/ void RedoParagraphs(LyXCursor cursor, LyXParagraph *end_par); /// void RedoParagraph();
/** recalculates the heights of all previous rows of the specifiedparagraph.needed,ifthelastcharactersfont haschanged.
*/ void RedoHeightOfParagraph(LyXCursor cursor);
/** forces the redrawing of a paragraph. Needed when manipulating a rightaddressbox
*/ void RedoDrawingOfParagraph(LyXCursor cursor);
/** insert a character, moves all the following breaks in the sameParagraphonetotherightandmakealittlerebreak
*/ void InsertChar(char c); /// void InsertInset(Inset *inset);
/// completes the insertion with a full rebreak int FullRebreak();
/// may be important for the menu char* GetLayout(int row); ///
LyXParagraph::footnote_flag GetFootnoteFlag(int row); ///
Row* need_break_row; /// long refresh_y; /// int refresh_height; /// int refresh_width; /// int refresh_x; ///
Row *refresh_row; /// int refresh_pos;
/** wether the screen needs a refresh, startingwithrefresh_y
*/
text_status status;
/** returns a pointer to the row near the specified y-coordinate (relativetothewholetext).yissettotherealbeginning ofthisrow
*/
Row* GetRowNearY(long &y);
/** returns the column near the specified x-coordinate of the row xissettotherealbeginningofthiscolumn
*/ int GetColumnNearX(Row *row, int& x);
/** returns a pointer to a specified row. y is set to the beginning oftherow
*/
Row* GetRow(LyXParagraph *par, int pos, long &y);
/** returns the height of a default row, needed for scrollbar
*/ int DefaultHeight();
/** The cursor. Laterthisvariablehastoberemoved.Thereshouldbenowinternal cursorinatext(andthusnotinabuffer).Bykeepingthisitis (Ithink)impossibletohaveseveralviewswiththesamebuffer,but thecursorplacedatdifferentplaces.
*/
LyXCursor cursor;
/// need the selection cursor: void SetSelection(); /// void ClearSelection();
/// just selects the word the cursor is in void SelectWord();
/** 'selects" the next word, where the cursor is not in andreturnsthiswordasstring.THecursorwillbemoved tothebeginningofthisword. WithSelectSelectedWordcanthisbehighlightedreally
*/ char* SelectNextWord(float &value); /// void SelectSelectedWord(); /// void SetCursor(LyXParagraph *par, int pos); /// void SetCursorIntern(LyXParagraph *par, int pos); /// void SetCursorFromCoordinates(int x, long y); /// void CursorUp(); /// void CursorDown(); /// void CursorLeft(); /// void CursorRight(); /// void CursorLeftOneWord(); /// void CursorRightOneWord(); /// void CursorUpParagraph(); /// void CursorDownParagraph(); /// void CursorHome(); /// void CursorEnd(); /// void CursorTab(); /// void CursorTop(); /// void CursorBottom(); /// voidDelete(); /// void Backspace(); /// void DeleteWordForward(); /// void DeleteWordBackward(); /// void DeleteLineForward(); /// int SelectWordWhenUnderCursor(); /// Change the case of the word at cursor position /** action is 0 for lower case, 1 for capitalization and 2 for uppercase.
*/ void ChangeWordCase(int action);
/** returns a printed row in a pixmap. The y value is needed to decide,wetheritisselectedtextornot.Thisisastrange solutionbutfaster.
*/ void GetVisibleRow(LyXScreen &scr, int offset,
Row *row_ptr, long y);
/** turn the selection into a new environment. If there is no selection,createanemptyenvironment
*/ void InsertFootnoteEnvironment(LyXParagraph::footnote_kind kind); /// void MeltFootnoteEnvironment(); /// void CutSelection(bool = true); /// void CopySelection(); /// void PasteSelection(); /// void copyEnvironmentType(); /// void pasteEnvironmentType(); /// void InsertFootnote(); /// void InsertMarginpar(); /// void InsertFigure(); /// void InsertTabular();
/** the DTP switches for paragraphs. LyX will store the top settings alwaysinthefirstphysicalparagraph,thebottomsettingsinthe last.Whenaparagraphisbroken,thetopsettingsrest,thebottom settingsaregiventothenewone.SoIcanmakeshure,theydonot duplicatethemself(andyoucannnotmakedirtythingswiththem!)
*/ void SetParagraph(bool line_top, bool line_bottom, bool pagebreak_top, bool pagebreak_bottom,
VSpace space_top, VSpace space_bottom, char align,
LString labelwidthstring, bool noindent); void SetParagraphExtraOpt(int type, constchar *width, constchar *widthp, int alignment, bool hfill, bool start_minipage);
/* these things are for search and replace */
/** returns true if the specified string is at the specified position
*/ bool IsStringInText(LyXParagraph *par, int pos, charconst* string);
/** sets the selection over the number of characters of string, nocheck!!
*/ void SetSelectionOverString(charconst* string);
/** simple replacing. The font of the first selected character isused
*/ void ReplaceSelectionWithString(charconst* string);
/** if the string can be found: return true and set the cursor to
the new position */ bool SearchForward(charconst* string); bool SearchBackward(charconst* string);
/// needed to insert the selection void InsertStringA(char* string); /// needed to insert the selection void InsertStringB(char* string);
/// usefull when texing from within LyX bool GotoNextError();
/// just another feature :) bool GotoNextNote();
/** needed to switch between different classes this works foralistofparagraphsbeginningwiththespecifiedpar returnvalueisthenumberofwrongconversions
*/ int SwitchLayoutsBetweenClasses(char class1, char class2, LyXParagraph *par);
/* for the greater insets */
/// returns 0 if inset wasn't found int UpdateInset(Inset* inset); /// void CheckParagraph(LyXParagraph* par, int pos);
/* table stuff -- begin*/
/** all table features of the text-class are put together in thisfunction.Possiblevaluesoffeaturearedefinedintable.h
*/ void TableFeatures(int feature,LString val); /// void TableFeatures(int feature); /// int NumberOfCell(LyXParagraph *par, int pos);
/** pos points at the beginning of the next cell (if there is one)
*/ int WidthOfCell(LyXParagraph *par, int &pos); /// void InsertCharInTable(char c); /// void BackspaceInTable(); /// void CheckParagraphInTable(LyXParagraph* par, int pos); /// char HitInTable(Row* row, int x); /// bool MouseHitInTable(int x, long y); /* table stuff -- end*/ ///
LyXParagraph* GetParFromID(int id);
// undo functions /// returns false if no undo possible bool TextUndo(); /// returns false if no redo possible bool TextRedo(); /// used by TextUndo/TextRedo bool TextHandleUndo(Undo* undo); /// makes sure the next operation will be stored void FinishUndo(); /// this is dangerous and for internal use only void FreezeUndo(); /// this is dangerous and for internal use only void UnFreezeUndo(); /// the flag used by FinishUndo(); bool undo_finished; /// a flag bool undo_frozen; /// void SetUndo(Undo::undo_kind kind, LyXParagraph *before, LyXParagraph *end); /// void SetRedo(Undo::undo_kind kind, LyXParagraph *before, LyXParagraph *end); ///
Undo *CreateUndo(Undo::undo_kind kind, LyXParagraph *before, LyXParagraph *end); /// for external use in lyx_cb.C void SetCursorParUndo(); /// void CursorLeftIntern(); /// void CursorRightIntern(); /// void RemoveTableRow(LyXCursor *cursor); /// bool IsEmptyTableRow(LyXCursor *cursor); /// bool IsEmptyTableCell(); /// void toggleAppendix();
private: ///
Row* firstrow; ///
Row* lastrow;
/** Copybuffer for copy environment type Asgerhaslearnedthatthisshouldbeabuffer-propertyinstead Lgbhaslearnedthat'char'isalousytypefornon-characters
*/ char copylayouttype;
/// the currentrow is needed to access rows faster*/
Row* currentrow; /* pointer to the current row */ /// position in the text long currentrow_y; /// width of the paper unsignedshort paperwidth;
/** inserts a new row behind the specified row, increments
* the touched counters */ void InsertRow(Row *row, LyXParagraph *par, int pos );
/** removes the row and reset the touched counters */ void RemoveRow(Row *row);
/** remove all following rows of the paragraph of the specified row. */ void RemoveParagraph(Row *row);
/** insert the specified paragraph behind the specified row */ void InsertParagraph(LyXParagraph *par, Row *row);
/** appends the implizit specified paragraph behind the specified row,
* start at the implizit given position */ void AppendParagraph(Row *row);
/// void BreakAgain(Row *row); /// void BreakAgainOneRow(Row *row); /// void SetHeightOfRow(Row *row_ptr); /* calculate and set the height
* of the row */
/** this calculates the specified parameters. needed when setting
* the cursor and when creating a visible row */ void PrepareToPrint(Row *row, float &x, float &fill_separator, float &fill_hfill, float &fill_label_hfill); /// void DeleteEmptyParagraphMechanism(LyXCursor old_cursor);
/** Updates all counters starting BEHIND the row. Changed paragraphs
* with a dynamic left margin will be rebroken. */ void UpdateCounters(Row *row); /// void SetCounter(LyXParagraph *par);
/* *somelowlevelfunctions
*/
/// int SingleWidth(LyXParagraph *par, int pos); /// int SingleWidth(LyXParagraph *par, int pos, char c); /// void Draw(Row *row, int &pos, LyXScreen &scr, int offset, float &x); /// get the next breakpoint in a given paragraph int NextBreakPoint(Row* row, int width); /// returns the minimum space a row needs on the screen in pixel int Fill(Row *row, int paperwidth);
/** returns the minimum space a manual label needs on the
screen in pixel */ int LabelFill(Row *row);
/// int BeginningOfMainBody(LyXParagraph *par);
/** Returns the left beginning of the text. Thisinformationcannotbetakenfromthelayouts-objekt,because inLaTeXthebeginningofthetextfitsinsomecases (forexamplesections)exactlythelabel-width.
*/ int LeftMargin(Row *row); /// int RightMargin(Row *row); /// int LabelEnd (Row *row);
/** returns the number of separators in the specified row. Theseparatorontheverylastcolumndoesntcount
*/ int NumberOfSeparators(Row *row);
/** returns the number of hfills in the specified row. The LyX-HfillisaLaTeX\hfillsothatthehfillsatthe beginningandattheendwereignored.Thisis{\emMUCH} moreusefullthannottoignore!
*/ int NumberOfHfills(Row *row);
/// like NumberOfHfills, but only those in the manual label! int NumberOfLabelHfills(Row *row);
/** returns true, if a expansion is needed. Rules are given by LaTeX
*/ bool HfillExpansion(Row *row_ptr, int pos);
/** returns the paragraph position of the last character in the specifiedrow
*/ int RowLast(Row *row);
};
#endif
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.20 Sekunden
(vorverarbeitet am 2026-09-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.