/*************************************************************************** imagemap.h - description ------------------- begin : Wed Apr 4 2001 copyright : (C) 2001 by Jan Schäfer email : janschaefer@users.sourceforge.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 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef IMAGEMAP_H #define IMAGEMAP_H #include #include #include #include #include #include "tdeversion.h" class KImageMapEditor; class Area; /** *@short Draws the image and areas and handle the draw actions *@author Jan Schäfer *@internal *@see Area */ class DrawZone : public TQScrollView { public: DrawZone(TQWidget *parent,KImageMapEditor* _imageMapEditor); ~DrawZone(); TQImage picture() const; void repaintArea(const Area & a); void repaintRect(const TQRect & r); void cancelDrawing(); void setPicture(const TQImage &_image); void setZoom(double z); TQPoint translateFromZoom(const TQPoint & p) const; TQRect translateFromZoom(const TQRect & p) const; TQPoint translateToZoom(const TQPoint & p) const; TQRect translateToZoom(const TQRect & p) const; TQRect getImageRect() const { return image.rect(); } protected: virtual void contentsMouseDoubleClickEvent(TQMouseEvent*); virtual void contentsMousePressEvent(TQMouseEvent*); virtual void contentsMouseReleaseEvent(TQMouseEvent*); virtual void contentsMouseMoveEvent(TQMouseEvent*); virtual void resizeEvent(TQResizeEvent*); virtual void drawContents(TQPainter*,int,int,int,int); virtual void viewportDropEvent(TQDropEvent*); virtual void contentsDragEnterEvent(TQDragEnterEvent*); virtual void contentsDropEvent(TQDropEvent*); /** * Represents whats currently going on * @li None : Nothing * @li DrawCircle : The user is drawing a circle * @li DrawRectangle : The user is drawing a rectangle * @li MoveSelectionPoint : The user is resizing an @ref Area or moving a polygon point * @li MoveArea : The user is moving an @ref Area * @li DoSelect : The user makes a selection rectangle */ enum DrawAction { None, DrawCircle, DrawRectangle, DrawPolygon, DrawFreehand, MoveSelectionPoint, MoveArea, DoSelect, RemovePoint, AddPoint }; void createBorderRectangles(const TQRect & r,TQRect & rb,TQRect & lb,TQRect & tb,TQRect & bb); private: DrawAction currentAction; // The currently drawing area Area *currentArea; // Needed when moving selectionpoints TQRect *currentSelectionPoint; // The point where the user clicked the mouse TQPoint drawStart; TQPoint drawCurrent; // The original image TQImage image; KImageMapEditor *imageMapEditor; // Only the rect of the zoomed image, perhaps redundant TQRect imageRect; // Only for repaint issues Area *oldArea; TQRect oldSelectionRect; // Holds the zoomed image for efficiency reasons TQPixmap zoomedImage; // The current zoom-factor double _zoom; TQCursor RectangleCursor; TQCursor CircleCursor; TQCursor PolygonCursor; TQCursor FreehandCursor; TQCursor AddPointCursor; TQCursor RemovePointCursor; }; inline TQImage DrawZone::picture() const { return image; } #endif