#!/usr/bin/env python3
"""
Simple Table Text Wrapping Example

A minimal example showing text wrapping in table cells.
Perfect for quick testing and demonstration.
"""

import sys
from pathlib import Path

# Add pyWebLayout to path
sys.path.insert(0, str(Path(__file__).parent.parent))

from pyWebLayout.io.readers.html_extraction import parse_html_string
from pyWebLayout.layout.document_layouter import DocumentLayouter
from pyWebLayout.style.page_style import PageStyle
from pyWebLayout.style import Font
from pyWebLayout.concrete.table import TableStyle
from pyWebLayout.concrete.page import Page
from pyWebLayout.abstract.block import Table


def main():
    """Create a simple table with text wrapping."""
    print("\nSimple Table Text Wrapping Example")
    print("=" * 50)

    # HTML with a table containing long text
    html = """
    <table>
        <caption>Text Wrapping Demonstration</caption>
        <thead>
            <tr>
                <th>Column 1</th>
                <th>Column 2</th>
                <th>Column 3</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>This is a cell with quite a lot of text that will need to wrap across multiple lines.</td>
                <td>Short text</td>
                <td>Another cell with enough content to demonstrate the automatic line wrapping functionality.</td>
            </tr>
            <tr>
                <td>Cell A</td>
                <td>This middle cell contains a paragraph with several words that should wrap nicely within the available space.</td>
                <td>Cell C</td>
            </tr>
            <tr>
                <td>Words like supercalifragilisticexpialidocious might need hyphenation.</td>
                <td>Normal text</td>
                <td>The wrapping algorithm handles both regular word wrapping and hyphenation seamlessly.</td>
            </tr>
        </tbody>
    </table>
    """

    print("\n  Parsing HTML and creating table...")

    # Parse HTML
    base_font = Font(font_size=12)
    blocks = parse_html_string(html, base_font=base_font)

    # Find table
    table = None
    for block in blocks:
        if isinstance(block, Table):
            table = block
            break

    if not table:
        print("  ✗ No table found!")
        return

    print("  ✓ Table parsed successfully")

    # Create page
    page_style = PageStyle(
        padding=(30, 30, 30, 30),
        background_color=(255, 255, 255)
    )
    page = Page(size=(800, 600), style=page_style)

    # Create table style
    table_style = TableStyle(
        border_width=2,
        border_color=(70, 130, 180),
        cell_padding=(10, 10, 10, 10),
        header_bg_color=(176, 196, 222),
        cell_bg_color=(245, 250, 255)
    )

    print("  Rendering table with text wrapping...")

    # Layout and render
    layouter = DocumentLayouter(page)
    layouter.layout_table(table, style=table_style)

    # Get rendered image
    _ = page.draw
    img = page._canvas

    # Save output
    output_path = Path(__file__).parent.parent / 'docs' / 'images' / 'example_11b_simple_wrapping.png'
    output_path.parent.mkdir(parents=True, exist_ok=True)
    img.save(str(output_path))

    print(f"\n✓ Example completed!")
    print(f"  Output saved to: {output_path}")
    print(f"  Image size: {img.width}x{img.height} pixels")
    print(f"\n  The table demonstrates:")
    print(f"    • Automatic line wrapping in cells")
    print(f"    • Proper word spacing and alignment")
    print(f"    • Hyphenation for very long words")
    print(f"    • Multi-line text within cell boundaries")


if __name__ == '__main__':
    main()
