#include <argl.h>
Collaboration diagram for Argl:
Public Member Functions | |
int | run (int) |
starts the main application loop and shows the application main window according to startup parameters | |
Static Public Member Functions | |
static Argl * | create (HINSTANCE) |
instantiates Argl using an instance handle | |
Protected Types | |
enum | CameraType { Orthographic, Perspective } |
Protected Member Functions | |
Argl (HWND, HINSTANCE) | |
constructor for the application-class | |
virtual | ~Argl () |
void | onResize () |
considers new viewing conditions on window resize | |
void | onMouseButton (WORD, POINTS) |
reacts on mouse button events allowing node selection (graph navigation) | |
void | onMouseMove (WORD, POINTS) |
reacts on mouse move events allowing node-sector-highlighting | |
void | onGetMinMaxInfo (LPMINMAXINFO) |
void | draw () |
Draws the scene. Renders the concentric circles, nodes are rendered recursiverly, and the node sector at mouse-roll-over on a node. | |
void | rerender () |
enforces rerendering of the scene | |
void | setModelView () |
calculates and sets the model view matrix | |
void | openFile () |
opens file dialog for selecting a dataset-file | |
void | applyStyle () |
opens a open file dialogue for selecting a stylesheet-file | |
bool | readStyleSheet (const char *filename) |
reads the style-sheet from the xml file and updates the parameters | |
void | drawNode (const Node &, GLfloat, GLfloat, float interpolation, const Node &, const Node &) |
bool | findNode (const Node &, GLfloat, GLfloat, Node &) |
void | setCamera () |
Sets a orthographic or perspective camera, as selected via the GUI. | |
Static Protected Member Functions | |
static LRESULT CALLBACK | WindowProc (HWND, UINT, WPARAM, LPARAM) |
window procedure, redirecting received windows messages to proper methods | |
static void | onCreate (HWND) |
on window creation incorporates Windows and OpenGL, allowing OpenGL drawing in the window | |
static void | onDestroy (HWND) |
on window destruction disables OpenGL | |
static bool | readFile (const char *, Node &, GLfloat[4]) |
opens XML file containing a dataset to read a tree from the file (XML), calls Argl::createNode(const TiXmlNode* xmlNode,Node &node,GLfloat defaultColor[4]) | |
static bool | createNode (const TiXmlNode *, Node &, GLfloat[4]) |
static Polar< float > | getFishEyeTransformation (const Complex< float > &, float, float) |
Calculates the position distorted by the fisheye effect. | |
static Polar< float > | getFishEyeInverseTransformation (const Complex< float > &, float, float) |
Undistorts the given position (distorted by fisheye effect). Is used for calculation of node-mouse-collision detection. | |
static float | getFishEyeTransformationSlope (const Complex< float > &, float, float) |
Private Member Functions | |
Argl (Argl &) | |
void | operator= (Argl &) |
Private Attributes | |
bool | dragging |
bool | placementConsistencyHint |
int | keyframeFrames |
float | keyframeTime |
float | fishEyeSlope |
CameraType | cameraType |
Node | hoverNode |
SlowInSlowOutTreeManager | slowInSlowOutTreeManager |
GLuint | circleList |
GLuint | fontList |
GLuint | renderList |
GLfloat | draggedSize |
GLfloat | draggedYaw |
GLfloat | draggedPitch |
GLfloat | edgeLineWidth |
GLfloat | circleLineWidth |
GLfloat | nodeRadius |
GLfloat | edgeColor [4] |
GLfloat | nonTreeEdgeColor [4] |
GLfloat | backgroundColor [4] |
GLfloat | defaultNodeColor [4] |
GLfloat | textColor [4] |
GLfloat | nodeSectorColor [4] |
GLint | viewport [4] |
GLdouble | modelViewMatrix [16] |
GLdouble | projectionMatrix [16] |
DWORD | lastTick |
POINTS | draggedPoint |
HWND | hWnd |
HINSTANCE | hInstance |
ColorMap< float > | colorMap |
ColorControl * | pColorControl |
ControlDialog * | pControlDialog |
Static Private Attributes | |
static HDC | hDc |
static HGLRC | hGlRc |
static Argl * | pArgl = 0 |
Friends | |
class | ControlDialog |
class | ColorControl |
class | ColorMap< float > |
Classes | |
struct | Color |
class | ColorControl |
ColorControl encapsulates a Windows control, allowing color definition visualization and interactive modification. More... | |
class | ColorMap |
ColorMap is an extended Map using Color as value and allowing linear interpolation between two neighboring keys. More... | |
class | ControlDialog |
ControlDialog displays a popup window controlling refinement and rendering parameters. More... |
enum Argl::CameraType [protected] |
Argl::Argl | ( | HWND | , | |
HINSTANCE | ||||
) | [protected] |
constructor for the application-class
Argl::~Argl | ( | ) | [protected, virtual] |
Argl::Argl | ( | Argl & | ) | [private] |
int Argl::run | ( | int | ) |
starts the main application loop and shows the application main window according to startup parameters
LRESULT CALLBACK Argl::WindowProc | ( | HWND | , | |
UINT | , | |||
WPARAM | , | |||
LPARAM | ||||
) | [static, protected] |
window procedure, redirecting received windows messages to proper methods
void Argl::onCreate | ( | HWND | ) | [static, protected] |
on window creation incorporates Windows and OpenGL, allowing OpenGL drawing in the window
void Argl::onDestroy | ( | HWND | ) | [static, protected] |
on window destruction disables OpenGL
void Argl::onResize | ( | ) | [protected] |
considers new viewing conditions on window resize
void Argl::onMouseButton | ( | WORD | , | |
POINTS | ||||
) | [protected] |
reacts on mouse button events allowing node selection (graph navigation)
void Argl::onMouseMove | ( | WORD | , | |
POINTS | ||||
) | [protected] |
reacts on mouse move events allowing node-sector-highlighting
void Argl::onGetMinMaxInfo | ( | LPMINMAXINFO | ) | [protected] |
void Argl::draw | ( | ) | [protected] |
Draws the scene. Renders the concentric circles, nodes are rendered recursiverly, and the node sector at mouse-roll-over on a node.
void Argl::rerender | ( | ) | [protected] |
enforces rerendering of the scene
void Argl::setModelView | ( | ) | [protected] |
calculates and sets the model view matrix
void Argl::openFile | ( | ) | [protected] |
opens file dialog for selecting a dataset-file
void Argl::applyStyle | ( | ) | [protected] |
opens a open file dialogue for selecting a stylesheet-file
bool Argl::readFile | ( | const char * | , | |
Node & | , | |||
GLfloat | [4] | |||
) | [static, protected] |
opens XML file containing a dataset to read a tree from the file (XML), calls Argl::createNode(const TiXmlNode* xmlNode,Node &node,GLfloat defaultColor[4])
bool Argl::readStyleSheet | ( | const char * | filename | ) | [protected] |
reads the style-sheet from the xml file and updates the parameters
bool Argl::createNode | ( | const TiXmlNode * | xmlNode, | |
Node & | node, | |||
GLfloat | defaultColor[4] | |||
) | [static, protected] |
Parses the XML structure, for each representation of a node in the file an instance of Node is created with the attributes read from the file and added to the tree. Recursively called for each node's children.
void Argl::drawNode | ( | const Node & | node1, | |
GLfloat | parentX, | |||
GLfloat | parentY, | |||
float | interpolation, | |||
const Node & | keyframe1, | |||
const Node & | keyframe2 | |||
) | [protected] |
Renders a node and its edge to its parent + edges to nodes, this node has a non-child connection to. The current position is calculated from the interpolation between two keyframes: the old layout and the layout with the newly selected focus node as root node. The function is recursively called on the node's children.
Searches given tree for the node at the given screen position. Recursively called upon tree's children. Copies the node into passed reference and returns true, if the node is found for which the given position lies within this nodes sphere (on screen).
Polar< float > Argl::getFishEyeTransformation | ( | const Complex< float > & | , | |
float | , | |||
float | ||||
) | [static, protected] |
Calculates the position distorted by the fisheye effect.
Polar< float > Argl::getFishEyeInverseTransformation | ( | const Complex< float > & | , | |
float | , | |||
float | ||||
) | [static, protected] |
Undistorts the given position (distorted by fisheye effect). Is used for calculation of node-mouse-collision detection.
float Argl::getFishEyeTransformationSlope | ( | const Complex< float > & | complex, | |
float | fishEyeSlope, | |||
float | fixR | |||
) | [static, protected] |
Returns the slope at the atan-function, which is used for the fisheye effect, for the given position (radius). The slope is used for scaling the size of the node according to the fisheye effect
void Argl::setCamera | ( | ) | [protected] |
Sets a orthographic or perspective camera, as selected via the GUI.
void Argl::operator= | ( | Argl & | ) | [private] |
friend class ControlDialog [friend] |
friend class ColorControl [friend] |
friend class ColorMap< float > [friend] |
HDC Argl::hDc [static, private] |
HGLRC Argl::hGlRc [static, private] |
Argl * Argl::pArgl = 0 [static, private] |
bool Argl::dragging [private] |
bool Argl::placementConsistencyHint [private] |
int Argl::keyframeFrames [private] |
float Argl::keyframeTime [private] |
float Argl::fishEyeSlope [private] |
CameraType Argl::cameraType [private] |
Node Argl::hoverNode [private] |
GLuint Argl::circleList [private] |
GLuint Argl::fontList [private] |
GLuint Argl::renderList [private] |
GLfloat Argl::draggedSize [private] |
GLfloat Argl::draggedYaw [private] |
GLfloat Argl::draggedPitch [private] |
GLfloat Argl::edgeLineWidth [private] |
GLfloat Argl::circleLineWidth [private] |
GLfloat Argl::nodeRadius [private] |
GLfloat Argl::edgeColor[4] [private] |
GLfloat Argl::nonTreeEdgeColor[4] [private] |
GLfloat Argl::backgroundColor[4] [private] |
GLfloat Argl::defaultNodeColor[4] [private] |
GLfloat Argl::textColor[4] [private] |
GLfloat Argl::nodeSectorColor[4] [private] |
GLint Argl::viewport[4] [private] |
GLdouble Argl::modelViewMatrix[16] [private] |
GLdouble Argl::projectionMatrix[16] [private] |
DWORD Argl::lastTick [private] |
POINTS Argl::draggedPoint [private] |
HWND Argl::hWnd [private] |
HINSTANCE Argl::hInstance [private] |
ColorMap<float> Argl::colorMap [private] |
ColorControl* Argl::pColorControl [private] |
ControlDialog* Argl::pControlDialog [private] |