reflexion 0.1.40 → 0.1.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.doc/ext/reflex/native.cpp +2 -0
- data/.doc/ext/reflex/screen.cpp +53 -0
- data/.doc/ext/reflex/window.cpp +70 -12
- data/ChangeLog.md +15 -0
- data/VERSION +1 -1
- data/ext/reflex/native.cpp +2 -0
- data/ext/reflex/screen.cpp +55 -0
- data/ext/reflex/window.cpp +76 -13
- data/include/reflex/ruby/screen.h +40 -0
- data/include/reflex/screen.h +43 -0
- data/include/reflex/window.h +21 -3
- data/lib/reflex/screen.rb +21 -0
- data/lib/reflex/window.rb +3 -1
- data/lib/reflex.rb +1 -0
- data/reflex.gemspec +5 -8
- data/src/ios/screen.h +20 -0
- data/src/ios/screen.mm +62 -0
- data/src/ios/view_controller.h +2 -0
- data/src/ios/view_controller.mm +6 -0
- data/src/ios/window.h +1 -3
- data/src/ios/window.mm +38 -17
- data/src/osx/native_window.mm +10 -10
- data/src/osx/screen.h +21 -0
- data/src/osx/screen.mm +62 -0
- data/src/osx/window.h +5 -3
- data/src/osx/window.mm +46 -21
- data/src/window.cpp +40 -7
- data/src/window.h +8 -9
- data/test/test_event.rb +4 -0
- data/test/test_screen.rb +18 -0
- data/test/test_view.rb +6 -6
- data/test/test_window.rb +48 -6
- metadata +22 -10
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: fa7ec97efd9d68e5053ddc3bf852f718a66ff883a5bb8693f605dcf45e962732
         | 
| 4 | 
            +
              data.tar.gz: f2fd1319de6f1032802ce96c6657e9ac7dc0327a10c9ef9b1ba2f910c117c57a
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 61d0f5a9fc7ec41480642825f071d103d211035a38bcfda25eb90789fb642cf2663dce3f18771cc3702482e0a78d0385c4601ab23b4654f677f946af6000b425
         | 
| 7 | 
            +
              data.tar.gz: abd4d92237cd9d49795ce5010b38565d7f3a4abd0b73ae4b18ca1989e748e911144ac3b11bdc6869400599c8eac6f120f751f75484c821a483b7475aefcec78a
         | 
    
        data/.doc/ext/reflex/native.cpp
    CHANGED
    
    | @@ -32,6 +32,7 @@ void Init_reflex_rect_shape (); | |
| 32 32 | 
             
            void Init_reflex_ellipse_shape ();
         | 
| 33 33 |  | 
| 34 34 | 
             
            void Init_reflex_application ();
         | 
| 35 | 
            +
            void Init_reflex_screen ();
         | 
| 35 36 | 
             
            void Init_reflex_window ();
         | 
| 36 37 | 
             
            void Init_reflex_view ();
         | 
| 37 38 |  | 
| @@ -80,6 +81,7 @@ extern "C" void | |
| 80 81 | 
             
            	Init_reflex_ellipse_shape();
         | 
| 81 82 |  | 
| 82 83 | 
             
            	Init_reflex_application();
         | 
| 84 | 
            +
            	Init_reflex_screen();
         | 
| 83 85 | 
             
            	Init_reflex_window();
         | 
| 84 86 | 
             
            	Init_reflex_view();
         | 
| 85 87 |  | 
| @@ -0,0 +1,53 @@ | |
| 1 | 
            +
            #include "reflex/ruby/screen.h"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
             | 
| 4 | 
            +
            #include <rays/ruby/bounds.h>
         | 
| 5 | 
            +
            #include "defs.h"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
             | 
| 8 | 
            +
            RUCY_DEFINE_VALUE_FROM_TO(Reflex::Screen)
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            #define THIS  to<Reflex::Screen*>(self)
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            #define CHECK RUCY_CHECK_OBJECT(Reflex::Screen, self)
         | 
| 13 | 
            +
             | 
| 14 | 
            +
             | 
| 15 | 
            +
            static
         | 
| 16 | 
            +
            VALUE alloc(VALUE klass)
         | 
| 17 | 
            +
            {
         | 
| 18 | 
            +
            	Reflex::reflex_error(__FILE__, __LINE__, "can not instantiate Screen class.");
         | 
| 19 | 
            +
            }
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            static
         | 
| 22 | 
            +
            VALUE get_frame(VALUE self)
         | 
| 23 | 
            +
            {
         | 
| 24 | 
            +
            	CHECK;
         | 
| 25 | 
            +
            	return value(THIS->frame());
         | 
| 26 | 
            +
            }
         | 
| 27 | 
            +
             | 
| 28 | 
            +
             | 
| 29 | 
            +
            static Class cScreen;
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            void
         | 
| 32 | 
            +
            Init_reflex_screen ()
         | 
| 33 | 
            +
            {
         | 
| 34 | 
            +
            	Module mReflex = rb_define_module("Reflex");
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            	cScreen = rb_define_class_under(mReflex, "Screen", rb_cObject);
         | 
| 37 | 
            +
            	rb_define_alloc_func(cScreen, alloc);
         | 
| 38 | 
            +
            	rb_define_method(cScreen, "frame", RUBY_METHOD_FUNC(get_frame), 0);
         | 
| 39 | 
            +
            }
         | 
| 40 | 
            +
             | 
| 41 | 
            +
             | 
| 42 | 
            +
            namespace Reflex
         | 
| 43 | 
            +
            {
         | 
| 44 | 
            +
             | 
| 45 | 
            +
             | 
| 46 | 
            +
            	Class
         | 
| 47 | 
            +
            	screen_class ()
         | 
| 48 | 
            +
            	{
         | 
| 49 | 
            +
            		return cScreen;
         | 
| 50 | 
            +
            	}
         | 
| 51 | 
            +
             | 
| 52 | 
            +
             | 
| 53 | 
            +
            }// Reflex
         | 
    
        data/.doc/ext/reflex/window.cpp
    CHANGED
    
    | @@ -3,6 +3,7 @@ | |
| 3 3 |  | 
| 4 4 | 
             
            #include <rays/ruby/bounds.h>
         | 
| 5 5 | 
             
            #include <rays/ruby/painter.h>
         | 
| 6 | 
            +
            #include "reflex/ruby/screen.h"
         | 
| 6 7 | 
             
            #include "reflex/ruby/view.h"
         | 
| 7 8 | 
             
            #include "defs.h"
         | 
| 8 9 |  | 
| @@ -38,6 +39,13 @@ VALUE hide(VALUE self) | |
| 38 39 | 
             
            	return self;
         | 
| 39 40 | 
             
            }
         | 
| 40 41 |  | 
| 42 | 
            +
            static
         | 
| 43 | 
            +
            VALUE hidden(VALUE self)
         | 
| 44 | 
            +
            {
         | 
| 45 | 
            +
            	CHECK;
         | 
| 46 | 
            +
            	return value(THIS->hidden());
         | 
| 47 | 
            +
            }
         | 
| 48 | 
            +
             | 
| 41 49 | 
             
            static
         | 
| 42 50 | 
             
            VALUE close(VALUE self)
         | 
| 43 51 | 
             
            {
         | 
| @@ -98,44 +106,89 @@ VALUE get_frame(VALUE self) | |
| 98 106 | 
             
            	return value(THIS->frame());
         | 
| 99 107 | 
             
            }
         | 
| 100 108 |  | 
| 109 | 
            +
            static
         | 
| 110 | 
            +
            VALUE set_closable(VALUE self, VALUE state)
         | 
| 111 | 
            +
            {
         | 
| 112 | 
            +
            	CHECK;
         | 
| 113 | 
            +
             | 
| 114 | 
            +
            	if (state)
         | 
| 115 | 
            +
            		THIS->   add_flag(Reflex::Window::FLAG_CLOSABLE);
         | 
| 116 | 
            +
            	else
         | 
| 117 | 
            +
            		THIS->remove_flag(Reflex::Window::FLAG_CLOSABLE);
         | 
| 118 | 
            +
             | 
| 119 | 
            +
            	return state;
         | 
| 120 | 
            +
            }
         | 
| 121 | 
            +
             | 
| 122 | 
            +
            static
         | 
| 123 | 
            +
            VALUE is_closable(VALUE self)
         | 
| 124 | 
            +
            {
         | 
| 125 | 
            +
            	CHECK;
         | 
| 126 | 
            +
            	return value(THIS->has_flag(Reflex::Window::FLAG_CLOSABLE));
         | 
| 127 | 
            +
            }
         | 
| 128 | 
            +
             | 
| 129 | 
            +
            static
         | 
| 130 | 
            +
            VALUE set_minimizable(VALUE self, VALUE state)
         | 
| 131 | 
            +
            {
         | 
| 132 | 
            +
            	CHECK;
         | 
| 133 | 
            +
             | 
| 134 | 
            +
            	if (state)
         | 
| 135 | 
            +
            		THIS->   add_flag(Reflex::Window::FLAG_MINIMIZABLE);
         | 
| 136 | 
            +
            	else
         | 
| 137 | 
            +
            		THIS->remove_flag(Reflex::Window::FLAG_MINIMIZABLE);
         | 
| 138 | 
            +
             | 
| 139 | 
            +
            	return state;
         | 
| 140 | 
            +
            }
         | 
| 141 | 
            +
             | 
| 142 | 
            +
            static
         | 
| 143 | 
            +
            VALUE is_minimizable(VALUE self)
         | 
| 144 | 
            +
            {
         | 
| 145 | 
            +
            	CHECK;
         | 
| 146 | 
            +
            	return value(THIS->has_flag(Reflex::Window::FLAG_MINIMIZABLE));
         | 
| 147 | 
            +
            }
         | 
| 148 | 
            +
             | 
| 101 149 | 
             
            static
         | 
| 102 150 | 
             
            VALUE set_resizable(VALUE self, VALUE state)
         | 
| 103 151 | 
             
            {
         | 
| 104 152 | 
             
            	CHECK;
         | 
| 105 | 
            -
             | 
| 106 | 
            -
            	 | 
| 153 | 
            +
             | 
| 154 | 
            +
            	if (state)
         | 
| 155 | 
            +
            		THIS->   add_flag(Reflex::Window::FLAG_RESIZABLE);
         | 
| 156 | 
            +
            	else
         | 
| 157 | 
            +
            		THIS->remove_flag(Reflex::Window::FLAG_RESIZABLE);
         | 
| 158 | 
            +
             | 
| 159 | 
            +
            	return state;
         | 
| 107 160 | 
             
            }
         | 
| 108 161 |  | 
| 109 162 | 
             
            static
         | 
| 110 163 | 
             
            VALUE is_resizable(VALUE self)
         | 
| 111 164 | 
             
            {
         | 
| 112 165 | 
             
            	CHECK;
         | 
| 113 | 
            -
            	return value(THIS-> | 
| 166 | 
            +
            	return value(THIS->has_flag(Reflex::Window::FLAG_RESIZABLE));
         | 
| 114 167 | 
             
            }
         | 
| 115 168 |  | 
| 116 169 | 
             
            static
         | 
| 117 | 
            -
            VALUE  | 
| 170 | 
            +
            VALUE get_screen(VALUE self)
         | 
| 118 171 | 
             
            {
         | 
| 119 172 | 
             
            	CHECK;
         | 
| 120 | 
            -
            	return value(THIS-> | 
| 173 | 
            +
            	return value(THIS->screen());
         | 
| 121 174 | 
             
            }
         | 
| 122 175 |  | 
| 123 176 | 
             
            static
         | 
| 124 | 
            -
            VALUE  | 
| 177 | 
            +
            VALUE get_root(VALUE self)
         | 
| 125 178 | 
             
            {
         | 
| 126 179 | 
             
            	CHECK;
         | 
| 127 180 | 
             
            	return value(THIS->root());
         | 
| 128 181 | 
             
            }
         | 
| 129 182 |  | 
| 130 183 | 
             
            static
         | 
| 131 | 
            -
            VALUE  | 
| 184 | 
            +
            VALUE get_focus(VALUE self)
         | 
| 132 185 | 
             
            {
         | 
| 133 186 | 
             
            	CHECK;
         | 
| 134 187 | 
             
            	return value(THIS->focus());
         | 
| 135 188 | 
             
            }
         | 
| 136 189 |  | 
| 137 190 | 
             
            static
         | 
| 138 | 
            -
            VALUE  | 
| 191 | 
            +
            VALUE get_painter(VALUE self)
         | 
| 139 192 | 
             
            {
         | 
| 140 193 | 
             
            	CHECK;
         | 
| 141 194 | 
             
            	return value(THIS->painter());
         | 
| @@ -277,12 +330,17 @@ Init_reflex_window () | |
| 277 330 | 
             
            	rb_define_method(cWindow, "title", RUBY_METHOD_FUNC(get_title), 0);
         | 
| 278 331 | 
             
            	rb_define_method(cWindow, "frame=", RUBY_METHOD_FUNC(set_frame), -1);
         | 
| 279 332 | 
             
            	rb_define_method(cWindow, "frame", RUBY_METHOD_FUNC(get_frame), 0);
         | 
| 333 | 
            +
            	rb_define_method(cWindow, "closable=", RUBY_METHOD_FUNC(set_closable), 1);
         | 
| 334 | 
            +
            	cWindow.define_method("closable?",     is_closable);
         | 
| 335 | 
            +
            	rb_define_method(cWindow, "minimizable=", RUBY_METHOD_FUNC(set_minimizable), 1);
         | 
| 336 | 
            +
            	cWindow.define_method("minimizable?",  is_minimizable);
         | 
| 280 337 | 
             
            	rb_define_method(cWindow, "resizable=", RUBY_METHOD_FUNC(set_resizable), 1);
         | 
| 281 | 
            -
            	cWindow.define_method("resizable?", | 
| 338 | 
            +
            	cWindow.define_method("resizable?",    is_resizable);
         | 
| 282 339 | 
             
            	rb_define_method(cWindow, "hidden", RUBY_METHOD_FUNC(hidden), 0);
         | 
| 283 | 
            -
            	rb_define_method(cWindow, " | 
| 284 | 
            -
            	rb_define_method(cWindow, " | 
| 285 | 
            -
            	rb_define_method(cWindow, " | 
| 340 | 
            +
            	rb_define_method(cWindow, "screen", RUBY_METHOD_FUNC(get_screen), 0);
         | 
| 341 | 
            +
            	rb_define_method(cWindow, "root", RUBY_METHOD_FUNC(get_root), 0);
         | 
| 342 | 
            +
            	rb_define_method(cWindow, "focus", RUBY_METHOD_FUNC(get_focus), 0);
         | 
| 343 | 
            +
            	rb_define_method(cWindow, "painter", RUBY_METHOD_FUNC(get_painter), 0);
         | 
| 286 344 | 
             
            	rb_define_method(cWindow, "on_show", RUBY_METHOD_FUNC(on_show), 1);
         | 
| 287 345 | 
             
            	rb_define_method(cWindow, "on_hide", RUBY_METHOD_FUNC(on_hide), 1);
         | 
| 288 346 | 
             
            	rb_define_method(cWindow, "on_close", RUBY_METHOD_FUNC(on_close), 1);
         | 
    
        data/ChangeLog.md
    CHANGED
    
    | @@ -1,6 +1,21 @@ | |
| 1 1 | 
             
            # reflex ChangeLog
         | 
| 2 2 |  | 
| 3 3 |  | 
| 4 | 
            +
            ## [v0.1.42] - 2023-06-02
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            - Implement the Screen class for iOS
         | 
| 7 | 
            +
            - Implement Window_get_screen() for iOS
         | 
| 8 | 
            +
            - Implement window flags for iOS
         | 
| 9 | 
            +
            - Update reflexView's size on viewDidLayoutSubviews
         | 
| 10 | 
            +
             | 
| 11 | 
            +
             | 
| 12 | 
            +
            ## [v0.1.41] - 2023-05-29
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            - Add Reflex::Screen class
         | 
| 15 | 
            +
            - Add Window#closable and Window#minimizable accessors
         | 
| 16 | 
            +
            - Fix that non-closable, non-minimizable, or non-resizable buttons raise error on clicking them
         | 
| 17 | 
            +
             | 
| 18 | 
            +
             | 
| 4 19 | 
             
            ## [v0.1.40] - 2023-05-27
         | 
| 5 20 |  | 
| 6 21 | 
             
            - required_ruby_version >= 3.0.0
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.1. | 
| 1 | 
            +
            0.1.42
         | 
    
        data/ext/reflex/native.cpp
    CHANGED
    
    | @@ -32,6 +32,7 @@ void Init_reflex_rect_shape (); | |
| 32 32 | 
             
            void Init_reflex_ellipse_shape ();
         | 
| 33 33 |  | 
| 34 34 | 
             
            void Init_reflex_application ();
         | 
| 35 | 
            +
            void Init_reflex_screen ();
         | 
| 35 36 | 
             
            void Init_reflex_window ();
         | 
| 36 37 | 
             
            void Init_reflex_view ();
         | 
| 37 38 |  | 
| @@ -80,6 +81,7 @@ extern "C" void | |
| 80 81 | 
             
            	Init_reflex_ellipse_shape();
         | 
| 81 82 |  | 
| 82 83 | 
             
            	Init_reflex_application();
         | 
| 84 | 
            +
            	Init_reflex_screen();
         | 
| 83 85 | 
             
            	Init_reflex_window();
         | 
| 84 86 | 
             
            	Init_reflex_view();
         | 
| 85 87 |  | 
| @@ -0,0 +1,55 @@ | |
| 1 | 
            +
            #include "reflex/ruby/screen.h"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
             | 
| 4 | 
            +
            #include <rays/ruby/bounds.h>
         | 
| 5 | 
            +
            #include "defs.h"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
             | 
| 8 | 
            +
            RUCY_DEFINE_VALUE_FROM_TO(Reflex::Screen)
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            #define THIS  to<Reflex::Screen*>(self)
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            #define CHECK RUCY_CHECK_OBJECT(Reflex::Screen, self)
         | 
| 13 | 
            +
             | 
| 14 | 
            +
             | 
| 15 | 
            +
            static
         | 
| 16 | 
            +
            RUCY_DEF_ALLOC(alloc, klass)
         | 
| 17 | 
            +
            {
         | 
| 18 | 
            +
            	Reflex::reflex_error(__FILE__, __LINE__, "can not instantiate Screen class.");
         | 
| 19 | 
            +
            }
         | 
| 20 | 
            +
            RUCY_END
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            static
         | 
| 23 | 
            +
            RUCY_DEF0(get_frame)
         | 
| 24 | 
            +
            {
         | 
| 25 | 
            +
            	CHECK;
         | 
| 26 | 
            +
            	return value(THIS->frame());
         | 
| 27 | 
            +
            }
         | 
| 28 | 
            +
            RUCY_END
         | 
| 29 | 
            +
             | 
| 30 | 
            +
             | 
| 31 | 
            +
            static Class cScreen;
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            void
         | 
| 34 | 
            +
            Init_reflex_screen ()
         | 
| 35 | 
            +
            {
         | 
| 36 | 
            +
            	Module mReflex = define_module("Reflex");
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            	cScreen = mReflex.define_class("Screen");
         | 
| 39 | 
            +
            	cScreen.define_alloc_func(alloc);
         | 
| 40 | 
            +
            	cScreen.define_method("frame", get_frame);
         | 
| 41 | 
            +
            }
         | 
| 42 | 
            +
             | 
| 43 | 
            +
             | 
| 44 | 
            +
            namespace Reflex
         | 
| 45 | 
            +
            {
         | 
| 46 | 
            +
             | 
| 47 | 
            +
             | 
| 48 | 
            +
            	Class
         | 
| 49 | 
            +
            	screen_class ()
         | 
| 50 | 
            +
            	{
         | 
| 51 | 
            +
            		return cScreen;
         | 
| 52 | 
            +
            	}
         | 
| 53 | 
            +
             | 
| 54 | 
            +
             | 
| 55 | 
            +
            }// Reflex
         | 
    
        data/ext/reflex/window.cpp
    CHANGED
    
    | @@ -3,6 +3,7 @@ | |
| 3 3 |  | 
| 4 4 | 
             
            #include <rays/ruby/bounds.h>
         | 
| 5 5 | 
             
            #include <rays/ruby/painter.h>
         | 
| 6 | 
            +
            #include "reflex/ruby/screen.h"
         | 
| 6 7 | 
             
            #include "reflex/ruby/view.h"
         | 
| 7 8 | 
             
            #include "defs.h"
         | 
| 8 9 |  | 
| @@ -41,6 +42,14 @@ RUCY_DEF0(hide) | |
| 41 42 | 
             
            }
         | 
| 42 43 | 
             
            RUCY_END
         | 
| 43 44 |  | 
| 45 | 
            +
            static
         | 
| 46 | 
            +
            RUCY_DEF0(hidden)
         | 
| 47 | 
            +
            {
         | 
| 48 | 
            +
            	CHECK;
         | 
| 49 | 
            +
            	return value(THIS->hidden());
         | 
| 50 | 
            +
            }
         | 
| 51 | 
            +
            RUCY_END
         | 
| 52 | 
            +
             | 
| 44 53 | 
             
            static
         | 
| 45 54 | 
             
            RUCY_DEF0(close)
         | 
| 46 55 | 
             
            {
         | 
| @@ -109,12 +118,61 @@ RUCY_DEF0(get_frame) | |
| 109 118 | 
             
            }
         | 
| 110 119 | 
             
            RUCY_END
         | 
| 111 120 |  | 
| 121 | 
            +
            static
         | 
| 122 | 
            +
            RUCY_DEF1(set_closable, state)
         | 
| 123 | 
            +
            {
         | 
| 124 | 
            +
            	CHECK;
         | 
| 125 | 
            +
             | 
| 126 | 
            +
            	if (state)
         | 
| 127 | 
            +
            		THIS->   add_flag(Reflex::Window::FLAG_CLOSABLE);
         | 
| 128 | 
            +
            	else
         | 
| 129 | 
            +
            		THIS->remove_flag(Reflex::Window::FLAG_CLOSABLE);
         | 
| 130 | 
            +
             | 
| 131 | 
            +
            	return state;
         | 
| 132 | 
            +
            }
         | 
| 133 | 
            +
            RUCY_END
         | 
| 134 | 
            +
             | 
| 135 | 
            +
            static
         | 
| 136 | 
            +
            RUCY_DEF0(is_closable)
         | 
| 137 | 
            +
            {
         | 
| 138 | 
            +
            	CHECK;
         | 
| 139 | 
            +
            	return value(THIS->has_flag(Reflex::Window::FLAG_CLOSABLE));
         | 
| 140 | 
            +
            }
         | 
| 141 | 
            +
            RUCY_END
         | 
| 142 | 
            +
             | 
| 143 | 
            +
            static
         | 
| 144 | 
            +
            RUCY_DEF1(set_minimizable, state)
         | 
| 145 | 
            +
            {
         | 
| 146 | 
            +
            	CHECK;
         | 
| 147 | 
            +
             | 
| 148 | 
            +
            	if (state)
         | 
| 149 | 
            +
            		THIS->   add_flag(Reflex::Window::FLAG_MINIMIZABLE);
         | 
| 150 | 
            +
            	else
         | 
| 151 | 
            +
            		THIS->remove_flag(Reflex::Window::FLAG_MINIMIZABLE);
         | 
| 152 | 
            +
             | 
| 153 | 
            +
            	return state;
         | 
| 154 | 
            +
            }
         | 
| 155 | 
            +
            RUCY_END
         | 
| 156 | 
            +
             | 
| 157 | 
            +
            static
         | 
| 158 | 
            +
            RUCY_DEF0(is_minimizable)
         | 
| 159 | 
            +
            {
         | 
| 160 | 
            +
            	CHECK;
         | 
| 161 | 
            +
            	return value(THIS->has_flag(Reflex::Window::FLAG_MINIMIZABLE));
         | 
| 162 | 
            +
            }
         | 
| 163 | 
            +
            RUCY_END
         | 
| 164 | 
            +
             | 
| 112 165 | 
             
            static
         | 
| 113 166 | 
             
            RUCY_DEF1(set_resizable, state)
         | 
| 114 167 | 
             
            {
         | 
| 115 168 | 
             
            	CHECK;
         | 
| 116 | 
            -
             | 
| 117 | 
            -
            	 | 
| 169 | 
            +
             | 
| 170 | 
            +
            	if (state)
         | 
| 171 | 
            +
            		THIS->   add_flag(Reflex::Window::FLAG_RESIZABLE);
         | 
| 172 | 
            +
            	else
         | 
| 173 | 
            +
            		THIS->remove_flag(Reflex::Window::FLAG_RESIZABLE);
         | 
| 174 | 
            +
             | 
| 175 | 
            +
            	return state;
         | 
| 118 176 | 
             
            }
         | 
| 119 177 | 
             
            RUCY_END
         | 
| 120 178 |  | 
| @@ -122,20 +180,20 @@ static | |
| 122 180 | 
             
            RUCY_DEF0(is_resizable)
         | 
| 123 181 | 
             
            {
         | 
| 124 182 | 
             
            	CHECK;
         | 
| 125 | 
            -
            	return value(THIS-> | 
| 183 | 
            +
            	return value(THIS->has_flag(Reflex::Window::FLAG_RESIZABLE));
         | 
| 126 184 | 
             
            }
         | 
| 127 185 | 
             
            RUCY_END
         | 
| 128 186 |  | 
| 129 187 | 
             
            static
         | 
| 130 | 
            -
            RUCY_DEF0( | 
| 188 | 
            +
            RUCY_DEF0(get_screen)
         | 
| 131 189 | 
             
            {
         | 
| 132 190 | 
             
            	CHECK;
         | 
| 133 | 
            -
            	return value(THIS-> | 
| 191 | 
            +
            	return value(THIS->screen());
         | 
| 134 192 | 
             
            }
         | 
| 135 193 | 
             
            RUCY_END
         | 
| 136 194 |  | 
| 137 195 | 
             
            static
         | 
| 138 | 
            -
            RUCY_DEF0( | 
| 196 | 
            +
            RUCY_DEF0(get_root)
         | 
| 139 197 | 
             
            {
         | 
| 140 198 | 
             
            	CHECK;
         | 
| 141 199 | 
             
            	return value(THIS->root());
         | 
| @@ -143,7 +201,7 @@ RUCY_DEF0(root) | |
| 143 201 | 
             
            RUCY_END
         | 
| 144 202 |  | 
| 145 203 | 
             
            static
         | 
| 146 | 
            -
            RUCY_DEF0( | 
| 204 | 
            +
            RUCY_DEF0(get_focus)
         | 
| 147 205 | 
             
            {
         | 
| 148 206 | 
             
            	CHECK;
         | 
| 149 207 | 
             
            	return value(THIS->focus());
         | 
| @@ -151,7 +209,7 @@ RUCY_DEF0(focus) | |
| 151 209 | 
             
            RUCY_END
         | 
| 152 210 |  | 
| 153 211 | 
             
            static
         | 
| 154 | 
            -
            RUCY_DEF0( | 
| 212 | 
            +
            RUCY_DEF0(get_painter)
         | 
| 155 213 | 
             
            {
         | 
| 156 214 | 
             
            	CHECK;
         | 
| 157 215 | 
             
            	return value(THIS->painter());
         | 
| @@ -310,12 +368,17 @@ Init_reflex_window () | |
| 310 368 | 
             
            	cWindow.define_method("title", get_title);
         | 
| 311 369 | 
             
            	cWindow.define_method("frame=", set_frame);
         | 
| 312 370 | 
             
            	cWindow.define_method("frame",  get_frame);
         | 
| 313 | 
            -
            	cWindow.define_method(" | 
| 314 | 
            -
            	cWindow.define_method(" | 
| 371 | 
            +
            	cWindow.define_method("closable=",    set_closable);
         | 
| 372 | 
            +
            	cWindow.define_method("closable?",     is_closable);
         | 
| 373 | 
            +
            	cWindow.define_method("minimizable=", set_minimizable);
         | 
| 374 | 
            +
            	cWindow.define_method("minimizable?",  is_minimizable);
         | 
| 375 | 
            +
            	cWindow.define_method("resizable=",   set_resizable);
         | 
| 376 | 
            +
            	cWindow.define_method("resizable?",    is_resizable);
         | 
| 315 377 | 
             
            	cWindow.define_method("hidden", hidden);
         | 
| 316 | 
            -
            	cWindow.define_method(" | 
| 317 | 
            -
            	cWindow.define_method(" | 
| 318 | 
            -
            	cWindow.define_method(" | 
| 378 | 
            +
            	cWindow.define_method("screen",  get_screen);
         | 
| 379 | 
            +
            	cWindow.define_method("root",    get_root);
         | 
| 380 | 
            +
            	cWindow.define_method("focus",   get_focus);
         | 
| 381 | 
            +
            	cWindow.define_method("painter", get_painter);
         | 
| 319 382 | 
             
            	cWindow.define_method("on_show",  on_show);
         | 
| 320 383 | 
             
            	cWindow.define_method("on_hide",  on_hide);
         | 
| 321 384 | 
             
            	cWindow.define_method("on_close", on_close);
         | 
| @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            // -*- c++ -*-
         | 
| 2 | 
            +
            #pragma once
         | 
| 3 | 
            +
            #ifndef __REFLEX_RUBY_SCREEN_H__
         | 
| 4 | 
            +
            #define __REFLEX_RUBY_SCREEN_H__
         | 
| 5 | 
            +
             | 
| 6 | 
            +
             | 
| 7 | 
            +
            #include <rucy/class.h>
         | 
| 8 | 
            +
            #include <rucy/extension.h>
         | 
| 9 | 
            +
            #include <reflex/screen.h>
         | 
| 10 | 
            +
             | 
| 11 | 
            +
             | 
| 12 | 
            +
            RUCY_DECLARE_VALUE_FROM_TO(Reflex::Screen)
         | 
| 13 | 
            +
             | 
| 14 | 
            +
             | 
| 15 | 
            +
            namespace Reflex
         | 
| 16 | 
            +
            {
         | 
| 17 | 
            +
             | 
| 18 | 
            +
             | 
| 19 | 
            +
            	Rucy::Class screen_class ();
         | 
| 20 | 
            +
            	// class Reflex::Screen
         | 
| 21 | 
            +
             | 
| 22 | 
            +
             | 
| 23 | 
            +
            }// Reflex
         | 
| 24 | 
            +
             | 
| 25 | 
            +
             | 
| 26 | 
            +
            namespace Rucy
         | 
| 27 | 
            +
            {
         | 
| 28 | 
            +
             | 
| 29 | 
            +
             | 
| 30 | 
            +
            	template <> inline Class
         | 
| 31 | 
            +
            	get_ruby_class<Reflex::Screen> ()
         | 
| 32 | 
            +
            	{
         | 
| 33 | 
            +
            		return Reflex::screen_class();
         | 
| 34 | 
            +
            	}
         | 
| 35 | 
            +
             | 
| 36 | 
            +
             | 
| 37 | 
            +
            }// Rucy
         | 
| 38 | 
            +
             | 
| 39 | 
            +
             | 
| 40 | 
            +
            #endif//EOH
         | 
| @@ -0,0 +1,43 @@ | |
| 1 | 
            +
            // -*- c++ -*-
         | 
| 2 | 
            +
            #pragma once
         | 
| 3 | 
            +
            #ifndef __REFLEX_SCREEN_H__
         | 
| 4 | 
            +
            #define __REFLEX_SCREEN_H__
         | 
| 5 | 
            +
             | 
| 6 | 
            +
             | 
| 7 | 
            +
            #include <xot/pimpl.h>
         | 
| 8 | 
            +
            #include <rays/bounds.h>
         | 
| 9 | 
            +
            #include <reflex/defs.h>
         | 
| 10 | 
            +
             | 
| 11 | 
            +
             | 
| 12 | 
            +
            namespace Reflex
         | 
| 13 | 
            +
            {
         | 
| 14 | 
            +
             | 
| 15 | 
            +
             | 
| 16 | 
            +
            	class Screen
         | 
| 17 | 
            +
            	{
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            		typedef Screen This;
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            		public:
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            			Screen ();
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            			virtual ~Screen ();
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            			virtual Bounds frame () const;
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            			operator bool () const;
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            			bool operator ! () const;
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            			struct Data;
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            			Xot::PSharedImpl<Data> self;
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            	};// Screen
         | 
| 38 | 
            +
             | 
| 39 | 
            +
             | 
| 40 | 
            +
            }// Reflex
         | 
| 41 | 
            +
             | 
| 42 | 
            +
             | 
| 43 | 
            +
            #endif//EOH
         | 
    
        data/include/reflex/window.h
    CHANGED
    
    | @@ -11,6 +11,7 @@ | |
| 11 11 | 
             
            #include <rays/painter.h>
         | 
| 12 12 | 
             
            #include <reflex/defs.h>
         | 
| 13 13 | 
             
            #include <reflex/event.h>
         | 
| 14 | 
            +
            #include <reflex/screen.h>
         | 
| 14 15 |  | 
| 15 16 |  | 
| 16 17 | 
             
            namespace Reflex
         | 
| @@ -29,12 +30,27 @@ namespace Reflex | |
| 29 30 |  | 
| 30 31 | 
             
            			typedef Xot::Ref<This> Ref;
         | 
| 31 32 |  | 
| 33 | 
            +
            			enum Flag
         | 
| 34 | 
            +
            			{
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            				FLAG_CLOSABLE    = Xot::bit(0),
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            				FLAG_MINIMIZABLE = Xot::bit(1),
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            				FLAG_RESIZABLE   = Xot::bit(2),
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            				FLAG_LAST        = FLAG_RESIZABLE
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            			};// Flag
         | 
| 45 | 
            +
             | 
| 32 46 | 
             
            			Window ();
         | 
| 33 47 |  | 
| 34 48 | 
             
            			virtual void show ();
         | 
| 35 49 |  | 
| 36 50 | 
             
            			virtual void hide ();
         | 
| 37 51 |  | 
| 52 | 
            +
            			virtual bool hidden () const;
         | 
| 53 | 
            +
             | 
| 38 54 | 
             
            			virtual void close (bool force = false);
         | 
| 39 55 |  | 
| 40 56 | 
             
            			virtual void redraw ();
         | 
| @@ -53,11 +69,13 @@ namespace Reflex | |
| 53 69 |  | 
| 54 70 | 
             
            			virtual Bounds   frame () const;
         | 
| 55 71 |  | 
| 56 | 
            -
            			virtual void  | 
| 72 | 
            +
            			virtual void    add_flag (uint flags);
         | 
| 57 73 |  | 
| 58 | 
            -
            			virtual  | 
| 74 | 
            +
            			virtual void remove_flag (uint flags);
         | 
| 59 75 |  | 
| 60 | 
            -
            			virtual bool  | 
| 76 | 
            +
            			virtual bool    has_flag (uint flags) const;
         | 
| 77 | 
            +
             | 
| 78 | 
            +
            			virtual Screen screen () const;
         | 
| 61 79 |  | 
| 62 80 | 
             
            			virtual       View* root ();
         | 
| 63 81 |  | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            require 'forwardable'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Reflex
         | 
| 5 | 
            +
             | 
| 6 | 
            +
             | 
| 7 | 
            +
              class Screen
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                extend Forwardable
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def_delegators :frame,
         | 
| 12 | 
            +
                  :x, :y, :z, :w, :h, :d, :width, :height, :depth,
         | 
| 13 | 
            +
                  :left, :top, :back, :right, :bottom, :front,
         | 
| 14 | 
            +
                  :left_top, :right_top, :left_bottom, :right_bottom,
         | 
| 15 | 
            +
                  :lt, :lr, :lb, :rb,
         | 
| 16 | 
            +
                  :position, :pos, :size, :center
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              end# Screen
         | 
| 19 | 
            +
             | 
| 20 | 
            +
             | 
| 21 | 
            +
            end# Reflex
         | 
    
        data/lib/reflex/window.rb
    CHANGED
    
    | @@ -62,7 +62,9 @@ module Reflex | |
| 62 62 | 
             
                  :restitution=, :restitution
         | 
| 63 63 |  | 
| 64 64 | 
             
                universal_accessor :title, :frame,
         | 
| 65 | 
            -
                   | 
| 65 | 
            +
                  closable:    {reader: :closable?},
         | 
| 66 | 
            +
                  minimizable: {reader: :minimizable?},
         | 
| 67 | 
            +
                  resizable:   {reader: :resizable?}
         | 
| 66 68 |  | 
| 67 69 | 
             
                def initialize(options = nil, &block)
         | 
| 68 70 | 
             
                  super()
         | 
    
        data/lib/reflex.rb
    CHANGED
    
    
    
        data/reflex.gemspec
    CHANGED
    
    | @@ -1,10 +1,7 @@ | |
| 1 1 | 
             
            # -*- mode: ruby -*-
         | 
| 2 2 |  | 
| 3 3 |  | 
| 4 | 
            -
             | 
| 5 | 
            -
              .tap {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            require 'reflex/extension'
         | 
| 4 | 
            +
            require_relative 'lib/reflex/extension'
         | 
| 8 5 |  | 
| 9 6 |  | 
| 10 7 | 
             
            Gem::Specification.new do |s|
         | 
| @@ -28,10 +25,10 @@ Gem::Specification.new do |s| | |
| 28 25 | 
             
              s.platform              = Gem::Platform::RUBY
         | 
| 29 26 | 
             
              s.required_ruby_version = '>= 3.0.0'
         | 
| 30 27 |  | 
| 31 | 
            -
              s.add_runtime_dependency 'xot',   '~> 0.1. | 
| 32 | 
            -
              s.add_runtime_dependency 'rucy',  '~> 0.1. | 
| 33 | 
            -
              s.add_runtime_dependency 'beeps', '~> 0.1. | 
| 34 | 
            -
              s.add_runtime_dependency 'rays',  '~> 0.1. | 
| 28 | 
            +
              s.add_runtime_dependency 'xot',   '~> 0.1.38'
         | 
| 29 | 
            +
              s.add_runtime_dependency 'rucy',  '~> 0.1.38'
         | 
| 30 | 
            +
              s.add_runtime_dependency 'beeps', '~> 0.1.39'
         | 
| 31 | 
            +
              s.add_runtime_dependency 'rays',  '~> 0.1.39'
         | 
| 35 32 |  | 
| 36 33 | 
             
              s.add_development_dependency 'rake'
         | 
| 37 34 | 
             
              s.add_development_dependency 'test-unit'
         | 
    
        data/src/ios/screen.h
    ADDED
    
    | @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            // -*- c++ -*-
         | 
| 2 | 
            +
            #pragma once
         | 
| 3 | 
            +
            #ifndef __REFLEX_SRC_IOS_SCREEN_H__
         | 
| 4 | 
            +
            #define __REFLEX_SRC_IOS_SCREEN_H__
         | 
| 5 | 
            +
             | 
| 6 | 
            +
             | 
| 7 | 
            +
            #include "reflex/screen.h"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
             | 
| 10 | 
            +
            namespace Reflex
         | 
| 11 | 
            +
            {
         | 
| 12 | 
            +
             | 
| 13 | 
            +
             | 
| 14 | 
            +
            	void Screen_initialize (Screen* pthis, UIScreen* screen);
         | 
| 15 | 
            +
             | 
| 16 | 
            +
             | 
| 17 | 
            +
            }// Reflex
         | 
| 18 | 
            +
             | 
| 19 | 
            +
             | 
| 20 | 
            +
            #endif//EOH
         |