<?php

use PhpOffice\PhpPresentation\PhpPresentation;
use PhpOffice\PhpPresentation\IOFactory;
use PhpOffice\PhpPresentation\Style\Color;
use PhpOffice\PhpPresentation\Style\Alignment;

use PhpOffice\PhpPresentation\DocumentLayout;
use PhpOffice\PhpPresentation\Slide;
use PhpOffice\PhpPresentation\Slide\Background\Image;
use PhpOffice\PhpPresentation\Style\Fill;

/**
 * add Rich Text Shape テキストボックスの追加
 * A4 Paper size by UNIT_PIXEL = 794 x 1123
 */
function addRTShape(
    PhpPresentation $pres,
    Slide $slide,
    int $intw, // 幅のピクセル数
    float $ypercent, // ボックスのY座標を、パーセントで。（50だとちょうど半分、中央の高さ）
    string $mes,
    int $size,
    string $h_alignment = Alignment::HORIZONTAL_CENTER,
    string $v_alignment = Alignment::VERTICAL_AUTO
) {
    $oLayout = $pres->getLayout();
    // $intw = 600;//(int)( ($oLayout->getCX($oLayout::UNIT_PIXEL) * 0.8));
    $inth = 100; // 固定値           (int)($oLayout->getCY($oLayout::UNIT_PIXEL));
    $intoffx = (int)(($oLayout->getCX($oLayout::UNIT_PIXEL) - $intw) / 2);
    $intoffy = (int)(($oLayout->getCY($oLayout::UNIT_PIXEL) * $ypercent / 100));
    // echo $oLayout->getCX($oLayout::UNIT_PIXEL) . " " . $intw . " " . $inth . " " . $intoffx . " " . $intoffy . "\n";

    $shape2 = $slide->createRichTextShape()
        ->setWidth($intw)  // 794px
        ->setHeight($inth) // 1123px
        ->setOffsetX($intoffx)
        ->setOffsetY($intoffy);
    $shape2->getActiveParagraph()
        ->getAlignment()
        ->setHorizontal($h_alignment)
        ->setVertical($v_alignment);

    $textRun2 = $shape2->createTextRun($mes);

    $textRun2->getFont()
        ->setName('ヒラギノ明朝 Pro W3') // TODO: Windowsの場合は変更が必要かも
        ->setBold(false)
        ->setSize($size)
        ->setColor(new Color('FF000000')); // 最初のFFは不透明度。そのあとRRGGBB
    $shape2->getActiveParagraph()->setLineSpacing(120); // 行間(Line Spacing)。100だとぴったり。150だと1.5倍

}

/**
 * $ary['title']
 * $ary['authors] = [ "著者1" , "著者2", ...]
 */
function addHSJ(PhpPresentation $pres, $ary)
{
    $pres->createSlide();
    $pres->setActiveSlideIndex($pres->getSlideCount() - 1);
    $slide = $pres->getActiveSlide();

    $w600 = (int)(382*600/794);
    $w576 = (int)(382*576/794);
    $w520 = (int)(382*520/794);

    addRTShape($pres, $slide, $w600, 12, "インタラクション2023", 11);
    addRTShape($pres, $slide, $w600, 17, "インタラクティブ発表賞（PC推薦）", 12);

    $authors = ""; //著者名
    $aindex = 0;
    if (count($ary['authors']) % 2 == 1) { //著者人数が奇数
        $authors .= $ary['authors'][0] . "殿\r\n"; //まず、筆頭著者を書く
        $aindex = 1;
    }
    for ($i = $aindex; $i < count($ary['authors']); $i += 2) {
        $authors .= $ary['authors'][$i] . "殿 　"; // 残りを2人ずつ書く
        $authors .= $ary['authors'][$i + 1] . "殿";
        $authors .= "\r\n";
    }
    $additionalline = 0;
    if (count($ary["authors"]) > 2) { //著者の行が増えたことを考慮し、本文をすこし下げる
        $additionalline = floor((count($ary["authors"]) - 1) / 2);
        // echo "additional " . $additionalline . "\n";
    }
    addRTShape($pres, $slide, $w600, 22 + $additionalline * 0.5, $authors, 10, Alignment::HORIZONTAL_CENTER, Alignment::VERTICAL_CENTER);
    addRTShape($pres, $slide, $w576, 34 + $additionalline * 2, "貴殿が本学会シンポジウム インタラクション2023において発表された" .
        "「{$ary['title']}」" .
        "は本シンポジウムプログラム委員会にて厳正な審査を行った結果新たなインタラクション研究の方向性を示すものであり" .
        "今後の情報処理分野の発展に寄与する優秀な発表として認められました\r\nよってここに表彰いたします", 9, Alignment::HORIZONTAL_GENERAL);

        // タイトルの長さによって、すこし下げる
        $title_additionalline = (mb_strlen($ary['title'])/20) ;

    addRTShape($pres, $slide, $w520, 65 + $additionalline + $title_additionalline*1.7, "令和５年３月１０日\r\n" .
        "一般社団法人 情報処理学会\r\n" .
        "インタラクション2023\r\n" .
        "大会委員長　寺田　努 \r\n" .
        "プログラム委員長　竹川 佳成\r\n" .
        "インタラクティブ発表委員長　生田 泰章\r\n", 9, Alignment::HORIZONTAL_RIGHT);

    return $slide; //あとで使うことがなければ、必要ない
}
