From 4c9a24bf71799966ef838f8e85ef65e660c6b2a2 Mon Sep 17 00:00:00 2001 From: Elena Subbotina Date: Mon, 15 Dec 2025 21:07:19 +0300 Subject: [PATCH] fix bug #78986 --- MsBinaryFile/PptFile/Drawing/Attributes.h | 2 ++ MsBinaryFile/PptFile/PPTXWriter/ShapeWriter.cpp | 13 +++++++------ .../PptFile/Records/Drawing/ShapeContainer.cpp | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/MsBinaryFile/PptFile/Drawing/Attributes.h b/MsBinaryFile/PptFile/Drawing/Attributes.h index 7029dedc8d..be84015200 100644 --- a/MsBinaryFile/PptFile/Drawing/Attributes.h +++ b/MsBinaryFile/PptFile/Drawing/Attributes.h @@ -730,6 +730,7 @@ namespace ODRAW Gdiplus::RectF Rect; double LinearAngle; + int Focus; std::vector> ColorsPosition; @@ -815,6 +816,7 @@ namespace ODRAW TextureMode = c_BrushTextureModeStretch; LinearAngle = 0; + Focus = 0; TexturePath = L""; diff --git a/MsBinaryFile/PptFile/PPTXWriter/ShapeWriter.cpp b/MsBinaryFile/PptFile/PPTXWriter/ShapeWriter.cpp index c22e19b8f0..a933d28545 100644 --- a/MsBinaryFile/PptFile/PPTXWriter/ShapeWriter.cpp +++ b/MsBinaryFile/PptFile/PPTXWriter/ShapeWriter.cpp @@ -349,17 +349,18 @@ std::wstring PPT::CShapeWriter::ConvertBrush(CBrush & brush) brush_writer.WriteString(L""); brush_writer.WriteString(L" 180) brush.LinearAngle -= 180; + double val = 360 - brush.LinearAngle; + val += 90; - double val = (90 - brush.LinearAngle) ; - if (val < 0) val = 0; - if (val > 360) val -= 360; + if (val < 0) val += 360; + if (val >= 360) val -= 360; std::wstring str = std::to_wstring((int)(val * 60000)); brush_writer.WriteString(str); } - brush_writer.WriteString(L"\" scaled=\"1\"/>"); + brush_writer.WriteString(L"\""); + //brush_writer.WriteString(L" scaled = \"1\""); + brush_writer.WriteString(L"/>"); brush_writer.WriteString(L""); } else if(brush.Type == c_BrushTypePattern) diff --git a/MsBinaryFile/PptFile/Records/Drawing/ShapeContainer.cpp b/MsBinaryFile/PptFile/Records/Drawing/ShapeContainer.cpp index 943c00f334..8922864748 100644 --- a/MsBinaryFile/PptFile/Records/Drawing/ShapeContainer.cpp +++ b/MsBinaryFile/PptFile/Records/Drawing/ShapeContainer.cpp @@ -513,6 +513,7 @@ void CPPTElement::SetUpProperty(CElementPtr pElement, CTheme* pTheme, CSlideInfo }break; case fillFocus://relative position of the last color in the shaded fill { + pElement->m_oBrush.Focus = pProperty->m_lValue; }break; case fillShadePreset: {//value (int) from 0x00000088 through 0x0000009F or complex