source: trunk/examples/script/context2d/domimage.cpp@ 651

Last change on this file since 651 was 651, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.2 sources.

File size: 4.2 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the examples of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#include "domimage.h"
43
44#include <QVariant>
45
46#include <qscriptcontext.h>
47
48QScriptValue DomImage::s_self;
49
50DomImage::DomImage()
51{
52}
53
54
55int DomImage::width() const
56{
57 return m_image.width();
58}
59
60
61int DomImage::height() const
62{
63 return m_image.height();
64}
65
66
67QString DomImage::src() const
68{
69 return m_src;
70}
71
72void DomImage::setSrc(const QString &src)
73{
74 m_src = src;
75 m_image = QImage(m_src);
76}
77
78
79QString DomImage::name() const
80{
81 return m_src;
82}
83
84static QScriptValue Image(QScriptContext *context, QScriptEngine *env)
85{
86 QScriptValue val = context->thisObject();
87 DomImage *image = new DomImage();
88 QScriptValue klass = env->newVariant(qVariantFromValue(image));
89 klass.setPrototype(DomImage::s_self);
90 return klass;
91}
92
93
94static QScriptValue width(QScriptContext *context, QScriptEngine *)
95{
96 QScriptValue val = context->thisObject();
97
98 DomImage *image = qvariant_cast<DomImage*> (val.toVariant());
99 if (image)
100 return image->width();
101
102 return 0;
103}
104
105
106static QScriptValue height(QScriptContext *context, QScriptEngine *)
107{
108 QScriptValue val = context->thisObject();
109
110 DomImage *image = qvariant_cast<DomImage*> (val.toVariant());
111 if (image)
112 return image->height();
113
114 return 0;
115}
116
117
118static QScriptValue setSrc(QScriptContext *context, QScriptEngine *env)
119{
120 QScriptValue val = context->thisObject();
121 QString src = context->argument(0).toString();
122
123 DomImage *image = qvariant_cast<DomImage*> (val.toVariant());
124 if (image)
125 image->setSrc(src);
126
127 return env->undefinedValue();
128}
129
130
131static QScriptValue name(QScriptContext *context, QScriptEngine *)
132{
133 QScriptValue val = context->thisObject();
134
135 DomImage *image = qvariant_cast<DomImage*> (val.toVariant());
136 if (image)
137 return image->name();
138
139 return QString();
140}
141
142
143void DomImage::setup(QScriptEngine *e)
144{
145 qRegisterMetaType<DomImage>();
146
147 e->globalObject().setProperty("Image",
148 e->newFunction(::Image, 0));
149
150 s_self = e->newObject();
151 s_self.setProperty("setSrc", e->newFunction(&::setSrc, 1));
152 s_self.setProperty("width", e->newFunction(&::width));
153 s_self.setProperty("height", e->newFunction(&::height));
154 s_self.setProperty("name", e->newFunction(&::name));
155
156 e->setDefaultPrototype(qMetaTypeId<DomImage>(), s_self);
157}
Note: See TracBrowser for help on using the repository browser.