Return to Appendix B.

NVIS.H
// Matt Streeter
// 2/27/00
// NVIS.H
// Header for class TNVisWindow; window class for visualization of a
// single neural network.
// Copyright Matt Streeter, 2000.  All rights reserved

#ifndef __NVIS_H__
#define __NVIS_H__

#include <owl/owlpch.h>
#include <owl/applicat.h>
#include <owl/framewin.h>
#include <owl/dc.h>
#include <owl/inputdia.h>

#include "network.h"
#include "types.h"
#include "eswindow.h"
#include "backprop.h"

struct TDrawnWeight
{
	TPoint P1,P2,PCenter;
};

class TNVisWindow : public TESWindow {
  public:
	TNVisWindow(TWindow *pParent,Network *pNetwork,Chromosome *pChromosome,
		Parameter *pParam);
	~TNVisWindow();
	bool IdleAction(long);
   void BackProp();
  	double GetFitness();

	static TColor mGrayLineColor;
	static TColor mRingColor;
	static TColor mActivityColor;

  protected:
	TBackpropWindow *mpBackpropWin;
	TEdit *mpSampleEdit;
	TESStatic *mpSampleStatic;
	TScrollBar *mpHScroll;
	Network mNetwork;
	double *mpWeights;
	int miWeights;
	int miSample;
	double mdMaxWeight;
	float mfNodeRadius;
	TPoint *mpNodeCenterPoints;
   TDrawnWeight *mpWeightEndPoints;
	int miSelectedNode,miSelectedWeight,miSelectedWeightSign;
   Parameter mParam;
   Chromosome mChromosome;
	char *mpFilename;
   byte mbShowSigmas;

	void SetupWindow();
	void Paint(TDC&, bool, TRect&);
	int FindNode(TPoint& point);
	int FindWeight(TPoint& point);
	void DrawHighlight(int iNode,byte bHighlight);
	void DrawNodeInfo();
	TPoint DrawWeight(TDC& dc,TPoint& P1,TPoint& P2,double dNormWeight,
		double dNormSigma,double dMinSigmaLen,double dMaxSigmaLen);
	void EvLButtonDown(uint, TPoint& point);
	void EvLButtonUp(uint, TPoint&);
	void EvMouseMove(uint modKeys, TPoint& point);
	void EvSampleScroll(UINT code);
	void EvSampleEdit(UINT code);
	void EvSize(UINT SizeType, TSize& Size);

	void CmFileLoad();
	void CmFileSave();
	void CmFileSaveAs();
	void CmFileLoadTestSet();
	void CmNetworkEval();
	void CmNetworkViewActivations();
	void CmNetworkBackProp();
	void CmViewVolatility();

	void CeFileSave(TCommandEnabler& ce);
	void CeViewVolatility(TCommandEnabler& ce);

	int SaveAs(char *pFile);
	int Load(char *pFile);
	void UpdateSampleEdit();
	void UpdateCaption();

	DECLARE_RESPONSE_TABLE(TNVisWindow);
};

TColor WeightToColor(double dNormWeight);
TColor SigmaToColor(double dNormSigma);

#endif // __NVIS_H__

Return to Appendix B.