1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
// This file was generated by gir (https://github.com/gtk-rs/gir) // from gir-files (https://github.com/gtk-rs/gir-files) // DO NOT EDIT #[cfg(any(feature = "v1_44", feature = "dox"))] #[cfg_attr(feature = "dox", doc(cfg(feature = "v1_44")))] use crate::AttrIterator; use glib::translate::*; glib::wrapper! { /// The [`Item`][crate::Item] structure stores information about a segment of text. #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct Item(Boxed<ffi::PangoItem>); match fn { copy => |ptr| ffi::pango_item_copy(mut_override(ptr)), free => |ptr| ffi::pango_item_free(ptr), type_ => || ffi::pango_item_get_type(), } } impl Item { /// Creates a new [`Item`][crate::Item] structure initialized to default values. /// /// # Returns /// /// the newly allocated [`Item`][crate::Item], which should /// be freed with `pango_item_free()`. #[doc(alias = "pango_item_new")] pub fn new() -> Item { unsafe { from_glib_full(ffi::pango_item_new()) } } /// Add attributes to a PangoItem. The idea is that you have /// attributes that don't affect itemization, such as font features, /// so you filter them out using [`AttrList::filter()`][crate::AttrList::filter()], itemize /// your text, then reapply the attributes to the resulting items /// using this function. /// /// The `iter` should be positioned before the range of the item, /// and will be advanced past it. This function is meant to be called /// in a loop over the items resulting from itemization, while passing /// the iter to each call. /// ## `iter` /// a [`AttrIterator`][crate::AttrIterator] #[cfg(any(feature = "v1_44", feature = "dox"))] #[cfg_attr(feature = "dox", doc(cfg(feature = "v1_44")))] #[doc(alias = "pango_item_apply_attrs")] pub fn apply_attrs(&mut self, iter: &mut AttrIterator) { unsafe { ffi::pango_item_apply_attrs(self.to_glib_none_mut().0, iter.to_glib_none_mut().0); } } /// Modifies `self` to cover only the text after `split_index`, and /// returns a new item that covers the text before `split_index` that /// used to be in `self`. You can think of `split_index` as the length of /// the returned item. `split_index` may not be 0, and it may not be /// greater than or equal to the length of `self` (that is, there must /// be at least one byte assigned to each item, you can't create a /// zero-length item). `split_offset` is the length of the first item in /// chars, and must be provided because the text used to generate the /// item isn't available, so [`split()`][Self::split()] can't count the char /// length of the split items itself. /// ## `split_index` /// byte index of position to split item, relative to the start of the item /// ## `split_offset` /// number of chars between start of `self` and `split_index` /// /// # Returns /// /// new item representing text before `split_index`, which /// should be freed with `pango_item_free()`. #[doc(alias = "pango_item_split")] pub fn split(&mut self, split_index: i32, split_offset: i32) -> Option<Item> { unsafe { from_glib_full(ffi::pango_item_split( self.to_glib_none_mut().0, split_index, split_offset, )) } } } impl Default for Item { fn default() -> Self { Self::new() } }