2 Copyright (c) 2006 Paolo Capriotti <p.capriotti@sns.it>
3 (c) 2006 Maurizio Monge <maurizio.monge@kdemail.net>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
12 #include "luaapi/imaging.h"
15 using namespace Loader
;
19 //BEGIN Wrapper<QRectF> -------------------------------------------------------
21 const char* Wrapper
<QRectF
>::class_name() {
25 int Wrapper
<QRectF
>::translate(lua_State
* l
) {
26 QRectF
*r
= retrieve(l
, 1, AssertOk
);
27 QPointF
*p
= Wrapper
<QPointF
>::retrieve(l
, 2, AssertOk
);
32 int Wrapper
<QRectF
>::to_string(lua_State
* l
) {
33 QRectF
*r
= retrieve(l
, 1, AssertOk
);
34 lua_pushfstring(l
, "(%f, %f, %f, %f)", r
->x(), r
->y(), r
->width(), r
->height() );
38 void Wrapper
<QRectF
>::create_index_table(lua_State
* l
) {
39 SET_PROPERTY_RW(l
, x
);
40 SET_PROPERTY_RW(l
, y
);
41 SET_PROPERTY_RW(l
, width
);
42 SET_PROPERTY_RW(l
, height
);
44 SET_PROPERTY_RO(l
, left
);
45 SET_PROPERTY_RO(l
, right
);
46 SET_PROPERTY_RO(l
, top
);
47 SET_PROPERTY_RO(l
, bottom
);
49 set_method(l
, &translate
, "translate");
50 set_meta_method(l
, &to_string
, "__tostring");
52 Comparable
<QRectF
>::register_in_index_table(l
);
55 int Wrapper
<QRectF
>::constructor(lua_State
* l
) {
56 const int n
= lua_gettop(l
);
64 res
= new QRectF(*retrieve(l
, 1, AssertOk
));
68 double x
= lua_tonumber(l
, 1);
69 double y
= lua_tonumber(l
, 2);
70 double width
= lua_tonumber(l
, 3);
71 double height
= lua_tonumber(l
, 4);
73 res
= new QRectF(x
, y
, width
, height
);
78 luaL_error(l
, "Wrong parameter list for Rect constructor");
86 //END Wrapper<QRectF> ---------------------------------------------------------
89 //BEGIN Wrapper<QPointF> ------------------------------------------------------
91 const char* Wrapper
<QPointF
>::class_name() {
95 int Wrapper
<QPointF
>::to_string(lua_State
* l
) {
96 QPointF
*p
= retrieve(l
, 1, AssertOk
);
97 lua_pushfstring(l
, "(%f, %f)", p
->x(), p
->y() );
101 void Wrapper
<QPointF
>::create_index_table(lua_State
* l
) {
102 SET_PROPERTY_RW(l
, x
);
103 SET_PROPERTY_RW(l
, y
);
104 SET_PROPERTY_RO(l
, length
);
106 set_meta_method(l
, &to_string
, "__tostring");
107 set_meta_method(l
, &get_length
, "__len");
109 Comparable
<QPointF
>::register_in_index_table(l
);
110 Summable
<QPointF
>::register_in_index_table(l
);
113 int Wrapper
<QPointF
>::constructor(lua_State
* l
) {
114 const int n
= lua_gettop(l
);
119 res
= new QPointF(*retrieve(l
, 1, AssertOk
));
122 double x
= lua_tonumber(l
, 1);
123 double y
= lua_tonumber(l
, 2);
124 res
= new QPointF(x
, y
);
129 luaL_error(l
, "Wrong argument count for Point constructor");
139 int Wrapper
<QPointF
>::get_length(lua_State
* l
) {
140 QPointF
*p
= retrieve(l
, 1, DontCheck
);
141 lua_pushnumber(l
, sqrt(p
->x()*p
->x() + p
->y()*p
->y()) );
145 //END Wrapper<QPointF> --------------------------------------------------------
148 //BEGIN Wrapper<QColor>--------------------------------------------------------
151 const char* Wrapper
<QColor
>::class_name() {
155 int Wrapper
<QColor
>::to_string(lua_State
* l
) {
156 QColor
*r
= retrieve(l
, 1, AssertOk
);
158 snprintf(buf
, 32, "#%08x", r
->rgba());
159 lua_pushstring(l
, buf
);
163 void Wrapper
<QColor
>::create_index_table(lua_State
* l
) {
164 SET_PROPERTY_RW(l
, r
);
165 SET_PROPERTY_RW(l
, g
);
166 SET_PROPERTY_RW(l
, b
);
167 SET_PROPERTY_RW(l
, a
);
169 set_meta_method(l
, &to_string
, "__tostring");
172 QColor Wrapper
<QColor
>::get(lua_State
* l
, int index
) {
173 if(lua_isstring(l
, index
)) {
174 QColor
retv(lua_tostring(l
, index
));
176 luaL_error(l
, "Wrong color string \"%s\"", lua_tostring(l
, index
));
180 return *retrieve(l
, index
, AssertOk
);
183 int Wrapper
<QColor
>::constructor(lua_State
* l
) {
184 const int n
= lua_gettop(l
);
192 res
= new QColor(get(l
, 1));
197 int r
= int(lua_tonumber(l
, 1));
198 int g
= int(lua_tonumber(l
, 2));
199 int b
= int(lua_tonumber(l
, 3));
200 int a
= (n
== 3) ? 255 : int(lua_tonumber(l
, 4));
202 res
= new QColor(r
, g
, b
, a
);
207 luaL_error(l
, "Wrong parameter list for Color constructor");
215 //END Wrapper<QColor>----------------------------------------------------------
218 int GradientWrapper
<T
>::index_event(lua_State
* l
) {
219 if(!lua_isnumber(l
, -1))
220 return GenericWrapperBase::object_meta_index_event(l
);
222 T
*g
= Wrapper
<T
>::retrieve(l
, -2, AssertOk
);
223 double stopnum
= lua_tonumber(l
, -1);
226 QGradientStops s
= g
->stops();
232 int mid
= (min
+max
)/2;
233 if(stopnum
> s
[(min
+max
)/2].first
)
238 if(qAbs(s
[max
].first
-stopnum
) < qAbs(s
[min
].first
-stopnum
)) {
239 stopnum
= s
[max
].first
;
240 retv
= s
[max
].second
;
243 stopnum
= s
[min
].first
;
244 retv
= s
[min
].second
;
247 Wrapper
<QColor
>::allocate(l
, new QColor(retv
));
248 lua_pushnumber(l
, stopnum
);
254 int GradientWrapper
<T
>::newindex_event(lua_State
* l
) {
255 if(!lua_isnumber(l
, -2))
256 return GenericWrapperBase::object_meta_newindex_event(l
);
258 T
*g
= Wrapper
<T
>::retrieve(l
, -3, AssertOk
);
259 double stopnum
= lua_tonumber(l
, -2);
260 QColor col
= Wrapper
<QColor
>::get(l
, -1);
263 g
->setColorAt(stopnum
, col
);
268 //BEGIN Wrapper<QLinearGradient>--------------------------------------------------------
270 const char* Wrapper
<QLinearGradient
>::class_name() {
271 return "LinearGradient";
274 void Wrapper
<QLinearGradient
>::create_index_table(lua_State
* l
) {
275 SET_PROPERTY_RW(l
, start
);
276 SET_PROPERTY_RW(l
, finish
);
278 //set_meta_method(l, &index_event, "__index");
279 set_meta_method(l
, &newindex_event
, "__newindex");
282 int Wrapper
<QLinearGradient
>::constructor(lua_State
* l
) {
283 const int n
= lua_gettop(l
);
284 QLinearGradient
* res
;
288 res
= new QLinearGradient();
291 QPointF
* start
= Wrapper
<QPointF
>::retrieve(l
, 1, AssertOk
);
292 QPointF
* final
= Wrapper
<QPointF
>::retrieve(l
, 2, AssertOk
);
293 res
= new QLinearGradient(*start
, *final
);
298 luaL_error(l
, "Wrong parameter list for LinearGradient constructor");
308 //END Wrapper<QLinearGradient>----------------------------------------------------------
311 //BEGIN Wrapper<QRadialGradient>--------------------------------------------------------
313 const char* Wrapper
<QRadialGradient
>::class_name() {
314 return "RadialGradient";
317 void Wrapper
<QRadialGradient
>::create_index_table(lua_State
* l
) {
318 SET_PROPERTY_RW(l
, center
);
319 SET_PROPERTY_RW(l
, radius
);
320 SET_PROPERTY_RW(l
, focus
);
322 //set_meta_method(l, &index_event, "__index");
323 set_meta_method(l
, &newindex_event
, "__newindex");
326 int Wrapper
<QRadialGradient
>::constructor(lua_State
* l
) {
327 const int n
= lua_gettop(l
);
328 QRadialGradient
* res
;
332 res
= new QRadialGradient();
335 QPointF
* center
= Wrapper
<QPointF
>::retrieve(l
, 1, AssertOk
);
336 double radius
= lua_tonumber(l
, 2);
337 res
= new QRadialGradient(*center
, radius
);
341 QPointF
* center
= Wrapper
<QPointF
>::retrieve(l
, 1, AssertOk
);
342 double radius
= lua_tonumber(l
, 2);
343 QPointF
* focus
= Wrapper
<QPointF
>::retrieve(l
, 3, AssertOk
);
344 res
= new QRadialGradient(*center
, radius
, *focus
);
349 luaL_error(l
, "Wrong parameter list for RadialGradient constructor");
359 //END Wrapper<QRadialGradient>----------------------------------------------------------
361 //BEGIN Wrapper<QConicalGradient>--------------------------------------------------------
363 const char* Wrapper
<QConicalGradient
>::class_name() {
364 return "ConicalGradient";
367 void Wrapper
<QConicalGradient
>::create_index_table(lua_State
* l
) {
368 SET_PROPERTY_RW(l
, center
);
369 SET_PROPERTY_RW(l
, angle
);
371 //set_meta_method(l, &index_event, "__index");
372 set_meta_method(l
, &newindex_event
, "__newindex");
375 int Wrapper
<QConicalGradient
>::constructor(lua_State
* l
) {
376 const int n
= lua_gettop(l
);
377 QConicalGradient
* res
;
381 res
= new QConicalGradient();
384 QPointF
* center
= Wrapper
<QPointF
>::retrieve(l
, 1, AssertOk
);
385 double angle
= lua_tonumber(l
, 2);
386 res
= new QConicalGradient(*center
, angle
);
391 luaL_error(l
, "Wrong parameter list for Color constructor");
401 //END Wrapper<QConicalGradient>----------------------------------------------------------
403 //BEGIN Wrapper<QBrush>--------------------------------------------------------
405 const char* Wrapper
<QBrush
>::class_name() {
409 void Wrapper
<QBrush
>::create_index_table(lua_State
* l
) {
411 //set_meta_method(l, &to_string, "__tostring");
412 set_method(l
, &translate
, "translate");
413 set_method(l
, &rotate
, "rotate");
414 set_method(l
, &scale
, "scale");
417 QBrush Wrapper
<QBrush
>::get(lua_State
* l
, int index
) {
418 if(QBrush
*b
= retrieve(l
, index
))
420 else if(QLinearGradient
* g
= Wrapper
<QLinearGradient
>::retrieve(l
, index
))
422 else if(QRadialGradient
* g
= Wrapper
<QRadialGradient
>::retrieve(l
, index
))
424 else if(QConicalGradient
* g
= Wrapper
<QConicalGradient
>::retrieve(l
, index
))
426 else if(Loader::Image
* img
= Wrapper
<Image
>::retrieve(l
, index
))
427 return QBrush(img
->m_image
);
429 return QBrush(Wrapper
<QColor
>::get(l
, index
));
432 int Wrapper
<QBrush
>::constructor(lua_State
* l
) {
433 const int n
= lua_gettop(l
);
438 res
= new QBrush(Qt::NoBrush
);
441 res
= new QBrush(get(l
, 1));
445 luaL_error(l
, "Wrong parameter list for Brush constructor");
453 int Wrapper
<QBrush
>::rotate(lua_State
* l
) {
454 const int n
= lua_gettop(l
);
455 if (n
!= 2) luaL_error(l
, "Wrong argument count for Brush::rotate");
457 QBrush
* brush
= retrieve(l
, 1, AssertOk
);
458 double r
= lua_tonumber(l
, 2);
461 QMatrix m
= brush
->matrix();
462 // printf("Rbefore:\n");
463 // printf("%g %g\n%g %g\n%g %g\n", m.m11(), m.m12(), m.m21(), m.m22(), m.dx(), m.dy());
464 m
= m
* QMatrix().rotate(r
);
465 // printf("Rafter:\n");
466 // printf("%g %g\n%g %g\n%g %g\n", m.m11(), m.m12(), m.m21(), m.m22(), m.dx(), m.dy());
471 int Wrapper
<QBrush
>::scale(lua_State
* l
) {
472 const int n
= lua_gettop(l
);
473 if (n
!= 3) luaL_error(l
, "Wrong argument count for Brush::scale");
475 QBrush
* brush
= retrieve(l
, 1, AssertOk
);
476 double x
= lua_tonumber(l
, 2);
477 double y
= lua_tonumber(l
, 3);
480 QMatrix m
= brush
->matrix();
481 // printf("before:\n");
482 // printf("%g %g\n%g %g\n%g %g\n", m.m11(), m.m12(), m.m21(), m.m22(), m.dx(), m.dy());
483 m
= m
* QMatrix().scale(x
, y
);
485 // printf("after:\n");
486 // printf("%g %g\n%g %g\n%g %g\n", m.m11(), m.m12(), m.m21(), m.m22(), m.dx(), m.dy());
490 int Wrapper
<QBrush
>::translate(lua_State
* l
) {
491 const int n
= lua_gettop(l
);
492 if (n
< 2 || n
> 3) luaL_error(l
, "Wrong argument count for Brush::translate");
494 QBrush
* brush
= retrieve(l
, 1, AssertOk
);
496 double x
= lua_tonumber(l
, 2);
497 double y
= lua_tonumber(l
, 3);
500 QMatrix m
= brush
->matrix();
501 // printf("before:\n");
502 // printf("%g %g\n%g %g\n%g %g\n", m.m11(), m.m12(), m.m21(), m.m22(), m.dx(), m.dy());
503 m
= m
* QMatrix().translate(x
, y
);
504 // printf("after:\n");
505 // printf("%g %g\n%g %g\n%g %g\n", m.m11(), m.m12(), m.m21(), m.m22(), m.dx(), m.dy());
509 QPointF
* point
= Wrapper
<QPointF
>::retrieve(l
, 2, AssertOk
);
512 QMatrix m
= brush
->matrix();
513 m
= m
* QMatrix().translate(point
->x(), point
->y());
519 //END Wrapper<QBrush>----------------------------------------------------------
522 //BEGIN Wrapper<Image> --------------------------------------------------------
524 const char* Wrapper
<Image
>::class_name() {
528 void Wrapper
<Image
>::create_index_table(lua_State
* l
) {
529 SET_PROPERTY_RO(l
, width
);
530 SET_PROPERTY_RO(l
, height
);
531 SET_PROPERTY_RW(l
, opacity
);
533 set_method(l
, &resetMatrix
, "reset_matrix");
534 set_method(l
, &rotate
, "rotate");
535 set_method(l
, &scale
, "scale");
536 set_method(l
, &translate
, "translate");
537 set_method(l
, &setPaintOver
, "set_paint_over");
538 set_method(l
, &clear
, "clear");
539 set_method(l
, &fillRect
, "fill_rect");
540 set_method(l
, &drawLine
, "draw_line");
541 set_method(l
, &drawImage
, "draw_image");
542 set_method(l
, &drawSVG
, "draw_svg");
543 set_method(l
, &drawGlyph
, "draw_glyph");
544 set_method(l
, &createShadow
, "create_shadow");
547 int Wrapper
<Image
>::constructor(lua_State
* l
) {
548 const int n
= lua_gettop(l
);
553 if(lua_isstring(l
, 1)) {
554 const char* file
= lua_tostring(l
, 1);
555 Context
* context
= retrieve_context(l
);
556 res
= new Image(context
, file_path(l
, file
) );
559 res
= new Image(*retrieve(l
, 1, AssertOk
));
564 int width
= static_cast<int>(lua_tonumber(l
, 1));
565 int height
= static_cast<int>(lua_tonumber(l
, 2));
566 res
= new Image(width
, height
);
571 luaL_error(l
, "Wrong argument count for Image constructor");
579 int Wrapper
<Image
>::resetMatrix(lua_State
* l
) {
580 const int n
= lua_gettop(l
);
581 if (n
!= 1) luaL_error(l
, "Wrong argument count for Image::reset_matrix");
583 Image
* img
= retrieve(l
, 1, AssertOk
);
590 int Wrapper
<Image
>::rotate(lua_State
* l
) {
591 const int n
= lua_gettop(l
);
592 if (n
!= 2) luaL_error(l
, "Wrong argument count for Image::rotate");
594 Image
* img
= retrieve(l
, 1, AssertOk
);
595 double r
= lua_tonumber(l
, 2);
602 int Wrapper
<Image
>::scale(lua_State
* l
) {
603 const int n
= lua_gettop(l
);
604 if (n
!= 3) luaL_error(l
, "Wrong argument count for Image::scale");
606 Image
* img
= retrieve(l
, 1, AssertOk
);
607 double x
= lua_tonumber(l
, 2);
608 double y
= lua_tonumber(l
, 3);
615 int Wrapper
<Image
>::translate(lua_State
* l
) {
616 const int n
= lua_gettop(l
);
617 if (n
< 2 || n
> 3) luaL_error(l
, "Wrong argument count for Image::translate");
619 Image
* img
= retrieve(l
, 1, AssertOk
);
621 double x
= lua_tonumber(l
, 2);
622 double y
= lua_tonumber(l
, 3);
625 img
->translate(x
, y
);
628 QPointF
* point
= Wrapper
<QPointF
>::retrieve(l
, 2, AssertOk
);
631 img
->translate(point
->x(), point
->y());
636 int Wrapper
<Image
>::clear(lua_State
* l
) {
637 const int n
= lua_gettop(l
);
638 if (n
< 1 || n
> 2) luaL_error(l
, "Wrong argument count for Image::clear");
640 Image
* img
= retrieve(l
, 1, AssertOk
);
643 QColor col
= Wrapper
<QColor
>::get(l
, 2);
654 int Wrapper
<Image
>::setPaintOver(lua_State
* l
) {
655 const int n
= lua_gettop(l
);
656 if (n
!= 2) luaL_error(l
, "Wrong argument count for Image::set_paint_over");
658 Image
* img
= retrieve(l
, 1, AssertOk
);
659 bool p
= lua_toboolean(l
, 2);
662 img
->setPaintOver(p
);
666 int Wrapper
<Image
>::fillRect(lua_State
* l
) {
667 const int n
= lua_gettop(l
);
668 if (n
!= 3) luaL_error(l
, "Wrong argument count for Image::fill_rect");
670 Image
* img
= retrieve(l
, 1, AssertOk
);
671 QRectF
* rect
= Wrapper
<QRectF
>::retrieve(l
, 2, AssertOk
);
672 QBrush brush
= Wrapper
<QBrush
>::get(l
, 3);
675 img
->fillRect(*rect
, brush
);
679 int Wrapper
<Image
>::drawLine(lua_State
* l
) {
680 const int n
= lua_gettop(l
);
681 if (n
> 5 || n
< 4) luaL_error(l
, "Wrong argument count for Image::draw_line");
683 Image
* img
= retrieve(l
, 1, AssertOk
);
684 QPointF
* from
= Wrapper
<QPointF
>::retrieve(l
, 2, AssertOk
);
685 QPointF
* to
= Wrapper
<QPointF
>::retrieve(l
, 3, AssertOk
);
686 QColor color
= Wrapper
<QColor
>::get(l
, 4);
687 double width
= (n
==5) ? lua_tonumber(l
, 5) : 0.0;
690 img
->drawLine(*from
, *to
, color
, width
);
694 int Wrapper
<Image
>::drawImage(lua_State
* l
) {
695 const int n
= lua_gettop(l
);
696 if (n
< 3 || n
> 4) luaL_error(l
, "Wrong argument count for Image::draw_image");
698 Image
* img
= retrieve(l
, 1, AssertOk
);
699 QRectF
* dest
= Wrapper
<QRectF
>::retrieve(l
, 2, AssertOk
);
700 if (lua_isstring(l
, 3)) {
701 Context
* context
= retrieve_context(l
);
702 const char* image_path
= lua_tostring(l
, 3);
705 QRectF
* src
= Wrapper
<QRectF
>::retrieve(l
, 4, AssertOk
);
706 res
= img
->drawImage(context
, *dest
, file_path(l
, image_path
), *src
);
709 res
= img
->drawImage(context
, *dest
, file_path(l
, image_path
) );
712 lua_pushboolean(l
, res
);
716 Image
* image
= retrieve(l
, 3, AssertOk
);
718 QRectF
* src
= Wrapper
<QRectF
>::retrieve(l
, 4, AssertOk
);
719 img
->drawImage(*dest
, *image
, *src
);
722 img
->drawImage(*dest
, *image
);
729 int Wrapper
<Image
>::drawSVG(lua_State
* l
) {
730 const int n
= lua_gettop(l
);
731 if (n
!= 3) luaL_error(l
, "Wrong argument count for Image::draw_svg");
733 Image
* img
= retrieve(l
, 1, AssertOk
);
734 QRectF
* rect
= Wrapper
<QRectF
>::retrieve(l
, 2, AssertOk
);
735 const char* file
= lua_tostring(l
, 3);
736 Context
* context
= retrieve_context(l
);
739 bool res
= img
->drawSVG(context
, *rect
, file_path(l
, file
) );
740 lua_pushboolean(l
, res
);
744 int Wrapper
<Image
>::drawGlyph(lua_State
* l
) {
745 int n
= lua_gettop(l
);
746 if (n
< 4 || n
> 8) luaL_error(l
, "Wrong argument count for Image::draw_glyph");
748 Image
* img
= retrieve(l
, 1, AssertOk
);
749 QRectF
* rect
= Wrapper
<QRectF
>::retrieve(l
, 2, AssertOk
);
750 const char* font
= lua_tostring(l
, 3);
751 const char* glyph_str
= lua_tostring(l
, 4);
752 if(!font
|| !glyph_str
)
753 luaL_error(l
, "Null arguments for Image::draw_glyph");
755 unsigned int glyph
= strtoul(glyph_str
, NULL
, 0);
756 bool draw_inner_bg
= true;
758 QBrush fg
= Qt::black
;
759 QBrush bg
= Qt::white
;
763 draw_inner_bg
= lua_toboolean(l
, 8);
765 border
= lua_tonumber(l
, 7);
767 bg
= Wrapper
<QBrush
>::get(l
, 6);
769 fg
= Wrapper
<QBrush
>::get(l
, 5);
775 Context
* context
= retrieve_context(l
);
777 bool res
= img
->drawGlyph(context
, *rect
, file_path(l
, font
), glyph
,
778 fg
, bg
, border
, draw_inner_bg
);
779 lua_pushboolean(l
, res
);
783 int Wrapper
<Image
>::createShadow(lua_State
* l
) {
784 int n
= lua_gettop(l
);
785 if (n
< 3 || n
> 5) luaL_error(l
, "Wrong argument count for Image::create_shadow");
787 Image
* img
= retrieve(l
, 1, AssertOk
);
788 double radius
= lua_tonumber(l
, 2);
789 QColor color
= Wrapper
<QColor
>::get(l
, 3);
796 offset
= *Wrapper
<QPointF
>::retrieve(l
, 5, AssertOk
);
798 grow
= Wrapper
<QPointF
>::retrieve(l
, 4, AssertOk
)->toPoint();
804 allocate(l
, new Image(img
->createShadow(radius
, color
, grow
, offset
)));
808 //END Wrapper<Image> ----------------------------------------------------------
810 //BEGIN Wrapper<Glyph> ------------------------------------------------------
812 const char* Wrapper
<Glyph
>::class_name() {
816 void Wrapper
<Glyph
>::create_index_table(lua_State
* /*l*/) {
820 int Wrapper
<Glyph
>::constructor(lua_State
* l
) {
821 const int n
= lua_gettop(l
);
826 unsigned int c
= strtoul(lua_tostring(l
, 1), NULL
, 0);
831 Context
* context
= retrieve_context(l
);
832 const char* f
= lua_tostring(l
, 1);
833 unsigned int c
= strtoul(lua_tostring(l
, 2), NULL
, 0);
834 res
= new Glyph(context
, file_path(l
, f
), c
);
838 Context
* context
= retrieve_context(l
);
839 const char* f
= lua_tostring(l
, 1);
840 unsigned int c
= strtoul(lua_tostring(l
, 2), NULL
, 0);
841 int d
= int(lua_tonumber(l
, 3));
842 res
= new Glyph(context
, file_path(l
, f
), c
, d
);
847 luaL_error(l
, "Wrong argument count for Glyph constructor");
857 //END Wrapper<QPointF> --------------------------------------------------------
859 } //end namespace LuaApi