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
91
92
93
94
95
/// PowerPoint (.ppt) presentation support.
///
/// This module provides parsing of Microsoft PowerPoint presentations
/// in the legacy binary format (.ppt files), which uses OLE2 structured storage.
///
/// # Architecture
///
/// The module is organized around these key types:
/// - `Package`: The overall .ppt file package (OLE container)
/// - `Presentation`: The main presentation content and API
/// - `Slide`: Individual slide content and API
/// - `Shape`, `TextBox`, `Placeholder`: Shape and placeholder support
///
/// # PPT File Structure
///
/// A .ppt file is an OLE2 structured storage containing several streams:
/// - **PowerPoint Document**: Main presentation stream containing document properties
/// - **Pictures**: Embedded pictures and images
/// - **\x05SummaryInformation**: Document metadata
///
/// # Example
///
/// ```rust,no_run
/// use litchi::ppt::Package;
///
/// // Open a presentation
/// let package = Package::open("presentation.ppt")?;
/// let pres = package.presentation()?;
///
/// // Extract all text
/// let text = pres.text()?;
/// println!("Presentation text: {}", text);
///
/// // Access slides and shapes
/// for slide in pres.slides()? {
/// println!("Slide: {}", slide.text()?);
///
/// // Access individual shapes
/// for shape in slide.shapes()? {
/// match shape {
/// litchi::ppt::shapes::Shape::TextBox(textbox) => {
/// println!("Text box: {}", textbox.text()?);
/// }
/// litchi::ppt::shapes::Shape::Placeholder(placeholder) => {
/// println!("Placeholder type: {:?}", placeholder.placeholder_type());
/// }
/// _ => {}
/// }
/// }
/// }
/// # Ok::<(), Box<dyn std::error::Error>>(())
/// ```
// Core modules
/// Slide module with factory and enhanced implementation
// Submodules (organized by functionality)
// Drawing layer (Escher) support
// Legacy compatibility modules
// Re-export main types for convenience
pub use Package;
pub use Presentation;
pub use ;
// Re-export record types
pub use ;
pub use PptRecordParser;
// Re-export persist types
pub use ;
// Re-export shape types
pub use ;
// Re-export legacy types
pub use CurrentUser;
pub use ;
pub use ;
pub use EscherTextboxWrapper;