[Avida-SVN] r2698 - in branches/vo/source: targets/viewer-fltk viewer-core
michaelvo at myxo.css.msu.edu
michaelvo at myxo.css.msu.edu
Tue Jul 1 13:13:56 PDT 2008
Author: michaelvo
Date: 2008-07-01 16:13:56 -0400 (Tue, 01 Jul 2008)
New Revision: 2698
Modified:
branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.cc
branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.h
branches/vo/source/viewer-core/cCoreView_Map.cc
Log:
Created a few classes for the core viewer, and modified the existing FLTK driver
Modified: branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.cc
===================================================================
--- branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.cc 2008-07-01 20:11:01 UTC (rev 2697)
+++ branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.cc 2008-07-01 20:13:56 UTC (rev 2698)
@@ -27,8 +27,10 @@
#include "cAnalyze.h"
#include "cChangeList.h"
#include "cClassificationManager.h"
+#include "cCoreView_Text.h"
#include "cGenotype.h"
#include "cHardwareBase.h"
+#include "cHardwareManager.h"
#include "cOrganism.h"
#include "cPopulation.h"
#include "cPopulationCell.h"
@@ -36,18 +38,16 @@
#include "cString.h"
#include "cStringList.h"
#include "cWorld.h"
-
+#include "cEnvironment.h"
#include "cDriverManager.h"
#include "cFLTKWindow.h"
#include "cFLTKBox.h"
#include "tFLTKButton.h"
-
#include "avidalogo.xpm"
-
#include <cstdlib>
#include <FL/Fl.H>
-
+#include <FL/Fl_Tabs.h>
#include <signal.h>
// #include <FL/Fl_JPEG_Image.H>
@@ -58,10 +58,10 @@
#define FLTK_MAINWIN_HEIGHT 600
#define FLTK_MENUBAR_HEIGHT 35
#define FLTK_SPACING 5
-#define FLTK_GRID_SIDE 502
+#define FLTK_GRID_SIDE 450
-#define FLTK_SIDEBAR_WIDTH (FLTK_MAINWIN_WIDTH - FLTK_GRID_SIDE - 3*FLTK_SPACING)
-#define FLTK_SIDEBAR_HEIGHT (FLTK_MAINWIN_HEIGHT - 2*FLTK_SPACING)
+#define FLTK_SIDEBAR_WIDTH (FLTK_MAINWIN_WIDTH - FLTK_GRID_SIDE - 3*FLTK_SPACING-20)
+#define FLTK_SIDEBAR_HEIGHT (FLTK_MAINWIN_HEIGHT - 2*FLTK_SPACING-20)
#define FLTK_BODY_HEIGHT (FLTK_MAINWIN_HEIGHT - 2 * FLTK_MENUBAR_HEIGHT - 2 * FLTK_SPACING)
#define FLTK_MENU1_Y FLTK_BODY_HEIGHT
#define FLTK_MENU2_Y (FLTK_MENU1_Y + FLTK_MENUBAR_HEIGHT + FLTK_SPACING)
@@ -71,73 +71,170 @@
cDriver_FLTKViewer::cDriver_FLTKViewer(cWorld* world)
: m_world(world)
, m_info(world, 18)
+ , m_text(world)
, m_done(false)
, m_main_window(FLTK_MAINWIN_WIDTH, FLTK_MAINWIN_HEIGHT, "Avida")
- , m_body_box(m_main_window, 0, 0, FLTK_MAINWIN_WIDTH, FLTK_BODY_HEIGHT)
- , m_update_box(m_main_window, 100, FLTK_MENU2_Y, 200, FLTK_MENUBAR_HEIGHT, "Update: 0")
- , m_title_box(m_main_window, 0, FLTK_MENU2_Y, 80, FLTK_MENUBAR_HEIGHT)
- , m_grid_view(m_info, m_main_window, FLTK_SPACING, FLTK_SPACING, FLTK_GRID_SIDE, FLTK_GRID_SIDE)
- , m_legend(m_grid_view, m_main_window, FLTK_GRID_SIDE + 2*FLTK_SPACING, FLTK_SPACING, FLTK_SIDEBAR_WIDTH, FLTK_SIDEBAR_HEIGHT)
- , m_grid_view_menu(m_main_window, 140, FLTK_MENU1_Y, 80, 30, "View:")
- , m_grid_tags_menu(m_main_window, 270, FLTK_MENU1_Y, 80, 30, "Tags:")
- , m_grid_symbol_menu(m_main_window, 400, FLTK_MENU1_Y, 80, 30, "Mark:")
- , m_pause_button(m_main_window, 400, FLTK_MENU2_Y, 30, 30, "@||")
- , m_quit_button(m_main_window, 440, FLTK_MENU2_Y, 30, 30, "@square")
+
{
// Setup the initial view mode (loaded from avida.cfg)
m_info.SetViewMode(world->GetConfig().VIEW_MODE.Get());
-
+
+ Fl_Tabs* tabs = new Fl_Tabs(10, 10, FLTK_MAINWIN_WIDTH-20, FLTK_MENU2_Y-15);
+
+ Fl_Group* a = new Fl_Group(10, 35, FLTK_MAINWIN_WIDTH-20, FLTK_MENU2_Y-15, "&Map");
+ //fl_color(0xDD, 0xDD, 0xFF);
+ //a->color(fl_color());
+ //m_main_window = new cFLTKWindow(FLTK_MAINWIN_WIDTH, FLTK_MAINWIN_HEIGHT, "Avida");
+ m_body_box = new cFLTKBox(m_main_window, 0, 0, FLTK_MAINWIN_WIDTH, FLTK_BODY_HEIGHT);
+ m_title_box = new cFLTKBox(m_main_window, 0, FLTK_MENU2_Y, 80, FLTK_MENUBAR_HEIGHT);
+ m_grid_view = new cFLTKGridView(m_info, m_main_window, FLTK_SPACING+20, FLTK_SPACING+50, FLTK_GRID_SIDE, FLTK_GRID_SIDE);
+
+ m_legend = new cFLTKLegend(*m_grid_view, m_main_window, FLTK_GRID_SIDE + 2*FLTK_SPACING+20, FLTK_SPACING+50, FLTK_SIDEBAR_WIDTH, FLTK_SIDEBAR_HEIGHT);
+ m_grid_view_menu = new tFLTKMenu<cDriver_FLTKViewer>(m_main_window, 140, FLTK_MENU1_Y, 80, 30, "View:");
+ m_grid_tags_menu = new tFLTKMenu<cDriver_FLTKViewer>(m_main_window, 270, FLTK_MENU1_Y, 80, 30, "Tags:");
+ m_grid_symbol_menu = new tFLTKMenu<cDriver_FLTKViewer>(m_main_window, 400, FLTK_MENU1_Y, 80, 30, "Mark:");
+
+ a->end();
+
+ Fl_Group* b = new Fl_Group(10, 35, FLTK_MAINWIN_WIDTH-20, FLTK_MENU2_Y-15, "&Zoom");
+ {
+ m_org_inst_buffer = new Fl_Text_Buffer();
+ m_org_inst_display = new Fl_Text_Display(FLTK_SPACING+20, FLTK_SPACING+50, FLTK_MAINWIN_WIDTH-(FLTK_GRID_SIDE+FLTK_SPACING*2+20), FLTK_GRID_SIDE);
+ m_org_inst_display->buffer(m_org_inst_buffer);
+
+ m_cell_x_input = new Fl_Input(500, 50+FLTK_SPACING, 100, 30, "X");
+ m_cell_x_input->value("0");
+ m_cell_y_input = new Fl_Input(620, 50+FLTK_SPACING, 100, 30, "Y");
+ m_cell_y_input->value("0");
+ }
+
+ b->end();
+
+ Fl_Group* c = new Fl_Group(10, 35, FLTK_MAINWIN_WIDTH-20, FLTK_MENU2_Y-15, "&Stats");
+
+ //c->color(fl_color());
+ Fl_Box* framePopStats = new Fl_Box(FL_BORDER_FRAME, 20, 20, 300, 115, "");
+ {
+ //framePopStats->align(FL_ALIGN_TOP|FL_ALIGN_INSIDE|FL_ALIGN_LEFT);
+ PutInside(c, framePopStats);
+ framePopStats->color(FL_BLACK);
+
+ Fl_Multiline_Output* popStatsLabel = new Fl_Multiline_Output(10, 10, 200, 100, "");
+ m_pop_stats_label = new Fl_Multiline_Output(150, 10, 100, 100, "");
+ //popStatsLabel->set_boxtype(FL_NO_BOX, 0, 0, 0, 0);
+
+ popStatsLabel->labelfont(FL_COURIER);
+ popStatsLabel->value("Total Births:\nBreedTrue:\nParasites:\nEnergy:\nMax Fitness:\nMax Merit:");
+
+ popStatsLabel->box(FL_NO_BOX);
+ m_pop_stats_label->box(FL_NO_BOX);
+ popStatsLabel->labelfont(FL_COURIER);
+
+ PutInside(framePopStats, popStatsLabel);
+ PutInside(framePopStats, m_pop_stats_label);
+ }
+
+ Fl_Box* frameDomAveStats = new Fl_Box(FL_BORDER_FRAME, 20, 145, 400, 300, "");
+ {
+ PutInside(c, frameDomAveStats);
+ frameDomAveStats->color(FL_BLACK);
+ Fl_Multiline_Output* domAveStatsLabel = new Fl_Multiline_Output(10, 25, 130, 180, "");
+ domAveStatsLabel->value("Fitness:\nMerit:\nGestation:\nLength:\nCopy Length:\nExec Length:\nAbundance:\nBirths:\nBirthrate:\nTree Depth:\nGen. Ave:");
+ m_pop_dominant_label = new Fl_Multiline_Output(150, 25, 100, 180, "");
+ m_pop_average_label = new Fl_Multiline_Output(270, 25, 100, 180, "");
+ domAveStatsLabel->box(FL_NO_BOX);
+ m_pop_average_label->box(FL_NO_BOX);
+ m_pop_dominant_label->box(FL_NO_BOX);
+ PutInside(frameDomAveStats, domAveStatsLabel);
+ PutInside(frameDomAveStats, m_pop_average_label);
+ PutInside(frameDomAveStats, m_pop_dominant_label);
+ }
+
+ Fl_Box* frame_tasks = new Fl_Box(FL_BORDER_FRAME, 430, 145, 200, 300, "");
+ {
+ PutInside(c, frame_tasks);
+ frame_tasks->color(FL_BLACK);
+ Fl_Multiline_Output* task_label = new Fl_Multiline_Output(10, 25, 130, 180, "");
+ cString task_string="";
+ for(int n=0; n<m_world->GetEnvironment().GetNumTasks(); n++){
+ task_string+=m_world->GetEnvironment().GetTask(n).GetName();
+ task_string+="\n";
+ }
+ task_label->value(task_string);
+ m_task_label = new Fl_Multiline_Output(150, 25, 40, 180, "");
+ PutInside(frame_tasks, task_label);
+ PutInside(frame_tasks, m_task_label);
+ task_label->box(FL_NO_BOX);
+ m_task_label->box(FL_NO_BOX);
+ }
+
+ c->end();
+
+ tabs->end();
+
+ m_update_box = new cFLTKBox(m_main_window, 100, FLTK_MENU2_Y, 200, FLTK_MENUBAR_HEIGHT, "Update: 0");
+ m_pause_button = new tFLTKButton<cDriver_FLTKViewer>(m_main_window, 400, FLTK_MENU2_Y, 30, 30, "@||");
+ m_quit_button = new tFLTKButton<cDriver_FLTKViewer>(m_main_window, 440, FLTK_MENU2_Y, 30, 30, "@square");
+ m_org_inst_buffer->text("N/A");
cDriverManager::Register(static_cast<cAvidaDriver*>(this));
world->SetDriver(this);
-
+
m_main_window.SetSizeRange(FLTK_MAINWIN_WIDTH, FLTK_MAINWIN_HEIGHT);
m_main_window.SetBackgroundColor(cColor(0xDD, 0xDD, 0xFF));
- m_main_window.Resizable(m_body_box);
-
- m_update_box.SetType(cGUIBox::BOX_NONE);
- m_update_box.SetFontSize(FLTK_MENU_FONT_SIZE);
- m_update_box.SetFontAlign(FL_ALIGN_INSIDE | FL_ALIGN_LEFT);
- m_update_box.SetTooltip("Updates are the natural timescale in Avida");
- m_update_box.Refresh();
+ //m_main_window.Resizable(*m_body_box);
+ m_update_box->SetType(cGUIBox::BOX_NONE);
+ m_update_box->SetFontSize(FLTK_MENU_FONT_SIZE);
+ m_update_box->SetFontAlign(FL_ALIGN_INSIDE | FL_ALIGN_LEFT);
+ m_update_box->SetTooltip("Updates are the natural timescale in Avida");
+ m_update_box->Refresh();
- m_title_box.SetType(cGUIBox::BOX_NONE);
- m_title_box.SetFont(FL_HELVETICA_BOLD);
- m_title_box.SetFontSize(FLTK_MENU_FONT_SIZE);
- m_title_box.SetFontColor(cColor::DARK_MAGENTA);
+ m_title_box->SetType(cGUIBox::BOX_NONE);
+ m_title_box->SetFont(FL_HELVETICA_BOLD);
+ m_title_box->SetFontSize(FLTK_MENU_FONT_SIZE);
+ m_title_box->SetFontColor(cColor::DARK_MAGENTA);
cString title_tooltip;
title_tooltip.Set("Avida Version %s\nby Charles Ofria", VERSION);
- m_title_box.SetTooltip(title_tooltip);
- m_title_box.SetImage_XPM(avidalogo);
- m_title_box.Refresh();
+ m_title_box->SetTooltip(title_tooltip);
+ //m_title_box->SetImage_XPM(avidalogo);
+ m_title_box->Refresh();
- cCoreView_Map & map_info = m_grid_view.GetMapInfo();
+ cCoreView_Map & map_info = m_grid_view->GetMapInfo();
int num_modes = map_info.GetNumModes();
+
for (int i = 0; i < num_modes; i++) {
const cString & cur_name = map_info.GetModeName(i);
- const int cur_type = map_info.GetModeType(i);
+ const int cur_type = map_info.GetModeType(i);
if (cur_type == cCoreView_Map::VIEW_COLOR) {
- m_grid_view_menu.AddOption(cur_name, this, &cDriver_FLTKViewer::MenuCallback_View, i);
+ m_grid_view_menu->AddOption(cur_name, this, &cDriver_FLTKViewer::MenuCallback_View, i);
} else if (cur_type == cCoreView_Map::VIEW_TAGS) {
- m_grid_tags_menu.AddOption(cur_name, this, &cDriver_FLTKViewer::MenuCallback_View, i);
+ m_grid_tags_menu->AddOption(cur_name, this, &cDriver_FLTKViewer::MenuCallback_View, i);
} else if (cur_type == cCoreView_Map::VIEW_SYMBOLS) {
- m_grid_symbol_menu.AddOption(cur_name, this, &cDriver_FLTKViewer::MenuCallback_View, i);
+ m_grid_symbol_menu->AddOption(cur_name, this, &cDriver_FLTKViewer::MenuCallback_View, i);
}
+
}
- m_grid_view_menu.SetActive(0);
- m_grid_tags_menu.SetActive(0);
- m_grid_symbol_menu.SetActive(0);
- m_pause_button.SetCallback(this, &cDriver_FLTKViewer::ButtonCallback_Pause);
- m_pause_button.SetTooltip("Pause");
- m_quit_button.SetCallback(this, &cDriver_FLTKViewer::ButtonCallback_Quit);
- m_quit_button.SetFontColor(cColor::DARK_RED);
- m_quit_button.SetFontSize(12);
- m_quit_button.SetTooltip("Quit");
+ m_grid_view_menu->SetActive(0);
+ m_grid_tags_menu->SetActive(0);
+ m_grid_symbol_menu->SetActive(0);
+
+ m_pause_button->SetCallback(this, &cDriver_FLTKViewer::ButtonCallback_Pause);
+ m_pause_button->SetTooltip("Pause");
+ m_quit_button->SetCallback(this, &cDriver_FLTKViewer::ButtonCallback_Quit);
+ m_quit_button->SetFontColor(cColor::DARK_RED);
+ m_quit_button->SetFontSize(12);
+ m_quit_button->SetTooltip("Quit");
+
m_main_window.Finalize();
}
+void cDriver_FLTKViewer::PutInside(Fl_Widget* container, Fl_Widget* widget)
+{
+ widget->position(container->x()+widget->x(), container->y()+widget->y());
+}
+
cDriver_FLTKViewer::~cDriver_FLTKViewer()
{
cDriverManager::Unregister(static_cast<cAvidaDriver*>(this));
@@ -382,12 +479,39 @@
cString update_string;
update_string.Set("Update: %d", m_world->GetStats().GetUpdate());
- m_update_box.SetName(update_string);
- m_update_box.Refresh();
+ m_update_box->SetName(update_string);
+ m_update_box->Refresh();
- m_grid_view.Redraw();
- m_legend.Redraw();
-
+ cString stats_string;
+ stats_string.Set("%d\n%d\n%d\n%f\n%f\n%f", m_world->GetStats().GetNumBirths(), m_world->GetStats().GetBreedTrue(),
+ m_world->GetStats().GetNumParasites(), m_world->GetStats().GetEnergy(), m_world->GetStats().GetMaxFitness(), m_world->GetStats().GetMaxMerit());
+ m_pop_stats_label->value(stats_string);
+
+ stats_string.Set("%f \n%f \n%f \n%d \n%f \n%f \n%d \n%d \n%f \n%d", m_world->GetStats().GetDomFitness(), m_world->GetStats().GetDomMerit(),
+ m_world->GetStats().GetDomGestation(), m_world->GetStats().GetDomSize(), m_world->GetStats().GetDomCopySize(), m_world->GetStats().GetDomExeSize(),
+ m_world->GetStats().GetDomAbundance(), m_world->GetStats().GetDomBirths(), m_world->GetStats().GetDomReproRate(), m_world->GetStats().GetDomGeneDepth());
+ m_pop_dominant_label->value(stats_string);
+
+ stats_string.Set("%f \n%f \n%f \n%f \n%f \n%f \n%f \n%f \n%f \n%f \n%f", m_world->GetStats().GetAveFitness(), m_world->GetStats().GetAveMerit(),
+ m_world->GetStats().GetAveGestation(), m_world->GetStats().GetAveSize(), m_world->GetStats().GetAveCopySize(), m_world->GetStats().GetAveExeSize(),
+ double(m_world->GetStats().GetNumCreatures())/m_world->GetStats().GetNumGenotypes(),
+ 0,
+ m_world->GetStats().GetAveReproRate(), 0,0);
+ //m_world->GetStats().SumGenotypeDepth().Average(),
+ //m_world->GetStats().SumGeneration().Average());
+ m_pop_average_label->value(stats_string);
+
+ cString format_string="";
+ for(int n=0; n<m_world->GetEnvironment().GetNumTasks(); n++){
+ stats_string.Set("%d\n", m_world->GetStats().GetTaskLastCount(n));
+ format_string+=stats_string;
+ }
+ m_task_label->value(format_string);
+
+ m_grid_view->Redraw();
+ m_legend->Redraw();
+
+ PrototypeStepThrough();
const int pause_level = m_info.GetPauseLevel();
// If we are stepping in some way, we've come to a stop, so revert to a normal pause.
@@ -457,19 +581,19 @@
{
bool paused = m_info.TogglePause();
if (paused == true) {
- m_pause_button.SetLabel("@>");
- m_pause_button.SetTooltip("Play");
+ m_pause_button->SetLabel("@>");
+ m_pause_button->SetTooltip("Play");
}
else {
- m_pause_button.SetLabel("@||");
- m_pause_button.SetTooltip("Pause");
+ m_pause_button->SetLabel("@||");
+ m_pause_button->SetTooltip("Pause");
}
}
void cDriver_FLTKViewer::MenuCallback_View(int new_mode)
{
- m_grid_view.GetMapInfo().SetMode(new_mode);
+ m_grid_view->GetMapInfo().SetMode(new_mode);
}
@@ -483,3 +607,39 @@
exit(exit_code);
}
+void cDriver_FLTKViewer::PrototypeStepThrough()
+{
+ int org_id=0;
+ cString boxContents="";
+ cString number_converter;
+ int x, y;
+
+ number_converter=m_cell_x_input->value();
+ x=number_converter.AsInt();
+
+ number_converter=m_cell_y_input->value();
+ y=number_converter.AsInt();
+
+ tArray< cString > inst = m_text.GetOrganismInstructions(x, y);
+ if(inst.GetSize()>0)
+ {
+
+ for(int n=0; n<inst.GetSize(); n++)
+ {
+ cString box_line;
+ box_line.Set("%d: ", n);
+ boxContents+=box_line;
+ boxContents+=inst[n];
+ boxContents+="\n";
+ }
+ }
+ else
+ {
+ boxContents="N/A";
+ }
+ m_org_inst_buffer->text(boxContents);
+ m_org_inst_display->redraw();
+
+
+}
+
Modified: branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.h
===================================================================
--- branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.h 2008-07-01 20:11:01 UTC (rev 2697)
+++ branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.h 2008-07-01 20:13:56 UTC (rev 2698)
@@ -37,13 +37,16 @@
#include "cWorldDriver.h"
#endif
+#include "cCoreView_Text.h"
#include "cFLTKBox.h"
#include "cFLTKGridView.h"
#include "cFLTKLegend.h"
#include "cFLTKWindow.h"
#include "tFLTKButton.h"
#include "tFLTKMenu.h"
-
+#include <FL/Fl_Text_Display.H>
+#include <FL/Fl_Multiline_Output.H>
+#include "cFLTKZoom.h"
#include <sstream>
#include <iostream>
#include <fstream>
@@ -57,6 +60,7 @@
private:
cWorld * m_world;
cCoreView_Info m_info;
+ cCoreView_Text m_text;
bool m_done; // This is set to true when run should finish.
@@ -64,19 +68,28 @@
cFLTKWindow m_main_window;
// cFLTKBox m_menu_box;
- cFLTKBox m_body_box;
+ cFLTKBox* m_body_box;
- cFLTKBox m_update_box;
- cFLTKBox m_title_box;
+ cFLTKBox* m_update_box;
+ cFLTKBox* m_title_box;
- cFLTKGridView m_grid_view;
- cFLTKLegend m_legend;
-
- tFLTKMenu<cDriver_FLTKViewer> m_grid_view_menu;
- tFLTKMenu<cDriver_FLTKViewer> m_grid_tags_menu;
- tFLTKMenu<cDriver_FLTKViewer> m_grid_symbol_menu;
- tFLTKButton<cDriver_FLTKViewer> m_pause_button;
- tFLTKButton<cDriver_FLTKViewer> m_quit_button;
+ cFLTKGridView* m_grid_view;
+ cFLTKLegend* m_legend;
+ cFLTKZoom* z;
+ tFLTKMenu<cDriver_FLTKViewer>* m_grid_view_menu;
+ tFLTKMenu<cDriver_FLTKViewer>* m_grid_tags_menu;
+ tFLTKMenu<cDriver_FLTKViewer>* m_grid_symbol_menu;
+ tFLTKButton<cDriver_FLTKViewer>* m_pause_button;
+ tFLTKButton<cDriver_FLTKViewer>* m_quit_button;
+
+ Fl_Text_Display* m_org_inst_display;
+ Fl_Text_Buffer* m_org_inst_buffer;
+ Fl_Multiline_Output* m_pop_stats_label;
+ Fl_Multiline_Output* m_pop_dominant_label;
+ Fl_Multiline_Output* m_pop_average_label;
+ Fl_Multiline_Output* m_task_label;
+ Fl_Input* m_cell_x_input;
+ Fl_Input* m_cell_y_input;
public:
cDriver_FLTKViewer(cWorld* world);
~cDriver_FLTKViewer();
@@ -98,6 +111,7 @@
// Drawing and interaction.
void Draw();
void DoUpdate();
+ void PutInside(Fl_Widget* container, Fl_Widget* widget);
// Notifications
void NotifyComment(const cString& in_string);
@@ -117,6 +131,8 @@
// Menu Callbacks
void MenuCallback_View(int new_mode);
+ void PrototypeStepThrough();
+
};
Modified: branches/vo/source/viewer-core/cCoreView_Map.cc
===================================================================
--- branches/vo/source/viewer-core/cCoreView_Map.cc 2008-07-01 20:11:01 UTC (rev 2697)
+++ branches/vo/source/viewer-core/cCoreView_Map.cc 2008-07-01 20:13:56 UTC (rev 2698)
@@ -1,6 +1,7 @@
/*
* cCoreView_Map.cc
* Avida
+
*
* Created by Charles on 7-9-07
* Copyright 1999-2007 Michigan State University. All rights reserved.
More information about the Avida-cvs
mailing list