]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/geometry.h
Add getter for Panel::layout
[libs/gltk.git] / source / geometry.h
index 6559414dd0497ae5cdd8a8e8a0136ed6af062876..1451a0633e23b5b1107b1ae39f91338820e170ce 100644 (file)
@@ -1,14 +1,7 @@
-/* $Id$
-
-This file is part of libmspgltk
-Copyright © 2007  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #ifndef MSP_GLTK_GEOMETRY_H_
 #define MSP_GLTK_GEOMETRY_H_
 
-#include <msp/datafile/loader.h>
+#include <msp/datafile/objectloader.h>
 
 namespace Msp {
 namespace GLtk {
@@ -24,6 +17,7 @@ struct Geometry
        Geometry(): x(0), y(0), w(1), h(1) { }
        Geometry(int x_, int y_, unsigned w_, unsigned h_): x(x_), y(y_), w(w_), h(h_) { }
        bool is_inside(int, int) const;
+       bool is_inside_relative(int, int) const;
 };
 
 
@@ -32,13 +26,13 @@ Specifies margins on the sides of an element.
 */
 struct Sides
 {
-       class Loader: public DataFile::Loader
+       class Loader: public DataFile::ObjectLoader<Sides>
        {
        public:
                Loader(Sides &);
-               Sides &get_object() { return sides; }
        private:
-               Sides &sides;
+               void horizontal(unsigned);
+               void vertical(unsigned);
        };
 
        unsigned top;
@@ -47,6 +41,10 @@ struct Sides
        unsigned left;
 
        Sides();
+       Sides(unsigned);
+       Sides(unsigned, unsigned);
+       Sides(unsigned, unsigned, unsigned);
+       Sides(unsigned, unsigned, unsigned, unsigned);
 };
 
 
@@ -56,9 +54,9 @@ Performs alignment of nested geometries, such as widgets and their parts.
 struct Alignment
 {
        float x, y;
+       float w, h;
 
-       Alignment(): x(0), y(0) { }
-       Alignment(float x_, float y_): x(x_), y(y_) { }
+       Alignment(): x(0), y(0), w(1), h(1) { }
        void apply(Geometry &, const Geometry &) const;
        void apply(Geometry &, const Geometry &, const Sides &) const;
 };