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

-- see lpdf-u3d.lua for comment

local trace_inclusion = false  trackers.register("figures.inclusion",  function(v) trace_inclusion = v end)

local report_u3d = logs.reporter("graphics","u3d")

local figures = figures

local nodeinjections  = backends.nodeinjections
local todimen         = string.todimen

-- maybe todo: backends.codeinjections.insertu3d

function figures.checkers.u3d(data)
    local dr, du, ds = data.request, data.used, data.status
    local width = todimen(dr.width or figures.defaultwidth)
    local height = todimen(dr.height or figures.defaultheight)
    local foundname = du.fullname
    dr.width, dr.height = width, height
    du.width, du.height, du.foundname = width, height, foundname
    if trace_inclusion then
        report_u3d("including u3d '%s': width %s, height %s",foundname,width,height)
    end
    context.startfoundexternalfigure(width .. "sp",height .. "sp")
    context(function()
        nodeinjections.insertu3d {
            foundname  = foundname,
            width      = width,
            height     = height,
            factor     = number.dimenfactors.bp,
            display    = dr.display,
            controls   = dr.controls,
            label      = dr.label,
        }
    end)
    context.stopfoundexternalfigure()
    return data
end

figures.includers.u3d = figures.includers.nongeneric

figures.registersuffix("u3d","u3d")
figures.registersuffix("prc","u3d")