"""Default chart-style constants and template aliases."""

from __future__ import annotations

from pathlib import Path

from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Emu, Inches, Pt

CHART_TYPES = {
    "clustered": XL_CHART_TYPE.COLUMN_CLUSTERED,
    "stacked": XL_CHART_TYPE.COLUMN_STACKED,
}

WATERFALL_TYPES = {"waterfall", "waterfall-funnel"}

DEFAULT_WATERFALL_START_COLOR = "#E7E6E6"
DEFAULT_WATERFALL_TOTAL_COLOR = "#4472C4"

DEFAULT_WATERFALL_CHART_BOX = (
    Inches(1.783),
    Inches(1.964),
    Inches(7.536),
    Inches(3.891),
)
DEFAULT_WATERFALL_PLOT_LAYOUT = {
    "x": 0.0119788067,
    "y": 0.0861222668,
    "w": 0.9760423865,
    "h": 0.8277554663,
}
DEFAULT_WATERFALL_LABEL_OFFSET_RATIO = 0.0669
DEFAULT_WATERFALL_CATEGORY_OFFSET_RATIO = 0.0165
DEFAULT_WATERFALL_VALUE_LABEL_HEIGHT = Emu(192088)
DEFAULT_WATERFALL_CATEGORY_LABEL_HEIGHT = Emu(212725)
DEFAULT_WATERFALL_LABEL_GAP = Emu(25600)
DEFAULT_WATERFALL_LABEL_MARGIN = Emu(25400)
DEFAULT_WATERFALL_CONNECTOR_OVERLAP = Emu(6000)
DEFAULT_WATERFALL_CONNECTOR_INSET = Emu(10000)
DEFAULT_WATERFALL_CONNECTOR_DASH_LENGTH = Emu(25000)
DEFAULT_WATERFALL_CONNECTOR_DASH_GAP = Emu(13000)
DEFAULT_WATERFALL_CONNECTOR_DOT_LENGTH = Emu(8000)
DEFAULT_WATERFALL_CONNECTOR_DOT_GAP = Emu(8000)
DEFAULT_WATERFALL_DLABEL_Y_OFFSET_RATIO = -0.0014238253
DEFAULT_WATERFALL_DLABEL_Y_OFFSET_RATIO_HORIZONTAL = -0.0030807147
DEFAULT_WATERFALL_DLABEL_INSIDE_OFFSET_RATIO = 0.23
DEFAULT_WATERFALL_DLABEL_OUTSIDE_OFFSET_RATIO = 0.7
DEFAULT_WATERFALL_DLABEL_OUTSIDE_TOP_RATIO = -0.40
DEFAULT_WATERFALL_DLABEL_OUTSIDE_BOTTOM_RATIO = 0.35
DEFAULT_WATERFALL_DLABEL_OUTSIDE_SPACING_RATIO = 0.35
DEFAULT_WATERFALL_DLABEL_MIN_INSIDE_RATIO = 0.15
DEFAULT_WATERFALL_LABEL_WIDTH_BASE = Inches(0.09)
DEFAULT_WATERFALL_LABEL_WIDTH_PER_CHAR = Inches(0.08)
DEFAULT_WATERFALL_SERIES_LABEL_INSET = Inches(0.2)
DEFAULT_WATERFALL_LABEL_FONT_SIZE = Pt(14)
DEFAULT_WATERFALL_TITLE_FONT_SIZE = Pt(18)
DEFAULT_WATERFALL_TITLE_HEIGHT = Inches(0.3)
DEFAULT_WATERFALL_TITLE_OFFSET = Inches(0.45)

DEFAULT_BAR_PLOT_LAYOUT = {
    "x": 0.0258577822,
    "y": 0.0301799187,
    "w": 0.9482844356,
    "h": 0.9396401625,
}
DEFAULT_BAR_CATEGORY_LABEL_OFFSET = Emu(-31750)
DEFAULT_BAR_LEGEND_LABEL_OFFSET = Emu(192088)
DEFAULT_BAR_LEGEND_LEFT_RATIO = 0.1526
DEFAULT_BAR_LEGEND_STEP_RATIO = 0.2627
DEFAULT_BAR_LEGEND_MARKER_LEFT_RATIO = 0.0766
DEFAULT_BAR_LEGEND_MARKER_STEP_RATIO = 0.2627
DEFAULT_BAR_AXIS_PADDING = 1.16
DEFAULT_BAR_TOTAL_LABEL_HEIGHT = Emu(192088)
DEFAULT_BAR_TOTAL_LABEL_OFFSET = Emu(180000)
DEFAULT_BAR_CATEGORY_LABEL_HEIGHT = Emu(165100)
DEFAULT_BAR_LEGEND_LABEL_HEIGHT = Emu(136525)
DEFAULT_BAR_LEGEND_MARKER_WIDTH = Emu(179388)
DEFAULT_BAR_LEGEND_MARKER_HEIGHT = Emu(133350)
DEFAULT_BAR_LEGEND_MARKER_Y_OFFSET = Emu(-8000)
DEFAULT_BAR_OVERLAY_BAND_EXTRA = Emu(0)
DEFAULT_BAR_TOTAL_LABEL_WIDTH = Emu(247650)
DEFAULT_BAR_CATEGORY_LABEL_WIDTH = Emu(349250)
DEFAULT_BAR_LEGEND_LABEL_WIDTH = Emu(463550)
DEFAULT_BAR_TOTAL_LABEL_FONT_SIZE = Pt(14)
DEFAULT_BAR_CATEGORY_LABEL_FONT_SIZE = Pt(12)
DEFAULT_BAR_LEGEND_LABEL_FONT_SIZE = Pt(10)
DEFAULT_BAR_DATA_LABEL_FONT_SIZE = Pt(14)
DEFAULT_BAR_DATA_LABEL_FORMAT = "0"
DEFAULT_BAR_SERIES_BORDER_COLOR = "#FFFFFF"
DEFAULT_BAR_SEGMENT_LABEL_WIDTH = Emu(149225)
DEFAULT_BAR_SEGMENT_LABEL_HEIGHT = Emu(242888)
DEFAULT_BAR_SEGMENT_LABEL_FONT_SIZE = Pt(14)
DEFAULT_BAR_SEGMENT_LABEL_OFFSET_RATIO = 0.25

REPO_ROOT = Path(__file__).resolve().parents[2]
CLEAN_SLIDES_TEMPLATE_PATH = REPO_ROOT / "ppt-template" / "clean-slides-template.pptx"
CLEAN_SLIDES_CONTENT_BOX = (
    Emu(554736),
    Emu(1710000),
    Emu(11082528),
    Emu(4743769),
)

EXPECTED_TEMPLATE_ALIASES: dict[str, Path] = {
    "clean-slides": CLEAN_SLIDES_TEMPLATE_PATH,
    "clean_slides": CLEAN_SLIDES_TEMPLATE_PATH,
    "clean-slides-template": CLEAN_SLIDES_TEMPLATE_PATH,
}
