mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-07 18:04:46 +00:00
Bug 1303570 - Part 1: Support Subpixel AA drawing of DWrite fonts to transparent GDI surfaces. r=jrmuizel
MozReview-Commit-ID: JzkE1s9A0UI --HG-- extra : rebase_source : ed9e3c478ca4affbfc5079394311ef7671957d75
This commit is contained in:
parent
e6399718e5
commit
c0e9e79a37
@ -1141,8 +1141,17 @@ _dwrite_draw_glyphs_to_gdi_surface_gdi(cairo_win32_surface_t *surface,
|
|||||||
IDWriteBitmapRenderTarget *rt;
|
IDWriteBitmapRenderTarget *rt;
|
||||||
HRESULT rv;
|
HRESULT rv;
|
||||||
|
|
||||||
|
cairo_d2d_surface_t::TextRenderingState renderingState =
|
||||||
|
scaled_font->rendering_mode;
|
||||||
|
|
||||||
|
if ((renderingState == cairo_d2d_surface_t::TEXT_RENDERING_NORMAL ||
|
||||||
|
renderingState == cairo_d2d_surface_t::TEXT_RENDERING_GDI_CLASSIC) &&
|
||||||
|
!surface->base.permit_subpixel_antialiasing) {
|
||||||
|
renderingState = cairo_d2d_surface_t::TEXT_RENDERING_NO_CLEARTYPE;
|
||||||
|
}
|
||||||
|
|
||||||
IDWriteRenderingParams *params =
|
IDWriteRenderingParams *params =
|
||||||
DWriteFactory::RenderingParams(scaled_font->rendering_mode);
|
DWriteFactory::RenderingParams(renderingState);
|
||||||
|
|
||||||
rv = gdiInterop->CreateBitmapRenderTarget(surface->dc,
|
rv = gdiInterop->CreateBitmapRenderTarget(surface->dc,
|
||||||
area.right - area.left,
|
area.right - area.left,
|
||||||
@ -1174,7 +1183,7 @@ _dwrite_draw_glyphs_to_gdi_surface_gdi(cairo_win32_surface_t *surface,
|
|||||||
area.left, area.top,
|
area.left, area.top,
|
||||||
SRCCOPY | NOMIRRORBITMAP);
|
SRCCOPY | NOMIRRORBITMAP);
|
||||||
DWRITE_MEASURING_MODE measureMode;
|
DWRITE_MEASURING_MODE measureMode;
|
||||||
switch (scaled_font->rendering_mode) {
|
switch (renderingState) {
|
||||||
case cairo_d2d_surface_t::TEXT_RENDERING_GDI_CLASSIC:
|
case cairo_d2d_surface_t::TEXT_RENDERING_GDI_CLASSIC:
|
||||||
case cairo_d2d_surface_t::TEXT_RENDERING_NO_CLEARTYPE:
|
case cairo_d2d_surface_t::TEXT_RENDERING_NO_CLEARTYPE:
|
||||||
measureMode = DWRITE_MEASURING_MODE_GDI_CLASSIC;
|
measureMode = DWRITE_MEASURING_MODE_GDI_CLASSIC;
|
||||||
@ -1277,8 +1286,7 @@ _cairo_dwrite_show_glyphs_on_surface(void *surface,
|
|||||||
|
|
||||||
/* We can only handle operator SOURCE or OVER with the destination
|
/* We can only handle operator SOURCE or OVER with the destination
|
||||||
* having no alpha */
|
* having no alpha */
|
||||||
if ((op != CAIRO_OPERATOR_SOURCE && op != CAIRO_OPERATOR_OVER) ||
|
if (op != CAIRO_OPERATOR_SOURCE && op != CAIRO_OPERATOR_OVER)
|
||||||
(dst->format != CAIRO_FORMAT_RGB24))
|
|
||||||
return CAIRO_INT_STATUS_UNSUPPORTED;
|
return CAIRO_INT_STATUS_UNSUPPORTED;
|
||||||
|
|
||||||
/* If we have a fallback mask clip set on the dst, we have
|
/* If we have a fallback mask clip set on the dst, we have
|
||||||
|
Loading…
Reference in New Issue
Block a user