notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

commit 5449d6ceb51e46d2e1b5f6a6933f71e4d0ada71a
parent ef8d5b73ee5b9e03345227fe597c9771cf79eb6f
Author: William Casarin <jb55@jb55.com>
Date:   Thu, 19 Dec 2024 07:49:00 -0800

note: options: streamline bit macro

Include has method in the bit note options macro

Diffstat:
Mcrates/notedeck_columns/src/ui/note/options.rs | 72++++++++++++++++--------------------------------------------------------
1 file changed, 16 insertions(+), 56 deletions(-)

diff --git a/crates/notedeck_columns/src/ui/note/options.rs b/crates/notedeck_columns/src/ui/note/options.rs @@ -24,8 +24,8 @@ impl Default for NoteOptions { } } -macro_rules! create_setter { - ($fn_name:ident, $option:ident) => { +macro_rules! create_bit_methods { + ($fn_name:ident, $has_name:ident, $option:ident) => { #[inline] pub fn $fn_name(&mut self, enable: bool) { if enable { @@ -34,19 +34,24 @@ macro_rules! create_setter { *self &= !NoteOptions::$option; } } + + #[inline] + pub fn $has_name(self) -> bool { + (self & NoteOptions::$option) == NoteOptions::$option + } }; } impl NoteOptions { - create_setter!(set_small_pfp, small_pfp); - create_setter!(set_medium_pfp, medium_pfp); - create_setter!(set_note_previews, note_previews); - create_setter!(set_selectable_text, selectable_text); - create_setter!(set_textmode, textmode); - create_setter!(set_actionbar, actionbar); - create_setter!(set_wide, wide); - create_setter!(set_options_button, options_button); - create_setter!(set_hide_media, hide_media); + create_bit_methods!(set_small_pfp, has_small_pfp, small_pfp); + create_bit_methods!(set_medium_pfp, has_medium_pfp, medium_pfp); + create_bit_methods!(set_note_previews, has_note_previews, note_previews); + create_bit_methods!(set_selectable_text, has_selectable_text, selectable_text); + create_bit_methods!(set_textmode, has_textmode, textmode); + create_bit_methods!(set_actionbar, has_actionbar, actionbar); + create_bit_methods!(set_wide, has_wide, wide); + create_bit_methods!(set_options_button, has_options_button, options_button); + create_bit_methods!(set_hide_media, has_hide_media, hide_media); pub fn new(is_universe_timeline: bool) -> Self { let mut options = NoteOptions::default(); @@ -54,51 +59,6 @@ impl NoteOptions { options } - #[inline] - pub fn has_actionbar(self) -> bool { - (self & NoteOptions::actionbar) == NoteOptions::actionbar - } - - #[inline] - pub fn has_hide_media(self) -> bool { - (self & NoteOptions::hide_media) == NoteOptions::hide_media - } - - #[inline] - pub fn has_selectable_text(self) -> bool { - (self & NoteOptions::selectable_text) == NoteOptions::selectable_text - } - - #[inline] - pub fn has_textmode(self) -> bool { - (self & NoteOptions::textmode) == NoteOptions::textmode - } - - #[inline] - pub fn has_note_previews(self) -> bool { - (self & NoteOptions::note_previews) == NoteOptions::note_previews - } - - #[inline] - pub fn has_small_pfp(self) -> bool { - (self & NoteOptions::small_pfp) == NoteOptions::small_pfp - } - - #[inline] - pub fn has_medium_pfp(self) -> bool { - (self & NoteOptions::medium_pfp) == NoteOptions::medium_pfp - } - - #[inline] - pub fn has_wide(self) -> bool { - (self & NoteOptions::wide) == NoteOptions::wide - } - - #[inline] - pub fn has_options_button(self) -> bool { - (self & NoteOptions::options_button) == NoteOptions::options_button - } - pub fn pfp_size(&self) -> f32 { if self.has_small_pfp() { ProfilePic::small_size()