summaryrefslogtreecommitdiff
path: root/tex/context/base/grph-raw.lua
blob: 62e96fcc9d7574f4d1260875d4746204a1a595e2 (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
if not modules then modules = { } end modules ['grph-raw'] = {
    version   = 1.001,
    comment   = "companion to grph-raw.mkiv",
    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
    copyright = "PRAGMA ADE / ConTeXt Development Team",
    license   = "see context related readme files"
}

-- This module is for Mojca, who wanted something like this for
-- her gnuplot project. It's somewhat premliminary code but it
-- works ok for that purpose.

local tonumber = tonumber

local report_bitmap = logs.reporter("graphics","bitmaps")

local context = context
local texsp   = tex.sp

function figures.bitmapimage(t)
    local data        = t.data
    local xresolution = tonumber(t.xresolution)
    local yresolution = tonumber(t.yresolution)
    if data and xresolution and yresolution then
        local width, height = t.width or "", t.height or ""
        local n = backends.nodeinjections.injectbitmap {
            xresolution = xresolution,
            yresolution = yresolution,
            width       = width  ~= "" and texsp(width)  or nil,
            height      = height ~= "" and texsp(height) or nil,
            data        = data,
            colorspace  = t.colorspace,
        }
        if n then
            context.hbox(n)
        else
            report_bitmap("format no supported by backend")
        end
    else
        report_bitmap("invalid specification")
    end
end

interfaces.implement {
    name      = "bitmapimage",
    actions   = figures.bitmapimage,
    arguments = {
        {
            { "data" },
            { "colorspace" },
            { "width" },
            { "height" },
            { "xresolution" },
            { "yresolution" },
        }
    }
}