Kross::Api::Object::Ptr QtObject::setProperty(Kross::Api::List::Ptr args) { return new Kross::Api::Variant( m_object->setProperty( Kross::Api::Variant::toString(args->item(0)).latin1(), Kross::Api::Variant::toVariant(args->item(1)) )); }
Kross::Api::Object::Ptr QtObject::hasSignal(Kross::Api::List::Ptr args) { return new Kross::Api::Variant( bool(m_object->metaObject()->signalNames(false).find( Kross::Api::Variant::toString(args->item(0)).latin1() ) != -1)); }
Kross::Api::Object::Ptr KritaCoreFactory::newRectBrush(Kross::Api::List::Ptr args) { uint w = QMAX(1, Kross::Api::Variant::toUInt(args->item(0))); uint h = QMAX(1, Kross::Api::Variant::toUInt(args->item(1))); uint hf = 0; uint vf = 0; if( args.count() > 2) { hf = Kross::Api::Variant::toUInt(args->item(2)); vf = Kross::Api::Variant::toUInt(args->item(3)); } KisAutobrushShape* kas = new KisAutobrushRectShape(w, h, hf, vf); QImage* brsh = new QImage(); kas->createBrush(brsh); return new Brush(new KisAutobrushResource(*brsh), false);; }
Kross::Api::Object::Ptr QtObject::getProperty(Kross::Api::List::Ptr args) { QVariant variant = m_object->property(Kross::Api::Variant::toString(args->item(0)).latin1()); if(variant.type() == QVariant::Invalid) return 0; return new Kross::Api::Variant(variant); }
Kross::Api::Object::Ptr QtObject::connectSignal(Kross::Api::List::Ptr args) { QString signalname = Kross::Api::Variant::toString(args->item(0)); QString signalsignatur = QString("2%1").arg(signalname); const char* signalsig = signalsignatur.latin1(); QtObject* obj = Kross::Api::Object::fromObject<Kross::Api::QtObject>(args->item(1)); QObject* o = obj->getObject(); if(! o) throw Exception::Ptr( new Exception(QString("No such QObject receiver in '%1'.").arg(obj->getName())) ); QString slotname = Kross::Api::Variant::toString(args->item(2)); QString slotsignatur = QString("1%1").arg(slotname); const char* slotsig = slotsignatur.latin1(); return new Kross::Api::Variant( QObject::connect(m_object, signalsig, o, slotsig)); }
Kross::Api::Object::Ptr QtObject::emitSignal(Kross::Api::List::Ptr args) { QString name = Kross::Api::Variant::toString(args->item(0)); int signalid = m_object->metaObject()->findSignal(name.latin1(), false); if(signalid < 0) throw Exception::Ptr( new Exception(QString("No such signal '%1'.").arg(name)) ); m_object->qt_invoke(signalid, 0); //TODO convert Kross::Api::List::Ptr => QUObject* return 0; }
Kross::Api::Object::Ptr KritaCoreFactory::newImage(Kross::Api::List::Ptr args) { int w = Kross::Api::Variant::toInt(args->item(0)); int h = Kross::Api::Variant::toInt(args->item(1)); QString csname = Kross::Api::Variant::toString(args->item(2)); QString name = Kross::Api::Variant::toString(args->item(3)); if( w < 0 || h < 0) { throw Kross::Api::Exception::Ptr( new Kross::Api::Exception( i18n("Invalid image size") ) ); return 0; } KisColorSpace * cs = KisMetaRegistry::instance()->csRegistry()->getColorSpace(KisID(csname, ""), ""); if(!cs) { throw Kross::Api::Exception::Ptr( new Kross::Api::Exception( i18n("Colorspace %0 is not available, please check your installation.").arg(csname ) ) ); return 0; } return new Image(new KisImage(0,w,h, cs, name)); }
Kross::Api::Object::Ptr KritaCoreFactory::getFilter(Kross::Api::List::Ptr args) { QString name = Kross::Api::Variant::toString(args->item(0)); KisFilter* filter = KisFilterRegistry::instance()->get(name); if(filter) { return new Filter(filter); } else { return 0; } }
Kross::Api::Object::Ptr KritaCoreFactory::loadBrush(Kross::Api::List::Ptr args) { QString filename = Kross::Api::Variant::toString(args->item(0)); KisBrush* brush = new KisBrush(filename); if(brush->load()) { return new Brush( brush, false ); } else { delete brush; throw Kross::Api::Exception::Ptr( new Kross::Api::Exception( i18n("Unknown brush") ) ); return 0; } }
Kross::Api::Object::Ptr KritaCoreFactory::loadPattern(Kross::Api::List::Ptr args) { QString filename = Kross::Api::Variant::toString(args->item(0)); KisPattern* pattern = new KisPattern(filename); if(pattern->load()) { return new Pattern( pattern, false ); } else { delete pattern; throw Kross::Api::Exception::Ptr( new Kross::Api::Exception( i18n("Unknown pattern") ) ); return 0; } }
Kross::Api::Object::Ptr QtObject::callSlot(Kross::Api::List::Ptr args) { //TODO just call the child event ?! QString name = Kross::Api::Variant::toString(args->item(0)); int slotid = m_object->metaObject()->findSlot(name.latin1(), false); if(slotid < 0) throw Exception::Ptr( new Exception(QString("No such slot '%1'.").arg(name)) ); QUObject* uo = QtObject::toQUObject(name, args); m_object->qt_invoke(slotid, uo); delete [] uo; return new Variant( QVariant(true,0) ); }
Kross::Api::Object::Ptr Filter::process(Kross::Api::List::Ptr args) { PaintLayer* src = (PaintLayer*)args->item(0).data(); if(!m_filter->workWith( src->paintLayer()->paintDevice()->colorSpace())) { throw Kross::Api::Exception::Ptr( new Kross::Api::Exception( i18n("An error has occured in %1").arg("process") ) ); } QRect rect; if( args->count() >1) { uint x = Kross::Api::Variant::toVariant(args->item(1)).toUInt(); uint y = Kross::Api::Variant::toVariant(args->item(2)).toUInt(); uint w = Kross::Api::Variant::toVariant(args->item(3)).toUInt(); uint h = Kross::Api::Variant::toVariant(args->item(4)).toUInt(); rect = QRect(x, y, w, h); } else { QRect r1 = src->paintLayer()->paintDevice()->extent(); QRect r2 = src->paintLayer()->image()->bounds(); rect = r1.intersect(r2); } m_filter->process( src->paintLayer()->paintDevice(), src->paintLayer()->paintDevice(), m_config->filterConfiguration(), rect ); return 0; }
Kross::Api::Object::Ptr KritaCoreFactory::getBrush(Kross::Api::List::Ptr args) { KisResourceServerBase* rServer = KisResourceServerRegistry::instance()->get("BrushServer"); QValueList<KisResource*> resources = rServer->resources(); QString name = Kross::Api::Variant::toString(args->item(0)); for (QValueList<KisResource*>::iterator it = resources.begin(); it != resources.end(); ++it ) { if((*it)->name() == name) { return new Brush(dynamic_cast<KisBrush*>(*it), true); } } throw Kross::Api::Exception::Ptr( new Kross::Api::Exception( i18n("Unknown brush") ) ); return 0; }
Kross::Api::Object::Ptr QtObject::hasProperty(Kross::Api::List::Ptr args) { return new Kross::Api::Variant( m_object->metaObject()->findProperty(Kross::Api::Variant::toString(args->item(0)).latin1(), false)); }
Kross::Api::Object::Ptr KritaCoreFactory::newHSVColor(Kross::Api::List::Ptr args) { return new Color(Kross::Api::Variant::toUInt(args->item(0)), Kross::Api::Variant::toUInt(args->item(1)), Kross::Api::Variant::toUInt(args->item(2)), QColor::Hsv); }
Kross::Api::Object::Ptr KritaCoreFactory::newRGBColor(Kross::Api::List::Ptr args) { Color* c = new Color(Kross::Api::Variant::toUInt(args->item(0)), Kross::Api::Variant::toUInt(args->item(1)), Kross::Api::Variant::toUInt(args->item(2)), QColor::Rgb); return c; }