@@ -6,7 +6,7 @@ use std::{ffi::c_char, ptr};
6
6
pub use crate :: auto:: functions:: * ;
7
7
#[ cfg( feature = "v1_44" ) ]
8
8
use crate :: ShapeFlags ;
9
- use crate :: { ffi, Analysis , GlyphString , Item } ;
9
+ use crate :: { ffi, Analysis , AttrIterator , AttrList , Context , Direction , GlyphString , Item } ;
10
10
11
11
#[ doc( alias = "pango_reorder_items" ) ]
12
12
pub fn reorder_items ( logical_items : & glib:: List < Item > ) -> glib:: List < Item > {
@@ -93,3 +93,65 @@ pub fn extents_to_pixels(
93
93
ffi:: pango_extents_to_pixels ( inclusive. to_glib_none_mut ( ) . 0 , nearest. to_glib_none_mut ( ) . 0 ) ;
94
94
}
95
95
}
96
+
97
+ #[ doc( alias = "pango_itemize" ) ]
98
+ pub fn itemize (
99
+ context : & Context ,
100
+ text : & str ,
101
+ start_index : i32 ,
102
+ length : i32 ,
103
+ attrs : & AttrList ,
104
+ cached_iter : Option < & AttrIterator > ,
105
+ ) -> Vec < Item > {
106
+ let total_length = text. len ( ) as i32 ;
107
+ assert ! (
108
+ start_index >= 0 && start_index < total_length,
109
+ "start_index is out of range"
110
+ ) ;
111
+ assert ! (
112
+ length >= 0 && start_index. checked_add( length) . unwrap( ) < total_length,
113
+ "start_index + length is out of range"
114
+ ) ;
115
+ unsafe {
116
+ FromGlibPtrContainer :: from_glib_full ( ffi:: pango_itemize (
117
+ context. to_glib_none ( ) . 0 ,
118
+ text. to_glib_none ( ) . 0 ,
119
+ start_index,
120
+ length,
121
+ attrs. to_glib_none ( ) . 0 ,
122
+ mut_override ( cached_iter. to_glib_none ( ) . 0 ) ,
123
+ ) )
124
+ }
125
+ }
126
+
127
+ #[ doc( alias = "pango_itemize_with_base_dir" ) ]
128
+ pub fn itemize_with_base_dir (
129
+ context : & Context ,
130
+ base_dir : Direction ,
131
+ text : & str ,
132
+ start_index : i32 ,
133
+ length : i32 ,
134
+ attrs : & AttrList ,
135
+ cached_iter : Option < & AttrIterator > ,
136
+ ) -> Vec < Item > {
137
+ let total_length = text. len ( ) as i32 ;
138
+ assert ! (
139
+ start_index >= 0 && start_index < total_length,
140
+ "start_index is out of range"
141
+ ) ;
142
+ assert ! (
143
+ length >= 0 && start_index. checked_add( length) . unwrap( ) < total_length,
144
+ "start_index + length is out of range"
145
+ ) ;
146
+ unsafe {
147
+ FromGlibPtrContainer :: from_glib_full ( ffi:: pango_itemize_with_base_dir (
148
+ context. to_glib_none ( ) . 0 ,
149
+ base_dir. into_glib ( ) ,
150
+ text. to_glib_none ( ) . 0 ,
151
+ start_index,
152
+ length,
153
+ attrs. to_glib_none ( ) . 0 ,
154
+ mut_override ( cached_iter. to_glib_none ( ) . 0 ) ,
155
+ ) )
156
+ }
157
+ }
0 commit comments