X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fgtkmm2ext%2Fgtkmm2ext%2Futils.h;h=de9f7b765d86bfd9a36ed853fac815650230c140;hb=e279b9892b467aa823e253d97b6e9504cca0e252;hp=7dd6b2ad9db61be1e647926e79c2adfdc482f5f8;hpb=d880812c3a789bd62ba9427a7fb0704a8dff561f;p=ardour.git diff --git a/libs/gtkmm2ext/gtkmm2ext/utils.h b/libs/gtkmm2ext/gtkmm2ext/utils.h index 7dd6b2ad9d..de9f7b765d 100644 --- a/libs/gtkmm2ext/gtkmm2ext/utils.h +++ b/libs/gtkmm2ext/gtkmm2ext/utils.h @@ -15,27 +15,119 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __gtkmm2ext_utils_h__ #define __gtkmm2ext_utils_h__ -#include +#include +#include +#include + +#include +#include + +#include +#include +#include /* for WMDecoration */ +#include + +#include "gtkmm2ext/visibility.h" + +namespace Cairo { + class Context; +} + +namespace Gtk { + class ComboBoxText; + class Widget; + class Window; + class Paned; + class Menu; +} namespace Gtkmm2ext { - void init (); + LIBGTKMM2EXT_API void init (const char*); + + LIBGTKMM2EXT_API std::string fit_to_pixels (const std::string&, int pixel_width, Pango::FontDescription& font, int& actual_width, bool with_ellipses = false); + LIBGTKMM2EXT_API std::pair fit_to_pixels (cairo_t *, std::string, double); + LIBGTKMM2EXT_API int pixel_width (const std::string& str, Pango::FontDescription& font); - void set_size_request_to_display_given_text (Gtk::Widget &w, - const gchar *text, - gint hpadding, - gint vpadding); + LIBGTKMM2EXT_API void get_ink_pixel_size (Glib::RefPtr, + int& width, int& height); - template void deferred_delete (void *ptr) { + + LIBGTKMM2EXT_API void get_pixel_size (Glib::RefPtr, + int& width, int& height); + + LIBGTKMM2EXT_API void set_size_request_to_display_given_text (Gtk::Widget &w, + const gchar *text, + gint hpadding, + gint vpadding); + + LIBGTKMM2EXT_API void set_size_request_to_display_given_text (Gtk::Widget &w, + const std::vector&, + gint hpadding, + gint vpadding); + + LIBGTKMM2EXT_API Glib::RefPtr pixbuf_from_string (const std::string& name, + const Pango::FontDescription& font, + int clip_width, + int clip_height, + Gdk::Color fg); + + LIBGTKMM2EXT_API void set_popdown_strings (Gtk::ComboBoxText&, + const std::vector&); + + template LIBGTKMM2EXT_API void deferred_delete (void *ptr) { delete static_cast (ptr); } -}; -gint do_not_propagate (GdkEventButton*); + LIBGTKMM2EXT_API GdkWindow* get_paned_handle (Gtk::Paned& paned); + LIBGTKMM2EXT_API void set_decoration (Gtk::Window* win, Gdk::WMDecoration decor); + LIBGTKMM2EXT_API void set_treeview_header_as_default_label(Gtk::TreeViewColumn *c); + LIBGTKMM2EXT_API Glib::RefPtr get_bogus_drawable(); + LIBGTKMM2EXT_API void detach_menu (Gtk::Menu&); + + LIBGTKMM2EXT_API Glib::RefPtr window_to_draw_on (Gtk::Widget& w, Gtk::Widget** parent); + + LIBGTKMM2EXT_API bool possibly_translate_keyval_to_make_legal_accelerator (uint32_t& keyval); + LIBGTKMM2EXT_API uint32_t possibly_translate_legal_accelerator_to_real_key (uint32_t keyval); + + LIBGTKMM2EXT_API int physical_screen_height (Glib::RefPtr); + LIBGTKMM2EXT_API int physical_screen_width (Glib::RefPtr); + + LIBGTKMM2EXT_API void container_clear (Gtk::Container&); + + /* C++ API for rounded rectangles */ + + LIBGTKMM2EXT_API void rounded_rectangle (Cairo::RefPtr context, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_rectangle (Cairo::RefPtr context, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_left_rectangle (Cairo::RefPtr context, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_right_rectangle (Cairo::RefPtr context, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_half_rectangle (Cairo::RefPtr, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_bottom_half_rectangle (Cairo::RefPtr, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_right_half_rectangle (Cairo::RefPtr, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_left_half_rectangle (Cairo::RefPtr, double x, double y, double w, double h, double r=10); + + /* C API for rounded rectangles */ + + LIBGTKMM2EXT_API void rounded_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_left_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_right_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_bottom_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_right_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_left_half_rectangle (cairo_t* cr, double x, double y, double w, double h, double r=10); + + LIBGTKMM2EXT_API Gtk::Label* left_aligned_label (std::string const &); + + LIBGTKMM2EXT_API void set_no_tooltip_whatsoever (Gtk::Widget &); + LIBGTKMM2EXT_API void enable_tooltips (); + LIBGTKMM2EXT_API void disable_tooltips (); + + LIBGTKMM2EXT_API void convert_bgra_to_rgba (guint8 const *, guint8 * dst, int, int); +}; #endif /* __gtkmm2ext_utils_h__ */