dpi_demo.f90 Source File


Source Code

program dpi_demo
    !! Demonstrate DPI support in FortPlot's OO interface
    !! Shows how to use DPI parameter with figure initialization and property access
    use, intrinsic :: iso_fortran_env, only: wp => real64
    use fortplot_figure, only: figure_t
    implicit none

    type(figure_t) :: fig1, fig2, fig3
    real(wp), parameter :: pi = 3.14159265358979323846_wp
    real(wp) :: x(100), y(100)
    integer :: i

    print *, "FortPlot DPI Demo"
    print *, "================="

    ! Generate sample data
    do i = 1, 100
        x(i) = 2.0_wp * pi * real(i-1, wp) / 99.0_wp
        y(i) = sin(x(i)) * exp(-x(i) / (2.0_wp * pi))
    end do

    ! Example 1: Default DPI (100)
    print *, "Creating figure with default DPI (100)..."
    call fig1%initialize(width=800, height=600)
    call fig1%plot(x, y)
    call fig1%set_title("Default DPI (100)")
    call fig1%set_xlabel("x")
    call fig1%set_ylabel("sin(x) * exp(-x/(2π))")
    print *, "DPI:", fig1%get_dpi()
    call fig1%savefig("dpi_demo_default.png")

    ! Example 2: High DPI (300)
    print *, "Creating figure with high DPI (300)..."
    call fig2%initialize(width=800, height=600, dpi=300.0_wp)
    call fig2%plot(x, y)
    call fig2%set_title("High DPI (300)")
    call fig2%set_xlabel("x")
    call fig2%set_ylabel("sin(x) * exp(-x/(2π))")
    print *, "DPI:", fig2%get_dpi()
    call fig2%savefig("dpi_demo_high.png")

    ! Example 3: Low DPI (72)
    print *, "Creating figure with low DPI (72)..."
    call fig3%initialize(width=800, height=600, dpi=72.0_wp)
    call fig3%plot(x, y)
    call fig3%set_title("Low DPI (72)")
    call fig3%set_xlabel("x")
    call fig3%set_ylabel("sin(x) * exp(-x/(2π))")
    print *, "DPI:", fig3%get_dpi()
    call fig3%savefig("dpi_demo_low.png")

    ! Example 4: DPI property modification
    print *, "Demonstrating DPI property modification..."
    call fig1%set_dpi(150.0_wp)
    print *, "Modified fig1 DPI to:", fig1%get_dpi()
    call fig1%savefig("dpi_demo_modified.png")

    print *, "DPI demo completed!"
    print *, "Generated files:"
    print *, "  - dpi_demo_default.png  (DPI: 100)"
    print *, "  - dpi_demo_high.png     (DPI: 300)"
    print *, "  - dpi_demo_low.png      (DPI: 72)"
    print *, "  - dpi_demo_modified.png (DPI: 150)"

end program dpi_demo