diff mupdf-source/thirdparty/tesseract/src/viewer/svmnode.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/thirdparty/tesseract/src/viewer/svmnode.h	Mon Sep 15 11:43:07 2025 +0200
@@ -0,0 +1,104 @@
+///////////////////////////////////////////////////////////////////////
+// File:        svmnode.h
+// description_: ScrollView Menu Node
+// Author:      Joern Wanke
+//
+// (C) Copyright 2007, Google Inc.
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+///////////////////////////////////////////////////////////////////////
+//
+// A SVMenuNode is an entity which contains the mapping from a menu entry on
+// the server side to the corresponding associated commands on the client.
+// It is designed to be a tree structure with a root node, which can then be
+// used to generate the appropriate messages to the server to display the
+// menu structure there.
+// A SVMenuNode can both be used in the context_ of popup menus as well as
+// menu bars.
+
+#ifndef TESSERACT_VIEWER_SVMNODE_H_
+#define TESSERACT_VIEWER_SVMNODE_H_
+
+#ifndef GRAPHICS_DISABLED
+
+#include <tesseract/export.h>
+
+#include <string>
+
+namespace tesseract {
+
+class ScrollView;
+
+class TESS_API SVMenuNode {
+public:
+  // Creating the (empty) root menu node.
+  SVMenuNode();
+
+  // Destructor for every node.
+  ~SVMenuNode();
+
+  // Create a new sub menu node with just a caption.  This is used to create
+  // nodes which act as parent nodes to other nodes (e.g. submenus).
+  SVMenuNode *AddChild(const char *txt);
+
+  // Create a "normal" menu node which is associated with a command event.
+  void AddChild(const char *txt, int command_event);
+
+  // Create a flag menu node.
+  void AddChild(const char *txt, int command_event, int tv);
+
+  // Create a menu node with an associated value (which might be changed
+  // through the gui).
+  void AddChild(const char *txt, int command_event, const char *val);
+
+  // Create a menu node with an associated value and description_.
+  void AddChild(const char *txt, int command_event, const char *val, const char *desc);
+
+  // Build a menu structure for the server and send the necessary messages.
+  // Should be called on the root node. If menu_bar is true, a menu_bar menu
+  // is built (e.g. on top of the window), if it is false a popup menu is
+  // built which gets shown by right clicking on the window.
+  void BuildMenu(ScrollView *sv, bool menu_bar = true);
+
+private:
+  // Constructor holding the actual node data.
+  SVMenuNode(int command_event, const char *txt, int tv, bool check_box_entry, const char *val = "",
+             const char *desc = "");
+
+  // Adds a new menu node to the current node.
+  void AddChild(SVMenuNode *svmn);
+
+  // The parent node of this node.
+  SVMenuNode *parent_;
+  // The first child of this node.
+  SVMenuNode *child_;
+  // The next "sibling" of this node (e.g. same parent).
+  SVMenuNode *next_;
+  // Whether this menu node actually is a flag.
+  bool is_check_box_entry_;
+  // The value of the flag (if this menu node is a flag).
+  bool toggle_value_;
+
+  // The command event associated with a specific menu node. Should be unique.
+  int cmd_event_;
+  // The caption associated with a specific menu node.
+  std::string text_;
+  // The value of the menu node. (optional)
+   std::string value_;
+  // A description_ of the value. (optional)
+   std::string description_;
+};
+
+} // namespace tesseract
+
+#endif // !GRAPHICS_DISABLED
+
+#endif // TESSERACT_VIEWER_SVMNODE_H_