00001 #include "scriptedColorMaker.h" 00002 00003 scriptedColorMaker::scriptedColorMaker(int nbColors, QString paletteName):colorMaker(nbColors){ 00004 QString name("palettes/"); 00005 name.append(paletteName); 00006 name.append(".js"); 00007 00008 evaluatedFile = evaluateFile(engine, name); 00009 scriptedFunction = evaluatedFile.property("compute"); 00010 00011 QScriptValue constructor = evaluatedFile.property("init"); 00012 constructor.call(evaluatedFile,QScriptValueList() << nblevels); 00013 } 00014 00015 scriptedColorMaker::~scriptedColorMaker(){ 00016 } 00017 00018 QColor scriptedColorMaker::get(int level){ 00019 long result = scriptedFunction.call(evaluatedFile,QScriptValueList() << level << nblevels).toNumber(); 00020 00021 unsigned char r = result >> 16; 00022 unsigned char g = (result-(r << 16)) >> 8; 00023 unsigned char b = result-(r<<16) - (g<<8); 00024 00025 return QColor(r, g, b); 00026 } 00027 00028 QScriptValue scriptedColorMaker::evaluateFile(QScriptEngine &engine, QString const &filename) 00029 { 00030 QFile file(filename); 00031 file.open(QIODevice::ReadOnly); 00032 00033 return engine.evaluate(file.readAll(),filename); 00034 }