/* * Copyright (c) 2004 Boudewijn Rempt * * 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. * * 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. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef KIS_SELECTION_MANAGER_ #define KIS_SELECTION_MANAGER_ #include "tqobject.h" #include "tqptrlist.h" #include "kis_image.h" #include class KAction; class KisView; class KisDoc; class KisClipboard; /** * The selection manager is responsible selections * and the clipboard. */ class KRITACORE_EXPORT KisSelectionManager : public TQObject { Q_OBJECT TQ_OBJECT public: KisSelectionManager(KisView * tqparent, KisDoc * doc); virtual ~KisSelectionManager(); void setup(KActionCollection * collection); void addSelectionAction(KAction * action); public: /** * This function return if the selection should be displayed */ bool displaySelection(); public slots: void updateGUI(); void imgSelectionChanged(KisImageSP img); void clipboardDataChanged(); void cut(); void copy(); KisLayerSP paste(); void pasteNew(); void cutToNewLayer(); void selectAll(); void deselect(); void clear(); void fillForegroundColor(); void fillBackgroundColor(); void fillPattern(); void reselect(); void invert(); void copySelectionToNewLayer(); void feather(); void border(); void expand(); void contract(); void smooth(); void similar(); void transform(); void load(); void save(); void toggleDisplaySelection(); public: void grow (TQ_INT32 xradius, TQ_INT32 yradius); void shrink (TQ_INT32 xradius, TQ_INT32 yradius, bool edge_lock); void border(TQ_INT32 xradius, TQ_INT32 yradius); // the following functions are needed for the siox tool // they might be also usefull on its own void erode(); void dilate(); private: void fill(const KisColor& color, bool fillWithPattern, const TQString& transactionText); void computeBorder (TQ_INT32 *circ, TQ_INT32 xradius, TQ_INT32 yradius); inline void rotatePointers (TQ_UINT8 **p, TQ_UINT32 n); void computeTransition (TQ_UINT8* transition, TQ_UINT8** buf, TQ_INT32 width); KisView * m_parent; KisDoc * m_doc; KisClipboard * m_clipboard; KAction *m_copy; KAction *m_cut; KAction *m_paste; KAction *m_pasteNew; KAction *m_cutToNewLayer; KAction *m_selectAll; KAction *m_deselect; KAction *m_clear; KAction *m_reselect; KAction *m_invert; KAction *m_toNewLayer; KAction *m_feather; KAction *m_border; KAction *m_expand; KAction *m_smooth; KAction *m_contract; KAction *m_similar; KAction *m_transform; KAction *m_load; KAction *m_save; KAction *m_fillForegroundColor; KAction *m_fillBackgroundColor; KAction *m_fillPattern; KToggleAction *m_toggleDisplaySelection; TQPtrList m_pluginActions; }; #endif // KIS_SELECTION_MANAGER_