summaryrefslogtreecommitdiff
path: root/tex/context/base/lpdf-swf.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/lpdf-swf.lua')
-rw-r--r--tex/context/base/lpdf-swf.lua109
1 files changed, 109 insertions, 0 deletions
diff --git a/tex/context/base/lpdf-swf.lua b/tex/context/base/lpdf-swf.lua
new file mode 100644
index 000000000..9fe0cd09f
--- /dev/null
+++ b/tex/context/base/lpdf-swf.lua
@@ -0,0 +1,109 @@
+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