X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxrow.h;h=d855d77e30942f745ed2698a2a20ac98c2084cfb;hb=005545f28100fd30afa22313d6e3b1b67aa9a857;hp=4909a3dcddea1b3feeb268c327488518e41ce32a;hpb=82fa210ea8d38d51aafb131f10d843e27e056429;p=lyx.git diff --git a/src/lyxrow.h b/src/lyxrow.h index 4909a3dcdd..d855d77e30 100644 --- a/src/lyxrow.h +++ b/src/lyxrow.h @@ -1,43 +1,98 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 The LyX Team. +/** + * \file lyxrow.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * ====================================================== */ + * \author Matthias Ettrich + * \author Lars Gullik Bjønnes + * + * Full author contact details are available in file CREDITS. + * + * Metrics for an on-screen text row. + */ #ifndef LYXROW_H #define LYXROW_H -#include "lyxparagraph.h" +#include "support/types.h" /// -struct Row { +class Row { +public: + /// + Row(); + /// + Row(lyx::pos_type pos); + /// + void pos(lyx::pos_type p); + /// + lyx::pos_type pos() const; + /// + void endpos(lyx::pos_type p); + /// + lyx::pos_type endpos() const; + /// + void height(unsigned int h) { height_ = h; } /// - LyXParagraph * par; + unsigned int height() const { return height_; } /// - LyXParagraph::size_type pos; - /** what is missing to a full row can be negative. - Needed for hfills, flushright, block etc. */ - mutable int fill; + void width(unsigned int w); /// - unsigned short height; + unsigned int width() const; /// - unsigned short ascent_of_text; + void ascent_of_text(unsigned int a); /// - unsigned int baseline; + unsigned int ascent_of_text() const; /// - Row() - : par(0), pos(0), fill(0), height(0), - ascent_of_text(0), baseline(0), next(0), previous(0) - {} + void top_of_text(unsigned int top); /// - Row * next; + unsigned int top_of_text() const; /// - Row * previous; + void baseline(unsigned int b); + /// + unsigned int baseline() const; + /// return true if this row is the start of a paragraph + bool isParStart() const; + /// return the cached y position + unsigned int y_offset() const { return y_offset_; } + /// cache the y position + void y_offset(unsigned int newy) { y_offset_ = newy; } + /// current debugging only + void dump(const char * = "") const; + +private: + /// first pos covered by this row + lyx::pos_type pos_; + /// one behind last pos covered by this row + lyx::pos_type end_; + /// + unsigned int height_; + /// + unsigned int width_; + /// cached y position + unsigned int y_offset_; + /// ascent from baseline including prelude space + unsigned short ascent_of_text_; + /// the top of the real text in the row + unsigned int top_of_text_; + /// + unsigned int baseline_; }; + +class RowMetrics { +public: + RowMetrics(); + /// width of a separator (i.e. space) + double separator; + /// width of hfills in the body + double hfill; + /// width of hfills in the label + double label_hfill; + /// the x position of the row + double x; +}; + + #endif