You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
digikam/digikam/utilities/imageeditor/canvas/undoaction.cpp

186 lines
4.3 KiB

/* ============================================================
*
* This file is a part of digiKam project
* http://www.digikam.org
*
* Date : 2005-02-06
* Description : undo actions manager for image editor.
*
* Copyright (C) 2005 by Renchi Raju <renchi@pooh.tam.uiuc.edu>
* Copyright (C) 2005 by Joern Ahrens <joern.ahrens@kdemail.net>
*
* This program is free software; you can redistribute it
* and/or modify it under the terms of the GNU General
* Public License as published by the Free Software Foundation;
* either version 2, or (at your option)
* any later version.
*
* This program 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 General Public License for more details.
*
* ============================================================ */
// Local includes.
#include "ddebug.h"
#include "dimginterface.h"
#include "undoaction.h"
namespace Digikam
{
UndoAction::UndoAction(DImgInterface* iface)
: m_iface(iface)
{
m_title = i18n("unknown");
}
UndoAction::~UndoAction()
{
}
TQString UndoAction::getTitle() const
{
return m_title;
}
UndoActionRotate::UndoActionRotate(DImgInterface* iface,
UndoActionRotate::Angle angle)
: UndoAction(iface), m_angle(angle)
{
switch(m_angle)
{
case(R90):
m_title = i18n("Rotate 90 Degrees");
break;
case(R180):
m_title = i18n("Rotate 180 Degrees");
break;
case(R270):
m_title = i18n("Rotate 270 Degrees");
break;
}
}
UndoActionRotate::~UndoActionRotate()
{
}
void UndoActionRotate::rollBack()
{
switch(m_angle)
{
case(R90):
m_iface->rotate270(false);
return;
case(R180):
m_iface->rotate180(false);
return;
case(R270):
m_iface->rotate90(false);
return;
default:
DWarning() << "Unknown rotate angle specified" << endl;
}
}
void UndoActionRotate::execute()
{
switch(m_angle)
{
case R90:
m_iface->rotate90(false);
return;
case R180:
m_iface->rotate180(false);
return;
case R270:
m_iface->rotate270(false);
return;
default:
DWarning() << "Unknown rotate angle specified" << endl;
}
}
UndoActionFlip::UndoActionFlip(DImgInterface* iface,
UndoActionFlip::Direction dir)
: UndoAction(iface), m_dir(dir)
{
if(m_dir ==TQt::Horizontal)
m_title = i18n("Flip Horizontal");
else if(m_dir ==TQt::Vertical)
m_title = i18n("Flip Vertical");
}
UndoActionFlip::~UndoActionFlip()
{
}
void UndoActionFlip::rollBack()
{
switch(m_dir)
{
case TQt::Horizontal:
m_iface->flipHoriz(false);
return;
case TQt::Vertical:
m_iface->flipVert(false);
return;
default:
DWarning() << "Unknown flip direction specified" << endl;
}
}
void UndoActionFlip::execute()
{
rollBack();
}
UndoActionBCG::UndoActionBCG(DImgInterface* iface,
double oldGamma, double oldBrightness,
double oldContrast, double newGamma,
double newBrightness, double newContrast)
: UndoAction(iface), m_oldGamma(oldGamma), m_oldBrightness(oldBrightness),
m_oldContrast(oldContrast), m_newGamma(newGamma), m_newBrightness(newBrightness),
m_newContrast(newContrast)
{
m_title = i18n("Brightness,Contrast,Gamma");
}
UndoActionBCG::~UndoActionBCG()
{
}
void UndoActionBCG::rollBack()
{
m_iface->changeBCG(m_oldGamma, m_oldBrightness, m_oldContrast);
}
void UndoActionBCG::execute()
{
m_iface->changeBCG(m_newGamma, m_newBrightness, m_newContrast);
}
UndoActionIrreversible::UndoActionIrreversible(DImgInterface* iface,
const TQString &title)
: UndoAction(iface)
{
m_title = title;
}
UndoActionIrreversible::~UndoActionIrreversible()
{
}
void UndoActionIrreversible::rollBack()
{
}
void UndoActionIrreversible::execute()
{
}
} // namespace Digikam