MCPcopy Create free account
hub / github.com/TheRedDeveloper/ply-engine / open_text_element

Method open_text_element

src/engine.rs:1930–2028  ·  view source on GitHub ↗
(
        &mut self,
        text: &str,
        text_config_index: usize,
    )

Source from the content-addressed store, hash-verified

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

Callers 6

textMethod · 0.80
debug_textMethod · 0.80
debug_raw_textMethod · 0.80
debug_int_textMethod · 0.80
debug_float_textMethod · 0.80

Calls 7

hash_numberFunction · 0.85
is_emptyMethod · 0.80
cloneMethod · 0.80
measure_text_cachedMethod · 0.80
add_hash_map_itemMethod · 0.80
store_layout_configMethod · 0.80

Tested by

no test coverage detected