diff mupdf-source/docs/examples/draw-device.js @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mupdf-source/docs/examples/draw-device.js	Mon Sep 15 11:43:07 2025 +0200
@@ -0,0 +1,54 @@
+// Use device interface to draw some graphics and save as a PNG.
+
+import * as mupdf from "mupdf"
+
+var font = new mupdf.Font("Times-Roman")
+var image = new mupdf.Image("huntingofthesnark.png")
+var path, text
+
+var pixmap = new mupdf.Pixmap(mupdf.ColorSpace.DeviceRGB, [ 0, 0, 500, 600 ], false)
+pixmap.clear(255)
+var device = new mupdf.DrawDevice(mupdf.Matrix.identity, pixmap)
+var transform = [ 2, 0, 0, 2, 0, 0 ]
+{
+	text = new mupdf.Text()
+	{
+		text.showString(font, [ 16, 0, 0, -16, 100, 30 ], "Hello, world!")
+		text.showString(font, [ 0, 16, 16, 0, 15, 100 ], "Hello, world!")
+	}
+	device.fillText(text, transform, mupdf.ColorSpace.DeviceGray, [ 0 ], 1)
+
+	path = new mupdf.Path()
+	{
+		path.moveTo(10, 10)
+		path.lineTo(90, 10)
+		path.lineTo(90, 90)
+		path.lineTo(10, 90)
+		path.closePath()
+	}
+	device.fillPath(path, false, transform, mupdf.ColorSpace.DeviceRGB, [ 1, 0, 0 ], 1)
+	device.strokePath(
+		path,
+		{ dashes: [ 5, 10 ], lineWidth: 3, lineCap: "Round" },
+		transform,
+		mupdf.ColorSpace.DeviceRGB,
+		[ 0, 0, 0 ],
+		1
+	)
+
+	path = new mupdf.Path()
+	{
+		path.moveTo(100, 100)
+		path.curveTo(150, 100, 200, 150, 200, 200)
+		path.curveTo(200, 300, 0, 300, 100, 100)
+		path.closePath()
+	}
+	device.clipPath(path, true, transform)
+	{
+		device.fillImage(image, Matrix.concat(transform, [ 300, 0, 0, 300, 0, 0 ]), 1)
+	}
+	device.popClip()
+}
+device.close()
+
+pixmap.saveAsPNG("out.png")