summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/src/widgets/tqdial.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tqtinterface/qt4/src/widgets/tqdial.cpp')
-rw-r--r--tqtinterface/qt4/src/widgets/tqdial.cpp976
1 files changed, 0 insertions, 976 deletions
diff --git a/tqtinterface/qt4/src/widgets/tqdial.cpp b/tqtinterface/qt4/src/widgets/tqdial.cpp
deleted file mode 100644
index 8158d47..0000000
--- a/tqtinterface/qt4/src/widgets/tqdial.cpp
+++ /dev/null
@@ -1,976 +0,0 @@
-/****************************************************************************
-**
-** Implementation of the dial widget
-**
-** Created : 979899
-**
-** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA.
-**
-** This file is part of the widgets module of the TQt GUI Toolkit.
-**
-** This file may be used under the terms of the GNU General
-** Public License versions 2.0 or 3.0 as published by the Free
-** Software Foundation and appearing in the files LICENSE.GPL2
-** and LICENSE.GPL3 included in the packaging of this file.
-** Alternatively you may (at your option) use any later version
-** of the GNU General Public License if such license has been
-** publicly approved by Trolltech ASA (or its successors, if any)
-** and the KDE Free TQt Foundation.
-**
-** Please review the following information to ensure GNU General
-** Public Licensing requirements will be met:
-** http://trolltech.com/products/qt/licenses/licensing/opensource/.
-** If you are unsure which license is appropriate for your use, please
-** review the following information:
-** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
-** or contact the sales department at sales@trolltech.com.
-**
-** This file may be used under the terms of the Q Public License as
-** defined by Trolltech ASA and appearing in the file LICENSE.TQPL
-** included in the packaging of this file. Licensees holding valid TQt
-** Commercial licenses may use this file in accordance with the TQt
-** Commercial License Agreement provided with the Software.
-**
-** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
-** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
-** herein.
-**
-**********************************************************************/
-
-#include "tqdial.h"
-
-#ifndef TQT_NO_DIAL
-
-#include "tqpainter.h"
-#include "tqpointarray.h"
-#include "tqcolor.h"
-#include "tqapplication.h"
-#include "tqregion.h"
-#include "tqbitmap.h"
-#include "tqstyle.h"
-#if defined(TQT_ACCESSIBILITY_SUPPORT)
-#include "tqaccessible.h"
-#endif
-
-#include <math.h> // sin(), cos(), atan()
-//### Forutsetter linking med math lib - Jfr kommentar i qpainter_x11.cpp!
-
-static const double m_pi = 3.14159265358979323846;
-static const double rad_factor = 180.0 / m_pi;
-
-
-class TQDialPrivate
-{
-public:
- TQDialPrivate()
- {
- wrapping = FALSE;
- tracking = TRUE;
- doNotEmit = FALSE;
- target = 3.7;
- mousePressed = FALSE;
- }
-
- bool wrapping;
- bool tracking;
- bool doNotEmit;
- double target;
- TQRect eraseArea;
- bool eraseAreaValid;
- bool showNotches;
- bool onlyOutside;
- bool mousePressed;
-
- TQPointArray lines;
-};
-
-
-/*!
- \class TQDial tqdial.h
-
- \brief The TQDial class provides a rounded range control (like a speedometer or potentiometer).
-
- \ingroup basic
- \mainclass
-
- TQDial is used when the user needs to control a value within a
- program-definable range, and the range either wraps around
- (typically, 0..359 degrees) or the dialog tqlayout needs a square
- widget.
-
- Both API- and UI-wise, the dial is very similar to a \link TQSlider
- slider. \endlink Indeed, when wrapping() is FALSE (the default)
- there is no real difference between a slider and a dial. They
- have the same Q_SIGNALS, Q_SLOTS and member functions, all of which do
- the same things. Which one you use depends only on your taste
- and on the application.
-
- The dial initially emits valueChanged() Q_SIGNALS continuously while
- the slider is being moved; you can make it emit the signal less
- often by calling setTracking(FALSE). dialMoved() is emitted
- continuously even when tracking() is FALSE.
-
- The slider also emits dialPressed() and dialReleased() Q_SIGNALS
- when the mouse button is pressed and released. But note that the
- dial's value can change without these Q_SIGNALS being emitted; the
- keyboard and wheel can be used to change the value.
-
- Unlike the slider, TQDial attempts to draw a "nice" number of
- notches rather than one per lineStep(). If possible, the number
- of notches drawn is one per lineStep(), but if there aren't enough
- pixels to draw every one, TQDial will draw every second, third
- etc., notch. notchSize() returns the number of units per notch,
- hopefully a multiple of lineStep(); setNotchTarget() sets the
- target distance between neighbouring notches in pixels. The
- default is 3.75 pixels.
-
- Like the slider, the dial makes the TQRangeControl functions
- setValue(), addLine(), subtractLine(), addPage() and
- subtractPage() available as Q_SLOTS.
-
- The dial's keyboard interface is fairly simple: The left/up and
- right/down arrow keys move by lineStep(), page up and page down by
- pageStep() and Home and End to minValue() and maxValue().
-
- <img src=qdial-m.png> <img src=qdial-w.png>
-
- \sa TQScrollBar TQSpinBox
- \link guibooks.html#fowler GUI Design Handbook: Slider\endlink
-*/
-
-
-
-
-/*!
- Constructs a dial called \a name with parent \a parent. \a f is
- propagated to the TQWidget constructor. It has the default range of
- a TQRangeControl.
-*/
-
-TQDial::TQDial( TQWidget *parent, const char *name, WFlags f )
- : TQWidget( parent, name, f | TQt::WNoAutoErase ), TQRangeControl()
-{
- d = new TQDialPrivate;
- d->eraseAreaValid = FALSE;
- d->showNotches = FALSE;
- d->onlyOutside = FALSE;
- setFocusPolicy( Qt::WheelFocus );
-}
-
-
-
-/*!
- Constructs a dial called \a name with parent \a parent. The dial's
- value can never be smaller than \a minValue or greater than \a
- maxValue. Its page step size is \a pageStep, and its initial value
- is \a value.
-
- \a value is forced to be within the legal range.
-*/
-
-TQDial::TQDial( int minValue, int maxValue, int pageStep, int value,
- TQWidget *parent, const char *name )
- : TQWidget( parent, name, TQt::WNoAutoErase ),
- TQRangeControl( minValue, maxValue, 1, pageStep, value )
-{
- d = new TQDialPrivate;
- d->eraseAreaValid = FALSE;
- d->showNotches = FALSE;
- d->onlyOutside = FALSE;
- setFocusPolicy( Qt::WheelFocus );
-}
-
-/*!
- Destroys the dial.
-*/
-TQDial::~TQDial()
-{
- delete d;
-}
-
-
-void TQDial::setTracking( bool enable )
-{
- d->tracking = enable;
-}
-
-
-/*!
- \property TQDial::tracking
- \brief whether tracking is enabled
-
- If TRUE (the default), tracking is enabled. This means that the
- arrow can be moved using the mouse; otherwise the arrow cannot be
- moved with the mouse.
-*/
-
-bool TQDial::tracking() const
-{
- return d ? d->tracking : TRUE;
-}
-
-void TQDial::setValue( int newValue )
-{ // ### set doNotEmit? Matthias?
- TQRangeControl::setValue( newValue );
-}
-
-
-/*!
- Increments the dial's value() by one lineStep().
-*/
-
-void TQDial::addLine()
-{
- TQRangeControl::addLine();
-}
-
-
-/*!
- Decrements the dial's value() by one lineStep().
-*/
-
-void TQDial::subtractLine()
-{
- TQRangeControl::subtractLine();
-}
-
-
-/*! \reimp */
-
-void TQDial::resizeEvent( TQResizeEvent * e )
-{
- d->lines.resize( 0 );
- TQWidget::resizeEvent( e );
-}
-
-
-/*!
- \reimp
-*/
-
-void TQDial::paintEvent( TQPaintEvent * e )
-{
- repaintScreen( &e->rect() );
-}
-
-/*!
- Paints the dial using clip region \a cr.
-*/
-
-void TQDial::repaintScreen( const TQRect *cr )
-{
- TQPainter p;
- p.begin( this );
-
- bool resetClipping = FALSE;
-
- // calculate clip-region for erasing background
- if ( cr ) {
- p.setClipRect( *cr );
- } else if ( !d->onlyOutside && d->eraseAreaValid ) {
- TQRegion reg = d->eraseArea;
- double a;
- reg = reg.subtract( calcArrow( a ) );
- p.setClipRegion( reg );
- resetClipping = TRUE;
- }
-
- TQRect br( calcDial() );
- p.setPen( Qt::NoPen );
- // if ( style() == MotifStyle )
- // p.setBrush( tqcolorGroup().brush( TQColorGroup::Mid ) );
- // else {
- TQBrush b;
- if ( TQT_TQBRUSH_OBJECT(tqcolorGroup().brush( TQColorGroup::Light )).pixmap() )
- b = TQBrush( tqcolorGroup().brush( TQColorGroup::Light ) );
- else
- b = TQBrush( tqcolorGroup().light(), Qt::Dense4Pattern );
- p.setBrush( b );
- p.setBackgroundMode( Qt::OpaqueMode );
- // }
-
- TQRect te = br;
- te.setWidth(te.width()+2);
- te.setHeight(te.height()+2);
- // erase background of dial
- if ( !d->onlyOutside ) {
- p.drawEllipse( te );
- }
-
- // erase remaining space around the dial
- TQRegion remaining( 0, 0, width(), height() );
- remaining = remaining.subtract( TQRegion( te, TQRegion::Ellipse ) );
- if ( p.hasClipping() )
- remaining = remaining.intersect( p.clipRegion() );
- erase(remaining);
-
- if ( resetClipping ) {
- if ( cr )
- p.setClipRect( *cr );
- else
- p.setClipRect( TQRect( 0, 0, width(), height() ) );
- }
-
- // draw notches
- if ( d->showNotches ) {
- calcLines();
- p.setPen( tqcolorGroup().foreground() );
- p.drawLineSegments( d->lines );
- }
-
- // calculate and paint arrow
- p.setPen( TQPen( tqcolorGroup().dark() ) );
- p.drawArc( te, 60 * 16, 180 * 16 );
- p.setPen( TQPen( tqcolorGroup().light() ) );
- p.drawArc( te, 240 * 16, 180 * 16 );
-
- double a;
- TQPointArray arrow( calcArrow( a ) );
- TQRect ea( arrow.boundingRect() );
- d->eraseArea = ea;
- d->eraseAreaValid = TRUE;
-
- p.setPen( Qt::NoPen );
- p.setBrush( tqcolorGroup().brush( TQColorGroup::Button ) );
- if ( !d->onlyOutside )
- p.drawPolygon( arrow );
-
- a = angle( TQPoint( width() / 2, height() / 2 ), arrow[ 0 ] );
- p.setBrush( TQt::NoBrush );
-
- // that's still a hack...
- if ( a <= 0 || a > 200 ) {
- p.setPen( tqcolorGroup().light() );
- p.drawLine( arrow[ 2 ], arrow[ 0 ] );
- p.drawLine( arrow[ 1 ], arrow[ 2 ] );
- p.setPen( tqcolorGroup().dark() );
- p.drawLine( arrow[ 0 ], arrow[ 1 ] );
- } else if ( a > 0 && a < 45 ) {
- p.setPen( tqcolorGroup().light() );
- p.drawLine( arrow[ 2 ], arrow[ 0 ] );
- p.setPen( tqcolorGroup().dark() );
- p.drawLine( arrow[ 1 ], arrow[ 2 ] );
- p.drawLine( arrow[ 0 ], arrow[ 1 ] );
- } else if ( a >= 45 && a < 135 ) {
- p.setPen( tqcolorGroup().dark() );
- p.drawLine( arrow[ 2 ], arrow[ 0 ] );
- p.drawLine( arrow[ 1 ], arrow[ 2 ] );
- p.setPen( tqcolorGroup().light() );
- p.drawLine( arrow[ 0 ], arrow[ 1 ] );
- } else if ( a >= 135 && a < 200 ) {
- p.setPen( tqcolorGroup().dark() );
- p.drawLine( arrow[ 2 ], arrow[ 0 ] );
- p.setPen( tqcolorGroup().light() );
- p.drawLine( arrow[ 0 ], arrow[ 1 ] );
- p.drawLine( arrow[ 1 ], arrow[ 2 ] );
- }
-
- // draw focus rect around the dial
- if ( hasFocus() ) {
- p.setClipping( FALSE );
- br.setWidth( br.width() + 2 );
- br.setHeight( br.height() + 2 );
- if ( d->showNotches ) {
- int r = TQMIN( width(), height() ) / 2;
- br.moveBy( -r / 6, - r / 6 );
- br.setWidth( br.width() + r / 3 );
- br.setHeight( br.height() + r / 3 );
- }
- // strange, but else we get redraw errors on Windows
- p.end();
- p.begin( this );
- p.save();
- p.setPen( TQPen( tqcolorGroup().background() ) );
- p.setBrush( Qt::NoBrush );
- p.drawRect( br );
- p.restore();
- tqstyle().tqdrawPrimitive( TQStyle::PE_FocusRect, &p, br, tqcolorGroup());
- }
- p.end();
-}
-
-
-/*!
- \reimp
-*/
-
-void TQDial::keyPressEvent( TQKeyEvent * e )
-{
- switch ( e->key() ) {
- case Qt::Key_Left: case Qt::Key_Down:
- subtractLine();
- break;
- case Qt::Key_Right: case Qt::Key_Up:
- addLine();
- break;
- case TQt::Key_Prior:
- subtractPage();
- break;
- case TQt::Key_Next:
- addPage();
- break;
- case Qt::Key_Home:
- setValue( minValue() );
- break;
- case Qt::Key_End:
- setValue( maxValue() );
- break;
- default:
- e->ignore();
- break;
- }
-}
-
-
-/*!
- \reimp
-*/
-
-void TQDial::mousePressEvent( TQMouseEvent * e )
-{
- d->mousePressed = TRUE;
- setValue( valueFromPoint( e->pos() ) );
- emit dialPressed();
-}
-
-
-/*!
- \reimp
-*/
-
-void TQDial::mouseReleaseEvent( TQMouseEvent * e )
-{
- d->mousePressed = FALSE;
- setValue( valueFromPoint( e->pos() ) );
- emit dialReleased();
-}
-
-
-/*!
- \reimp
-*/
-
-void TQDial::mouseMoveEvent( TQMouseEvent * e )
-{
- if ( !d->mousePressed )
- return;
- if ( !d->tracking || (e->state() & Qt::LeftButton) == 0 )
- return;
- d->doNotEmit = TRUE;
- setValue( valueFromPoint( e->pos() ) );
- emit dialMoved( value() );
- d->doNotEmit = FALSE;
-}
-
-
-/*!
- \reimp
-*/
-#ifndef TQT_NO_WHEELEVENT
-void TQDial::wheelEvent( TQWheelEvent *e )
-{
- setValue( value() - e->delta() / 120 );
-}
-#endif
-
-/*!
- \reimp
-*/
-
-void TQDial::focusInEvent( TQFocusEvent * )
-{
- d->onlyOutside = TRUE;
- repaintScreen();
- d->onlyOutside = FALSE;
-}
-
-
-/*!
- \reimp
-*/
-
-void TQDial::focusOutEvent( TQFocusEvent * )
-{
- d->onlyOutside = TRUE;
- repaintScreen();
- d->onlyOutside = FALSE;
-}
-
-/*!
- Reimplemented to ensure the display is correct and to emit the
- valueChanged(int) signal when appropriate.
-*/
-
-void TQDial::valueChange()
-{
- d->lines.resize( 0 );
- repaintScreen();
- if ( d->tracking || !d->doNotEmit ) {
- emit valueChanged( value() );
-#if defined(TQT_ACCESSIBILITY_SUPPORT)
- TQAccessible::updateAccessibility( this, 0, TQAccessible::ValueChanged );
-#endif
- }
-}
-
-
-/*!
- Reimplemented to ensure tick-marks are consistent with the new range.
-*/
-
-void TQDial::rangeChange()
-{
- d->lines.resize( 0 );
- repaintScreen();
-}
-
-
-/*!
- \internal
-*/
-
-int TQDial::valueFromPoint( const TQPoint & p ) const
-{
- double yy = (double)height()/2.0 - p.y();
- double xx = (double)p.x() - width()/2.0;
- double a = (xx || yy) ? atan2(yy, xx) : 0;
-
- if ( a < m_pi/-2 )
- a = a + m_pi*2;
-
- int dist = 0;
- int minv = minValue(), maxv = maxValue();
-
- if ( minValue() < 0 ) {
- dist = -minValue();
- minv = 0;
- maxv = maxValue() + dist;
- }
-
- int r = maxv - minv;
- int v;
- if ( d->wrapping )
- v = (int)(0.5 + minv + r*(m_pi*3/2-a)/(2*m_pi));
- else
- v = (int)(0.5 + minv + r*(m_pi*4/3-a)/(m_pi*10/6));
-
- if ( dist > 0 )
- v -= dist;
-
- return bound( v );
-}
-
-
-/*!
- \internal
-*/
-
-double TQDial::angle( const TQPoint &p1, const TQPoint &p2 ) const
-{
- double _angle = 0.0;
-
- if ( p1.x() == p2.x() ) {
- if ( p1.y() < p2.y() )
- _angle = 270.0;
- else
- _angle = 90.0;
- } else {
- double x1, x2, y1, y2;
-
- if ( p1.x() <= p2.x() ) {
- x1 = p1.x(); y1 = p1.y();
- x2 = p2.x(); y2 = p2.y();
- } else {
- x2 = p1.x(); y2 = p1.y();
- x1 = p2.x(); y1 = p2.y();
- }
-
- double m = -( y2 - y1 ) / ( x2 - x1 );
- _angle = atan( m ) * rad_factor;
-
- if ( p1.x() < p2.x() )
- _angle = 180.0 - _angle;
- else
- _angle = -_angle;
- }
-
- return _angle;
-}
-
-void TQDial::setWrapping( bool enable )
-{
- if ( d->wrapping == enable )
- return;
- d->lines.resize( 0 );
- d->wrapping = enable;
- d->eraseAreaValid = FALSE;
- repaintScreen();
-}
-
-
-/*!
- \property TQDial::wrapping
- \brief whether wrapping is enabled
-
- If TRUE, wrapping is enabled. This means that the arrow can be
- turned around 360�. Otherwise there is some space at the bottom of
- the dial which is skipped by the arrow.
-
- This property's default is FALSE.
-*/
-
-bool TQDial::wrapping() const
-{
- return d->wrapping;
-}
-
-
-/*!
- \property TQDial::notchSize
- \brief the current notch size
-
- The notch size is in range control units, not pixels, and if
- possible it is a multiple of lineStep() that results in an
- on-screen notch size near notchTarget().
-
- \sa notchTarget() lineStep()
-*/
-
-int TQDial::notchSize() const
-{
- // radius of the arc
- int r = TQMIN( width(), height() )/2;
- // length of the whole arc
- int l = (int)(r*(d->wrapping ? 6 : 5)*m_pi/6);
- // length of the arc from minValue() to minValue()+pageStep()
- if ( maxValue() > minValue()+pageStep() )
- l = (int)(0.5 + l * pageStep() / (maxValue()-minValue()));
- // length of a lineStep() arc
- l = l * lineStep() / pageStep();
- if ( l < 1 )
- l = 1;
- // how many times lineStep can be draw in d->target pixels
- l = (int)(0.5 + d->target / l);
- // we want notchSize() to be a non-zero multiple of lineStep()
- if ( !l )
- l = 1;
- return lineStep() * l;
-}
-
-void TQDial::setNotchTarget( double target )
-{
- d->lines.resize( 0 );
- d->target = target;
- d->eraseAreaValid = FALSE;
- d->onlyOutside = TRUE;
- repaintScreen();
- d->onlyOutside = FALSE;
-}
-
-
-/*!
- \property TQDial::notchTarget
- \brief the target number of pixels between notches
-
- The notch target is the number of pixels TQDial attempts to put
- between each notch.
-
- The actual size may differ from the target size.
-*/
-
-double TQDial::notchTarget() const
-{
- return d->target;
-}
-
-
-/*!
- Increments the dial's value() by one pageStep() of steps.
-*/
-
-void TQDial::addPage()
-{
- TQRangeControl::addPage();
-}
-
-
-/*!
- Decrements the dial's value() by one pageStep() of steps.
-*/
-
-void TQDial::subtractPage()
-{
- TQRangeControl::subtractPage();
-}
-
-
-/*!
- \fn void TQDial::valueChanged( int value )
-
- This signal is emitted whenever the dial's \a value changes. The
- frequency of this signal is influenced by setTracking().
-*/
-
-/*!
- \fn void TQDial::dialPressed()
-
- This signal is emitted when the user begins mouse interaction with
- the dial.
-
- \sa dialReleased()
-*/
-
-/*!
- \fn void TQDial::dialMoved( int value )
-
- This signal is emitted whenever the dial \a value changes. The
- frequency of this signal is \e not influenced by setTracking().
-
- \sa valueChanged()
-*/
-
-/*!
- \fn void TQDial::dialReleased()
-
- This signal is emitted when the user ends mouse interaction with
- the dial.
-
- \sa dialPressed()
-*/
-
-void TQDial::setNotchesVisible( bool b )
-{
- d->showNotches = b;
- d->eraseAreaValid = FALSE;
- d->onlyOutside = TRUE;
- repaintScreen();
- d->onlyOutside = FALSE;
-}
-
-/*!
- \property TQDial::notchesVisible
- \brief whether the notches are shown
-
- If TRUE, the notches are shown. If FALSE (the default) notches are
- not shown.
-*/
-bool TQDial::notchesVisible() const
-{
- return d->showNotches;
-}
-
-/*!
- \reimp
-*/
-
-TQSize TQDial::tqminimumSizeHint() const
-{
- return TQSize( 50, 50 );
-}
-
-/*!
- \reimp
-*/
-
-TQSize TQDial::tqsizeHint() const
-{
- return TQSize( 100, 100 ).expandedTo( TQApplication::globalStrut() );
-}
-
-
-
-/*!
- \internal
-*/
-
-TQPointArray TQDial::calcArrow( double &a ) const
-{
- int r = TQMIN( width(), height() ) / 2;
- if ( maxValue() == minValue() )
- a = m_pi / 2;
- else if ( d->wrapping )
- a = m_pi * 3 / 2 - ( value() - minValue() ) * 2 * m_pi / ( maxValue() - minValue() );
- else
- a = ( m_pi * 8 - ( value() - minValue() ) * 10 * m_pi / ( maxValue() - minValue() ) ) / 6;
-
- int xc = width() / 2;
- int yc = height() / 2;
-
- int len = r - calcBigLineSize() - 5;
- if ( len < 5 )
- len = 5;
- int back = len / 4;
- if ( back < 1 )
- back = 1;
-
- TQPointArray arrow( 3 );
- arrow[0] = TQPoint( (int)( 0.5 + xc + len * cos(a) ),
- (int)( 0.5 + yc -len * sin( a ) ) );
- arrow[1] = TQPoint( (int)( 0.5 + xc + back * cos( a + m_pi * 5 / 6 ) ),
- (int)( 0.5 + yc - back * sin( a + m_pi * 5 / 6 ) ) );
- arrow[2] = TQPoint( (int)( 0.5 + xc + back * cos( a - m_pi * 5 / 6 ) ),
- (int)( 0.5 + yc - back * sin( a - m_pi * 5 / 6 ) ) );
- return arrow;
-}
-
-/*!
- \internal
-*/
-
-TQRect TQDial::calcDial() const
-{
- double r = TQMIN( width(), height() ) / 2.0;
- double d_ = r / 6.0;
- double dx = d_ + ( width() - 2 * r ) / 2.0 + 1;
- double dy = d_ + ( height() - 2 * r ) / 2.0 + 1;
- return TQRect( int(dx), int(dy),
- int(r * 2 - 2 * d_ - 2), int(r * 2 - 2 * d_ - 2) );
-}
-
-/*!
- \internal
-*/
-
-int TQDial::calcBigLineSize() const
-{
- int r = TQMIN( width(), height() ) / 2;
- int bigLineSize = r / 6;
- if ( bigLineSize < 4 )
- bigLineSize = 4;
- if ( bigLineSize > r / 2 )
- bigLineSize = r / 2;
- return bigLineSize;
-}
-
-/*!
- \internal
-*/
-
-void TQDial::calcLines()
-{
- if ( !d->lines.size() ) {
- double r = TQMIN( width(), height() ) / 2.0;
- int bigLineSize = calcBigLineSize();
- double xc = width() / 2.0;
- double yc = height() / 2.0;
- int ns = notchSize();
- int notches = ( maxValue() + ns - 1 - minValue() ) / ns;
- d->lines.resize( 2 + 2 * notches );
- int smallLineSize = bigLineSize / 2;
- int i;
- for( i = 0; i <= notches; i++ ) {
- double angle = d->wrapping
- ? m_pi * 3 / 2 - i * 2 * m_pi / notches
- : (m_pi * 8 - i * 10 * m_pi / notches) / 6;
-
- double s = sin( angle ); // sin/cos aren't defined as const...
- double c = cos( angle );
- if ( i == 0 || ( ((ns * i ) % pageStep() ) == 0 ) ) {
- d->lines[2*i] = TQPoint( (int)( xc + ( r - bigLineSize ) * c ),
- (int)( yc - ( r - bigLineSize ) * s ) );
- d->lines[2*i+1] = TQPoint( (int)( xc + r * c ),
- (int)( yc - r * s ) );
- } else {
- d->lines[2*i] = TQPoint( (int)( xc + ( r - 1 - smallLineSize ) * c ),
- (int)( yc - ( r - 1 - smallLineSize ) * s ) );
- d->lines[2*i+1] = TQPoint( (int)( xc + ( r - 1 ) * c ),
- (int)( yc -( r - 1 ) * s ) );
- }
- }
- }
-}
-
-/*!
- \property TQDial::minValue
- \brief the current minimum value
-
- When setting this property, the \l TQDial::maxValue is adjusted if
- necessary to ensure that the range remains valid.
-
- \sa setRange()
-*/
-int TQDial::minValue() const
-{
- return TQRangeControl::minValue();
-}
-
-/*!
- \property TQDial::maxValue
- \brief the current maximum value
-
- When setting this property, the \l TQDial::minValue is adjusted if
- necessary to ensure that the range remains valid.
-
- \sa setRange()
-*/
-int TQDial::maxValue() const
-{
- return TQRangeControl::maxValue();
-}
-
-void TQDial::setMinValue( int minVal )
-{
- TQRangeControl::setMinValue( minVal );
-}
-
-void TQDial::setMaxValue( int maxVal )
-{
- TQRangeControl::setMaxValue( maxVal );
-}
-
-/*!
- \property TQDial::lineStep
- \brief the current line step
-
- setLineStep() calls the virtual stepChange() function if the new
- line step is different from the previous setting.
-
- \sa TQRangeControl::setSteps() pageStep setRange()
-*/
-
-int TQDial::lineStep() const
-{
- return TQRangeControl::lineStep();
-}
-
-/*!
- \property TQDial::pageStep
- \brief the current page step
-
- setPageStep() calls the virtual stepChange() function if the new
- page step is different from the previous setting.
-
- \sa stepChange()
-*/
-int TQDial::pageStep() const
-{
- return TQRangeControl::pageStep();
-}
-
-void TQDial::setLineStep( int i )
-{
- setSteps( i, pageStep() );
-}
-
-void TQDial::setPageStep( int i )
-{
- setSteps( lineStep(), i );
-}
-
-/*!
- \property TQDial::value
- \brief the current dial value
-
- This is guaranteed to be within the range
- \l{TQDial::minValue}..\l{TQDial::maxValue}.
-
- \sa minValue maxValue
-*/
-
-int TQDial::value() const
-{
- return TQRangeControl::value();
-}
-
-#endif // TQT_FEATURE_DIAL