(
&mut self,
text: &str,
text_config_index: usize,
)
| 1928 | } |
| 1929 | |
| 1930 | pub fn open_text_element( |
| 1931 | &mut self, |
| 1932 | text: &str, |
| 1933 | text_config_index: usize, |
| 1934 | ) { |
| 1935 | if self.boolean_warnings.max_elements_exceeded { |
| 1936 | return; |
| 1937 | } |
| 1938 | |
| 1939 | let parent_idx = self.get_open_layout_element(); |
| 1940 | let parent_id = self.layout_elements[parent_idx].id; |
| 1941 | let parent_children_count = self.layout_elements[parent_idx].children_length; |
| 1942 | |
| 1943 | // Create text layout element |
| 1944 | let text_element = LayoutElement { |
| 1945 | text_data_index: -1, |
| 1946 | ..Default::default() |
| 1947 | }; |
| 1948 | self.layout_elements.push(text_element); |
| 1949 | let text_elem_idx = (self.layout_elements.len() - 1) as i32; |
| 1950 | |
| 1951 | while self.layout_element_clip_element_ids.len() < self.layout_elements.len() { |
| 1952 | self.layout_element_clip_element_ids.push(0); |
| 1953 | } |
| 1954 | if !self.open_clip_element_stack.is_empty() { |
| 1955 | let clip_id = *self.open_clip_element_stack.last().unwrap(); |
| 1956 | self.layout_element_clip_element_ids[text_elem_idx as usize] = clip_id; |
| 1957 | } else { |
| 1958 | self.layout_element_clip_element_ids[text_elem_idx as usize] = 0; |
| 1959 | } |
| 1960 | |
| 1961 | self.layout_element_children_buffer.push(text_elem_idx); |
| 1962 | |
| 1963 | // Measure text |
| 1964 | let text_config = self.text_element_configs[text_config_index].clone(); |
| 1965 | let text_measured = |
| 1966 | self.measure_text_cached(text, &text_config); |
| 1967 | |
| 1968 | let element_id = hash_number(parent_children_count as u32, parent_id); |
| 1969 | self.layout_elements[text_elem_idx as usize].id = element_id.id; |
| 1970 | self.add_hash_map_item(&element_id, text_elem_idx); |
| 1971 | if self.debug_mode_enabled { |
| 1972 | self.layout_element_id_strings.push(element_id.string_id); |
| 1973 | } |
| 1974 | |
| 1975 | // If the text element is marked accessible, register it in the |
| 1976 | // accessibility tree with a StaticText role and the text content |
| 1977 | // as the label. |
| 1978 | if text_config.accessible { |
| 1979 | let a11y = crate::accessibility::AccessibilityConfig { |
| 1980 | role: crate::accessibility::AccessibilityRole::StaticText, |
| 1981 | label: text.to_string(), |
| 1982 | ..Default::default() |
| 1983 | }; |
| 1984 | self.accessibility_configs.insert(element_id.id, a11y); |
| 1985 | self.accessibility_element_order.push(element_id.id); |
| 1986 | } |
| 1987 |
no test coverage detected