Use enums for on-preview geometry
This commit is contained in:
@@ -12,6 +12,14 @@
|
||||
using namespace rtengine;
|
||||
using namespace rtengine::procparams;
|
||||
|
||||
enum GeometryIndex {
|
||||
H_LINE,
|
||||
V_LINE,
|
||||
FEATHER_LINE_1,
|
||||
FEATHER_LINE_2,
|
||||
CENTER_CIRCLE,
|
||||
};
|
||||
|
||||
Gradient::Gradient () : FoldableToolPanel(this, "gradient", M("TP_GRADIENT_LABEL"), false, true), EditSubscriber(ET_OBJECTS), lastObject(-1), draggedPointOldAngle(-1000.)
|
||||
{
|
||||
|
||||
@@ -191,24 +199,24 @@ void Gradient::updateGeometry(const int centerX, const int centerY, const double
|
||||
};
|
||||
|
||||
// update horizontal line
|
||||
updateLine (visibleGeometry.at(0), 1500., 0., 180.);
|
||||
updateLine (mouseOverGeometry.at(0), 1500., 0., 180.);
|
||||
updateLine (visibleGeometry.at(H_LINE), 1500., 0., 180.);
|
||||
updateLine (mouseOverGeometry.at(H_LINE), 1500., 0., 180.);
|
||||
|
||||
// update vertical line
|
||||
updateLine (visibleGeometry.at(1), 700., 90., 270.);
|
||||
updateLine (mouseOverGeometry.at(1), 700., 90., 270.);
|
||||
updateLine (visibleGeometry.at(V_LINE), 700., 90., 270.);
|
||||
updateLine (mouseOverGeometry.at(V_LINE), 700., 90., 270.);
|
||||
|
||||
// update upper feather line
|
||||
updateLineWithDecay (visibleGeometry.at(2), 350., 270.);
|
||||
updateLineWithDecay (mouseOverGeometry.at(2), 350., 270.);
|
||||
updateLineWithDecay (visibleGeometry.at(FEATHER_LINE_1), 350., 270.);
|
||||
updateLineWithDecay (mouseOverGeometry.at(FEATHER_LINE_1), 350., 270.);
|
||||
|
||||
// update lower feather line
|
||||
updateLineWithDecay (visibleGeometry.at(3), 350., 90.);
|
||||
updateLineWithDecay (mouseOverGeometry.at(3), 350., 90.);
|
||||
updateLineWithDecay (visibleGeometry.at(FEATHER_LINE_2), 350., 90.);
|
||||
updateLineWithDecay (mouseOverGeometry.at(FEATHER_LINE_2), 350., 90.);
|
||||
|
||||
// update circle's position
|
||||
updateCircle (visibleGeometry.at(4));
|
||||
updateCircle (mouseOverGeometry.at(4));
|
||||
updateCircle (visibleGeometry.at(CENTER_CIRCLE));
|
||||
updateCircle (mouseOverGeometry.at(CENTER_CIRCLE));
|
||||
}
|
||||
|
||||
void Gradient::write (ProcParams* pp, ParamsEdited* pedited)
|
||||
@@ -333,12 +341,12 @@ void Gradient::editToggled ()
|
||||
CursorShape Gradient::getCursor(int objectID, int xPos, int yPos) const
|
||||
{
|
||||
switch (objectID) {
|
||||
case (0):
|
||||
case (1):
|
||||
case (H_LINE):
|
||||
case (V_LINE):
|
||||
return CSMoveRotate;
|
||||
|
||||
case (2):
|
||||
case (3): {
|
||||
case (FEATHER_LINE_1):
|
||||
case (FEATHER_LINE_2): {
|
||||
int angle = degree->getIntValue();
|
||||
|
||||
if (angle < -135 || (angle >= -45 && angle <= 45) || angle > 135) {
|
||||
@@ -348,7 +356,7 @@ CursorShape Gradient::getCursor(int objectID, int xPos, int yPos) const
|
||||
return CSMove1DH;
|
||||
}
|
||||
|
||||
case (4):
|
||||
case (CENTER_CIRCLE):
|
||||
return CSMove2D;
|
||||
|
||||
default:
|
||||
@@ -362,18 +370,18 @@ bool Gradient::mouseOver(int modifierKey)
|
||||
|
||||
if (editProvider && editProvider->getObject() != lastObject) {
|
||||
if (lastObject > -1) {
|
||||
if (lastObject == 2 || lastObject == 3) {
|
||||
EditSubscriber::visibleGeometry.at(2)->state = Geometry::NORMAL;
|
||||
EditSubscriber::visibleGeometry.at(3)->state = Geometry::NORMAL;
|
||||
if (lastObject == FEATHER_LINE_1 || lastObject == FEATHER_LINE_2) {
|
||||
EditSubscriber::visibleGeometry.at(FEATHER_LINE_1)->state = Geometry::NORMAL;
|
||||
EditSubscriber::visibleGeometry.at(FEATHER_LINE_2)->state = Geometry::NORMAL;
|
||||
} else {
|
||||
EditSubscriber::visibleGeometry.at(lastObject)->state = Geometry::NORMAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (editProvider->getObject() > -1) {
|
||||
if (editProvider->getObject() == 2 || editProvider->getObject() == 3) {
|
||||
EditSubscriber::visibleGeometry.at(2)->state = Geometry::PRELIGHT;
|
||||
EditSubscriber::visibleGeometry.at(3)->state = Geometry::PRELIGHT;
|
||||
if (editProvider->getObject() == FEATHER_LINE_1 || editProvider->getObject() == FEATHER_LINE_2) {
|
||||
EditSubscriber::visibleGeometry.at(FEATHER_LINE_1)->state = Geometry::PRELIGHT;
|
||||
EditSubscriber::visibleGeometry.at(FEATHER_LINE_2)->state = Geometry::PRELIGHT;
|
||||
} else {
|
||||
EditSubscriber::visibleGeometry.at(editProvider->getObject())->state = Geometry::PRELIGHT;
|
||||
}
|
||||
@@ -415,7 +423,7 @@ bool Gradient::button1Pressed(int modifierKey)
|
||||
//printf("\ndraggedPointOldAngle=%.3f\n\n", draggedPointOldAngle);
|
||||
draggedPointAdjusterAngle = degree->getValue();
|
||||
|
||||
if (lastObject == 2 || lastObject == 3) {
|
||||
if (lastObject == FEATHER_LINE_1 || lastObject == FEATHER_LINE_2) {
|
||||
// Dragging a line to change the angle
|
||||
PolarCoord draggedPoint;
|
||||
rtengine::Coord currPos;
|
||||
@@ -431,7 +439,7 @@ bool Gradient::button1Pressed(int modifierKey)
|
||||
// compute the projected value of the dragged point
|
||||
draggedFeatherOffset = draggedPoint.radius * sin((draggedPoint.angle - degree->getValue()) / 180.*rtengine::RT_PI);
|
||||
|
||||
if (lastObject == 3) {
|
||||
if (lastObject == FEATHER_LINE_2) {
|
||||
draggedFeatherOffset = -draggedFeatherOffset;
|
||||
}
|
||||
|
||||
@@ -442,9 +450,9 @@ bool Gradient::button1Pressed(int modifierKey)
|
||||
return false;
|
||||
} else { // should theoretically always be true
|
||||
// this will let this class ignore further drag events
|
||||
if (lastObject == 2 || lastObject == 3) {
|
||||
EditSubscriber::visibleGeometry.at(2)->state = Geometry::NORMAL;
|
||||
EditSubscriber::visibleGeometry.at(3)->state = Geometry::NORMAL;
|
||||
if (lastObject == FEATHER_LINE_1 || lastObject == FEATHER_LINE_2) {
|
||||
EditSubscriber::visibleGeometry.at(FEATHER_LINE_1)->state = Geometry::NORMAL;
|
||||
EditSubscriber::visibleGeometry.at(FEATHER_LINE_2)->state = Geometry::NORMAL;
|
||||
} else {
|
||||
EditSubscriber::visibleGeometry.at(lastObject)->state = Geometry::NORMAL;
|
||||
}
|
||||
@@ -472,7 +480,7 @@ bool Gradient::drag1(int modifierKey)
|
||||
double halfSizeW = imW / 2.;
|
||||
double halfSizeH = imH / 2.;
|
||||
|
||||
if (lastObject == 0 || lastObject == 1) {
|
||||
if (lastObject == H_LINE || lastObject == V_LINE) {
|
||||
|
||||
// Dragging a line to change the angle
|
||||
PolarCoord draggedPoint;
|
||||
@@ -516,7 +524,7 @@ bool Gradient::drag1(int modifierKey)
|
||||
|
||||
return true;
|
||||
}
|
||||
} else if (lastObject == 2 || lastObject == 3) {
|
||||
} else if (lastObject == FEATHER_LINE_1 || lastObject == FEATHER_LINE_2) {
|
||||
// Dragging the upper or lower feather bar
|
||||
PolarCoord draggedPoint;
|
||||
rtengine::Coord currPos;
|
||||
@@ -533,11 +541,11 @@ bool Gradient::drag1(int modifierKey)
|
||||
draggedPoint = currPos - centerPos;
|
||||
double currDraggedFeatherOffset = draggedPoint.radius * sin((draggedPoint.angle - degree->getValue()) / 180.*rtengine::RT_PI);
|
||||
|
||||
if (lastObject == 2)
|
||||
if (lastObject == FEATHER_LINE_1)
|
||||
// Dragging the upper feather bar
|
||||
{
|
||||
currDraggedFeatherOffset -= draggedFeatherOffset;
|
||||
} else if (lastObject == 3)
|
||||
} else if (lastObject == FEATHER_LINE_2)
|
||||
// Dragging the lower feather bar
|
||||
{
|
||||
currDraggedFeatherOffset = -currDraggedFeatherOffset + draggedFeatherOffset;
|
||||
@@ -555,7 +563,7 @@ bool Gradient::drag1(int modifierKey)
|
||||
|
||||
return true;
|
||||
}
|
||||
} else if (lastObject == 4) {
|
||||
} else if (lastObject == CENTER_CIRCLE) {
|
||||
// Dragging the circle to change the center
|
||||
rtengine::Coord currPos;
|
||||
draggedCenter += provider->deltaPrevImage;
|
||||
@@ -583,9 +591,9 @@ bool Gradient::drag1(int modifierKey)
|
||||
void Gradient::releaseEdit()
|
||||
{
|
||||
if (lastObject >= 0) {
|
||||
if (lastObject == 2 || lastObject == 3) {
|
||||
EditSubscriber::visibleGeometry.at(2)->state = Geometry::NORMAL;
|
||||
EditSubscriber::visibleGeometry.at(3)->state = Geometry::NORMAL;
|
||||
if (lastObject == FEATHER_LINE_1 || lastObject == FEATHER_LINE_2) {
|
||||
EditSubscriber::visibleGeometry.at(FEATHER_LINE_1)->state = Geometry::NORMAL;
|
||||
EditSubscriber::visibleGeometry.at(FEATHER_LINE_2)->state = Geometry::NORMAL;
|
||||
} else {
|
||||
EditSubscriber::visibleGeometry.at(lastObject)->state = Geometry::NORMAL;
|
||||
}
|
||||
|
Reference in New Issue
Block a user