summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/util-lib-imp-gm.lua
blob: d1ffde879039efa29af3b7b228e5472a5a451739 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
if not modules then modules = { } end modules ['util-lib-imp-gm'] = {
    version   = 1.001,
    comment   = "a mkiv swiglib module",
    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
    copyright = "PRAGMA ADE / ConTeXt Development Team",
    license   = "see context related readme files",
}

local graphicmagick     = utilities.graphicmagick or { }
utilities.graphicmagick = graphicmagick

local report_gm = logs.reporter("swiglib graphicsmagick")

local gm = swiglib("graphicsmagick.core")

if gm then
    report_gm("library loaded")
    -- inspect(table.sortedkeys(gm))
else
    return
end

local nofruns = 0

function graphicmagick.convert(specification)
    --
    nofruns = nofruns + 1
    statistics.starttiming(graphicmagick)
    --
    local inputname  = specification.inputname
    if not inputname or inputname == "" then
        report_gm("invalid run %s, no inputname specified",nofruns)
        statistics.stoptiming(graphicmagick)
        return false
    end
    local outputname = specification.outputname
    if not outputname or outputname == "" then
        outputname = file.replacesuffix(inputname,"pdf")
    end
    --
    if not lfs.isfile(inputname) then
        report_gm("invalid run %s, input file %a is not found",nofruns,inputname)
        statistics.stoptiming(graphicmagick)
        return false
    end
    --
    report_gm("run %s, input file %a, outputfile %a",nofruns,inputname,outputname)
    local magick_wand = gm.NewMagickWand()
    gm.MagickReadImage(magick_wand,inputname)
    gm.MagickWriteImage(magick_wand,outputname)
    gm.DestroyMagickWand(magick_wand)
    --
    statistics.stoptiming(graphicmagick)
end

function graphicmagick.statistics(report)
    local runtime = statistics.elapsedtime(graphicmagick)
    if report then
        report_gm("nofruns %s, runtime %s",nofruns,runtime)
    else
        return {
            runtime = runtime,
            nofruns = nofruns,
        }
    end
end

-- graphicmagick.convert { inputname = "t:/sources/hacker.jpg", outputname = "e:/tmp/hacker.png" }
-- graphicmagick.statistics(true)