ultimatepp/uppsrc/Painter/Context.cpp
cxl c01865a3ef Added Painter - high quality, AGG based, software renderer, also NEVER_(msg)
git-svn-id: svn://ultimatepp.org/upp/trunk@745 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2009-01-14 10:46:18 +00:00

76 lines
1.4 KiB
C++

#include "Painter.h"
NAMESPACE_UPP
void BufferPainter::BeginOp()
{
attrstack.Add(attr);
attr.hasclip = false;
}
void BufferPainter::EndOp()
{
if(attrstack.GetCount() == 0) {
NEVER_("Painter::End: attribute stack is empty");
return;
}
pathattr = attr = attrstack.Pop();
clip.SetCount(attr.cliplevel);
if(attr.mask)
FinishMask();
}
void BufferPainter::TransformOp(const Matrix2D& m)
{
ASSERT_(!inpath, "Cannot change transformation during path definition");
pathattr.mtx = m * attr.mtx;
if(!inpath)
attr.mtx = m * attr.mtx;
}
void BufferPainter::OpacityOp(double o)
{
pathattr.opacity *= o;
if(!inpath)
attr.opacity *= o;
}
void BufferPainter::LineCapOp(int linecap)
{
pathattr.cap = linecap;
if(!inpath)
attr.cap = linecap;
}
void BufferPainter::LineJoinOp(int linejoin)
{
pathattr.join = linejoin;
if(!inpath)
attr.join = linejoin;
}
void BufferPainter::MiterLimitOp(double l)
{
pathattr.miter_limit = l;
if(!inpath)
attr.miter_limit = l;
}
void BufferPainter::EvenOddOp(bool evenodd)
{
pathattr.evenodd = evenodd;
if(!inpath)
attr.evenodd = evenodd;
}
void BufferPainter::DashOp(const Vector<double>& dash, double start)
{
pathattr.dash <<= dash;
pathattr.dash_start = start;
if(!inpath) {
attr.dash <<= dash;
attr.dash_start = start;
}
}
END_UPP_NAMESPACE