#ifndef _DISPLAY_H #define _DISPLAY_H #include "CPstring.h" // forward reference for tree.... struct TreeNode; // Display Class: animates drawing of trees // // Display(ostream & OutputStream, -- Constructor (stream and // displayColor defaultColor=black); -- color to draw) // void InitializeTreeNode(TreeNode * node) -- Initially Draws Node and // line to its parent // void FlashNode(TreeNode * node ); -- turns node on and off with a delay // void MoveNode(TreeNode * node); -- Moves a node on the screen // void ConnectNodeToParent(TreeNode * node); -- draws line from child to // parent // void DisconnectNodeFromParent (TreeNode * node); deletes line from child // to parent // void DeleteNode (TreeNode * node); deletes node from animation // void SetNodeDefaultColor(TreeNode * node); sets node to the default color // void SetNodeColor(TreeNode * node, sets node to specifiec color // displayColor color); // void UpdateLevelCount(int maxLevel); Update # of levels in tree // void Stall(int delay); -- causes a delay in samba class Display { public: static const int DELAY_TIME; //Default time to stall enum displayColor {black, red, blue, orange, yellow, green, cyan}; Display(ostream & OutputStream, // constructor stream and displayColor defaultColor=black); // default color void InitializeTreeNode(TreeNode * node); // Issue initial // samba display command void FlashNode(TreeNode *node); // Have node flash void MoveNode(TreeNode * node); // Node changes position void ConnectNodeToParent(TreeNode * node); // draw line from node // to parent void DisconnectNodeFromParent // delete line from node (TreeNode * node); // to parent void DeleteNode(TreeNode * node); // delete node in samba void SetNodeColor(TreeNode * node, // set color of node in displayColor color); // samba void SetNodeDefaultColor(TreeNode * node); // set color of node // to default value void UpdateLevelCount(int maxLevel); // update # of levels // in tree void Stall(int delay = DELAY_TIME); // tell samba to stall private: double ComputeXPosition(int level, int id); // Compute x position double ComputeYPosition(int level); // Compute y position string GetNodeColor(displayColor color); // get string for color void DeleteLine(int fromLevel, int fromID, // Delete line between int toLevel, int toID); // two nodes void DrawLine(int fromLevel, int fromID, // draw line between 2 nodes int toLevel, int toID); ostream & myOutputStream; // output stream for data int myMaxLevel; // # of levels in tree double myLowLevelMaxNodes; // # of nodes on bottom level int myID; // ID # of display displayColor myDefaultColor; // Color for default use }; #endif