Xfce
Foundation Classes |
|||
« Main Page | Index | |||
Aspect FramesThe aspect frame widget is like a frame widget, except that it also enforces the aspect ratio (that is, the ratio of the width to the height) of the child widget to have a certain value, adding extra space if necessary. This is useful, for instance, if you want to preview a larger image. The size of the preview should vary when the user resizes the window, but the aspect ratio needs to always match the original image. To create a new aspect frame use
one of the following constructors:
AspectFrame(); Aspect frames have an 'obey_child'
(bool) and a 'ratio' (float)
property. If obey_child
is true, the aspect ratio of a child widget will match the
aspect ratio of the size it requests. If obey_child
is false the aspect ratio is given by
the ratio property. When obey_child is true ratio is ignored. The
'xalign' and 'yalign'
arguments
specify the alignment, as with Alignment widgets.
The first constructor creates an AspectFrame with the default values: xalign 0.5, yalign 0.5, ratio 1.0 and obey_child true. The second constructor creates an AspectFrame with the specified xalign and yalign values. This constructor takes the aspect ratio from the requisition of the child and sets obey_child to true. The third constructor creates an AspectFrame with the specified xalign, yalign and ratio values. This constructor takes the aspect ratio from the ratio argument and sets obey_child to false. The fourth constructor creates a labeled AspectFrame with the specified xalign, yalign and ratio values. This constructor takes the aspect ratio from the ratio argument and sets obey_child to false. To change the options of an
existing AspectFrame, you can use:
void
set(float xalign, float
yalign, float ratio, bool
obey_child); AspectFrame is derived from
Gtk::Frame so you can call the Frame methods
that set the label, label widget
or shadow type.
Aspect Frame ExampleAs an example, the following program uses an AspectFrame to present a drawing area whose aspect ratio will always be 2:1, no matter how the user resizes the top-level window.The header file for the Aspect Frame example is
<aspectframe.hh>:
#include <xfc/main.hh> and the source file is <aspectframe.cc>: #include "aspectframe.hh"
#include <xfc/gtk/aspectframe.hh> #include <xfc/gtk/drawingarea.hh> AspectFrameWindow::AspectFrameWindow() { set_title("Aspect Frame"); set_border_width(10); // Create an aspect_frame and add it to our toplevel window Gtk::AspectFrame *aspect_frame = new Gtk::AspectFrame("2x1", 0.5, 0.5, 2); add(*aspect_frame); aspect_frame->show(); // Now add a child widget to the aspect frame Gtk::DrawingArea *drawing_area = new Gtk::DrawingArea; // We ask for a 200x200 window but get a 200x100 window since we are forcing a 2x1 aspect ratio. drawing_area->set_size_request(200, 200); aspect_frame->add(*drawing_area); drawing_area->show(); } AspectFrameWindow::~AspectFrameWindow() { } int main (int argc, char *argv[]) { using namespace Main; init(&argc, &argv); AspectFrameWindow window; window.signal_destroy().connect(sigc::ptr_fun(&Xfc::Main::quit)); window.show(); run(); return 0; } Compiling Aspect Frame
If you compiled and installed XFC yourself, you will find the source
code for Aspect Frame in the
<examples/aspectframe> source directory along with a Makefile. If
XFC came pre-installed, or you installed it from an RPM package, you
will
find the source code in the
</usr/share/doc/xfcui-X.X/examples/aspectframe> subdirectory. In
this case you will have to create the Makefile yourself (replace X.X
with the
version number of the libXFCui library you have installed). |
Copyright © 2004-2005 The XFC Development Team | Top |
XFC
4.4 |