diff options
Diffstat (limited to 'libs/widgets/widgets')
-rw-r--r-- | libs/widgets/widgets/ardour_button.h | 221 | ||||
-rw-r--r-- | libs/widgets/widgets/ardour_display.h | 55 | ||||
-rw-r--r-- | libs/widgets/widgets/ardour_dropdown.h | 60 | ||||
-rw-r--r-- | libs/widgets/widgets/ardour_knob.h | 133 | ||||
-rw-r--r-- | libs/widgets/widgets/ardour_spacer.h | 53 | ||||
-rw-r--r-- | libs/widgets/widgets/ardour_spinner.h | 73 | ||||
-rw-r--r-- | libs/widgets/widgets/tooltips.h | 41 | ||||
-rw-r--r-- | libs/widgets/widgets/ui_config.h | 31 | ||||
-rw-r--r-- | libs/widgets/widgets/visibility.h | 45 |
9 files changed, 712 insertions, 0 deletions
diff --git a/libs/widgets/widgets/ardour_button.h b/libs/widgets/widgets/ardour_button.h new file mode 100644 index 0000000000..a51575e616 --- /dev/null +++ b/libs/widgets/widgets/ardour_button.h @@ -0,0 +1,221 @@ +/* + Copyright (C) 2010 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef _WIDGETS_ARDOUR_BUTTON_H_ +#define _WIDGETS_ARDOUR_BUTTON_H_ + +#include <list> +#include <stdint.h> + +#include <gtkmm/action.h> + +#include "pbd/signals.h" +#include "gtkmm2ext/ardour_icon.h" +#include "gtkmm2ext/binding_proxy.h" +#include "gtkmm2ext/activatable.h" +#include "gtkmm2ext/cairo_widget.h" + +#include "widgets/visibility.h" + +namespace ArdourWidgets { + +class LIBWIDGETS_API ArdourButton : public CairoWidget , public Gtkmm2ext::Activatable +{ + public: + enum Element { + Edge = 0x1, + Body = 0x2, + Text = 0x4, + Indicator = 0x8, + unused = 0x10, + Menu = 0x20, + Inactive = 0x40, // no _action is defined AND state is not used + VectorIcon = 0x80, + IconRenderCallback = 0x100, + }; + + typedef void (* rendercallback_t) (cairo_t*, int, int, uint32_t, void*); + + static Element default_elements; + static Element led_default_elements; + static Element just_led_default_elements; + + ArdourButton (Element e = default_elements); + ArdourButton (const std::string&, Element e = default_elements); + virtual ~ArdourButton (); + + enum Tweaks { + Square = 0x1, + TrackHeader = 0x2, + OccasionalText = 0x4, + unused4 = 0x8, + }; + + Tweaks tweaks() const { return _tweaks; } + void set_tweaks (Tweaks); + + void set_active_state (Gtkmm2ext::ActiveState); + void set_visual_state (Gtkmm2ext::VisualState); + + void set_custom_led_color (const uint32_t c, const bool useit = true); + + void set_act_on_release (bool onRelease) { _act_on_release = onRelease; } + + Element elements() const { return _elements; } + void set_elements (Element); + void add_elements (Element); + + Gtkmm2ext::ArdourIcon::Icon icon() const { return _icon; } + void set_icon (Gtkmm2ext::ArdourIcon::Icon); + void set_icon (rendercallback_t, void*); + + void set_corner_radius (float); + + void set_text (const std::string&, bool markup = false); + const std::string& get_text () { return _text; } + bool get_markup () const { return _markup; } + void set_angle (const double); + void set_alignment (const float, const float); + void get_alignment (float& xa, float& ya) {xa = _xalign; ya = _yalign;}; + + void set_led_left (bool yn); + void set_distinct_led_click (bool yn); + + void set_layout_ellipsize_width (int w); + void set_layout_font (const Pango::FontDescription&); + void set_text_ellipsize (Pango::EllipsizeMode); + + /* Sets the text used for size request computation. Pass an + * empty string to return to the default behavior which uses + * the currently displayed text for measurement. */ + void set_sizing_text (const std::string&); + const std::string& get_sizing_text () {return _sizing_text;} + + sigc::signal<void, GdkEventButton*> signal_led_clicked; + sigc::signal<void> signal_clicked; + + boost::shared_ptr<PBD::Controllable> get_controllable() { return binding_proxy.get_controllable(); } + void set_controllable (boost::shared_ptr<PBD::Controllable> c); + void watch (); + + void set_related_action (Glib::RefPtr<Gtk::Action>); + + bool on_button_press_event (GdkEventButton*); + bool on_button_release_event (GdkEventButton*); + + void set_image (const Glib::RefPtr<Gdk::Pixbuf>&); + + void set_fixed_colors (const uint32_t active_color, const uint32_t inactive_color); + void set_active_color (const uint32_t active_color); + void set_inactive_color (const uint32_t inactive_color); + + void set_fallthrough_to_parent(bool fall) { _fallthrough_to_parent = fall; } + + unsigned int char_pixel_width() { if (_char_pixel_width < 1) recalc_char_pixel_geometry() ; return _char_pixel_width; } + unsigned int char_pixel_height() { if (_char_pixel_height < 1) recalc_char_pixel_geometry() ; return _char_pixel_height; } + float char_avg_pixel_width() { if (_char_pixel_width < 1) recalc_char_pixel_geometry() ; return _char_avg_pixel_width; } + + protected: + void render (Cairo::RefPtr<Cairo::Context> const&, cairo_rectangle_t*); + void on_size_request (Gtk::Requisition* req); + void on_size_allocate (Gtk::Allocation&); + void on_style_changed (const Glib::RefPtr<Gtk::Style>&); + void on_name_changed (); + void on_realize (); + bool on_enter_notify_event (GdkEventCrossing*); + bool on_leave_notify_event (GdkEventCrossing*); + bool on_grab_broken_event(GdkEventGrabBroken*); + bool on_focus_in_event (GdkEventFocus*); + bool on_focus_out_event (GdkEventFocus*); + bool on_key_release_event (GdkEventKey *); + bool on_key_press_event (GdkEventKey *); + + void controllable_changed (); + PBD::ScopedConnection watch_connection; + + protected: + Glib::RefPtr<Pango::Layout> _layout; + Glib::RefPtr<Gdk::Pixbuf> _pixbuf; + std::string _text; + std::string _sizing_text; + bool _markup; + Element _elements; + Gtkmm2ext::ArdourIcon::Icon _icon; + rendercallback_t _icon_render_cb; + void* _icon_render_cb_data; + Tweaks _tweaks; + BindingProxy binding_proxy; + + void set_text_internal (); + void recalc_char_pixel_geometry (); + unsigned int _char_pixel_width; + unsigned int _char_pixel_height; + float _char_avg_pixel_width; + + int _text_width; + int _text_height; + float _diameter; + float _corner_radius; + int _corner_mask; + + double _angle; + float _xalign, _yalign; + + uint32_t fill_inactive_color; + uint32_t fill_active_color; + + uint32_t text_active_color; + uint32_t text_inactive_color; + + uint32_t led_active_color; + uint32_t led_inactive_color; + uint32_t led_custom_color; + bool use_custom_led_color; + + cairo_pattern_t* convex_pattern; + cairo_pattern_t* concave_pattern; + cairo_pattern_t* led_inset_pattern; + cairo_rectangle_t* _led_rect; + + bool _act_on_release; + bool _led_left; + bool _distinct_led_click; + bool _hovering; + bool _focused; + int _fixed_colors_set; + bool _fallthrough_to_parent; + int _layout_ellipsize_width; + Pango::EllipsizeMode _ellipsis; + bool _update_colors; + int _pattern_height; + + void setup_led_rect (); + void set_colors (); + void color_handler (); + void build_patterns (); + void ensure_layout (); + + void action_toggled (); + void action_sensitivity_changed (); + void action_visibility_changed (); + void action_tooltip_changed (); +}; + +} /* end namespace */ + +#endif diff --git a/libs/widgets/widgets/ardour_display.h b/libs/widgets/widgets/ardour_display.h new file mode 100644 index 0000000000..c8d566cd85 --- /dev/null +++ b/libs/widgets/widgets/ardour_display.h @@ -0,0 +1,55 @@ +/* + Copyright (C) 2014 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef _WIDGETS_ARDOUR_DISPLAY_H_ +#define _WIDGETS_ARDOUR_DISPLAY_H_ + +#include <list> +#include <stdint.h> + +#include <gtkmm/action.h> +#include <gtkmm/menu.h> +#include <gtkmm/menuitem.h> + +#include "widgets/ardour_dropdown.h" +#include "widgets/visibility.h" + +namespace ArdourWidgets { + +class LIBWIDGETS_API ArdourDisplay : public ArdourWidgets::ArdourDropdown +{ +public: + + ArdourDisplay (Element e = default_elements); + virtual ~ArdourDisplay (); + + boost::shared_ptr<PBD::Controllable> get_controllable() { return binding_proxy.get_controllable(); } + void set_controllable (boost::shared_ptr<PBD::Controllable> c); + + bool on_scroll_event (GdkEventScroll* ev); + + void add_controllable_preset (const char*, float); + void handle_controllable_preset (float p); + + void controllable_changed (); + PBD::ScopedConnection watch_connection; +}; + +} /* end namespace */ + +#endif /* __gtk2_ardour_ardour_menu_h__ */ diff --git a/libs/widgets/widgets/ardour_dropdown.h b/libs/widgets/widgets/ardour_dropdown.h new file mode 100644 index 0000000000..93e866d011 --- /dev/null +++ b/libs/widgets/widgets/ardour_dropdown.h @@ -0,0 +1,60 @@ +/* + Copyright (C) 2014 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef _WIDGETS_ARDOUR_DROPDOWN_H_ +#define _WIDGETS_ARDOUR_DROPDOWN_H_ + +#include <list> +#include <stdint.h> + +#include <gtkmm/action.h> +#include <gtkmm/menu.h> +#include <gtkmm/menuitem.h> + +#include "widgets/ardour_button.h" +#include "widgets/visibility.h" + +namespace ArdourWidgets { + +class LIBWIDGETS_API ArdourDropdown : public ArdourButton +{ +public: + + ArdourDropdown (Element e = default_elements); + virtual ~ArdourDropdown (); + + bool on_button_press_event (GdkEventButton*); + bool on_scroll_event (GdkEventScroll*); + void menu_size_request(Gtk::Requisition*); + + void clear_items (); + void AddMenuElem (Gtk::Menu_Helpers::Element e); + + void disable_scrolling(); + + Gtk::Menu_Helpers::MenuList& items () { return _menu.items (); } + +private: + Gtk::Menu _menu; + + bool _scrolling_disabled; +}; + +} /* end namespace */ + +#endif diff --git a/libs/widgets/widgets/ardour_knob.h b/libs/widgets/widgets/ardour_knob.h new file mode 100644 index 0000000000..84bb974adf --- /dev/null +++ b/libs/widgets/widgets/ardour_knob.h @@ -0,0 +1,133 @@ +/* + Copyright (C) 2014 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __gtk2_ardour_ardour_knob_h__ +#define __gtk2_ardour_ardour_knob_h__ + +#include <list> +#include <stdint.h> + +#include <gtkmm/action.h> + +#include "pbd/signals.h" + +#include "gtkmm2ext/binding_proxy.h" +#include "gtkmm2ext/activatable.h" +#include "gtkmm2ext/cairo_widget.h" +#include "gtkmm2ext/persistent_tooltip.h" + +#include "widgets/visibility.h" + +namespace ArdourWidgets { + +class LIBWIDGETS_API KnobPersistentTooltip : public Gtkmm2ext::PersistentTooltip +{ +public: + KnobPersistentTooltip (Gtk::Widget* w); + + void start_drag (); + void stop_drag (); + bool dragging () const; + +private: + bool _dragging; +}; + + +class LIBWIDGETS_API ArdourKnob : public CairoWidget , public Gtkmm2ext::Activatable +{ +public: + + enum Element { + Arc = 0x1, + Bevel = 0x2, + unused2 = 0x4, + unused3 = 0x8, + unused4 = 0x10, + unused5 = 0x20, + }; + + enum Flags { + NoFlags = 0, + Detent = 0x1, + ArcToZero = 0x2, + }; + + ArdourKnob (Element e = default_elements, Flags flags = NoFlags); + virtual ~ArdourKnob (); + + void set_active_state (Gtkmm2ext::ActiveState); + void set_visual_state (Gtkmm2ext::VisualState); + + Element elements() const { return _elements; } + void set_elements (Element); + void add_elements (Element); + static Element default_elements; + + void set_tooltip_prefix (std::string pfx) { _tooltip_prefix = pfx; controllable_changed (true); } + + boost::shared_ptr<PBD::Controllable> get_controllable() { return binding_proxy.get_controllable(); } + void set_controllable (boost::shared_ptr<PBD::Controllable> c); + + bool on_button_press_event (GdkEventButton*); + bool on_button_release_event (GdkEventButton*); + bool on_scroll_event (GdkEventScroll* ev); + bool on_motion_notify_event (GdkEventMotion *ev) ; + + void color_handler (); + + protected: + void render (Cairo::RefPtr<Cairo::Context> const&, cairo_rectangle_t*); + void on_size_request (Gtk::Requisition* req); + void on_size_allocate (Gtk::Allocation&); + void on_style_changed (const Glib::RefPtr<Gtk::Style>&); + void on_name_changed (); + bool on_enter_notify_event (GdkEventCrossing*); + bool on_leave_notify_event (GdkEventCrossing*); + bool on_focus_in_event (GdkEventFocus*); + bool on_focus_out_event (GdkEventFocus*); + + void controllable_changed (bool force_update = false); + PBD::ScopedConnection watch_connection; + + + private: + Element _elements; + BindingProxy binding_proxy; + + bool _hovering; + float _grabbed_x; + float _grabbed_y; + + float _val; // current value [0..1] + float _normal; // default value, arc + float _dead_zone_delta; + + Flags _flags; + + void action_sensitivity_changed (); + void action_visibility_changed (); + void action_tooltip_changed (); + + std::string _tooltip_prefix; + KnobPersistentTooltip _tooltip; +}; + +} /* namespace */ + +#endif /* __gtk2_ardour_ardour_knob_h__ */ diff --git a/libs/widgets/widgets/ardour_spacer.h b/libs/widgets/widgets/ardour_spacer.h new file mode 100644 index 0000000000..520ad670af --- /dev/null +++ b/libs/widgets/widgets/ardour_spacer.h @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2016 Robin Gareus <robin@gareus.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef _WIDGETS_ARDOUR_SPACER_H_ +#define _WIDGETS_ARDOUR_SPACER_H_ + +#include "gtkmm2ext/cairo_widget.h" + +#include "widgets/visibility.h" + +namespace ArdourWidgets { + +class LIBWIDGETS_API ArdourVSpacer : public CairoWidget +{ +public: + ArdourVSpacer (float r = 0.75f); + +protected: + void render (Cairo::RefPtr<Cairo::Context> const& ctx, cairo_rectangle_t* r) { + float h = r->height * ratio; + float t = .5f * (r->height - h); + ctx->rectangle (0, t, 1, h); + ctx->set_source_rgb (0, 0, 0); + ctx->fill (); + } + + void on_size_request (Gtk::Requisition* req) { + req->width = 1; + req->height = 0; + CairoWidget::on_size_request (req); + } + + float ratio; +}; + +} /* end namespace */ + +#endif diff --git a/libs/widgets/widgets/ardour_spinner.h b/libs/widgets/widgets/ardour_spinner.h new file mode 100644 index 0000000000..b0928fa432 --- /dev/null +++ b/libs/widgets/widgets/ardour_spinner.h @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2016 Robin Gareus <robin@gareus.org> + * Copyright (C) 2011 Paul Davis + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef _WIDGETS_ARDOUR_SPINNER_H_ +#define _WIDGETS_ARDOUR_SPINNER_H_ + +#include <boost/algorithm/string.hpp> +#include <gtkmm.h> + +#include "pbd/controllable.h" + +#include "widgets/ardour_button.h" +#include "widgets/visibility.h" + +namespace ArdourWidgets { + +class LIBWIDGETS_API ArdourSpinner : public Gtk::Alignment +{ + public: + ArdourSpinner (boost::shared_ptr<PBD::Controllable>, Gtk::Adjustment* adj); + + virtual ~ArdourSpinner (); + + protected: + bool on_button_press_event (GdkEventButton*); + bool on_button_release_event (GdkEventButton*); + bool on_scroll_event (GdkEventScroll* ev); + + void controllable_changed (); + PBD::ScopedConnection watch_connection; + + private: + + bool entry_focus_out (GdkEventFocus*); + void entry_activated (); + gint switch_to_button (); + gint switch_to_spinner (); + + void ctrl_adjusted(); + void spin_adjusted(); + + ArdourWidgets::ArdourButton _btn; + Gtk::Adjustment* _ctrl_adj; + Gtk::Adjustment _spin_adj; + Gtk::SpinButton _spinner; + bool _switching; + bool _switch_on_release; + bool _ctrl_ignore; + bool _spin_ignore; + + boost::shared_ptr<PBD::Controllable> _controllable; + +}; + +} /* end namespace */ + +#endif diff --git a/libs/widgets/widgets/tooltips.h b/libs/widgets/widgets/tooltips.h new file mode 100644 index 0000000000..1a75e1c5eb --- /dev/null +++ b/libs/widgets/widgets/tooltips.h @@ -0,0 +1,41 @@ +/* + Copyright (C) 2014 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifndef _WIDGETS_TOOLTIPS_H_ +#define _WIDGETS_TOOLTIPS_H_ + +#include <string> + +namespace Gtk { + class Widget; +} + +#include "widgets/visibility.h" + +namespace ArdourWidgets { + +extern LIBWIDGETS_API void set_tooltip (Gtk::Widget& w, const std::string& text); + +extern LIBWIDGETS_API void set_tooltip (Gtk::Widget* w, const std::string& text); + +extern LIBWIDGETS_API void set_tooltip (Gtk::Widget* w, const std::string& text, const std::string& help_text); + +} + +#endif diff --git a/libs/widgets/widgets/ui_config.h b/libs/widgets/widgets/ui_config.h new file mode 100644 index 0000000000..4087dae192 --- /dev/null +++ b/libs/widgets/widgets/ui_config.h @@ -0,0 +1,31 @@ +#ifndef _WIDGETS_UI_BASE_H_ +#define _WIDGETS_UI_BASE_H_ + +#include <cassert> + +#include "pbd/stateful.h" +#include "canvas/colors.h" + +#include "widgets/visibility.h" + +namespace ArdourWidgets { + +class LIBWIDGETS_API UIConfigurationBase : public PBD::Stateful +{ +protected: + virtual ~UIConfigurationBase() { _instance = 0; } + static UIConfigurationBase* _instance; + +public: + static UIConfigurationBase& instance() { return *_instance; } + + sigc::signal<void> DPIReset; + sigc::signal<void> ColorsChanged; + + virtual float get_ui_scale () = 0; + virtual bool get_widget_prelight () const = 0; + virtual ArdourCanvas::Color color (const std::string&, bool* failed = 0) const = 0; +}; + +} +#endif diff --git a/libs/widgets/widgets/visibility.h b/libs/widgets/widgets/visibility.h new file mode 100644 index 0000000000..e12f2522ab --- /dev/null +++ b/libs/widgets/widgets/visibility.h @@ -0,0 +1,45 @@ +/* + Copyright (C) 2013 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifndef __libwidgets_visibility_h__ +#define __libwidgets_visibility_h__ + +#if defined(COMPILER_MSVC) + #define LIBWIDGETS_DLL_IMPORT __declspec(dllimport) + #define LIBWIDGETS_DLL_EXPORT __declspec(dllexport) + #define LIBWIDGETS_DLL_LOCAL +#else + #define LIBWIDGETS_DLL_IMPORT __attribute__ ((visibility ("default"))) + #define LIBWIDGETS_DLL_EXPORT __attribute__ ((visibility ("default"))) + #define LIBWIDGETS_DLL_LOCAL __attribute__ ((visibility ("hidden"))) +#endif + +#ifdef LIBWIDGETS_STATIC // libwidgets is not a DLL +#define LIBWIDGETS_API +#define LIBWIDGETS_LOCAL +#else + #ifdef LIBWIDGETS_DLL_EXPORTS // defined if we are building the libwidgets DLL (instead of using it) + #define LIBWIDGETS_API LIBWIDGETS_DLL_EXPORT + #else + #define LIBWIDGETS_API LIBWIDGETS_DLL_IMPORT + #endif + #define LIBWIDGETS_LOCAL LIBWIDGETS_DLL_LOCAL +#endif + +#endif /* __libwidgets_visibility_h__ */ |