diff options
Diffstat (limited to 'doc/html/scribble-example.html')
-rw-r--r-- | doc/html/scribble-example.html | 365 |
1 files changed, 365 insertions, 0 deletions
diff --git a/doc/html/scribble-example.html b/doc/html/scribble-example.html new file mode 100644 index 000000000..d116a98dc --- /dev/null +++ b/doc/html/scribble-example.html @@ -0,0 +1,365 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/examples/scribble/scribble.doc:5 --> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Simple Painting Application</title> +<style type="text/css"><!-- +fn { margin-left: 1cm; text-indent: -1cm; } +a:link { color: #004faf; text-decoration: none } +a:visited { color: #672967; text-decoration: none } +body { background: #ffffff; color: black; } +--></style> +</head> +<body> + +<table border="0" cellpadding="0" cellspacing="0" width="100%"> +<tr bgcolor="#E5E5E5"> +<td valign=center> + <a href="index.html"> +<font color="#004faf">Home</font></a> + | <a href="classes.html"> +<font color="#004faf">All Classes</font></a> + | <a href="mainclasses.html"> +<font color="#004faf">Main Classes</font></a> + | <a href="annotated.html"> +<font color="#004faf">Annotated</font></a> + | <a href="groups.html"> +<font color="#004faf">Grouped Classes</font></a> + | <a href="functions.html"> +<font color="#004faf">Functions</font></a> +</td> +<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>Simple Painting Application</h1> + + +<p> +This example implements the famous scribble example. You can draw around +in the canvas with different pens and save the result as picture. +<p> <hr> +<p> Header file: +<p> <pre>/**************************************************************************** +** $Id: qt/scribble.h 3.3.8 edited Jan 11 14:37 $ +** +** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved. +** +** This file is part of an example program for TQt. This example +** program may be used, distributed and modified without limitation. +** +*****************************************************************************/ + +#ifndef SCRIBBLE_H +#define SCRIBBLE_H + +#include <<a href="qmainwindow-h.html">qmainwindow.h</a>> +#include <<a href="qpen-h.html">qpen.h</a>> +#include <<a href="qpoint-h.html">qpoint.h</a>> +#include <<a href="qpixmap-h.html">qpixmap.h</a>> +#include <<a href="qwidget-h.html">qwidget.h</a>> +#include <<a href="qstring-h.html">qstring.h</a>> +#include <<a href="qpointarray-h.html">qpointarray.h</a>> + +class TQMouseEvent; +class TQResizeEvent; +class TQPaintEvent; +class TQToolButton; +class TQSpinBox; + +class Canvas : public <a href="qwidget.html">TQWidget</a> +{ + <a href="metaobjects.html#Q_OBJECT">Q_OBJECT</a> + +public: + Canvas( <a href="qwidget.html">TQWidget</a> *parent = 0, const char *name = 0 ); + + void setPenColor( const <a href="qcolor.html">TQColor</a> &c ) +<a name="x903"></a> { pen.<a href="qpen.html#setColor">setColor</a>( c ); } + + void setPenWidth( int w ) +<a name="x904"></a> { pen.<a href="qpen.html#setWidth">setWidth</a>( w ); } + + <a href="qcolor.html">TQColor</a> penColor() +<a name="x902"></a> { return pen.<a href="qpen.html#color">color</a>(); } + + int penWidth() +<a name="x905"></a> { return pen.<a href="qpen.html#width">width</a>(); } + + void save( const <a href="qstring.html">TQString</a> &filename, const <a href="qstring.html">TQString</a> &format ); + + void clearScreen(); + +protected: + void mousePressEvent( <a href="qmouseevent.html">TQMouseEvent</a> *e ); + void mouseReleaseEvent( <a href="qmouseevent.html">TQMouseEvent</a> *e ); + void mouseMoveEvent( <a href="qmouseevent.html">TQMouseEvent</a> *e ); + void resizeEvent( <a href="qresizeevent.html">TQResizeEvent</a> *e ); + void paintEvent( <a href="qpaintevent.html">TQPaintEvent</a> *e ); + + <a href="qpen.html">TQPen</a> pen; + <a href="qpointarray.html">TQPointArray</a> polyline; + + bool mousePressed; + + <a href="qpixmap.html">TQPixmap</a> buffer; + +}; + +class Scribble : public <a href="qmainwindow.html">TQMainWindow</a> +{ + Q_OBJECT + +public: + Scribble( <a href="qwidget.html">TQWidget</a> *parent = 0, const char *name = 0 ); + +protected: + Canvas* canvas; + + <a href="qspinbox.html">TQSpinBox</a> *bPWidth; + <a href="qtoolbutton.html">TQToolButton</a> *bPColor, *bSave, *bClear; + +protected slots: + void slotSave(); + void slotColor(); + void slotWidth( int ); + void slotClear(); + +}; + +#endif +</pre> + +<p> <hr> +<p> Implementation: +<p> <pre>/**************************************************************************** +** $Id: qt/scribble.cpp 3.3.8 edited Jan 11 14:37 $ +** +** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved. +** +** This file is part of an example program for TQt. This example +** program may be used, distributed and modified without limitation. +** +*****************************************************************************/ + +#include "scribble.h" + +#include <<a href="qapplication-h.html">qapplication.h</a>> +#include <<a href="qevent-h.html">qevent.h</a>> +#include <<a href="qpainter-h.html">qpainter.h</a>> +#include <<a href="qtoolbar-h.html">qtoolbar.h</a>> +#include <<a href="qtoolbutton-h.html">qtoolbutton.h</a>> +#include <<a href="qspinbox-h.html">qspinbox.h</a>> +#include <<a href="qtooltip-h.html">qtooltip.h</a>> +#include <<a href="qrect-h.html">qrect.h</a>> +#include <<a href="qpoint-h.html">qpoint.h</a>> +#include <<a href="qcolordialog-h.html">qcolordialog.h</a>> +#include <<a href="qfiledialog-h.html">qfiledialog.h</a>> +#include <<a href="qcursor-h.html">qcursor.h</a>> +#include <<a href="qimage-h.html">qimage.h</a>> +#include <<a href="qstrlist-h.html">qstrlist.h</a>> +#include <<a href="qpopupmenu-h.html">qpopupmenu.h</a>> +#include <<a href="qintdict-h.html">qintdict.h</a>> + +const bool no_writing = FALSE; + +<a name="f338"></a>Canvas::Canvas( <a href="qwidget.html">TQWidget</a> *parent, const char *name ) + : <a href="qwidget.html">TQWidget</a>( parent, name, WStaticContents ), pen( TQt::red, 3 ), polyline(3), + mousePressed( FALSE ), buffer( <a href="qwidget.html#width">width</a>(), height() ) +{ + +<a name="x907"></a><a name="x906"></a> if ((qApp-><a href="qapplication.html#argc">argc</a>() > 0) && !buffer.load(qApp-><a href="qapplication.html#argv">argv</a>()[1])) + buffer.fill( <a href="qwidget.html#colorGroup">colorGroup</a>().base() ); + <a href="qwidget.html#setBackgroundMode">setBackgroundMode</a>( TQWidget::PaletteBase ); +#ifndef QT_NO_CURSOR + <a href="qwidget.html#setCursor">setCursor</a>( TQt::crossCursor ); +#endif +} + +void <a name="f339"></a>Canvas::save( const <a href="qstring.html">TQString</a> &filename, const <a href="qstring.html">TQString</a> &format ) +{ + if ( !no_writing ) +<a name="x942"></a> buffer.save( filename, format.<a href="qstring.html#upper">upper</a>() ); +} + +void <a name="f340"></a>Canvas::clearScreen() +{ + buffer.fill( <a href="qwidget.html#colorGroup">colorGroup</a>().base() ); + <a href="qwidget.html#repaint">repaint</a>( FALSE ); +} + +<a name="x949"></a>void Canvas::<a href="qwidget.html#mousePressEvent">mousePressEvent</a>( <a href="qmouseevent.html">TQMouseEvent</a> *e ) +{ + mousePressed = TRUE; + polyline[2] = polyline[1] = polyline[0] = e-><a href="qmouseevent.html#pos">pos</a>(); +} + +<a name="x950"></a>void Canvas::<a href="qwidget.html#mouseReleaseEvent">mouseReleaseEvent</a>( <a href="qmouseevent.html">TQMouseEvent</a> * ) +{ + mousePressed = FALSE; +} + +<a name="x948"></a>void Canvas::<a href="qwidget.html#mouseMoveEvent">mouseMoveEvent</a>( <a href="qmouseevent.html">TQMouseEvent</a> *e ) +{ + if ( mousePressed ) { + <a href="qpainter.html">TQPainter</a> painter; + painter.<a href="qpainter.html#begin">begin</a>( &buffer ); + painter.<a href="qpainter.html#setPen">setPen</a>( pen ); + polyline[2] = polyline[1]; + polyline[1] = polyline[0]; + polyline[0] = e-><a href="qmouseevent.html#pos">pos</a>(); +<a name="x917"></a> painter.<a href="qpainter.html#drawPolyline">drawPolyline</a>( polyline ); +<a name="x918"></a> painter.<a href="qpainter.html#end">end</a>(); + + <a href="qrect.html">TQRect</a> r = polyline.boundingRect(); +<a name="x928"></a> r = r.<a href="qrect.html#normalize">normalize</a>(); +<a name="x931"></a><a name="x927"></a> r.<a href="qrect.html#setLeft">setLeft</a>( r.<a href="qrect.html#left">left</a>() - penWidth() ); +<a name="x934"></a><a name="x933"></a> r.<a href="qrect.html#setTop">setTop</a>( r.<a href="qrect.html#top">top</a>() - penWidth() ); +<a name="x932"></a><a name="x929"></a> r.<a href="qrect.html#setRight">setRight</a>( r.<a href="qrect.html#right">right</a>() + penWidth() ); +<a name="x930"></a><a name="x925"></a> r.<a href="qrect.html#setBottom">setBottom</a>( r.<a href="qrect.html#bottom">bottom</a>() + penWidth() ); + +<a name="x937"></a><a name="x936"></a><a name="x926"></a> <a href="qimage.html#bitBlt">bitBlt</a>( this, r.<a href="qrect.html#x">x</a>(), r.<a href="qrect.html#y">y</a>(), &buffer, r.<a href="qrect.html#x">x</a>(), r.<a href="qrect.html#y">y</a>(), r.<a href="qrect.html#width">width</a>(), r.<a href="qrect.html#height">height</a>() ); + } +} + +<a name="x952"></a>void Canvas::<a href="qwidget.html#resizeEvent">resizeEvent</a>( <a href="qresizeevent.html">TQResizeEvent</a> *e ) +{ + TQWidget::<a href="qwidget.html#resizeEvent">resizeEvent</a>( e ); + + int w = <a href="qwidget.html#width">width</a>() > buffer.width() ? + <a href="qwidget.html#width">width</a>() : buffer.width(); + int h = <a href="qwidget.html#height">height</a>() > buffer.height() ? + <a href="qwidget.html#height">height</a>() : buffer.height(); + + <a href="qpixmap.html">TQPixmap</a> tmp( buffer ); + buffer.resize( w, h ); + buffer.fill( <a href="qwidget.html#colorGroup">colorGroup</a>().base() ); +<a name="x922"></a><a name="x921"></a> <a href="qimage.html#bitBlt">bitBlt</a>( &buffer, 0, 0, &tmp, 0, 0, tmp.<a href="qpixmap.html#width">width</a>(), tmp.<a href="qpixmap.html#height">height</a>() ); +} + +<a name="x951"></a>void Canvas::<a href="qwidget.html#paintEvent">paintEvent</a>( <a href="qpaintevent.html">TQPaintEvent</a> *e ) +{ + TQWidget::<a href="qwidget.html#paintEvent">paintEvent</a>( e ); + +<a name="x920"></a> <a href="qmemarray.html">TQMemArray</a><TQRect> rects = e-><a href="qpaintevent.html#region">region</a>().rects(); +<a name="x913"></a> for ( uint i = 0; i < rects.<a href="qmemarray.html#count">count</a>(); i++ ) { + <a href="qrect.html">TQRect</a> r = rects[(int)i]; + <a href="qimage.html#bitBlt">bitBlt</a>( this, r.<a href="qrect.html#x">x</a>(), r.<a href="qrect.html#y">y</a>(), &buffer, r.<a href="qrect.html#x">x</a>(), r.<a href="qrect.html#y">y</a>(), r.<a href="qrect.html#width">width</a>(), r.<a href="qrect.html#height">height</a>() ); + } +} + +//------------------------------------------------------ + +<a name="f341"></a>Scribble::Scribble( <a href="qwidget.html">TQWidget</a> *parent, const char *name ) + : <a href="qmainwindow.html">TQMainWindow</a>( parent, name ) +{ + canvas = new Canvas( this ); + <a href="qmainwindow.html#setCentralWidget">setCentralWidget</a>( canvas ); + + <a href="qtoolbar.html">TQToolBar</a> *tools = new <a href="qtoolbar.html">TQToolBar</a>( this ); + + bSave = new <a href="qtoolbutton.html">TQToolButton</a>( TQPixmap(), "Save", "Save as PNG image", this, SLOT( slotSave() ), tools ); +<a name="x944"></a> bSave-><a href="qbutton.html#setText">setText</a>( "Save as..." ); + +<a name="x943"></a> tools-><a href="qtoolbar.html#addSeparator">addSeparator</a>(); + + bPColor = new <a href="qtoolbutton.html">TQToolButton</a>( TQPixmap(), "Choose Pen Color", "Choose Pen Color", this, SLOT( slotColor() ), tools ); + bPColor-><a href="qbutton.html#setText">setText</a>( "Choose Pen Color..." ); + + tools-><a href="qtoolbar.html#addSeparator">addSeparator</a>(); + + bPWidth = new <a href="qspinbox.html">TQSpinBox</a>( 1, 20, 1, tools ); +<a name="x945"></a> TQToolTip::<a href="qtooltip.html#add">add</a>( bPWidth, "Choose Pen Width" ); +<a name="x939"></a> <a href="qobject.html#connect">connect</a>( bPWidth, SIGNAL( <a href="qspinbox.html#valueChanged">valueChanged</a>( int ) ), this, SLOT( slotWidth( int ) ) ); +<a name="x938"></a> bPWidth-><a href="qspinbox.html#setValue">setValue</a>( 3 ); + + tools-><a href="qtoolbar.html#addSeparator">addSeparator</a>(); + + bClear = new <a href="qtoolbutton.html">TQToolButton</a>( TQPixmap(), "Clear Screen", "Clear Screen", this, SLOT( slotClear() ), tools ); + bClear-><a href="qbutton.html#setText">setText</a>( "Clear Screen" ); +} + +void <a name="f342"></a>Scribble::slotSave() +{ + <a href="qpopupmenu.html">TQPopupMenu</a> *menu = new <a href="qpopupmenu.html">TQPopupMenu</a>( 0 ); + <a href="qintdict.html">TQIntDict</a><TQString> formats; +<a name="x924"></a> formats.<a href="qptrcollection.html#setAutoDelete">setAutoDelete</a>( TRUE ); + + for ( unsigned int i = 0; i < TQImageIO::<a href="qimageio.html#outputFormats">outputFormats</a>().count(); i++ ) { +<a name="x911"></a> <a href="qstring.html">TQString</a> str = TQString( TQImageIO::<a href="qimageio.html#outputFormats">outputFormats</a>().at( i ) ); +<a name="x912"></a> formats.<a href="qintdict.html#insert">insert</a>( menu-><a href="qmenudata.html#insertItem">insertItem</a>( TQString( "%1..." ).arg( str ) ), new <a href="qstring.html">TQString</a>( str ) ); + } + +<a name="x953"></a> menu-><a href="qwidget.html#setMouseTracking">setMouseTracking</a>( TRUE ); +<a name="x947"></a><a name="x946"></a><a name="x923"></a> int id = menu-><a href="qpopupmenu.html#exec">exec</a>( bSave-><a href="qwidget.html#mapToGlobal">mapToGlobal</a>( TQPoint( 0, bSave-><a href="qwidget.html#height">height</a>() + 1 ) ) ); + + if ( id != -1 ) { + <a href="qstring.html">TQString</a> format = *formats[ id ]; + +<a name="x941"></a> <a href="qstring.html">TQString</a> filename = TQFileDialog::<a href="qfiledialog.html#getSaveFileName">getSaveFileName</a>( <a href="qstring.html#TQString-null">TQString::null</a>, TQString( "*.%1" ).arg( format.<a href="qstring.html#lower">lower</a>() ), this ); + if ( !filename.<a href="qstring.html#isEmpty">isEmpty</a>() ) + canvas->save( filename, format ); + } + + delete menu; +} + +void <a name="f343"></a>Scribble::slotColor() +{ +<a name="x909"></a> <a href="qcolor.html">TQColor</a> c = TQColorDialog::<a href="qcolordialog.html#getColor">getColor</a>( canvas->penColor(), this ); +<a name="x908"></a> if ( c.<a href="qcolor.html#isValid">isValid</a>() ) + canvas->setPenColor( c ); +} + +void <a name="f344"></a>Scribble::slotWidth( int w ) +{ + canvas->setPenWidth( w ); +} + +void <a name="f345"></a>Scribble::slotClear() +{ + canvas->clearScreen(); +} +</pre> + +<p> <hr> +<p> Main: +<p> <pre>/**************************************************************************** +** $Id: qt/main.cpp 3.3.8 edited Jan 11 14:37 $ +** +** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved. +** +** This file is part of an example program for TQt. This example +** program may be used, distributed and modified without limitation. +** +*****************************************************************************/ + +#include "scribble.h" +#include <<a href="qapplication-h.html">qapplication.h</a>> + + +int main( int argc, char **argv ) +{ + <a href="qapplication.html">TQApplication</a> a( argc, argv ); + + Scribble scribble; + + scribble.<a href="qwidget.html#resize">resize</a>( 500, 350 ); + scribble.<a href="qwidget.html#setCaption">setCaption</a>("TQt Example - Scribble"); + a.<a href="qapplication.html#setMainWidget">setMainWidget</a>( &scribble ); +<a name="x954"></a> if ( TQApplication::<a href="qapplication.html#desktop">desktop</a>()->width() > 550 + && TQApplication::<a href="qapplication.html#desktop">desktop</a>()->height() > 366 ) + scribble.<a href="qwidget.html#show">show</a>(); + else +<a name="x960"></a> scribble.<a href="qwidget.html#showMaximized">showMaximized</a>(); + return a.<a href="qapplication.html#exec">exec</a>(); +} +</pre> + +<p>See also <a href="examples.html">Examples</a>. + +<!-- eof --> +<p><address><hr><div align=center> +<table width=100% cellspacing=0 border=0><tr> +<td>Copyright © 2007 +<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a> +<td align=right><div align=right>TQt 3.3.8</div> +</table></div></address></body> +</html> |