diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..47a3b59
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5e56e04
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/.project b/.project
new file mode 100644
index 0000000..9e75d8e
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ SERenderer
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/.settings/org.eclipse.core.runtime.prefs b/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..7341ab1
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/docs/PlaySEM_SERenderer_Interface.png b/docs/PlaySEM_SERenderer_Interface.png
new file mode 100644
index 0000000..bdffee8
Binary files /dev/null and b/docs/PlaySEM_SERenderer_Interface.png differ
diff --git a/driver/arduino_mpegv_devices/arduino_mpegv_devices.ino b/driver/arduino_mpegv_devices/arduino_mpegv_devices.ino
new file mode 100644
index 0000000..b5ca3e3
--- /dev/null
+++ b/driver/arduino_mpegv_devices/arduino_mpegv_devices.ino
@@ -0,0 +1,115 @@
+#include
+
+const int PIN_STRIP = 2;
+const int N_LEDS = 60;
+
+const int PIN_FAN_1 = 5;
+const int PIN_FAN_2 = 6;
+const int PIN_VIB_1 = 9;
+const int PIN_VIB_2 = 10;
+
+const int DEVICE_TYPE_FAN = 81;
+const int DEVICE_TYPE_VIB = 82;
+
+boolean cmdComplete = false;
+String command = "";
+
+Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, PIN_STRIP, NEO_GRB + NEO_KHZ800);
+
+void setup() {
+ Serial.begin(9600);
+ pinMode(PIN_FAN_1, OUTPUT);
+ pinMode(PIN_FAN_2, OUTPUT);
+ pinMode(PIN_VIB_1, OUTPUT);
+ pinMode(PIN_VIB_2, OUTPUT);
+ analogWrite(PIN_FAN_1, 0);
+ analogWrite(PIN_FAN_2, 0);
+ analogWrite(PIN_VIB_1, 0);
+ analogWrite(PIN_VIB_2, 0);
+ strip.begin();
+ strip.show();
+}
+
+void loop() {
+ // L* controla leds
+ // LICRGB. liga o led no índice I, até C, onde R = red, G = green, B = blue
+ // F* controla ventiladores
+ // FIX. seta o ventilador I com intensidade X (0 até 255)
+ // V* controla motores vibradores
+ // VIX. seta o motor vibrador I com intensidade X (0 até 255)
+
+ if (cmdComplete){
+ //Serial.println(command);
+ switch(command[0]) {
+ case 'L':
+ processLed();
+ break;
+ case 'F':
+ processPwm(DEVICE_TYPE_FAN);
+ break;
+ case 'V':
+ processPwm(DEVICE_TYPE_VIB);
+ break;
+ default : break;
+ }
+ cmdComplete = false;
+ command = "";
+ }
+}
+
+void serialEvent() {
+ while (Serial.available()) {
+ char inChar = (char)Serial.read();
+ if (inChar == '.') {
+ cmdComplete = true;
+ } else {
+ command += inChar;
+ }
+ }
+}
+
+void processPwm(int deviceType){
+ int deviceIndex, intensity = 0;
+ deviceIndex = command[1];
+ intensity = command[2];
+ if (intensity < 0)
+ intensity = intensity + 256;
+ else if (intensity >0 && intensity < 80)
+ intensity = 80;
+ if (deviceType == DEVICE_TYPE_FAN){
+ //Serial.println("F I=" + (String)deviceIndex + " X="+ (String)intensity);
+ if (deviceIndex == 1)
+ analogWrite(PIN_FAN_1, intensity);
+ else if (deviceIndex == 2)
+ analogWrite(PIN_FAN_2, intensity);
+ }
+ else if (deviceType == DEVICE_TYPE_VIB){
+ //Serial.println("V I=" + (String)deviceIndex + " X="+ (String)intensity);
+ if (intensity > 153)
+ intensity = 153;
+ if (deviceIndex == 1)
+ analogWrite(PIN_VIB_1, intensity);
+ else if (deviceIndex == 2)
+ analogWrite(PIN_VIB_2, intensity);
+ }
+}
+
+void processLed(){
+ int ledIndex, count, red, green, blue = 0;
+ ledIndex = command[1];
+ count = command[2];
+ red = command[3];
+ green = command[4];
+ blue = command[5];
+ if (red < 0)
+ red = red + 256;
+ if (green < 0)
+ green = green + 256;
+ if (blue < 0)
+ blue = blue + 256;
+ //Serial.println("L I=" + (String)ledIndex + " C=" + (String)count + " R=" + (String)red + " G=" + (String)green + " B=" + (String)blue);
+ for (int i=0; i seRendererService = new AnnotationLocalServiceBinder().read(SERendererService.class);
+ seRendererService.setManager(new DefaultServiceManager(seRendererService, SERendererService.class));
+
+ try {
+ return new LocalDevice(identity, type, details, icon, seRendererService);
+ }
+ catch (Exception e) {
+ System.out.print("Exception occured: " + e.getMessage());
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+}
diff --git a/src/br/ufes/inf/lprm/sensoryeffect/renderer/SERendererService.java b/src/br/ufes/inf/lprm/sensoryeffect/renderer/SERendererService.java
new file mode 100644
index 0000000..afe0b3a
--- /dev/null
+++ b/src/br/ufes/inf/lprm/sensoryeffect/renderer/SERendererService.java
@@ -0,0 +1,155 @@
+package br.ufes.inf.lprm.sensoryeffect.renderer;
+
+import java.beans.PropertyChangeSupport;
+
+import org.fourthline.cling.binding.annotations.UpnpAction;
+import org.fourthline.cling.binding.annotations.UpnpInputArgument;
+import org.fourthline.cling.binding.annotations.UpnpService;
+import org.fourthline.cling.binding.annotations.UpnpServiceId;
+import org.fourthline.cling.binding.annotations.UpnpServiceType;
+import org.fourthline.cling.binding.annotations.UpnpStateVariable;
+
+import br.ufes.inf.lprm.sensoryeffect.renderer.parser.ClassificationScheme;
+import br.ufes.inf.lprm.sensoryeffect.renderer.parser.HelperFunctions;
+import br.ufes.inf.lprm.sensoryeffect.renderer.parser.SEMParser;
+import br.ufes.inf.lprm.sensoryeffect.renderer.serial.SerialMessage;
+import br.ufes.inf.lprm.sensoryeffect.renderer.timer.TimeLine;
+import br.ufes.inf.lprm.sensoryeffect.renderer.timer.TimeLine.Status;
+
+@UpnpService(
+ serviceId = @UpnpServiceId("RendererControl"),
+ serviceType = @UpnpServiceType(value = "RendererControl", version = 1)
+)
+public class SERendererService {
+
+ private static PropertyChangeSupport propertyChangeSupport = null;
+
+ public SERendererService() {
+ propertyChangeSupport = new PropertyChangeSupport(this);
+ }
+ public static PropertyChangeSupport getPropertyChangeSupport() {
+ return propertyChangeSupport;
+ }
+
+ @UpnpStateVariable(defaultValue = "", sendEvents = false)
+ private static String currentTime = "";
+
+ @UpnpStateVariable(defaultValue = "", sendEvents = false)
+ private String duration = "";
+
+ @UpnpStateVariable(defaultValue = "", sendEvents = false)
+ private String sensoryEffectMetadata = "";
+
+ @UpnpStateVariable(defaultValue = "", sendEvents = false)
+ private static String capabilitiesMetadata = "";
+
+ @UpnpStateVariable(defaultValue = "", sendEvents = false)
+ private static String hexLeft = "";
+
+ @UpnpStateVariable(defaultValue = "", sendEvents = false)
+ private static String hexCenter = "";
+
+ @UpnpStateVariable(defaultValue = "", sendEvents = false)
+ private static String hexRight = "";
+
+ @UpnpStateVariable(defaultValue = "false", sendEvents = false)
+ private static Boolean lightAutoExtraction = false;
+
+ @UpnpStateVariable(defaultValue = "false", sendEvents = true)
+ public static Boolean semPrepared = false;
+
+ @UpnpAction
+ public void setSem(
+ @UpnpInputArgument(name = "SensoryEffectMetadata")
+ String newSensoryEffectMetadata,
+ @UpnpInputArgument(name = "Duration")
+ String newDuration) {
+ semPrepared = false;
+ getPropertyChangeSupport().firePropertyChange("SemPrepared", "", semPrepared);
+ sensoryEffectMetadata = newSensoryEffectMetadata;
+ duration = newDuration;
+ currentTime = "0";
+ lightAutoExtraction = false;
+ if (SERendererDevice.debugMode)
+ System.out.println("SetSem");
+ Thread semParser = new Thread(new SEMParser(sensoryEffectMetadata, Long.parseLong(duration)));
+ semParser.start();
+ }
+
+ @UpnpAction
+ public void setPlay(
+ @UpnpInputArgument(name = "CurrentTime")
+ String newCurrentTime) {
+ SERendererDevice.timeLine.play(Long.parseLong(newCurrentTime));
+ }
+
+ @UpnpAction
+ public void setPause(
+ @UpnpInputArgument(name = "CurrentTime")
+ String newCurrentTime) {
+ SERendererDevice.timeLine.pause(Long.parseLong(newCurrentTime));
+ }
+
+ @UpnpAction
+ public void setStop() {
+ SERendererDevice.timeLine.stop();
+ }
+
+ @UpnpAction
+ public void setCurrentTime(
+ @UpnpInputArgument(name = "CurrentTime")
+ String newCurrentTime) {
+ currentTime = newCurrentTime;
+ SERendererDevice.timeLine.setCurrentTime(Long.parseLong(currentTime));
+ }
+
+ @UpnpAction
+ public void setLightColors(
+ @UpnpInputArgument(name = "HexLeft")
+ String newHexLeft,
+ @UpnpInputArgument(name = "HexCenter")
+ String newHexCenter,
+ @UpnpInputArgument(name = "HexRight")
+ String newHexRight) {
+ if (lightAutoExtraction && TimeLine.status.getId() == Status.PLAYING.getId()){
+ hexLeft = newHexLeft;
+ hexCenter = newHexCenter;
+ hexRight = newHexRight;
+ int[] rgbLeft = HelperFunctions.hexToRGB(hexLeft);
+ int[] rgbCenter = HelperFunctions.hexToRGB(hexCenter);
+ int[] rgbRight = HelperFunctions.hexToRGB(hexRight);
+ byte[] messageLedLeft = SerialMessage.prepareMessageToLed(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_LEFT, (char)rgbLeft[0], (char)rgbLeft[1], (char)rgbLeft[2]);
+ byte[] messageLedCenter = SerialMessage.prepareMessageToLed(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_CENTER, (char)rgbCenter[0], (char)rgbCenter[1], (char)rgbCenter[2]);
+ byte[] messageLedRight = SerialMessage.prepareMessageToLed(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_RIGHT, (char)rgbRight[0], (char)rgbRight[1], (char)rgbRight[2]);
+
+// System.out.println(currentTime + " autoextraction: " + SerialMessage.byteArrayToString(messageLedLeft));
+// System.out.println(currentTime + " autoextraction: " + SerialMessage.byteArrayToString(messageLedCenter));
+// System.out.println(currentTime + " autoextraction: " + SerialMessage.byteArrayToString(messageLedRight));
+
+ SerialMessage.sendMessage(messageLedLeft);
+ SerialMessage.sendMessage(messageLedCenter);
+ SerialMessage.sendMessage(messageLedRight);
+ if (SERendererDevice.debugMode)
+ System.out.println("SetLightColors");
+ }
+ else {
+ hexLeft = "";
+ hexCenter = "";
+ hexRight = "";
+ }
+ }
+
+ public static void setLocalCurrentTime(long newCurrentTime){
+ currentTime = String.valueOf(newCurrentTime);
+ }
+
+ public static void setCapabilitiesMetadata(String newCapabilitiesMetadata){
+ capabilitiesMetadata = newCapabilitiesMetadata;
+ }
+
+ public static void setLightAutoExraction(Boolean newLightAutoExtraction){
+ lightAutoExtraction = newLightAutoExtraction;
+ }
+}
+
+
diff --git a/src/br/ufes/inf/lprm/sensoryeffect/renderer/capabilities.xml b/src/br/ufes/inf/lprm/sensoryeffect/renderer/capabilities.xml
new file mode 100644
index 0000000..fb6a6cc
--- /dev/null
+++ b/src/br/ufes/inf/lprm/sensoryeffect/renderer/capabilities.xml
@@ -0,0 +1,979 @@
+
+
+
+
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:alice_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:alizarin
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:amaranth
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:amaranth_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:amber
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:amethyst
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:apricot
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:aqua
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:aquamarine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:army_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:asparagus
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:atomic_tangerine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:auburn
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:azure_color_wheel
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:azure_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:baby_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:beige
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bistre
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:black
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue_pigment
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue-green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue-violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bondi_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:brass
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bright_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bright_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bright_turquoise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:brilliant_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:brink_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bronze
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:buff
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:burgundy
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:burnt_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:burnt_sienna
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:burnt_umber
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:camouflage_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:caput_mortuum
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cardinal
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carmine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carmine_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carnation_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carolina_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carrot_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:celadon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cerise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cerise_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cerulean
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cerulean_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:champagne
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:charcoal
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:chartreuse_traditional
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:chartreuse_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cherry_blossom_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:chestnut
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:chocolate
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cinnabar
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cinnamon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cobalt
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:columbia_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:copper
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:copper_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:coral
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:coral_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:coral_red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:corn
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cornflower_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cosmic_latte
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cream
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:crimson
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cyan
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cyan_process
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_cerulean
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_chestnut
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_coral
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_goldenrod
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_khaki
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_pastel_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_scarlet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_salmon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_slate_gray
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_spring_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_tan
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_turquoise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_carmine_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_cerise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_chestnut
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_fuchsia
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_lilac
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_peach
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:denim
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dodger_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ecru
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:egyptian_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_green_x11_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_indigo
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_lime
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:emerald
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:eggplant
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:falu_red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:fern_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:firebrick
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:flax
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:forest_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:french_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:fuchsia
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:fuchsia_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:gamboge
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:gold_metallic
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:gold_web_golden
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:golden_brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:golden_yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:goldenrod
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:grey-asparagus
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green_color_wheel_x11_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green_html/css_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green_pigment
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green-yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:grey
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:han_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:harlequin
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:heliotrope
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:hollywood_cerise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:hot_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:hot_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:indigo_dye
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:indigo_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:international_klein_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:international_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:islamic_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ivory
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:jade
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:kelly_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:khaki
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:khaki_x11_light_khaki
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_floral
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_blush
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_grey
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lawn_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lemon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lemon_chiffon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:light_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:light_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lilac
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lime_color_wheel
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lime_web_x11_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lime_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:linen
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magenta_dye
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magenta_process
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magic_mint
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magnolia
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:malachite
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:maroon_html/css
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:maroon_x11
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:maya_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mauve
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mauve_taupe
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_carmine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_lavender_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_spring_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:midnight_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:midnight_green_eagle_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mint_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:misty_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:moss_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mountbatten_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mustard
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:myrtle
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:navajo_white
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:navy_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ochre
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:office_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:old_gold
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:old_lace
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:old_lavender
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:old_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:olive
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:olive_drab
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:olivine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange_color_wheel
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange_peel
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange-red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orchid
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_carmine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_chestnut
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_cornflower_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_red-violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:papaya_whip
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pastel_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pastel_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:peach
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:peach-orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:peach-yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pear
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:periwinkle
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_indigo
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persimmon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pine_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pink-orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:platinum
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:plum_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:powder_blue_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:puce
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:prussian_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:psychedelic_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pumpkin
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:purple_html/css
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:purple_x11
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:purple_taupe
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:raw_umber
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:razzmatazz
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:red_pigment
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:red_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:red-violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rich_carmine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:robin_egg_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rose_madder
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rose_taupe
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:royal_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:royal_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ruby
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:russet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rust
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:safety_orange_blaze_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:saffron
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:salmon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sandy_brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sangria
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sapphire
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:scarlet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:school_bus_yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sea_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:seashell
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:selective_yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sepia
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:shamrock_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:shocking_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:silver
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sky_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:slate_grey
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:smalt_dark_powder_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:spring_bud
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:spring_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:steel_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tan
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tangerine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tangerine_yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:taupe
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tea_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tea_rose_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tea_rose_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:teal
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tenny_tawny
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:terra_cotta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:thistle
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tomato
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:turquoise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tyrian_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ultramarine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ultra_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:united_nations_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:vegas_gold
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:vermilion
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:violet_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:violet_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:viridian
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:wheat
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:white
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:wisteria
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:yellow_process
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:yellow_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:yellow-green
+
+
+
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:alice_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:alizarin
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:amaranth
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:amaranth_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:amber
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:amethyst
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:apricot
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:aqua
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:aquamarine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:army_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:asparagus
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:atomic_tangerine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:auburn
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:azure_color_wheel
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:azure_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:baby_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:beige
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bistre
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:black
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue_pigment
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue-green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue-violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bondi_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:brass
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bright_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bright_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bright_turquoise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:brilliant_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:brink_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bronze
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:buff
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:burgundy
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:burnt_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:burnt_sienna
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:burnt_umber
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:camouflage_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:caput_mortuum
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cardinal
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carmine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carmine_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carnation_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carolina_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carrot_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:celadon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cerise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cerise_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cerulean
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cerulean_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:champagne
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:charcoal
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:chartreuse_traditional
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:chartreuse_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cherry_blossom_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:chestnut
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:chocolate
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cinnabar
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cinnamon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cobalt
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:columbia_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:copper
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:copper_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:coral
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:coral_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:coral_red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:corn
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cornflower_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cosmic_latte
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cream
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:crimson
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cyan
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cyan_process
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_cerulean
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_chestnut
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_coral
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_goldenrod
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_khaki
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_pastel_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_scarlet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_salmon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_slate_gray
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_spring_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_tan
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_turquoise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_carmine_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_cerise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_chestnut
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_fuchsia
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_lilac
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_peach
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:denim
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dodger_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ecru
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:egyptian_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_green_x11_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_indigo
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_lime
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:emerald
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:eggplant
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:falu_red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:fern_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:firebrick
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:flax
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:forest_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:french_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:fuchsia
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:fuchsia_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:gamboge
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:gold_metallic
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:gold_web_golden
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:golden_brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:golden_yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:goldenrod
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:grey-asparagus
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green_color_wheel_x11_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green_html/css_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green_pigment
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green-yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:grey
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:han_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:harlequin
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:heliotrope
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:hollywood_cerise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:hot_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:hot_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:indigo_dye
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:indigo_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:international_klein_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:international_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:islamic_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ivory
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:jade
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:kelly_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:khaki
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:khaki_x11_light_khaki
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_floral
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_blush
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_grey
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lawn_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lemon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lemon_chiffon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:light_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:light_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lilac
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lime_color_wheel
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lime_web_x11_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lime_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:linen
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magenta_dye
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magenta_process
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magic_mint
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magnolia
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:malachite
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:maroon_html/css
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:maroon_x11
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:maya_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mauve
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mauve_taupe
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_carmine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_lavender_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_spring_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:midnight_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:midnight_green_eagle_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mint_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:misty_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:moss_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mountbatten_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mustard
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:myrtle
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:navajo_white
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:navy_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ochre
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:office_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:old_gold
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:old_lace
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:old_lavender
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:old_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:olive
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:olive_drab
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:olivine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange_color_wheel
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange_peel
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange-red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orchid
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_carmine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_chestnut
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_cornflower_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_red-violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:papaya_whip
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pastel_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pastel_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:peach
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:peach-orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:peach-yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pear
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:periwinkle
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_indigo
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persimmon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pine_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pink-orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:platinum
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:plum_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:powder_blue_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:puce
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:prussian_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:psychedelic_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pumpkin
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:purple_html/css
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:purple_x11
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:purple_taupe
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:raw_umber
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:razzmatazz
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:red_pigment
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:red_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:red-violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rich_carmine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:robin_egg_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rose_madder
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rose_taupe
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:royal_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:royal_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ruby
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:russet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rust
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:safety_orange_blaze_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:saffron
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:salmon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sandy_brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sangria
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sapphire
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:scarlet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:school_bus_yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sea_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:seashell
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:selective_yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sepia
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:shamrock_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:shocking_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:silver
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sky_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:slate_grey
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:smalt_dark_powder_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:spring_bud
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:spring_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:steel_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tan
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tangerine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tangerine_yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:taupe
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tea_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tea_rose_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tea_rose_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:teal
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tenny_tawny
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:terra_cotta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:thistle
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tomato
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:turquoise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tyrian_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ultramarine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ultra_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:united_nations_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:vegas_gold
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:vermilion
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:violet_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:violet_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:viridian
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:wheat
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:white
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:wisteria
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:yellow_process
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:yellow_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:yellow-green
+
+
+
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:alice_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:alizarin
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:amaranth
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:amaranth_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:amber
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:amethyst
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:apricot
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:aqua
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:aquamarine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:army_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:asparagus
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:atomic_tangerine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:auburn
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:azure_color_wheel
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:azure_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:baby_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:beige
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bistre
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:black
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue_pigment
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue-green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:blue-violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bondi_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:brass
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bright_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bright_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bright_turquoise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:brilliant_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:brink_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:bronze
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:buff
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:burgundy
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:burnt_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:burnt_sienna
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:burnt_umber
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:camouflage_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:caput_mortuum
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cardinal
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carmine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carmine_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carnation_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carolina_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:carrot_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:celadon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cerise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cerise_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cerulean
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cerulean_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:champagne
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:charcoal
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:chartreuse_traditional
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:chartreuse_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cherry_blossom_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:chestnut
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:chocolate
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cinnabar
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cinnamon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cobalt
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:columbia_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:copper
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:copper_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:coral
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:coral_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:coral_red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:corn
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cornflower_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cosmic_latte
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cream
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:crimson
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cyan
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:cyan_process
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_cerulean
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_chestnut
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_coral
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_goldenrod
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_khaki
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_pastel_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_scarlet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_salmon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_slate_gray
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_spring_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_tan
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_turquoise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dark_violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_carmine_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_cerise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_chestnut
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_fuchsia
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_lilac
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_peach
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:deep_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:denim
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:dodger_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ecru
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:egyptian_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_green_x11_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_indigo
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_lime
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:electric_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:emerald
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:eggplant
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:falu_red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:fern_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:firebrick
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:flax
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:forest_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:french_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:fuchsia
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:fuchsia_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:gamboge
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:gold_metallic
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:gold_web_golden
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:golden_brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:golden_yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:goldenrod
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:grey-asparagus
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green_color_wheel_x11_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green_html/css_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green_pigment
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:green-yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:grey
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:han_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:harlequin
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:heliotrope
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:hollywood_cerise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:hot_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:hot_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:indigo_dye
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:indigo_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:international_klein_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:international_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:islamic_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ivory
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:jade
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:kelly_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:khaki
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:khaki_x11_light_khaki
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_floral
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_blush
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_grey
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lavender_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lawn_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lemon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lemon_chiffon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:light_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:light_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lilac
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lime_color_wheel
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lime_web_x11_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:lime_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:linen
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magenta_dye
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magenta_process
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magic_mint
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:magnolia
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:malachite
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:maroon_html/css
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:maroon_x11
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:maya_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mauve
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mauve_taupe
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_carmine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_lavender_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:medium_spring_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:midnight_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:midnight_green_eagle_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mint_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:misty_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:moss_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mountbatten_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:mustard
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:myrtle
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:navajo_white
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:navy_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ochre
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:office_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:old_gold
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:old_lace
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:old_lavender
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:old_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:olive
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:olive_drab
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:olivine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange_color_wheel
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange_peel
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orange-red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:orchid
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_carmine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_chestnut
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_cornflower_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_magenta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pale_red-violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:papaya_whip
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pastel_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pastel_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:peach
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:peach-orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:peach-yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pear
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:periwinkle
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_indigo
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persian_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:persimmon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pine_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pink-orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:platinum
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:plum_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:powder_blue_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:puce
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:prussian_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:psychedelic_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:pumpkin
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:purple_html/css
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:purple_x11
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:purple_taupe
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:raw_umber
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:razzmatazz
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:red
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:red_pigment
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:red_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:red-violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rich_carmine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:robin_egg_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rose_madder
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rose_taupe
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:royal_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:royal_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ruby
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:russet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:rust
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:safety_orange_blaze_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:saffron
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:salmon
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sandy_brown
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sangria
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sapphire
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:scarlet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:school_bus_yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sea_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:seashell
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:selective_yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sepia
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:shamrock_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:shocking_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:silver
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:sky_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:slate_grey
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:smalt_dark_powder_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:spring_bud
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:spring_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:steel_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tan
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tangerine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tangerine_yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:taupe
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tea_green
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tea_rose_orange
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tea_rose_rose
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:teal
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tenny_tawny
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:terra_cotta
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:thistle
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tomato
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:turquoise
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:tyrian_purple
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ultramarine
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:ultra_pink
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:united_nations_blue
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:vegas_gold
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:vermilion
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:violet
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:violet_web
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:violet_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:viridian
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:wheat
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:white
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:wisteria
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:yellow
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:yellow_process
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:yellow_ryb
+ urn:mpeg:mpeg-v:01-SI-ColorCS-NS:yellow-green
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/br/ufes/inf/lprm/sensoryeffect/renderer/icon.png b/src/br/ufes/inf/lprm/sensoryeffect/renderer/icon.png
new file mode 100644
index 0000000..9379df8
Binary files /dev/null and b/src/br/ufes/inf/lprm/sensoryeffect/renderer/icon.png differ
diff --git a/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/ClassificationScheme.java b/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/ClassificationScheme.java
new file mode 100644
index 0000000..bd89396
--- /dev/null
+++ b/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/ClassificationScheme.java
@@ -0,0 +1,859 @@
+/*
+ * This file is part of SEVino.
+ *
+ * SEVino is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * SEVino is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with SEVino. If not, see .
+ *
+ * Copyright 2008, 2009, 2010, 2011, 2012 Alpen-Adria-Universitaet Klagenfurt, Markus Waltl.
+ */
+package br.ufes.inf.lprm.sensoryeffect.renderer.parser;
+
+import java.awt.Color;
+import java.util.Vector;
+import java.util.Hashtable;
+
+/**
+ * Class defining all classification schemes of MPEG-V
+ * @author Markus Waltl
+ *
+ */
+public class ClassificationScheme {
+ // A.2.1 ColorCS
+ private static Hashtable colorTable_ = new Hashtable();
+
+ public final static String COLORURIBASE = "urn:mpeg:mpeg-v:01-SI-ColorCS-NS";
+ public final static String COLOR_ALICE_BLUE = COLORURIBASE + ":alice_blue";
+ public final static String COLOR_ALIZARIN = COLORURIBASE + ":alizarin";
+ public final static String COLOR_AMARANTH = COLORURIBASE + ":amaranth";
+ public final static String COLOR_AMARANTH_PINK = COLORURIBASE + ":amaranth_pink";
+ public final static String COLOR_AMBER = COLORURIBASE + ":amber";
+ public final static String COLOR_AMETHYST = COLORURIBASE + ":amethyst";
+ public final static String COLOR_APRICOT = COLORURIBASE + ":apricot";
+ public final static String COLOR_AQUA = COLORURIBASE + ":aqua";
+ public final static String COLOR_AQUAMARINE = COLORURIBASE + ":aquamarine";
+ public final static String COLOR_ARMY_GREEN = COLORURIBASE + ":army_green";
+ public final static String COLOR_ASPARAGUS = COLORURIBASE + ":asparagus";
+ public final static String COLOR_ATOMIC_TANGERINE = COLORURIBASE + ":atomic_tangerine";
+ public final static String COLOR_AUBURN = COLORURIBASE + ":auburn";
+ public final static String COLOR_AZURE_COLOR_WHEEL = COLORURIBASE + ":azure_color_wheel";
+ public final static String COLOR_AZURE_WEB = COLORURIBASE + ":azure_web";
+ public final static String COLOR_BABY_BLUE = COLORURIBASE + ":baby_blue";
+ public final static String COLOR_BEIGE = COLORURIBASE + ":beige";
+ public final static String COLOR_BISTRE = COLORURIBASE + ":bistre";
+ public final static String COLOR_BLACK = COLORURIBASE + ":black";
+ public final static String COLOR_BLUE = COLORURIBASE + ":blue";
+ public final static String COLOR_BLUE_PIGMENT = COLORURIBASE + ":blue_pigment";
+ public final static String COLOR_BLUE_RYB = COLORURIBASE + ":blue_ryb";
+ public final static String COLOR_BLUE_GREEN = COLORURIBASE + ":blue-green";
+ public final static String COLOR_BLUE_VIOLET = COLORURIBASE + ":blue-violet";
+ public final static String COLOR_BONDI_BLUE = COLORURIBASE + ":bondi_blue";
+ public final static String COLOR_BRASS = COLORURIBASE + ":brass";
+ public final static String COLOR_BRIGHT_GREEN = COLORURIBASE + ":bright_green";
+ public final static String COLOR_BRIGHT_PINK = COLORURIBASE + ":bright_pink";
+ public final static String COLOR_BRIGHT_TURQUOISE = COLORURIBASE + ":bright_turquoise";
+ public final static String COLOR_BRILLIANT_ROSE = COLORURIBASE + ":brilliant_rose";
+ public final static String COLOR_BRINK_PINK = COLORURIBASE + ":brink_pink";
+ public final static String COLOR_BRONZE = COLORURIBASE + ":bronze";
+ public final static String COLOR_BROWN = COLORURIBASE + ":brown";
+ public final static String COLOR_BUFF = COLORURIBASE + ":buff";
+ public final static String COLOR_BURGUNDY = COLORURIBASE + ":burgundy";
+ public final static String COLOR_BURNT_ORANGE = COLORURIBASE + ":burnt_orange";
+ public final static String COLOR_BURNT_SIENNA = COLORURIBASE + ":burnt_sienna";
+ public final static String COLOR_BURNT_UMBER = COLORURIBASE + ":burnt_umber";
+ public final static String COLOR_CAMOUFLAGE_GREEN = COLORURIBASE + ":camouflage_green";
+ public final static String COLOR_CAPUT_MORTUUM = COLORURIBASE + ":caput_mortuum";
+ public final static String COLOR_CARDINAL = COLORURIBASE + ":cardinal";
+ public final static String COLOR_CARMINE = COLORURIBASE + ":carmine";
+ public final static String COLOR_CARMINE_PINK = COLORURIBASE + ":carmine_pink";
+ public final static String COLOR_CARNATION_PINK = COLORURIBASE + ":carnation_pink";
+ public final static String COLOR_CAROLINA_BLUE = COLORURIBASE + ":carolina_blue";
+ public final static String COLOR_CARROT_ORANGE = COLORURIBASE + ":carrot_orange";
+ public final static String COLOR_CELADON = COLORURIBASE + ":celadon";
+ public final static String COLOR_CERISE = COLORURIBASE + ":cerise";
+ public final static String COLOR_CERISE_PINK = COLORURIBASE + ":cerise_pink";
+ public final static String COLOR_CERULEAN = COLORURIBASE + ":cerulean";
+ public final static String COLOR_CERULEAN_BLUE = COLORURIBASE + ":cerulean_blue";
+ public final static String COLOR_CHAMPAGNE = COLORURIBASE + ":champagne";
+ public final static String COLOR_CHARCOAL = COLORURIBASE + ":charcoal";
+ public final static String COLOR_CHARTREUSE_TRADITIONAL = COLORURIBASE + ":chartreuse_traditional";
+ public final static String COLOR_CHARTREUSE_WEB = COLORURIBASE + ":chartreuse_web";
+ public final static String COLOR_CHERRY_BLOSSOM_PINK = COLORURIBASE + ":cherry_blossom_pink";
+ public final static String COLOR_CHESTNUT = COLORURIBASE + ":chestnut";
+ public final static String COLOR_CHOCOLATE = COLORURIBASE + ":chocolate";
+ public final static String COLOR_CINNABAR = COLORURIBASE + ":cinnabar";
+ public final static String COLOR_CINNAMON = COLORURIBASE + ":cinnamon";
+ public final static String COLOR_COBALT = COLORURIBASE + ":cobalt";
+ public final static String COLOR_COLUMBIA_BLUE = COLORURIBASE + ":columbia_blue";
+ public final static String COLOR_COPPER = COLORURIBASE + ":copper";
+ public final static String COLOR_COPPER_ROSE = COLORURIBASE + ":copper_rose";
+ public final static String COLOR_CORAL = COLORURIBASE + ":coral";
+ public final static String COLOR_CORAL_PINK = COLORURIBASE + ":coral_pink";
+ public final static String COLOR_CORAL_RED = COLORURIBASE + ":coral_red";
+ public final static String COLOR_CORN = COLORURIBASE + ":corn";
+ public final static String COLOR_CORNFLOWER_BLUE = COLORURIBASE + ":cornflower_blue";
+ public final static String COLOR_COSMIC_LATTE = COLORURIBASE + ":cosmic_latte";
+ public final static String COLOR_CREAM = COLORURIBASE + ":cream";
+ public final static String COLOR_CRIMSON = COLORURIBASE + ":crimson";
+ public final static String COLOR_CYAN = COLORURIBASE + ":cyan";
+ public final static String COLOR_CYAN_PROCESS = COLORURIBASE + ":cyan_process";
+ public final static String COLOR_DARK_BLUE = COLORURIBASE + ":dark_blue";
+ public final static String COLOR_DARK_BROWN = COLORURIBASE + ":dark_brown";
+ public final static String COLOR_DARK_CERULEAN = COLORURIBASE + ":dark_cerulean";
+ public final static String COLOR_DARK_CHESTNUT = COLORURIBASE + ":dark_chestnut";
+ public final static String COLOR_DARK_CORAL = COLORURIBASE + ":dark_coral";
+ public final static String COLOR_DARK_GOLDENROD = COLORURIBASE + ":dark_goldenrod";
+ public final static String COLOR_DARK_GREEN = COLORURIBASE + ":dark_green";
+ public final static String COLOR_DARK_KHAKI = COLORURIBASE + ":dark_khaki";
+ public final static String COLOR_DARK_MAGENTA = COLORURIBASE + ":dark_magenta";
+ public final static String COLOR_DARK_PASTEL_GREEN = COLORURIBASE + ":dark_pastel_green";
+ public final static String COLOR_DARK_PINK = COLORURIBASE + ":dark_pink";
+ public final static String COLOR_DARK_SCARLET = COLORURIBASE + ":dark_scarlet";
+ public final static String COLOR_DARK_SALMON = COLORURIBASE + ":dark_salmon";
+ public final static String COLOR_DARK_SLATE_GRAY = COLORURIBASE + ":dark_slate_gray";
+ public final static String COLOR_DARK_SPRING_GREEN = COLORURIBASE + ":dark_spring_green";
+ public final static String COLOR_DARK_TAN = COLORURIBASE + ":dark_tan";
+ public final static String COLOR_DARK_TURQUOISE = COLORURIBASE + ":dark_turquoise";
+ public final static String COLOR_DARK_VIOLET = COLORURIBASE + ":dark_violet";
+ public final static String COLOR_DEEP_CARMINE_PINK = COLORURIBASE + ":deep_carmine_pink";
+ public final static String COLOR_DEEP_CERISE = COLORURIBASE + ":deep_cerise";
+ public final static String COLOR_DEEP_CHESTNUT = COLORURIBASE + ":deep_chestnut";
+ public final static String COLOR_DEEP_FUCHSIA = COLORURIBASE + ":deep_fuchsia";
+ public final static String COLOR_DEEP_LILAC = COLORURIBASE + ":deep_lilac";
+ public final static String COLOR_DEEP_MAGENTA = COLORURIBASE + ":deep_magenta";
+ public final static String COLOR_DEEP_PEACH = COLORURIBASE + ":deep_peach";
+ public final static String COLOR_DEEP_PINK = COLORURIBASE + ":deep_pink";
+ public final static String COLOR_DENIM = COLORURIBASE + ":denim";
+ public final static String COLOR_DODGER_BLUE = COLORURIBASE + ":dodger_blue";
+ public final static String COLOR_ECRU = COLORURIBASE + ":ecru";
+ public final static String COLOR_EGYPTIAN_BLUE = COLORURIBASE + ":egyptian_blue";
+ public final static String COLOR_ELECTRIC_BLUE = COLORURIBASE + ":electric_blue";
+ public final static String COLOR_ELECTRIC_GREEN_X11_GREEN = COLORURIBASE + ":electric_green_x11_green";
+ public final static String COLOR_ELECTRIC_INDIGO = COLORURIBASE + ":electric_indigo";
+ public final static String COLOR_ELECTRIC_LIME = COLORURIBASE + ":electric_lime";
+ public final static String COLOR_ELECTRIC_PURPLE = COLORURIBASE + ":electric_purple";
+ public final static String COLOR_EMERALD = COLORURIBASE + ":emerald";
+ public final static String COLOR_EGGPLANT = COLORURIBASE + ":eggplant";
+ public final static String COLOR_FALU_RED = COLORURIBASE + ":falu_red";
+ public final static String COLOR_FERN_GREEN = COLORURIBASE + ":fern_green";
+ public final static String COLOR_FIREBRICK = COLORURIBASE + ":firebrick";
+ public final static String COLOR_FLAX = COLORURIBASE + ":flax";
+ public final static String COLOR_FOREST_GREEN = COLORURIBASE + ":forest_green";
+ public final static String COLOR_FRENCH_ROSE = COLORURIBASE + ":french_rose";
+ public final static String COLOR_FUCHSIA = COLORURIBASE + ":fuchsia";
+ public final static String COLOR_FUCHSIA_PINK = COLORURIBASE + ":fuchsia_pink";
+ public final static String COLOR_GAMBOGE = COLORURIBASE + ":gamboge";
+ public final static String COLOR_GOLD_METALLIC = COLORURIBASE + ":gold_metallic";
+ public final static String COLOR_GOLD_WEB_GOLDEN = COLORURIBASE + ":gold_web_golden";
+ public final static String COLOR_GOLDEN_BROWN = COLORURIBASE + ":golden_brown";
+ public final static String COLOR_GOLDEN_YELLOW = COLORURIBASE + ":golden_yellow";
+ public final static String COLOR_GOLDENROD = COLORURIBASE + ":goldenrod";
+ public final static String COLOR_GREY_ASPARAGUS = COLORURIBASE + ":grey-asparagus";
+ public final static String COLOR_GREEN_COLOR_WHEEL_X11_GREEN = COLORURIBASE + ":green_color_wheel_x11_green";
+ public final static String COLOR_GREEN_HTMLCSS_GREEN = COLORURIBASE + ":green_html/css_green";
+ public final static String COLOR_GREEN_PIGMENT = COLORURIBASE + ":green_pigment";
+ public final static String COLOR_GREEN_RYB = COLORURIBASE + ":green_ryb";
+ public final static String COLOR_GREEN_YELLOW = COLORURIBASE + ":green-yellow";
+ public final static String COLOR_GREY = COLORURIBASE + ":grey";
+ public final static String COLOR_HAN_PURPLE = COLORURIBASE + ":han_purple";
+ public final static String COLOR_HARLEQUIN = COLORURIBASE + ":harlequin";
+ public final static String COLOR_HELIOTROPE = COLORURIBASE + ":heliotrope";
+ public final static String COLOR_HOLLYWOOD_CERISE = COLORURIBASE + ":hollywood_cerise";
+ public final static String COLOR_HOT_MAGENTA = COLORURIBASE + ":hot_magenta";
+ public final static String COLOR_HOT_PINK = COLORURIBASE + ":hot_pink";
+ public final static String COLOR_INDIGO_DYE = COLORURIBASE + ":indigo_dye";
+ public final static String COLOR_INDIGO_WEB = COLORURIBASE + ":indigo_web";
+ public final static String COLOR_INTERNATIONAL_KLEIN_BLUE = COLORURIBASE + ":international_klein_blue";
+ public final static String COLOR_INTERNATIONAL_ORANGE = COLORURIBASE + ":international_orange";
+ public final static String COLOR_ISLAMIC_GREEN = COLORURIBASE + ":islamic_green";
+ public final static String COLOR_IVORY = COLORURIBASE + ":ivory";
+ public final static String COLOR_JADE = COLORURIBASE + ":jade";
+ public final static String COLOR_KELLY_GREEN = COLORURIBASE + ":kelly_green";
+ public final static String COLOR_KHAKI = COLORURIBASE + ":khaki";
+ public final static String COLOR_KHAKI_X11_LIGHT_KHAKI = COLORURIBASE + ":khaki_x11_light_khaki";
+ public final static String COLOR_LAVENDER_FLORAL = COLORURIBASE + ":lavender_floral";
+ public final static String COLOR_LAVENDER_WEB = COLORURIBASE + ":lavender_web";
+ public final static String COLOR_LAVENDER_BLUE = COLORURIBASE + ":lavender_blue";
+ public final static String COLOR_LAVENDER_BLUSH = COLORURIBASE + ":lavender_blush";
+ public final static String COLOR_LAVENDER_GREY = COLORURIBASE + ":lavender_grey";
+ public final static String COLOR_LAVENDER_MAGENTA = COLORURIBASE + ":lavender_magenta";
+ public final static String COLOR_LAVENDER_PINK = COLORURIBASE + ":lavender_pink";
+ public final static String COLOR_LAVENDER_PURPLE = COLORURIBASE + ":lavender_purple";
+ public final static String COLOR_LAVENDER_ROSE = COLORURIBASE + ":lavender_rose";
+ public final static String COLOR_LAWN_GREEN = COLORURIBASE + ":lawn_green";
+ public final static String COLOR_LEMON = COLORURIBASE + ":lemon";
+ public final static String COLOR_LEMON_CHIFFON = COLORURIBASE + ":lemon_chiffon";
+ public final static String COLOR_LIGHT_BLUE = COLORURIBASE + ":light_blue";
+ public final static String COLOR_LIGHT_PINK = COLORURIBASE + ":light_pink";
+ public final static String COLOR_LILAC = COLORURIBASE + ":lilac";
+ public final static String COLOR_LIME_COLOR_WHEEL = COLORURIBASE + ":lime_color_wheel";
+ public final static String COLOR_LIME_WEB_X11_GREEN = COLORURIBASE + ":lime_web_x11_green";
+ public final static String COLOR_LIME_GREEN = COLORURIBASE + ":lime_green";
+ public final static String COLOR_LINEN = COLORURIBASE + ":linen";
+ public final static String COLOR_MAGENTA = COLORURIBASE + ":magenta";
+ public final static String COLOR_MAGENTA_DYE = COLORURIBASE + ":magenta_dye";
+ public final static String COLOR_MAGENTA_PROCESS = COLORURIBASE + ":magenta_process";
+ public final static String COLOR_MAGIC_MINT = COLORURIBASE + ":magic_mint";
+ public final static String COLOR_MAGNOLIA = COLORURIBASE + ":magnolia";
+ public final static String COLOR_MALACHITE = COLORURIBASE + ":malachite";
+ public final static String COLOR_MAROON_HTMLCSS = COLORURIBASE + ":maroon_html/css";
+ public final static String COLOR_MAROON_X11 = COLORURIBASE + ":maroon_x11";
+ public final static String COLOR_MAYA_BLUE = COLORURIBASE + ":maya_blue";
+ public final static String COLOR_MAUVE = COLORURIBASE + ":mauve";
+ public final static String COLOR_MAUVE_TAUPE = COLORURIBASE + ":mauve_taupe";
+ public final static String COLOR_MEDIUM_BLUE = COLORURIBASE + ":medium_blue";
+ public final static String COLOR_MEDIUM_CARMINE = COLORURIBASE + ":medium_carmine";
+ public final static String COLOR_MEDIUM_LAVENDER_MAGENTA = COLORURIBASE + ":medium_lavender_magenta";
+ public final static String COLOR_MEDIUM_PURPLE = COLORURIBASE + ":medium_purple";
+ public final static String COLOR_MEDIUM_SPRING_GREEN = COLORURIBASE + ":medium_spring_green";
+ public final static String COLOR_MIDNIGHT_BLUE = COLORURIBASE + ":midnight_blue";
+ public final static String COLOR_MIDNIGHT_GREEN_EAGLE_GREEN = COLORURIBASE + ":midnight_green_eagle_green";
+ public final static String COLOR_MINT_GREEN = COLORURIBASE + ":mint_green";
+ public final static String COLOR_MISTY_ROSE = COLORURIBASE + ":misty_rose";
+ public final static String COLOR_MOSS_GREEN = COLORURIBASE + ":moss_green";
+ public final static String COLOR_MOUNTBATTEN_PINK = COLORURIBASE + ":mountbatten_pink";
+ public final static String COLOR_MUSTARD = COLORURIBASE + ":mustard";
+ public final static String COLOR_MYRTLE = COLORURIBASE + ":myrtle";
+ public final static String COLOR_NAVAJO_WHITE = COLORURIBASE + ":navajo_white";
+ public final static String COLOR_NAVY_BLUE = COLORURIBASE + ":navy_blue";
+ public final static String COLOR_OCHRE = COLORURIBASE + ":ochre";
+ public final static String COLOR_OFFICE_GREEN = COLORURIBASE + ":office_green";
+ public final static String COLOR_OLD_GOLD = COLORURIBASE + ":old_gold";
+ public final static String COLOR_OLD_LACE = COLORURIBASE + ":old_lace";
+ public final static String COLOR_OLD_LAVENDER = COLORURIBASE + ":old_lavender";
+ public final static String COLOR_OLD_ROSE = COLORURIBASE + ":old_rose";
+ public final static String COLOR_OLIVE = COLORURIBASE + ":olive";
+ public final static String COLOR_OLIVE_DRAB = COLORURIBASE + ":olive_drab";
+ public final static String COLOR_OLIVINE = COLORURIBASE + ":olivine";
+ public final static String COLOR_ORANGE_COLOR_WHEEL = COLORURIBASE + ":orange_color_wheel";
+ public final static String COLOR_ORANGE_RYB = COLORURIBASE + ":orange_ryb";
+ public final static String COLOR_ORANGE_WEB = COLORURIBASE + ":orange_web";
+ public final static String COLOR_ORANGE_PEEL = COLORURIBASE + ":orange_peel";
+ public final static String COLOR_ORANGE_RED = COLORURIBASE + ":orange-red";
+ public final static String COLOR_ORCHID = COLORURIBASE + ":orchid";
+ public final static String COLOR_PALE_BLUE = COLORURIBASE + ":pale_blue";
+ public final static String COLOR_PALE_BROWN = COLORURIBASE + ":pale_brown";
+ public final static String COLOR_PALE_CARMINE = COLORURIBASE + ":pale_carmine";
+ public final static String COLOR_PALE_CHESTNUT = COLORURIBASE + ":pale_chestnut";
+ public final static String COLOR_PALE_CORNFLOWER_BLUE = COLORURIBASE + ":pale_cornflower_blue";
+ public final static String COLOR_PALE_MAGENTA = COLORURIBASE + ":pale_magenta";
+ public final static String COLOR_PALE_PINK = COLORURIBASE + ":pale_pink";
+ public final static String COLOR_PALE_RED_VIOLET = COLORURIBASE + ":pale_red-violet";
+ public final static String COLOR_PAPAYA_WHIP = COLORURIBASE + ":papaya_whip";
+ public final static String COLOR_PASTEL_GREEN = COLORURIBASE + ":pastel_green";
+ public final static String COLOR_PASTEL_PINK = COLORURIBASE + ":pastel_pink";
+ public final static String COLOR_PEACH = COLORURIBASE + ":peach";
+ public final static String COLOR_PEACH_ORANGE = COLORURIBASE + ":peach-orange";
+ public final static String COLOR_PEACH_YELLOW = COLORURIBASE + ":peach-yellow";
+ public final static String COLOR_PEAR = COLORURIBASE + ":pear";
+ public final static String COLOR_PERIWINKLE = COLORURIBASE + ":periwinkle";
+ public final static String COLOR_PERSIAN_BLUE = COLORURIBASE + ":persian_blue";
+ public final static String COLOR_PERSIAN_GREEN = COLORURIBASE + ":persian_green";
+ public final static String COLOR_PERSIAN_INDIGO = COLORURIBASE + ":persian_indigo";
+ public final static String COLOR_PERSIAN_ORANGE = COLORURIBASE + ":persian_orange";
+ public final static String COLOR_PERSIAN_RED = COLORURIBASE + ":persian_red";
+ public final static String COLOR_PERSIAN_PINK = COLORURIBASE + ":persian_pink";
+ public final static String COLOR_PERSIAN_ROSE = COLORURIBASE + ":persian_rose";
+ public final static String COLOR_PERSIMMON = COLORURIBASE + ":persimmon";
+ public final static String COLOR_PINE_GREEN = COLORURIBASE + ":pine_green";
+ public final static String COLOR_PINK = COLORURIBASE + ":pink";
+ public final static String COLOR_PINK_ORANGE = COLORURIBASE + ":pink-orange";
+ public final static String COLOR_PLATINUM = COLORURIBASE + ":platinum";
+ public final static String COLOR_PLUM_WEB = COLORURIBASE + ":plum_web";
+ public final static String COLOR_POWDER_BLUE_WEB = COLORURIBASE + ":powder_blue_web";
+ public final static String COLOR_PUCE = COLORURIBASE + ":puce";
+ public final static String COLOR_PRUSSIAN_BLUE = COLORURIBASE + ":prussian_blue";
+ public final static String COLOR_PSYCHEDELIC_PURPLE = COLORURIBASE + ":psychedelic_purple";
+ public final static String COLOR_PUMPKIN = COLORURIBASE + ":pumpkin";
+ public final static String COLOR_PURPLE_HTMLCSS = COLORURIBASE + ":purple_html/css";
+ public final static String COLOR_PURPLE_X11 = COLORURIBASE + ":purple_x11";
+ public final static String COLOR_PURPLE_TAUPE = COLORURIBASE + ":purple_taupe";
+ public final static String COLOR_RAW_UMBER = COLORURIBASE + ":raw_umber";
+ public final static String COLOR_RAZZMATAZZ = COLORURIBASE + ":razzmatazz";
+ public final static String COLOR_RED = COLORURIBASE + ":red";
+ public final static String COLOR_RED_PIGMENT = COLORURIBASE + ":red_pigment";
+ public final static String COLOR_RED_RYB = COLORURIBASE + ":red_ryb";
+ public final static String COLOR_RED_VIOLET = COLORURIBASE + ":red-violet";
+ public final static String COLOR_RICH_CARMINE = COLORURIBASE + ":rich_carmine";
+ public final static String COLOR_ROBIN_EGG_BLUE = COLORURIBASE + ":robin_egg_blue";
+ public final static String COLOR_ROSE = COLORURIBASE + ":rose";
+ public final static String COLOR_ROSE_MADDER = COLORURIBASE + ":rose_madder";
+ public final static String COLOR_ROSE_TAUPE = COLORURIBASE + ":rose_taupe";
+ public final static String COLOR_ROYAL_BLUE = COLORURIBASE + ":royal_blue";
+ public final static String COLOR_ROYAL_PURPLE = COLORURIBASE + ":royal_purple";
+ public final static String COLOR_RUBY = COLORURIBASE + ":ruby";
+ public final static String COLOR_RUSSET = COLORURIBASE + ":russet";
+ public final static String COLOR_RUST = COLORURIBASE + ":rust";
+ public final static String COLOR_SAFETY_ORANGE_BLAZE_ORANGE = COLORURIBASE + ":safety_orange_blaze_orange";
+ public final static String COLOR_SAFFRON = COLORURIBASE + ":saffron";
+ public final static String COLOR_SALMON = COLORURIBASE + ":salmon";
+ public final static String COLOR_SANDY_BROWN = COLORURIBASE + ":sandy_brown";
+ public final static String COLOR_SANGRIA = COLORURIBASE + ":sangria";
+ public final static String COLOR_SAPPHIRE = COLORURIBASE + ":sapphire";
+ public final static String COLOR_SCARLET = COLORURIBASE + ":scarlet";
+ public final static String COLOR_SCHOOL_BUS_YELLOW = COLORURIBASE + ":school_bus_yellow";
+ public final static String COLOR_SEA_GREEN = COLORURIBASE + ":sea_green";
+ public final static String COLOR_SEASHELL = COLORURIBASE + ":seashell";
+ public final static String COLOR_SELECTIVE_YELLOW = COLORURIBASE + ":selective_yellow";
+ public final static String COLOR_SEPIA = COLORURIBASE + ":sepia";
+ public final static String COLOR_SHAMROCK_GREEN = COLORURIBASE + ":shamrock_green";
+ public final static String COLOR_SHOCKING_PINK = COLORURIBASE + ":shocking_pink";
+ public final static String COLOR_SILVER = COLORURIBASE + ":silver";
+ public final static String COLOR_SKY_BLUE = COLORURIBASE + ":sky_blue";
+ public final static String COLOR_SLATE_GREY = COLORURIBASE + ":slate_grey";
+ public final static String COLOR_SMALT_DARK_POWDER_BLUE = COLORURIBASE + ":smalt_dark_powder_blue";
+ public final static String COLOR_SPRING_BUD = COLORURIBASE + ":spring_bud";
+ public final static String COLOR_SPRING_GREEN = COLORURIBASE + ":spring_green";
+ public final static String COLOR_STEEL_BLUE = COLORURIBASE + ":steel_blue";
+ public final static String COLOR_TAN = COLORURIBASE + ":tan";
+ public final static String COLOR_TANGERINE = COLORURIBASE + ":tangerine";
+ public final static String COLOR_TANGERINE_YELLOW = COLORURIBASE + ":tangerine_yellow";
+ public final static String COLOR_TAUPE = COLORURIBASE + ":taupe";
+ public final static String COLOR_TEA_GREEN = COLORURIBASE + ":tea_green";
+ public final static String COLOR_TEA_ROSE_ORANGE = COLORURIBASE + ":tea_rose_orange";
+ public final static String COLOR_TEA_ROSE_ROSE = COLORURIBASE + ":tea_rose_rose";
+ public final static String COLOR_TEAL = COLORURIBASE + ":teal";
+ public final static String COLOR_TENNY_TAWNY = COLORURIBASE + ":tenny_tawny";
+ public final static String COLOR_TERRA_COTTA = COLORURIBASE + ":terra_cotta";
+ public final static String COLOR_THISTLE = COLORURIBASE + ":thistle";
+ public final static String COLOR_TOMATO = COLORURIBASE + ":tomato";
+ public final static String COLOR_TURQUOISE = COLORURIBASE + ":turquoise";
+ public final static String COLOR_TYRIAN_PURPLE = COLORURIBASE + ":tyrian_purple";
+ public final static String COLOR_ULTRAMARINE = COLORURIBASE + ":ultramarine";
+ public final static String COLOR_ULTRA_PINK = COLORURIBASE + ":ultra_pink";
+ public final static String COLOR_UNITED_NATIONS_BLUE = COLORURIBASE + ":united_nations_blue";
+ public final static String COLOR_VEGAS_GOLD = COLORURIBASE + ":vegas_gold";
+ public final static String COLOR_VERMILION = COLORURIBASE + ":vermilion";
+ public final static String COLOR_VIOLET = COLORURIBASE + ":violet";
+ public final static String COLOR_VIOLET_WEB = COLORURIBASE + ":violet_web";
+ public final static String COLOR_VIOLET_RYB = COLORURIBASE + ":violet_ryb";
+ public final static String COLOR_VIRIDIAN = COLORURIBASE + ":viridian";
+ public final static String COLOR_WHEAT = COLORURIBASE + ":wheat";
+ public final static String COLOR_WHITE = COLORURIBASE + ":white";
+ public final static String COLOR_WISTERIA = COLORURIBASE + ":wisteria";
+ public final static String COLOR_YELLOW = COLORURIBASE + ":yellow";
+ public final static String COLOR_YELLOW_PROCESS = COLORURIBASE + ":yellow_process";
+ public final static String COLOR_YELLOW_RYB = COLORURIBASE + ":yellow_ryb";
+ public final static String COLOR_YELLOW_GREEN = COLORURIBASE + ":yellow-green";
+
+ static {
+ colorTable_.put(COLOR_ALICE_BLUE, new Color( 240, 248, 255 ));
+ colorTable_.put(COLOR_ALIZARIN, new Color( 227, 38, 54 ));
+ colorTable_.put(COLOR_AMARANTH, new Color( 229, 43, 80 ));
+ colorTable_.put(COLOR_AMARANTH_PINK, new Color( 241, 156, 187 ));
+ colorTable_.put(COLOR_AMBER, new Color( 255, 191, 0 ));
+ colorTable_.put(COLOR_AMETHYST, new Color( 153, 102, 204 ));
+ colorTable_.put(COLOR_APRICOT, new Color( 251, 206, 177 ));
+ colorTable_.put(COLOR_AQUA, new Color( 0, 255, 255 ));
+ colorTable_.put(COLOR_AQUAMARINE, new Color( 127, 255, 212 ));
+ colorTable_.put(COLOR_ARMY_GREEN, new Color( 75, 83, 32 ));
+ colorTable_.put(COLOR_ASPARAGUS, new Color( 123, 160, 91 ));
+ colorTable_.put(COLOR_ATOMIC_TANGERINE, new Color( 255, 153, 102 ));
+ colorTable_.put(COLOR_AUBURN, new Color( 111, 53, 26 ));
+ colorTable_.put(COLOR_AZURE_COLOR_WHEEL, new Color( 0, 127, 255 ));
+ colorTable_.put(COLOR_AZURE_WEB, new Color( 0, 255, 255 ));
+ colorTable_.put(COLOR_BABY_BLUE, new Color( 224, 255, 255 ));
+ colorTable_.put(COLOR_BEIGE, new Color( 245, 245, 220 ));
+ colorTable_.put(COLOR_BISTRE, new Color( 61, 43, 31 ));
+ colorTable_.put(COLOR_BLACK, new Color( 0, 0, 0 ));
+ colorTable_.put(COLOR_BLUE, new Color( 0, 0, 255 ));
+ colorTable_.put(COLOR_BLUE_PIGMENT, new Color( 51, 51, 153 ));
+ colorTable_.put(COLOR_BLUE_RYB, new Color( 2, 71, 254 ));
+ colorTable_.put(COLOR_BLUE_GREEN, new Color( 0, 223, 223 ));
+ colorTable_.put(COLOR_BLUE_VIOLET, new Color( 138, 43, 226 ));
+ colorTable_.put(COLOR_BONDI_BLUE, new Color( 0, 149, 182 ));
+ colorTable_.put(COLOR_BRASS, new Color( 181, 166, 66 ));
+ colorTable_.put(COLOR_BRIGHT_GREEN, new Color( 102, 255, 0 ));
+ colorTable_.put(COLOR_BRIGHT_PINK, new Color( 255, 0, 127 ));
+ colorTable_.put(COLOR_BRIGHT_TURQUOISE, new Color( 8, 232, 222 ));
+ colorTable_.put(COLOR_BRILLIANT_ROSE, new Color( 255, 85, 163 ));
+ colorTable_.put(COLOR_BRINK_PINK, new Color( 251, 96, 127 ));
+ colorTable_.put(COLOR_BRONZE, new Color( 205, 127, 50 ));
+ colorTable_.put(COLOR_BROWN, new Color( 150, 75, 0 ));
+ colorTable_.put(COLOR_BUFF, new Color( 240, 220, 130 ));
+ colorTable_.put(COLOR_BURGUNDY, new Color( 128, 0, 32 ));
+ colorTable_.put(COLOR_BURNT_ORANGE, new Color( 204, 85, 0 ));
+ colorTable_.put(COLOR_BURNT_SIENNA, new Color( 233, 116, 81 ));
+ colorTable_.put(COLOR_BURNT_UMBER, new Color( 138, 51, 36 ));
+ colorTable_.put(COLOR_CAMOUFLAGE_GREEN, new Color( 120, 134, 107 ));
+ colorTable_.put(COLOR_CAPUT_MORTUUM, new Color( 89, 39, 32 ));
+ colorTable_.put(COLOR_CARDINAL, new Color( 196, 30, 58 ));
+ colorTable_.put(COLOR_CARMINE, new Color( 150, 0, 24 ));
+ colorTable_.put(COLOR_CARMINE_PINK, new Color( 235, 76, 66 ));
+ colorTable_.put(COLOR_CARNATION_PINK, new Color( 255, 166, 201 ));
+ colorTable_.put(COLOR_CAROLINA_BLUE, new Color( 156, 186, 227 ));
+ colorTable_.put(COLOR_CARROT_ORANGE, new Color( 237, 145, 33 ));
+ colorTable_.put(COLOR_CELADON, new Color( 172, 225, 175 ));
+ colorTable_.put(COLOR_CERISE, new Color( 222, 49, 99 ));
+ colorTable_.put(COLOR_CERISE_PINK, new Color( 236, 59, 131 ));
+ colorTable_.put(COLOR_CERULEAN, new Color( 0, 123, 167 ));
+ colorTable_.put(COLOR_CERULEAN_BLUE, new Color( 42, 82, 190 ));
+ colorTable_.put(COLOR_CHAMPAGNE, new Color( 247, 231, 206 ));
+ colorTable_.put(COLOR_CHARCOAL, new Color( 70, 70, 70 ));
+ colorTable_.put(COLOR_CHARTREUSE_TRADITIONAL, new Color( 223, 255, 0 ));
+ colorTable_.put(COLOR_CHARTREUSE_WEB, new Color( 127, 255, 0 ));
+ colorTable_.put(COLOR_CHERRY_BLOSSOM_PINK, new Color( 255, 183, 197 ));
+ colorTable_.put(COLOR_CHESTNUT, new Color( 205, 92, 92 ));
+ colorTable_.put(COLOR_CHOCOLATE, new Color( 123, 63, 0 ));
+ colorTable_.put(COLOR_CINNABAR, new Color( 227, 66, 52 ));
+ colorTable_.put(COLOR_CINNAMON, new Color( 210, 105, 30 ));
+ colorTable_.put(COLOR_COBALT, new Color( 0, 71, 171 ));
+ colorTable_.put(COLOR_COLUMBIA_BLUE, new Color( 155, 221, 255 ));
+ colorTable_.put(COLOR_COPPER, new Color( 184, 115, 51 ));
+ colorTable_.put(COLOR_COPPER_ROSE, new Color( 153, 102, 102 ));
+ colorTable_.put(COLOR_CORAL, new Color( 255, 127, 80 ));
+ colorTable_.put(COLOR_CORAL_PINK, new Color( 248, 131, 121 ));
+ colorTable_.put(COLOR_CORAL_RED, new Color( 255, 64, 64 ));
+ colorTable_.put(COLOR_CORN, new Color( 251, 236, 93 ));
+ colorTable_.put(COLOR_CORNFLOWER_BLUE, new Color( 100, 149, 237 ));
+ colorTable_.put(COLOR_COSMIC_LATTE, new Color( 255, 248, 231 ));
+ colorTable_.put(COLOR_CREAM, new Color( 255, 253, 208 ));
+ colorTable_.put(COLOR_CRIMSON, new Color( 220, 20, 60 ));
+ colorTable_.put(COLOR_CYAN, new Color( 0, 255, 255 ));
+ colorTable_.put(COLOR_CYAN_PROCESS, new Color( 0, 180, 247 ));
+ colorTable_.put(COLOR_DARK_BLUE, new Color( 0, 0, 139 ));
+ colorTable_.put(COLOR_DARK_BROWN, new Color( 101, 67, 33 ));
+ colorTable_.put(COLOR_DARK_CERULEAN, new Color( 8, 69, 126 ));
+ colorTable_.put(COLOR_DARK_CHESTNUT, new Color( 152, 105, 96 ));
+ colorTable_.put(COLOR_DARK_CORAL, new Color( 205, 91, 69 ));
+ colorTable_.put(COLOR_DARK_GOLDENROD, new Color( 184, 134, 11 ));
+ colorTable_.put(COLOR_DARK_GREEN, new Color( 1, 50, 32 ));
+ colorTable_.put(COLOR_DARK_KHAKI, new Color( 189, 183, 107 ));
+ colorTable_.put(COLOR_DARK_MAGENTA, new Color( 139, 0, 139 ));
+ colorTable_.put(COLOR_DARK_PASTEL_GREEN, new Color( 3, 192, 60 ));
+ colorTable_.put(COLOR_DARK_PINK, new Color( 231, 84, 128 ));
+ colorTable_.put(COLOR_DARK_SCARLET, new Color( 86, 3, 25 ));
+ colorTable_.put(COLOR_DARK_SALMON, new Color( 233, 150, 122 ));
+ colorTable_.put(COLOR_DARK_SLATE_GRAY, new Color( 47, 79, 79 ));
+ colorTable_.put(COLOR_DARK_SPRING_GREEN, new Color( 23, 114, 69 ));
+ colorTable_.put(COLOR_DARK_TAN, new Color( 145, 129, 81 ));
+ colorTable_.put(COLOR_DARK_TURQUOISE, new Color( 0, 206, 209 ));
+ colorTable_.put(COLOR_DARK_VIOLET, new Color( 148, 0, 211 ));
+ colorTable_.put(COLOR_DEEP_CARMINE_PINK, new Color( 239, 48, 56 ));
+ colorTable_.put(COLOR_DEEP_CERISE, new Color( 218, 50, 135 ));
+ colorTable_.put(COLOR_DEEP_CHESTNUT, new Color( 185, 78, 72 ));
+ colorTable_.put(COLOR_DEEP_FUCHSIA, new Color( 193, 84, 193 ));
+ colorTable_.put(COLOR_DEEP_LILAC, new Color( 153, 85, 187 ));
+ colorTable_.put(COLOR_DEEP_MAGENTA, new Color( 204, 0, 204 ));
+ colorTable_.put(COLOR_DEEP_PEACH, new Color( 255, 203, 164 ));
+ colorTable_.put(COLOR_DEEP_PINK, new Color( 255, 20, 147 ));
+ colorTable_.put(COLOR_DENIM, new Color( 21, 96, 189 ));
+ colorTable_.put(COLOR_DODGER_BLUE, new Color( 30, 144, 255 ));
+ colorTable_.put(COLOR_ECRU, new Color( 194, 178, 128 ));
+ colorTable_.put(COLOR_EGYPTIAN_BLUE, new Color( 16, 52, 166 ));
+ colorTable_.put(COLOR_ELECTRIC_BLUE, new Color( 125, 249, 255 ));
+ colorTable_.put(COLOR_ELECTRIC_GREEN_X11_GREEN, new Color( 0, 255, 0 ));
+ colorTable_.put(COLOR_ELECTRIC_INDIGO, new Color( 102, 0, 255 ));
+ colorTable_.put(COLOR_ELECTRIC_LIME, new Color( 204, 255, 0 ));
+ colorTable_.put(COLOR_ELECTRIC_PURPLE, new Color( 191, 0, 255 ));
+ colorTable_.put(COLOR_EMERALD, new Color( 80, 200, 120 ));
+ colorTable_.put(COLOR_EGGPLANT, new Color( 97, 64, 81 ));
+ colorTable_.put(COLOR_FALU_RED, new Color( 128, 24, 24 ));
+ colorTable_.put(COLOR_FERN_GREEN, new Color( 79, 121, 66 ));
+ colorTable_.put(COLOR_FIREBRICK, new Color( 178, 34, 34 ));
+ colorTable_.put(COLOR_FLAX, new Color( 238, 220, 130 ));
+ colorTable_.put(COLOR_FOREST_GREEN, new Color( 34, 139, 34 ));
+ colorTable_.put(COLOR_FRENCH_ROSE, new Color( 246, 74, 138 ));
+ colorTable_.put(COLOR_FUCHSIA, new Color( 255, 0, 255 ));
+ colorTable_.put(COLOR_FUCHSIA_PINK, new Color( 255, 119, 255 ));
+ colorTable_.put(COLOR_GAMBOGE, new Color( 228, 155, 15 ));
+ colorTable_.put(COLOR_GOLD_METALLIC, new Color( 212, 175, 55 ));
+ colorTable_.put(COLOR_GOLD_WEB_GOLDEN, new Color( 255, 215, 0 ));
+ colorTable_.put(COLOR_GOLDEN_BROWN, new Color( 153, 101, 21 ));
+ colorTable_.put(COLOR_GOLDEN_YELLOW, new Color( 255, 223, 0 ));
+ colorTable_.put(COLOR_GOLDENROD, new Color( 218, 165, 32 ));
+ colorTable_.put(COLOR_GREY_ASPARAGUS, new Color( 70, 89, 69 ));
+ colorTable_.put(COLOR_GREEN_COLOR_WHEEL_X11_GREEN, new Color( 0, 255, 0 ));
+ colorTable_.put(COLOR_GREEN_HTMLCSS_GREEN, new Color( 0, 128, 0 ));
+ colorTable_.put(COLOR_GREEN_PIGMENT, new Color( 0, 165, 80 ));
+ colorTable_.put(COLOR_GREEN_RYB, new Color( 102, 176, 50 ));
+ colorTable_.put(COLOR_GREEN_YELLOW, new Color( 173, 255, 47 ));
+ colorTable_.put(COLOR_GREY, new Color( 128, 128, 128 ));
+ colorTable_.put(COLOR_HAN_PURPLE, new Color( 82, 24, 250 ));
+ colorTable_.put(COLOR_HARLEQUIN, new Color( 63, 255, 0 ));
+ colorTable_.put(COLOR_HELIOTROPE, new Color( 223, 115, 255 ));
+ colorTable_.put(COLOR_HOLLYWOOD_CERISE, new Color( 244, 0, 161 ));
+ colorTable_.put(COLOR_HOT_MAGENTA, new Color( 255, 0, 204 ));
+ colorTable_.put(COLOR_HOT_PINK, new Color( 255, 105, 180 ));
+ colorTable_.put(COLOR_INDIGO_DYE, new Color( 0, 65, 106 ));
+ colorTable_.put(COLOR_INDIGO_WEB, new Color( 75, 0, 130 ));
+ colorTable_.put(COLOR_INTERNATIONAL_KLEIN_BLUE, new Color( 0, 47, 167 ));
+ colorTable_.put(COLOR_INTERNATIONAL_ORANGE, new Color( 255, 79, 0 ));
+ colorTable_.put(COLOR_ISLAMIC_GREEN, new Color( 0, 153, 0 ));
+ colorTable_.put(COLOR_IVORY, new Color( 255, 255, 240 ));
+ colorTable_.put(COLOR_JADE, new Color( 0, 168, 107 ));
+ colorTable_.put(COLOR_KELLY_GREEN, new Color( 76, 187, 23 ));
+ colorTable_.put(COLOR_KHAKI, new Color( 195, 176, 145 ));
+ colorTable_.put(COLOR_KHAKI_X11_LIGHT_KHAKI, new Color( 240, 230, 140 ));
+ colorTable_.put(COLOR_LAVENDER_FLORAL, new Color( 181, 126, 220 ));
+ colorTable_.put(COLOR_LAVENDER_WEB, new Color( 230, 230, 250 ));
+ colorTable_.put(COLOR_LAVENDER_BLUE, new Color( 204, 204, 255 ));
+ colorTable_.put(COLOR_LAVENDER_BLUSH, new Color( 255, 240, 245 ));
+ colorTable_.put(COLOR_LAVENDER_GREY, new Color( 196, 195, 221 ));
+ colorTable_.put(COLOR_LAVENDER_MAGENTA, new Color( 238, 130, 238 ));
+ colorTable_.put(COLOR_LAVENDER_PINK, new Color( 251, 174, 210 ));
+ colorTable_.put(COLOR_LAVENDER_PURPLE, new Color( 150, 120, 182 ));
+ colorTable_.put(COLOR_LAVENDER_ROSE, new Color( 251, 160, 227 ));
+ colorTable_.put(COLOR_LAWN_GREEN, new Color( 124, 252, 0 ));
+ colorTable_.put(COLOR_LEMON, new Color( 253, 233, 16 ));
+ colorTable_.put(COLOR_LEMON_CHIFFON, new Color( 255, 250, 205 ));
+ colorTable_.put(COLOR_LIGHT_BLUE, new Color( 173, 216, 230 ));
+ colorTable_.put(COLOR_LIGHT_PINK, new Color( 255, 182, 193 ));
+ colorTable_.put(COLOR_LILAC, new Color( 200, 162, 200 ));
+ colorTable_.put(COLOR_LIME_COLOR_WHEEL, new Color( 191, 255, 0 ));
+ colorTable_.put(COLOR_LIME_WEB_X11_GREEN, new Color( 0, 255, 0 ));
+ colorTable_.put(COLOR_LIME_GREEN, new Color( 50, 205, 50 ));
+ colorTable_.put(COLOR_LINEN, new Color( 250, 240, 230 ));
+ colorTable_.put(COLOR_MAGENTA, new Color( 255, 0, 255 ));
+ colorTable_.put(COLOR_MAGENTA_DYE, new Color( 202, 31, 23 ));
+ colorTable_.put(COLOR_MAGENTA_PROCESS, new Color( 255, 0, 144 ));
+ colorTable_.put(COLOR_MAGIC_MINT, new Color( 170, 240, 209 ));
+ colorTable_.put(COLOR_MAGNOLIA, new Color( 248, 244, 255 ));
+ colorTable_.put(COLOR_MALACHITE, new Color( 11, 218, 81 ));
+ colorTable_.put(COLOR_MAROON_HTMLCSS, new Color( 128, 0, 0 ));
+ colorTable_.put(COLOR_MAROON_X11, new Color( 176, 48, 96 ));
+ colorTable_.put(COLOR_MAYA_BLUE, new Color( 115, 194, 251 ));
+ colorTable_.put(COLOR_MAUVE, new Color( 224, 176, 255 ));
+ colorTable_.put(COLOR_MAUVE_TAUPE, new Color( 145, 95, 109 ));
+ colorTable_.put(COLOR_MEDIUM_BLUE, new Color( 0, 0, 205 ));
+ colorTable_.put(COLOR_MEDIUM_CARMINE, new Color( 175, 64, 53 ));
+ colorTable_.put(COLOR_MEDIUM_LAVENDER_MAGENTA, new Color( 204, 153, 204 ));
+ colorTable_.put(COLOR_MEDIUM_PURPLE, new Color( 147, 112, 219 ));
+ colorTable_.put(COLOR_MEDIUM_SPRING_GREEN, new Color( 0, 250, 154 ));
+ colorTable_.put(COLOR_MIDNIGHT_BLUE, new Color( 25, 25, 112 ));
+ colorTable_.put(COLOR_MIDNIGHT_GREEN_EAGLE_GREEN, new Color( 0, 73, 83 ));
+ colorTable_.put(COLOR_MINT_GREEN, new Color( 152, 255, 152 ));
+ colorTable_.put(COLOR_MISTY_ROSE, new Color( 255, 228, 225 ));
+ colorTable_.put(COLOR_MOSS_GREEN, new Color( 173, 223, 173 ));
+ colorTable_.put(COLOR_MOUNTBATTEN_PINK, new Color( 153, 122, 141 ));
+ colorTable_.put(COLOR_MUSTARD, new Color( 255, 219, 88 ));
+ colorTable_.put(COLOR_MYRTLE, new Color( 33, 66, 30 ));
+ colorTable_.put(COLOR_NAVAJO_WHITE, new Color( 255, 222, 173 ));
+ colorTable_.put(COLOR_NAVY_BLUE, new Color( 0, 0, 128 ));
+ colorTable_.put(COLOR_OCHRE, new Color( 204, 119, 34 ));
+ colorTable_.put(COLOR_OFFICE_GREEN, new Color( 0, 128, 0 ));
+ colorTable_.put(COLOR_OLD_GOLD, new Color( 207, 181, 59 ));
+ colorTable_.put(COLOR_OLD_LACE, new Color( 253, 245, 230 ));
+ colorTable_.put(COLOR_OLD_LAVENDER, new Color( 121, 104, 120 ));
+ colorTable_.put(COLOR_OLD_ROSE, new Color( 192, 128, 129 ));
+ colorTable_.put(COLOR_OLIVE, new Color( 128, 128, 0 ));
+ colorTable_.put(COLOR_OLIVE_DRAB, new Color( 107, 142, 35 ));
+ colorTable_.put(COLOR_OLIVINE, new Color( 154, 185, 115 ));
+ colorTable_.put(COLOR_ORANGE_COLOR_WHEEL, new Color( 255, 127, 0 ));
+ colorTable_.put(COLOR_ORANGE_RYB, new Color( 251, 153, 2 ));
+ colorTable_.put(COLOR_ORANGE_WEB, new Color( 255, 165, 0 ));
+ colorTable_.put(COLOR_ORANGE_PEEL, new Color( 255, 160, 0 ));
+ colorTable_.put(COLOR_ORANGE_RED, new Color( 255, 69, 0 ));
+ colorTable_.put(COLOR_ORCHID, new Color( 218, 112, 214 ));
+ colorTable_.put(COLOR_PALE_BLUE, new Color( 175, 238, 238 ));
+ colorTable_.put(COLOR_PALE_BROWN, new Color( 152, 118, 84 ));
+ colorTable_.put(COLOR_PALE_CARMINE, new Color( 175, 64, 53 ));
+ colorTable_.put(COLOR_PALE_CHESTNUT, new Color( 221, 173, 175 ));
+ colorTable_.put(COLOR_PALE_CORNFLOWER_BLUE, new Color( 171, 205, 239 ));
+ colorTable_.put(COLOR_PALE_MAGENTA, new Color( 249, 132, 229 ));
+ colorTable_.put(COLOR_PALE_PINK, new Color( 250, 218, 221 ));
+ colorTable_.put(COLOR_PALE_RED_VIOLET, new Color( 219, 112, 147 ));
+ colorTable_.put(COLOR_PAPAYA_WHIP, new Color( 255, 239, 213 ));
+ colorTable_.put(COLOR_PASTEL_GREEN, new Color( 119, 221, 119 ));
+ colorTable_.put(COLOR_PASTEL_PINK, new Color( 255, 209, 220 ));
+ colorTable_.put(COLOR_PEACH, new Color( 255, 229, 180 ));
+ colorTable_.put(COLOR_PEACH_ORANGE, new Color( 255, 204, 153 ));
+ colorTable_.put(COLOR_PEACH_YELLOW, new Color( 250, 223, 173 ));
+ colorTable_.put(COLOR_PEAR, new Color( 209, 226, 49 ));
+ colorTable_.put(COLOR_PERIWINKLE, new Color( 204, 204, 255 ));
+ colorTable_.put(COLOR_PERSIAN_BLUE, new Color( 28, 57, 187 ));
+ colorTable_.put(COLOR_PERSIAN_GREEN, new Color( 0, 166, 147 ));
+ colorTable_.put(COLOR_PERSIAN_INDIGO, new Color( 50, 18, 122 ));
+ colorTable_.put(COLOR_PERSIAN_ORANGE, new Color( 217, 144, 88 ));
+ colorTable_.put(COLOR_PERSIAN_RED, new Color( 204, 51, 51 ));
+ colorTable_.put(COLOR_PERSIAN_PINK, new Color( 247, 127, 190 ));
+ colorTable_.put(COLOR_PERSIAN_ROSE, new Color( 254, 40, 162 ));
+ colorTable_.put(COLOR_PERSIMMON, new Color( 236, 88, 0 ));
+ colorTable_.put(COLOR_PINE_GREEN, new Color( 1, 121, 111 ));
+ colorTable_.put(COLOR_PINK, new Color( 255, 192, 203 ));
+ colorTable_.put(COLOR_PINK_ORANGE, new Color( 255, 153, 102 ));
+ colorTable_.put(COLOR_PLATINUM, new Color( 229, 228, 226 ));
+ colorTable_.put(COLOR_PLUM_WEB, new Color( 204, 153, 204 ));
+ colorTable_.put(COLOR_POWDER_BLUE_WEB, new Color( 176, 224, 230 ));
+ colorTable_.put(COLOR_PUCE, new Color( 204, 136, 153 ));
+ colorTable_.put(COLOR_PRUSSIAN_BLUE, new Color( 0, 49, 83 ));
+ colorTable_.put(COLOR_PSYCHEDELIC_PURPLE, new Color( 221, 0, 255 ));
+ colorTable_.put(COLOR_PUMPKIN, new Color( 255, 117, 24 ));
+ colorTable_.put(COLOR_PURPLE_HTMLCSS, new Color( 128, 0, 128 ));
+ colorTable_.put(COLOR_PURPLE_X11, new Color( 160, 92, 240 ));
+ colorTable_.put(COLOR_PURPLE_TAUPE, new Color( 80, 64, 77 ));
+ colorTable_.put(COLOR_RAW_UMBER, new Color( 115, 74, 18 ));
+ colorTable_.put(COLOR_RAZZMATAZZ, new Color( 227, 11, 92 ));
+ colorTable_.put(COLOR_RED, new Color( 255, 0, 0 ));
+ colorTable_.put(COLOR_RED_PIGMENT, new Color( 237, 28, 36 ));
+ colorTable_.put(COLOR_RED_RYB, new Color( 254, 39, 18 ));
+ colorTable_.put(COLOR_RED_VIOLET, new Color( 199, 21, 133 ));
+ colorTable_.put(COLOR_RICH_CARMINE, new Color( 215, 0, 64 ));
+ colorTable_.put(COLOR_ROBIN_EGG_BLUE, new Color( 0, 204, 204 ));
+ colorTable_.put(COLOR_ROSE, new Color( 255, 0, 127 ));
+ colorTable_.put(COLOR_ROSE_MADDER, new Color( 227, 38, 54 ));
+ colorTable_.put(COLOR_ROSE_TAUPE, new Color( 144, 93, 93 ));
+ colorTable_.put(COLOR_ROYAL_BLUE, new Color( 65, 105, 225 ));
+ colorTable_.put(COLOR_ROYAL_PURPLE, new Color( 107, 63, 160 ));
+ colorTable_.put(COLOR_RUBY, new Color( 224, 17, 95 ));
+ colorTable_.put(COLOR_RUSSET, new Color( 128, 70, 27 ));
+ colorTable_.put(COLOR_RUST, new Color( 183, 65, 14 ));
+ colorTable_.put(COLOR_SAFETY_ORANGE_BLAZE_ORANGE, new Color( 255, 102, 0 ));
+ colorTable_.put(COLOR_SAFFRON, new Color( 244, 196, 48 ));
+ colorTable_.put(COLOR_SALMON, new Color( 255, 140, 105 ));
+ colorTable_.put(COLOR_SANDY_BROWN, new Color( 244, 164, 96 ));
+ colorTable_.put(COLOR_SANGRIA, new Color( 146, 0, 10 ));
+ colorTable_.put(COLOR_SAPPHIRE, new Color( 8, 37, 103 ));
+ colorTable_.put(COLOR_SCARLET, new Color( 255, 36, 0 ));
+ colorTable_.put(COLOR_SCHOOL_BUS_YELLOW, new Color( 255, 216, 0 ));
+ colorTable_.put(COLOR_SEA_GREEN, new Color( 46, 139, 87 ));
+ colorTable_.put(COLOR_SEASHELL, new Color( 255, 245, 238 ));
+ colorTable_.put(COLOR_SELECTIVE_YELLOW, new Color( 255, 186, 0 ));
+ colorTable_.put(COLOR_SEPIA, new Color( 112, 66, 20 ));
+ colorTable_.put(COLOR_SHAMROCK_GREEN, new Color( 0, 158, 96 ));
+ colorTable_.put(COLOR_SHOCKING_PINK, new Color( 252, 15, 192 ));
+ colorTable_.put(COLOR_SILVER, new Color( 192, 192, 192 ));
+ colorTable_.put(COLOR_SKY_BLUE, new Color( 135, 206, 235 ));
+ colorTable_.put(COLOR_SLATE_GREY, new Color( 112, 128, 144 ));
+ colorTable_.put(COLOR_SMALT_DARK_POWDER_BLUE, new Color( 0, 51, 153 ));
+ colorTable_.put(COLOR_SPRING_BUD, new Color( 167, 252, 0 ));
+ colorTable_.put(COLOR_SPRING_GREEN, new Color( 0, 255, 127 ));
+ colorTable_.put(COLOR_STEEL_BLUE, new Color( 70, 130, 180 ));
+ colorTable_.put(COLOR_TAN, new Color( 210, 180, 140 ));
+ colorTable_.put(COLOR_TANGERINE, new Color( 242, 133, 0 ));
+ colorTable_.put(COLOR_TANGERINE_YELLOW, new Color( 255, 204, 0 ));
+ colorTable_.put(COLOR_TAUPE, new Color( 72, 60, 50 ));
+ colorTable_.put(COLOR_TEA_GREEN, new Color( 208, 240, 192 ));
+ colorTable_.put(COLOR_TEA_ROSE_ORANGE, new Color( 248, 131, 194 ));
+ colorTable_.put(COLOR_TEA_ROSE_ROSE, new Color( 244, 194, 194 ));
+ colorTable_.put(COLOR_TEAL, new Color( 0, 128, 128 ));
+ colorTable_.put(COLOR_TENNY_TAWNY, new Color( 205, 87, 0 ));
+ colorTable_.put(COLOR_TERRA_COTTA, new Color( 226, 114, 91 ));
+ colorTable_.put(COLOR_THISTLE, new Color( 216, 191, 216 ));
+ colorTable_.put(COLOR_TOMATO, new Color( 255, 99, 71 ));
+ colorTable_.put(COLOR_TURQUOISE, new Color( 48, 213, 200 ));
+ colorTable_.put(COLOR_TYRIAN_PURPLE, new Color( 102, 2, 60 ));
+ colorTable_.put(COLOR_ULTRAMARINE, new Color( 18 , 10 , 143 ));
+ colorTable_.put(COLOR_ULTRA_PINK, new Color( 255, 111, 255 ));
+ colorTable_.put(COLOR_UNITED_NATIONS_BLUE, new Color( 91, 146, 229 ));
+ colorTable_.put(COLOR_VEGAS_GOLD, new Color( 197, 179, 88 ));
+ colorTable_.put(COLOR_VERMILION, new Color( 227, 66, 51 ));
+ colorTable_.put(COLOR_VIOLET, new Color( 139, 0, 255 ));
+ colorTable_.put(COLOR_VIOLET_WEB, new Color( 238, 130, 238 ));
+ colorTable_.put(COLOR_VIOLET_RYB, new Color( 2, 71, 54 ));
+ colorTable_.put(COLOR_VIRIDIAN, new Color( 64, 130, 109 ));
+ colorTable_.put(COLOR_WHEAT, new Color( 245, 222, 179 ));
+ colorTable_.put(COLOR_WHITE, new Color( 255, 255, 255 ));
+ colorTable_.put(COLOR_WISTERIA, new Color( 201, 160, 220 ));
+ colorTable_.put(COLOR_YELLOW, new Color( 255, 255, 0 ));
+ colorTable_.put(COLOR_YELLOW_PROCESS, new Color( 255, 239, 0 ));
+ colorTable_.put(COLOR_YELLOW_RYB, new Color( 254, 254, 51 ));
+ colorTable_.put(COLOR_YELLOW_GREEN, new Color( 154, 205, 50 ));
+ }
+
+ public static Hashtable getColorTable() {
+ return colorTable_;
+ }
+
+ public static boolean containsColor(String colorURI) {
+ return colorTable_.containsKey(colorURI);
+ }
+
+ public static Color getRGBforColor(String colorURI) {
+ return colorTable_.get(colorURI);
+ }
+
+ // A.2.2 LocationCS
+ private static Vector locationTable_ = new Vector();
+
+ public final static String LOCATIONURIBASE = "urn:mpeg:mpeg-v:01-SI-LocationCS-NS";
+ public final static String LOC_X_LEFT = ":left";
+ public final static String LOC_X_CENTERLEFT = ":centerleft";
+ public final static String LOC_X_CENTER = ":center";
+ public final static String LOC_X_CENTERRIGHT = ":centerright";
+ public final static String LOC_X_RIGHT = ":right";
+ public final static String LOC_Y_BOTTOM = ":bottom";
+ public final static String LOC_Y_MIDDLE = ":middle";
+ public final static String LOC_Y_TOP = ":top";
+ public final static String LOC_Z_BACK = ":back";
+ public final static String LOC_Z_MIDWAY = ":midway";
+ public final static String LOC_Z_FRONT = ":front";
+ public final static String LOC_EVERYWHERE = ":*";
+
+ static {
+ // x left
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_Y_BOTTOM + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_Y_BOTTOM + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_Y_BOTTOM + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_Y_MIDDLE + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_Y_MIDDLE + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_Y_MIDDLE + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_Y_TOP + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_Y_TOP + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_Y_TOP + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_EVERYWHERE + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_EVERYWHERE + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_EVERYWHERE + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_Y_BOTTOM + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_Y_MIDDLE + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_Y_TOP + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_LEFT + LOC_EVERYWHERE + LOC_EVERYWHERE);
+
+ // x centerleft
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_Y_BOTTOM + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_Y_BOTTOM + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_Y_BOTTOM + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_Y_MIDDLE + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_Y_MIDDLE + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_Y_MIDDLE + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_Y_TOP + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_Y_TOP + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_Y_TOP + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_EVERYWHERE + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_EVERYWHERE + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_EVERYWHERE + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_Y_BOTTOM + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_Y_MIDDLE + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_Y_TOP + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERLEFT + LOC_EVERYWHERE + LOC_EVERYWHERE);
+
+ // x center
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_Y_BOTTOM + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_Y_BOTTOM + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_Y_BOTTOM + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_Y_MIDDLE + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_Y_MIDDLE + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_Y_MIDDLE + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_Y_TOP + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_Y_TOP + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_Y_TOP + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_EVERYWHERE + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_EVERYWHERE + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_EVERYWHERE + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_Y_BOTTOM + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_Y_MIDDLE + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_Y_TOP + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTER + LOC_EVERYWHERE + LOC_EVERYWHERE);
+
+ // x centerright
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_Y_BOTTOM + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_Y_BOTTOM + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_Y_BOTTOM + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_Y_MIDDLE + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_Y_MIDDLE + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_Y_MIDDLE + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_Y_TOP + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_Y_TOP + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_Y_TOP + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_EVERYWHERE + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_EVERYWHERE + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_EVERYWHERE + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_Y_BOTTOM + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_Y_MIDDLE + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_Y_TOP + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_CENTERRIGHT + LOC_EVERYWHERE + LOC_EVERYWHERE);
+
+ // x right
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_Y_BOTTOM + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_Y_BOTTOM + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_Y_BOTTOM + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_Y_MIDDLE + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_Y_MIDDLE + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_Y_MIDDLE + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_Y_TOP + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_Y_TOP + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_Y_TOP + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_EVERYWHERE + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_EVERYWHERE + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_EVERYWHERE + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_Y_BOTTOM + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_Y_MIDDLE + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_Y_TOP + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_X_RIGHT + LOC_EVERYWHERE + LOC_EVERYWHERE);
+
+ // x everywhere
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_Y_BOTTOM + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_Y_BOTTOM + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_Y_BOTTOM + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_Y_MIDDLE + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_Y_MIDDLE + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_Y_MIDDLE + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_Y_TOP + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_Y_TOP + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_Y_TOP + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_EVERYWHERE + LOC_Z_BACK);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_EVERYWHERE + LOC_Z_MIDWAY);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_EVERYWHERE + LOC_Z_FRONT);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_Y_BOTTOM + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_Y_MIDDLE + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_Y_TOP + LOC_EVERYWHERE);
+ locationTable_.add(LOCATIONURIBASE + LOC_EVERYWHERE + LOC_EVERYWHERE + LOC_EVERYWHERE);
+ }
+
+ public static Vector getLocationTable() {
+ return locationTable_;
+ }
+
+ public static boolean containsLocation(String locationURI) {
+ return locationTable_.contains(locationURI);
+ }
+
+ // A.2.3 ScentCS
+ private static Vector scentTable_ = new Vector();
+ public final static String SCENTURIBASE = "urn:mpeg:mpeg-v:01-SI-ScentCS-NS";
+ public final static String SCENT_ROSE = SCENTURIBASE + ":rose";
+ public final static String SCENT_ACACIA = SCENTURIBASE + ":acacia";
+ public final static String SCENT_CHRYSANTHEMUM = SCENTURIBASE + ":chrysanthemum";
+ public final static String SCENT_LILAC = SCENTURIBASE + ":lilac";
+ public final static String SCENT_MINT = SCENTURIBASE + ":mint";
+ public final static String SCENT_JASMINE = SCENTURIBASE + ":jasmine";
+ public final static String SCENT_PINETREE = SCENTURIBASE + ":pine_tree";
+ public final static String SCENT_ORANGE = SCENTURIBASE + ":orange";
+ public final static String SCENT_GRAPE = SCENTURIBASE + ":grape";
+
+ static {
+ scentTable_.add(SCENT_ROSE);
+ scentTable_.add(SCENT_ACACIA);
+ scentTable_.add(SCENT_CHRYSANTHEMUM);
+ scentTable_.add(SCENT_LILAC);
+ scentTable_.add(SCENT_MINT);
+ scentTable_.add(SCENT_JASMINE);
+ scentTable_.add(SCENT_PINETREE);
+ scentTable_.add(SCENT_ORANGE);
+ scentTable_.add(SCENT_GRAPE);
+ }
+
+ public static Vector getScentTable() {
+ return scentTable_;
+ }
+
+ public static boolean containsScent(String scentURI) {
+ return scentTable_.contains(scentURI);
+ }
+
+ // A.2.6 SprayingTypeCS
+ private static Vector sprayingTypeTable_ = new Vector();
+ public final static String SPRAYINGTYPEURIBASE = "urn:mpeg:mpeg-v:01-SI-SprayingTypeCS-NS";
+ public final static String SPRAYINGTYPE_WATER = SPRAYINGTYPEURIBASE + ":water";
+
+ static {
+ sprayingTypeTable_.add(SPRAYINGTYPE_WATER);
+ }
+
+ public static Vector getSprayingTypeTable() {
+ return sprayingTypeTable_;
+ }
+
+ public static boolean containsSprayingType(String sprayingTypeURI) {
+ return sprayingTypeTable_.contains(sprayingTypeURI);
+ }
+}
diff --git a/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/EffectElement.java b/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/EffectElement.java
new file mode 100644
index 0000000..c1da328
--- /dev/null
+++ b/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/EffectElement.java
@@ -0,0 +1,244 @@
+/*
+ * This file is part of SEVino.
+ *
+ * SEVino is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * SEVino is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with SEVino. If not, see .
+ *
+ * Copyright 2008, 2009, 2010, 2011 Alpen-Adria-Universitaet Klagenfurt, Markus Waltl.
+ */
+package br.ufes.inf.lprm.sensoryeffect.renderer.parser;
+
+import java.util.Vector;
+
+/**
+ * Class which represents a container for an effect element
+ *
+ * @author Markus Waltl
+ * @version 1.0
+ */
+public class EffectElement {
+ private String effectName_ = "";
+ private double startTime_ = -1.0;
+ private double endTime_ = -1.0;
+ private Vector attributes_ = null;
+
+ private float intensity = -1, minIntensity = -1, maxIntensity = -1;
+ private boolean autoExtraction = false;
+ private int priority = -1;
+ private long duration = -1;
+ private double fade = -1;
+ private String alt, location = "";
+ private int r = 0;
+ private int g = 0;
+ private int b = 0;
+ private boolean activate = false;
+
+ public float getIntensity() {
+ return intensity;
+ }
+
+ public void setIntensity(float intensity) {
+ this.intensity = intensity;
+ }
+
+ public float getMinIntensity() {
+ return minIntensity;
+ }
+
+ public void setMinIntensity(float minIntensity) {
+ this.minIntensity = minIntensity;
+ }
+
+ public float getMaxIntensity() {
+ return maxIntensity;
+ }
+
+ public void setMaxIntensity(float maxIntensity) {
+ this.maxIntensity = maxIntensity;
+ }
+
+ public boolean isAutoExtraction() {
+ return autoExtraction;
+ }
+
+ public void setAutoExtraction(boolean autoExtraction) {
+ this.autoExtraction = autoExtraction;
+ }
+
+ public int getPriority() {
+ return priority;
+ }
+
+ public void setPriority(int priority) {
+ this.priority = priority;
+ }
+
+ public long getDuration() {
+ return duration;
+ }
+
+ public void setDuration(long duration) {
+ this.duration = duration;
+ }
+
+ public double getFade() {
+ return fade;
+ }
+
+ public void setFade(double fade) {
+ this.fade = fade;
+ }
+
+ public String getAlt() {
+ return alt;
+ }
+
+ public void setAlt(String alt) {
+ this.alt = alt;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ public void setLocation(String location) {
+ this.location = location;
+ }
+
+ public int getR() {
+ return r;
+ }
+
+ public void setR(int r) {
+ this.r = r;
+ }
+
+ public int getG() {
+ return g;
+ }
+
+ public void setG(int g) {
+ this.g = g;
+ }
+
+ public int getB() {
+ return b;
+ }
+
+ public void setB(int b) {
+ this.b = b;
+ }
+
+ /**
+ * Constructor
+ */
+ public EffectElement() {
+ attributes_ = new Vector();
+ }
+
+ /**
+ * Method for retrieving the effect name
+ * @return String with the name
+ */
+ public String getEffectName() {
+ return effectName_;
+ }
+
+ /**
+ * Method for setting the effect name
+ * @param name String with the name
+ */
+ public void setEffectName(String name) {
+ effectName_ = name;
+ }
+
+ /**
+ * Method for setting the start time
+ * @param seconds double with the time
+ */
+ public void setStartTime(double seconds) {
+ startTime_ = seconds;
+ }
+
+ /**
+ * Method for getting the start time
+ * @return double with time
+ */
+ public double getStartTime() {
+ return startTime_;
+ }
+
+ /**
+ * Method for setting the end time
+ * @param seconds double with time
+ */
+ public void setEndTime(double seconds) {
+ endTime_ = seconds;
+ }
+
+ /**
+ * Method for getting the end time
+ * @return double with time
+ */
+ public double getEndTime() {
+ return endTime_;
+ }
+
+ /**
+ * Method for retrieving the attributes of the effect
+ * @return Vector with the attributes
+ */
+ public Vector getAttributes() {
+ return attributes_;
+ }
+
+ /**
+ * Method for adding an attribute
+ * @param attribute String[] with attribute (0 = attribute name, 1 = attribute value)
+ * @return true if added successfully else false
+ */
+ public boolean addAttribute(String[] attribute) {
+ if (attribute == null || attribute[0] == null || attribute[0].equals(""))
+ return false;
+
+ attributes_.add(attribute);
+ return true;
+ }
+
+ /**
+ * Method for getting a string representation of the effect element
+ * @param String with representation
+ */
+ public String toString() {
+ String s = "Name: " + effectName_ + "\n";
+ s += "Start time: " + startTime_ + "\n";
+ s += "End time: " + endTime_ + "\n";
+ s += "Attributes:\n";
+
+ for (int i = 0; i < attributes_.size(); i++) {
+ String[] att = attributes_.elementAt(i);
+
+ s += att[0] + ": " + att[1] + " \n";
+ }
+ s += "\n";
+ return s;
+ }
+
+ public boolean isActivate() {
+ return activate;
+ }
+
+ public void setActivate(boolean activate) {
+ this.activate = activate;
+ }
+}
diff --git a/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/HelperFunctions.java b/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/HelperFunctions.java
new file mode 100644
index 0000000..c7cb6c0
--- /dev/null
+++ b/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/HelperFunctions.java
@@ -0,0 +1,110 @@
+package br.ufes.inf.lprm.sensoryeffect.renderer.parser;
+
+import java.awt.Color;
+import java.util.HashMap;
+
+/**
+ * Class providing helper functions
+ *
+ * @author Estevao Bissoli Saleme
+ * @version 1.0
+ */
+public class HelperFunctions {
+
+ public static HashMap obtainFadeFanOrVibration(boolean on, long curTime, double intensityScale255, double fade){
+ HashMap ret = new HashMap();
+ if (on){
+ long fadeTimeFinal = (long)(curTime + (fade*1000));
+ long diffTime = fadeTimeFinal - curTime;
+ int steps = Math.round(diffTime/100);
+ double stepIntensity = intensityScale255 / steps;
+ long timeFadeIn = curTime;
+ for (int i =0; i< steps;i++){
+ int intensityFadeIn = (int)(stepIntensity * i);
+ ret.put(timeFadeIn, intensityFadeIn);
+ timeFadeIn += 100;
+ }
+ ret.put(timeFadeIn, (int)intensityScale255);
+ } else {
+ long fadeTimeInitial = (long)(curTime - (fade*1000));
+ long diffTime = curTime - fadeTimeInitial;
+ int steps = Math.round(diffTime/100);
+ double stepIntensity = intensityScale255 / steps;
+ double intensityFadeOut = intensityScale255;
+ long timeFadeOut = fadeTimeInitial;
+ for (int i =0; i< steps;i++){
+ ret.put(timeFadeOut, (int)intensityFadeOut);
+ timeFadeOut += 100;
+ intensityFadeOut -= stepIntensity;
+ }
+ ret.put(timeFadeOut, 0);
+ }
+ return ret;
+ }
+
+ public static HashMap obtainFadeLight(boolean on, long curTime, double intensityScale255, double fade, int r, int g, int b){
+ HashMap ret = new HashMap();
+ if (on){
+ long fadeTimeFinal = (long)(curTime + (fade*1000));
+ long diffTime = fadeTimeFinal - curTime;
+ int steps = Math.round(diffTime/100);
+ int stepIntensity = (int)(intensityScale255 / steps);
+ long timeFadeIn = curTime;
+ for (int i =0; i< steps;i++){
+ double intensityFadeIn = stepIntensity * i;
+ double percentIntensity = 100;
+ if (intensityFadeIn > -1 && intensityFadeIn <= 255)
+ percentIntensity = (intensityFadeIn / 255) * 100;
+ Color color = HelperFunctions.adjustColor((int)percentIntensity, r, g, b);
+ ret.put(timeFadeIn, color);
+ timeFadeIn += 100;
+ }
+ double percentIntensity = 100;
+ if (intensityScale255 > -1 && intensityScale255 <= 255)
+ percentIntensity = (intensityScale255 / 255) * 100;
+ Color color = HelperFunctions.adjustColor((int)percentIntensity, r, g, b);
+ ret.put(timeFadeIn, color);
+ } else {
+ long fadeTimeInitial = (long)(curTime - (fade*1000));
+ long diffTime = curTime - fadeTimeInitial;
+ int steps = Math.round(diffTime/100);
+ double stepIntensity = intensityScale255 / steps;
+ double intensityFadeOut = intensityScale255;
+ long timeFadeOut = fadeTimeInitial;
+ for (int i =0; i< steps;i++){
+ double percentIntensity = 100;
+ if (intensityFadeOut > -1 && intensityFadeOut <= 255)
+ percentIntensity = (intensityFadeOut / 255) * 100;
+ Color color = HelperFunctions.adjustColor((int)percentIntensity, r, g, b);
+ ret.put(timeFadeOut, color);
+ timeFadeOut += 100;
+ intensityFadeOut -= stepIntensity;
+ }
+ Color color = new Color(0,0,0);
+ ret.put(timeFadeOut, color);
+ }
+ return ret;
+ }
+
+ public static int[] hexToRGB(String hex) {
+ if (hex == null || hex.length() != 7)
+ return new int[]{255, 255, 255};
+ hex = hex.substring(1);
+ int r = Integer.parseInt(hex.substring(0, 2), 16);
+ int g = Integer.parseInt(hex.substring(2, 4), 16);
+ int b = Integer.parseInt(hex.substring(4, 6), 16);
+ return new int[]{r, g, b};
+ }
+
+ public static Color adjustColor(float percentIntensity, int r, int g, int b) {
+ float percentRed = r/255.0f * percentIntensity;
+ int redFinal = (int)((percentRed/100) * 255);
+ float percentGreen = g/255.0f * percentIntensity;
+ int greenFinal = (int)((percentGreen/100) * 255);
+ float percentBlue = b/255.0f * percentIntensity;
+ int blueFinal = (int)((percentBlue/100) * 255);
+ return new Color(redFinal, greenFinal, blueFinal);
+ }
+
+
+}
diff --git a/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/SEMDefinitions.java b/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/SEMDefinitions.java
new file mode 100644
index 0000000..1a6ebc4
--- /dev/null
+++ b/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/SEMDefinitions.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of SEVino.
+ *
+ * SEVino is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * SEVino is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with SEVino. If not, see .
+ *
+ * Copyright 2008, 2009, 2010, 2011, 2012 Alpen-Adria-Universitaet Klagenfurt, Markus Waltl.
+ */
+package br.ufes.inf.lprm.sensoryeffect.renderer.parser;
+
+/**
+ * Interface which defines variables for the SEM parsing and creation
+ * @author Markus Waltl
+ *
+ */
+public interface SEMDefinitions {
+ public final static String TIMESCALE = "timeScale";
+ public final static String PTS = "pts";
+ public final static String ANCHORELEMENT = "anchorElement";
+
+ public final static String TRUE = "true";
+ public final static String FALSE = "false";
+
+ // needed for storing
+ public final static String ACTIVATE = "activate";
+ public final static String DURATION = "duration";
+ public final static String FADE = "fade";
+ public final static String ALT = "alt";
+ public final static String PRIORITY = "priority";
+ public final static String INTENSITYVALUE = "intensity-value";
+ public final static String INTENSITYRANGE = "intensity-range";
+ public final static String LOCATION = "location";
+ public final static String AUTOEXTRACTION = "autoExtraction";
+
+ public final static String COLOR = "color";
+}
diff --git a/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/SEMParser.java b/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/SEMParser.java
new file mode 100644
index 0000000..373084b
--- /dev/null
+++ b/src/br/ufes/inf/lprm/sensoryeffect/renderer/parser/SEMParser.java
@@ -0,0 +1,485 @@
+/*
+ * This file is part of SEVino.
+ *
+ * SEVino is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * SEVino is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with SEVino. If not, see .
+ *
+ * Copyright 2008, 2009, 2010, 2011 Alpen-Adria-Universitaet Klagenfurt, Markus Waltl.
+ */
+package br.ufes.inf.lprm.sensoryeffect.renderer.parser;
+
+import java.awt.Color;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.namespace.QName;
+import javax.xml.transform.stream.StreamSource;
+
+import org.iso.mpeg.mpegv._2010.sedl.EffectBaseType;
+import org.iso.mpeg.mpegv._2010.sedl.GroupOfEffectsType;
+import org.iso.mpeg.mpegv._2010.sedl.SEM;
+import org.iso.mpeg.mpegv._2010.sedl.SEMBaseType;
+import org.iso.mpeg.mpegv._2010.sev.LightType;
+import org.iso.mpeg.mpegv._2010.sev.VibrationType;
+import org.iso.mpeg.mpegv._2010.sev.WindType;
+
+import br.ufes.inf.lprm.sensoryeffect.renderer.SERendererDevice;
+import br.ufes.inf.lprm.sensoryeffect.renderer.SERendererService;
+import br.ufes.inf.lprm.sensoryeffect.renderer.serial.SerialMessage;
+import br.ufes.inf.lprm.sensoryeffect.renderer.timer.TimeLineAction;
+
+/**
+ * SEMParser
+ *
+ * Class for parsing a sensory effects metadata descriptiony
+ *
+ * @author Markus Waltl (Alpen-Adria-Universitaet Klagenfurt)
+ * @version 1.0
+ */
+
+/**
+ * Modified by
+ *
+ * @author Estevao Bissoli Saleme
+ * @version 1.1
+ */
+
+public class SEMParser implements Runnable {
+ private double curTime = -1;
+ private long timeScale = 1;
+ private Vector effectElements = null;
+ private EffectElement tmpElement = null;
+
+ private Vector timeLineActions = null;
+ private String sensoryEffectMetadata = "";
+ private long duration = -1;
+
+ public SEMParser(String newSensoryEffectMetadata, long newDuration) {
+ timeLineActions = new Vector();
+ effectElements = new Vector();
+ sensoryEffectMetadata = newSensoryEffectMetadata;
+ duration = newDuration;
+ }
+
+ public static JAXBContext jaxbContext;
+
+ @Override
+ public void run() {
+ try {
+ parse(sensoryEffectMetadata);
+ } catch (JAXBException | IOException e) {
+ e.printStackTrace();
+ }
+ Comparator comp = new Comparator() {
+ public int compare(TimeLineAction ta1, TimeLineAction ta2) {
+ return ta1.getOccursTime().compareTo(ta2.getOccursTime());
+ }
+ };
+ Collections.sort(timeLineActions, comp);
+ if (SERendererDevice.debugMode){
+ for (int i = 0; i < timeLineActions.size(); i++)
+ System.out.println(timeLineActions.get(i).getOccursTime() + ": " + SerialMessage.messageToString(timeLineActions.get(i).getSerialMessage()));
+ System.out.println("Ready for start...");
+ System.out.println("---");
+ }
+ SERendererDevice.timeLine.setActions(timeLineActions, duration);
+ SERendererService.semPrepared = true;
+ try {
+ Thread.sleep(100);
+ SERendererService.getPropertyChangeSupport().firePropertyChange("SemPrepared", "", SERendererService.semPrepared);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Method for parsing a SEM description
+ * @param textOfSem
+ * @throws JAXBException - if an error occurred.
+ * @throws IOException - if an IO error occurred.
+ */
+ private void parse(String textOfSem) throws JAXBException, IOException {
+
+ try {
+ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+ StringReader reader = new StringReader(textOfSem);
+ JAXBElement jSem = unmarshaller.unmarshal(new StreamSource(reader), SEM.class);
+
+ SEM sem = jSem.getValue();
+
+ // extract time information
+ Map semAttributes = sem.getOtherAttributes();
+ if (semAttributes != null) {
+ for (QName key : semAttributes.keySet()) {
+ if (key.getLocalPart().equals(SEMDefinitions.TIMESCALE)) {
+ timeScale = Long.valueOf(semAttributes.get(key));
+ }
+ }
+ }
+
+ // extract effects and groupofeffects
+ List semContent = sem.getDeclarationsOrGroupOfEffectsOrEffect();
+
+ if (semContent != null) {
+ for (int i = 0; i < semContent.size(); i++) {
+ SEMBaseType sbt = semContent.get(i);
+
+ if (sbt instanceof EffectBaseType) {
+ handleEffect((EffectBaseType)sbt);
+ curTime = -1;
+ }
+ else if (sbt instanceof GroupOfEffectsType) {
+ GroupOfEffectsType goe = (GroupOfEffectsType)sbt;
+
+ Map goeAttributes = goe.getOtherAttributes();
+ if (goeAttributes != null) {
+ for (QName key : goeAttributes.keySet()) {
+ if (key.getLocalPart().equals(SEMDefinitions.PTS)) {
+ double lVal = Double.valueOf(goeAttributes.get(key));
+ curTime = lVal/timeScale;
+ }
+ else if (key.getLocalPart().equals(SEMDefinitions.ANCHORELEMENT)) {
+ // currently not needed
+ }
+ }
+ }
+
+ List groupEffects = goe.getEffectOrReferenceEffect();
+ if (groupEffects != null) {
+ for (SEMBaseType goeSBT : groupEffects) {
+ if (goeSBT instanceof EffectBaseType) {
+ handleEffect((EffectBaseType)goeSBT);
+ }
+ // reference effect not supported (for now!)
+ }
+ }
+
+ curTime = -1;
+ }
+ }
+ }
+ } catch (JAXBException e) {
+ throw new JAXBException("Parsing error: " + e.getMessage());
+ } catch (Exception e) {
+ throw new JAXBException("Unexpected error: " + e.getMessage());
+ }
+ }
+
+ /**
+ * Method for handling effects, e.g., extracting effect attributes
+ * @param ebt EffectBaseType with the effect to be handled
+ */
+ private void handleEffect(EffectBaseType ebt) {
+ tmpElement = new EffectElement();
+ tmpElement.setEffectName(ebt.getClass().getSimpleName());
+
+ Map effectAttributes = ebt.getOtherAttributes();
+
+ if (effectAttributes != null) {
+ for (QName key : effectAttributes.keySet()) {
+ if (key.getLocalPart().equals(SEMDefinitions.PTS)) {
+ double lVal = Double.valueOf(effectAttributes.get(key));
+ curTime = lVal/timeScale;
+ }
+ else if (key.getLocalPart().equals(SEMDefinitions.ALT))
+ tmpElement.setAlt(String.valueOf(effectAttributes.get(key)));
+ else if (key.getLocalPart().equals(SEMDefinitions.DURATION)){
+ duration = Long.parseLong(effectAttributes.get(key));
+ tmpElement.setDuration(duration);
+ }
+ else if (key.getLocalPart().equals(SEMDefinitions.FADE)) {
+ double time = Double.valueOf(effectAttributes.get(key))/timeScale;
+ tmpElement.setFade(time);
+ }
+ else if (key.getLocalPart().equals(SEMDefinitions.LOCATION))
+ tmpElement.setLocation(String.valueOf(effectAttributes.get(key)));
+ else if (key.getLocalPart().equals(SEMDefinitions.PRIORITY))
+ tmpElement.setPriority(Integer.parseInt(effectAttributes.get(key)));
+ else if (key.getLocalPart().equals(SEMDefinitions.COLOR)) {
+ Color rgbColor = ClassificationScheme.getRGBforColor(String.valueOf(effectAttributes.get(key)));
+ tmpElement.setR(rgbColor.getRed());
+ tmpElement.setG(rgbColor.getGreen());
+ tmpElement.setB(rgbColor.getBlue());
+ }
+ else {
+ String[] att = new String[2];
+ att[0] = key.getNamespaceURI() + ":" + key.getLocalPart();
+ att[1] = effectAttributes.get(key);
+ tmpElement.addAttribute(att);
+ }
+ }
+ }
+
+ if (ebt.getAlt() != null && !ebt.getAlt().equals(""))
+ tmpElement.setAlt(ebt.getAlt());
+
+ if (ebt.getDuration() != null){
+ duration = ebt.getDuration().longValue();
+ tmpElement.setDuration(duration);
+ }
+
+ if (ebt.getFade() != null) {
+ double time = ebt.getFade().doubleValue()/timeScale;
+ tmpElement.setFade(time);
+ }
+
+ if (ebt.getLocation() != null && !ebt.getLocation().equals(""))
+ tmpElement.setLocation(ebt.getLocation());
+
+ if (ebt.getPriority() != null)
+ tmpElement.setPriority(ebt.getPriority().intValue());
+
+ // handle intensities
+ if (ebt instanceof LightType) {
+ LightType effect = (LightType)ebt;
+ if (ebt.getAutoExtraction() != null && ebt.getAutoExtraction().value() != null && (ebt.getAutoExtraction().value().equalsIgnoreCase("visual") || ebt.getAutoExtraction().value().equalsIgnoreCase("both"))){
+ tmpElement.setAutoExtraction(true);
+ SERendererService.setLightAutoExraction(true);
+ }
+ else {
+ if (effect.getIntensityRange() != null && effect.getIntensityRange().size() > 1){
+ tmpElement.setMinIntensity(effect.getIntensityRange().get(0));
+ tmpElement.setMaxIntensity(effect.getIntensityRange().get(1));
+ }
+ if (effect.getIntensityValue() != null && (tmpElement.getMinIntensity() <= effect.getIntensityValue() && tmpElement.getMaxIntensity() >= effect.getIntensityValue()))
+ tmpElement.setIntensity(effect.getIntensityValue());
+ if (effect.getColor() != null && !effect.getColor().isEmpty()) {
+ Color rgbColor = ClassificationScheme.getRGBforColor(String.valueOf(effect.getColor().get(0)));
+ tmpElement.setR(rgbColor.getRed());
+ tmpElement.setG(rgbColor.getGreen());
+ tmpElement.setB(rgbColor.getBlue());
+ }
+ }
+ }
+ else if (ebt instanceof WindType) {
+ WindType effect = (WindType)ebt;
+ if (effect.getIntensityRange() != null && effect.getIntensityRange().size() > 1){
+ tmpElement.setMinIntensity(effect.getIntensityRange().get(0));
+ tmpElement.setMaxIntensity(effect.getIntensityRange().get(1));
+ }
+ if (effect.getIntensityValue() != null && (tmpElement.getMinIntensity() <= effect.getIntensityValue() && tmpElement.getMaxIntensity() >= effect.getIntensityValue()))
+ tmpElement.setIntensity(effect.getIntensityValue());
+ }
+ else if (ebt instanceof VibrationType) {
+ VibrationType effect = (VibrationType)ebt;
+ if (effect.getIntensityRange() != null && effect.getIntensityRange().size() > 1){
+ tmpElement.setMinIntensity(effect.getIntensityRange().get(0));
+ tmpElement.setMaxIntensity(effect.getIntensityRange().get(1));
+ }
+ if (effect.getIntensityValue() != null && (tmpElement.getMinIntensity() <= effect.getIntensityValue() && tmpElement.getMaxIntensity() >= effect.getIntensityValue()))
+ tmpElement.setIntensity(effect.getIntensityValue());
+ }
+
+ if (ebt.isActivate() != null && ebt.isActivate()) {
+ boolean found = false;
+ for (int j = 0; j < effectElements.size() && !found; j++) {
+ EffectElement ee = effectElements.elementAt(j);
+ if (ee.getEffectName() != null && ee.getEffectName().equals(tmpElement.getEffectName())) {
+ if (ee.getEndTime() == -1.0) {
+ ee.setEndTime(curTime);
+ found = true;
+ tmpElement.setActivate(false);
+
+ EffectElement searchPriorElementActivated = null;
+ boolean priorElementActivated = false;
+ for (int i = effectElements.size()-1; i >-1; i--){
+ searchPriorElementActivated = effectElements.get(i);
+ if (searchPriorElementActivated.getEffectName().equalsIgnoreCase(tmpElement.getEffectName()) && searchPriorElementActivated.isActivate()){
+ priorElementActivated = true;
+ break;
+ }
+ }
+ if (priorElementActivated && tmpElement.getFade() > 0){
+ float percentualIntensity = searchPriorElementActivated.getIntensity()/searchPriorElementActivated.getMaxIntensity();
+ int intensityScale255 = Math.round((percentualIntensity * 255));
+ if (!ebt.isActivate())
+ prepareTimeLineActions(false, ebt, (long)(curTime * 1000), intensityScale255, searchPriorElementActivated.getDuration(),
+ tmpElement.getFade(), searchPriorElementActivated.getLocation(), searchPriorElementActivated.getR(), searchPriorElementActivated.getG(), searchPriorElementActivated.getB());
+ }
+ else
+ prepareTimeLineActions(false, ebt, (long)(curTime * 1000), 0, 0, 0f, "", 0, 0, 0);
+ }
+ }
+ }
+ tmpElement.setActivate(true);
+ tmpElement.setStartTime(curTime);
+ effectElements.add(tmpElement);
+ if (!tmpElement.isAutoExtraction()){
+ if (tmpElement.getIntensity() > 0 && (tmpElement.getMinIntensity() <= tmpElement.getIntensity() && tmpElement.getMaxIntensity() >= tmpElement.getIntensity())){
+ float percentualIntensity = tmpElement.getIntensity()/tmpElement.getMaxIntensity();
+ int intensityScale255 = Math.round((percentualIntensity * 255));
+ prepareTimeLineActions(true, ebt, (long)(curTime * 1000), intensityScale255, tmpElement.getDuration(), tmpElement.getFade(), tmpElement.getLocation(), tmpElement.getR(), tmpElement.getG(), tmpElement.getB());
+ }
+ }
+ }
+ else {
+ boolean found = false;
+ for (int j = 0; j < effectElements.size() && !found; j++) {
+ EffectElement ee = effectElements.elementAt(j);
+ if (ee.getEffectName() != null && ee.getEffectName().equals(tmpElement.getEffectName())) {
+ if (ee.getEndTime() == -1.0) {
+ ee.setEndTime(curTime);
+ found = true;
+ tmpElement.setActivate(false);
+
+ EffectElement searchPriorElementActivated = null;
+ boolean priorElementActivated = false;
+ for (int i = effectElements.size()-1; i >-1; i--){
+ searchPriorElementActivated = effectElements.get(i);
+ if (searchPriorElementActivated.getEffectName().equalsIgnoreCase(tmpElement.getEffectName()) && searchPriorElementActivated.isActivate()){
+ priorElementActivated = true;
+ break;
+ }
+ }
+ if (priorElementActivated && tmpElement.getFade() > 0){
+ float percentualIntensity = searchPriorElementActivated.getIntensity()/searchPriorElementActivated.getMaxIntensity();
+ int intensityScale255 = Math.round((percentualIntensity * 255));
+ prepareTimeLineActions(false, ebt, (long)(curTime * 1000), intensityScale255, searchPriorElementActivated.getDuration(),
+ tmpElement.getFade(), searchPriorElementActivated.getLocation(), searchPriorElementActivated.getR(), searchPriorElementActivated.getG(), searchPriorElementActivated.getB());
+ }
+ else
+ prepareTimeLineActions(false, ebt, (long)(curTime * 1000), 0, 0, 0f, "", 0, 0, 0);
+ }
+ }
+ }
+ }
+ tmpElement = null;
+ }
+
+ private void prepareTimeLineActions(boolean on, EffectBaseType ebt, long curTime, int intensityScale255, long duration, double fade,
+ String location, int r, int g, int b){
+ if (on == false)
+ curTime = curTime -1;
+ if (ebt instanceof LightType) {
+ if (fade > 0){
+ HashMap fadePairs = HelperFunctions.obtainFadeLight(on, curTime, intensityScale255, fade, r, g, b);
+ for (Long key : fadePairs.keySet()) {
+ Color color = fadePairs.get(key);
+ byte[] message = SerialMessage.prepareMessageToLed(location, (char)color.getRed(), (char)color.getGreen(), (char)color.getBlue());
+ timeLineActions.add(new TimeLineAction(key, message));
+ }
+ }
+ else {
+ int percentIntensity = 100; // not adjust luminance
+ if (intensityScale255 > -1 && intensityScale255 <= 255)
+ percentIntensity = (int)(Double.valueOf(String.valueOf(intensityScale255)) / 255 * 100);
+ Color color = HelperFunctions.adjustColor(percentIntensity, r, g, b);
+ byte[] message = SerialMessage.prepareMessageToLed(location, (char)((int)color.getRed()), (char)color.getGreen(), (char)color.getBlue());
+ timeLineActions.add(new TimeLineAction(curTime, message));
+ }
+ if (on && duration > 0){
+ long timeDeactivate = curTime + (duration * 1000);
+ byte[] message = SerialMessage.prepareMessageToLed(location, (char)0, (char)0, (char)0);
+ timeLineActions.add(new TimeLineAction(timeDeactivate, message));
+ }
+ }
+ else if (ebt instanceof WindType) {
+ if (location.equals("") || location.startsWith(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_EVERYWHERE)){
+ if (fade > 0){
+ HashMap fadePairs = HelperFunctions.obtainFadeFanOrVibration(on, curTime, intensityScale255, fade);
+ for (Long key : fadePairs.keySet()) {
+ byte[] message1 = SerialMessage.prepareMessageToFan(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_LEFT, (char)fadePairs.get(key).intValue());
+ timeLineActions.add(new TimeLineAction(key, message1));
+ byte[] message2 = SerialMessage.prepareMessageToFan(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_RIGHT, (char)fadePairs.get(key).intValue());
+ timeLineActions.add(new TimeLineAction(key, message2));
+ }
+ }
+ else {
+ byte[] message1 = SerialMessage.prepareMessageToFan(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_LEFT, (char)intensityScale255);
+ timeLineActions.add(new TimeLineAction(curTime, message1));
+ byte[] message2 = SerialMessage.prepareMessageToFan(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_RIGHT, (char)intensityScale255);
+ timeLineActions.add(new TimeLineAction(curTime, message2));
+ }
+ if (on && duration > 0){
+ long timeDeactivate = curTime + (duration * 1000);
+ byte[] message1 = SerialMessage.prepareMessageToFan(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_LEFT, (char)0);
+ timeLineActions.add(new TimeLineAction(timeDeactivate, message1));
+ byte[] message2 = SerialMessage.prepareMessageToFan(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_RIGHT, (char)0);
+ timeLineActions.add(new TimeLineAction(timeDeactivate, message2));
+ }
+ }
+ else {
+ if (fade > 0){
+ HashMap fadePairs = HelperFunctions.obtainFadeFanOrVibration(on, curTime, intensityScale255, fade);
+ for (Long key : fadePairs.keySet()) {
+ byte[] message = SerialMessage.prepareMessageToFan(location, (char)fadePairs.get(key).intValue());
+ timeLineActions.add(new TimeLineAction(key, message));
+ }
+ }
+ else {
+ byte[] message = SerialMessage.prepareMessageToFan(location, (char)intensityScale255);
+ timeLineActions.add(new TimeLineAction(curTime, message));
+ }
+ if (on && duration > 0){
+ long timeDeactivate = curTime + (duration * 1000);
+ byte[] message = SerialMessage.prepareMessageToFan(location, (char)0);
+ timeLineActions.add(new TimeLineAction(timeDeactivate, message));
+ }
+ }
+ }
+ else if (ebt instanceof VibrationType) {
+ if (location.equals("") || location.startsWith(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_EVERYWHERE)){
+ if (fade > 0){
+ HashMap fadePairs = HelperFunctions.obtainFadeFanOrVibration(on, curTime, intensityScale255, fade);
+ for (Long key : fadePairs.keySet()) {
+ byte[] message1 = SerialMessage.prepareMessageToVibration(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_LEFT, (char)fadePairs.get(key).intValue());
+ timeLineActions.add(new TimeLineAction(key, message1));
+ byte[] message2 = SerialMessage.prepareMessageToVibration(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_RIGHT, (char)fadePairs.get(key).intValue());
+ timeLineActions.add(new TimeLineAction(key, message2));
+ }
+ }
+ else {
+ byte[] message1 = SerialMessage.prepareMessageToVibration(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_LEFT, (char)intensityScale255);
+ timeLineActions.add(new TimeLineAction(curTime, message1));
+ byte[] message2 = SerialMessage.prepareMessageToVibration(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_RIGHT, (char)intensityScale255);
+ timeLineActions.add(new TimeLineAction(curTime, message2));
+ }
+ if (on && duration > 0){
+ long timeDeactivate = curTime + (duration * 1000);
+ byte[] message1 = SerialMessage.prepareMessageToVibration(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_LEFT, (char)0);
+ timeLineActions.add(new TimeLineAction(timeDeactivate, message1));
+ byte[] message2 = SerialMessage.prepareMessageToVibration(ClassificationScheme.LOCATIONURIBASE +ClassificationScheme.LOC_X_RIGHT, (char)0);
+ timeLineActions.add(new TimeLineAction(timeDeactivate, message2));
+ }
+ }
+ else {
+ if (fade > 0){
+ HashMap fadePairs = HelperFunctions.obtainFadeFanOrVibration(on, curTime, intensityScale255, fade);
+ for (Long key : fadePairs.keySet()) {
+ byte[] message = SerialMessage.prepareMessageToVibration(location, (char)fadePairs.get(key).intValue());
+ timeLineActions.add(new TimeLineAction(key, message));
+ }
+ }
+ else {
+ byte[] message = SerialMessage.prepareMessageToVibration(location, (char)intensityScale255);
+ timeLineActions.add(new TimeLineAction(curTime, message));
+ }
+ if (on && duration > 0){
+ long timeDeactivate = curTime + (duration * 1000);
+ byte[] message = SerialMessage.prepareMessageToVibration(location, (char)0);
+ timeLineActions.add(new TimeLineAction(timeDeactivate, message));
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/br/ufes/inf/lprm/sensoryeffect/renderer/serial/SerialCom.java b/src/br/ufes/inf/lprm/sensoryeffect/renderer/serial/SerialCom.java
new file mode 100644
index 0000000..833be6d
--- /dev/null
+++ b/src/br/ufes/inf/lprm/sensoryeffect/renderer/serial/SerialCom.java
@@ -0,0 +1,80 @@
+package br.ufes.inf.lprm.sensoryeffect.renderer.serial;
+
+import gnu.io.CommPort;
+import gnu.io.CommPortIdentifier;
+import gnu.io.NoSuchPortException;
+import gnu.io.PortInUseException;
+import gnu.io.SerialPort;
+import gnu.io.UnsupportedCommOperationException;
+
+import java.io.OutputStream;
+
+import br.ufes.inf.lprm.sensoryeffect.renderer.SERendererDevice;
+import br.ufes.inf.lprm.sensoryeffect.renderer.timer.TimeLine;
+
+public class SerialCom {
+
+ private SerialPort serialPort;
+ private boolean connected = false;
+ public static String port = "COM3";
+ public static boolean emulateDevices = true;
+
+ public SerialCom(){
+ if (!emulateDevices){
+ connect(port);
+ }
+ }
+
+ private void connect(String portName) {
+ try {
+ CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName);
+ if(portIdentifier.isCurrentlyOwned()) {
+ connected = false;
+ }
+ else {
+ int timeout = 2000;
+ CommPort commPort = portIdentifier.open(this.getClass().getName(), timeout);
+
+ if(commPort instanceof SerialPort) {
+ serialPort = ( SerialPort )commPort;
+ serialPort.setSerialPortParams( 9600,
+ SerialPort.DATABITS_8,
+ SerialPort.STOPBITS_1,
+ SerialPort.PARITY_NONE );
+ connected = true;
+ }
+ else {
+ connected = false;
+ }
+ }
+ }
+ catch (UnsatisfiedLinkError e) {
+ System.err.println("ERROR: RXTX not configured properly");
+ } catch (UnsupportedCommOperationException e) {
+ System.err.println("ERROR: Unsupported operation.");
+ e.printStackTrace();
+ } catch (PortInUseException e) {
+ System.err.println("ERROR: Port in use.");
+ } catch (NoSuchPortException e) {
+ System.err.println("ERROR: Port unavailable.");
+ } catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ protected void sendMessage(byte[] message) throws Exception{
+ if (!emulateDevices){
+ if (connected){
+ OutputStream out = serialPort.getOutputStream();
+ out.write(message);
+ }
+ else {
+ connect(port);
+ OutputStream out = serialPort.getOutputStream();
+ out.write(message);
+ }
+ }
+ if (SERendererDevice.debugMode)
+ System.out.println(TimeLine.getCurrentTime() + ": " + SerialMessage.messageToString(message));
+ }
+}
\ No newline at end of file
diff --git a/src/br/ufes/inf/lprm/sensoryeffect/renderer/serial/SerialMessage.java b/src/br/ufes/inf/lprm/sensoryeffect/renderer/serial/SerialMessage.java
new file mode 100644
index 0000000..f1f38d3
--- /dev/null
+++ b/src/br/ufes/inf/lprm/sensoryeffect/renderer/serial/SerialMessage.java
@@ -0,0 +1,171 @@
+package br.ufes.inf.lprm.sensoryeffect.renderer.serial;
+
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.text.SimpleDateFormat;
+
+import br.ufes.inf.lprm.sensoryeffect.renderer.SERendererDevice;
+import br.ufes.inf.lprm.sensoryeffect.renderer.parser.ClassificationScheme;
+
+public class SerialMessage {
+
+ public static SerialCom serialCom = new SerialCom();
+
+ @SuppressWarnings("unused")
+ private void log(String text){
+ try(PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("SER_log.txt", true)))) {
+ SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
+ out.println(sdf.toString() + ": "+ text);
+ }catch (IOException e) {
+ }
+ }
+
+ public static String byteArrayToString(byte[] bytes) {
+ StringBuilder ret = new StringBuilder();
+ for(int i=0; i timeLineActions = null;
+ private Vector tempTimeLineActions = null;
+ private Comparator comp = new Comparator() {
+ public int compare(TimeLineAction ta1, TimeLineAction ta2) {
+ return ta1.getOccursTime().compareTo(ta2.getOccursTime());
+ }
+ };
+
+ @Override
+ public void run() {
+ if (status.getId() == Status.PLAYING.getId() && currentTime <= duration){
+ currentTime += 1;
+ SERendererService.setLocalCurrentTime(currentTime);
+ if (tempTimeLineActions != null){
+ int indexOfAction = Collections.binarySearch(tempTimeLineActions, new TimeLineAction(currentTime,null), comp);
+ while (indexOfAction > -1){
+ SerialMessage.sendMessage(tempTimeLineActions.get(indexOfAction).getSerialMessage());
+ tempTimeLineActions.remove(indexOfAction);
+ indexOfAction = Collections.binarySearch(tempTimeLineActions, new TimeLineAction(currentTime,null), comp);
+ }
+ }
+ if (SERendererDevice.debugMode)
+ System.out.println(currentTime);
+ }
+ }
+
+ public void stop(){
+ status = Status.STOPPED;
+ currentTime = 0;
+ tempTimeLineActions.clear();
+ tempTimeLineActions.addAll(timeLineActions);
+ SerialMessage.resetDevices();
+ }
+
+ public void pause(long newCurrentTime){
+ status = Status.PAUSED;
+ if (SERendererDevice.debugMode)
+ System.out.println(">>> SetPause on " + currentTime);
+ currentTime = newCurrentTime;
+ if (SERendererDevice.debugMode)
+ System.out.println(">>> PAUSE on " + newCurrentTime);
+ }
+
+ public void play(long newCurrentTime){
+ status = Status.PLAYING;
+ if (SERendererDevice.debugMode)
+ System.out.println(">>> SetPlay on " + currentTime);
+ currentTime = newCurrentTime;
+ if (SERendererDevice.debugMode)
+ System.out.println(">>> PLAY on " + newCurrentTime);
+ }
+
+ public void setCurrentTime(long newCurrentTime){
+ tempTimeLineActions.clear();
+ tempTimeLineActions.addAll(timeLineActions);
+ if (SERendererDevice.debugMode)
+ System.out.println(">>> SetCurrentTime on " + currentTime);
+ currentTime = newCurrentTime;
+ if (SERendererDevice.debugMode)
+ System.out.println(">>> CURRENT TIME " + newCurrentTime);
+ }
+
+ public static long getCurrentTime(){
+ return currentTime;
+ }
+
+ public void setActions(Vector timeLineActions, long duration){
+ SerialMessage.resetDevices();
+ this.timeLineActions = timeLineActions;
+ tempTimeLineActions = new Vector();
+ tempTimeLineActions.clear();
+ tempTimeLineActions.addAll(timeLineActions);
+ TimeLine.duration = duration + DELAY_TO_FADE;
+ if (SERendererDevice.debugMode){
+ System.out.println("Duration (+DELAY): " + duration + " ("+DELAY_TO_FADE+")");
+ System.out.println("---");
+ }
+ }
+
+ public static long getDuration(){
+ return duration;
+ }
+
+ public enum Status{
+ PAUSED(2),
+ STOPPED(0),
+ PLAYING(1);
+ Status(int id) {
+ this.id = id;
+ }
+ private int id;
+ public int getId() {
+ return id;
+ }
+ }
+}
diff --git a/src/br/ufes/inf/lprm/sensoryeffect/renderer/timer/TimeLineAction.java b/src/br/ufes/inf/lprm/sensoryeffect/renderer/timer/TimeLineAction.java
new file mode 100644
index 0000000..5f98885
--- /dev/null
+++ b/src/br/ufes/inf/lprm/sensoryeffect/renderer/timer/TimeLineAction.java
@@ -0,0 +1,25 @@
+package br.ufes.inf.lprm.sensoryeffect.renderer.timer;
+
+public class TimeLineAction {
+
+ public TimeLineAction(long occursTime, byte[] serialMessage){
+ this.occursTime = occursTime;
+ this.serialMessage = serialMessage;
+ }
+
+ private long occursTime;
+ private byte[] serialMessage;
+
+ public Long getOccursTime() {
+ return occursTime;
+ }
+ public void setOccursTime(long occursTime) {
+ this.occursTime = occursTime;
+ }
+ public byte[] getSerialMessage() {
+ return serialMessage;
+ }
+ public void setSerialMessage(byte[] serialMessage) {
+ this.serialMessage = serialMessage;
+ }
+}