diff mupdf-source/include/mupdf/pdf/event.h @ 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/include/mupdf/pdf/event.h	Mon Sep 15 11:43:07 2025 +0200
@@ -0,0 +1,167 @@
+// Copyright (C) 2004-2022 Artifex Software, Inc.
+//
+// This file is part of MuPDF.
+//
+// MuPDF is free software: you can redistribute it and/or modify it under the
+// terms of the GNU Affero General Public License as published by the Free
+// Software Foundation, either version 3 of the License, or (at your option)
+// any later version.
+//
+// MuPDF is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+// details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with MuPDF. If not, see <https://www.gnu.org/licenses/agpl-3.0.en.html>
+//
+// Alternative licensing terms are available from the licensor.
+// For commercial licensing, see <https://www.artifex.com/> or contact
+// Artifex Software, Inc., 39 Mesa Street, Suite 108A, San Francisco,
+// CA 94129, USA, for further information.
+
+#ifndef MUPDF_PDF_EVENT_H
+#define MUPDF_PDF_EVENT_H
+
+#include "mupdf/pdf/document.h"
+
+/*
+	Document events: the objects via which MuPDF informs the calling app
+	of occurrences emanating from the document, possibly from user interaction
+	or javascript execution. MuPDF informs the app of document events via a
+	callback.
+*/
+
+struct pdf_doc_event
+{
+	int type;
+};
+
+enum
+{
+	PDF_DOCUMENT_EVENT_ALERT,
+	PDF_DOCUMENT_EVENT_PRINT,
+	PDF_DOCUMENT_EVENT_LAUNCH_URL,
+	PDF_DOCUMENT_EVENT_MAIL_DOC,
+	PDF_DOCUMENT_EVENT_SUBMIT,
+	PDF_DOCUMENT_EVENT_EXEC_MENU_ITEM,
+};
+
+/*
+	set the function via which to receive
+	document events.
+*/
+void pdf_set_doc_event_callback(fz_context *ctx, pdf_document *doc, pdf_doc_event_cb *event_cb, pdf_free_doc_event_data_cb *free_event_data_cb, void *data);
+void *pdf_get_doc_event_callback_data(fz_context *ctx, pdf_document *doc);
+
+/*
+	The various types of document events
+*/
+
+/*
+	details of an alert event. In response the app should
+	display an alert dialog with the buttons specified by "button_type_group".
+	If "check_box_message" is non-NULL, a checkbox should be displayed in
+	the lower-left corned along with the message.
+
+	"finally_checked" and "button_pressed" should be set by the app
+	before returning from the callback. "finally_checked" need be set
+	only if "check_box_message" is non-NULL.
+*/
+typedef struct
+{
+	pdf_document *doc;
+	const char *message;
+	int icon_type;
+	int button_group_type;
+	const char *title;
+	int has_check_box;
+	const char *check_box_message;
+	int initially_checked;
+	int finally_checked;
+	int button_pressed;
+} pdf_alert_event;
+
+/* Possible values of icon_type */
+enum
+{
+	PDF_ALERT_ICON_ERROR,
+	PDF_ALERT_ICON_WARNING,
+	PDF_ALERT_ICON_QUESTION,
+	PDF_ALERT_ICON_STATUS
+};
+
+/* Possible values of button_group_type */
+enum
+{
+	PDF_ALERT_BUTTON_GROUP_OK,
+	PDF_ALERT_BUTTON_GROUP_OK_CANCEL,
+	PDF_ALERT_BUTTON_GROUP_YES_NO,
+	PDF_ALERT_BUTTON_GROUP_YES_NO_CANCEL
+};
+
+/* Possible values of button_pressed */
+enum
+{
+	PDF_ALERT_BUTTON_NONE,
+	PDF_ALERT_BUTTON_OK,
+	PDF_ALERT_BUTTON_CANCEL,
+	PDF_ALERT_BUTTON_NO,
+	PDF_ALERT_BUTTON_YES
+};
+
+/*
+	access the details of an alert event
+	The returned pointer and all the data referred to by the
+	structure are owned by mupdf and need not be freed by the
+	caller.
+*/
+pdf_alert_event *pdf_access_alert_event(fz_context *ctx, pdf_doc_event *evt);
+
+/*
+	access the details of am execMenuItem
+	event, which consists of just the name of the menu item
+*/
+const char *pdf_access_exec_menu_item_event(fz_context *ctx, pdf_doc_event *evt);
+
+/*
+	details of a launch-url event. The app should
+	open the url, either in a new frame or in the current window.
+*/
+typedef struct
+{
+	const char *url;
+	int new_frame;
+} pdf_launch_url_event;
+
+/*
+	access the details of a launch-url
+	event. The returned pointer and all data referred to by the structure
+	are owned by mupdf and need not be freed by the caller.
+*/
+pdf_launch_url_event *pdf_access_launch_url_event(fz_context *ctx, pdf_doc_event *evt);
+
+/*
+	details of a mail_doc event. The app should save
+	the current state of the document and email it using the specified
+	parameters.
+*/
+typedef struct
+{
+	int ask_user;
+	const char *to;
+	const char *cc;
+	const char *bcc;
+	const char *subject;
+	const char *message;
+} pdf_mail_doc_event;
+
+pdf_mail_doc_event *pdf_access_mail_doc_event(fz_context *ctx, pdf_doc_event *evt);
+
+void pdf_event_issue_alert(fz_context *ctx, pdf_document *doc, pdf_alert_event *evt);
+void pdf_event_issue_print(fz_context *ctx, pdf_document *doc);
+void pdf_event_issue_exec_menu_item(fz_context *ctx, pdf_document *doc, const char *item);
+void pdf_event_issue_launch_url(fz_context *ctx, pdf_document *doc, const char *url, int new_frame);
+void pdf_event_issue_mail_doc(fz_context *ctx, pdf_document *doc, pdf_mail_doc_event *evt);
+
+#endif