// GENERATED — DO NOT EDIT

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.Alignment.html).
pub(all) enum Alignment {
  Left = 0
  Center = 1
  Right = 2
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.EllipsizeMode.html).
pub(all) enum EllipsizeMode {
  None = 0
  Start = 1
  Middle = 2
  End = 3
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.WrapMode.html).
pub(all) enum WrapMode {
  Word = 0
  Char = 1
  WordChar = 2
  None = 3
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.Direction.html).
pub(all) enum Direction {
  Ltr = 0
  Rtl = 1
  TtbLtr = 2
  TtbRtl = 3
  WeakLtr = 4
  WeakRtl = 5
  Neutral = 6
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.Stretch.html).
pub(all) enum Stretch {
  UltraCondensed = 0
  ExtraCondensed = 1
  Condensed = 2
  SemiCondensed = 3
  Normal = 4
  SemiExpanded = 5
  Expanded = 6
  ExtraExpanded = 7
  UltraExpanded = 8
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.Style.html).
pub(all) enum Style {
  Normal = 0
  Oblique = 1
  Italic = 2
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.Underline.html).
pub(all) enum Underline {
  None = 0
  Single = 1
  Double = 2
  Low = 3
  Error = 4
  SingleLine = 5
  DoubleLine = 6
  ErrorLine = 7
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.Overline.html).
pub(all) enum Overline {
  None = 0
  Single = 1
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.Variant.html).
pub(all) enum Variant {
  Normal = 0
  SmallCaps = 1
  AllSmallCaps = 2
  PetiteCaps = 3
  AllPetiteCaps = 4
  Unicase = 5
  TitleCaps = 6
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.Weight.html).
pub(all) enum Weight {
  Thin = 0
  Ultralight = 1
  Light = 2
  Semilight = 3
  Book = 4
  Normal = 5
  Medium = 6
  Semibold = 7
  Bold = 8
  Ultrabold = 9
  Heavy = 10
  Ultraheavy = 11
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.TextTransform.html).
pub(all) enum TextTransform {
  None = 0
  Lowercase = 1
  Uppercase = 2
  Capitalize = 3
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.TabAlign.html).
pub(all) enum TabAlign {
  Left = 0
  Right = 1
  Center = 2
  Decimal = 3
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.Gravity.html).
pub(all) enum Gravity {
  South = 0
  East = 1
  North = 2
  West = 3
  Auto = 4
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.GravityHint.html).
pub(all) enum GravityHint {
  Natural = 0
  Strong = 1
  Line = 2
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.BaselineShift.html).
pub(all) enum BaselineShift {
  None = 0
  Superscript = 1
  Subscript = 2
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.FontScale.html).
pub(all) enum FontScale {
  None = 0
  Superscript = 1
  Subscript = 2
  SmallCaps = 3
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.CoverageLevel.html).
pub(all) enum CoverageLevel {
  None = 0
  Fallback = 1
  Approximate = 2
  Exact = 3
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/flags.LayoutDeserializeFlags.html).
pub(all) enum LayoutDeserializeFlag {
  Default = 1
  Context = 2
}

///|
fn LayoutDeserializeFlag::to_int(self : LayoutDeserializeFlag) -> Int = "%identity"

///|
pub struct LayoutDeserializeFlags {
  priv value : Int
}

///|
pub fn LayoutDeserializeFlags::LayoutDeserializeFlags(
  flags : Array[LayoutDeserializeFlag],
) -> LayoutDeserializeFlags {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  LayoutDeserializeFlags::{ value: v }
}

///|
pub fn LayoutDeserializeFlags::from_int(value : Int) -> LayoutDeserializeFlags {
  LayoutDeserializeFlags::{ value, }
}

///|
pub fn LayoutDeserializeFlags::to_int(self : LayoutDeserializeFlags) -> Int {
  self.value
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/flags.LayoutSerializeFlags.html).
pub(all) enum LayoutSerializeFlag {
  Default = 1
  Context = 2
  Output = 4
}

///|
fn LayoutSerializeFlag::to_int(self : LayoutSerializeFlag) -> Int = "%identity"

///|
pub struct LayoutSerializeFlags {
  priv value : Int
}

///|
pub fn LayoutSerializeFlags::LayoutSerializeFlags(
  flags : Array[LayoutSerializeFlag],
) -> LayoutSerializeFlags {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  LayoutSerializeFlags::{ value: v }
}

///|
pub fn LayoutSerializeFlags::from_int(value : Int) -> LayoutSerializeFlags {
  LayoutSerializeFlags::{ value, }
}

///|
pub fn LayoutSerializeFlags::to_int(self : LayoutSerializeFlags) -> Int {
  self.value
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/flags.ShowFlags.html).
pub(all) enum ShowFlag {
  None = 1
  Spaces = 2
  LineBreaks = 4
  Ignorables = 8
}

///|
fn ShowFlag::to_int(self : ShowFlag) -> Int = "%identity"

///|
pub struct ShowFlags {
  priv value : Int
}

///|
pub fn ShowFlags::ShowFlags(flags : Array[ShowFlag]) -> ShowFlags {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  ShowFlags::{ value: v }
}

///|
pub fn ShowFlags::from_int(value : Int) -> ShowFlags {
  ShowFlags::{ value, }
}

///|
pub fn ShowFlags::to_int(self : ShowFlags) -> Int {
  self.value
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.FontColor.html).
pub(all) enum FontColor {
  Forbidden = 0
  Required = 1
  DontCare = 2
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/flags.FontMask.html).
pub(all) enum FontMaskFlag {
  Family = 1
  Style = 2
  Variant = 4
  Weight = 8
  Stretch = 16
  Size = 32
  Gravity = 64
  Variations = 128
  Features = 256
  Color = 512
}

///|
fn FontMaskFlag::to_int(self : FontMaskFlag) -> Int = "%identity"

///|
pub struct FontMask {
  priv value : Int
}

///|
pub fn FontMask::FontMask(flags : Array[FontMaskFlag]) -> FontMask {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  FontMask::{ value: v }
}

///|
pub fn FontMask::from_int(value : Int) -> FontMask {
  FontMask::{ value, }
}

///|
pub fn FontMask::to_int(self : FontMask) -> Int {
  self.value
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.Script.html).
pub(all) enum Script {
  InvalidCode = 0
  Common = 1
  Inherited = 2
  Arabic = 3
  Armenian = 4
  Bengali = 5
  Bopomofo = 6
  Cherokee = 7
  Coptic = 8
  Cyrillic = 9
  Deseret = 10
  Devanagari = 11
  Ethiopic = 12
  Georgian = 13
  Gothic = 14
  Greek = 15
  Gujarati = 16
  Gurmukhi = 17
  Han = 18
  Hangul = 19
  Hebrew = 20
  Hiragana = 21
  Kannada = 22
  Katakana = 23
  Khmer = 24
  Lao = 25
  Latin = 26
  Malayalam = 27
  Mongolian = 28
  Myanmar = 29
  Ogham = 30
  OldItalic = 31
  Oriya = 32
  Runic = 33
  Sinhala = 34
  Syriac = 35
  Tamil = 36
  Telugu = 37
  Thaana = 38
  Thai = 39
  Tibetan = 40
  CanadianAboriginal = 41
  Yi = 42
  Tagalog = 43
  Hanunoo = 44
  Buhid = 45
  Tagbanwa = 46
  Braille = 47
  Cypriot = 48
  Limbu = 49
  Osmanya = 50
  Shavian = 51
  LinearB = 52
  TaiLe = 53
  Ugaritic = 54
  NewTaiLue = 55
  Buginese = 56
  Glagolitic = 57
  Tifinagh = 58
  SylotiNagri = 59
  OldPersian = 60
  Kharoshthi = 61
  Unknown = 62
  Balinese = 63
  Cuneiform = 64
  Phoenician = 65
  PhagsPa = 66
  Nko = 67
  KayahLi = 68
  Lepcha = 69
  Rejang = 70
  Sundanese = 71
  Saurashtra = 72
  Cham = 73
  OlChiki = 74
  Vai = 75
  Carian = 76
  Lycian = 77
  Lydian = 78
  Batak = 79
  Brahmi = 80
  Mandaic = 81
  Chakma = 82
  MeroiticCursive = 83
  MeroiticHieroglyphs = 84
  Miao = 85
  Sharada = 86
  SoraSompeng = 87
  Takri = 88
  BassaVah = 89
  CaucasianAlbanian = 90
  Duployan = 91
  Elbasan = 92
  Grantha = 93
  Khojki = 94
  Khudawadi = 95
  LinearA = 96
  Mahajani = 97
  Manichaean = 98
  MendeKikakui = 99
  Modi = 100
  Mro = 101
  Nabataean = 102
  OldNorthArabian = 103
  OldPermic = 104
  PahawhHmong = 105
  Palmyrene = 106
  PauCinHau = 107
  PsalterPahlavi = 108
  Siddham = 109
  Tirhuta = 110
  WarangCiti = 111
  Ahom = 112
  AnatolianHieroglyphs = 113
  Hatran = 114
  Multani = 115
  OldHungarian = 116
  Signwriting = 117
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.AttrType.html).
pub(all) enum AttrType {
  Invalid = 0
  Language = 1
  Family = 2
  Style = 3
  Weight = 4
  Variant = 5
  Stretch = 6
  Size = 7
  FontDesc = 8
  Foreground = 9
  Background = 10
  Underline = 11
  Strikethrough = 12
  Rise = 13
  Shape = 14
  Scale = 15
  Fallback = 16
  LetterSpacing = 17
  UnderlineColor = 18
  StrikethroughColor = 19
  AbsoluteSize = 20
  Gravity = 21
  GravityHint = 22
  FontFeatures = 23
  ForegroundAlpha = 24
  BackgroundAlpha = 25
  AllowBreaks = 26
  Show = 27
  InsertHyphens = 28
  Overline = 29
  OverlineColor = 30
  LineHeight = 31
  AbsoluteLineHeight = 32
  TextTransform = 33
  Word = 34
  Sentence = 35
  BaselineShift = 36
  FontScale = 37
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/enum.RenderPart.html).
pub(all) enum RenderPart {
  Foreground = 0
  Background = 1
  Underline = 2
  Strikethrough = 3
  Overline = 4
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/flags.ShapeFlags.html).
pub(all) enum ShapeFlag {
  None = 1
  RoundPositions = 2
}

///|
fn ShapeFlag::to_int(self : ShapeFlag) -> Int = "%identity"

///|
pub struct ShapeFlags {
  priv value : Int
}

///|
pub fn ShapeFlags::ShapeFlags(flags : Array[ShapeFlag]) -> ShapeFlags {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  ShapeFlags::{ value: v }
}

///|
pub fn ShapeFlags::from_int(value : Int) -> ShapeFlags {
  ShapeFlags::{ value, }
}

///|
pub fn ShapeFlags::to_int(self : ShapeFlags) -> Int {
  self.value
}