diff options
Diffstat (limited to 'kiconedit/kicongrid.h')
-rw-r--r-- | kiconedit/kicongrid.h | 263 |
1 files changed, 263 insertions, 0 deletions
diff --git a/kiconedit/kicongrid.h b/kiconedit/kicongrid.h new file mode 100644 index 00000000..24730735 --- /dev/null +++ b/kiconedit/kicongrid.h @@ -0,0 +1,263 @@ +/* + KDE Icon Editor - a small graphics drawing program for the KDE. + 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 __KICONEDITGRID_H__ +#define __KICONEDITGRID_H__ + +#include <qpixmap.h> +#include <qimage.h> +#include <qcursor.h> +#include <qpointarray.h> +#include <qframe.h> +#include <kcommand.h> +#include <klocale.h> + +#include "kcolorgrid.h" + +class KCommandHistory; +class KRuler; +class KIconEditGrid; +class QScrollView; + +enum Direction { + DirIn = 0, DirOut = 1, + DirUp = DirIn, DirDown = DirOut, + DirLeft, DirRight +}; + +class DrawCommand : public KCommand { + public: + DrawCommand( int xx, int yy, uint newcol, QImage* img, KIconEditGrid* g ) { + x = xx; + y = yy; + newcolor = newcol; + image = img; + grid = g; + } + + void execute(); + void unexecute(); + QString name() const { + return i18n("Drawed Something"); + } + + protected: + int x; + int y; + uint newcolor; + uint oldcolor; + QImage* image; + KIconEditGrid* grid; +}; + +class RepaintCommand : public KCommand { + public: + RepaintCommand( QRect a, KIconEditGrid* g ) { + area = a; + grid = g; + } + + void execute(); + void unexecute() { + execute(); + } + + QString name() const { + return "repainted"; + } + protected: + KIconEditGrid* grid; + QRect area; +}; + +class KGridView : public QFrame +{ + Q_OBJECT +public: + KGridView( QImage *image, KCommandHistory* history, QWidget * parent = 0, const char *name = 0); + + KRuler *hruler() { return _hruler;} + KRuler *vruler() { return _vruler;} + QFrame *corner() { return _corner;} + KIconEditGrid *grid() { return _grid; } + void setShowRulers(bool mode); + void setAcceptDrop(bool a); + const QRect viewRect(); + QScrollView *viewPortWidget() { return viewport;} + +public slots: + void sizeChange(int, int); + void moving(int, int); + void scalingChange(int); + void paintGrid(); + void checkClipboard(); + +protected: + virtual void paintEvent(QPaintEvent*); + virtual void resizeEvent(QResizeEvent*); + void paintDropSite(); + void setSizes(); + + QFrame *_corner; + KIconEditGrid *_grid; + KRuler *_hruler, *_vruler; + QScrollView *viewport; + bool acceptdrop; +}; + +/** +* KIconEditGrid +* @short KIconEditGrid +* @author Thomas Tanghus <[email protected]> +* @version 0.3 +*/ +class KIconEditGrid : public KColorGrid +{ + Q_OBJECT +public: + KIconEditGrid( QImage *image, KCommandHistory* h, QWidget * parent = 0, const char *name = 0); + virtual ~KIconEditGrid(); + + 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 QPixmap &pixmap(); + const QImage &image() { return *img; } + QImage clipboardImage(bool &ok); + QImage getSelection(bool); + int rows() { return numRows(); }; + int cols() { return numCols(); }; + uint getColors( uint *_colors) { return colors(_colors); } + bool isMarked(QPoint 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; } + QColor checkerboardColor1() const { return m_checkerboardColor1; } + QColor checkerboardColor2() const { return m_checkerboardColor2; } + CheckerboardSize checkerboardSize() const { return m_checkerboardSize; } + QColor transparencySolidColor() const { return m_transparencySolidColor; } + + void setTransparencyDisplayType(TransparencyDisplayType t) { m_transparencyDisplayType = t; } + void setCheckerboardColor1(const QColor& c) { m_checkerboardColor1 = c; } + void setCheckerboardColor2(const QColor& c) { m_checkerboardColor2 = c; } + void setCheckerboardSize(CheckerboardSize size) { m_checkerboardSize = size; } + void setTransparencySolidColor(const QColor& c) { m_transparencySolidColor = c; } + +public slots: + void load( QImage *); + void editCopy(bool cut = false); + void editPaste(bool paste = false); + void editPasteAsNew(); + void editSelectAll(); + void editClear(); + void getImage(QImage *image); +//#if QT_VERSION <= 140 + void editResize(); +//#endif + void setSize(const QSize 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 QPixmap & ); + void sizechanged( int, int ); + void poschanged( int, int ); + void xposchanged( int ); + void yposchanged( int ); + void newmessage(const QString &); + 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(QPaintEvent*); + virtual void paintCell( QPainter*, int, int ) {} + virtual void paintForeground(QPainter* p, QPaintEvent* e); + virtual void mousePressEvent(QMouseEvent*); + virtual void mouseReleaseEvent(QMouseEvent*); + virtual void mouseMoveEvent(QMouseEvent*); + void createCursors(); + void drawPointArray(QPointArray, DrawAction); + void drawEllipse(bool); + void drawLine(bool drawIt, bool drawStraight); + void drawRect(bool); + void drawSpray(QPoint); + void drawFlood(int x, int y, uint oldcolor); + static void clearImage(QImage *image); + + uint currentcolor; + QPoint start, end; + QRect insrect; + QSize cbsize; + QImage *img; + QPixmap p; + int selected, tool; //, numrows, numcols; + bool modified, btndown, ispasting, isselecting; + QPointArray pntarray; + KColorArray iconcolors; + KCommandHistory* history; + KMacroCommand* m_command; + QCursor cursor_normal, cursor_aim, cursor_flood, cursor_spray, cursor_erase, cursor_paint, cursor_colorpicker; + TransparencyDisplayType m_transparencyDisplayType; + QColor m_checkerboardColor1; + QColor m_checkerboardColor2; + CheckerboardSize m_checkerboardSize; + QColor m_transparencySolidColor; +}; + + + +#endif //__KICONEDITGRID_H__ + + + |