> > Most systems that support display rotation do so at the WM 
> level, not at
> > the GUI level, so you probably need to investigate xrandr 
> and so forth
> > to see how that is done.
> >
> Thanks, I tried xrandr, it can rotate the frame buffer, but 
> the widget are still the previous size, I use fltk::scale() 
> function to scale the widget, but failed, why? Thanks.


I doubt that ::scale() will work for you like that - it modifies the
rendering context for some of the more elaborate drawing functions by
applying a scaling transform, but AFAIK none of the basic widgets are
affected by the transform.
And you would not want them to be, as that would stretch/squeeze the
widget, nit re-draw it with its axes flipped. That would have a pretty
nasty effect on text rendering, for example...

What we normally do is detect the rotation event from xrandr, and when
we see the display flip from portrait to landscape we walk the widget
tree calling widget->resize(x,y,w,h); on each widget to reset its
size/position for the new display layout.

Then at the end of the tree-walk, call redraw() on the outermost window
and it all magically flips to the new layout...

There may be some better way, but I don't know what it is. This way is
not that hard though.




SELEX Galileo Ltd
Registered Office: Sigma House, Christopher Martin Road, Basildon, Essex SS14 
3EL
A company registered in England & Wales.  Company no. 02426132
********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************

_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk

Reply via email to