mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-21 23:09:40 +00:00
Fix LyXLength::inPixels
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5507 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
8f0bec8628
commit
293767645f
@ -351,6 +351,5 @@ int InsetMinipage::getMaxWidth(BufferView * bv, UpdatableInset const * inset)
|
|||||||
|
|
||||||
int InsetMinipage::latexTextWidth(BufferView * bv) const
|
int InsetMinipage::latexTextWidth(BufferView * bv) const
|
||||||
{
|
{
|
||||||
return width_.inPixels(InsetCollapsable::latexTextWidth(bv),
|
return width_.inPixels(InsetCollapsable::latexTextWidth(bv));
|
||||||
bv->text->defaultHeight());
|
|
||||||
}
|
}
|
||||||
|
@ -2243,7 +2243,7 @@ int InsetTabular::getMaxWidthOfCell(BufferView * bv, int cell) const
|
|||||||
|
|
||||||
if (len.zero())
|
if (len.zero())
|
||||||
return -1;
|
return -1;
|
||||||
return len.inPixels(latexTextWidth(bv), bv->text->defaultHeight());
|
return len.inPixels(latexTextWidth(bv));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -205,8 +205,7 @@ int InsetWrap::getMaxWidth(BufferView * bv, UpdatableInset const * inset)
|
|||||||
|
|
||||||
int InsetWrap::latexTextWidth(BufferView * bv) const
|
int InsetWrap::latexTextWidth(BufferView * bv) const
|
||||||
{
|
{
|
||||||
return width_.inPixels(InsetCollapsable::latexTextWidth(bv),
|
return width_.inPixels(InsetCollapsable::latexTextWidth(bv));
|
||||||
bv->text->defaultHeight());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ bool LyXLength::zero() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int LyXLength::inPixels(int default_width, int default_height) const
|
int LyXLength::inPixels(int text_width, int em_width_base) const
|
||||||
{
|
{
|
||||||
// Zoom factor specified by user in percent
|
// Zoom factor specified by user in percent
|
||||||
double const zoom = lyxrc.zoom / 100.0; // [percent]
|
double const zoom = lyxrc.zoom / 100.0; // [percent]
|
||||||
@ -131,12 +131,18 @@ int LyXLength::inPixels(int default_width, int default_height) const
|
|||||||
// DPI setting for monitor: pixels/inch
|
// DPI setting for monitor: pixels/inch
|
||||||
double const dpi = lyxrc.dpi; // screen resolution [pixels/inch]
|
double const dpi = lyxrc.dpi; // screen resolution [pixels/inch]
|
||||||
|
|
||||||
|
double const em_width = (em_width_base > 0)
|
||||||
|
? em_width_base
|
||||||
|
: 10*(dpi/72.27)*zoom;
|
||||||
|
// A different estimate for em_width is
|
||||||
|
// font_metrics::width('M', LyXFont(LyXFont::ALL_SANE))
|
||||||
|
// but this estimate might not be more accurate as the screen font
|
||||||
|
// is different then the latex font.
|
||||||
|
|
||||||
// Pixel values are scaled so that the ratio
|
// Pixel values are scaled so that the ratio
|
||||||
// between lengths and font sizes on the screen
|
// between lengths and font sizes on the screen
|
||||||
// is the same as on paper.
|
// is the same as on paper.
|
||||||
|
|
||||||
// we don't care about sign of value, we
|
|
||||||
// display negative space with text too
|
|
||||||
#ifdef WITH_WARNINGS
|
#ifdef WITH_WARNINGS
|
||||||
#warning if you don't care than either call this function differently or let it return negative values and call abs() explicitly when needed (Andre')
|
#warning if you don't care than either call this function differently or let it return negative values and call abs() explicitly when needed (Andre')
|
||||||
#endif
|
#endif
|
||||||
@ -191,26 +197,30 @@ int LyXLength::inPixels(int default_width, int default_height) const
|
|||||||
case LyXLength::EX:
|
case LyXLength::EX:
|
||||||
// Ex: The height of an "x"
|
// Ex: The height of an "x"
|
||||||
// 0.4305 is the ration between 1ex and 1em in cmr10
|
// 0.4305 is the ration between 1ex and 1em in cmr10
|
||||||
result = zoom * val_ * default_height * 0.4305;
|
result = val_ * em_width * 0.4305;
|
||||||
break;
|
break;
|
||||||
case LyXLength::EM:
|
case LyXLength::EM:
|
||||||
// Em: The width of an "m"
|
// Em: The width of an "m"
|
||||||
// 1em is approx 10points in cmr10
|
result = val_ * em_width;
|
||||||
result = zoom * val_ * default_height;
|
|
||||||
break;
|
break;
|
||||||
case LyXLength::MU:
|
case LyXLength::MU:
|
||||||
// math unit = 1/18em
|
// math unit = 1/18em
|
||||||
result = val_ * default_height / 18;
|
result = val_ * em_width / 18;
|
||||||
break;
|
break;
|
||||||
case LyXLength::PCW: // Always % of workarea
|
case LyXLength::PCW: // Always % of workarea
|
||||||
case LyXLength::PTW:
|
case LyXLength::PTW:
|
||||||
case LyXLength::PPW:
|
|
||||||
case LyXLength::PLW:
|
case LyXLength::PLW:
|
||||||
result = val_ * default_width / 100;
|
result = val_ * text_width / 100;
|
||||||
|
break;
|
||||||
|
case LyXLength::PPW:
|
||||||
|
// paperwidth/textwidth is 1.7 for A4 paper with default margins
|
||||||
|
result = val_ * text_width * 1.7 / 100;
|
||||||
break;
|
break;
|
||||||
case LyXLength::PTH:
|
case LyXLength::PTH:
|
||||||
|
result = val_ * text_width * 1.787 / 100;
|
||||||
|
break;
|
||||||
case LyXLength::PPH:
|
case LyXLength::PPH:
|
||||||
result = val_ * default_height / 100;
|
result = val_ * text_width * 2.2 / 100;
|
||||||
break;
|
break;
|
||||||
case LyXLength::UNIT_NONE:
|
case LyXLength::UNIT_NONE:
|
||||||
result = 0; // this cannot happen
|
result = 0; // this cannot happen
|
||||||
|
@ -68,7 +68,7 @@ public:
|
|||||||
/// return string representation for LaTeX
|
/// return string representation for LaTeX
|
||||||
string const asLatexString() const;
|
string const asLatexString() const;
|
||||||
/// return the on-screen size of this length
|
/// return the on-screen size of this length
|
||||||
int inPixels(int default_width, int default_height) const;
|
int inPixels(int text_width, int em_width = 0) const;
|
||||||
/// return the on-screen size of this length of an image
|
/// return the on-screen size of this length of an image
|
||||||
int inBP() const;
|
int inBP() const;
|
||||||
|
|
||||||
|
@ -847,7 +847,7 @@ int LyXText::leftMargin(BufferView * bview, Row const * row) const
|
|||||||
LyXLength const len = row->par()->params().leftIndent();
|
LyXLength const len = row->par()->params().leftIndent();
|
||||||
int const tw = inset_owner ?
|
int const tw = inset_owner ?
|
||||||
inset_owner->latexTextWidth(bview) : workWidth(bview);
|
inset_owner->latexTextWidth(bview) : workWidth(bview);
|
||||||
x += len.inPixels(tw, bview->text->defaultHeight());
|
x += len.inPixels(tw);
|
||||||
}
|
}
|
||||||
|
|
||||||
LyXAlignment align; // wrong type
|
LyXAlignment align; // wrong type
|
||||||
|
@ -505,7 +505,7 @@ int VSpace::inPixels(BufferView const * bv) const
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case LENGTH:
|
case LENGTH:
|
||||||
retval = len_.len().inPixels(bv->workWidth(), default_height);
|
retval = len_.len().inPixels(bv->workWidth());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user