123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- diff -up fltk-1.3.0r9619/FL/Fl.H.screen_num fltk-1.3.0r9619/FL/Fl.H
- --- fltk-1.3.0r9619/FL/Fl.H.screen_num 2012-07-03 13:49:28.663085580 +0200
- +++ fltk-1.3.0r9619/FL/Fl.H 2012-07-03 13:49:28.731084402 +0200
- @@ -806,6 +806,8 @@ public:
- static void screen_xywh(int &X, int &Y, int &W, int &H, int mx, int my);
- static void screen_xywh(int &X, int &Y, int &W, int &H, int n);
- static void screen_xywh(int &X, int &Y, int &W, int &H, int mx, int my, int mw, int mh);
- + static int screen_num(int x, int y);
- + static int screen_num(int x, int y, int w, int h);
- static void screen_dpi(float &h, float &v, int n=0);
- static void screen_work_area(int &X, int &Y, int &W, int &H, int mx, int my);
- static void screen_work_area(int &X, int &Y, int &W, int &H, int n);
- diff -up fltk-1.3.0r9619/src/screen_xywh.cxx.screen_num fltk-1.3.0r9619/src/screen_xywh.cxx
- --- fltk-1.3.0r9619/src/screen_xywh.cxx.screen_num 2012-03-23 17:47:53.000000000 +0100
- +++ fltk-1.3.0r9619/src/screen_xywh.cxx 2012-07-03 13:58:01.947195396 +0200
- @@ -215,21 +215,6 @@ int Fl::screen_count() {
- return num_screens ? num_screens : 1;
- }
-
- -static int find_screen_with_point(int mx, int my) {
- - int screen = 0;
- - if (num_screens < 0) screen_init();
- -
- - for (int i = 0; i < num_screens; i ++) {
- - int sx, sy, sw, sh;
- - Fl::screen_xywh(sx, sy, sw, sh, i);
- - if ((mx >= sx) && (mx < (sx+sw)) && (my >= sy) && (my < (sy+sh))) {
- - screen = i;
- - break;
- - }
- - }
- - return screen;
- -}
- -
- /**
- Gets the bounding box of a screen
- that contains the specified screen position \p mx, \p my
- @@ -237,7 +222,7 @@ static int find_screen_with_point(int mx
- \param[in] mx, my the absolute screen position
- */
- void Fl::screen_xywh(int &X, int &Y, int &W, int &H, int mx, int my) {
- - screen_xywh(X, Y, W, H, find_screen_with_point(mx, my));
- + screen_xywh(X, Y, W, H, screen_num(mx, my));
- }
-
-
- @@ -248,7 +233,7 @@ void Fl::screen_xywh(int &X, int &Y, int
- \param[in] mx, my the absolute screen position
- */
- void Fl::screen_work_area(int &X, int &Y, int &W, int &H, int mx, int my) {
- - screen_work_area(X, Y, W, H, find_screen_with_point(mx, my));
- + screen_work_area(X, Y, W, H, screen_num(mx, my));
- }
-
- /**
- @@ -321,6 +306,38 @@ void Fl::screen_xywh(int &X, int &Y, int
- #endif // WIN32
- }
-
- +/**
- + Gets the screen bounding rect for the screen
- + which intersects the most with the rectangle
- + defined by \p mx, \p my, \p mw, \p mh.
- + \param[out] X,Y,W,H the corresponding screen bounding box
- + \param[in] mx, my, mw, mh the rectangle to search for intersection with
- + \see void screen_xywh(int &X, int &Y, int &W, int &H, int n)
- + */
- +void Fl::screen_xywh(int &X, int &Y, int &W, int &H, int mx, int my, int mw, int mh) {
- + screen_xywh(X, Y, W, H, screen_num(mx, my, mw, mh));
- +}
- +
- +/**
- + Gets the screen number of a screen
- + that contains the specified screen position \p x, \p y
- + \param[in] x, y the absolute screen position
- +*/
- +int Fl::screen_num(int x, int y) {
- + int screen = 0;
- + if (num_screens < 0) screen_init();
- +
- + for (int i = 0; i < num_screens; i ++) {
- + int sx, sy, sw, sh;
- + Fl::screen_xywh(sx, sy, sw, sh, i);
- + if ((x >= sx) && (x < (sx+sw)) && (y >= sy) && (y < (sy+sh))) {
- + screen = i;
- + break;
- + }
- + }
- + return screen;
- +}
- +
- static inline float fl_intersection(int x1, int y1, int w1, int h1,
- int x2, int y2, int w2, int h2) {
- if(x1+w1 < x2 || x2+w2 < x1 || y1+h1 < y2 || y2+h2 < y1)
- @@ -333,30 +350,27 @@ static inline float fl_intersection(int
- }
-
- /**
- - Gets the screen bounding rect for the screen
- + Gets the screen number for the screen
- which intersects the most with the rectangle
- - defined by \p mx, \p my, \p mw, \p mh.
- - \param[out] X,Y,W,H the corresponding screen bounding box
- - \param[in] mx, my, mw, mh the rectangle to search for intersection with
- - \see void screen_xywh(int &X, int &Y, int &W, int &H, int n)
- + defined by \p x, \p y, \p w, \p h.
- + \param[in] x, y, w, h the rectangle to search for intersection with
- */
- -void Fl::screen_xywh(int &X, int &Y, int &W, int &H, int mx, int my, int mw, int mh) {
- +int Fl::screen_num(int x, int y, int w, int h) {
- int best_screen = 0;
- float best_intersection = 0.;
- for(int i = 0; i < Fl::screen_count(); i++) {
- int sx, sy, sw, sh;
- Fl::screen_xywh(sx, sy, sw, sh, i);
- - float sintersection = fl_intersection(mx, my, mw, mh, sx, sy, sw, sh);
- + float sintersection = fl_intersection(x, y, w, h, sx, sy, sw, sh);
- if(sintersection > best_intersection) {
- best_screen = i;
- best_intersection = sintersection;
- }
- }
- - screen_xywh(X, Y, W, H, best_screen);
- + return best_screen;
- }
-
-
- -
- /**
- Gets the screen resolution in dots-per-inch for the given screen.
- \param[out] h, v horizontal and vertical resolution
|