mirror of
https://github.com/tumic0/GPXSee.git
synced 2025-02-17 16:20:48 +01:00
Compare commits
2 Commits
96b602bf14
...
9464bbc13f
Author | SHA1 | Date | |
---|---|---|---|
9464bbc13f | |||
4e7c6e39aa |
@ -326,10 +326,10 @@ void Style::defaultLineStyle(qreal ratio)
|
||||
QPen(QColor("#d5cdc0"), 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
||||
_lines[TYPE(0x07)] = Line(QPen(QColor("#ffffff"), 2, Qt::SolidLine),
|
||||
QPen(QColor("#d5cdc0"), 4, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
||||
_lines[TYPE(0x08)] = Line(QPen(QColor("#ffcc78"), 2, Qt::SolidLine),
|
||||
_lines[TYPE(0x08)] = Line(QPen(QColor("#faef75"), 3, Qt::SolidLine),
|
||||
QPen(QColor("#dbd27b"), 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
||||
_lines[TYPE(0x09)] = Line(QPen(QColor("#ffcc78"), 2, Qt::SolidLine),
|
||||
QPen(QColor("#e8a541"), 6, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
||||
_lines[TYPE(0x09)] = Line(QPen(QColor("#9bd772"), 2, Qt::SolidLine),
|
||||
QPen(QColor("#72a35a"), 6, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
||||
_lines[TYPE(0x0a)] = Line(QPen(QColor("#aba083"), 1, Qt::DashLine));
|
||||
_lines[TYPE(0x0b)] = Line(QPen(QColor("#ffcc78"), 2, Qt::SolidLine),
|
||||
QPen(QColor("#e8a541"), 6, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
||||
|
@ -4,11 +4,10 @@
|
||||
#include "bitmapline.h"
|
||||
|
||||
|
||||
static QImage img2line(const QImage &img, int width)
|
||||
static QImage img2line(const QImage &img, int width, int offset)
|
||||
{
|
||||
Q_ASSERT(img.format() == QImage::Format_ARGB32_Premultiplied);
|
||||
QImage res(width * img.devicePixelRatio(), img.height(),
|
||||
QImage::Format_ARGB32_Premultiplied);
|
||||
QImage res(width, img.height(), QImage::Format_ARGB32_Premultiplied);
|
||||
const int srcBpl = img.bytesPerLine();
|
||||
const int dstBpl = res.bytesPerLine();
|
||||
const uchar *srcBits = img.bits();
|
||||
@ -17,8 +16,14 @@ static QImage img2line(const QImage &img, int width)
|
||||
for (int i = 0; i < img.height(); i++) {
|
||||
const uchar *srcLine = srcBits + srcBpl * i;
|
||||
uchar *dstLine = dstBits + dstBpl * i;
|
||||
int size = 0;
|
||||
|
||||
for (int j = dstBpl; j > 0; j -= srcBpl, dstLine += srcBpl)
|
||||
if (offset) {
|
||||
size = qMin(dstBpl, srcBpl - 4 * offset);
|
||||
memcpy(dstLine, srcLine + 4 * offset, size);
|
||||
dstLine += size;
|
||||
}
|
||||
for (int j = dstBpl - size; j > 0; j -= srcBpl, dstLine += srcBpl)
|
||||
memcpy(dstLine, srcLine, qMin(j, srcBpl));
|
||||
}
|
||||
|
||||
@ -30,16 +35,20 @@ static QImage img2line(const QImage &img, int width)
|
||||
void BitmapLine::draw(QPainter *painter, const QPolygonF &line,
|
||||
const QImage &img)
|
||||
{
|
||||
int offset = 0;
|
||||
|
||||
for (int i = 1; i < line.size(); i++) {
|
||||
QLineF segment(line.at(i-1).x(), line.at(i-1).y(), line.at(i).x(),
|
||||
line.at(i).y());
|
||||
int len = qCeil(segment.length() * img.devicePixelRatio());
|
||||
|
||||
painter->save();
|
||||
painter->translate(segment.p1());
|
||||
painter->rotate(-segment.angle());
|
||||
painter->drawImage(0.0, -img.height()/2.0, img2line(img,
|
||||
qCeil(segment.length())));
|
||||
painter->drawImage(0.0, -img.height()/2.0, img2line(img, len, offset));
|
||||
painter->restore();
|
||||
|
||||
offset = (len + offset) % img.width();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user