File indexing completed on 2024-07-14 14:35:12

0001 /* This file is part of the KDE libraries
0002     Copyright (C) 2005, 2006 Ian Reinhart Geiser <geiseri@kde.org>
0003     Copyright (C) 2005, 2006 Matt Broadstone <mbroadst@gmail.com>
0004     Copyright (C) 2005, 2006 Richard J. Moore <rich@kde.org>
0005     Copyright (C) 2005, 2006 Erik L. Bunce <kde@bunce.us>
0006 
0007     This library is free software; you can redistribute it and/or
0008     modify it under the terms of the GNU Library General Public
0009     License as published by the Free Software Foundation; either
0010     version 2 of the License, or (at your option) any later version.
0011 
0012     This library is distributed in the hope that it will be useful,
0013     but WITHOUT ANY WARRANTY; without even the implied warranty of
0014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0015     Library General Public License for more details.
0016 
0017     You should have received a copy of the GNU Library General Public License
0018     along with this library; see the file COPYING.LIB.  If not, write to
0019     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0020     Boston, MA 02110-1301, USA.
0021 */
0022 #include "pixmap.h"
0023 
0024 #include <QDebug>
0025 #include <QPixmap>
0026 #include <QBitmap>
0027 #include <QWidget>
0028 
0029 #include <variant_binding.h>
0030 #include <object_binding.h>
0031 
0032 using namespace KJSEmbed;
0033 
0034 const KJS::ClassInfo PixmapBinding::info = { "QPixmap", &VariantBinding::info, nullptr, nullptr };
0035 PixmapBinding::PixmapBinding(KJS::ExecState *exec, const QPixmap &value)
0036     : VariantBinding(exec, value)
0037 {
0038     StaticBinding::publish(exec, this, Pixmap::methods());
0039     StaticBinding::publish(exec, this, VariantFactory::methods());
0040 }
0041 
0042 namespace PixmapNS
0043 {
0044 START_VARIANT_METHOD(callalphaChannel, QPixmap)
0045 QPixmap cppValue = value.alphaChannel();
0046 result = KJSEmbed::createVariant(exec, "QPixmap", cppValue);
0047 END_VARIANT_METHOD
0048 
0049 START_VARIANT_METHOD(callcopy, QPixmap)
0050 if (args.size() == 1)
0051 {
0052     QRect arg0 = KJSEmbed::extractVariant<QRect>(exec, args, 0);
0053     QPixmap cppValue = value.copy(arg0);
0054     result = KJSEmbed::createVariant(exec, "QPixmap", cppValue);
0055 } else if (args.size() == 4)
0056 {
0057     int arg0 = KJSEmbed::extractInt(exec, args, 0);
0058     int arg1 = KJSEmbed::extractInt(exec, args, 1);
0059     int arg2 = KJSEmbed::extractInt(exec, args, 2);
0060     int arg3 = KJSEmbed::extractInt(exec, args, 3);
0061     QPixmap cppValue = value.copy(arg0, arg1, arg2, arg3);
0062     result = KJSEmbed::createVariant(exec, "QPixmap", cppValue);
0063 }
0064 END_VARIANT_METHOD
0065 
0066 START_VARIANT_METHOD(callcreateHeuristicMask, QPixmap)
0067 bool arg0 = KJSEmbed::extractBool(exec, args, 0);
0068 QBitmap cppValue = value.createHeuristicMask(arg0);
0069 result = KJSEmbed::createVariant(exec, "QBitmap", cppValue);
0070 END_VARIANT_METHOD
0071 
0072 START_VARIANT_METHOD(callcreateMaskFromColor, QPixmap)
0073 QColor arg0 = KJSEmbed::extractVariant<QColor>(exec, args, 0);
0074 QBitmap cppValue = value.createMaskFromColor(arg0);
0075 result = KJSEmbed::createVariant(exec, "QBitmap", cppValue);
0076 END_VARIANT_METHOD
0077 
0078 START_VARIANT_METHOD(calldefaultDepth, QPixmap)
0079 int cppValue = value.defaultDepth();
0080 result = KJS::jsNumber(cppValue);
0081 END_VARIANT_METHOD
0082 
0083 START_VARIANT_METHOD(calldepth, QPixmap)
0084 int cppValue = value.depth();
0085 result = KJS::jsNumber(cppValue);
0086 END_VARIANT_METHOD
0087 
0088 START_VARIANT_METHOD(callfill, QPixmap)
0089 if (args.size() == 3)
0090 {
0091     QWidget *arg0 = KJSEmbed::extractObject<QWidget>(exec, args, 0);
0092     int arg1 = KJSEmbed::extractInt(exec, args, 1);
0093     int arg2 = KJSEmbed::extractInt(exec, args, 2);
0094     value.fill(arg0, arg1, arg2);
0095 } else if (args.size() == 1)
0096 {
0097     QColor arg0 = KJSEmbed::extractVariant<QColor>(exec, args, 0);
0098     value.fill(arg0);
0099 } else if (args.size() == 2)
0100 {
0101     QWidget *arg0 = KJSEmbed::extractObject<QWidget>(exec, args, 0);
0102     QPoint arg1 = KJSEmbed::extractVariant<QPoint>(exec, args, 1);
0103     value.fill(arg0, arg1);
0104 }
0105 END_VARIANT_METHOD
0106 
0107 START_VARIANT_METHOD(callfromImage, QPixmap)
0108 QImage arg0 = KJSEmbed::extractVariant<QImage>(exec, args, 0);
0109 Qt::ImageConversionFlags arg1 = (Qt::ImageConversionFlags)KJSEmbed::extractInt(exec, args, 1);
0110 QPixmap cppValue = QPixmap::fromImage(arg0, arg1);
0111 result = KJSEmbed::createVariant(exec, "QPixmap", cppValue);
0112 END_VARIANT_METHOD
0113 
0114 START_VARIANT_METHOD(callgrabWidget, QPixmap)
0115 if (args.size() == 2)
0116 {
0117     QWidget *arg0 = KJSEmbed::extractObject<QWidget>(exec, args, 0);
0118     QRect arg1 = KJSEmbed::extractVariant<QRect>(exec, args, 1);
0119     QPixmap cppValue = value.grabWidget(arg0, arg1);
0120     result = KJSEmbed::createVariant(exec, "QPixmap", cppValue);
0121 } else if (args.size() == 5)
0122 {
0123     QWidget *arg0 = KJSEmbed::extractObject<QWidget>(exec, args, 0);
0124     int arg1 = KJSEmbed::extractInt(exec, args, 1);
0125     int arg2 = KJSEmbed::extractInt(exec, args, 2);
0126     int arg3 = KJSEmbed::extractInt(exec, args, 3);
0127     int arg4 = KJSEmbed::extractInt(exec, args, 4);
0128     QPixmap cppValue = value.grabWidget(arg0, arg1, arg2, arg3, arg4);
0129     result = KJSEmbed::createVariant(exec, "QPixmap", cppValue);
0130 }
0131 END_VARIANT_METHOD
0132 
0133 START_VARIANT_METHOD(callhasAlpha, QPixmap)
0134 bool cppValue = value.hasAlpha();
0135 result = KJS::jsBoolean(cppValue);
0136 END_VARIANT_METHOD
0137 
0138 START_VARIANT_METHOD(callhasAlphaChannel, QPixmap)
0139 bool cppValue = value.hasAlphaChannel();
0140 result = KJS::jsBoolean(cppValue);
0141 END_VARIANT_METHOD
0142 
0143 START_VARIANT_METHOD(callheight, QPixmap)
0144 int cppValue = value.height();
0145 result = KJS::jsNumber(cppValue);
0146 END_VARIANT_METHOD
0147 
0148 START_VARIANT_METHOD(callisNull, QPixmap)
0149 bool cppValue = value.isNull();
0150 result = KJS::jsBoolean(cppValue);
0151 END_VARIANT_METHOD
0152 
0153 START_VARIANT_METHOD(callisQBitmap, QPixmap)
0154 bool cppValue = value.isQBitmap();
0155 result = KJS::jsBoolean(cppValue);
0156 END_VARIANT_METHOD
0157 
0158 START_VARIANT_METHOD(callload, QPixmap)
0159 QString arg0 = KJSEmbed::extractQString(exec, args, 0);
0160 QByteArray arg1 = KJSEmbed::extractQString(exec, args, 1).toLatin1();
0161 Qt::ImageConversionFlags arg2 = (Qt::ImageConversionFlags) KJSEmbed::extractInt(exec, args, 2);
0162 bool cppValue = value.load(arg0, arg1, arg2);
0163 result = KJS::jsBoolean(cppValue);
0164 END_VARIANT_METHOD
0165 
0166 START_VARIANT_METHOD(callmask, QPixmap)
0167 QBitmap cppValue = value.mask();
0168 result = KJSEmbed::createVariant(exec, "QBitmap", cppValue);
0169 END_VARIANT_METHOD
0170 
0171 START_VARIANT_METHOD(callrect, QPixmap)
0172 QRect cppValue = value.rect();
0173 result = KJSEmbed::createVariant(exec, "QRect", cppValue);
0174 END_VARIANT_METHOD
0175 
0176 START_VARIANT_METHOD(callsave, QPixmap)
0177 QString arg0 = KJSEmbed::extractQString(exec, args, 0);
0178 QByteArray arg1 = KJSEmbed::extractQString(exec, args, 1).toLatin1();
0179 int arg2 = KJSEmbed::extractInt(exec, args, 2, -1);
0180 bool cppValue = value.save(arg0, arg1, arg2);
0181 result = KJS::jsBoolean(cppValue);
0182 END_VARIANT_METHOD
0183 
0184 START_VARIANT_METHOD(callscaled, QPixmap)
0185 if (args.size() == 3)
0186 {
0187     QSize arg0 = KJSEmbed::extractVariant<QSize>(exec, args, 0);
0188     Qt::AspectRatioMode arg1 = (Qt::AspectRatioMode) KJSEmbed::extractInt(exec, args, 1);
0189     Qt::TransformationMode arg2 = (Qt::TransformationMode) KJSEmbed::extractInt(exec, args, 3);
0190     QPixmap cppValue = value.scaled(arg0, arg1, arg2);
0191     result = KJSEmbed::createVariant(exec, "QPixmap", cppValue);
0192 } else if (args.size() == 4)
0193 {
0194     int arg0 = KJSEmbed::extractInt(exec, args, 0);
0195     int arg1 = KJSEmbed::extractInt(exec, args, 1);
0196     Qt::AspectRatioMode arg2 = (Qt::AspectRatioMode) KJSEmbed::extractInt(exec, args, 2);
0197     Qt::TransformationMode arg3 = (Qt::TransformationMode) KJSEmbed::extractInt(exec, args, 3);
0198     QPixmap cppValue = value.scaled(arg0, arg1, arg2, arg3);
0199     result = KJSEmbed::createVariant(exec, "QPixmap", cppValue);
0200 }
0201 END_VARIANT_METHOD
0202 
0203 START_VARIANT_METHOD(callscaledToHeight, QPixmap)
0204 int arg0 = KJSEmbed::extractInt(exec, args, 0);
0205 Qt::TransformationMode arg1  = (Qt::TransformationMode) KJSEmbed::extractInt(exec, args, 1);
0206 QPixmap cppValue = value.scaledToHeight(arg0, arg1);
0207 result = KJSEmbed::createVariant(exec, "QPixmap", cppValue);
0208 END_VARIANT_METHOD
0209 
0210 START_VARIANT_METHOD(callscaledToWidth, QPixmap)
0211 int arg0 = KJSEmbed::extractInt(exec, args, 0);
0212 Qt::TransformationMode arg1  = (Qt::TransformationMode) KJSEmbed::extractInt(exec, args, 1);
0213 QPixmap cppValue = value.scaledToWidth(arg0, arg1);
0214 result = KJSEmbed::createVariant(exec, "QPixmap", cppValue);
0215 END_VARIANT_METHOD
0216 
0217 START_VARIANT_METHOD(callserialNumber, QPixmap)
0218 int cppValue = value.serialNumber();
0219 result = KJS::jsNumber(cppValue);
0220 END_VARIANT_METHOD
0221 
0222 START_VARIANT_METHOD(callsetAlphaChannel, QPixmap)
0223 QPixmap arg0 = KJSEmbed::extractVariant<QPixmap>(exec, args, 0);
0224 value.setAlphaChannel(arg0);
0225 END_VARIANT_METHOD
0226 
0227 START_VARIANT_METHOD(callsetMask, QPixmap)
0228 QBitmap arg0 = KJSEmbed::extractVariant<QBitmap>(exec, args, 0);
0229 value.setMask(arg0);
0230 END_VARIANT_METHOD
0231 
0232 START_VARIANT_METHOD(callsize, QPixmap)
0233 QSize cppValue = value.size();
0234 result = KJSEmbed::createVariant(exec, "QSize", cppValue);
0235 END_VARIANT_METHOD
0236 
0237 START_VARIANT_METHOD(calltoImage, QPixmap)
0238 QImage cppValue = value.toImage();
0239 result = KJSEmbed::createVariant(exec, "QImage", cppValue);
0240 END_VARIANT_METHOD
0241 
0242 START_VARIANT_METHOD(callwidth, QPixmap)
0243 int cppValue = value.width();
0244 result = KJS::jsNumber(cppValue);
0245 END_VARIANT_METHOD
0246 
0247 }
0248 
0249 START_METHOD_LUT(Pixmap)
0250 {"alphaChannel", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callalphaChannel},
0251 {"copy", 3, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callcopy},
0252 {"createHeuristicMask", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callcreateHeuristicMask},
0253 {"createMaskFromColor", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callcreateMaskFromColor},
0254 {"defaultDepth", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::calldefaultDepth},
0255 {"depth", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::calldepth},
0256 {"fill", 2, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callfill},
0257 {"fromImage", 1, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callfromImage},
0258 {"grabWidget", 4, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callgrabWidget},
0259 {"hasAlpha", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callhasAlpha},
0260 {"hasAlphaChannel", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callhasAlphaChannel},
0261 {"height", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callheight},
0262 {"isNull", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callisNull},
0263 {"isQBitmap", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callisQBitmap},
0264 {"load", 2, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callload},
0265 {"mask", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callmask},
0266 {"rect", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callrect},
0267 {"save", 2, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callsave},
0268 {"scaled", 3, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callscaled},
0269 {"scaledToHeight", 1, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callscaledToHeight},
0270 {"scaledToWidth", 1, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callscaledToWidth},
0271 {"serialNumber", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callserialNumber},
0272 {"setAlphaChannel", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callsetAlphaChannel},
0273 {"setMask", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callsetMask},
0274 {"size", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callsize},
0275 {"toImage", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::calltoImage},
0276 {"width", 0, KJS::DontDelete | KJS::ReadOnly, &PixmapNS::callwidth}
0277 END_METHOD_LUT
0278 
0279 NO_STATICS(Pixmap)
0280 NO_ENUMS(Pixmap)
0281 START_CTOR(Pixmap, QPixmap, 0)
0282 if (args.size() == 0)
0283 {
0284     return new KJSEmbed::PixmapBinding(exec, QPixmap());
0285 } else if (args.size() == 1)
0286 {
0287     return new KJSEmbed::PixmapBinding(exec,
0288                                        QPixmap(KJSEmbed::extractQString(exec, args, 0)));
0289 } else if (args.size() == 2)
0290 {
0291     return new KJSEmbed::PixmapBinding(exec,
0292                                        QPixmap(KJSEmbed::extractInt(exec, args, 0),
0293                                                KJSEmbed::extractInt(exec, args, 1)
0294                                               ));
0295 } else if (args.size() == 3)
0296 {
0297     QString tmp = toQString(args[2]->toObject(exec)->className());
0298     qDebug() << tmp;
0299 
0300     return new KJSEmbed::PixmapBinding(exec,
0301                                        QPixmap(KJSEmbed::extractQString(exec, args, 0),
0302                                                KJSEmbed::extractVariant<QByteArray>(exec, args, 1).constData(),
0303                                                (Qt::ImageConversionFlags)KJSEmbed::extractInt(exec, args, 2)
0304                                               ));
0305 }
0306 return new KJSEmbed::PixmapBinding(exec, QPixmap());
0307 END_CTOR
0308