43 #if defined (_MGNCSCTRL_TOOLBAR) || defined (_MGNCSCTRL_IMWORDSEL)
45 #ifndef _MGUI_NCSCTRL_LINELAYOUTPIECE_H
46 #define _MGUI_NCSCTRL_LINELAYOUTPIECE_H
52 typedef struct _mLineLayoutPieceClass mLineLayoutPieceClass;
53 typedef struct _mLineLayoutPiece mLineLayoutPiece;
55 #define NCS_LINELAYOUTPIECENODE_FLAG_FIXED 0x00 //the size of piece is fixed
56 #define NCS_LINELAYOUTPIECENODE_FLAG_AUTO 0x01 //the size of piece must bigger than def_size
57 typedef struct _mLineLayoutPieceNode {
59 struct _mLineLayoutPieceNode * next, *prev;
61 unsigned int def_min_size:12;
62 unsigned int def_max_size:12;
63 }mLineLayoutPieceNode;
65 #define mLineLayoutPieceClassHeader(clss, superCls) \
66 mLayoutPieceClassHeader(clss, superCls) \
67 BOOL (*addPiece)(clss*, mHotPiece *piece, int type, int min_size, int max_size); \
68 BOOL (*appendPiece)(clss*, mHotPiece *piece, int type, int min_size, int max_size); \
69 void (*recalc)(clss*); \
70 mLineLayoutPieceNode * (*find)(clss *,mHotPiece *piece); \
71 void (*reset)(clss*, void (*free_piece)(mHotPiece*));
73 struct _mLineLayoutPieceClass
75 mLineLayoutPieceClassHeader(mLineLayoutPiece, mLayoutPiece)
78 extern mLineLayoutPieceClass g_stmLineLayoutPieceCls;
80 #define mLineLayoutPieceHeader(clss) \
81 mLayoutPieceHeader(clss) \
86 unsigned short direction:1; \
87 unsigned short autoWrap:1; \
88 unsigned short line_height:14; \
89 unsigned char margin; \
90 unsigned char space; \
91 mLineLayoutPieceNode *node; \
92 mLineLayoutPieceNode *tail_node;
95 struct _mLineLayoutPiece
97 mLineLayoutPieceHeader(mLineLayoutPiece)
100 enum mLineLayoutPieceProps{
101 NCSP_LINELAYOUTPIECE_COUNT = LINELAYOUTPIECE_PROP_BEGIN,
102 NCSP_LINELAYOUTPIECE_LINE_HEIGHT,
103 NCSP_LINELAYOUTPiECE_AUTOWRAP = PIECECOMM_PROP_AUTOWRAP,
104 NCSP_LINELAYOUTPIECE_DIRECTION = PIECECOMM_PROP_DIRECTION,
105 NCSP_LINELAYOUTPIECE_SPACE = PIECECOMM_PROP_SPACE,
106 NCSP_LINELAYOUTPIECE_MARGIN = PIECECOMM_PROP_MARGIN
114 #endif //_MGNCSCTRL_TOOLBAR