LayoutP.h
资源名称:X264CODEC.rar [点击查看]
上传用户:lctgjx
上传日期:2022-06-04
资源大小:8887k
文件大小:6k
源码类别:
流媒体/Mpeg4/MP4
开发平台:
Visual C++
- /*
- * $XConsortium: LayoutP.h,v 1.2 92/01/22 18:03:08 keith Exp $
- *
- * Copyright 1991 Massachusetts Institute of Technology
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Author: Keith Packard, MIT X Consortium
- */
- #ifndef _XawLayoutP_h
- #define _XawLayoutP_h
- #if defined(LAYOUT)
- # include "Layout.h"
- #else
- # include <X11/Xaw3d/Layout.h>
- #endif
- #include <X11/ConstrainP.h>
- #ifdef MOTIF
- # include "Xm/ManagerP.h"
- #endif
- #define GlueEqual(a,b) ((a).order == (b).order && (a).value == (b).value)
- #define AddGlue(r,a,b) if (a.order == b.order) {
- r.order = a.order;
- r.value = a.value + b.value;
- } else {
- if (a.order > b.order)
- r = a;
- else
- r = b;
- }
- #define MinGlue(r,a,b) if (a.order == b.order) {
- r.order = a.order;
- if (a.value > b.value)
- r.value = b.value;
- else
- r.value = a.value;
- } else {
- if (a.order > b.order)
- r = b;
- else
- r = a;
- }
- #define SubGlue(r,a,b) if (a.order == b.order) {
- r.order = a.order;
- r.value = a.value - b.value;
- } else {
- if (a.order > b.order)
- r = a;
- else {
- r.order = b.order;
- r.value = -b.value;
- }
- }
- #define ZeroGlue(g) ((g).value = 0, (g).order = 0, (g).expr = 0)
- #define IsZeroGlue(g) ((g).value == 0)
- #define QuarkToWidget(l,q) XtNameToWidget((Widget) l,
- (char *) XrmQuarkToString(q));
- typedef enum _BoxType { BoxBox, WidgetBox, GlueBox, VariableBox } BoxType;
- typedef enum _LayoutDirection {
- LayoutHorizontal = 0, LayoutVertical = 1
- } LayoutDirection;
- typedef enum _Operator {
- Plus, Minus, Times, Divide, Percent
- } Operator;
- typedef enum _ExprType {
- Constant,
- Binary,
- Unary,
- Width,
- Height,
- Variable
- } ExprType;
- typedef struct _Expr *ExprPtr;
- typedef struct _Expr {
- ExprType type;
- union {
- double constant;
- struct {
- Operator op;
- ExprPtr left, right;
- } binary;
- struct {
- Operator op;
- ExprPtr down;
- } unary;
- XrmQuark width;
- XrmQuark height;
- XrmQuark variable;
- } u;
- } ExprRec;
- typedef struct _Glue {
- int order;
- double value;
- ExprPtr expr;
- } GlueRec, *GluePtr;
- typedef struct _BoxParams {
- GlueRec stretch[2];
- GlueRec shrink[2];
- } BoxParamsRec, *BoxParamsPtr;
- typedef struct _Box *BoxPtr;
- typedef BoxPtr LayoutPtr;
- typedef struct _Box {
- BoxPtr nextSibling;
- BoxPtr parent;
- BoxParamsRec params;
- int size[2];
- int natural[2];
- BoxType type;
- union {
- struct {
- BoxPtr firstChild;
- LayoutDirection dir;
- } box;
- struct {
- XrmQuark quark;
- Widget widget;
- } widget;
- struct {
- ExprPtr expr;
- } glue;
- struct {
- XrmQuark quark;
- ExprPtr expr;
- } variable;
- } u;
- } LBoxRec; /* this conflicted with Box's BoxRec, besides, it's not used anywhere */
- typedef struct _SubInfo {
- int naturalSize[2];
- int naturalBw;
- } SubInfoRec, *SubInfoPtr;
- /* #define New(t) (t *) malloc(sizeof (t)) */
- #define New(t) (t *) XtCalloc(1,sizeof (t))
- #define Dispose(p) XtFree((char *) p)
- #define Some(t,n) (t*) XtMalloc(sizeof(t) * n)
- #define More(p,t,n) ((p)? (t *) XtRealloc((char *) p, sizeof(t)*n):Some(t,n)
- /*********************************************************************
- *
- * Layout Widget Private Data
- *
- *********************************************************************/
- /* New fields for the Layout widget class record */
- typedef struct _LayoutClassPart {
- int foo; /* keep compiler happy. */
- } LayoutClassPart;
- /* Full Class record declaration */
- typedef struct _LayoutClassRec {
- CoreClassPart core_class;
- CompositeClassPart composite_class;
- ConstraintClassPart constraint_class;
- #ifdef MOTIF
- XmManagerClassPart manager_class;
- #endif
- LayoutClassPart layout_class;
- } LayoutClassRec;
- extern LayoutClassRec layoutClassRec;
- typedef struct _LayoutConstraintsRec {
- #ifdef MOTIF
- XmManagerConstraintPart manager;
- #endif
- SubInfoRec layout;
- } LayoutConstraintsRec, *LayoutConstraints;
- #define SubInfo(w) (&(((LayoutConstraints) (w)->core.constraints)->layout))
- /* New Fields for the Layout widget record */
- typedef struct {
- /* resources */
- LayoutPtr layout;
- Boolean debug;
- } LayoutPart;
- /**************************************************************************
- *
- * Full instance record declaration
- *
- **************************************************************************/
- typedef struct _LayoutRec {
- CorePart core;
- CompositePart composite;
- ConstraintPart constraint;
- #ifdef MOTIF
- XmManagerPart manager;
- #endif
- LayoutPart layout;
- } LayoutRec;
- #endif