ultimatepp/uppdev/RichTextP/Format.cpp
cxl 2e4b276e07 Merge continued
git-svn-id: svn://ultimatepp.org/upp/trunk@10263 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2016-10-04 08:34:39 +00:00

212 lines
4.9 KiB
C++

#include "RichText.h"
NAMESPACE_UPP
void RichTxt::FormatInfo::Set(const RichPara::Format& fmt)
{
(RichPara::Format&)*this = fmt;
charvalid = paravalid = 0xffffffff;
}
void RichTxt::FormatInfo::Set(const RichPara::CharFormat& fmt)
{
(RichPara::CharFormat&)*this = fmt;
charvalid = 0xffffffff;
}
void RichTxt::FormatInfo::Combine(const RichPara::CharFormat& fmt)
{
if(IsBold() != fmt.IsBold()) {
charvalid &= ~BOLD;
NoBold();
}
if(IsItalic() != fmt.IsItalic()) {
charvalid &= ~ITALIC;
NoItalic();
}
if(IsUnderline() != fmt.IsUnderline()) {
charvalid &= ~UNDERLINE;
NoUnderline();
}
if(IsStrikeout() != fmt.IsStrikeout()) {
charvalid &= ~STRIKEOUT;
NoStrikeout();
}
if(IsNonAntiAliased() != fmt.IsNonAntiAliased()) {
charvalid &= ~NOAA;
NoNonAntiAliased();
}
if(capitals != fmt.capitals) {
charvalid &= ~CAPITALS;
capitals = false;
}
if(dashed != fmt.dashed) {
charvalid &= ~DASHED;
dashed = false;
}
if(sscript != fmt.sscript) {
charvalid &= ~SSCRIPT;
sscript = 0;
}
if(GetFace() != fmt.GetFace())
charvalid &= ~FACE;
if(GetHeight() != fmt.GetHeight())
charvalid &= ~HEIGHT;
if(ink != fmt.ink) {
charvalid &= ~INK;
ink = Null;
}
if(paper != fmt.paper) {
charvalid &= ~PAPER;
paper = Null;
}
if(language != fmt.language) {
charvalid &= ~LANG;
language = 0;
}
if(link != fmt.link) {
charvalid &= ~LINK;
link = Null;
}
if(indexentry != fmt.indexentry) {
charvalid &= ~INDEXENTRY;
indexentry = Null;
}
}
void RichTxt::FormatInfo::Combine(const RichPara::Format& fmt)
{
if(align != fmt.align)
paravalid &= ~ALIGN;
if(before != fmt.before)
paravalid &= ~BEFORE;
if(lm != fmt.lm)
paravalid &= ~LM;
if(indent != fmt.indent)
paravalid &= ~INDENT;
if(rm != fmt.rm)
paravalid &= ~RM;
if(after != fmt.after)
paravalid &= ~AFTER;
if(tabsize != fmt.tabsize)
paravalid &= ~TABSIZE;
if(bullet != fmt.bullet)
paravalid &= ~BULLET;
if(newpage != fmt.newpage)
paravalid &= ~NEWPAGE;
if(keep != fmt.keep)
paravalid &= ~KEEP;
if(keepnext != fmt.keepnext)
paravalid &= ~KEEPNEXT;
if(orphan != fmt.orphan)
paravalid &= ~ORPHAN;
if(label != fmt.label)
paravalid &= ~LABEL;
if(NumberingDiffers(*this, fmt))
paravalid &= ~NUMBERING;
if(tab.GetCount() != fmt.tab.GetCount()) {
paravalid &= ~TABS;
tab.Clear();
}
else
for(int i = 0; i < tab.GetCount(); i++)
if(tab[i].pos != fmt.tab[i].pos || tab[i].align != fmt.tab[i].align ||
tab[i].fillchar != fmt.tab[i].fillchar) {
paravalid &= ~TABS;
tab.Clear();
break;
}
if(styleid != fmt.styleid)
paravalid &= ~STYLE;
if(linespacing != fmt.linespacing)
paravalid &= ~SPACING;
if(ruler != fmt.ruler)
paravalid &= ~RULER;
if(rulerink != fmt.rulerink)
paravalid &= ~RULERINK;
}
void RichTxt::FormatInfo::ApplyTo(RichPara::CharFormat& fmt) const
{
if(charvalid & BOLD)
fmt.Bold(IsBold());
if(charvalid & ITALIC)
fmt.Italic(IsItalic());
if(charvalid & UNDERLINE)
fmt.Underline(IsUnderline());
if(charvalid & STRIKEOUT)
fmt.Strikeout(IsStrikeout());
if(charvalid & NOAA)
fmt.NonAntiAliased(IsNonAntiAliased());
if(charvalid & CAPITALS)
fmt.capitals = capitals;
if(charvalid & DASHED)
fmt.dashed = dashed;
if(charvalid & SSCRIPT)
fmt.sscript = sscript;
if(charvalid & FACE)
fmt.Face(GetFace());
if(charvalid & HEIGHT)
fmt.Height(GetHeight());
if(charvalid & LANGUAGE)
fmt.language = language;
if(charvalid & INK)
fmt.ink = ink;
if(charvalid & PAPER)
fmt.paper = paper;
if(charvalid & LANG)
fmt.language = language;
if(charvalid & LINK)
fmt.link = link;
if(charvalid & INDEXENTRY)
fmt.indexentry = indexentry;
}
void RichTxt::FormatInfo::ApplyTo(RichPara::Format& fmt) const
{
ApplyTo((RichPara::CharFormat &)fmt);
if(paravalid & ALIGN)
fmt.align = align;
if(paravalid & RULER)
fmt.ruler = ruler;
if(paravalid & BEFORE)
fmt.before = before;
if(paravalid & LM)
fmt.lm = lm;
if(paravalid & INDENT)
fmt.indent = indent;
if(paravalid & RM)
fmt.rm = rm;
if(paravalid & AFTER)
fmt.after = after;
if(paravalid & TABSIZE)
fmt.tabsize = tabsize;
if(paravalid & BULLET)
fmt.bullet = bullet;
if(paravalid & NEWPAGE)
fmt.newpage = newpage;
if(paravalid & KEEP)
fmt.keep = keep;
if(paravalid & KEEPNEXT)
fmt.keepnext = keepnext;
if(paravalid & ORPHAN)
fmt.orphan = orphan;
if(paravalid & LABEL)
fmt.label = label;
if(paravalid & NUMBERING) {
fmt.before_number = before_number;
fmt.after_number = after_number;
fmt.reset_number = reset_number;
memcpy(fmt.number, number, sizeof(number));
}
// if(paravalid & TABS)
// fmt.tab = tab;
if(paravalid & STYLE)
fmt.styleid = styleid;
if(paravalid & SPACING)
fmt.linespacing = linespacing;
if(paravalid & RULERINK)
fmt.rulerink = rulerink;
}
END_UPP_NAMESPACE