mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-10 13:06:59 -04:00
cf91f9c43b
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1438 0fc631ac-6414-0410-93d0-97cfa31319b6
79 lines
3.1 KiB
C++
79 lines
3.1 KiB
C++
//+----------------------------------------------------------------------------+
|
|
//| Description: Magic Set Editor - Program to make Magic (tm) cards |
|
|
//| Copyright: (C) 2001 - 2010 Twan van Laarhoven and Sean Hunt |
|
|
//| License: GNU General Public License 2 or later (see file COPYING) |
|
|
//+----------------------------------------------------------------------------+
|
|
|
|
#ifndef HEADER_UTIL_ALIGNMENT
|
|
#define HEADER_UTIL_ALIGNMENT
|
|
|
|
// ----------------------------------------------------------------------------- : Includes
|
|
|
|
#include <util/prec.hpp>
|
|
#include <util/real_point.hpp>
|
|
|
|
// ----------------------------------------------------------------------------- : Alignment
|
|
|
|
// Alignment in a textbox, specifies both horizontal and vertical alignment
|
|
enum Alignment
|
|
// horizontal
|
|
{ ALIGN_LEFT = 0x01
|
|
, ALIGN_CENTER = 0x02
|
|
, ALIGN_RIGHT = 0x04
|
|
, ALIGN_HORIZONTAL = ALIGN_LEFT | ALIGN_CENTER | ALIGN_RIGHT
|
|
// horizontal filling
|
|
, ALIGN_STRETCH = 0x10
|
|
, ALIGN_JUSTIFY_WORDS = 0x20
|
|
, ALIGN_JUSTIFY_ALL = 0x40
|
|
, ALIGN_FILL = ALIGN_STRETCH | ALIGN_JUSTIFY_WORDS | ALIGN_JUSTIFY_ALL
|
|
// horizontal fill modifiers
|
|
, ALIGN_IF_OVERFLOW = 0x1000 // only fill if text_width > box_width
|
|
, ALIGN_IF_SOFTBREAK = 0x2000 // only fill before soft line breaks
|
|
// vertical
|
|
, ALIGN_TOP = 0x100
|
|
, ALIGN_MIDDLE = 0x200
|
|
, ALIGN_BOTTOM = 0x400
|
|
, ALIGN_VERTICAL = ALIGN_TOP | ALIGN_MIDDLE | ALIGN_BOTTOM
|
|
// modifiers
|
|
// common combinations
|
|
, ALIGN_TOP_LEFT = ALIGN_TOP | ALIGN_LEFT
|
|
, ALIGN_TOP_CENTER = ALIGN_TOP | ALIGN_CENTER
|
|
, ALIGN_TOP_RIGHT = ALIGN_TOP | ALIGN_RIGHT
|
|
, ALIGN_MIDDLE_LEFT = ALIGN_MIDDLE | ALIGN_LEFT
|
|
, ALIGN_MIDDLE_CENTER = ALIGN_MIDDLE | ALIGN_CENTER
|
|
, ALIGN_MIDDLE_RIGHT = ALIGN_MIDDLE | ALIGN_RIGHT
|
|
};
|
|
|
|
|
|
/// How much should an object with obj_width be moved to be aligned in a box with box_width?
|
|
double align_delta_x(Alignment align, double box_width, double obj_width);
|
|
|
|
/// How much should an object with obj_height be moved to be aligned in a box with box_height?
|
|
double align_delta_y(Alignment align, double box_height, double obj_height);
|
|
|
|
/// Align a rectangle inside another rectangle
|
|
/** returns the topleft coordinates of the inner rectangle after alignment
|
|
*/
|
|
RealPoint align_in_rect(Alignment align, const RealSize& to_align, const RealRect& outer);
|
|
|
|
// ----------------------------------------------------------------------------- : Direction
|
|
|
|
/// Direction to place something in
|
|
enum Direction {
|
|
LEFT_TO_RIGHT, RIGHT_TO_LEFT,
|
|
TOP_TO_BOTTOM, BOTTOM_TO_TOP,
|
|
BOTTOM_RIGHT_TO_TOP_LEFT,
|
|
TOP_LEFT_TO_BOTTOM_RIGHT,
|
|
BOTTOM_LEFT_TO_TOP_RIGHT,
|
|
TOP_RIGHT_TO_BOTTOM_LEFT,
|
|
HORIZONTAL = LEFT_TO_RIGHT,
|
|
VERTICAL = TOP_TO_BOTTOM
|
|
};
|
|
|
|
/// Move a point in a direction
|
|
/** If the direction is horizontal the to_move.width is used, otherwise to_move.height */
|
|
RealPoint move_in_direction(Direction dir, const RealPoint& point, const RealSize to_move, double spacing = 0);
|
|
|
|
// ----------------------------------------------------------------------------- : EOF
|
|
#endif
|