use scintilla_sys::{
SC_MARKNUM_FOLDER, SC_MARKNUM_FOLDEREND, SC_MARKNUM_FOLDERMIDTAIL, SC_MARKNUM_FOLDEROPEN,
SC_MARKNUM_FOLDEROPENMID, SC_MARKNUM_FOLDERSUB, SC_MARKNUM_FOLDERTAIL, SC_MARK_ARROW,
SC_MARK_ARROWDOWN, SC_MARK_ARROWS, SC_MARK_AVAILABLE, SC_MARK_BACKGROUND, SC_MARK_BOOKMARK,
SC_MARK_BOXMINUS, SC_MARK_BOXMINUSCONNECTED, SC_MARK_BOXPLUS, SC_MARK_BOXPLUSCONNECTED,
SC_MARK_CHARACTER, SC_MARK_CIRCLE, SC_MARK_CIRCLEMINUS, SC_MARK_CIRCLEMINUSCONNECTED,
SC_MARK_CIRCLEPLUS, SC_MARK_CIRCLEPLUSCONNECTED, SC_MARK_DOTDOTDOT, SC_MARK_EMPTY,
SC_MARK_FULLRECT, SC_MARK_LCORNER, SC_MARK_LCORNERCURVE, SC_MARK_LEFTRECT, SC_MARK_MINUS,
SC_MARK_PIXMAP, SC_MARK_PLUS, SC_MARK_RGBAIMAGE, SC_MARK_ROUNDRECT, SC_MARK_SHORTARROW,
SC_MARK_SMALLRECT, SC_MARK_TCORNER, SC_MARK_TCORNERCURVE, SC_MARK_UNDERLINE, SC_MARK_VLINE,
};
pub trait MarkerNumber {
const FOLDER_END: u32 = SC_MARKNUM_FOLDEREND;
const FOLDER_OPEN_MID: u32 = SC_MARKNUM_FOLDEROPENMID;
const FOLDER_MID_TAIL: u32 = SC_MARKNUM_FOLDERMIDTAIL;
const FOLDER_TAIL: u32 = SC_MARKNUM_FOLDERTAIL;
const FOLDER_SUB: u32 = SC_MARKNUM_FOLDERSUB;
const FOLDER: u32 = SC_MARKNUM_FOLDER;
const FOLDER_OPEN: u32 = SC_MARKNUM_FOLDEROPEN;
}
impl MarkerNumber for u32 {}
#[derive(Debug, PartialEq)]
pub enum Mark {
Circle,
RoundRect,
Arrow,
SmallRect,
ShortArrow,
Empty,
ArrowDown,
Minus,
Plus,
VLine,
LCorner,
TCorner,
BoxPlus,
BoxPlusConnected,
BoxMinus,
BoxMinusConnected,
LCornerCurve,
TCornerCurve,
CirclePlus,
CirclePlusConnected,
CircleMinus,
CircleMinusConnected,
Background,
DotDotDot,
Arrows,
Pixmap,
FullRect,
LeftRect,
Available,
Underline,
RgbaImage,
Bookmark,
Character(i16),
}
impl From<u32> for Mark {
fn from(value: u32) -> Self {
match value {
SC_MARK_CIRCLE => Self::Circle,
SC_MARK_ROUNDRECT => Self::RoundRect,
SC_MARK_ARROW => Self::Arrow,
SC_MARK_SMALLRECT => Self::SmallRect,
SC_MARK_SHORTARROW => Self::ShortArrow,
SC_MARK_EMPTY => Self::Empty,
SC_MARK_ARROWDOWN => Self::ArrowDown,
SC_MARK_MINUS => Self::Minus,
SC_MARK_PLUS => Self::Plus,
SC_MARK_VLINE => Self::VLine,
SC_MARK_LCORNER => Self::LCorner,
SC_MARK_TCORNER => Self::TCorner,
SC_MARK_BOXPLUS => Self::BoxPlus,
SC_MARK_BOXPLUSCONNECTED => Self::BoxPlusConnected,
SC_MARK_BOXMINUS => Self::BoxMinus,
SC_MARK_BOXMINUSCONNECTED => Self::BoxMinusConnected,
SC_MARK_LCORNERCURVE => Self::LCornerCurve,
SC_MARK_TCORNERCURVE => Self::TCornerCurve,
SC_MARK_CIRCLEPLUS => Self::CirclePlus,
SC_MARK_CIRCLEPLUSCONNECTED => Self::CirclePlusConnected,
SC_MARK_CIRCLEMINUS => Self::CircleMinus,
SC_MARK_CIRCLEMINUSCONNECTED => Self::CircleMinusConnected,
SC_MARK_BACKGROUND => Self::Background,
SC_MARK_DOTDOTDOT => Self::DotDotDot,
SC_MARK_ARROWS => Self::Arrows,
SC_MARK_PIXMAP => Self::Pixmap,
SC_MARK_FULLRECT => Self::FullRect,
SC_MARK_LEFTRECT => Self::LeftRect,
SC_MARK_AVAILABLE => Self::Available,
SC_MARK_UNDERLINE => Self::Underline,
SC_MARK_RGBAIMAGE => Self::RgbaImage,
SC_MARK_BOOKMARK => Self::Bookmark,
_ => Self::Character((SC_MARK_CHARACTER + value) as i16),
}
}
}
impl Into<u32> for Mark {
fn into(self) -> u32 {
match self {
Self::Arrow => SC_MARK_ARROW,
Self::ArrowDown => SC_MARK_ARROWDOWN,
Self::Arrows => SC_MARK_ARROWS,
Self::Available => SC_MARK_AVAILABLE,
Self::Background => SC_MARK_BACKGROUND,
Self::Bookmark => SC_MARK_BOOKMARK,
Self::BoxMinus => SC_MARK_BOXMINUS,
Self::BoxMinusConnected => SC_MARK_BOXMINUSCONNECTED,
Self::BoxPlus => SC_MARK_BOXPLUS,
Self::BoxPlusConnected => SC_MARK_BOXPLUSCONNECTED,
Self::Character(value) => value as u32 - SC_MARK_CHARACTER,
Self::Circle => SC_MARK_CIRCLE,
Self::CircleMinus => SC_MARK_CIRCLEMINUS,
Self::CircleMinusConnected => SC_MARK_CIRCLEMINUSCONNECTED,
Self::CirclePlus => SC_MARK_CIRCLEPLUS,
Self::CirclePlusConnected => SC_MARK_CIRCLEPLUSCONNECTED,
Self::DotDotDot => SC_MARK_DOTDOTDOT,
Self::Empty => SC_MARK_EMPTY,
Self::FullRect => SC_MARK_FULLRECT,
Self::LCorner => SC_MARK_LCORNER,
Self::LCornerCurve => SC_MARK_LCORNERCURVE,
Self::LeftRect => SC_MARK_LEFTRECT,
Self::Minus => SC_MARK_MINUS,
Self::Pixmap => SC_MARK_PIXMAP,
Self::Plus => SC_MARK_PLUS,
Self::RgbaImage => SC_MARK_RGBAIMAGE,
Self::RoundRect => SC_MARK_ROUNDRECT,
Self::ShortArrow => SC_MARK_SHORTARROW,
Self::SmallRect => SC_MARK_SMALLRECT,
Self::TCorner => SC_MARK_TCORNER,
Self::TCornerCurve => SC_MARK_TCORNERCURVE,
Self::Underline => SC_MARK_UNDERLINE,
Self::VLine => SC_MARK_VLINE,
}
}
}