This commit is contained in:
Elena.Subbotina
2023-10-06 11:57:01 +03:00
parent a3636c7c24
commit 97b95de08b
3 changed files with 45 additions and 33 deletions

View File

@ -1711,7 +1711,7 @@ bool OOXrPrReader::Parse( ReaderParameter oParam, RtfCharProperty& oOutputProper
}
if ( m_ooxRunProps->m_oTextOutline.IsInit())
{
unsigned int nColor = 0; //black
unsigned long nColor = 0; //black
_CP_OPT(double) opacity;
OOXShapeReader::Parse(oParam, &m_ooxRunProps->m_oTextOutline->Fill, nColor, opacity);
@ -1722,7 +1722,7 @@ bool OOXrPrReader::Parse( ReaderParameter oParam, RtfCharProperty& oOutputProper
}
if ( m_ooxRunProps->m_oTextFill.is_init())
{
unsigned int nColor = 0; //black
unsigned long nColor = 0; //black
_CP_OPT(double) opacity;
OOXShapeReader::Parse(oParam, &m_ooxRunProps->m_oTextFill, nColor, opacity);

View File

@ -673,7 +673,7 @@ bool OOXShapeReader::ParseVmlChild( ReaderParameter oParam , RtfShapePtr& pOutpu
// }
// return result;
//}
//void OOXShapeReader::Parse(ReaderParameter oParam, OOX::Drawing::CSchemeColor *oox_ShemeClr, unsigned int & nColor, _CP_OPT(double) &opacity)
//void OOXShapeReader::Parse(ReaderParameter oParam, OOX::Drawing::CSchemeColor *oox_ShemeClr, unsigned long & nColor, _CP_OPT(double) &opacity)
//{
// if (!oox_ShemeClr)return;
//
@ -692,28 +692,30 @@ bool OOXShapeReader::ParseVmlChild( ReaderParameter oParam , RtfShapePtr& pOutpu
// }
//}
//
void OOXShapeReader::Parse(ReaderParameter oParam, PPTX::Logic::ColorBase *oox_color, unsigned int & nColor , _CP_OPT(double) &opacity)
void OOXShapeReader::Parse(ReaderParameter oParam, PPTX::Logic::ColorBase *oox_color, unsigned long & nColor , _CP_OPT(double) &opacity)
{
if (!oox_color) return;
oox_color->SetParentFilePointer(oParam.oDocx->m_pTheme);
PPTX::Logic::ClrMap* pClrMap = oParam.oDocx->m_oMain.settings ? oParam.oDocx->m_oMain.settings->m_oClrSchemeMapping.GetPointer() : NULL;
BYTE alpha = oox_color->alpha;
if (alpha != 0xff)
opacity = alpha;
nColor = (oox_color->blue << 16) + (oox_color->green << 8) + oox_color->red;
//switch( oox_color->m_eType )
//{
// case OOX::Drawing::colorSheme: Parse(oParam, &oox_color->m_oShemeClr, nColor, opacity); break;
// case OOX::Drawing::colorHsl: Parse(oParam, &oox_color->m_oHslClr, nColor, opacity); break;
// case OOX::Drawing::colorPrst: Parse(oParam, &oox_color->m_oPrstClr, nColor, opacity); break;
// case OOX::Drawing::colorScRgb: Parse(oParam, &oox_color->m_oScrgbClr, nColor, opacity); break;
// case OOX::Drawing::colorSRgb: Parse(oParam, &oox_color->m_oSrgbClr, nColor, opacity); break;
// case OOX::Drawing::colorSys: Parse(oParam, &oox_color->m_oSysClr, nColor, opacity); break;
// default: break;
// }
smart_ptr<PPTX::Logic::ClrMap> clrMap(pClrMap); clrMap.AddRef();
smart_ptr<PPTX::Theme> theme(oParam.oDocx->m_pTheme); theme.AddRef();
nColor = oox_color->GetRGBColor(theme, clrMap, 0); // ARGB
if ((nColor >> 24) != 0xff)
{
opacity = ((nColor >> 24) / 255.) * 100.;
}
nColor = nColor & 0x00ffffff;
BYTE b = (nColor & 0xFF);
BYTE g = (nColor & 0xFF00) >> 8;
BYTE r = (nColor & 0xFF0000) >> 16;
nColor = (b << 16) + (g << 8) + r;
}
//void OOXShapeReader::Parse(ReaderParameter oParam, OOX::Drawing::Colors::CColorTransform *oox_Clr, unsigned int & nColor, _CP_OPT(double) &opacity)
//void OOXShapeReader::Parse(ReaderParameter oParam, OOX::Drawing::Colors::CColorTransform *oox_Clr, unsigned long & nColor, _CP_OPT(double) &opacity)
//{
// if (!oox_Clr)return;
// BYTE ucA=0, ucG=0, ucB=0, ucR =0;
@ -722,7 +724,7 @@ void OOXShapeReader::Parse(ReaderParameter oParam, PPTX::Logic::ColorBase *oox_c
// nColor = RGB(ucR, ucG, ucB);
// if (ucA !=255)opacity = (ucA/255.)* 100.;
//}
void OOXShapeReader::Parse(ReaderParameter oParam, PPTX::Logic::SolidFill *oox_solid_fill, unsigned int & nColor , _CP_OPT(double) &opacity)
void OOXShapeReader::Parse(ReaderParameter oParam, PPTX::Logic::SolidFill *oox_solid_fill, unsigned long & nColor , _CP_OPT(double) &opacity)
{
if (!oox_solid_fill) return;
Parse(oParam, oox_solid_fill->Color.Color.operator ->(), nColor, opacity);
@ -742,13 +744,17 @@ void OOXShapeReader::Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::L
{
if (!oox_solid_fill) return;
unsigned int nColor = 0xffffff; //white
unsigned long nColor = 0xffffff; //white
_CP_OPT(double) opacity;
if (change_color && oox_solid_fill->Color.getType() == OOX::et_a_schemeClr)
{
nColor = oParam.oDocx->m_pTheme->themeElements.clrScheme.GetABGRFromScheme(change_color->val.get());
opacity = nColor & 0xff000000;
if ((nColor >> 24) != 0xff)
{
opacity = ((nColor >> 24) / 255.) * 100.;
}
nColor = nColor & 0x00ffffff;
}
else
@ -921,13 +927,16 @@ void OOXShapeReader::Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::L
for (size_t i = 0; i < oox_grad_fill->GsLst.size(); i++)
{
unsigned int nColor;
unsigned long nColor;
_CP_OPT(double) opacity;
if (change_color && oox_grad_fill->GsLst[i].color.getType() == OOX::et_a_schemeClr)
{
nColor = oParam.oDocx->m_pTheme->themeElements.clrScheme.GetABGRFromScheme(change_color->val.get());
opacity = nColor & 0xff000000;
if ((nColor >> 24) != 0xff)
{
opacity = ((nColor >> 24) / 255.) * 100.;
}
nColor = nColor & 0x00ffffff;
}
else
@ -977,12 +986,15 @@ void OOXShapeReader::Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::L
}
else if (fill.IsInit())
{
unsigned int nColor = 0; //black
unsigned long nColor = 0; //black
_CP_OPT(double) opacity;
if (change_color && fill->Color.getType() == OOX::et_a_schemeClr)
{
nColor = oParam.oDocx->m_pTheme->themeElements.clrScheme.GetABGRFromScheme(change_color->val.get());
opacity = nColor & 0xff000000;
if ((nColor >> 24) != 0xff)
{
opacity = ((nColor >> 24) / 255.) * 100.;
}
nColor = nColor & 0x00ffffff;
}
else
@ -1274,7 +1286,7 @@ bool OOXShapeReader::ParseShape( ReaderParameter oParam, RtfShapePtr& pOutput)
}
if (oox_sp_style->fontRef.Color.is_init())
{
unsigned int nColor = 0; //black
unsigned long nColor = 0; //black
_CP_OPT(double) opacity;
OOXShapeReader::Parse(oParam, oox_sp_style->fontRef.Color.Color.operator ->(), nColor, opacity);
@ -2022,7 +2034,7 @@ bool OOXShapeReader::WriteDataToPicture( std::wstring sPath, RtfPicture& pOutput
}
return true;
}
void OOXShapeReader::Parse(ReaderParameter oParam, PPTX::Logic::UniFill *uni_fill, unsigned int & nColor, _CP_OPT(double) &opacity)
void OOXShapeReader::Parse(ReaderParameter oParam, PPTX::Logic::UniFill *uni_fill, unsigned long & nColor, _CP_OPT(double) &opacity)
{
if (!uni_fill) return;
@ -2040,7 +2052,7 @@ void OOXShapeReader::Parse(ReaderParameter oParam, PPTX::Logic::UniFill *uni_fil
{
NSCommon::smart_ptr<PPTX::Logic::GradFill> fill = uni_fill->Fill.smart_dynamic_cast<PPTX::Logic::GradFill>();
unsigned int nColor = 0; //black
unsigned long nColor = 0; //black
_CP_OPT(double) opacity;
if (!fill->GsLst.empty())

View File

@ -68,8 +68,8 @@ public:
bool ParseVmlObject ( ReaderParameter oParam , RtfShapePtr& oOutput);
static bool Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::BlipFill *oox_bitmap_fill);
static void Parse(ReaderParameter oParam, PPTX::Logic::UniFill *fill, unsigned int & nColor, _CP_OPT(double) &opacity);
static void Parse(ReaderParameter oParam, PPTX::Logic::ColorBase *oox_color, unsigned int & nColor, _CP_OPT(double) &opacity);
static void Parse(ReaderParameter oParam, PPTX::Logic::UniFill *fill, unsigned long & nColor, _CP_OPT(double) &opacity);
static void Parse(ReaderParameter oParam, PPTX::Logic::ColorBase *oox_color, unsigned long& nColor, _CP_OPT(double) &opacity);
static bool ParseVmlStyle(RtfShapePtr pShape, SimpleTypes::Vml::CCssProperty* prop);
@ -89,7 +89,7 @@ private:
void Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::BodyPr *text_properties);
void Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::Xfrm *xfrm);
void Parse(ReaderParameter oParam, PPTX::Logic::SolidFill *oox_solid_fill, unsigned int & nColor, _CP_OPT(double) &opacity);
void Parse(ReaderParameter oParam, PPTX::Logic::SolidFill *oox_solid_fill, unsigned long & nColor, _CP_OPT(double) &opacity);
void Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::StyleRef *style_ref, int type);
void Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::Ln *oox_line_prop, PPTX::Logic::SchemeClr* change_color = NULL);