1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
/*
* Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; version 2 of the
* License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
#ifndef _MDC_BOX_H_
#define _MDC_BOX_H_
#include "mdc_layouter.h"
BEGIN_MDC_DECLS
class MYSQLCANVAS_PUBLIC_FUNC Box : public Layouter {
public:
enum Orientation {
Horizontal,
Vertical
};
Box(Layer *layer, Orientation orient= Horizontal, bool homogeneous= false);
virtual ~Box();
virtual void add(CanvasItem *item, bool expand, bool fill, bool hiddenspace= false);
void insert_after(CanvasItem *after, CanvasItem *item, bool expand, bool fill, bool hiddenspace= false);
void insert_before(CanvasItem *before, CanvasItem *item, bool expand, bool fill, bool hiddenspace= false);
virtual void remove(CanvasItem *item);
virtual void render(CairoCtx *cr);
virtual base::Size calc_min_size();
void set_spacing(float sp);
virtual void foreach(const boost::function<void (CanvasItem*)> &slot);
virtual CanvasItem *get_item_at(const base::Point &pos);
virtual void resize_to(const base::Size &size);
protected:
struct BoxItem {
CanvasItem *item;
bool expand;
bool fill;
bool hiddenspace; // use for spacing calculation even when hidden
};
typedef std::list<BoxItem> ItemList;
Orientation _orientation;
ItemList _children;
float _spacing;
bool _homogeneous;
};
END_MDC_DECLS
#endif /* _MDC_BOX_H_ */
|