Commit c38803ce authored by Jan Hambrecht's avatar Jan Hambrecht

added command for changing the fill rule of path shapes

svn path=/trunk/koffice/; revision=707074
parent 8fcaa2a4
......@@ -109,6 +109,7 @@ set(flake_SRCS
commands/KoParameterHandleMoveCommand.cpp
commands/KoParameterToPathCommand.cpp
commands/KoShapeTransformCommand.cpp
commands/KoPathFillRuleCommand.cpp
)
kde4_add_ui_files(flake_SRCS
......
/* This file is part of the KDE project
* Copyright (C) 2007 Jan Hambrecht <jaham@gmx.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#include "KoPathFillRuleCommand.h"
#include "KoPathShape.h"
#include <klocale.h>
class KoPathFillRuleCommand::Private {
public:
Private(Qt::FillRule fillRule) : newFillRule(fillRule)
{
}
QList<KoPathShape*> shapes; ///< the shapes to set fill rule for
QList<Qt::FillRule> oldFillRules; ///< the old fill rules, one for each shape
Qt::FillRule newFillRule; ///< the new fill rule to set
};
KoPathFillRuleCommand::KoPathFillRuleCommand( const QList<KoPathShape*> &shapes, Qt::FillRule fillRule, QUndoCommand *parent )
: QUndoCommand( parent )
, d(new Private(fillRule))
{
d->shapes = shapes;
foreach( KoPathShape *shape, d->shapes )
d->oldFillRules.append( shape->fillRule() );
setText( i18n( "Set fill rule" ) );
}
KoPathFillRuleCommand::~KoPathFillRuleCommand() {
delete d;
}
void KoPathFillRuleCommand::redo () {
QUndoCommand::redo();
foreach( KoPathShape *shape, d->shapes ) {
shape->setFillRule( d->newFillRule );
shape->repaint();
}
}
void KoPathFillRuleCommand::undo () {
QUndoCommand::undo();
QList<Qt::FillRule>::iterator ruleIt = d->oldFillRules.begin();
foreach( KoPathShape *shape, d->shapes ) {
shape->setFillRule( *ruleIt );
shape->repaint();
ruleIt++;
}
}
/* This file is part of the KDE project
* Copyright (C) 2007 Jan Hambrecht <jaham@gmx.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef KOPATHFILLRULECOMMAND_H
#define KOPATHFILLRULECOMMAND_H
#include <flake_export.h>
#include <QUndoCommand>
#include <QList>
class KoPathShape;
/// The undo / redo command for setting the fill rule of a path shape
class FLAKE_EXPORT KoPathFillRuleCommand : public QUndoCommand {
public:
/**
* Command to set a new shape background.
* @param shapes a set of all the path shapes that should get the new fill rule
* @param fillrule the new fill rule
* @param parent the parent command used for macro commands
*/
KoPathFillRuleCommand( const QList<KoPathShape*> &shapes, Qt::FillRule fillRule, QUndoCommand *parent = 0 );
virtual ~KoPathFillRuleCommand();
/// redo the command
void redo ();
/// revert the actions done in redo
void undo ();
private:
class Private;
Private * const d;
};
#endif // KOPATHFILLRULECOMMAND_H
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment