"""輝度マップ・ヒストグラム生成モジュール."""

from pathlib import Path

import matplotlib.pyplot as plt
import numpy


def plot_luminance_map(luminance: numpy.ndarray, output_path: str) -> None:
    """輝度画像をヒートマップとして保存する．

    Args:
        luminance: 輝度画像の NumPy 配列（H x W, float64）．
        output_path: 出力先ファイルパス（PNG）．
    """
    Path(output_path).parent.mkdir(parents=True, exist_ok=True)

    fig, ax = plt.subplots(figsize=(8, 6))
    im = ax.imshow(luminance, cmap="hot", interpolation="nearest")
    fig.colorbar(im, ax=ax, label="Luminance")
    ax.set_title("Luminance Map")
    ax.set_xlabel("X (px)")
    ax.set_ylabel("Y (px)")
    fig.tight_layout()
    fig.savefig(output_path, dpi=150)
    plt.close(fig)

    print(f"輝度マップを保存しました: {output_path}")


def plot_histogram(luminance: numpy.ndarray, output_path: str) -> None:
    """輝度ヒストグラムを生成して保存する．

    Args:
        luminance: 輝度画像の NumPy 配列（H x W, float64）．
        output_path: 出力先ファイルパス（PNG）．
    """
    Path(output_path).parent.mkdir(parents=True, exist_ok=True)

    fig, ax = plt.subplots(figsize=(8, 5))
    ax.hist(
        luminance.ravel(), bins=256, range=(0, 255), color="steelblue", edgecolor="none"
    )
    ax.set_title("Luminance Histogram")
    ax.set_xlabel("Luminance")
    ax.set_ylabel("Pixel Count")
    fig.tight_layout()
    fig.savefig(output_path, dpi=150)
    plt.close(fig)

    print(f"輝度ヒストグラムを保存しました: {output_path}")
