package mg.dot.feufaro.pdf

import com.tom_roush.pdfbox.pdmodel.common.PDRectangle

actual data class PrintSettings actual constructor(
    actual val pageSize       : PageSize,
    actual val orientation    : PageOrientation,
    actual val markerHeight   : Float,
    actual val noteFontSize   : Float,
    actual val lyricFontSize  : Float,
    actual val noteLineH      : Float,
    actual val lyricLineH     : Float,
    actual val extraSylLineH  : Float,
    actual val adjustedMargin : Float,
    actual val interRowGap    : Float,
    actual val marginX        : Float,
    actual val marginY        : Float,
    actual val headerH        : Float,
    actual val nbGridOnMeasure: Int
) {
    val pdRectangle: PDRectangle
        get() {
            val base = when (pageSize) {
                PageSize.A4     -> PDRectangle.A4
                PageSize.A3     -> PDRectangle.A3
                PageSize.LETTER -> PDRectangle.LETTER
            }
            return if (orientation == PageOrientation.PORTRAIT) base
            else PDRectangle(base.height, base.width)
        }

    actual val pageWidth  : Float get() = pdRectangle.width
    actual val pageHeight : Float get() = pdRectangle.height
}

actual fun defaultPrintSettings(): PrintSettings = PrintSettings(
    pageSize       = PageSize.A4,
    orientation    = PageOrientation.PORTRAIT,
    markerHeight   = 16f,
    noteFontSize   = 12f,
    lyricFontSize  = 12.5f,
    noteLineH      = 17f,
    lyricLineH     = 15f,
    extraSylLineH  = 15f,
    adjustedMargin = 14f,
    interRowGap    = 22f,
    marginX        = 42.5f,
    marginY        = 42.5f,
    headerH        = 55f,
    nbGridOnMeasure = 0
)