C:/sources/c++/buddhabrot/buddhabrot/scriptedColorMaker.cpp

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 }

Generated on Sat Feb 6 16:30:54 2010 for BuddhaBrot by  doxygen 1.4.6-NO