mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
Painter improvements: Multithreaded rendering improved, new image filter (like Lanczos 3) option, image mapping is now more precise
34 lines
717 B
C++
34 lines
717 B
C++
#include "Painter.h"
|
|
|
|
namespace Upp {
|
|
|
|
void BufferPainter::BeginOnPathOp(double q, bool abs)
|
|
{
|
|
One<SpanSource> none;
|
|
if(onpath.GetCount() == 0)
|
|
RenderPath(ONPATH, none, RGBAZero());
|
|
Begin();
|
|
if(pathlen > 0) {
|
|
if(!abs)
|
|
q *= pathlen;
|
|
Pointf pos(0, 0);
|
|
for(int i = 0; i < onpath.GetCount(); i++) {
|
|
PathLine& l = onpath[i];
|
|
if(l.len > 0 && (l.len > q || q >= 1.0 && i == onpath.GetCount() - 1)) {
|
|
Pointf v = l.p - pos;
|
|
Translate(q / l.len * v + pos);
|
|
Rotate(Bearing(v));
|
|
break;
|
|
}
|
|
q -= l.len;
|
|
pos = l.p;
|
|
}
|
|
}
|
|
attrstack.Top().onpath = true;
|
|
onpathstack.Add() = pick(onpath);
|
|
pathlenstack.Add(pathlen);
|
|
onpath.Clear();
|
|
pathlen = 0;
|
|
}
|
|
|
|
}
|