31 #if defined (_MGNCSCTRL_TOOLBAR) || defined (_MGNCSCTRL_IMWORDSEL) 33 #ifndef _MGUI_NCSCTRL_LINELAYOUTPIECE_H 34 #define _MGUI_NCSCTRL_LINELAYOUTPIECE_H 40 typedef struct _mLineLayoutPieceClass mLineLayoutPieceClass;
41 typedef struct _mLineLayoutPiece mLineLayoutPiece;
43 #define NCS_LINELAYOUTPIECENODE_FLAG_FIXED 0x00 //the size of piece is fixed 44 #define NCS_LINELAYOUTPIECENODE_FLAG_AUTO 0x01 //the size of piece must bigger than def_size 45 typedef struct _mLineLayoutPieceNode {
47 struct _mLineLayoutPieceNode * next, *prev;
49 unsigned int def_min_size:12;
50 unsigned int def_max_size:12;
51 }mLineLayoutPieceNode;
53 #define mLineLayoutPieceClassHeader(clss, superCls) \ 54 mLayoutPieceClassHeader(clss, superCls) \ 55 BOOL (*addPiece)(clss*, mHotPiece *piece, int type, int min_size, int max_size); \ 56 BOOL (*appendPiece)(clss*, mHotPiece *piece, int type, int min_size, int max_size); \ 57 void (*recalc)(clss*); \ 58 mLineLayoutPieceNode * (*find)(clss *,mHotPiece *piece); \ 59 void (*reset)(clss*, void (*free_piece)(mHotPiece*)); 61 struct _mLineLayoutPieceClass
63 mLineLayoutPieceClassHeader(mLineLayoutPiece, mLayoutPiece)
66 extern mLineLayoutPieceClass g_stmLineLayoutPieceCls;
68 #define mLineLayoutPieceHeader(clss) \ 69 mLayoutPieceHeader(clss) \ 74 unsigned short direction:1; \ 75 unsigned short autoWrap:1; \ 76 unsigned short line_height:14; \ 77 unsigned char margin; \ 78 unsigned char space; \ 79 mLineLayoutPieceNode *node; \ 80 mLineLayoutPieceNode *tail_node; 83 struct _mLineLayoutPiece
85 mLineLayoutPieceHeader(mLineLayoutPiece)
88 enum mLineLayoutPieceProps{
89 NCSP_LINELAYOUTPIECE_COUNT = LINELAYOUTPIECE_PROP_BEGIN,
90 NCSP_LINELAYOUTPIECE_LINE_HEIGHT,
91 NCSP_LINELAYOUTPiECE_AUTOWRAP = PIECECOMM_PROP_AUTOWRAP,
92 NCSP_LINELAYOUTPIECE_DIRECTION = PIECECOMM_PROP_DIRECTION,
93 NCSP_LINELAYOUTPIECE_SPACE = PIECECOMM_PROP_SPACE,
94 NCSP_LINELAYOUTPIECE_MARGIN = PIECECOMM_PROP_MARGIN
102 #endif //_MGNCSCTRL_TOOLBAR