Mouse detection
This commit is contained in:
parent
e24837649c
commit
bcd01a95b3
5 changed files with 163 additions and 16 deletions
103
gridpreview.cpp
103
gridpreview.cpp
|
|
@ -12,19 +12,67 @@ void GridPreview::setSize(int newWidth, int newHeight)
|
|||
{
|
||||
width = newWidth;
|
||||
height = newHeight;
|
||||
|
||||
update();
|
||||
emit updatedContents();
|
||||
}
|
||||
|
||||
void GridPreview::addLine(Line &line)
|
||||
{
|
||||
lines.push_back(line);
|
||||
|
||||
update();
|
||||
emit updatedContents();
|
||||
}
|
||||
|
||||
void GridPreview::removeLine(int index)
|
||||
{
|
||||
lines.removeAt(index);
|
||||
|
||||
update();
|
||||
emit updatedContents();
|
||||
}
|
||||
|
||||
QString GridPreview::toLuaTable()
|
||||
void GridPreview::setLineColor(int index, QString color)
|
||||
{
|
||||
lines[index].setColor(color);
|
||||
|
||||
update();
|
||||
emit updatedContents();
|
||||
}
|
||||
|
||||
void GridPreview::setLineStartPoint(int index, int x, int y)
|
||||
{
|
||||
lines[index].setStartPoint(x, y);
|
||||
|
||||
update();
|
||||
emit updatedContents();
|
||||
}
|
||||
|
||||
void GridPreview::setLineEndPoint(int index, int x, int y)
|
||||
{
|
||||
lines[index].setEndPoint(x, y);
|
||||
|
||||
update();
|
||||
emit updatedContents();
|
||||
}
|
||||
|
||||
int GridPreview::getWidth()
|
||||
{
|
||||
return width;
|
||||
}
|
||||
|
||||
int GridPreview::getHeight()
|
||||
{
|
||||
return height;
|
||||
}
|
||||
|
||||
const Line &GridPreview::getLine(int index)
|
||||
{
|
||||
return lines.at(index);
|
||||
}
|
||||
|
||||
const QString GridPreview::toLuaTable()
|
||||
{
|
||||
QString output(tableTemplate.arg(width).arg(height));
|
||||
QString linesSubTable = "";
|
||||
|
|
@ -37,13 +85,15 @@ QString GridPreview::toLuaTable()
|
|||
return output.arg(linesSubTable);
|
||||
}
|
||||
|
||||
void GridPreview::paintEvent(QPaintEvent *event)
|
||||
void GridPreview::paintEvent(QPaintEvent *)
|
||||
{
|
||||
QPainter painter(this);
|
||||
QPen pen(Qt::black, 2);
|
||||
painter.setPen(pen);
|
||||
QBrush brush(Qt::black);
|
||||
bool widthBased = rect().width() > rect().height();
|
||||
double aspectRatio = (double) rect().width() / rect().height();
|
||||
double cellAspectRatio = (double) width / height;
|
||||
bool widthBased = aspectRatio > cellAspectRatio;
|
||||
int cellSize = widthBased ?
|
||||
rect().height() / height :
|
||||
rect().width() / width;
|
||||
|
|
@ -101,9 +151,54 @@ void GridPreview::paintEvent(QPaintEvent *event)
|
|||
}
|
||||
}
|
||||
|
||||
QColor GridPreview::colorFromString(QString color)
|
||||
const QColor GridPreview::colorFromString(const QString color)
|
||||
{
|
||||
if (!colorMap.contains(color))
|
||||
return colorMap[QString("red")];
|
||||
return colorMap[color];
|
||||
}
|
||||
|
||||
void GridPreview::mouseMoveEvent(QMouseEvent *event)
|
||||
{
|
||||
if (!mouseCaptured) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void GridPreview::mousePressEvent(QMouseEvent *event)
|
||||
{
|
||||
mouseCaptured = true;
|
||||
|
||||
QPoint gridPos = localMousePosition(event);
|
||||
|
||||
std::cout << gridPos.x() << ',' << gridPos.y() << std::endl;
|
||||
}
|
||||
|
||||
void GridPreview::mouseReleaseEvent(QMouseEvent *event)
|
||||
{
|
||||
mouseCaptured = false;
|
||||
}
|
||||
|
||||
const QPoint GridPreview::localMousePosition(QMouseEvent *event)
|
||||
{
|
||||
QPoint position(event->position().toPoint());
|
||||
return snapToGrid(position.x(), position.y());
|
||||
}
|
||||
|
||||
const QPoint GridPreview::snapToGrid(int x, int y)
|
||||
{
|
||||
double aspectRatio = (double) rect().width() / rect().height();
|
||||
double cellAspectRatio = (double) width / height;
|
||||
bool widthBased = aspectRatio > cellAspectRatio;
|
||||
int cellSize = widthBased ?
|
||||
rect().height() / height :
|
||||
rect().width() / width;
|
||||
|
||||
int areaWidth = cellSize * width;
|
||||
int areaHeight = cellSize * height;
|
||||
|
||||
int offsetX = (rect().width() - areaWidth) / 2;
|
||||
int offsetY = (rect().height() - areaHeight) / 2;
|
||||
|
||||
return QPoint(1 + (x - offsetX) / cellSize, 1 + (y - offsetY) / cellSize);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue