GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: gx_display_language_table_set.c Lines: 36 36 100.0 %
Date: 2026-03-06 19:21:09 Branches: 16 16 100.0 %

Line Branch Exec Source
1
/***************************************************************************
2
 * Copyright (c) 2024 Microsoft Corporation
3
 * Copyright (c) 2026-present Eclipse ThreadX contributors
4
 *
5
 * This program and the accompanying materials are made available under the
6
 * terms of the MIT License which is available at
7
 * https://opensource.org/licenses/MIT.
8
 *
9
 * SPDX-License-Identifier: MIT
10
 **************************************************************************/
11
12
13
/**************************************************************************/
14
/**************************************************************************/
15
/**                                                                       */
16
/** GUIX Component                                                        */
17
/**                                                                       */
18
/**   Display Management (Display)                                        */
19
/**                                                                       */
20
/**************************************************************************/
21
22
#define GX_SOURCE_CODE
23
24
25
/* Include necessary system files.  */
26
27
#include "gx_api.h"
28
#include "gx_system.h"
29
#include "gx_display.h"
30
#include "gx_utility.h"
31
32
33
/**************************************************************************/
34
/*                                                                        */
35
/*  FUNCTION                                               RELEASE        */
36
/*                                                                        */
37
/*    _gx_display_language_table_set                      PORTABLE C      */
38
/*                                                           6.1          */
39
/*  AUTHOR                                                                */
40
/*                                                                        */
41
/*    Kenneth Maxwell, Microsoft Corporation                              */
42
/*                                                                        */
43
/*  DESCRIPTION  (Deprecated)                                             */
44
/*                                                                        */
45
/*    This service sets the language table.                               */
46
/*                                                                        */
47
/*  INPUT                                                                 */
48
/*                                                                        */
49
/*    language_table                        The language table to be set  */
50
/*    num_languages                         Number of languages in the    */
51
/*                                            table                       */
52
/*    number_of_strings                     Number of strings in each     */
53
/*                                            language                    */
54
/*                                                                        */
55
/*  OUTPUT                                                                */
56
/*                                                                        */
57
/*    status                                Completion status             */
58
/*                                                                        */
59
/*  CALLS                                                                 */
60
/*                                                                        */
61
/*    _gx_system_all_canvas_dirty           Mark canvas dirty             */
62
/*                                                                        */
63
/*  CALLED BY                                                             */
64
/*                                                                        */
65
/*    Application Code                                                    */
66
/*                                                                        */
67
/**************************************************************************/
68
#if defined(GX_ENABLE_DEPRECATED_STRING_API)
69
11
UINT  _gx_display_language_table_set(GX_DISPLAY *display, GX_CHAR ***language_table,
70
                                    GX_UBYTE num_languages, UINT number_of_strings)
71
{
72
GX_EVENT            language_event;
73
GX_WINDOW_ROOT     *root;
74
11
GX_CONST GX_CHAR ***old_table = display -> gx_display_language_table_deprecated;
75
76
     /* Setup the system string table information.  */
77
11
    display -> gx_display_language_table_deprecated = (GX_CONST GX_CHAR ***)language_table;
78
11
    display -> gx_display_language_table = GX_NULL;
79
80
11
    display -> gx_display_language_table_size = num_languages;
81
11
    display -> gx_display_string_table_size = number_of_strings;
82
83
11
    if (old_table)
84
    {
85
4
        memset(&language_event, 0, sizeof(GX_EVENT));
86
4
        language_event.gx_event_type = GX_EVENT_LANGUAGE_CHANGE;
87
88
4
        root = (GX_WINDOW_ROOT *)_gx_system_root_window_created_list;
89
90
9
        while (root)
91
        {
92
5
            if (root -> gx_window_root_canvas)
93
            {
94
4
                if (root -> gx_window_root_canvas -> gx_canvas_display == display)
95
                {
96
3
                    language_event.gx_event_target = (GX_WIDGET *) root;
97
3
                    _gx_system_event_send(&language_event);
98
                }
99
            }
100
101
5
            root = (GX_WINDOW_ROOT *)root -> gx_widget_next;
102
        }
103
104
        /* mark all visible canvases as dirty when there is a resource change */
105
4
        _gx_system_all_canvas_dirty();
106
    }
107
108
    /* Return success.  */
109
11
    return(GX_SUCCESS);
110
}
111
#endif
112
113
/**************************************************************************/
114
/*                                                                        */
115
/*  FUNCTION                                               RELEASE        */
116
/*                                                                        */
117
/*    _gx_display_language_table_set_ext                  PORTABLE C      */
118
/*                                                           6.1          */
119
/*  AUTHOR                                                                */
120
/*                                                                        */
121
/*    Kenneth Maxwell, Microsoft Corporation                              */
122
/*                                                                        */
123
/*  DESCRIPTION                                                           */
124
/*                                                                        */
125
/*    This service sets the language table.                               */
126
/*                                                                        */
127
/*  INPUT                                                                 */
128
/*                                                                        */
129
/*    language_table                        The language table to be set  */
130
/*    num_languages                         Number of languages in the    */
131
/*                                            table                       */
132
/*    number_of_strings                     Number of strings in each     */
133
/*                                            language                    */
134
/*                                                                        */
135
/*  OUTPUT                                                                */
136
/*                                                                        */
137
/*    status                                Completion status             */
138
/*                                                                        */
139
/*  CALLS                                                                 */
140
/*                                                                        */
141
/*    _gx_system_all_canvas_dirty           Mark canvas dirty             */
142
/*                                                                        */
143
/*  CALLED BY                                                             */
144
/*                                                                        */
145
/*    Application Code                                                    */
146
/*                                                                        */
147
/**************************************************************************/
148
768
UINT  _gx_display_language_table_set_ext(GX_DISPLAY *display, GX_CONST GX_STRING **language_table,
149
                                    GX_UBYTE num_languages, UINT number_of_strings)
150
{
151
GX_EVENT   language_event;
152
GX_WINDOW_ROOT *root;
153
768
GX_CONST GX_STRING **old_table = display -> gx_display_language_table;
154
155
    /* Setup the system string table information.  */
156
768
    display -> gx_display_language_table = language_table;
157
158
#if defined(GX_ENABLE_DEPRECATED_STRING_API)
159
768
    display -> gx_display_language_table_deprecated = GX_NULL;
160
#endif
161
162
768
    display -> gx_display_language_table_size = num_languages;
163
768
    display -> gx_display_string_table_size = number_of_strings;
164
165
768
    if (old_table)
166
    {
167
40
        memset(&language_event, 0, sizeof(GX_EVENT));
168
40
        language_event.gx_event_type = GX_EVENT_LANGUAGE_CHANGE;
169
170
40
        root = (GX_WINDOW_ROOT *)_gx_system_root_window_created_list;
171
172
83
        while (root)
173
        {
174
43
            if (root -> gx_window_root_canvas)
175
            {
176
42
                if (root -> gx_window_root_canvas -> gx_canvas_display == display)
177
                {
178
39
                    language_event.gx_event_target = (GX_WIDGET *) root;
179
39
                    _gx_system_event_send(&language_event);
180
                }
181
            }
182
183
43
            root = (GX_WINDOW_ROOT *)root -> gx_widget_next;
184
        }
185
186
        /* mark all visible canvases as dirty when there is a resource change */
187
40
        _gx_system_all_canvas_dirty();
188
    }
189
190
    /* Return success.  */
191
768
    return(GX_SUCCESS);
192
}
193
194
/**************************************************************************/
195
/*                                                                        */
196
/*  FUNCTION                                               RELEASE        */
197
/*                                                                        */
198
/*    _gx_display_language_direction_table_set_ext        PORTABLE C      */
199
/*                                                           6.3.0        */
200
/*  AUTHOR                                                                */
201
/*                                                                        */
202
/*    Ting Zhu, Microsoft Corporation                                     */
203
/*                                                                        */
204
/*  DESCRIPTION                                                           */
205
/*                                                                        */
206
/*    This service sets the language direction table.                     */
207
/*                                                                        */
208
/*  INPUT                                                                 */
209
/*                                                                        */
210
/*    display                               Pointer to display            */
211
/*    language_direction_table              The language direction table  */
212
/*                                            to be set                   */
213
/*    num_languages                         Number of languages in the    */
214
/*                                            table                       */
215
/*                                                                        */
216
/*  OUTPUT                                                                */
217
/*                                                                        */
218
/*    status                                Completion status             */
219
/*                                                                        */
220
/*  CALLS                                                                 */
221
/*                                                                        */
222
/*    None                                                                */
223
/*                                                                        */
224
/*  CALLED BY                                                             */
225
/*                                                                        */
226
/*    Application Code                                                    */
227
/*                                                                        */
228
/**************************************************************************/
229
#if defined(GX_DYNAMIC_BIDI_TEXT_SUPPORT)
230
UINT  _gx_display_language_direction_table_set(GX_DISPLAY *display, GX_CONST GX_UBYTE *language_direction_table, GX_UBYTE num_languages)
231
{
232
233
    if (num_languages != display->gx_display_language_table_size)
234
    {
235
        return(GX_INVALID_VALUE);
236
    }
237
238
    /* Setup the system string table information.  */
239
    display -> gx_display_language_direction_table = language_direction_table;
240
241
    /* Return success.  */
242
    return(GX_SUCCESS);
243
}
244
#endif