From: Angus Leeming Date: Thu, 11 Apr 2002 18:36:18 +0000 (+0000) Subject: (Herbert): add a new method, inBP, to LyXLength. X-Git-Tag: 1.6.10~19432 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=09f334338a789ce5dbef20a8beb95c0ed86cc2ee;p=features.git (Herbert): add a new method, inBP, to LyXLength. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3974 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/ChangeLog b/src/ChangeLog index fd3850e39a..39925bdbfd 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2002-03-28 Herbert Voss + + * lyxlength.[Ch]: add inBP() to get the right PS-point + units (BigPoint). With inPixels we have rounding errors + 2002-04-11 Juergen Vigna * text2.C (setCursorFromCoordinates): set iy to the right value. diff --git a/src/lyxlength.C b/src/lyxlength.C index 67be44c917..30b54e0b8d 100644 --- a/src/lyxlength.C +++ b/src/lyxlength.C @@ -238,6 +238,34 @@ int LyXLength::inPixels(int default_width, int default_height) const } +int LyXLength::inBP() const +{ + // return any LyXLength value as a one with + // the PostScript point, called bp (big points) + double result = 0.0; + int val_sign = val_ < 0.0 ? -1 : 1; + switch (unit_) { + case LyXLength::CM: + // 1bp = 0.2835cm + result = val_ * 28.346; + break; + case LyXLength::MM: + // 1bp = 0.02835mm + result = val_ * 2.8346; + break; + case LyXLength::IN: + // 1pt = 1/72in + result = val_ * 72.0; + break; + default: + // no other than bp possible + result = val_; + break; + } + return static_cast(result * val_sign + 0.5); +} + + bool operator==(LyXLength const & l1, LyXLength const & l2) { return l1.value() == l2.value() && l1.unit() == l2.unit(); diff --git a/src/lyxlength.h b/src/lyxlength.h index 6c79982f23..86fc886769 100644 --- a/src/lyxlength.h +++ b/src/lyxlength.h @@ -67,6 +67,8 @@ public: string const asLatexString() const; /// return the on-screen size of this length int inPixels(int default_width, int default_height) const; + /// return the on-screen size of this length of an image + int inBP() const; /** If "data" is valid, the length represented by it is stored into "result", if that is not 0. */