зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1381180 - Refactor out StrokeOptions from DrawCommands. r=dvander
This commit is contained in:
Родитель
8b863f2d05
Коммит
d085480b74
|
@ -61,6 +61,31 @@ private:
|
|||
CommandType mType;
|
||||
};
|
||||
|
||||
class StrokeOptionsCommand : public DrawingCommand
|
||||
{
|
||||
public:
|
||||
StrokeOptionsCommand(CommandType aType,
|
||||
const StrokeOptions& aStrokeOptions)
|
||||
: DrawingCommand(aType)
|
||||
, mStrokeOptions(aStrokeOptions)
|
||||
{
|
||||
// Stroke Options dashes are owned by the caller.
|
||||
// Have to copy them here so they don't get freed
|
||||
// between now and replay.
|
||||
if (aStrokeOptions.mDashLength) {
|
||||
mDashes.resize(aStrokeOptions.mDashLength);
|
||||
mStrokeOptions.mDashPattern = &mDashes.front();
|
||||
PodCopy(&mDashes.front(), aStrokeOptions.mDashPattern, mStrokeOptions.mDashLength);
|
||||
}
|
||||
}
|
||||
|
||||
virtual ~StrokeOptionsCommand() {}
|
||||
|
||||
protected:
|
||||
StrokeOptions mStrokeOptions;
|
||||
std::vector<Float> mDashes;
|
||||
};
|
||||
|
||||
class StoredPattern
|
||||
{
|
||||
public:
|
||||
|
@ -252,24 +277,18 @@ private:
|
|||
DrawOptions mOptions;
|
||||
};
|
||||
|
||||
class StrokeRectCommand : public DrawingCommand
|
||||
class StrokeRectCommand : public StrokeOptionsCommand
|
||||
{
|
||||
public:
|
||||
StrokeRectCommand(const Rect& aRect,
|
||||
const Pattern& aPattern,
|
||||
const StrokeOptions& aStrokeOptions,
|
||||
const DrawOptions& aOptions)
|
||||
: DrawingCommand(CommandType::STROKERECT)
|
||||
: StrokeOptionsCommand(CommandType::STROKERECT, aStrokeOptions)
|
||||
, mRect(aRect)
|
||||
, mPattern(aPattern)
|
||||
, mStrokeOptions(aStrokeOptions)
|
||||
, mOptions(aOptions)
|
||||
{
|
||||
if (aStrokeOptions.mDashLength) {
|
||||
mDashes.resize(aStrokeOptions.mDashLength);
|
||||
mStrokeOptions.mDashPattern = &mDashes.front();
|
||||
memcpy(&mDashes.front(), aStrokeOptions.mDashPattern, mStrokeOptions.mDashLength * sizeof(Float));
|
||||
}
|
||||
}
|
||||
|
||||
virtual void ExecuteOnDT(DrawTarget* aDT, const Matrix*) const
|
||||
|
@ -280,12 +299,10 @@ public:
|
|||
private:
|
||||
Rect mRect;
|
||||
StoredPattern mPattern;
|
||||
StrokeOptions mStrokeOptions;
|
||||
DrawOptions mOptions;
|
||||
std::vector<Float> mDashes;
|
||||
};
|
||||
|
||||
class StrokeLineCommand : public DrawingCommand
|
||||
class StrokeLineCommand : public StrokeOptionsCommand
|
||||
{
|
||||
public:
|
||||
StrokeLineCommand(const Point& aStart,
|
||||
|
@ -293,21 +310,12 @@ public:
|
|||
const Pattern& aPattern,
|
||||
const StrokeOptions& aStrokeOptions,
|
||||
const DrawOptions& aOptions)
|
||||
: DrawingCommand(CommandType::STROKELINE)
|
||||
: StrokeOptionsCommand(CommandType::STROKELINE, aStrokeOptions)
|
||||
, mStart(aStart)
|
||||
, mEnd(aEnd)
|
||||
, mPattern(aPattern)
|
||||
, mStrokeOptions(aStrokeOptions)
|
||||
, mOptions(aOptions)
|
||||
{
|
||||
// Stroke Options dashes are owned by the caller.
|
||||
// Have to copy them here so they don't get freed
|
||||
// between now and replay.
|
||||
if (aStrokeOptions.mDashLength) {
|
||||
mDashes.resize(aStrokeOptions.mDashLength);
|
||||
mStrokeOptions.mDashPattern = &mDashes.front();
|
||||
memcpy(&mDashes.front(), aStrokeOptions.mDashPattern, mStrokeOptions.mDashLength * sizeof(Float));
|
||||
}
|
||||
}
|
||||
|
||||
virtual void ExecuteOnDT(DrawTarget* aDT, const Matrix*) const
|
||||
|
@ -319,9 +327,7 @@ private:
|
|||
Point mStart;
|
||||
Point mEnd;
|
||||
StoredPattern mPattern;
|
||||
StrokeOptions mStrokeOptions;
|
||||
DrawOptions mOptions;
|
||||
std::vector<Float> mDashes;
|
||||
};
|
||||
|
||||
class FillCommand : public DrawingCommand
|
||||
|
@ -394,24 +400,19 @@ PathExtentsToMaxStrokeExtents(const StrokeOptions &aStrokeOptions,
|
|||
return result;
|
||||
}
|
||||
|
||||
class StrokeCommand : public DrawingCommand
|
||||
|
||||
class StrokeCommand : public StrokeOptionsCommand
|
||||
{
|
||||
public:
|
||||
StrokeCommand(const Path* aPath,
|
||||
const Pattern& aPattern,
|
||||
const StrokeOptions& aStrokeOptions,
|
||||
const DrawOptions& aOptions)
|
||||
: DrawingCommand(CommandType::STROKE)
|
||||
: StrokeOptionsCommand(CommandType::STROKE, aStrokeOptions)
|
||||
, mPath(const_cast<Path*>(aPath))
|
||||
, mPattern(aPattern)
|
||||
, mStrokeOptions(aStrokeOptions)
|
||||
, mOptions(aOptions)
|
||||
{
|
||||
if (aStrokeOptions.mDashLength) {
|
||||
mDashes.resize(aStrokeOptions.mDashLength);
|
||||
mStrokeOptions.mDashPattern = &mDashes.front();
|
||||
memcpy(&mDashes.front(), aStrokeOptions.mDashPattern, mStrokeOptions.mDashLength * sizeof(Float));
|
||||
}
|
||||
}
|
||||
|
||||
virtual void ExecuteOnDT(DrawTarget* aDT, const Matrix*) const
|
||||
|
@ -428,9 +429,7 @@ public:
|
|||
private:
|
||||
RefPtr<Path> mPath;
|
||||
StoredPattern mPattern;
|
||||
StrokeOptions mStrokeOptions;
|
||||
DrawOptions mOptions;
|
||||
std::vector<Float> mDashes;
|
||||
};
|
||||
|
||||
class FillGlyphsCommand : public DrawingCommand
|
||||
|
@ -468,7 +467,7 @@ private:
|
|||
RefPtr<GlyphRenderingOptions> mRenderingOptions;
|
||||
};
|
||||
|
||||
class StrokeGlyphsCommand : public DrawingCommand
|
||||
class StrokeGlyphsCommand : public StrokeOptionsCommand
|
||||
{
|
||||
friend class DrawTargetCaptureImpl;
|
||||
public:
|
||||
|
@ -478,21 +477,14 @@ public:
|
|||
const StrokeOptions& aStrokeOptions,
|
||||
const DrawOptions& aOptions,
|
||||
const GlyphRenderingOptions* aRenderingOptions)
|
||||
: DrawingCommand(CommandType::STROKEGLYPHS)
|
||||
: StrokeOptionsCommand(CommandType::STROKEGLYPHS, aStrokeOptions)
|
||||
, mFont(aFont)
|
||||
, mPattern(aPattern)
|
||||
, mStrokeOptions(aStrokeOptions)
|
||||
, mOptions(aOptions)
|
||||
, mRenderingOptions(const_cast<GlyphRenderingOptions*>(aRenderingOptions))
|
||||
{
|
||||
mGlyphs.resize(aBuffer.mNumGlyphs);
|
||||
memcpy(&mGlyphs.front(), aBuffer.mGlyphs, sizeof(Glyph) * aBuffer.mNumGlyphs);
|
||||
|
||||
if (aStrokeOptions.mDashLength) {
|
||||
mDashes.resize(aStrokeOptions.mDashLength);
|
||||
mStrokeOptions.mDashPattern = &mDashes.front();
|
||||
PodCopy(&mDashes.front(), aStrokeOptions.mDashPattern, mStrokeOptions.mDashLength);
|
||||
}
|
||||
}
|
||||
|
||||
virtual void ExecuteOnDT(DrawTarget* aDT, const Matrix*) const
|
||||
|
@ -507,10 +499,8 @@ private:
|
|||
RefPtr<ScaledFont> mFont;
|
||||
std::vector<Glyph> mGlyphs;
|
||||
StoredPattern mPattern;
|
||||
StrokeOptions mStrokeOptions;
|
||||
DrawOptions mOptions;
|
||||
RefPtr<GlyphRenderingOptions> mRenderingOptions;
|
||||
std::vector<Float> mDashes;
|
||||
};
|
||||
|
||||
class MaskCommand : public DrawingCommand
|
||||
|
|
Загрузка…
Ссылка в новой задаче