float width;
LOTCapStyle cap;
LOTJoinStyle join;
- float meterLimit;
+ float miterLimit;
float *dashArray;
int dashArraySize;
} mStroke;
float scale =
getScale(static_cast<LOTContentGroupItem *>(parent())->matrix());
mDrawable.setStrokeInfo(mModel.capStyle(), mModel.joinStyle(),
- mModel.meterLimit(), mWidth * scale);
+ mModel.miterLimit(), mWidth * scale);
if (!mDashInfo.empty()) {
for (auto &elm : mDashInfo) elm *= scale;
mGradient->mMatrix = static_cast<LOTContentGroupItem *>(parent())->matrix();
mCap = mData->capStyle();
mJoin = mData->joinStyle();
- mMiterLimit = mData->meterLimit();
+ mMiterLimit = mData->miterLimit();
mWidth = mData->width(frameNo);
if (mData->hasDashInfo()) mData->getDashInfo(frameNo, mDashInfo);
if (mStroke.enable) {
mCNode->mStroke.width = mStroke.width;
- mCNode->mStroke.meterLimit = mStroke.meterLimit;
+ mCNode->mStroke.miterLimit = mStroke.miterLimit;
mCNode->mStroke.enable = 1;
switch (mStroke.cap) {
float strokeWidth(int frameNo) const {return mWidth.value(frameNo);}
CapStyle capStyle() const {return mCapStyle;}
JoinStyle joinStyle() const {return mJoinStyle;}
- float meterLimit() const{return mMeterLimit;}
+ float miterLimit() const{return mMiterLimit;}
bool hasDashInfo() const {return !mDash.empty();}
void getDashInfo(int frameNo, std::vector<float>& result) const
{
LOTAnimatable<float> mWidth{0}; /* "w" */
CapStyle mCapStyle{CapStyle::Flat}; /* "lc" */
JoinStyle mJoinStyle{JoinStyle::Miter}; /* "lj" */
- float mMeterLimit{0}; /* "ml" */
+ float mMiterLimit{0}; /* "ml" */
LOTDashProperty mDash;
bool mEnabled{true}; /* "fillEnabled" */
};
float width(int frameNo) const {return mWidth.value(frameNo);}
CapStyle capStyle() const {return mCapStyle;}
JoinStyle joinStyle() const {return mJoinStyle;}
- float meterLimit() const{return mMeterLimit;}
+ float miterLimit() const{return mMiterLimit;}
bool hasDashInfo() const {return !mDash.empty();}
void getDashInfo(int frameNo, std::vector<float>& result) const
{
LOTAnimatable<float> mWidth; /* "w" */
CapStyle mCapStyle{CapStyle::Flat}; /* "lc" */
JoinStyle mJoinStyle{JoinStyle::Miter}; /* "lj" */
- float mMeterLimit{0}; /* "ml" */
+ float mMiterLimit{0}; /* "ml" */
LOTDashProperty mDash;
};
obj->mJoinStyle = getLineJoin();
} else if (0 == strcmp(key, "ml")) {
RAPIDJSON_ASSERT(PeekType() == kNumberType);
- obj->mMeterLimit = GetDouble();
+ obj->mMiterLimit = GetDouble();
} else if (0 == strcmp(key, "d")) {
parseDashProperty(obj->mDash);
} else if (0 == strcmp(key, "hd")) {
obj->mJoinStyle = getLineJoin();
} else if (0 == strcmp(key, "ml")) {
RAPIDJSON_ASSERT(PeekType() == kNumberType);
- obj->mMeterLimit = GetDouble();
+ obj->mMiterLimit = GetDouble();
} else if (0 == strcmp(key, "d")) {
parseDashProperty(obj->mDash);
} else {
}
return _modelData->strokeWidth(frame);
}
- float meterLimit() const {return _modelData->meterLimit();}
+ float miterLimit() const {return _modelData->miterLimit();}
CapStyle capStyle() const {return _modelData->capStyle();}
JoinStyle joinStyle() const {return _modelData->joinStyle();}
bool hasDashInfo() const { return _modelData->hasDashInfo();}
mPath.clone(dasher.dashed(mPath));
}
mRasterizer.rasterize(std::move(mPath), mStroke.cap, mStroke.join,
- mStroke.width, mStroke.meterLimit, clip);
+ mStroke.width, mStroke.miterLimit, clip);
} else {
mRasterizer.rasterize(std::move(mPath), mFillRule, clip);
}
return mRasterizer.rle();
}
-void VDrawable::setStrokeInfo(CapStyle cap, JoinStyle join, float meterLimit,
+void VDrawable::setStrokeInfo(CapStyle cap, JoinStyle join, float miterLimit,
float strokeWidth)
{
if ((mStroke.cap == cap) && (mStroke.join == join) &&
- vCompare(mStroke.meterLimit, meterLimit) &&
+ vCompare(mStroke.miterLimit, miterLimit) &&
vCompare(mStroke.width, strokeWidth))
return;
mStroke.enable = true;
mStroke.cap = cap;
mStroke.join = join;
- mStroke.meterLimit = meterLimit;
+ mStroke.miterLimit = miterLimit;
mStroke.width = strokeWidth;
mFlag |= DirtyState::Path;
}
void setPath(const VPath &path);
void setFillRule(FillRule rule) { mFillRule = rule; }
void setBrush(const VBrush &brush) { mBrush = brush; }
- void setStrokeInfo(CapStyle cap, JoinStyle join, float meterLimit,
+ void setStrokeInfo(CapStyle cap, JoinStyle join, float miterLimit,
float strokeWidth);
void setDashInfo(std::vector<float> &dashInfo);
void preprocess(const VRect &clip);
struct StrokeInfo {
std::vector<float> mDash;
float width{0.0};
- float meterLimit{10};
+ float miterLimit{10};
bool enable{false};
CapStyle cap{CapStyle::Flat};
JoinStyle join{JoinStyle::Bevel};
SW_FT_Stroker_LineCap ftCap;
SW_FT_Stroker_LineJoin ftJoin;
SW_FT_Fixed ftWidth;
- SW_FT_Fixed ftMeterLimit;
+ SW_FT_Fixed ftMiterLimit;
dyn_array<SW_FT_Vector> mPointMemory{100};
dyn_array<char> mTagMemory{100};
dyn_array<short> mContourMemory{10};
}
void FTOutline::convert(CapStyle cap, JoinStyle join, float width,
- float meterLimit)
+ float miterLimit)
{
// map strokeWidth to freetype. It uses as the radius of the pen not the
// diameter
// IMP: stroker takes radius in 26.6 co-ordinate
ftWidth = SW_FT_Fixed(width * (1 << 6));
// IMP: stroker takes meterlimit in 16.16 co-ordinate
- ftMeterLimit = SW_FT_Fixed(meterLimit * (1 << 16));
+ ftMiterLimit = SW_FT_Fixed(miterLimit * (1 << 16));
// map to freetype capstyle
switch (cap) {
SharedRle mRle;
VPath mPath;
float mStrokeWidth;
- float mMeterLimit;
+ float mMiterLimit;
VRect mClip;
FillRule mFillRule;
CapStyle mCap;
}
void update(VPath path, CapStyle cap, JoinStyle join, float width,
- float meterLimit, const VRect &clip)
+ float miterLimit, const VRect &clip)
{
mRle.reset();
mPath = std::move(path);
mCap = cap;
mJoin = join;
mStrokeWidth = width;
- mMeterLimit = meterLimit;
+ mMiterLimit = miterLimit;
mClip = clip;
mGenerateStroke = true;
}
if (mGenerateStroke) { // Stroke Task
outRef.convert(mPath);
- outRef.convert(mCap, mJoin, mStrokeWidth, mMeterLimit);
+ outRef.convert(mCap, mJoin, mStrokeWidth, mMiterLimit);
uint points, contors;
SW_FT_Stroker_Set(stroker, outRef.ftWidth, outRef.ftCap,
- outRef.ftJoin, outRef.ftMeterLimit);
+ outRef.ftJoin, outRef.ftMiterLimit);
SW_FT_Stroker_ParseOutline(stroker, &outRef.ft);
SW_FT_Stroker_GetCounts(stroker, &points, &contors);
}
void VRasterizer::rasterize(VPath path, CapStyle cap, JoinStyle join,
- float width, float meterLimit, const VRect &clip)
+ float width, float miterLimit, const VRect &clip)
{
init();
if (path.empty() || vIsZero(width)) {
d->rle().reset();
return;
}
- d->task().update(std::move(path), cap, join, width, meterLimit, clip);
+ d->task().update(std::move(path), cap, join, width, miterLimit, clip);
updateRequest();
}
public:
void rasterize(VPath path, FillRule fillRule = FillRule::Winding, const VRect &clip = VRect());
void rasterize(VPath path, CapStyle cap, JoinStyle join, float width,
- float meterLimit, const VRect &clip = VRect());
+ float miterLimit, const VRect &clip = VRect());
VRle rle();
private:
struct VRasterizerImpl;