ReactOS 0.4.17-dev-934-g091855f
format.c File Reference
#include "dwrite_private.h"
#include "wine/debug.h"
Include dependency graph for format.c:

Go to the source code of this file.

Classes

struct  dwrite_trimmingsign
 

Macros

#define COBJMACROS
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (dwrite)
 
static struct dwrite_trimmingsign * impl_from_IDWriteInlineObject (IDWriteInlineObject *iface)
 
void release_format_data (struct dwrite_textformat_data *data)
 
static struct dwrite_textformat * impl_from_IDWriteTextFormat3 (IDWriteTextFormat3 *iface)
 
HRESULT format_set_textalignment (struct dwrite_textformat_data *format, DWRITE_TEXT_ALIGNMENT alignment, BOOL *changed)
 
HRESULT format_set_paralignment (struct dwrite_textformat_data *format, DWRITE_PARAGRAPH_ALIGNMENT alignment, BOOL *changed)
 
HRESULT format_set_readingdirection (struct dwrite_textformat_data *format, DWRITE_READING_DIRECTION direction, BOOL *changed)
 
HRESULT format_set_wordwrapping (struct dwrite_textformat_data *format, DWRITE_WORD_WRAPPING wrapping, BOOL *changed)
 
HRESULT format_set_flowdirection (struct dwrite_textformat_data *format, DWRITE_FLOW_DIRECTION direction, BOOL *changed)
 
HRESULT format_set_trimming (struct dwrite_textformat_data *format, DWRITE_TRIMMING const *trimming, IDWriteInlineObject *trimming_sign, BOOL *changed)
 
HRESULT format_set_linespacing (struct dwrite_textformat_data *format, DWRITE_LINE_SPACING const *spacing, BOOL *changed)
 
HRESULT format_set_font_axisvalues (struct dwrite_textformat_data *format, DWRITE_FONT_AXIS_VALUE const *axis_values, unsigned int num_values)
 
HRESULT format_get_font_axisvalues (struct dwrite_textformat_data *format, DWRITE_FONT_AXIS_VALUE *axis_values, unsigned int num_values)
 
HRESULT format_get_fontfallback (const struct dwrite_textformat_data *format, IDWriteFontFallback **fallback)
 
HRESULT format_set_fontfallback (struct dwrite_textformat_data *format, IDWriteFontFallback *fallback)
 
HRESULT format_set_optical_alignment (struct dwrite_textformat_data *format, DWRITE_OPTICAL_ALIGNMENT alignment)
 
HRESULT format_set_vertical_orientation (struct dwrite_textformat_data *format, DWRITE_VERTICAL_GLYPH_ORIENTATION orientation, BOOL *changed)
 
static HRESULT WINAPI dwritetextformat_QueryInterface (IDWriteTextFormat3 *iface, REFIID riid, void **obj)
 
static ULONG WINAPI dwritetextformat_AddRef (IDWriteTextFormat3 *iface)
 
static ULONG WINAPI dwritetextformat_Release (IDWriteTextFormat3 *iface)
 
static HRESULT WINAPI dwritetextformat_SetTextAlignment (IDWriteTextFormat3 *iface, DWRITE_TEXT_ALIGNMENT alignment)
 
static HRESULT WINAPI dwritetextformat_SetParagraphAlignment (IDWriteTextFormat3 *iface, DWRITE_PARAGRAPH_ALIGNMENT alignment)
 
static HRESULT WINAPI dwritetextformat_SetWordWrapping (IDWriteTextFormat3 *iface, DWRITE_WORD_WRAPPING wrapping)
 
static HRESULT WINAPI dwritetextformat_SetReadingDirection (IDWriteTextFormat3 *iface, DWRITE_READING_DIRECTION direction)
 
static HRESULT WINAPI dwritetextformat_SetFlowDirection (IDWriteTextFormat3 *iface, DWRITE_FLOW_DIRECTION direction)
 
static HRESULT WINAPI dwritetextformat_SetIncrementalTabStop (IDWriteTextFormat3 *iface, float tabstop)
 
static HRESULT WINAPI dwritetextformat_SetTrimming (IDWriteTextFormat3 *iface, DWRITE_TRIMMING const *trimming, IDWriteInlineObject *trimming_sign)
 
static HRESULT WINAPI dwritetextformat_SetLineSpacing (IDWriteTextFormat3 *iface, DWRITE_LINE_SPACING_METHOD method, float height, float baseline)
 
static DWRITE_TEXT_ALIGNMENT WINAPI dwritetextformat_GetTextAlignment (IDWriteTextFormat3 *iface)
 
static DWRITE_PARAGRAPH_ALIGNMENT WINAPI dwritetextformat_GetParagraphAlignment (IDWriteTextFormat3 *iface)
 
static DWRITE_WORD_WRAPPING WINAPI dwritetextformat_GetWordWrapping (IDWriteTextFormat3 *iface)
 
static DWRITE_READING_DIRECTION WINAPI dwritetextformat_GetReadingDirection (IDWriteTextFormat3 *iface)
 
static DWRITE_FLOW_DIRECTION WINAPI dwritetextformat_GetFlowDirection (IDWriteTextFormat3 *iface)
 
static float WINAPI dwritetextformat_GetIncrementalTabStop (IDWriteTextFormat3 *iface)
 
static HRESULT WINAPI dwritetextformat_GetTrimming (IDWriteTextFormat3 *iface, DWRITE_TRIMMING *options, IDWriteInlineObject **trimming_sign)
 
static HRESULT WINAPI dwritetextformat_GetLineSpacing (IDWriteTextFormat3 *iface, DWRITE_LINE_SPACING_METHOD *method, float *spacing, float *baseline)
 
static HRESULT WINAPI dwritetextformat_GetFontCollection (IDWriteTextFormat3 *iface, IDWriteFontCollection **collection)
 
static UINT32 WINAPI dwritetextformat_GetFontFamilyNameLength (IDWriteTextFormat3 *iface)
 
static HRESULT WINAPI dwritetextformat_GetFontFamilyName (IDWriteTextFormat3 *iface, WCHAR *name, UINT32 size)
 
static DWRITE_FONT_WEIGHT WINAPI dwritetextformat_GetFontWeight (IDWriteTextFormat3 *iface)
 
static DWRITE_FONT_STYLE WINAPI dwritetextformat_GetFontStyle (IDWriteTextFormat3 *iface)
 
static DWRITE_FONT_STRETCH WINAPI dwritetextformat_GetFontStretch (IDWriteTextFormat3 *iface)
 
static float WINAPI dwritetextformat_GetFontSize (IDWriteTextFormat3 *iface)
 
static UINT32 WINAPI dwritetextformat_GetLocaleNameLength (IDWriteTextFormat3 *iface)
 
static HRESULT WINAPI dwritetextformat_GetLocaleName (IDWriteTextFormat3 *iface, WCHAR *name, UINT32 size)
 
static HRESULT WINAPI dwritetextformat1_SetVerticalGlyphOrientation (IDWriteTextFormat3 *iface, DWRITE_VERTICAL_GLYPH_ORIENTATION orientation)
 
static DWRITE_VERTICAL_GLYPH_ORIENTATION WINAPI dwritetextformat1_GetVerticalGlyphOrientation (IDWriteTextFormat3 *iface)
 
static HRESULT WINAPI dwritetextformat1_SetLastLineWrapping (IDWriteTextFormat3 *iface, BOOL lastline_wrapping_enabled)
 
static BOOL WINAPI dwritetextformat1_GetLastLineWrapping (IDWriteTextFormat3 *iface)
 
static HRESULT WINAPI dwritetextformat1_SetOpticalAlignment (IDWriteTextFormat3 *iface, DWRITE_OPTICAL_ALIGNMENT alignment)
 
static DWRITE_OPTICAL_ALIGNMENT WINAPI dwritetextformat1_GetOpticalAlignment (IDWriteTextFormat3 *iface)
 
static HRESULT WINAPI dwritetextformat1_SetFontFallback (IDWriteTextFormat3 *iface, IDWriteFontFallback *fallback)
 
static HRESULT WINAPI dwritetextformat1_GetFontFallback (IDWriteTextFormat3 *iface, IDWriteFontFallback **fallback)
 
static HRESULT WINAPI dwritetextformat2_SetLineSpacing (IDWriteTextFormat3 *iface, DWRITE_LINE_SPACING const *spacing)
 
static HRESULT WINAPI dwritetextformat2_GetLineSpacing (IDWriteTextFormat3 *iface, DWRITE_LINE_SPACING *spacing)
 
static HRESULT WINAPI dwritetextformat3_SetFontAxisValues (IDWriteTextFormat3 *iface, DWRITE_FONT_AXIS_VALUE const *axis_values, UINT32 num_values)
 
static UINT32 WINAPI dwritetextformat3_GetFontAxisValueCount (IDWriteTextFormat3 *iface)
 
static HRESULT WINAPI dwritetextformat3_GetFontAxisValues (IDWriteTextFormat3 *iface, DWRITE_FONT_AXIS_VALUE *axis_values, UINT32 num_values)
 
static DWRITE_AUTOMATIC_FONT_AXES WINAPI dwritetextformat3_GetAutomaticFontAxes (IDWriteTextFormat3 *iface)
 
static HRESULT WINAPI dwritetextformat3_SetAutomaticFontAxes (IDWriteTextFormat3 *iface, DWRITE_AUTOMATIC_FONT_AXES axes)
 
struct dwrite_textformat * unsafe_impl_from_IDWriteTextFormat (IDWriteTextFormat *iface)
 
HRESULT create_text_format (const WCHAR *family_name, IDWriteFontCollection *collection, DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STYLE style, DWRITE_FONT_STRETCH stretch, float size, const WCHAR *locale, REFIID riid, void **out)
 
static HRESULT WINAPI dwritetrimmingsign_QueryInterface (IDWriteInlineObject *iface, REFIID riid, void **obj)
 
static ULONG WINAPI dwritetrimmingsign_AddRef (IDWriteInlineObject *iface)
 
static ULONG WINAPI dwritetrimmingsign_Release (IDWriteInlineObject *iface)
 
static HRESULT WINAPI dwritetrimmingsign_Draw (IDWriteInlineObject *iface, void *context, IDWriteTextRenderer *renderer, float originX, float originY, BOOL is_sideways, BOOL is_rtl, IUnknown *effect)
 
static HRESULT WINAPI dwritetrimmingsign_GetMetrics (IDWriteInlineObject *iface, DWRITE_INLINE_OBJECT_METRICS *ret)
 
static HRESULT WINAPI dwritetrimmingsign_GetOverhangMetrics (IDWriteInlineObject *iface, DWRITE_OVERHANG_METRICS *overhangs)
 
static HRESULT WINAPI dwritetrimmingsign_GetBreakConditions (IDWriteInlineObject *iface, DWRITE_BREAK_CONDITION *before, DWRITE_BREAK_CONDITION *after)
 
static BOOL is_reading_direction_horz (DWRITE_READING_DIRECTION direction)
 
static BOOL is_reading_direction_vert (DWRITE_READING_DIRECTION direction)
 
static BOOL is_flow_direction_horz (DWRITE_FLOW_DIRECTION direction)
 
static BOOL is_flow_direction_vert (DWRITE_FLOW_DIRECTION direction)
 
HRESULT create_trimmingsign (IDWriteFactory7 *factory, IDWriteTextFormat *format, IDWriteInlineObject **sign)
 

Variables

static const IDWriteTextFormat3Vtbl dwritetextformatvtbl
 
static const IDWriteInlineObjectVtbl dwritetrimmingsignvtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 19 of file format.c.

Function Documentation

◆ create_text_format()

HRESULT create_text_format ( const WCHAR *  family_name,
IDWriteFontCollection *  collection,
DWRITE_FONT_WEIGHT  weight,
DWRITE_FONT_STYLE  style,
DWRITE_FONT_STRETCH  stretch,
float  size,
const WCHAR *  locale,
REFIID  riid,
void **  out 
)

Definition at line 714 of file format.c.

717{
719 HRESULT hr;
720
721 *out = NULL;
722
723 if (size <= 0.0f)
724 return E_INVALIDARG;
725
730 {
731 return E_INVALIDARG;
732 }
733
734 if (!(object = calloc(1, sizeof(*object))))
735 return E_OUTOFMEMORY;
736
737 object->IDWriteTextFormat3_iface.lpVtbl = &dwritetextformatvtbl;
738 object->refcount = 1;
739 object->format.family_name = wcsdup(family_name);
740 object->format.family_len = wcslen(family_name);
741 object->format.locale = wcsdup(locale);
742 object->format.locale_len = wcslen(locale);
743 /* Force locale name to lower case, layout will inherit this modified value. */
744 wcslwr(object->format.locale);
745 object->format.weight = weight;
746 object->format.style = style;
747 object->format.fontsize = size;
748 object->format.tabstop = 4.0f * size;
749 object->format.stretch = stretch;
750 object->format.last_line_wrapping = TRUE;
751 object->format.collection = collection;
752 IDWriteFontCollection_AddRef(object->format.collection);
753
754 hr = IDWriteTextFormat3_QueryInterface(&object->IDWriteTextFormat3_iface, riid, out);
755 IDWriteTextFormat3_Release(&object->IDWriteTextFormat3_iface);
756
757 return hr;
758}
Definition: _locale.h:75
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
static const IDWriteTextFormat3Vtbl dwritetextformatvtbl
Definition: format.c:661
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2988
static wchar_t * wcslwr(wchar_t *str)
Definition: string.h:96
static wchar_t * wcsdup(const wchar_t *str)
Definition: string.h:94
@ DWRITE_FONT_WEIGHT_ULTRA_BLACK
Definition: dwrite.idl:90
@ DWRITE_FONT_STYLE_ITALIC
Definition: dwrite.idl:112
@ DWRITE_FONT_STRETCH_UNDEFINED
Definition: dwrite.idl:95
@ DWRITE_FONT_STRETCH_ULTRA_EXPANDED
Definition: dwrite.idl:105
GLsizeiptr size
Definition: glext.h:5919
REFIID riid
Definition: atlbase.h:39
#define calloc
Definition: rosglue.h:14
weight
Definition: sortkey.c:157
Definition: style.c:91
T1_FIELD_DICT_FONTDICT family_name
Definition: t1tokens.h:30
uint32_t UINT32
Definition: typedefs.h:59
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

Referenced by dwritefactory6_CreateTextFormat(), and dwritefactory_CreateTextFormat().

◆ create_trimmingsign()

HRESULT create_trimmingsign ( IDWriteFactory7 *  factory,
IDWriteTextFormat *  format,
IDWriteInlineObject **  sign 
)

Definition at line 891 of file format.c.

892{
896 HRESULT hr;
897
898 *sign = NULL;
899
900 if (!format)
901 return E_INVALIDARG;
902
903 /* Validate reading/flow direction here, layout creation won't complain about
904 invalid combinations. */
905 reading = IDWriteTextFormat_GetReadingDirection(format);
906 flow = IDWriteTextFormat_GetFlowDirection(format);
907
908 if ((is_reading_direction_horz(reading) && is_flow_direction_horz(flow)) ||
911
912 if (!(object = calloc(1, sizeof(*object))))
913 return E_OUTOFMEMORY;
914
915 object->IDWriteInlineObject_iface.lpVtbl = &dwritetrimmingsignvtbl;
916 object->refcount = 1;
917
918 hr = IDWriteFactory7_CreateTextLayout(factory, L"\x2026", 1, format, 0.0f, 0.0f, &object->layout);
919 if (FAILED(hr))
920 {
921 free(object);
922 return hr;
923 }
924
925 IDWriteTextLayout_SetWordWrapping(object->layout, DWRITE_WORD_WRAPPING_NO_WRAP);
926 IDWriteTextLayout_SetParagraphAlignment(object->layout, DWRITE_PARAGRAPH_ALIGNMENT_NEAR);
927 IDWriteTextLayout_SetTextAlignment(object->layout, DWRITE_TEXT_ALIGNMENT_LEADING);
928
929 *sign = &object->IDWriteInlineObject_iface;
930
931 return S_OK;
932}
#define free
Definition: debug_ros.c:5
static BOOL is_flow_direction_horz(DWRITE_FLOW_DIRECTION direction)
Definition: format.c:879
static BOOL is_reading_direction_vert(DWRITE_READING_DIRECTION direction)
Definition: format.c:873
static const IDWriteInlineObjectVtbl dwritetrimmingsignvtbl
Definition: format.c:856
static BOOL is_reading_direction_horz(DWRITE_READING_DIRECTION direction)
Definition: format.c:867
static BOOL is_flow_direction_vert(DWRITE_FLOW_DIRECTION direction)
Definition: format.c:885
#define L(x)
Definition: resources.c:13
@ DWRITE_PARAGRAPH_ALIGNMENT_NEAR
Definition: dwrite.idl:184
@ DWRITE_WORD_WRAPPING_NO_WRAP
Definition: dwrite.idl:192
DWRITE_FLOW_DIRECTION
Definition: dwrite.idl:207
@ DWRITE_TEXT_ALIGNMENT_LEADING
Definition: dwrite.idl:176
DWRITE_READING_DIRECTION
Definition: dwrite.idl:199
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
#define sign(x)
Definition: mapdesc.cc:613
Definition: main.c:439
#define DWRITE_E_FLOWDIRECTIONCONFLICTS
Definition: winerror.h:7345

Referenced by dwritefactory_CreateEllipsisTrimmingSign().

◆ dwritetextformat1_GetFontFallback()

static HRESULT WINAPI dwritetextformat1_GetFontFallback ( IDWriteTextFormat3 *  iface,
IDWriteFontFallback **  fallback 
)
static

Definition at line 584 of file format.c.

585{
587
588 TRACE("%p, %p.\n", iface, fallback);
589
590 return format_get_fontfallback(&format->format, fallback);
591}
static struct dwrite_textformat * impl_from_IDWriteTextFormat3(IDWriteTextFormat3 *iface)
Definition: format.c:53
HRESULT format_get_fontfallback(const struct dwrite_textformat_data *format, IDWriteFontFallback **fallback)
Definition: format.c:176
#define TRACE(s)
Definition: solgame.cpp:4

◆ dwritetextformat1_GetLastLineWrapping()

static BOOL WINAPI dwritetextformat1_GetLastLineWrapping ( IDWriteTextFormat3 *  iface)
static

Definition at line 548 of file format.c.

549{
551
552 TRACE("%p.\n", iface);
553
554 return format->format.last_line_wrapping;
555}

◆ dwritetextformat1_GetOpticalAlignment()

static DWRITE_OPTICAL_ALIGNMENT WINAPI dwritetextformat1_GetOpticalAlignment ( IDWriteTextFormat3 *  iface)
static

Definition at line 566 of file format.c.

567{
569
570 TRACE("%p.\n", iface);
571
572 return format->format.optical_alignment;
573}

◆ dwritetextformat1_GetVerticalGlyphOrientation()

static DWRITE_VERTICAL_GLYPH_ORIENTATION WINAPI dwritetextformat1_GetVerticalGlyphOrientation ( IDWriteTextFormat3 *  iface)
static

Definition at line 529 of file format.c.

530{
532
533 TRACE("%p.\n", iface);
534
535 return format->format.vertical_orientation;
536}

◆ dwritetextformat1_SetFontFallback()

static HRESULT WINAPI dwritetextformat1_SetFontFallback ( IDWriteTextFormat3 *  iface,
IDWriteFontFallback *  fallback 
)
static

Definition at line 575 of file format.c.

576{
578
579 TRACE("%p, %p.\n", iface, fallback);
580
581 return format_set_fontfallback(&format->format, fallback);
582}
HRESULT format_set_fontfallback(struct dwrite_textformat_data *format, IDWriteFontFallback *fallback)
Definition: format.c:184

◆ dwritetextformat1_SetLastLineWrapping()

static HRESULT WINAPI dwritetextformat1_SetLastLineWrapping ( IDWriteTextFormat3 *  iface,
BOOL  lastline_wrapping_enabled 
)
static

Definition at line 538 of file format.c.

539{
541
542 TRACE("%p, %d.\n", iface, lastline_wrapping_enabled);
543
544 format->format.last_line_wrapping = !!lastline_wrapping_enabled;
545 return S_OK;
546}

◆ dwritetextformat1_SetOpticalAlignment()

static HRESULT WINAPI dwritetextformat1_SetOpticalAlignment ( IDWriteTextFormat3 *  iface,
DWRITE_OPTICAL_ALIGNMENT  alignment 
)
static

Definition at line 557 of file format.c.

558{
560
561 TRACE("%p, %d.\n", iface, alignment);
562
564}
_Check_return_ _Ret_maybenull_ _In_ size_t alignment
Definition: align.cpp:48
HRESULT format_set_optical_alignment(struct dwrite_textformat_data *format, DWRITE_OPTICAL_ALIGNMENT alignment)
Definition: format.c:194

◆ dwritetextformat1_SetVerticalGlyphOrientation()

static HRESULT WINAPI dwritetextformat1_SetVerticalGlyphOrientation ( IDWriteTextFormat3 *  iface,
DWRITE_VERTICAL_GLYPH_ORIENTATION  orientation 
)
static

Definition at line 519 of file format.c.

521{
523
524 TRACE("%p, %d.\n", iface, orientation);
525
526 return format_set_vertical_orientation(&format->format, orientation, NULL);
527}
HRESULT format_set_vertical_orientation(struct dwrite_textformat_data *format, DWRITE_VERTICAL_GLYPH_ORIENTATION orientation, BOOL *changed)
Definition: format.c:202

◆ dwritetextformat2_GetLineSpacing()

static HRESULT WINAPI dwritetextformat2_GetLineSpacing ( IDWriteTextFormat3 *  iface,
DWRITE_LINE_SPACING *  spacing 
)
static

Definition at line 602 of file format.c.

603{
605
606 TRACE("%p, %p.\n", iface, spacing);
607
608 *spacing = format->format.spacing;
609 return S_OK;
610}

◆ dwritetextformat2_SetLineSpacing()

static HRESULT WINAPI dwritetextformat2_SetLineSpacing ( IDWriteTextFormat3 *  iface,
DWRITE_LINE_SPACING const *  spacing 
)
static

Definition at line 593 of file format.c.

594{
596
597 TRACE("%p, %p.\n", iface, spacing);
598
599 return format_set_linespacing(&format->format, spacing, NULL);
600}
HRESULT format_set_linespacing(struct dwrite_textformat_data *format, DWRITE_LINE_SPACING const *spacing, BOOL *changed)
Definition: format.c:128

◆ dwritetextformat3_GetAutomaticFontAxes()

static DWRITE_AUTOMATIC_FONT_AXES WINAPI dwritetextformat3_GetAutomaticFontAxes ( IDWriteTextFormat3 *  iface)
static

Definition at line 641 of file format.c.

642{
644
645 TRACE("%p.\n", iface);
646
647 return format->format.automatic_axes;
648}

◆ dwritetextformat3_GetFontAxisValueCount()

static UINT32 WINAPI dwritetextformat3_GetFontAxisValueCount ( IDWriteTextFormat3 *  iface)
static

Definition at line 622 of file format.c.

623{
625
626 TRACE("%p.\n", iface);
627
628 return format->format.axis_values_count;
629}

◆ dwritetextformat3_GetFontAxisValues()

static HRESULT WINAPI dwritetextformat3_GetFontAxisValues ( IDWriteTextFormat3 *  iface,
DWRITE_FONT_AXIS_VALUE *  axis_values,
UINT32  num_values 
)
static

Definition at line 631 of file format.c.

633{
635
636 TRACE("%p, %p, %u.\n", iface, axis_values, num_values);
637
638 return format_get_font_axisvalues(&format->format, axis_values, num_values);
639}
HRESULT format_get_font_axisvalues(struct dwrite_textformat_data *format, DWRITE_FONT_AXIS_VALUE *axis_values, unsigned int num_values)
Definition: format.c:159

◆ dwritetextformat3_SetAutomaticFontAxes()

static HRESULT WINAPI dwritetextformat3_SetAutomaticFontAxes ( IDWriteTextFormat3 *  iface,
DWRITE_AUTOMATIC_FONT_AXES  axes 
)
static

Definition at line 650 of file format.c.

651{
653
654 TRACE("%p, %d.\n", iface, axes);
655
656 format->format.automatic_axes = axes;
657
658 return S_OK;
659}

◆ dwritetextformat3_SetFontAxisValues()

static HRESULT WINAPI dwritetextformat3_SetFontAxisValues ( IDWriteTextFormat3 *  iface,
DWRITE_FONT_AXIS_VALUE const *  axis_values,
UINT32  num_values 
)
static

Definition at line 612 of file format.c.

614{
616
617 TRACE("%p, %p, %u.\n", iface, axis_values, num_values);
618
619 return format_set_font_axisvalues(&format->format, axis_values, num_values);
620}
HRESULT format_set_font_axisvalues(struct dwrite_textformat_data *format, DWRITE_FONT_AXIS_VALUE const *axis_values, unsigned int num_values)
Definition: format.c:141

◆ dwritetextformat_AddRef()

static ULONG WINAPI dwritetextformat_AddRef ( IDWriteTextFormat3 *  iface)
static

Definition at line 237 of file format.c.

238{
241
242 TRACE("%p, refcount %ld.\n", iface, refcount);
243
244 return refcount;
245}
#define InterlockedIncrement
Definition: armddk.h:53
uint32_t ULONG
Definition: typedefs.h:59

◆ dwritetextformat_GetFlowDirection()

static DWRITE_FLOW_DIRECTION WINAPI dwritetextformat_GetFlowDirection ( IDWriteTextFormat3 *  iface)
static

Definition at line 384 of file format.c.

385{
387
388 TRACE("%p.\n", iface);
389
390 return format->format.flow;
391}

◆ dwritetextformat_GetFontCollection()

static HRESULT WINAPI dwritetextformat_GetFontCollection ( IDWriteTextFormat3 *  iface,
IDWriteFontCollection **  collection 
)
static

Definition at line 429 of file format.c.

430{
432
433 TRACE("%p, %p.\n", iface, collection);
434
435 *collection = format->format.collection;
436 IDWriteFontCollection_AddRef(*collection);
437
438 return S_OK;
439}

◆ dwritetextformat_GetFontFamilyName()

static HRESULT WINAPI dwritetextformat_GetFontFamilyName ( IDWriteTextFormat3 *  iface,
WCHAR *  name,
UINT32  size 
)
static

Definition at line 450 of file format.c.

451{
453
454 TRACE("%p, %p, %u.\n", iface, name, size);
455
456 if (size <= format->format.family_len)
458 wcscpy(name, format->format.family_name);
459 return S_OK;
460}
wcscpy
Definition: name.c:39
#define E_NOT_SUFFICIENT_BUFFER
Definition: winerror.h:3437

◆ dwritetextformat_GetFontFamilyNameLength()

static UINT32 WINAPI dwritetextformat_GetFontFamilyNameLength ( IDWriteTextFormat3 *  iface)
static

Definition at line 441 of file format.c.

442{
444
445 TRACE("%p.\n", iface);
446
447 return format->format.family_len;
448}

◆ dwritetextformat_GetFontSize()

static float WINAPI dwritetextformat_GetFontSize ( IDWriteTextFormat3 *  iface)
static

Definition at line 489 of file format.c.

490{
492
493 TRACE("%p.\n", iface);
494
495 return format->format.fontsize;
496}

◆ dwritetextformat_GetFontStretch()

static DWRITE_FONT_STRETCH WINAPI dwritetextformat_GetFontStretch ( IDWriteTextFormat3 *  iface)
static

Definition at line 480 of file format.c.

481{
483
484 TRACE("%p.\n", iface);
485
486 return format->format.stretch;
487}

◆ dwritetextformat_GetFontStyle()

static DWRITE_FONT_STYLE WINAPI dwritetextformat_GetFontStyle ( IDWriteTextFormat3 *  iface)
static

Definition at line 471 of file format.c.

472{
474
475 TRACE("%p.\n", iface);
476
477 return format->format.style;
478}

◆ dwritetextformat_GetFontWeight()

static DWRITE_FONT_WEIGHT WINAPI dwritetextformat_GetFontWeight ( IDWriteTextFormat3 *  iface)
static

Definition at line 462 of file format.c.

463{
465
466 TRACE("%p.\n", iface);
467
468 return format->format.weight;
469}

◆ dwritetextformat_GetIncrementalTabStop()

static float WINAPI dwritetextformat_GetIncrementalTabStop ( IDWriteTextFormat3 *  iface)
static

Definition at line 393 of file format.c.

394{
396
397 TRACE("%p.\n", iface);
398
399 return format->format.tabstop;
400}

◆ dwritetextformat_GetLineSpacing()

static HRESULT WINAPI dwritetextformat_GetLineSpacing ( IDWriteTextFormat3 *  iface,
DWRITE_LINE_SPACING_METHOD *  method,
float *  spacing,
float *  baseline 
)
static

Definition at line 416 of file format.c.

418{
420
421 TRACE("%p, %p, %p, %p.\n", iface, method, spacing, baseline);
422
423 *method = format->format.spacing.method;
424 *spacing = format->format.spacing.height;
425 *baseline = format->format.spacing.baseline;
426 return S_OK;
427}
method
Definition: dragdrop.c:54
FLOAT baseline
Definition: dwrite_3.idl:860
DWORD height
Definition: ddrawstream.c:35

◆ dwritetextformat_GetLocaleName()

static HRESULT WINAPI dwritetextformat_GetLocaleName ( IDWriteTextFormat3 *  iface,
WCHAR *  name,
UINT32  size 
)
static

Definition at line 507 of file format.c.

508{
510
511 TRACE("%p, %p %u.\n", iface, name, size);
512
513 if (size <= format->format.locale_len)
515 wcscpy(name, format->format.locale);
516 return S_OK;
517}

◆ dwritetextformat_GetLocaleNameLength()

static UINT32 WINAPI dwritetextformat_GetLocaleNameLength ( IDWriteTextFormat3 *  iface)
static

Definition at line 498 of file format.c.

499{
501
502 TRACE("%p.\n", iface);
503
504 return format->format.locale_len;
505}

◆ dwritetextformat_GetParagraphAlignment()

static DWRITE_PARAGRAPH_ALIGNMENT WINAPI dwritetextformat_GetParagraphAlignment ( IDWriteTextFormat3 *  iface)
static

Definition at line 357 of file format.c.

358{
360
361 TRACE("%p.\n", iface);
362
363 return format->format.paralign;
364}

◆ dwritetextformat_GetReadingDirection()

static DWRITE_READING_DIRECTION WINAPI dwritetextformat_GetReadingDirection ( IDWriteTextFormat3 *  iface)
static

Definition at line 375 of file format.c.

376{
378
379 TRACE("%p.\n", iface);
380
381 return format->format.readingdir;
382}

◆ dwritetextformat_GetTextAlignment()

static DWRITE_TEXT_ALIGNMENT WINAPI dwritetextformat_GetTextAlignment ( IDWriteTextFormat3 *  iface)
static

Definition at line 348 of file format.c.

349{
351
352 TRACE("%p.\n", iface);
353
354 return format->format.textalignment;
355}

◆ dwritetextformat_GetTrimming()

static HRESULT WINAPI dwritetextformat_GetTrimming ( IDWriteTextFormat3 *  iface,
DWRITE_TRIMMING *  options,
IDWriteInlineObject **  trimming_sign 
)
static

Definition at line 402 of file format.c.

404{
406
407 TRACE("%p, %p, %p.\n", iface, options, trimming_sign);
408
409 *options = format->format.trimming;
410 if ((*trimming_sign = format->format.trimmingsign))
411 IDWriteInlineObject_AddRef(*trimming_sign);
412
413 return S_OK;
414}

◆ dwritetextformat_GetWordWrapping()

static DWRITE_WORD_WRAPPING WINAPI dwritetextformat_GetWordWrapping ( IDWriteTextFormat3 *  iface)
static

Definition at line 366 of file format.c.

367{
369
370 TRACE("%p.\n", iface);
371
372 return format->format.wrapping;
373}

◆ dwritetextformat_QueryInterface()

static HRESULT WINAPI dwritetextformat_QueryInterface ( IDWriteTextFormat3 *  iface,
REFIID  riid,
void **  obj 
)
static

Definition at line 215 of file format.c.

216{
217 TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
218
219 if (IsEqualIID(riid, &IID_IDWriteTextFormat3) ||
220 IsEqualIID(riid, &IID_IDWriteTextFormat2) ||
221 IsEqualIID(riid, &IID_IDWriteTextFormat1) ||
222 IsEqualIID(riid, &IID_IDWriteTextFormat) ||
224 {
225 *obj = iface;
226 IDWriteTextFormat3_AddRef(iface);
227 return S_OK;
228 }
229
230 WARN("%s not implemented.\n", debugstr_guid(riid));
231
232 *obj = NULL;
233
234 return E_NOINTERFACE;
235}
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
#define debugstr_guid
Definition: kernel32.h:35
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ dwritetextformat_Release()

static ULONG WINAPI dwritetextformat_Release ( IDWriteTextFormat3 *  iface)
static

Definition at line 247 of file format.c.

248{
251
252 TRACE("%p, refcount %ld.\n", iface, refcount);
253
254 if (!refcount)
255 {
256 release_format_data(&format->format);
257 free(format);
258 }
259
260 return refcount;
261}
#define InterlockedDecrement
Definition: armddk.h:52
void release_format_data(struct dwrite_textformat_data *data)
Definition: format.c:40

◆ dwritetextformat_SetFlowDirection()

static HRESULT WINAPI dwritetextformat_SetFlowDirection ( IDWriteTextFormat3 *  iface,
DWRITE_FLOW_DIRECTION  direction 
)
static

Definition at line 300 of file format.c.

301{
303
304 TRACE("%p, %d.\n", iface, direction);
305
307}
HRESULT format_set_flowdirection(struct dwrite_textformat_data *format, DWRITE_FLOW_DIRECTION direction, BOOL *changed)
Definition: format.c:95
direction
Definition: netio.c:882

◆ dwritetextformat_SetIncrementalTabStop()

static HRESULT WINAPI dwritetextformat_SetIncrementalTabStop ( IDWriteTextFormat3 *  iface,
float  tabstop 
)
static

Definition at line 309 of file format.c.

310{
312
313 TRACE("%p, %f.\n", iface, tabstop);
314
315 if (tabstop <= 0.0f)
316 return E_INVALIDARG;
317
318 format->format.tabstop = tabstop;
319 return S_OK;
320}

◆ dwritetextformat_SetLineSpacing()

static HRESULT WINAPI dwritetextformat_SetLineSpacing ( IDWriteTextFormat3 *  iface,
DWRITE_LINE_SPACING_METHOD  method,
float  height,
float  baseline 
)
static

Definition at line 332 of file format.c.

334{
336 DWRITE_LINE_SPACING spacing;
337
338 TRACE("%p, %d, %f, %f.\n", iface, method, height, baseline);
339
340 spacing = format->format.spacing;
341 spacing.method = method;
342 spacing.height = height;
343 spacing.baseline = baseline;
344
345 return format_set_linespacing(&format->format, &spacing, NULL);
346}
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
DWRITE_LINE_SPACING_METHOD method
Definition: dwrite_3.idl:875

◆ dwritetextformat_SetParagraphAlignment()

static HRESULT WINAPI dwritetextformat_SetParagraphAlignment ( IDWriteTextFormat3 *  iface,
DWRITE_PARAGRAPH_ALIGNMENT  alignment 
)
static

Definition at line 272 of file format.c.

274{
276
277 TRACE("%p, %d.\n", iface, alignment);
278
279 return format_set_paralignment(&format->format, alignment, NULL);
280}
HRESULT format_set_paralignment(struct dwrite_textformat_data *format, DWRITE_PARAGRAPH_ALIGNMENT alignment, BOOL *changed)
Definition: format.c:68

◆ dwritetextformat_SetReadingDirection()

static HRESULT WINAPI dwritetextformat_SetReadingDirection ( IDWriteTextFormat3 *  iface,
DWRITE_READING_DIRECTION  direction 
)
static

Definition at line 291 of file format.c.

292{
294
295 TRACE("%p, %d.\n", iface, direction);
296
298}
HRESULT format_set_readingdirection(struct dwrite_textformat_data *format, DWRITE_READING_DIRECTION direction, BOOL *changed)
Definition: format.c:77

◆ dwritetextformat_SetTextAlignment()

static HRESULT WINAPI dwritetextformat_SetTextAlignment ( IDWriteTextFormat3 *  iface,
DWRITE_TEXT_ALIGNMENT  alignment 
)
static

Definition at line 263 of file format.c.

264{
266
267 TRACE("%p, %d.\n", iface, alignment);
268
270}
HRESULT format_set_textalignment(struct dwrite_textformat_data *format, DWRITE_TEXT_ALIGNMENT alignment, BOOL *changed)
Definition: format.c:58

◆ dwritetextformat_SetTrimming()

static HRESULT WINAPI dwritetextformat_SetTrimming ( IDWriteTextFormat3 *  iface,
DWRITE_TRIMMING const *  trimming,
IDWriteInlineObject *  trimming_sign 
)
static

Definition at line 322 of file format.c.

324{
326
327 TRACE("%p, %p, %p.\n", iface, trimming, trimming_sign);
328
329 return format_set_trimming(&format->format, trimming, trimming_sign, NULL);
330}
HRESULT format_set_trimming(struct dwrite_textformat_data *format, DWRITE_TRIMMING const *trimming, IDWriteInlineObject *trimming_sign, BOOL *changed)
Definition: format.c:104

◆ dwritetextformat_SetWordWrapping()

static HRESULT WINAPI dwritetextformat_SetWordWrapping ( IDWriteTextFormat3 *  iface,
DWRITE_WORD_WRAPPING  wrapping 
)
static

Definition at line 282 of file format.c.

283{
285
286 TRACE("%p, %d.\n", iface, wrapping);
287
288 return format_set_wordwrapping(&format->format, wrapping, NULL);
289}
HRESULT format_set_wordwrapping(struct dwrite_textformat_data *format, DWRITE_WORD_WRAPPING wrapping, BOOL *changed)
Definition: format.c:86

◆ dwritetrimmingsign_AddRef()

static ULONG WINAPI dwritetrimmingsign_AddRef ( IDWriteInlineObject *  iface)
static

Definition at line 776 of file format.c.

777{
780
781 TRACE("%p, refcount %ld.\n", iface, refcount);
782
783 return refcount;
784}
static struct dwrite_trimmingsign * impl_from_IDWriteInlineObject(IDWriteInlineObject *iface)
Definition: format.c:35

◆ dwritetrimmingsign_Draw()

static HRESULT WINAPI dwritetrimmingsign_Draw ( IDWriteInlineObject *  iface,
void *  context,
IDWriteTextRenderer *  renderer,
float  originX,
float  originY,
BOOL  is_sideways,
BOOL  is_rtl,
IUnknown *  effect 
)
static

Definition at line 802 of file format.c.

804{
807 UINT32 line_count;
808
809 TRACE("%p, %p, %p, %.2f, %.2f, %d, %d, %p.\n", iface, context, renderer, originX, originY,
810 is_sideways, is_rtl, effect);
811
812 IDWriteTextLayout_GetLineMetrics(sign->layout, &line, 1, &line_count);
813 return IDWriteTextLayout_Draw(sign->layout, context, renderer, originX, originY - line.baseline);
814}
static BOOL is_rtl(void)
Definition: editor.c:53
Definition: http.c:7252
Definition: parser.c:49

◆ dwritetrimmingsign_GetBreakConditions()

static HRESULT WINAPI dwritetrimmingsign_GetBreakConditions ( IDWriteInlineObject *  iface,
DWRITE_BREAK_CONDITION *  before,
DWRITE_BREAK_CONDITION *  after 
)
static

Definition at line 847 of file format.c.

849{
850 TRACE("%p, %p, %p.\n", iface, before, after);
851
853 return S_OK;
854}
@ DWRITE_BREAK_CONDITION_NEUTRAL
Definition: dwrite.idl:223
__inline int before(__u32 seq1, __u32 seq2)
Definition: tcpcore.h:2390
__inline int after(__u32 seq1, __u32 seq2)
Definition: tcpcore.h:2395

◆ dwritetrimmingsign_GetMetrics()

static HRESULT WINAPI dwritetrimmingsign_GetMetrics ( IDWriteInlineObject *  iface,
DWRITE_INLINE_OBJECT_METRICS *  ret 
)
static

Definition at line 816 of file format.c.

817{
820 HRESULT hr;
821
822 TRACE("%p, %p.\n", iface, ret);
823
824 hr = IDWriteTextLayout_GetMetrics(sign->layout, &metrics);
825 if (FAILED(hr))
826 {
827 memset(ret, 0, sizeof(*ret));
828 return hr;
829 }
830
831 ret->width = metrics.width;
832 ret->height = 0.0f;
833 ret->baseline = 0.0f;
834 ret->supportsSideways = FALSE;
835 return S_OK;
836}
#define FALSE
Definition: types.h:117
return ret
Definition: mutex.c:147
GLsizei GLenum const GLvoid GLuint GLsizei GLfloat * metrics
Definition: glext.h:11745
#define memset(x, y, z)
Definition: compat.h:39

◆ dwritetrimmingsign_GetOverhangMetrics()

static HRESULT WINAPI dwritetrimmingsign_GetOverhangMetrics ( IDWriteInlineObject *  iface,
DWRITE_OVERHANG_METRICS *  overhangs 
)
static

Definition at line 838 of file format.c.

839{
841
842 TRACE("%p, %p.\n", iface, overhangs);
843
844 return IDWriteTextLayout_GetOverhangMetrics(sign->layout, overhangs);
845}

◆ dwritetrimmingsign_QueryInterface()

static HRESULT WINAPI dwritetrimmingsign_QueryInterface ( IDWriteInlineObject *  iface,
REFIID  riid,
void **  obj 
)
static

Definition at line 760 of file format.c.

761{
762 TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
763
764 if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDWriteInlineObject)) {
765 *obj = iface;
766 IDWriteInlineObject_AddRef(iface);
767 return S_OK;
768 }
769
770 WARN("%s not implemented.\n", debugstr_guid(riid));
771
772 *obj = NULL;
773 return E_NOINTERFACE;
774}

◆ dwritetrimmingsign_Release()

static ULONG WINAPI dwritetrimmingsign_Release ( IDWriteInlineObject *  iface)
static

Definition at line 786 of file format.c.

787{
790
791 TRACE("%p, refcount %ld.\n", iface, refcount);
792
793 if (!refcount)
794 {
795 IDWriteTextLayout_Release(sign->layout);
796 free(sign);
797 }
798
799 return refcount;
800}

◆ format_get_font_axisvalues()

HRESULT format_get_font_axisvalues ( struct dwrite_textformat_data *  format,
DWRITE_FONT_AXIS_VALUE *  axis_values,
unsigned int  num_values 
)

Definition at line 159 of file format.c.

161{
162 if (!format->axis_values_count)
163 {
164 if (num_values) memset(axis_values, 0, num_values * sizeof(*axis_values));
165 return S_OK;
166 }
167
168 if (num_values < format->axis_values_count)
170
171 memcpy(axis_values, format->axis_values, min(num_values, format->axis_values_count) * sizeof(*axis_values));
172
173 return S_OK;
174}
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define min(a, b)
Definition: monoChain.cc:55

Referenced by dwritetextformat3_GetFontAxisValues(), and dwritetextformat3_layout_GetFontAxisValues().

◆ format_get_fontfallback()

HRESULT format_get_fontfallback ( const struct dwrite_textformat_data *  format,
IDWriteFontFallback **  fallback 
)

Definition at line 176 of file format.c.

177{
178 *fallback = format->fallback;
179 if (*fallback)
180 IDWriteFontFallback_AddRef(*fallback);
181 return S_OK;
182}

Referenced by dwritetextformat1_GetFontFallback(), and dwritetextlayout2_GetFontFallback().

◆ format_set_flowdirection()

HRESULT format_set_flowdirection ( struct dwrite_textformat_data *  format,
DWRITE_FLOW_DIRECTION  direction,
BOOL *  changed 
)

Definition at line 95 of file format.c.

96{
98 return E_INVALIDARG;
99 if (changed) *changed = format->flow != direction;
100 format->flow = direction;
101 return S_OK;
102}
@ DWRITE_FLOW_DIRECTION_RIGHT_TO_LEFT
Definition: dwrite.idl:211

Referenced by dwritetextformat_layout_SetFlowDirection(), and dwritetextformat_SetFlowDirection().

◆ format_set_font_axisvalues()

HRESULT format_set_font_axisvalues ( struct dwrite_textformat_data *  format,
DWRITE_FONT_AXIS_VALUE const *  axis_values,
unsigned int  num_values 
)

Definition at line 141 of file format.c.

143{
144 free(format->axis_values);
145 format->axis_values = NULL;
146 format->axis_values_count = 0;
147
148 if (num_values)
149 {
150 if (!(format->axis_values = calloc(num_values, sizeof(*axis_values))))
151 return E_OUTOFMEMORY;
152 memcpy(format->axis_values, axis_values, num_values * sizeof(*axis_values));
153 format->axis_values_count = num_values;
154 }
155
156 return S_OK;
157}

Referenced by dwritetextformat3_layout_SetFontAxisValues(), and dwritetextformat3_SetFontAxisValues().

◆ format_set_fontfallback()

HRESULT format_set_fontfallback ( struct dwrite_textformat_data *  format,
IDWriteFontFallback *  fallback 
)

Definition at line 184 of file format.c.

185{
186 if (format->fallback)
187 IDWriteFontFallback_Release(format->fallback);
188 format->fallback = fallback;
189 if (fallback)
190 IDWriteFontFallback_AddRef(fallback);
191 return S_OK;
192}

Referenced by dwritetextformat1_SetFontFallback(), and dwritetextlayout2_SetFontFallback().

◆ format_set_linespacing()

HRESULT format_set_linespacing ( struct dwrite_textformat_data *  format,
DWRITE_LINE_SPACING const *  spacing,
BOOL *  changed 
)

Definition at line 128 of file format.c.

129{
130 if (spacing->height < 0.0f || spacing->leadingBefore < 0.0f || spacing->leadingBefore > 1.0f ||
132 return E_INVALIDARG;
133
134 if (changed)
135 *changed = memcmp(spacing, &format->spacing, sizeof(*spacing));
136
137 format->spacing = *spacing;
138 return S_OK;
139}
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
Definition: string.c:2807
@ DWRITE_LINE_SPACING_METHOD_PROPORTIONAL
Definition: dwrite.idl:233

Referenced by dwritetextformat2_SetLineSpacing(), dwritetextformat_SetLineSpacing(), and dwritetextlayout3_SetLineSpacing().

◆ format_set_optical_alignment()

HRESULT format_set_optical_alignment ( struct dwrite_textformat_data *  format,
DWRITE_OPTICAL_ALIGNMENT  alignment 
)

Definition at line 194 of file format.c.

195{
197 return E_INVALIDARG;
198 format->optical_alignment = alignment;
199 return S_OK;
200}
@ DWRITE_OPTICAL_ALIGNMENT_NO_SIDE_BEARINGS
Definition: dwrite_2.idl:24

Referenced by dwritetextformat1_layout_SetOpticalAlignment(), and dwritetextformat1_SetOpticalAlignment().

◆ format_set_paralignment()

HRESULT format_set_paralignment ( struct dwrite_textformat_data *  format,
DWRITE_PARAGRAPH_ALIGNMENT  alignment,
BOOL *  changed 
)

Definition at line 68 of file format.c.

69{
71 return E_INVALIDARG;
72 if (changed) *changed = format->paralign != alignment;
73 format->paralign = alignment;
74 return S_OK;
75}
@ DWRITE_PARAGRAPH_ALIGNMENT_CENTER
Definition: dwrite.idl:186

Referenced by dwritetextformat_layout_SetParagraphAlignment(), and dwritetextformat_SetParagraphAlignment().

◆ format_set_readingdirection()

HRESULT format_set_readingdirection ( struct dwrite_textformat_data *  format,
DWRITE_READING_DIRECTION  direction,
BOOL *  changed 
)

Definition at line 77 of file format.c.

78{
80 return E_INVALIDARG;
81 if (changed) *changed = format->readingdir != direction;
82 format->readingdir = direction;
83 return S_OK;
84}
@ DWRITE_READING_DIRECTION_BOTTOM_TO_TOP
Definition: dwrite.idl:203

Referenced by dwritetextformat_layout_SetReadingDirection(), and dwritetextformat_SetReadingDirection().

◆ format_set_textalignment()

HRESULT format_set_textalignment ( struct dwrite_textformat_data *  format,
DWRITE_TEXT_ALIGNMENT  alignment,
BOOL *  changed 
)

Definition at line 58 of file format.c.

60{
62 return E_INVALIDARG;
63 if (changed) *changed = format->textalignment != alignment;
64 format->textalignment = alignment;
65 return S_OK;
66}
@ DWRITE_TEXT_ALIGNMENT_JUSTIFIED
Definition: dwrite.idl:179

Referenced by dwritetextformat_layout_SetTextAlignment(), and dwritetextformat_SetTextAlignment().

◆ format_set_trimming()

HRESULT format_set_trimming ( struct dwrite_textformat_data *  format,
DWRITE_TRIMMING const *  trimming,
IDWriteInlineObject *  trimming_sign,
BOOL *  changed 
)

Definition at line 104 of file format.c.

106{
107 if (changed)
108 *changed = FALSE;
109
110 if ((UINT32)trimming->granularity > DWRITE_TRIMMING_GRANULARITY_WORD)
111 return E_INVALIDARG;
112
113 if (changed) {
114 *changed = !!memcmp(&format->trimming, trimming, sizeof(*trimming));
115 if (format->trimmingsign != trimming_sign)
116 *changed = TRUE;
117 }
118
119 format->trimming = *trimming;
120 if (format->trimmingsign)
121 IDWriteInlineObject_Release(format->trimmingsign);
122 format->trimmingsign = trimming_sign;
123 if (format->trimmingsign)
124 IDWriteInlineObject_AddRef(format->trimmingsign);
125 return S_OK;
126}
@ DWRITE_TRIMMING_GRANULARITY_WORD
Definition: dwrite.idl:218

Referenced by dwritetextformat_layout_SetTrimming(), and dwritetextformat_SetTrimming().

◆ format_set_vertical_orientation()

HRESULT format_set_vertical_orientation ( struct dwrite_textformat_data *  format,
DWRITE_VERTICAL_GLYPH_ORIENTATION  orientation,
BOOL *  changed 
)

Definition at line 202 of file format.c.

204{
206 return E_INVALIDARG;
207
208 if (changed)
209 *changed = format->vertical_orientation != orientation;
210
211 format->vertical_orientation = orientation;
212 return S_OK;
213}
@ DWRITE_VERTICAL_GLYPH_ORIENTATION_STACKED
Definition: dwrite_1.idl:428

Referenced by dwritetextformat1_SetVerticalGlyphOrientation(), and layout_set_vertical_orientation().

◆ format_set_wordwrapping()

HRESULT format_set_wordwrapping ( struct dwrite_textformat_data *  format,
DWRITE_WORD_WRAPPING  wrapping,
BOOL *  changed 
)

Definition at line 86 of file format.c.

87{
89 return E_INVALIDARG;
90 if (changed) *changed = format->wrapping != wrapping;
91 format->wrapping = wrapping;
92 return S_OK;
93}
@ DWRITE_WORD_WRAPPING_CHARACTER
Definition: dwrite.idl:195

Referenced by dwritetextformat_layout_SetWordWrapping(), and dwritetextformat_SetWordWrapping().

◆ impl_from_IDWriteInlineObject()

static struct dwrite_trimmingsign * impl_from_IDWriteInlineObject ( IDWriteInlineObject *  iface)
inlinestatic

Definition at line 35 of file format.c.

36{
37 return CONTAINING_RECORD(iface, struct dwrite_trimmingsign, IDWriteInlineObject_iface);
38}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by dwritetrimmingsign_AddRef(), dwritetrimmingsign_Draw(), dwritetrimmingsign_GetMetrics(), dwritetrimmingsign_GetOverhangMetrics(), and dwritetrimmingsign_Release().

◆ impl_from_IDWriteTextFormat3()

static struct dwrite_textformat * impl_from_IDWriteTextFormat3 ( IDWriteTextFormat3 *  iface)
inlinestatic

Definition at line 53 of file format.c.

54{
55 return CONTAINING_RECORD(iface, struct dwrite_textformat, IDWriteTextFormat3_iface);
56}

Referenced by dwritetextformat1_GetFontFallback(), dwritetextformat1_GetLastLineWrapping(), dwritetextformat1_GetOpticalAlignment(), dwritetextformat1_GetVerticalGlyphOrientation(), dwritetextformat1_SetFontFallback(), dwritetextformat1_SetLastLineWrapping(), dwritetextformat1_SetOpticalAlignment(), dwritetextformat1_SetVerticalGlyphOrientation(), dwritetextformat2_GetLineSpacing(), dwritetextformat2_SetLineSpacing(), dwritetextformat3_GetAutomaticFontAxes(), dwritetextformat3_GetFontAxisValueCount(), dwritetextformat3_GetFontAxisValues(), dwritetextformat3_SetAutomaticFontAxes(), dwritetextformat3_SetFontAxisValues(), dwritetextformat_AddRef(), dwritetextformat_GetFlowDirection(), dwritetextformat_GetFontCollection(), dwritetextformat_GetFontFamilyName(), dwritetextformat_GetFontFamilyNameLength(), dwritetextformat_GetFontSize(), dwritetextformat_GetFontStretch(), dwritetextformat_GetFontStyle(), dwritetextformat_GetFontWeight(), dwritetextformat_GetIncrementalTabStop(), dwritetextformat_GetLineSpacing(), dwritetextformat_GetLocaleName(), dwritetextformat_GetLocaleNameLength(), dwritetextformat_GetParagraphAlignment(), dwritetextformat_GetReadingDirection(), dwritetextformat_GetTextAlignment(), dwritetextformat_GetTrimming(), dwritetextformat_GetWordWrapping(), dwritetextformat_Release(), dwritetextformat_SetFlowDirection(), dwritetextformat_SetIncrementalTabStop(), dwritetextformat_SetLineSpacing(), dwritetextformat_SetParagraphAlignment(), dwritetextformat_SetReadingDirection(), dwritetextformat_SetTextAlignment(), dwritetextformat_SetTrimming(), and dwritetextformat_SetWordWrapping().

◆ is_flow_direction_horz()

static BOOL is_flow_direction_horz ( DWRITE_FLOW_DIRECTION  direction)
inlinestatic

Definition at line 879 of file format.c.

880{
883}
@ DWRITE_FLOW_DIRECTION_LEFT_TO_RIGHT
Definition: dwrite.idl:210

Referenced by create_trimmingsign().

◆ is_flow_direction_vert()

static BOOL is_flow_direction_vert ( DWRITE_FLOW_DIRECTION  direction)
inlinestatic

Definition at line 885 of file format.c.

886{
889}
@ DWRITE_FLOW_DIRECTION_BOTTOM_TO_TOP
Definition: dwrite.idl:209
@ DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM
Definition: dwrite.idl:208

Referenced by create_trimmingsign().

◆ is_reading_direction_horz()

static BOOL is_reading_direction_horz ( DWRITE_READING_DIRECTION  direction)
inlinestatic

Definition at line 867 of file format.c.

868{
871}
@ DWRITE_READING_DIRECTION_RIGHT_TO_LEFT
Definition: dwrite.idl:201
@ DWRITE_READING_DIRECTION_LEFT_TO_RIGHT
Definition: dwrite.idl:200

Referenced by create_trimmingsign().

◆ is_reading_direction_vert()

static BOOL is_reading_direction_vert ( DWRITE_READING_DIRECTION  direction)
inlinestatic

Definition at line 873 of file format.c.

Referenced by create_trimmingsign().

◆ release_format_data()

void release_format_data ( struct dwrite_textformat_data *  data)

Definition at line 40 of file format.c.

41{
42 if (data->collection)
43 IDWriteFontCollection_Release(data->collection);
44 if (data->fallback)
45 IDWriteFontFallback_Release(data->fallback);
46 if (data->trimmingsign)
47 IDWriteInlineObject_Release(data->trimmingsign);
48 free(data->family_name);
49 free(data->locale);
50 free(data->axis_values);
51}
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950

Referenced by dwritetextformat_Release(), and dwritetextlayout_Release().

◆ unsafe_impl_from_IDWriteTextFormat()

struct dwrite_textformat * unsafe_impl_from_IDWriteTextFormat ( IDWriteTextFormat *  iface)

Definition at line 708 of file format.c.

709{
710 return (iface->lpVtbl == (IDWriteTextFormatVtbl *)&dwritetextformatvtbl) ?
711 CONTAINING_RECORD(iface, struct dwrite_textformat, IDWriteTextFormat3_iface) : NULL;
712}

Referenced by layout_format_from_textformat().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( dwrite  )

Variable Documentation

◆ dwritetextformatvtbl

const IDWriteTextFormat3Vtbl dwritetextformatvtbl
static

Definition at line 661 of file format.c.

Referenced by create_text_format(), and unsafe_impl_from_IDWriteTextFormat().

◆ dwritetrimmingsignvtbl

const IDWriteInlineObjectVtbl dwritetrimmingsignvtbl
static
Initial value:
=
{
}
static HRESULT WINAPI dwritetrimmingsign_QueryInterface(IDWriteInlineObject *iface, REFIID riid, void **obj)
Definition: format.c:760
static HRESULT WINAPI dwritetrimmingsign_Draw(IDWriteInlineObject *iface, void *context, IDWriteTextRenderer *renderer, float originX, float originY, BOOL is_sideways, BOOL is_rtl, IUnknown *effect)
Definition: format.c:802
static HRESULT WINAPI dwritetrimmingsign_GetBreakConditions(IDWriteInlineObject *iface, DWRITE_BREAK_CONDITION *before, DWRITE_BREAK_CONDITION *after)
Definition: format.c:847
static HRESULT WINAPI dwritetrimmingsign_GetOverhangMetrics(IDWriteInlineObject *iface, DWRITE_OVERHANG_METRICS *overhangs)
Definition: format.c:838
static HRESULT WINAPI dwritetrimmingsign_GetMetrics(IDWriteInlineObject *iface, DWRITE_INLINE_OBJECT_METRICS *ret)
Definition: format.c:816
static ULONG WINAPI dwritetrimmingsign_AddRef(IDWriteInlineObject *iface)
Definition: format.c:776
static ULONG WINAPI dwritetrimmingsign_Release(IDWriteInlineObject *iface)
Definition: format.c:786

Definition at line 856 of file format.c.

Referenced by create_trimmingsign().