import proxml.*; /** * XML Pulses * *

Elie Zananiri
* CART 253, Winter 2008

*/ // ---------------------------------------------------------------------- // GLOBAL CONSTANTS // ---------------------------------------------------------------------- int MAX_PULSES = 500; // ---------------------------------------------------------------------- // GLOBAL VARIABLES // ---------------------------------------------------------------------- int numPulses = 0; Pulse pulses[] = new Pulse[MAX_PULSES]; XMLInOut xmlIO; XMLElement xmlPulses; // ---------------------------------------------------------------------- // BUILT-IN FUNCTIONS // ---------------------------------------------------------------------- void setup() { size(400, 400); smooth(); noStroke(); // create a new XML tree xmlIO = new XMLInOut(this); xmlPulses = new XMLElement("pulses"); } void draw() { background(0); // draw all the pulses for (int i=0; i < numPulses; i++) { pulses[i].draw(); } } void mousePressed() { addPulse(mouseX, mouseY); } void mouseDragged() { addPulse(mouseX, mouseY); } void mouseReleased() { savePulsesToDisk(); } void keyPressed() { if (key == ' ') { // clear all clearPulses(); } } // ---------------------------------------------------------------------- // USER FUNCTIONS // ---------------------------------------------------------------------- /* adds a new pulse to the display and XML lists */ void addPulse(int newX, int newY) { if (numPulses < MAX_PULSES) { pulses[numPulses] = new Pulse(newX, newY, color(random(255), random(255), random(255))); // create a new pulse XML node XMLElement newPulse = new XMLElement("pulse"); // add it to the XML root xmlPulses.addChild(newPulse); // add a position XML node to the new pulse XMLElement pos = new XMLElement("position"); pos.addAttribute("x", newX); pos.addAttribute("y", newY); newPulse.addChild(pos); // add a color XML node to the new pulse XMLElement col = new XMLElement("color"); col.addAttribute("rgb", pulses[numPulses].c); newPulse.addChild(col); numPulses++; } } /* clears all pulses from the display and XML lists */ void clearPulses() { numPulses = 0; // create a new empty pulses XML list to overwrite the previous one xmlPulses = new XMLElement("pulses"); // save the new empty list to disk savePulsesToDisk(); } /* saves the pulses XML list to disk */ void savePulsesToDisk() { xmlIO.saveElement(xmlPulses, "pulses.xml"); }