Ttk_MakeBox, Ttk_PadBox, Ttk_ExpandBox, Ttk_PackBox, Ttk_StickBox, Ttk_PlaceBox, Ttk_BoxContains,
Contents
Arguments
Tk_Anchor anchor (in) One of the symbolic constants TK_ANCHOR_N, TK_ANCHOR_NE, etc.
See Tk_GetAnchorFromObj(3tk).
Ttk_Box * cavity (in/out) A rectangular region from which a parcel is allocated.
short border (in) Extra padding (in pixels) to add uniformly to each side of a
region.
short bottom (in) Extra padding (in pixels) to add to the bottom of a region.
Ttk_Box box (in) Specifies a rectangular region.
Ttk_Box * box_rtn (out) A rectangular region.
int height (in) The height in pixels of a region.
Tcl_Interp * interp (in) Used to store error messages.
int left (in) Extra padding (in pixels) to add to the left side of a region.
Tcl_Obj * objPtr (in) String value contains a symbolic name to be converted to an
enumerated value or bitmask. Internal rep may be be modified
to cache corresponding value.
Ttk_Padding padding (in) Extra padding to add on the inside of a region.
Ttk_Padding * padding_rtn (out) Padding present in the inside of a region.
Ttk_Box parcel (in) A rectangular region, allocated from a cavity.
int relief (in) One of the standard Tk relief options (TK_RELIEF_RAISED,
TK_RELIEF_SUNKEN, etc.). See Tk_GetReliefFromObj.
short right (in) Extra padding (in pixels) to add to the right side of a region.
Ttk_Side side (in) One of TTK_SIDE_LEFT, TTK_SIDE_TOP, TTK_SIDE_RIGHT, or
TTK_SIDE_BOTTOM.
unsigned sticky (in) A bitmask containing one or more of the bits TTK_STICK_W (west,
or left), TTK_STICK_E (east, or right), TTK_STICK_N (north, or
top), and TTK_STICK_S (south, or bottom). TTK_FILL_X is
defined as a synonym for (TTK_STICK_W|TTK_STICK_E), TTK_FILL_Y
is a synonym for (TTK_STICK_N|TTK_STICK_S), and TTK_FILL_BOTH
is a synonym for (TTK_FILL_X|TTK_FILL_Y). See also: grid(3tk).
Tk_Window tkwin (in) Window whose screen geometry determines the conversion between
absolute units and pixels.
short top (in) Extra padding at the top of a region.
int width (in) The width in pixels of a region.
int x (in) X coordinate of upper-left corner of region.
int y (in) Y coordinate of upper-left corner of region.
________________________________________________________________________________________________________________
Boxes
The Ttk_Box structure represents a rectangular region of a window:
typedef struct {
int x;
int y;
int width;
int height;
} Ttk_Box;
All coordinates are relative to the window.
Ttk_MakeBox is a convenience routine that constructs a Ttk_Box structure representing a region width
pixels wide, height pixels tall, at the specified x,y coordinates.
Ttk_PadBox returns a new box located inside the specified parcel, shrunken according to the left, top,
right, and bottom margins specified by padding.
Ttk_ExpandBox is the inverse of Ttk_PadBox: it returns a new box surrounding the specified parcel,
expanded according to the left, top, right, and bottom margins specified by padding.
Ttk_PackBox allocates a parcel width by height pixels wide on the specified side of the cavity, and
shrinks the cavity accordingly.
Ttk_StickBox places a box with the requested width and height inside the parcel according to the sticky
bits.
Ttk_PlaceBox combines Ttk_PackBox and Ttk_StickBox: it allocates a parcel on the specified side of the
cavity, places a box of the requested size inside the parcel according to sticky, and shrinks the cavity.
Ttk_AnchorBox places a box with the requested width and height inside the parcel according to the
specified anchor option.
Ttk_BoxContains tests if the specified x,y coordinate lies within the rectangular region box.
Conversion Routines
Ttk_GetPaddingFromObj converts the string in objPtr to a Ttk_Padding structure. The string
representation is a list of up to four length specifications “lefttoprightbottom”. If fewer than four
elements are specified, bottom defaults to top, right defaults to left, and top defaults to left. See
Tk_GetPixelsFromObj(3tk) for the syntax of length specifications.
Ttk_GetBorderFromObj is the same as Ttk_GetPaddingFromObj except that the lengths are specified as
integers (i.e., resolution-dependent values like 3m are not allowed).
Ttk_GetStickyFromObj converts the string in objPtr to a sticky bitmask. The string contains zero or more
of the characters n, s, e, or w.
Keywords
geometry, padding, margins, box, region, sticky, relief
Tk 8.5 Geometry(3tk)
Name
Ttk_MakeBox, Ttk_PadBox, Ttk_ExpandBox, Ttk_PackBox, Ttk_StickBox, Ttk_PlaceBox, Ttk_BoxContains,
Ttk_MakePadding, Ttk_UniformPadding, Ttk_AddPadding, Ttk_RelievePadding, Ttk_GetPaddingFromObj,
Ttk_GetBorderFromObj, Ttk_GetStickyFromObj - Tk themed geometry utilities
Paddding
The Ttk_Padding structure is used to represent borders, internal padding, and external margins:
typedef struct {
short left;
short top;
short right;
short bottom;
} Ttk_Padding;
Ttk_MakePadding is a convenience routine that constructs a Ttk_Padding structure with the specified left,
top, right, and bottom components.
Ttk_UniformPadding constructs a Ttk_Padding structure with all components equal to the specified border.
Ttk_AddPadding adds two Ttk_Paddings together and returns a combined padding containing the sum of the
individual padding components.
Ttk_RelievePadding adds an extra 2 pixels of padding to padding according to the specified relief. If
relief is TK_RELIEF_SUNKEN, adds two pixels at the top and left so the inner region is shifted down and
to the left. If it is TK_RELIEF_RAISED, adds two pixels at the bottom and right so the inner region is
shifted up and to the right. Otherwise, adds 1 pixel on all sides. This is typically used in element
geometry procedures to simulate a “pressed-in” look for pushbuttons.
See Also
Tk_GetReliefFromObj(3tk), Tk_GetPixelsFromObj(3tk), Tk_GetAnchorFromObj(3tk)
Synopsis
#include<tkTheme.h>
Ttk_Box
Ttk_MakeBox(int x, int y, int width, int height);
Ttk_Box
Ttk_PadBox(Ttk_Box parcel, Ttk_Padding padding);
Ttk_Box
Ttk_ExpandBox(Ttk_Box parcel, Ttk_Padding padding);
Ttk_Box
Ttk_PackBox(Ttk_Box *cavity, int width, int height, Ttk_Side side);
Ttk_Box
Ttk_StickBox(Ttk_Box parcel, int width, int height, unsigned sticky);
Ttk_Box
Ttk_PlaceBox(Ttk_Box *cavity, int width, int height, Ttk_Side side, unsigned sticky);
Ttk_Box
Ttk_AnchorBox(Ttk_Box parcel, int width, int height, Tk_Anchor anchor);
Ttk_Padding
Ttk_MakePadding(short left, short top, short right, short bottom);
Ttk_Padding
Ttk_UniformPadding(short border);
Ttk_Padding
Ttk_AddPadding(Ttk_Padding padding1, Ttk_Padding padding2;
Ttk_Padding
Ttk_RelievePadding(Ttk_Padding padding, int relief);
int
Ttk_BoxContains(Ttk_Box box, int x, int y);
int
Ttk_GetPaddingFromObj(Tcl_Interp *interp, Tk_Window tkwin, Tcl_Obj *objPtr, Ttk_Padding *padding_rtn);
int
Ttk_GetBorderFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, Ttk_Padding *padding_rtn);
int
Ttk_GetStickyFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, int *sticky_rtn);
