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/imageplugins/border/border.h

152 lines
5.3 KiB

/* ============================================================
*
* This file is a part of digiKam project
* http://www.digikam.org
*
* Date : 2005-05-25
* Description : border threaded image filter.
*
* Copyright 2005-2007 by Gilles Caulier <caulier dot gilles at gmail dot com>
* Copyright 2006-2007 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
*
* 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.
*
* ============================================================ */
#ifndef BORDER_H
#define BORDER_H
// TQt includes.
#include <tqstring.h>
#include <tqcolor.h>
#include <tqimage.h>
// Digikam includes.
#include "dimgthreadedfilter.h"
namespace DigikamBorderImagesPlugin
{
class Border : public Digikam::DImgThreadedFilter
{
public:
enum BorderTypes
{
SolidBorder=0,
NiepceBorder,
BeveledBorder,
PineBorder,
WoodBorder,
PaperBorder,
ParqueBorder,
IceBorder,
LeafBorder,
MarbleBorder,
RainBorder,
CratersBorder,
DriedBorder,
PinkBorder,
StoneBorder,
ChalkBorder,
GraniteBorder,
RockBorder,
WallBorder
};
public:
/** Constructor using settings to preserve aspect ratio of image. */
Border(Digikam::DImg *orgImage, TQObject *parent=0, int orgWidth=0, int orgHeight=0,
TQString borderPath=TQString(), int borderType=SolidBorder, float borderPercent=0.1,
Digikam::DColor solidColor = Digikam::DColor(),
Digikam::DColor niepceBorderColor = Digikam::DColor(),
Digikam::DColor niepceLineColor = Digikam::DColor(),
Digikam::DColor bevelUpperLeftColor = Digikam::DColor(),
Digikam::DColor bevelLowerRightColor = Digikam::DColor(),
Digikam::DColor decorativeFirstColor = Digikam::DColor(),
Digikam::DColor decorativeSecondColor = Digikam::DColor());
/** Constructor using settings to not-preserve aspect ratio of image. */
Border(Digikam::DImg *orgImage, TQObject *parent=0, int orgWidth=0, int orgHeight=0,
TQString borderPath=TQString(), int borderType=SolidBorder,
int borderWidth1=100, int borderWidth2=20, int borderWidth3=20, int borderWidth4=10,
Digikam::DColor solidColor = Digikam::DColor(),
Digikam::DColor niepceBorderColor = Digikam::DColor(),
Digikam::DColor niepceLineColor = Digikam::DColor(),
Digikam::DColor bevelUpperLeftColor = Digikam::DColor(),
Digikam::DColor bevelLowerRightColor = Digikam::DColor(),
Digikam::DColor decorativeFirstColor = Digikam::DColor(),
Digikam::DColor decorativeSecondColor = Digikam::DColor());
~Border(){};
private:
virtual void filterImage(void);
/** Methods to preserve aspect ratio of image. */
void solid(Digikam::DImg &src, Digikam::DImg &dest, const Digikam::DColor &fg, int borderWidth);
void niepce(Digikam::DImg &src, Digikam::DImg &dest, const Digikam::DColor &fg, int borderWidth,
const Digikam::DColor &bg, int lineWidth);
void bevel(Digikam::DImg &src, Digikam::DImg &dest, const Digikam::DColor &topColor,
const Digikam::DColor &btmColor, int borderWidth);
void pattern(Digikam::DImg &src, Digikam::DImg &dest, int borderWidth, const Digikam::DColor &firstColor,
const Digikam::DColor &secondColor, int firstWidth, int secondWidth);
/** Methods to not-preserve aspect ratio of image. */
void solid2(Digikam::DImg &src, Digikam::DImg &dest, const Digikam::DColor &fg, int borderWidth);
void niepce2(Digikam::DImg &src, Digikam::DImg &dest, const Digikam::DColor &fg, int borderWidth,
const Digikam::DColor &bg, int lineWidth);
void bevel2(Digikam::DImg &src, Digikam::DImg &dest, const Digikam::DColor &topColor,
const Digikam::DColor &btmColor, int borderWidth);
void pattern2(Digikam::DImg &src, Digikam::DImg &dest, int borderWidth, const Digikam::DColor &firstColor,
const Digikam::DColor &secondColor, int firstWidth, int secondWidth);
private:
bool m_preserveAspectRatio;
int m_orgWidth;
int m_orgHeight;
int m_borderType;
int m_borderWidth1;
int m_borderWidth2;
int m_borderWidth3;
int m_borderWidth4;
int m_borderMainWidth;
int m_border2ndWidth;
float m_orgRatio;
TQString m_borderPath;
Digikam::DColor m_solidColor;
Digikam::DColor m_niepceBorderColor;
Digikam::DColor m_niepceLineColor;
Digikam::DColor m_bevelUpperLeftColor;
Digikam::DColor m_bevelLowerRightColor;
Digikam::DColor m_decorativeFirstColor;
Digikam::DColor m_decorativeSecondColor;
};
} // NameSpace DigikamBorderImagesPlugin
#endif /* BORDER_H */