#ifndef GNOMESCREENSAVER_H #define GNOMESCREENSAVER_H #include #include #include #include #include #include #include #include #include #include #include #include "gs-theme-window.h" class GnomeScreensaver { public: GnomeScreensaver(int *argc, char ***argv, bool (*configure_callback)(GnomeScreensaver &), bool (*expose_callback)(GnomeScreensaver &), bool (*update_callback)(GnomeScreensaver &), int32_t interval_msec); uint64_t getTicks(); void mainloop() { gtk_main(); } gboolean configureCB(GtkWidget *da, GdkEventConfigure *event); gboolean exposeCB(GtkWidget *da, GdkEventExpose *event); gboolean updateCB(); int getWidth() { return m_width; } int getHeight() { return m_height; } float getAspectRatio() { return m_aspect_ratio; } int getNumMonitors() { return m_n_monitors; } protected: GtkWidget *m_drawing_area; uint64_t m_start_msec; bool (*m_configure_callback)(GnomeScreensaver &); bool (*m_expose_callback)(GnomeScreensaver &); bool (*m_update_callback)(GnomeScreensaver &); int m_width, m_height; float m_aspect_ratio; int m_n_monitors; }; #endif /* GNOMESCREENSAVER_H */