1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
/************************************************************************/
/* */
/* Infrastructure for building and managing hierarchy trees. */
/* */
/************************************************************************/
# include <appFrame.h>
typedef struct TreeNode
{
/* 1 */
int tnChildCount;
int tnNumberInParent;
struct TreeNode ** tnChildren;
struct TreeNode * tnParent;
/* 2 */
unsigned long tnId;
char * tnLabel;
char * tnIconName;
APP_BITMAP_IMAGE tnPixmap;
APP_BITMAP_MASK tnMask;
int tnLabelStrlen;
int tnLabelWidth;
/* 3 */
int tnIsOpen;
int tnX0;
int tnY0;
int tnY1;
} TreeNode;
typedef struct TreeDocument
{
TreeNode * tdRootNode;
TreeNode * tdCurrentNode;
APP_COLOR_RGB tdBlackColor;
APP_COLOR_RGB tdWhiteColor;
APP_COLOR_RGB tdLineColor;
APP_COLOR_RGB * tdCurrentColor;
APP_FONT * tdFontStruct;
int tdGridSize;
} TreeDocument;
typedef enum ClickPosition
{
CLICKposSTRIP,
CLICKposOPEN,
CLICKposICON,
CLICKposLABEL
} ClickPosition;
# define appTreeMakeCurrent( td, tn ) (td)->tdCurrentNode= (tn)
/************************************************************************/
/* */
/* Routine declarations. */
/* */
/************************************************************************/
extern TreeNode * appTreeAddNode( TreeDocument * td );
extern void appInitTreeDocument( TreeDocument * td );
extern void appCleanTreeDocument( TreeDocument * td );
extern void appDeleteNode( TreeDocument * td,
TreeNode * tn );
extern int appTreeSetLabel( TreeNode * tn,
const char * label );
extern int appTreeSetIconName( TreeNode * tn,
const char * iconName );
extern int appLayoutTree( TreeDocument * td,
AppDrawingData * add,
EditApplication * ea );
extern int appDrawTree( TreeDocument * td,
AppDrawingData * add,
const DocumentRectangle * drClip,
int ox,
int oy );
extern TreeNode * appTreeFindNode( TreeDocument * td,
int * pPosition,
int x,
int y );
extern int appTreeProcessMouseClick( TreeDocument * td,
EditApplication * ea,
AppDrawingData * add,
APP_MOUSE_CLICK_EVENT * bevent,
int ox,
int oy );
extern int appTreeAllocateResources( TreeDocument * td,
AppDrawingData * add,
AppColors * ac,
const char * font );
void appDrawTreeRectangle( TreeDocument * td,
AppDrawingData * add,
DocumentRectangle * drVisible,
DocumentRectangle * drClip,
int ox,
int oy );
|