"""Slide XML and slide relationship XML generation."""
from __future__ import annotations
# Import animation module (optional)
try:
from pptx_animations import create_transition_xml, TRANSITIONS
ANIMATIONS_AVAILABLE = True
except ImportError:
ANIMATIONS_AVAILABLE = False
TRANSITIONS = {}
def create_slide_xml_with_svg(
slide_num: int,
png_rid: str,
svg_rid: str,
width_emu: int,
height_emu: int,
transition: str | None = 'fade',
transition_duration: float = 0.5,
auto_advance: float | None = None,
use_compat_mode: bool = True,
) -> str:
"""Create slide XML containing an SVG image.
Args:
slide_num: Slide number.
png_rid: PNG fallback image relationship ID.
svg_rid: SVG relationship ID.
width_emu: Width in EMU.
height_emu: Height in EMU.
transition: Transition effect name.
transition_duration: Transition duration in seconds.
auto_advance: Auto-advance interval in seconds.
use_compat_mode: Whether to use compatibility mode (PNG + SVG dual format).
"""
transition_xml = ''
if transition and ANIMATIONS_AVAILABLE:
transition_xml = '\n' + create_transition_xml(
effect=transition,
duration=transition_duration,
advance_after=auto_advance,
)
if use_compat_mode:
blip_xml = f'''
'''
else:
blip_xml = f''
return f'''
{blip_xml}
{transition_xml}
'''
def create_slide_rels_xml(
png_rid: str,
png_filename: str,
svg_rid: str,
svg_filename: str,
use_compat_mode: bool = True,
) -> str:
"""Create slide relationship file XML.
Args:
png_rid: PNG image relationship ID.
png_filename: PNG filename.
svg_rid: SVG relationship ID.
svg_filename: SVG filename.
use_compat_mode: Whether to use compatibility mode.
"""
if use_compat_mode:
return f'''
'''
else:
return f'''
'''