Bug 1062723 - Part 6: Implement source clipping for DrawTargetD2D1. r=Bas

--HG--
extra : rebase_source : bd1c022efe0548a9e7860fb18d6aced33ddad40f
This commit is contained in:
Matt Woodrow 2014-09-12 17:18:22 +12:00
Родитель f88faad335
Коммит 004810cf46
2 изменённых файлов: 14 добавлений и 6 удалений

Просмотреть файл

@ -871,16 +871,23 @@ DrawTargetD2D1::CreateBrushForPattern(const Pattern &aPattern, Float aAlpha)
return nullptr;
}
D2D1_RECT_F samplingBounds;
if (!pat->mSamplingRect.IsEmpty()) {
samplingBounds = D2DRect(pat->mSamplingRect);
} else {
samplingBounds = D2D1::RectF(0, 0,
Float(pat->mSurface->GetSize().width),
Float(pat->mSurface->GetSize().height));
}
Matrix mat = pat->mMatrix;
RefPtr<ID2D1ImageBrush> imageBrush;
RefPtr<ID2D1Image> image = GetImageForSurface(pat->mSurface, mat, pat->mExtendMode);
mDC->CreateImageBrush(image,
D2D1::ImageBrushProperties(D2D1::RectF(0, 0,
Float(pat->mSurface->GetSize().width),
Float(pat->mSurface->GetSize().height)),
D2DExtend(pat->mExtendMode), D2DExtend(pat->mExtendMode),
D2D1::ImageBrushProperties(samplingBounds,
D2DExtend(pat->mExtendMode),
D2DExtend(pat->mExtendMode),
D2DInterpolationMode(pat->mFilter)),
D2D1::BrushProperties(aAlpha, D2DMatrix(mat)),
byRef(imageBrush));

Просмотреть файл

@ -44,7 +44,8 @@ static inline D2D1_SIZE_U D2DIntSize(const IntSize &aSize)
return D2D1::SizeU(aSize.width, aSize.height);
}
static inline D2D1_RECT_F D2DRect(const Rect &aRect)
template <typename T>
static inline D2D1_RECT_F D2DRect(const T &aRect)
{
return D2D1::RectF(aRect.x, aRect.y, aRect.XMost(), aRect.YMost());
}