added license GPL
[winnie] / src / wm.h
index e3f4040..e2e2487 100644 (file)
--- a/src/wm.h
+++ b/src/wm.h
@@ -1,35 +1,95 @@
+/*
+winnie - an experimental window system
+
+Copyright (C) 2013 Eleni Maria Stea
+
+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 3 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, see <http://www.gnu.org/licenses/>.
+
+Author: Eleni Maria Stea <elene.mst@gmail.com>
+*/
+
 #ifndef WM_H_
 #define WM_H_
 
 #include <list>
+
 #include "geom.h"
 #include "pixmap.h"
 
 class Window;
 
+bool init_window_manager();
+void destroy_window_manager(); 
+
 class WindowManager {
 private:
        std::list<Window*> windows;
+
        std::list<Rect> dirty_rects;
 
        int bg_color[3];
+       int frame_thickness;
+       int titlebar_thickness;
+       int frame_fcolor[3];
+       int frame_ucolor[3];
+
+       Window *root_win;
        Window *focused_win;
+       Window *grab_win;
 
        Pixmap mouse_cursor;
+       Pixmap *background;
+
+       void create_frame(Window *win);
+       void destroy_frame(Window *win);
 
 public:
        WindowManager();
+       ~WindowManager();
 
        void invalidate_region(const Rect &rect);
        void process_windows();
 
        void add_window(Window *win);
+       void remove_window(Window *win);
 
        void set_focused_window(Window *win);
        const Window *get_focused_window() const;
        Window *get_focused_window();
 
        Window *get_window_at_pos(int pointer_x, int pointer_y);
+       Window *get_root_window() const;
+
+       void set_focused_frame_color(int r, int g, int b);
+       void get_focused_frame_color(int *r, int *g, int *b) const;
+
+       void set_unfocused_frame_color(int r, int g, int b);
+       void get_unfocused_frame_color(int *r, int *g, int *b) const;
+
+       void set_background(const Pixmap *pixmap);
+       const Pixmap *get_background() const;
+
+       Window *get_grab_window() const;
+
+       void grab_mouse(Window *win);
+       void release_mouse();
+
+       void raise_window(Window *win);
+       void sink_window(Window *win);
+
+       void maximize_window(Window *win);
+       void unmaximize_window(Window *win);
 };
 
 extern WindowManager *wm;