diff options
Diffstat (limited to 'tdeiconedit/tdeicongrid.h')
-rw-r--r-- | tdeiconedit/tdeicongrid.h | 265 |
1 files changed, 265 insertions, 0 deletions
diff --git a/tdeiconedit/tdeicongrid.h b/tdeiconedit/tdeicongrid.h new file mode 100644 index 00000000..9f41084f --- /dev/null +++ b/tdeiconedit/tdeicongrid.h @@ -0,0 +1,265 @@ +/* + TDE Icon Editor - a small graphics drawing program for the TDE. + Copyright (C) 1998 Thomas Tanghus ([email protected]) + + 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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __TDEICONEDITGRID_H__ +#define __TDEICONEDITGRID_H__ + +#include <tqpixmap.h> +#include <tqimage.h> +#include <tqcursor.h> +#include <tqpointarray.h> +#include <tqframe.h> +#include <kcommand.h> +#include <tdelocale.h> + +#include "kcolorgrid.h" + +class KCommandHistory; +class KRuler; +class TDEIconEditGrid; +class TQScrollView; + +enum Direction { + DirIn = 0, DirOut = 1, + DirUp = DirIn, DirDown = DirOut, + DirLeft, DirRight +}; + +class DrawCommand : public KCommand { + public: + DrawCommand( int xx, int yy, uint newcol, TQImage* img, TDEIconEditGrid* g ) { + x = xx; + y = yy; + newcolor = newcol; + image = img; + grid = g; + } + + void execute(); + void unexecute(); + TQString name() const { + return i18n("Drawed Something"); + } + + protected: + int x; + int y; + uint newcolor; + uint oldcolor; + TQImage* image; + TDEIconEditGrid* grid; +}; + +class RepaintCommand : public KCommand { + public: + RepaintCommand( TQRect a, TDEIconEditGrid* g ) { + area = a; + grid = g; + } + + void execute(); + void unexecute() { + execute(); + } + + TQString name() const { + return "repainted"; + } + protected: + TDEIconEditGrid* grid; + TQRect area; +}; + +class KGridView : public TQFrame +{ + Q_OBJECT + +public: + KGridView( TQImage *image, KCommandHistory* history, TQWidget * parent = 0, const char *name = 0); + + KRuler *hruler() { return _hruler;} + KRuler *vruler() { return _vruler;} + TQFrame *corner() { return _corner;} + TDEIconEditGrid *grid() { return _grid; } + void setShowRulers(bool mode); + void setAcceptDrop(bool a); + const TQRect viewRect(); + TQScrollView *viewPortWidget() { return viewport;} + +public slots: + void sizeChange(int, int); + void moving(int, int); + void scalingChange(int); + void paintGrid(); + void checkClipboard(); + +protected: + virtual void paintEvent(TQPaintEvent*); + virtual void resizeEvent(TQResizeEvent*); + void paintDropSite(); + void setSizes(); + + TQFrame *_corner; + TDEIconEditGrid *_grid; + KRuler *_hruler, *_vruler; + TQScrollView *viewport; + bool acceptdrop; +}; + +/** +* TDEIconEditGrid +* @short TDEIconEditGrid +* @author Thomas Tanghus <[email protected]> +* @version 0.3 +*/ +class TDEIconEditGrid : public KColorGrid +{ + Q_OBJECT + +public: + TDEIconEditGrid( TQImage *image, KCommandHistory* h, TQWidget * parent = 0, const char *name = 0); + virtual ~TDEIconEditGrid(); + + enum DrawTool { Line, Freehand, FloodFill, Spray, Rect, FilledRect, Circle, + FilledCircle, Ellipse, FilledEllipse, Eraser, SelectRect, SelectCircle, Find }; + enum DrawAction { Mark, UnMark, Draw }; + + void setGrid(bool g) { KColorGrid::setGrid(g); emit needPainting(); } + bool isModified() { return modified; }; + void setModified(bool m); + const TQPixmap &pixmap(); + const TQImage &image() { return *img; } + TQImage clipboardImage(bool &ok); + TQImage getSelection(bool); + int rows() { return numRows(); }; + int cols() { return numCols(); }; + uint getColors( uint *_colors) { return colors(_colors); } + bool isMarked(TQPoint p); + bool isMarked(int x, int y); + int scaling() { return cellSize(); } + void loadBlank( int w = 0, int h = 0); + void setUndoColor( int colNum, uint v, bool update = true ) { + setColor( colNum, v, update ); + }; + + enum TransparencyDisplayType + { + TRD_SOLIDCOLOR, + TRD_CHECKERBOARD + }; + enum CheckerboardSize + { + CHK_SMALL = 0, + CHK_MEDIUM = 1, + CHK_LARGE = 2 + }; + + TransparencyDisplayType transparencyDisplayType() const { return m_transparencyDisplayType; } + TQColor checkerboardColor1() const { return m_checkerboardColor1; } + TQColor checkerboardColor2() const { return m_checkerboardColor2; } + CheckerboardSize checkerboardSize() const { return m_checkerboardSize; } + TQColor transparencySolidColor() const { return m_transparencySolidColor; } + + void setTransparencyDisplayType(TransparencyDisplayType t) { m_transparencyDisplayType = t; } + void setCheckerboardColor1(const TQColor& c) { m_checkerboardColor1 = c; } + void setCheckerboardColor2(const TQColor& c) { m_checkerboardColor2 = c; } + void setCheckerboardSize(CheckerboardSize size) { m_checkerboardSize = size; } + void setTransparencySolidColor(const TQColor& c) { m_transparencySolidColor = c; } + +public slots: + void load( TQImage *); + void editCopy(bool cut = false); + void editPaste(bool paste = false); + void editPasteAsNew(); + void editSelectAll(); + void editClear(); + void getImage(TQImage *image); +//#if [[[TQT_VERSION IS DEPRECATED]]] <= 140 + void editResize(); +//#endif + void setSize(const TQSize s); + void grayScale(); + void mapToKDEPalette(); + void setTool(DrawTool tool); + bool zoom(Direction direct); + bool zoomTo(int); + + void checkClipboard(); + +signals: + void scalingchanged(int); + void changed( const TQPixmap & ); + void sizechanged( int, int ); + void poschanged( int, int ); + void xposchanged( int ); + void yposchanged( int ); + void newmessage(const TQString &); + void clipboarddata(bool); + void selecteddata(bool); + void needPainting(); + void modifiedchanged(bool); + void colorSelected(uint); + +protected slots: + void setColorSelection( uint ); + void updatePreviewPixmap(); + +protected: + virtual void paintEvent(TQPaintEvent*); + virtual void paintCell( TQPainter*, int, int ) {} + virtual void paintForeground(TQPainter* p, TQPaintEvent* e); + virtual void mousePressEvent(TQMouseEvent*); + virtual void mouseReleaseEvent(TQMouseEvent*); + virtual void mouseMoveEvent(TQMouseEvent*); + void createCursors(); + void drawPointArray(TQPointArray, DrawAction); + void drawEllipse(bool); + void drawLine(bool drawIt, bool drawStraight); + void drawRect(bool); + void drawSpray(TQPoint); + void drawFlood(int x, int y, uint oldcolor); + static void clearImage(TQImage *image); + + uint currentcolor; + TQPoint start, end; + TQRect insrect; + TQSize cbsize; + TQImage *img; + TQPixmap p; + int selected, tool; //, numrows, numcols; + bool modified, btndown, ispasting, isselecting; + TQPointArray pntarray; + KColorArray iconcolors; + KCommandHistory* history; + KMacroCommand* m_command; + TQCursor cursor_normal, cursor_aim, cursor_flood, cursor_spray, cursor_erase, cursor_paint, cursor_colorpicker; + TransparencyDisplayType m_transparencyDisplayType; + TQColor m_checkerboardColor1; + TQColor m_checkerboardColor2; + CheckerboardSize m_checkerboardSize; + TQColor m_transparencySolidColor; +}; + + + +#endif //__TDEICONEDITGRID_H__ + + + |