// -*- C++ -*-
-
/**
- * \file dimension.h
- *
- * This file is part of LyX, the document processor.
- * Licence details can be found in the file COPYING.
+ * \file dimension.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * \author André Pönitz
+ * \author André Pönitz
*
- * Full author contact details are available in file CREDITS.
+ * Full author contact details are available in file CREDITS.
*/
#ifndef DIMENSION_H
#define DIMENSION_H
-
-class LyXFont;
+namespace lyx {
/// Simple wrapper around three ints
-struct Dimension {
+class Dimension {
public:
/// constructor
- Dimension() : w(0), a(0), d(0) {}
+ Dimension() : wid(0), asc(0), des(0) {}
/// initialize data
- Dimension(int ww, int aa, int dd) : w(ww), a(aa), d(dd) {}
+ Dimension(int w, int a, int d) : wid(w), asc(a), des(d) {}
+ Dimension & operator=(Dimension const & dim) {
+ wid = dim.wid;
+ asc = dim.asc;
+ des = dim.des;
+ return *this;
+ }
/// glue horizontally
void operator+=(Dimension const & dim);
/// set to empty box
- void clear() { w = a = d = 0; }
- /// set to empty box suitble for given font
- void clear(LyXFont const & font);
+ void clear() { wid = asc = des = 0; }
/// get height
- int height() const { return a + d; }
+ int height() const { return asc + des; }
/// get ascent
- int ascent() const { return a; }
+ int ascent() const { return asc; }
/// get descent
- int descent() const { return d; }
+ int descent() const { return des; }
/// get width
- int width() const { return w; }
+ int width() const { return wid; }
+
+ /// add space for a frame
+ //void addFrame(int frame) const;
+ /// add space for bottom part of a frame
+ //void addFrameBottom(int frame) const;
public:
/// these are intentionally public as things like
///
- /// dim.a += 20;
+ /// dim.asc += 20;
///
/// are used all over the place and "hiding" those behind
///
///
/// makes the code neither faster nor clearer
/// width
- int w;
+ int wid;
/// ascent
- int a;
+ int asc;
/// descent
- int d;
+ int des;
};
+inline
+bool operator==(Dimension const & a, Dimension const & b)
+{
+ return a.wid == b.wid && a.asc == b.asc && a.des == b.des ;
+}
+
+
+inline
+bool operator!=(Dimension const & a, Dimension const & b)
+{
+ return a.wid != b.wid || a.asc != b.asc || a.des != b.des ;
+}
+
+
+} // namespace lyx
+
#endif