fix the build... sorry guys!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20625 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
* Copyright 2007, Haiku. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Stephan Aßmus <[email protected]>
|
||||
*/
|
||||
|
||||
#include "FlipPointsCommand.h"
|
||||
|
||||
#include <new>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "VectorPath.h"
|
||||
|
||||
using std::nothrow;
|
||||
|
||||
// constructor
|
||||
FlipPointsCommand::FlipPointsCommand(VectorPath* path,
|
||||
const int32* indices,
|
||||
int32 count)
|
||||
: PathCommand(path),
|
||||
fIndex(NULL),
|
||||
fCount(0)
|
||||
{
|
||||
if (indices && count > 0) {
|
||||
fIndex = new (nothrow) int32[count];
|
||||
fCount = count;
|
||||
}
|
||||
|
||||
if (InitCheck() < B_OK)
|
||||
return;
|
||||
|
||||
memcpy(fIndex, indices, count * sizeof(int32));
|
||||
}
|
||||
|
||||
// destructor
|
||||
FlipPointsCommand::~FlipPointsCommand()
|
||||
{
|
||||
delete[] fIndex;
|
||||
}
|
||||
|
||||
// InitCheck
|
||||
status_t
|
||||
FlipPointsCommand::InitCheck()
|
||||
{
|
||||
status_t status = PathCommand::InitCheck();
|
||||
if (status < B_OK)
|
||||
return status;
|
||||
if (!fIndex)
|
||||
status = B_NO_MEMORY;
|
||||
return status;
|
||||
}
|
||||
|
||||
// Perform
|
||||
status_t
|
||||
FlipPointsCommand::Perform()
|
||||
{
|
||||
status_t status = B_OK;
|
||||
|
||||
AutoNotificationSuspender _(fPath);
|
||||
|
||||
// NOTE: fCount guaranteed > 0
|
||||
for (int32 i = 0; i < fCount; i++) {
|
||||
BPoint point;
|
||||
BPoint pointIn;
|
||||
BPoint pointOut;
|
||||
bool connected;
|
||||
|
||||
if (fPath->GetPointsAt(fIndex[i], point, pointIn, pointOut, &connected)) {
|
||||
BPoint p1(point - (pointOut - point));
|
||||
printf("flip: (%.1f, %.1f) -> (%.1f, %.1f)\n", pointOut.x, pointOut.y, p1.x, p1.y);
|
||||
// flip "in" and "out" control points
|
||||
fPath->SetPoint(fIndex[i],
|
||||
point,
|
||||
point - (pointIn - point),
|
||||
point - (pointOut - point),
|
||||
connected);
|
||||
} else {
|
||||
status = B_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
// Undo
|
||||
status_t
|
||||
FlipPointsCommand::Undo()
|
||||
{
|
||||
status_t status = Perform();
|
||||
|
||||
if (status >= B_OK) {
|
||||
// restore selection
|
||||
_Select(fIndex, fCount);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
// GetName
|
||||
void
|
||||
FlipPointsCommand::GetName(BString& name)
|
||||
{
|
||||
if (fCount > 1)
|
||||
name << "Flip Control Points";
|
||||
else
|
||||
name << "Flip Control Point";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright 2007, Haiku. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Stephan Aßmus <[email protected]>
|
||||
*/
|
||||
|
||||
#ifndef FLIP_POINTS_COMMAND_H
|
||||
#define FLIP_POINTS_COMMAND_H
|
||||
|
||||
#include "PathCommand.h"
|
||||
|
||||
class BPoint;
|
||||
|
||||
class FlipPointsCommand : public PathCommand {
|
||||
public:
|
||||
FlipPointsCommand(VectorPath* path,
|
||||
const int32* indices,
|
||||
int32 count);
|
||||
virtual ~FlipPointsCommand();
|
||||
|
||||
virtual status_t InitCheck();
|
||||
|
||||
virtual status_t Perform();
|
||||
virtual status_t Undo();
|
||||
|
||||
virtual void GetName(BString& name);
|
||||
|
||||
private:
|
||||
int32* fIndex;
|
||||
int32 fCount;
|
||||
};
|
||||
|
||||
#endif // FLIP_POINTS_COMMAND_H
|
||||
Reference in New Issue
Block a user