diff --git a/src/viewer/pdf.rs b/src/viewer/pdf.rs new file mode 100644 index 0000000..eda2a3b --- /dev/null +++ b/src/viewer/pdf.rs @@ -0,0 +1,54 @@ +//! PDF 檢視器 + +use anyhow::Result; + +pub struct PdfViewer { + path: Option, + current_page: u32, + total_pages: u32, +} + +impl PdfViewer { + pub fn new() -> Self { + Self { + path: None, + current_page: 1, + total_pages: 0, + } + } + + pub fn open(&mut self, path: &str) -> Result<()> { + self.path = Some(path.to_string()); + self.current_page = 1; + self.total_pages = self.get_page_count()?; + Ok(()) + } + + fn get_page_count(&self) -> Result { + Ok(10) + } + + pub fn next_page(&mut self) { + if self.current_page < self.total_pages { + self.current_page += 1; + } + } + + pub fn prev_page(&mut self) { + if self.current_page > 1 { + self.current_page -= 1; + } + } + + pub fn go_to_page(&mut self, page: u32) { + self.current_page = page.clamp(1, self.total_pages); + } + + pub fn get_page(&self) -> u32 { + self.current_page + } + + pub fn get_total(&self) -> u32 { + self.total_pages + } +}