dwrite: Add a tiny helper to return DWRITE_TEXT_RANGE values.
This commit is contained in:
parent
65a468ef74
commit
63d18fd05c
|
@ -330,6 +330,12 @@ static inline BOOL is_in_layout_range(const DWRITE_TEXT_RANGE *outer, const DWRI
|
||||||
(inner->startPosition + inner->length <= outer->startPosition + outer->length);
|
(inner->startPosition + inner->length <= outer->startPosition + outer->length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline HRESULT return_range(const struct layout_range *range, DWRITE_TEXT_RANGE *r)
|
||||||
|
{
|
||||||
|
if (r) *r = range->range;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/* Set attribute value for given range, does all needed splitting/merging of existing ranges. */
|
/* Set attribute value for given range, does all needed splitting/merging of existing ranges. */
|
||||||
static HRESULT set_layout_range_attr(struct dwrite_textlayout *layout, enum layout_range_attr_kind attr, struct layout_range_attr_value *value)
|
static HRESULT set_layout_range_attr(struct dwrite_textlayout *layout, enum layout_range_attr_kind attr, struct layout_range_attr_value *value)
|
||||||
{
|
{
|
||||||
|
@ -902,9 +908,8 @@ static HRESULT WINAPI dwritetextlayout_layout_GetFontWeight(IDWriteTextLayout *i
|
||||||
|
|
||||||
range = get_layout_range_by_pos(This, position);
|
range = get_layout_range_by_pos(This, position);
|
||||||
*weight = range->weight;
|
*weight = range->weight;
|
||||||
if (r) *r = range->range;
|
|
||||||
|
|
||||||
return S_OK;
|
return return_range(range, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI dwritetextlayout_layout_GetFontStyle(IDWriteTextLayout *iface,
|
static HRESULT WINAPI dwritetextlayout_layout_GetFontStyle(IDWriteTextLayout *iface,
|
||||||
|
@ -920,9 +925,8 @@ static HRESULT WINAPI dwritetextlayout_layout_GetFontStyle(IDWriteTextLayout *if
|
||||||
|
|
||||||
range = get_layout_range_by_pos(This, position);
|
range = get_layout_range_by_pos(This, position);
|
||||||
*style = range->style;
|
*style = range->style;
|
||||||
if (r) *r = range->range;
|
|
||||||
|
|
||||||
return S_OK;
|
return return_range(range, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI dwritetextlayout_layout_GetFontStretch(IDWriteTextLayout *iface,
|
static HRESULT WINAPI dwritetextlayout_layout_GetFontStretch(IDWriteTextLayout *iface,
|
||||||
|
@ -954,9 +958,8 @@ static HRESULT WINAPI dwritetextlayout_GetUnderline(IDWriteTextLayout *iface,
|
||||||
|
|
||||||
range = get_layout_range_by_pos(This, position);
|
range = get_layout_range_by_pos(This, position);
|
||||||
*underline = range->underline;
|
*underline = range->underline;
|
||||||
if (r) *r = range->range;
|
|
||||||
|
|
||||||
return S_OK;
|
return return_range(range, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI dwritetextlayout_GetStrikethrough(IDWriteTextLayout *iface,
|
static HRESULT WINAPI dwritetextlayout_GetStrikethrough(IDWriteTextLayout *iface,
|
||||||
|
@ -972,9 +975,8 @@ static HRESULT WINAPI dwritetextlayout_GetStrikethrough(IDWriteTextLayout *iface
|
||||||
|
|
||||||
range = get_layout_range_by_pos(This, position);
|
range = get_layout_range_by_pos(This, position);
|
||||||
*strikethrough = range->strikethrough;
|
*strikethrough = range->strikethrough;
|
||||||
if (r) *r = range->range;
|
|
||||||
|
|
||||||
return S_OK;
|
return return_range(range, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI dwritetextlayout_GetDrawingEffect(IDWriteTextLayout *iface,
|
static HRESULT WINAPI dwritetextlayout_GetDrawingEffect(IDWriteTextLayout *iface,
|
||||||
|
@ -992,9 +994,8 @@ static HRESULT WINAPI dwritetextlayout_GetDrawingEffect(IDWriteTextLayout *iface
|
||||||
*effect = range->effect;
|
*effect = range->effect;
|
||||||
if (*effect)
|
if (*effect)
|
||||||
IUnknown_AddRef(*effect);
|
IUnknown_AddRef(*effect);
|
||||||
if (r) *r = range->range;
|
|
||||||
|
|
||||||
return S_OK;
|
return return_range(range, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI dwritetextlayout_GetInlineObject(IDWriteTextLayout *iface,
|
static HRESULT WINAPI dwritetextlayout_GetInlineObject(IDWriteTextLayout *iface,
|
||||||
|
@ -1009,9 +1010,8 @@ static HRESULT WINAPI dwritetextlayout_GetInlineObject(IDWriteTextLayout *iface,
|
||||||
*object = range ? range->object : NULL;
|
*object = range ? range->object : NULL;
|
||||||
if (*object)
|
if (*object)
|
||||||
IDWriteInlineObject_AddRef(*object);
|
IDWriteInlineObject_AddRef(*object);
|
||||||
if (r) *r = range->range;
|
|
||||||
|
|
||||||
return S_OK;
|
return return_range(range, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI dwritetextlayout_GetTypography(IDWriteTextLayout *iface,
|
static HRESULT WINAPI dwritetextlayout_GetTypography(IDWriteTextLayout *iface,
|
||||||
|
|
|
@ -628,6 +628,15 @@ static void test_SetInlineObject(void)
|
||||||
ok(r2.startPosition == 0 && r2.length == 2, "got %d, %d\n", r2.startPosition, r2.length);
|
ok(r2.startPosition == 0 && r2.length == 2, "got %d, %d\n", r2.startPosition, r2.length);
|
||||||
IDWriteInlineObject_Release(inlinetest);
|
IDWriteInlineObject_Release(inlinetest);
|
||||||
|
|
||||||
|
/* get from somewhere inside a range */
|
||||||
|
inlinetest = NULL;
|
||||||
|
r2.startPosition = r2.length = 100;
|
||||||
|
hr = IDWriteTextLayout_GetInlineObject(layout, 1, &inlinetest, &r2);
|
||||||
|
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||||
|
ok(inlinetest == inlineobj, "got %p\n", inlinetest);
|
||||||
|
ok(r2.startPosition == 0 && r2.length == 2, "got %d, %d\n", r2.startPosition, r2.length);
|
||||||
|
IDWriteInlineObject_Release(inlinetest);
|
||||||
|
|
||||||
range.startPosition = 1;
|
range.startPosition = 1;
|
||||||
range.length = 1;
|
range.length = 1;
|
||||||
hr = IDWriteTextLayout_SetInlineObject(layout, inlineobj2, range);
|
hr = IDWriteTextLayout_SetInlineObject(layout, inlineobj2, range);
|
||||||
|
|
Loading…
Reference in New Issue