[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/karbon/plugins/tools/CalligraphyTool
From: Fela Winkelmolen <fela.kde () gmail ! com>
Date: 2008-07-02 8:43:26
Message-ID: 1214988206.713653.9158.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 827075 by fela:
Add drag support.
M +31 -10 KarbonCalligraphyTool.cpp
M +4 -2 KarbonCalligraphyTool.h
--- trunk/koffice/karbon/plugins/tools/CalligraphyTool/KarbonCalligraphyTool.cpp #827074:827075
@@ -53,7 +53,8 @@
KarbonCalligraphyTool::KarbonCalligraphyTool(KoCanvasBase *canvas)
: KoTool( canvas ), m_shape( 0 ), m_strokeWidth( 50 ), m_angle( M_PI/6.0 ),
- m_thinning( 0.0 ), m_mass( 20.0 ), m_isDrawing( false ), m_speed(0, 0)
+ m_thinning( 0.0 ), m_mass( 17.0 ), m_drag( 1.0),
+ m_isDrawing( false ), m_speed(0, 0)
{
}
@@ -146,9 +147,10 @@
QPointF force = event->point - m_lastPoint;
QPointF dSpeed = force/m_mass;
- m_speed = m_speed/3.0 + dSpeed;
+ m_speed += dSpeed;
m_lastPoint = m_lastPoint + m_speed;
+ m_speed *= (1.0 - m_drag);
// calculate the modulo of the speed
double speed = std::sqrt( pow(m_speed.x(), 2) + pow(m_speed.y(), 2) );
@@ -198,7 +200,7 @@
QDoubleSpinBox *thinningBox = new QDoubleSpinBox;
thinningBox->setRange( -1.0, 1.0 );
thinningBox->setSingleStep( 0.1 );
- thinningBox->setValue( 0.0 );
+ thinningBox->setValue( m_thinning*2.0 );
thinningLayout->addWidget( thinningLabel );
thinningLayout->addWidget( thinningBox );
layout->addLayout( thinningLayout );
@@ -214,13 +216,24 @@
QHBoxLayout *massLayout = new QHBoxLayout( optionWidget );
QLabel *massLabel = new QLabel( i18n( "Mass" ), optionWidget );
- QSpinBox *massBox = new QSpinBox;
- massBox->setRange( 1, 20 );
- massBox->setValue( qRound(sqrt(m_mass)) );
+ QDoubleSpinBox *massBox = new QDoubleSpinBox;
+ massBox->setRange( 0.0, 20.0 );
+ massBox->setDecimals(1);
+ massBox->setValue( sqrt(m_mass - 1) );
massLayout->addWidget( massLabel );
massLayout->addWidget( massBox );
layout->addLayout( massLayout );
+ QHBoxLayout *dragLayout = new QHBoxLayout( optionWidget );
+ QLabel *dragLabel = new QLabel( i18n( "Drag" ), optionWidget );
+ QDoubleSpinBox *dragBox = new QDoubleSpinBox;
+ dragBox->setRange( 0.0, 1.0 );
+ dragBox->setSingleStep( 0.1 );
+ dragBox->setValue( m_drag );
+ dragLayout->addWidget( dragLabel );
+ dragLayout->addWidget( dragBox );
+ layout->addLayout( dragLayout );
+
connect( widthBox, SIGNAL(valueChanged(double)),
this, SLOT(setStrokeWidth(double)));
@@ -230,9 +243,12 @@
connect( angleBox, SIGNAL(valueChanged(int)),
this, SLOT(setAngle(int)));
- connect( massBox, SIGNAL(valueChanged(int)),
- this, SLOT(setMass(int)));
+ connect( massBox, SIGNAL(valueChanged(double)),
+ this, SLOT(setMass(double)));
+ connect( dragBox, SIGNAL(valueChanged(double)),
+ this, SLOT(setDrag(double)));
+
return optionWidget;
}
@@ -251,7 +267,12 @@
m_angle = angle/180.0*M_PI;
}
-void KarbonCalligraphyTool::setMass( int mass )
+void KarbonCalligraphyTool::setMass( double mass )
{
- m_mass = mass * mass;
+ m_mass = mass * mass + 1;
}
+
+void KarbonCalligraphyTool::setDrag( double drag )
+{
+ m_drag = drag;
+}
--- trunk/koffice/karbon/plugins/tools/CalligraphyTool/KarbonCalligraphyTool.h #827074:827075
@@ -48,8 +48,9 @@
private slots:
void setStrokeWidth( double width );
void setThinning( double thinning );
- void setAngle( int angle ); // angle in degrees
- void setMass( int mass ); // mass in user friendly format
+ void setAngle( int angle ); // set theangle in degrees
+ void setMass( double mass ); // set the mass in user friendly format
+ void setDrag( double drag );
private:
void addPoint( KoPointerEvent *event );
@@ -61,6 +62,7 @@
double m_angle; // angle in radians
double m_thinning;
double m_mass; // in raw format (not user friendly)
+ double m_drag; // from 0.0 to 1.0
bool m_isDrawing;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic