File indexing completed on 2025-03-09 04:03:43
0001 /* This file is part of the KDE project 0002 * SPDX-FileCopyrightText: 2007, 2009 Jan Hambrecht <jaham@gmx.net> 0003 * SPDX-FileCopyrightText: 2010 Thorsten Zachmann <zachmann@kde.org> 0004 * 0005 * SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "SvgGradientHelper.h" 0009 0010 #include <QConicalGradient> 0011 #include <QLinearGradient> 0012 #include <QRadialGradient> 0013 0014 #include <cmath> 0015 #include <KoFlake.h> 0016 0017 SvgGradientHelper::SvgGradientHelper() 0018 : m_gradient(new QGradient()) 0019 , m_meshgradient(new SvgMeshGradient) 0020 , m_gradientUnits(KoFlake::ObjectBoundingBox) 0021 { 0022 } 0023 0024 SvgGradientHelper::~SvgGradientHelper() 0025 { 0026 } 0027 0028 SvgGradientHelper::SvgGradientHelper(const SvgGradientHelper &other) 0029 : m_gradient(KoFlake::cloneGradient(other.m_gradient.data())) 0030 , m_meshgradient(new SvgMeshGradient(*other.m_meshgradient)) 0031 , m_gradientUnits(other.m_gradientUnits) 0032 , m_gradientTransform(other.m_gradientTransform) 0033 { 0034 } 0035 0036 SvgGradientHelper & SvgGradientHelper::operator = (const SvgGradientHelper & rhs) 0037 { 0038 if (this == &rhs) 0039 return *this; 0040 0041 m_gradientUnits = rhs.m_gradientUnits; 0042 m_gradientTransform = rhs.m_gradientTransform; 0043 m_gradient.reset(KoFlake::cloneGradient(rhs.m_gradient.data())); 0044 m_meshgradient.reset(new SvgMeshGradient(*rhs.m_meshgradient)); 0045 0046 return *this; 0047 } 0048 0049 void SvgGradientHelper::setGradientUnits(KoFlake::CoordinateSystem units) 0050 { 0051 m_gradientUnits = units; 0052 } 0053 0054 KoFlake::CoordinateSystem SvgGradientHelper::gradientUnits() const 0055 { 0056 return m_gradientUnits; 0057 } 0058 0059 QGradient * SvgGradientHelper::gradient() const 0060 { 0061 return m_gradient.data(); 0062 } 0063 0064 void SvgGradientHelper::setGradient(QGradient * g) 0065 { 0066 m_gradient.reset(g); 0067 } 0068 0069 void SvgGradientHelper::setMeshGradient(SvgMeshGradient *g) 0070 { 0071 m_meshgradient.reset(new SvgMeshGradient(*g)); 0072 } 0073 0074 QScopedPointer<SvgMeshGradient>& SvgGradientHelper::meshgradient() 0075 { 0076 return m_meshgradient; 0077 } 0078 0079 bool SvgGradientHelper::isMeshGradient() const 0080 { 0081 return m_meshgradient->isValid(); 0082 } 0083 0084 QTransform SvgGradientHelper::transform() const 0085 { 0086 return m_gradientTransform; 0087 } 0088 0089 void SvgGradientHelper::setTransform(const QTransform &transform) 0090 { 0091 m_gradientTransform = transform; 0092 } 0093 0094 QGradient::Spread SvgGradientHelper::spreadMode() const 0095 { 0096 return m_gradient->spread(); 0097 } 0098 0099 void SvgGradientHelper::setSpreadMode(const QGradient::Spread &spreadMode) 0100 { 0101 m_gradient->setSpread(spreadMode); 0102 }