mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@58333 954022d7-b5bf-4e40-9824-e11837661b57
243 lines
8.5 KiB
C++
243 lines
8.5 KiB
C++
//#include "./stdafx.h"
|
|
|
|
#include "UniEffect.h"
|
|
#include "Effects/OuterShdw.h" //1
|
|
#include "Effects/Glow.h" //2
|
|
#include "Effects/Duotone.h" //3
|
|
#include "Effects/XfrmEffect.h" //4
|
|
#include "Effects/Blur.h" //5
|
|
#include "Effects/PrstShdw.h" //6
|
|
#include "Effects/InnerShdw.h" //7
|
|
#include "Effects/Reflection.h" //8
|
|
#include "Effects/SoftEdge.h" //9
|
|
#include "Effects/FillOverlay.h" //10
|
|
#include "Effects/AlphaCeiling.h" //11
|
|
#include "Effects/AlphaFloor.h" //12
|
|
#include "Effects/TintEffect.h" //13
|
|
#include "Effects/RelOff.h" //14
|
|
#include "Effects/LumEffect.h" //15
|
|
#include "Effects/HslEffect.h" //16
|
|
#include "Effects/Grayscl.h" //17
|
|
#include "Effects/EffectElement.h" //18
|
|
#include "Effects/AlphaRepl.h" //19
|
|
#include "Effects/AlphaOutset.h" //20
|
|
#include "Effects/AlphaModFix.h" //21
|
|
#include "Effects/AlphaBiLevel.h" //22
|
|
#include "Effects/BiLevel.h" //23
|
|
#include "EffectDag.h" //24
|
|
#include "Effects/FillEffect.h" //25
|
|
#include "Effects/ClrRepl.h" //26
|
|
#include "Effects/ClrChange.h" //27
|
|
#include "Effects/AlphaInv.h" //28
|
|
#include "Effects/AlphaMod.h" //29
|
|
#include "Effects/Blend.h" //30
|
|
|
|
namespace PPTX
|
|
{
|
|
namespace Logic
|
|
{
|
|
UniEffect::UniEffect()
|
|
{
|
|
}
|
|
|
|
UniEffect::~UniEffect()
|
|
{
|
|
//Effect.reset();
|
|
}
|
|
|
|
UniEffect::UniEffect(XmlUtils::CXmlNode& node)
|
|
{
|
|
fromXML(node);
|
|
}
|
|
|
|
const UniEffect& UniEffect::operator =(XmlUtils::CXmlNode& node)
|
|
{
|
|
fromXML(node);
|
|
return *this;
|
|
}
|
|
|
|
void UniEffect::fromXML(XmlUtils::CXmlNode& node)
|
|
{
|
|
CString name = XmlUtils::GetNameNoNS(node.GetName());
|
|
|
|
if (name == _T(""))
|
|
return;
|
|
switch ((int)name[0])
|
|
{
|
|
case 'a':
|
|
{
|
|
if (name == _T("alphaCeiling")){ Effect.reset(new Logic::AlphaCeiling(node)); break; } //1
|
|
if (name == _T("alphaFloor")){ Effect.reset(new Logic::AlphaFloor(node)); break; } //2
|
|
if (name == _T("alphaRepl")){ Effect.reset(new Logic::AlphaRepl(node)); break; } //3
|
|
if (name == _T("alphaOutset")){ Effect.reset(new Logic::AlphaOutset(node)); break; } //4
|
|
if (name == _T("alphaModFix")){ Effect.reset(new Logic::AlphaModFix(node)); break; } //5
|
|
if (name == _T("alphaBiLevel")){ Effect.reset(new Logic::AlphaBiLevel(node)); break; } //6
|
|
if (name == _T("alphaInv")){ Effect.reset(new Logic::AlphaInv(node)); break; } //7
|
|
if (name == _T("alphaMod")){ Effect.reset(new Logic::AlphaMod(node)); break; } //8
|
|
break;
|
|
}
|
|
case 'b':
|
|
{
|
|
if (name == _T("blur")){ Effect.reset(new Logic::Blur(node)); break; } //9
|
|
if (name == _T("biLevel")){ Effect.reset(new Logic::BiLevel(node)); break; } //10
|
|
if (name == _T("blend")){ Effect.reset(new Logic::Blend(node)); break; } //11
|
|
break;
|
|
}
|
|
case 'c':
|
|
{
|
|
if (name == _T("cont")){ Effect.reset(new Logic::EffectDag(node)); break; } //12
|
|
if (name == _T("clrRepl")){ Effect.reset(new Logic::ClrRepl(node)); break; } //13
|
|
if (name == _T("clrChange")){ Effect.reset(new Logic::ClrChange(node)); break; } //14
|
|
break;
|
|
}
|
|
case 'd':
|
|
{
|
|
if (name == _T("duotone")){ Effect.reset(new Logic::Duotone(node)); break; } //15
|
|
break;
|
|
}
|
|
case 'e':
|
|
{
|
|
if (name == _T("effect")){ Effect.reset(new Logic::EffectElement(node)); break; } //16
|
|
break;
|
|
}
|
|
case 'f':
|
|
{
|
|
if (name == _T("fillOverlay")){ Effect.reset(new Logic::FillOverlay(node)); break; } //17
|
|
if (name == _T("fill")){ Effect.reset(new Logic::FillEffect(node)); break; } //18
|
|
break;
|
|
}
|
|
case 'g':
|
|
{
|
|
if (name == _T("glow")){ Effect.reset(new Logic::Glow(node)); break; } //19
|
|
if (name == _T("grayscl")){ Effect.reset(new Logic::Grayscl(node)); break; } //20
|
|
break;
|
|
}
|
|
case 'h':
|
|
{
|
|
if (name == _T("hsl")){ Effect.reset(new Logic::HslEffect(node)); break; } //21
|
|
break;
|
|
}
|
|
case 'i':
|
|
{
|
|
if (name == _T("innerShdw")){ Effect.reset(new Logic::InnerShdw(node)); break; } //22
|
|
break;
|
|
}
|
|
case 'l':
|
|
{
|
|
if (name == _T("lum")){ Effect.reset(new Logic::LumEffect(node)); break; } //23
|
|
break;
|
|
}
|
|
case 'o':
|
|
{
|
|
if (name == _T("outerShdw")){ Effect.reset(new Logic::OuterShdw(node)); break; } //24
|
|
break;
|
|
}
|
|
case 'p':
|
|
{
|
|
if (name == _T("prstShdw")){ Effect.reset(new Logic::PrstShdw(node)); break; } //25
|
|
break;
|
|
}
|
|
case 'r':
|
|
{
|
|
if (name == _T("reflection")){ Effect.reset(new Logic::Reflection(node)); break; } //26
|
|
if (name == _T("relOff")){ Effect.reset(new Logic::RelOff(node)); break; } //27
|
|
break;
|
|
}
|
|
case 's':
|
|
{
|
|
if (name == _T("softEdge")){ Effect.reset(new Logic::SoftEdge(node)); break; } //28
|
|
break;
|
|
}
|
|
case 't':
|
|
{
|
|
if (name == _T("tint")){ Effect.reset(new Logic::TintEffect(node)); break; } //29
|
|
break;
|
|
}
|
|
case 'x':
|
|
{
|
|
if (name == _T("xfrm")){ Effect.reset(new Logic::XfrmEffect(node)); break; } //30
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
Effect.reset();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void UniEffect::GetEffectFrom(XmlUtils::CXmlNode& element)
|
|
{
|
|
XmlUtils::CXmlNode oNode;
|
|
|
|
if(element.GetNode(_T("a:outerShdw"), oNode))
|
|
Effect.reset(new Logic::OuterShdw(oNode)); //1
|
|
else if(element.GetNode(_T("a:glow"), oNode))
|
|
Effect.reset(new Logic::Glow(oNode)); //2
|
|
else if(element.GetNode(_T("a:duotone"), oNode))
|
|
Effect.reset(new Logic::Duotone(oNode)); //3
|
|
else if(element.GetNode(_T("a:xfrm"), oNode))
|
|
Effect.reset(new Logic::XfrmEffect(oNode)); //4
|
|
else if(element.GetNode(_T("a:blur"), oNode))
|
|
Effect.reset(new Logic::Blur(oNode)); //5
|
|
else if(element.GetNode(_T("a:prstShdw"), oNode))
|
|
Effect.reset(new Logic::PrstShdw(oNode)); //6
|
|
else if(element.GetNode(_T("a:innerShdw"), oNode))
|
|
Effect.reset(new Logic::InnerShdw(oNode)); //7
|
|
else if(element.GetNode(_T("a:reflection"), oNode))
|
|
Effect.reset(new Logic::Reflection(oNode)); //8
|
|
else if(element.GetNode(_T("a:softEdge"), oNode))
|
|
Effect.reset(new Logic::SoftEdge(oNode)); //9
|
|
else if(element.GetNode(_T("a:fillOverlay"), oNode))
|
|
Effect.reset(new Logic::FillOverlay(oNode)); //10
|
|
else if(element.GetNode(_T("a:alphaCeiling"), oNode))
|
|
Effect.reset(new Logic::AlphaCeiling(oNode)); //11
|
|
else if(element.GetNode(_T("a:alphaFloor"), oNode))
|
|
Effect.reset(new Logic::AlphaFloor(oNode)); //12
|
|
else if(element.GetNode(_T("a:tint"), oNode))
|
|
Effect.reset(new Logic::TintEffect(oNode)); //13
|
|
else if(element.GetNode(_T("a:relOff"), oNode))
|
|
Effect.reset(new Logic::RelOff(oNode)); //14
|
|
else if(element.GetNode(_T("a:lum"), oNode))
|
|
Effect.reset(new Logic::LumEffect(oNode)); //15
|
|
else if(element.GetNode(_T("a:hsl"), oNode))
|
|
Effect.reset(new Logic::HslEffect(oNode)); //16
|
|
else if(element.GetNode(_T("a:grayscl"), oNode))
|
|
Effect.reset(new Logic::Grayscl(oNode)); //17
|
|
else if(element.GetNode(_T("a:effect"), oNode))
|
|
Effect.reset(new Logic::EffectElement(oNode)); //18
|
|
else if(element.GetNode(_T("a:alphaRepl"), oNode))
|
|
Effect.reset(new Logic::AlphaRepl(oNode)); //19
|
|
else if(element.GetNode(_T("a:alphaOutset"), oNode))
|
|
Effect.reset(new Logic::AlphaOutset(oNode)); //20
|
|
else if(element.GetNode(_T("a:alphaModFix"), oNode))
|
|
Effect.reset(new Logic::AlphaModFix(oNode)); //21
|
|
else if(element.GetNode(_T("a:alphaBiLevel"), oNode))
|
|
Effect.reset(new Logic::AlphaBiLevel(oNode)); //22
|
|
else if(element.GetNode(_T("a:biLevel"), oNode))
|
|
Effect.reset(new Logic::BiLevel(oNode)); //23
|
|
else if(element.GetNode(_T("a:cont"), oNode))
|
|
Effect.reset(new Logic::EffectDag(oNode)); //24
|
|
else if(element.GetNode(_T("a:fill"), oNode))
|
|
Effect.reset(new Logic::FillEffect(oNode)); //25
|
|
else if(element.GetNode(_T("a:clrRepl"), oNode))
|
|
Effect.reset(new Logic::ClrRepl(oNode)); //26
|
|
else if(element.GetNode(_T("a:clrChange"), oNode))
|
|
Effect.reset(new Logic::ClrChange(oNode)); //27
|
|
else if(element.GetNode(_T("a:alphaInv"), oNode))
|
|
Effect.reset(new Logic::AlphaInv(oNode)); //28
|
|
else if(element.GetNode(_T("a:alphaMod"), oNode))
|
|
Effect.reset(new Logic::AlphaMod(oNode)); //29
|
|
else if(element.GetNode(_T("a:blend"), oNode))
|
|
Effect.reset(new Logic::Blend(oNode)); //5
|
|
else Effect.reset();
|
|
}
|
|
|
|
CString UniEffect::toXML() const
|
|
{
|
|
if (Effect.IsInit())
|
|
return Effect->toXML();
|
|
return _T("");
|
|
}
|
|
} // namespace Logic
|
|
} // namespace PPTX
|