X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Fwindow.h;h=b5cc36055711f19362038984ca261aa18846f2f0;hb=9261ecb0ad85bdf8b21e17b7309ddaeb76a57d96;hp=25a12f7acb541687ee7bc084969d1d3e03b0cf22;hpb=981f0eab2195d34f7c186a2e3e891810e14ce5b4;p=winnie diff --git a/src/window.h b/src/window.h index 25a12f7..b5cc360 100644 --- a/src/window.h +++ b/src/window.h @@ -1,3 +1,24 @@ +/* +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 . + +Author: Eleni Maria Stea +*/ + #ifndef WINDOW_H_ #define WINDOW_H_ @@ -7,9 +28,16 @@ #include "event.h" class Window { +public: + enum State {STATE_NORMAL, STATE_MINIMIZED, STATE_MAXIMIZED, STATE_SHADED}; + private: char *title; + State state; + Rect rect; + Rect normal_rect; // normal state rectangle managed by the wm + Callbacks callbacks; std::vector children; @@ -38,7 +66,7 @@ public: */ void invalidate(); - void draw(const Rect &dirty_region); + void draw(Rect *dirty_region); void draw_children(const Rect &dirty_region); unsigned char *get_win_start_on_fb(); @@ -50,6 +78,8 @@ public: void set_focusable(bool focusable); bool get_focusable() const; + bool get_dirty() const; + void set_display_callback(DisplayFuncType func); void set_keyboard_callback(KeyboardFuncType func); void set_mouse_button_callback(MouseButtonFuncType func); @@ -70,6 +100,9 @@ public: const Window *get_parent() const; Window *get_parent(); + void set_state(State state); + State get_state() const; + // XXX remove if not needed friend class WindowManager; };