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/libs/widgets/imageplugins/imageguidewidget.h

133 lines
3.5 KiB

/* ============================================================
*
* This file is a part of digiKam project
* http://www.digikam.org
*
* Date : 2004-08-20
* Description : a widget to display an image with guides
*
* Copyright (C) 2004-2008 Gilles Caulier <caulier dot gilles at gmail dot com>
*
* 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 IMAGEGUIDEWIDGET_H
#define IMAGEGUIDEWIDGET_H
// TQt includes.
#include <tqwidget.h>
#include <tqpoint.h>
#include <tqcolor.h>
// Local includes.
#include "dcolor.h"
#include "digikam_export.h"
class TQPixmap;
namespace Digikam
{
class DColor;
class ImageIface;
class ImageGuideWidgetPriv;
class DIGIKAM_EXPORT ImageGuideWidget : public TQWidget
{
TQ_OBJECT
public:
enum GuideToolMode
{
HVGuideMode=0,
PickColorMode
};
enum RenderingPreviewMode
{
PreviewOriginalImage=0, // Original image only.
PreviewBothImagesHorz, // Horizontal with original and target duplicated.
PreviewBothImagesVert, // Vertical with original and target duplicated.
PreviewBothImagesHorzCont, // Horizontal with original and target in contiguous.
PreviewBothImagesVertCont, // Vertical with original and target in contiguous.
PreviewTargetImage, // Target image only.
PreviewToggleOnMouseOver, // Original image if mouse is over image area, else target image.
NoPreviewMode // Target image only without information displayed.
};
enum ColorPointSrc
{
OriginalImage=0,
PreviewImage,
TargetPreviewImage
};
public:
ImageGuideWidget(int w, int h, TQWidget *parent=0,
bool spotVisible=true, int guideMode=HVGuideMode,
const TQColor& guideColor=TQt::red, int guideSize=1,
bool blink=false, bool useImageSelection=false);
~ImageGuideWidget();
ImageIface* imageIface();
TQPoint getSpotPosition();
DColor getSpotColor(int getColorFrom);
void setSpotVisible(bool spotVisible, bool blink=false);
int getRenderingPreviewMode();
void resetSpotPosition();
void updatePreview();
public slots:
void slotChangeGuideColor(const TQColor &color);
void slotChangeGuideSize(int size);
void slotChangeRenderingPreviewMode(int mode);
void slotToggleUnderExposure(bool);
void slotToggleOverExposure(bool);
signals:
void spotPositionChangedFromOriginal(const Digikam::DColor &color, const TQPoint &position);
void spotPositionChangedFromTarget(const Digikam::DColor &color, const TQPoint &position);
void signalResized();
protected:
void paintEvent(TQPaintEvent*);
void resizeEvent(TQResizeEvent*);
void timerEvent(TQTimerEvent*);
void mousePressEvent(TQMouseEvent*);
void mouseReleaseEvent(TQMouseEvent*);
void mouseMoveEvent(TQMouseEvent*);
void enterEvent(TQEvent*);
void leaveEvent(TQEvent*);
private:
void updatePixmap();
private:
ImageGuideWidgetPriv *d;
};
} // NameSpace Digikam
#endif /* IMAGEGUIDEWIDGET_H */