mirror of
git://source.winehq.org/git/wine.git
synced 2024-07-21 09:44:10 +00:00
d2d1/commandlist: Update text rendering params on DrawGlyphRun().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
This commit is contained in:
parent
9a87e7dedd
commit
3d54031236
|
@ -20,6 +20,11 @@
|
|||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(d2d);
|
||||
|
||||
enum d2d_command_list_flags
|
||||
{
|
||||
D2D_COMMAND_LIST_HAS_NULL_TEXT_RENDERING_PARAMS = 0x1,
|
||||
};
|
||||
|
||||
enum d2d_command_type
|
||||
{
|
||||
D2D_COMMAND_SET_ANTIALIAS_MODE,
|
||||
|
@ -751,20 +756,37 @@ void d2d_command_list_fill_rectangle(struct d2d_command_list *command_list,
|
|||
command->brush = brush;
|
||||
}
|
||||
|
||||
void d2d_command_list_set_text_rendering_params(struct d2d_command_list *command_list,
|
||||
IDWriteRenderingParams *params)
|
||||
static void d2d_command_list_set_text_rendering_params_internal(struct d2d_command_list *command_list,
|
||||
BOOL allow_null, IDWriteRenderingParams *params)
|
||||
{
|
||||
struct d2d_command_set_text_rendering_params *command;
|
||||
|
||||
if (!params) return;
|
||||
if (!params && !allow_null) return;
|
||||
|
||||
if ((command_list->flags & D2D_COMMAND_LIST_HAS_NULL_TEXT_RENDERING_PARAMS)
|
||||
&& !params)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
d2d_command_list_reference_object(command_list, params);
|
||||
|
||||
if (params)
|
||||
command_list->flags &= ~D2D_COMMAND_LIST_HAS_NULL_TEXT_RENDERING_PARAMS;
|
||||
else
|
||||
command_list->flags |= D2D_COMMAND_LIST_HAS_NULL_TEXT_RENDERING_PARAMS;
|
||||
|
||||
command = d2d_command_list_require_space(command_list, sizeof(*command));
|
||||
command->c.op = D2D_COMMAND_SET_TEXT_RENDERING_PARAMS;
|
||||
command->params = params;
|
||||
}
|
||||
|
||||
void d2d_command_list_set_text_rendering_params(struct d2d_command_list *command_list,
|
||||
IDWriteRenderingParams *params)
|
||||
{
|
||||
d2d_command_list_set_text_rendering_params_internal(command_list, FALSE, params);
|
||||
}
|
||||
|
||||
static inline void d2d_command_list_write_field(BYTE **data, void *dst, const void *src, size_t size)
|
||||
{
|
||||
void **ptr = dst;
|
||||
|
@ -799,6 +821,13 @@ void d2d_command_list_draw_glyph_run(struct d2d_command_list *command_list,
|
|||
return;
|
||||
}
|
||||
|
||||
/* Set rendering parameters automatically. Explicitly set null parameters are not recorded,
|
||||
either separately or as a part of a restored state block. Forcing parameters update on
|
||||
DrawGlyphRun() ensures that state is reset correctly. */
|
||||
|
||||
d2d_command_list_set_text_rendering_params_internal(command_list, TRUE,
|
||||
context->text_rendering_params);
|
||||
|
||||
/* Get combined size of variable data. */
|
||||
|
||||
glyph_count = run->glyphCount;
|
||||
|
|
|
@ -720,6 +720,7 @@ struct d2d_command_list
|
|||
|
||||
ID2D1Factory *factory;
|
||||
enum d2d_command_list_state state;
|
||||
unsigned int flags;
|
||||
|
||||
size_t size;
|
||||
size_t capacity;
|
||||
|
|
Loading…
Reference in a new issue