summaryrefslogtreecommitdiff
path: root/fluid/Fd_Snap_Action.h
diff options
context:
space:
mode:
authorMatthias Melcher <github@matthiasm.com>2025-03-07 16:34:35 +0100
committerMatthias Melcher <github@matthiasm.com>2025-03-07 16:34:48 +0100
commit1985aefc0e502048f92b91beef87c0dfbe669fed (patch)
treeaf62874def4590e437a47784b4428d975ceb262f /fluid/Fd_Snap_Action.h
parent42a04c064d4b31c3a85210311f3ada163c406a25 (diff)
Restructuring Fluid source files.
Diffstat (limited to 'fluid/Fd_Snap_Action.h')
-rw-r--r--fluid/Fd_Snap_Action.h193
1 files changed, 0 insertions, 193 deletions
diff --git a/fluid/Fd_Snap_Action.h b/fluid/Fd_Snap_Action.h
deleted file mode 100644
index a7485c770..000000000
--- a/fluid/Fd_Snap_Action.h
+++ /dev/null
@@ -1,193 +0,0 @@
-//
-// Snap action header file for the Fast Light Tool Kit (FLTK).
-//
-// Copyright 2023 by Bill Spitzak and others.
-//
-// This library is free software. Distribution and use rights are outlined in
-// the file "COPYING" which should have been included with this file. If this
-// file is missing or damaged, see the license at:
-//
-// https://www.fltk.org/COPYING.php
-//
-// Please see the following page on how to report bugs and issues:
-//
-// https://www.fltk.org/bugs.php
-//
-
-#ifndef _FLUID_FD_SNAP_ACTION_H
-#define _FLUID_FD_SNAP_ACTION_H
-
-#include "fluid.h"
-#include "Fl_Window_Type.h"
-
-#include <string>
-
-struct Fl_Menu_Item;
-
-extern Fl_Menu_Item main_layout_submenu_[];
-
-/**
- \brief Collection of layout settings.
-
- Presets contain default fonts and font sizes for labels and text. They
- can be used to guide widget positions using margins, grids, and gap sizes.
- There are three Presets available in one Suite, marked "application",
- "dialog", and "toolbox".
- */
-class Fd_Layout_Preset {
-public:
- int left_window_margin; ///< gap between the window border and the widget
- int right_window_margin;
- int top_window_margin;
- int bottom_window_margin;
- int window_grid_x; ///< a regular grid across the window with its origin in the top left window corner
- int window_grid_y;
-
- int left_group_margin; ///< gap between the border of a widget and its parent group
- int right_group_margin;
- int top_group_margin;
- int bottom_group_margin;
- int group_grid_x; ///< a regular grid across the group with its origin in the top left group corner
- int group_grid_y;
-
- int top_tabs_margin; ///< preferred top edge tab size inside Fl_Tabs
- int bottom_tabs_margin; ///< preferred bottom edge tab size inside Fl_Tabs
-
- int widget_min_w; ///< minimum widget width
- int widget_inc_w; ///< widget width increments starting from widget_min_w
- int widget_gap_x; ///< preferred horizontal gap between widgets
- int widget_min_h;
- int widget_inc_h;
- int widget_gap_y;
-
- int labelfont; ///< preferred font for labels
- int labelsize; ///< preferred size for labels
- int textfont; ///< preferred font for text elements
- int textsize; ///< preferred size for text elements
-
- void write(Fl_Preferences &prefs);
- void read(Fl_Preferences &prefs);
- void write(Fd_Project_Writer*);
- void read(Fd_Project_Reader*);
-
- int textsize_not_null();
-};
-
-extern Fd_Layout_Preset *layout;
-
-/**
- \brief A collection of layout presets.
-
- A suite of layout presets is designed to cover various use cases when
- designing UI layouts for applications.
- There are three Presets available in one Suite, marked "application",
- "dialog", and "toolbox".
- */
-class Fd_Layout_Suite {
-public:
- char *name_; ///< name of the suite
- char *menu_label; ///< label text used in pulldown menu
- Fd_Layout_Preset *layout[3]; ///< presets for application, dialog, and toolbox windows
- Fd_Tool_Store storage_; ///< storage location (see FD_STORE_INTERNAL, etc.)
- void write(Fl_Preferences &prefs);
- void read(Fl_Preferences &prefs);
- void write(Fd_Project_Writer*);
- void read(Fd_Project_Reader*);
- void update_label();
- void storage(Fd_Tool_Store s) { storage_ = s; update_label(); }
- void name(const char *n);
- void init();
- ~Fd_Layout_Suite();
-public:
-
-};
-
-/**
- \brief Manage all layout suites that are available to the user.
-
- FLUID has two built-in suites. More suites can be cloned or added and stored
- as a user preference, as part of an .fl project file, or in a separate file
- for import/export and sharing.
- */
-class Fd_Layout_List {
-public:
- Fl_Menu_Item *main_menu_;
- Fl_Menu_Item *choice_menu_;
- Fd_Layout_Suite *list_;
- int list_size_;
- int list_capacity_;
- bool list_is_static_;
- int current_suite_;
- int current_preset_;
- std::string filename_;
-public:
- Fd_Layout_List();
- ~Fd_Layout_List();
- void update_dialogs();
- void update_menu_labels();
- int current_suite() const { return current_suite_; }
- void current_suite(int ix);
- void current_suite(std::string);
- int current_preset() const { return current_preset_; }
- void current_preset(int ix);
- Fd_Layout_Suite &operator[](int ix) { return list_[ix]; }
- int add(const char *name);
- void rename(const char *name);
- void capacity(int);
-
- int load(const std::string &filename);
- int save(const std::string &filename);
- void write(Fl_Preferences &prefs, Fd_Tool_Store storage);
- void read(Fl_Preferences &prefs, Fd_Tool_Store storage);
- void write(Fd_Project_Writer*);
- void read(Fd_Project_Reader*);
- int add(Fd_Layout_Suite*);
- void remove(int index);
- void remove_all(Fd_Tool_Store storage);
- Fd_Layout_Preset *at(int);
- int size();
-};
-
-extern Fd_Layout_List g_layout_list;
-
-/**
- \brief Structure holding all the data to perform interactive alignment operations.
- */
-typedef struct Fd_Snap_Data {
- int dx, dy; ///< distance of the mouse from its initial PUSH event
- int bx, by, br, bt; ///< bounding box of the original push event or current bounding box when drawing
- int drag; ///< drag event mask
- int x_dist, y_dist; ///< current closest snapping distance in x and y
- int dx_out, dy_out; ///< current closest snapping point as a delta
- Fl_Widget_Type *wgt; ///< first selected widget
- Fl_Window_Type *win; ///< window that handles the drag action
- int ex_out, ey_out; ///< chosen snap position
-} Fd_Snap_Data;
-
-/**
- \brief Find points of interest when moving the bounding box of all selected widgets.
- */
-class Fd_Snap_Action {
-protected:
- int check_x_(Fd_Snap_Data &d, int x_ref, int x_snap);
- int check_y_(Fd_Snap_Data &d, int y_ref, int y_snap);
- void check_x_y_(Fd_Snap_Data &d, int x_ref, int x_snap, int y_ref, int y_snap);
- void clr() { ex = dx = 0x7fff; }
-public:
- int ex, ey, dx, dy, type, mask;
- Fd_Snap_Action() : ex(0x7fff), ey(0x7fff), dx(128), dy(128), type(0), mask(0) { }
- virtual ~Fd_Snap_Action() { }
- virtual void check(Fd_Snap_Data &d) = 0;
- virtual void draw(Fd_Snap_Data &d) { }
- virtual bool matches(Fd_Snap_Data &d);
-public:
- static int eex, eey;
- static Fd_Snap_Action *list[];
- static void check_all(Fd_Snap_Data &d);
- static void draw_all(Fd_Snap_Data &d);
- static void get_resize_stepsize(int &x_step, int &y_step);
- static void get_move_stepsize(int &x_step, int &y_step);
- static void better_size(int &w, int &h);
-};
-
-#endif // _FLUID_FD_SNAP_ACTION_H