RichText, RichEdit: 1.15 line spacing

git-svn-id: svn://ultimatepp.org/upp/trunk@15517 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2020-11-25 10:22:17 +00:00
parent ecbd26e0f3
commit eec129be23
7 changed files with 17 additions and 5 deletions

View file

@ -297,9 +297,10 @@ ParaFormatting::ParaFormatting()
tabs.ColumnWidths("103 89 78");
tabs.Appending().Removing().NoAskRemove();
tabs.WhenAcceptEdit = tabs.WhenArrayAction = THISBACK(SetMod);
linespacing.Add(0, "1.0");
linespacing.Add(-1, "1.5");
linespacing.Add(-2, "2.0");
linespacing.Add(RichPara::LSP10, "1.0");
linespacing.Add(RichPara::LSP115, "1.15");
linespacing.Add(RichPara::LSP15, "1.5");
linespacing.Add(RichPara::LSP20, "2.0");
bullet.Add(RichPara::BULLET_NONE, RichEditImg::NoneBullet());
bullet.Add(RichPara::BULLET_ROUND, RichEditImg::RoundBullet());
bullet.Add(RichPara::BULLET_ROUNDWHITE, RichEditImg::RoundWhiteBullet());

View file

@ -94,7 +94,9 @@ String HtmlParaStyle(const RichPara::Format& f, Zoom z)
if(!IsNull(f.paper))
style << HtmlStyleColor(f.paper, "background-color");
style << decode(f.linespacing, RichPara::LSP15, "line-height:150%",
RichPara::LSP20, "line-height:200%", "");
RichPara::LSP20, "line-height:200%",
RichPara::LSP115, "line-height:115%",
"");
return style;
}

View file

@ -111,6 +111,7 @@ void QTFEncodeParaFormat(String& qtf, const RichPara::Format& format, const Rich
qtf << 'Q';
if(style.linespacing != format.linespacing)
switch(format.linespacing) {
case RichPara::LSP115: qtf << "pw"; break;
case RichPara::LSP15: qtf << "ph"; break;
case RichPara::LSP20: qtf << "pd"; break;
default: qtf << "po"; break;

View file

@ -71,6 +71,7 @@ struct RichPara {
LSP10 = 0,
LSP15 = -1,
LSP20 = -2,
LSP115 = -3,
};
enum TabSpecial {

View file

@ -12,6 +12,10 @@ void RichPara::Smh(Lines& lines, HeightInfo *th, int cx) const
if(h->descent > l.descent) l.descent = h->descent;
if(h->external > l.external) l.external = h->external;
}
if(format.linespacing == LSP115) {
l.ascent = 115 * l.ascent / 100;
l.descent = 115 * l.descent / 100;
}
if(format.linespacing == LSP15) {
l.ascent = (3 * l.ascent) >> 1;
l.descent = (3 * l.descent) >> 1;

View file

@ -778,6 +778,7 @@ void RichQtfParser::Parse(const char *qtf, int _accesskey)
case 0: Error("Unexpected end of text");
case 'h': format.linespacing = RichPara::LSP15; break;
case 'd': format.linespacing = RichPara::LSP20; break;
case 'w': format.linespacing = RichPara::LSP115; break;
default: format.linespacing = RichPara::LSP10;
}
break;

View file

@ -324,7 +324,9 @@ optimization, [*@(128.0.255) %`-] is equivalent to [@(128.0.255) %][@(0.0.255) 0
::^ [s0;%- [C@(128.0.255) i][/C@(0.0.255) number]]
::= [s0; Indent in dots.]
::^ [s0;%- [C@(128.0.255) pn]]
::= [s0; Line spacing 1.0.]
::= [s0; Line spacing 1.0 (default).]
::^ [s0;%- [C@(128.0.255) pw]]
::= [s0; Line spacing 1.15.]
::^ [s0;%- [C@(128.0.255) ph]]
::= [s0; Line spacing 1.5.]
::^ [s0;%- [C@(128.0.255) pd]]