if not modules then modules = { } end modules ['lpdf-swf'] = { version = 1.001, comment = "companion to lpdf-ini.mkiv", author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", copyright = "PRAGMA ADE / ConTeXt Development Team", license = "see context related readme files" } -- The following code is based on tests by Luigi Scarso. His prototype -- was using tex code. This is the official implementation. local format = string.format local pdfconstant = lpdf.constant local pdfboolean = lpdf.boolean local pdfstring = lpdf.string local pdfunicode = lpdf.unicode local pdfdictionary = lpdf.dictionary local pdfarray = lpdf.array local pdfnull = lpdf.null local pdfreference = lpdf.reference function backends.pdf.helpers.insertswf(spec) local width, height, filename = spec.width, spec.height, spec.foundname local eref = backends.codeinjections.embedfile(filename) local flash = pdfdictionary { Subtype = pdfconstant("Flash"), Instances = pdfarray { pdfdictionary { Asset = eref, Params = pdfdictionary { Binding = pdfconstant("Foreground") } }, }, } local fref = pdfreference(pdf.immediateobj(tostring(flash))) local configuration = pdfdictionary { Configurations = pdfarray { fref }, Assets = pdfdictionary { Names = pdfarray { pdfstring(filename), eref, } }, } local cref = pdfreference(pdf.immediateobj(tostring(configuration))) local activation = pdfdictionary { Activation = pdfdictionary { Type = pdfconstant("RichMediaActivation"), Condition = pdfconstant("PO"), Configuration = fref, Animation = pdfdictionary { Subtype = pdfconstant("Linear"), Speed = 1, Playcount = 1, }, Deactivation = pdfdictionary { Type = pdfconstant("RichMediaDeactivation"), Condition = pdfconstant("XD"), }, Presentation = pdfdictionary { PassContextClick = false, Style = pdfconstant("Embedded"), Toolbar = false, NavigationPane = false, Transparent = true, Window = pdfdictionary { Type = pdfconstant("RichMediaWindow"), Width = pdfdictionary { Default = 100, Min = 100, Max = 100, }, Height = pdfdictionary { Default = 100, Min = 100, Max = 100, }, Position = pdfdictionary { Type = pdfconstant("RichMediaPosition"), HAlign = pdfconstant("Near"), VAlign = pdfconstant("Near"), HOffset = 0, VOffset = 0, } } } } } local aref = pdfreference(pdf.immediateobj(tostring(activation))) local annotation = pdfdictionary { Subtype = pdfconstant("RichMedia"), RichMediaContent = cref, RichMediaSettings = aref, } return annotation, nil, nil end