paysages : Curve editor (WIP).

git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@277 b1fd45b6-86a6-48da-8261-f70d1f35bdcc
This commit is contained in:
Michaël Lemaire 2012-03-08 15:56:44 +00:00 committed by ThunderK
parent c9fd2cca95
commit f479af8417
6 changed files with 39 additions and 1 deletions

View file

@ -25,6 +25,8 @@ DialogColorGradation::DialogColorGradation(QWidget *parent, ColorGradation* grad
_curve_editor = new WidgetCurveEditor(this);
layout()->addWidget(_curve_editor);
_curve = curveCreate();
/*QObject::connect(button, SIGNAL(clicked()), this, SLOT(accept()));
QObject::connect(button, SIGNAL(clicked()), this, SLOT(revert()));
QObject::connect(button, SIGNAL(clicked()), this, SLOT(reject()));*/
@ -37,6 +39,7 @@ DialogColorGradation::DialogColorGradation(QWidget *parent, ColorGradation* grad
DialogColorGradation::~DialogColorGradation()
{
colorGradationDelete(_current);
curveDelete(_curve);
}
bool DialogColorGradation::getGradation(QWidget* parent, ColorGradation* gradation)
@ -70,5 +73,6 @@ void DialogColorGradation::revert()
void DialogColorGradation::revertToCurrent()
{
// TODO
colorGradationGetRedCurve(_current, _curve);
_curve_editor->setCurve(_curve);
}

View file

@ -6,6 +6,7 @@
#include "widgetcurveeditor.h"
#include "../lib_paysages/color.h"
#include "../lib_paysages/curve.h"
class DialogColorGradation : public QDialog
{
@ -29,6 +30,7 @@ private:
private:
ColorGradation* _base;
ColorGradation* _current;
Curve* _curve;
WidgetCurveEditor* _curve_editor;
};

View file

@ -15,8 +15,21 @@ WidgetCurveEditor::~WidgetCurveEditor()
curveDelete(_curve);
}
void WidgetCurveEditor::setCurve(Curve* curve)
{
curveCopy(curve, _curve);
update();
}
void WidgetCurveEditor::getCurve(Curve* curve)
{
curveCopy(_curve, curve);
}
void WidgetCurveEditor::paintEvent(QPaintEvent* event)
{
int i, n;
CurvePoint point;
double position, value;
QPainter painter(this);
@ -29,4 +42,11 @@ void WidgetCurveEditor::paintEvent(QPaintEvent* event)
value = curveGetValue(_curve, position);
painter.drawPoint(x, 499 - (int)(value * 499.0));
}
n = curveGetPointCount(_curve);
for (i = 0; i < n; i++)
{
curveGetPoint(_curve, i, &point);
painter.drawEllipse(QPoint((int)(point.position * 499.0), 499 - (int)(point.value * 499.0)), 4.0, 4.0);
}
}

View file

@ -12,6 +12,9 @@ public:
WidgetCurveEditor(QWidget* parent);
~WidgetCurveEditor();
void setCurve(Curve* curve);
void getCurve(Curve* curve);
protected:
void paintEvent(QPaintEvent* event);

View file

@ -96,6 +96,14 @@ void curveGetPoint(Curve* curve, int number, CurvePoint* point)
}
}
void curveSetPoint(Curve* curve, int number, CurvePoint* point)
{
if (number >= 0 && number < curve->nbpoints)
{
curve->points[number] = *point;
}
}
int _point_compare(const void* part1, const void* part2)
{
if (((CurvePoint*)part1)->position > ((CurvePoint*)part2)->position)

View file

@ -25,6 +25,7 @@ int curveAddPoint(Curve* curve, CurvePoint* point);
int curveQuickAddPoint(Curve* curve, double position, double value);
int curveGetPointCount(Curve* curve);
void curveGetPoint(Curve* curve, int number, CurvePoint* point);
void curveSetPoint(Curve* curve, int number, CurvePoint* point);
void curveValidate(Curve* curve);
double curveGetValue(Curve* curve, double position);