GD.c
上传用户:qdrechuli
上传日期:2022-08-01
资源大小:917k
文件大小:34k
源码类别:

视频捕捉/采集

开发平台:

Visual C++

  1. /*
  2.  * This file was generated automatically by xsubpp version 1.9508 from the 
  3.  * contents of GD.xs. Do not edit this file, edit GD.xs instead.
  4.  *
  5.  * ANY CHANGES MADE HERE WILL BE LOST! 
  6.  *
  7.  */
  8. #line 1 "GD.xs"
  9. #include "EXTERN.h"
  10. #include "perl.h"
  11. #include "XSUB.h"
  12. #include "libgd/gd.h"
  13. #ifdef FCGI
  14.  #include <fcgi_stdio.h>
  15. #else
  16.  #ifdef USE_SFIO
  17.   #include <config.h>
  18.  #else
  19.   #include <stdio.h>
  20.  #endif
  21.  #include <perlio.h>
  22. #endif
  23. /* Copyright 1995, 1996, Lincoln D. Stein.  See accompanying README file for
  24. usage restrictions */
  25. static int
  26. not_here(s)
  27. char *s;
  28. {
  29.     croak("%s not implemented on this architecture", s);
  30.     return -1;
  31. }
  32. static double
  33. constant(name, arg)
  34. char *name;
  35. int arg;
  36. {
  37.     errno = 0;
  38.     switch (*name) {
  39.     case 'A':
  40. break;
  41.     case 'B':
  42. break;
  43.     case 'C':
  44. break;
  45.     case 'D':
  46. break;
  47.     case 'E':
  48. break;
  49.     case 'F':
  50. break;
  51.     case 'G':
  52. break;
  53.     case 'H':
  54. break;
  55.     case 'I':
  56. break;
  57.     case 'J':
  58. break;
  59.     case 'K':
  60. break;
  61.     case 'L':
  62. break;
  63.     case 'M':
  64. break;
  65.     case 'N':
  66. break;
  67.     case 'O':
  68. break;
  69.     case 'P':
  70. break;
  71.     case 'Q':
  72. break;
  73.     case 'R':
  74. break;
  75.     case 'S':
  76. break;
  77.     case 'T':
  78. break;
  79.     case 'U':
  80. break;
  81.     case 'V':
  82. break;
  83.     case 'W':
  84. break;
  85.     case 'X':
  86. break;
  87.     case 'Y':
  88. break;
  89.     case 'Z':
  90. break;
  91.     case 'a':
  92. break;
  93.     case 'b':
  94. break;
  95.     case 'c':
  96. break;
  97.     case 'd':
  98. break;
  99.     case 'e':
  100. break;
  101.     case 'f':
  102. break;
  103.     case 'g':
  104. if (strEQ(name, "gdBrushed"))
  105. #ifdef gdBrushed
  106.     return gdBrushed;
  107. #else
  108.     goto not_there;
  109. #endif
  110. if (strEQ(name, "gdDashSize"))
  111. #ifdef gdDashSize
  112.     return gdDashSize;
  113. #else
  114.     goto not_there;
  115. #endif
  116. if (strEQ(name, "gdMaxColors"))
  117. #ifdef gdMaxColors
  118.     return gdMaxColors;
  119. #else
  120.     goto not_there;
  121. #endif
  122. if (strEQ(name, "gdStyled"))
  123. #ifdef gdStyled
  124.     return gdStyled;
  125. #else
  126.     goto not_there;
  127. #endif
  128. if (strEQ(name, "gdStyledBrushed"))
  129. #ifdef gdStyledBrushed
  130.     return gdStyledBrushed;
  131. #else
  132.     goto not_there;
  133. #endif
  134. if (strEQ(name, "gdTiled"))
  135. #ifdef gdTiled
  136.     return gdTiled;
  137. #else
  138.     goto not_there;
  139. #endif
  140. if (strEQ(name, "gdTransparent"))
  141. #ifdef gdTransparent
  142.     return gdTransparent;
  143. #else
  144.     goto not_there;
  145. #endif
  146. break;
  147.     case 'h':
  148. break;
  149.     case 'i':
  150. break;
  151.     case 'j':
  152. break;
  153.     case 'k':
  154. break;
  155.     case 'l':
  156. break;
  157.     case 'm':
  158. break;
  159.     case 'n':
  160. break;
  161.     case 'o':
  162. break;
  163.     case 'p':
  164. break;
  165.     case 'q':
  166. break;
  167.     case 'r':
  168. break;
  169.     case 's':
  170. break;
  171.     case 't':
  172. break;
  173.     case 'u':
  174. break;
  175.     case 'v':
  176. break;
  177.     case 'w':
  178. break;
  179.     case 'x':
  180. break;
  181.     case 'y':
  182. break;
  183.     case 'z':
  184. break;
  185.     }
  186.     errno = EINVAL;
  187.     return 0;
  188. not_there:
  189.     errno = ENOENT;
  190.     return 0;
  191. }
  192. typedef gdImagePtr GD__Image;
  193. typedef gdFontPtr GD__Font;
  194. typedef PerlIO * InputStream;
  195. extern  gdFontPtr gdFontLarge;
  196. extern gdFontPtr gdFontSmall;
  197. extern gdFontPtr gdFontMediumBold;
  198. extern gdFontPtr gdFontTiny;
  199. #line 206 "GD.c"
  200. XS(XS_GD_constant)
  201. {
  202.     dXSARGS;
  203.     if (items != 2)
  204. Perl_croak(aTHX_ "Usage: GD::constant(name, arg)");
  205.     {
  206. char * name = (char *)SvPV(ST(0),PL_na);
  207. int arg = (int)SvIV(ST(1));
  208. double RETVAL;
  209. dXSTARG;
  210. RETVAL = constant(name, arg);
  211. XSprePUSH; PUSHn((double)RETVAL);
  212.     }
  213.     XSRETURN(1);
  214. }
  215. XS(XS_GD__Image_new)
  216. {
  217.     dXSARGS;
  218.     if (items < 0 || items > 3)
  219. Perl_croak(aTHX_ "Usage: GD::Image::new(packname="GD::Image", x=64, y=64)");
  220.     {
  221. char * packname;
  222. int x;
  223. int y;
  224. GD__Image RETVAL;
  225. if (items < 1)
  226.     packname = "GD::Image";
  227. else {
  228.     packname = (char *)SvPV(ST(0),PL_na);
  229. }
  230. if (items < 2)
  231.     x = 64;
  232. else {
  233.     x = (int)SvIV(ST(1));
  234. }
  235. if (items < 3)
  236.     y = 64;
  237. else {
  238.     y = (int)SvIV(ST(2));
  239. }
  240. #line 212 "GD.xs"
  241. {
  242. gdImagePtr theImage;
  243. theImage = gdImageCreate(x,y);
  244. RETVAL = theImage;
  245. }
  246. #line 258 "GD.c"
  247. ST(0) = sv_newmortal();
  248. sv_setref_pv(ST(0), "GD::Image", (void*)RETVAL);
  249.     }
  250.     XSRETURN(1);
  251. }
  252. XS(XS_GD__Image__newFromGif)
  253. {
  254.     dXSARGS;
  255.     if (items < 1 || items > 2)
  256. Perl_croak(aTHX_ "Usage: GD::Image::_newFromGif(packname="GD::Image", filehandle)");
  257.     {
  258. char * packname;
  259. InputStream filehandle = IoIFP(sv_2io(ST(1)));
  260. GD__Image RETVAL;
  261. if (items < 1)
  262.     packname = "GD::Image";
  263. else {
  264.     packname = (char *)SvPV(ST(0),PL_na);
  265. }
  266. #line 226 "GD.xs"
  267. RETVAL = gdImageCreateFromGif(filehandle);
  268. #line 282 "GD.c"
  269. ST(0) = sv_newmortal();
  270. sv_setref_pv(ST(0), "GD::Image", (void*)RETVAL);
  271.     }
  272.     XSRETURN(1);
  273. }
  274. XS(XS_GD__Image__newFromXbm)
  275. {
  276.     dXSARGS;
  277.     if (items < 1 || items > 2)
  278. Perl_croak(aTHX_ "Usage: GD::Image::_newFromXbm(packname="GD::Image", filehandle)");
  279.     {
  280. char * packname;
  281. InputStream filehandle = IoIFP(sv_2io(ST(1)));
  282. GD__Image RETVAL;
  283. if (items < 1)
  284.     packname = "GD::Image";
  285. else {
  286.     packname = (char *)SvPV(ST(0),PL_na);
  287. }
  288. #line 236 "GD.xs"
  289. RETVAL = gdImageCreateFromXbm(filehandle);
  290. #line 306 "GD.c"
  291. ST(0) = sv_newmortal();
  292. sv_setref_pv(ST(0), "GD::Image", (void*)RETVAL);
  293.     }
  294.     XSRETURN(1);
  295. }
  296. XS(XS_GD__Image__newFromGd)
  297. {
  298.     dXSARGS;
  299.     if (items < 1 || items > 2)
  300. Perl_croak(aTHX_ "Usage: GD::Image::_newFromGd(packname="GD::Image", filehandle)");
  301.     {
  302. char * packname;
  303. InputStream filehandle = IoIFP(sv_2io(ST(1)));
  304. GD__Image RETVAL;
  305. if (items < 1)
  306.     packname = "GD::Image";
  307. else {
  308.     packname = (char *)SvPV(ST(0),PL_na);
  309. }
  310. #line 246 "GD.xs"
  311. RETVAL = gdImageCreateFromGd(filehandle);
  312. #line 330 "GD.c"
  313. ST(0) = sv_newmortal();
  314. sv_setref_pv(ST(0), "GD::Image", (void*)RETVAL);
  315.     }
  316.     XSRETURN(1);
  317. }
  318. XS(XS_GD__Image_DESTROY)
  319. {
  320.     dXSARGS;
  321.     if (items != 1)
  322. Perl_croak(aTHX_ "Usage: GD::Image::DESTROY(image)");
  323.     {
  324. GD__Image image;
  325. if (SvROK(ST(0))) {
  326.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  327.     image = INT2PTR(GD__Image,tmp);
  328. }
  329. else
  330.     croak("image is not a reference");
  331. #line 256 "GD.xs"
  332. {
  333. gdImageDestroy(image);
  334. }
  335. #line 355 "GD.c"
  336.     }
  337.     XSRETURN_EMPTY;
  338. }
  339. XS(XS_GD__Image_gif)
  340. {
  341.     dXSARGS;
  342.     if (items != 1)
  343. Perl_croak(aTHX_ "Usage: GD::Image::gif(image)");
  344.     {
  345. GD__Image image;
  346. SV * RETVAL;
  347. if (sv_derived_from(ST(0), "GD::Image")) {
  348.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  349.     image = INT2PTR(GD__Image,tmp);
  350. }
  351. else
  352.     croak("image is not of type GD::Image");
  353. #line 265 "GD.xs"
  354.   {
  355. void*         data;
  356. int           size;
  357. data = gdImageGifPtr(image,&size);
  358. RETVAL = newSVpv((char*) data,size);
  359. free(data);
  360.   }
  361. #line 383 "GD.c"
  362. ST(0) = RETVAL;
  363. sv_2mortal(ST(0));
  364.     }
  365.     XSRETURN(1);
  366. }
  367. XS(XS_GD__Image_gd)
  368. {
  369.     dXSARGS;
  370.     if (items != 1)
  371. Perl_croak(aTHX_ "Usage: GD::Image::gd(image)");
  372.     {
  373. GD__Image image;
  374. SV * RETVAL;
  375. if (sv_derived_from(ST(0), "GD::Image")) {
  376.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  377.     image = INT2PTR(GD__Image,tmp);
  378. }
  379. else
  380.     croak("image is not of type GD::Image");
  381. #line 280 "GD.xs"
  382.   {
  383. void*         data;
  384. int           size;
  385. data = gdImageGdPtr(image,&size);
  386. RETVAL = newSVpv((char*) data,size);
  387. free(data);
  388.   }
  389. #line 413 "GD.c"
  390. ST(0) = RETVAL;
  391. sv_2mortal(ST(0));
  392.     }
  393.     XSRETURN(1);
  394. }
  395. XS(XS_GD__Image_transparent)
  396. {
  397.     dXSARGS;
  398.     if (items < 1)
  399. Perl_croak(aTHX_ "Usage: GD::Image::transparent(image, ...)");
  400.     {
  401. GD__Image image;
  402. int RETVAL;
  403. dXSTARG;
  404. if (sv_derived_from(ST(0), "GD::Image")) {
  405.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  406.     image = INT2PTR(GD__Image,tmp);
  407. }
  408. else
  409.     croak("image is not of type GD::Image");
  410. #line 295 "GD.xs"
  411. {
  412. int color;
  413. if (items > 1) {
  414. color=(int)SvIV(ST(1));
  415. gdImageColorTransparent(image,color);
  416. }
  417. RETVAL = gdImageGetTransparent(image);
  418. }
  419. #line 445 "GD.c"
  420. XSprePUSH; PUSHi((IV)RETVAL);
  421.     }
  422.     XSRETURN(1);
  423. }
  424. XS(XS_GD__Image_getBounds)
  425. {
  426.     dXSARGS;
  427.     if (items != 1)
  428. Perl_croak(aTHX_ "Usage: GD::Image::getBounds(image)");
  429.     SP -= items;
  430.     {
  431. GD__Image image;
  432. if (sv_derived_from(ST(0), "GD::Image")) {
  433.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  434.     image = INT2PTR(GD__Image,tmp);
  435. }
  436. else
  437.     croak("image is not of type GD::Image");
  438. #line 311 "GD.xs"
  439. {
  440. int sx,sy;
  441. sx = gdImageSX(image);
  442. sy = gdImageSY(image);
  443. EXTEND(sp,2);
  444. PUSHs(sv_2mortal(newSViv(sx)));
  445. PUSHs(sv_2mortal(newSViv(sy)));
  446. }
  447. #line 475 "GD.c"
  448. PUTBACK;
  449. return;
  450.     }
  451. }
  452. XS(XS_GD__Image_rgb)
  453. {
  454.     dXSARGS;
  455.     if (items != 2)
  456. Perl_croak(aTHX_ "Usage: GD::Image::rgb(image, color)");
  457.     SP -= items;
  458.     {
  459. GD__Image image;
  460. int color = (int)SvIV(ST(1));
  461. int RETVAL;
  462. dXSTARG;
  463. if (sv_derived_from(ST(0), "GD::Image")) {
  464.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  465.     image = INT2PTR(GD__Image,tmp);
  466. }
  467. else
  468.     croak("image is not of type GD::Image");
  469. #line 326 "GD.xs"
  470. {
  471. int r,g,b;
  472. r = gdImageRed(image,color);
  473. g = gdImageGreen(image,color);
  474. b = gdImageBlue(image,color);
  475. EXTEND(sp,3);
  476. PUSHs(sv_2mortal(newSViv(r)));
  477. PUSHs(sv_2mortal(newSViv(g)));
  478. PUSHs(sv_2mortal(newSViv(b)));
  479. }
  480. #line 510 "GD.c"
  481. PUTBACK;
  482. return;
  483.     }
  484. }
  485. XS(XS_GD__Image_boundsSafe)
  486. {
  487.     dXSARGS;
  488.     if (items != 3)
  489. Perl_croak(aTHX_ "Usage: GD::Image::boundsSafe(image, x, y)");
  490.     {
  491. GD__Image image;
  492. int x = (int)SvIV(ST(1));
  493. int y = (int)SvIV(ST(2));
  494. int RETVAL;
  495. dXSTARG;
  496. if (sv_derived_from(ST(0), "GD::Image")) {
  497.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  498.     image = INT2PTR(GD__Image,tmp);
  499. }
  500. else
  501.     croak("image is not of type GD::Image");
  502. #line 344 "GD.xs"
  503. {
  504. RETVAL=gdImageBoundsSafe(image,x,y);
  505. }
  506. #line 538 "GD.c"
  507. XSprePUSH; PUSHi((IV)RETVAL);
  508.     }
  509.     XSRETURN(1);
  510. }
  511. XS(XS_GD__Image_getPixel)
  512. {
  513.     dXSARGS;
  514.     if (items != 3)
  515. Perl_croak(aTHX_ "Usage: GD::Image::getPixel(image, x, y)");
  516.     {
  517. GD__Image image;
  518. int x = (int)SvIV(ST(1));
  519. int y = (int)SvIV(ST(2));
  520. int RETVAL;
  521. dXSTARG;
  522. if (sv_derived_from(ST(0), "GD::Image")) {
  523.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  524.     image = INT2PTR(GD__Image,tmp);
  525. }
  526. else
  527.     croak("image is not of type GD::Image");
  528. #line 357 "GD.xs"
  529. {
  530. RETVAL=gdImageGetPixel(image,x,y);
  531. }
  532. #line 566 "GD.c"
  533. XSprePUSH; PUSHi((IV)RETVAL);
  534.     }
  535.     XSRETURN(1);
  536. }
  537. XS(XS_GD__Image_setPixel)
  538. {
  539.     dXSARGS;
  540.     if (items != 4)
  541. Perl_croak(aTHX_ "Usage: GD::Image::setPixel(image, x, y, color)");
  542.     {
  543. GD__Image image;
  544. int x = (int)SvIV(ST(1));
  545. int y = (int)SvIV(ST(2));
  546. int color = (int)SvIV(ST(3));
  547. if (sv_derived_from(ST(0), "GD::Image")) {
  548.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  549.     image = INT2PTR(GD__Image,tmp);
  550. }
  551. else
  552.     croak("image is not of type GD::Image");
  553. #line 371 "GD.xs"
  554. {
  555. gdImageSetPixel(image,x,y,color);
  556. }
  557. #line 593 "GD.c"
  558.     }
  559.     XSRETURN_EMPTY;
  560. }
  561. XS(XS_GD__Image_line)
  562. {
  563.     dXSARGS;
  564.     if (items != 6)
  565. Perl_croak(aTHX_ "Usage: GD::Image::line(image, x1, y1, x2, y2, color)");
  566.     {
  567. GD__Image image;
  568. int x1 = (int)SvIV(ST(1));
  569. int y1 = (int)SvIV(ST(2));
  570. int x2 = (int)SvIV(ST(3));
  571. int y2 = (int)SvIV(ST(4));
  572. int color = (int)SvIV(ST(5));
  573. if (sv_derived_from(ST(0), "GD::Image")) {
  574.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  575.     image = INT2PTR(GD__Image,tmp);
  576. }
  577. else
  578.     croak("image is not of type GD::Image");
  579. #line 385 "GD.xs"
  580. {
  581. gdImageLine(image,x1,y1,x2,y2,color);
  582. }
  583. #line 621 "GD.c"
  584.     }
  585.     XSRETURN_EMPTY;
  586. }
  587. XS(XS_GD__Image_dashedLine)
  588. {
  589.     dXSARGS;
  590.     if (items != 6)
  591. Perl_croak(aTHX_ "Usage: GD::Image::dashedLine(image, x1, y1, x2, y2, color)");
  592.     {
  593. GD__Image image;
  594. int x1 = (int)SvIV(ST(1));
  595. int y1 = (int)SvIV(ST(2));
  596. int x2 = (int)SvIV(ST(3));
  597. int y2 = (int)SvIV(ST(4));
  598. int color = (int)SvIV(ST(5));
  599. if (sv_derived_from(ST(0), "GD::Image")) {
  600.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  601.     image = INT2PTR(GD__Image,tmp);
  602. }
  603. else
  604.     croak("image is not of type GD::Image");
  605. #line 399 "GD.xs"
  606. {
  607. gdImageDashedLine(image,x1,y1,x2,y2,color);
  608. }
  609. #line 649 "GD.c"
  610.     }
  611.     XSRETURN_EMPTY;
  612. }
  613. XS(XS_GD__Image_openPolygon)
  614. {
  615.     dXSARGS;
  616.     if (items != 3)
  617. Perl_croak(aTHX_ "Usage: GD::Image::openPolygon(image, poly, color)");
  618.     {
  619. GD__Image image;
  620. SV * poly = ST(1);
  621. int color = (int)SvIV(ST(2));
  622. if (sv_derived_from(ST(0), "GD::Image")) {
  623.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  624.     image = INT2PTR(GD__Image,tmp);
  625. }
  626. else
  627.     croak("image is not of type GD::Image");
  628. #line 410 "GD.xs"
  629. {
  630. dSP ;
  631. int length,count ;
  632. int x,y,i ;
  633. gdPointPtr polyptr;
  634. ENTER ;
  635. SAVETMPS ;
  636. PUSHMARK(sp) ;
  637. XPUSHs(poly) ;
  638. PUTBACK ;
  639. count = perl_call_method("length",G_SCALAR) ;
  640. SPAGAIN ;
  641. if (count != 1)
  642. croak("Didn't get a single result from GD::Poly::length() call.n");
  643. length = POPi ;
  644. PUTBACK ;
  645. FREETMPS ;
  646. LEAVE ;
  647. polyptr = (gdPointPtr)safemalloc(sizeof(gdPoint)*length);
  648. if (polyptr == NULL)
  649. croak("safemalloc() returned NULL in GD::Image::poly().n");
  650. for (i=0;i<length;i++) {
  651. ENTER ;
  652. SAVETMPS ;
  653. PUSHMARK(sp) ;
  654. XPUSHs(poly) ;
  655. XPUSHs(sv_2mortal(newSViv(i))) ;
  656. PUTBACK ;
  657. count = perl_call_method("getPt",G_ARRAY) ;
  658. SPAGAIN ;
  659. if (count != 2)
  660. croak("Didn't get a single result from GD::Poly::length() call.n");
  661. y = POPi ;
  662. x = POPi ;
  663. PUTBACK ;
  664. FREETMPS ;
  665. LEAVE ;
  666. polyptr[i].x = x;
  667. polyptr[i].y = y;
  668. }
  669. gdImageOpenPolygon(image,polyptr,length,color);
  670. safefree((char*) polyptr);
  671. }
  672. #line 719 "GD.c"
  673.     }
  674.     XSRETURN_EMPTY;
  675. }
  676. XS(XS_GD__Image_filledPolygon)
  677. {
  678.     dXSARGS;
  679.     if (items != 3)
  680. Perl_croak(aTHX_ "Usage: GD::Image::filledPolygon(image, poly, color)");
  681.     {
  682. GD__Image image;
  683. SV * poly = ST(1);
  684. int color = (int)SvIV(ST(2));
  685. if (sv_derived_from(ST(0), "GD::Image")) {
  686.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  687.     image = INT2PTR(GD__Image,tmp);
  688. }
  689. else
  690.     croak("image is not of type GD::Image");
  691. #line 466 "GD.xs"
  692. {
  693. dSP ;
  694. int length,count ;
  695. int x,y,i ;
  696. gdPointPtr polyptr;
  697. ENTER ;
  698. SAVETMPS ;
  699. PUSHMARK(sp) ;
  700. XPUSHs(poly) ;
  701. PUTBACK ;
  702. count = perl_call_method("length",G_SCALAR) ;
  703. SPAGAIN ;
  704. if (count != 1)
  705. croak("Didn't get a single result from GD::Poly::length() call.n");
  706. length = POPi ;
  707. PUTBACK ;
  708. FREETMPS ;
  709. LEAVE ;
  710. polyptr = (gdPointPtr)safemalloc(sizeof(gdPoint)*length);
  711. if (polyptr == NULL)
  712. croak("safemalloc() returned NULL in GD::Image::poly().n");
  713. for (i=0;i<length;i++) {
  714. ENTER ;
  715. SAVETMPS ;
  716. PUSHMARK(sp) ;
  717. XPUSHs(poly) ;
  718. XPUSHs(sv_2mortal(newSViv(i))) ;
  719. PUTBACK ;
  720. count = perl_call_method("getPt",G_ARRAY) ;
  721. SPAGAIN ;
  722. if (count != 2)
  723. croak("Didn't get a single result from GD::Poly::length() call.n");
  724. y = POPi ;
  725. x = POPi ;
  726. PUTBACK ;
  727. FREETMPS ;
  728. LEAVE ;
  729. polyptr[i].x = x;
  730. polyptr[i].y = y;
  731. }
  732. gdImageFilledPolygon(image,polyptr,length,color);
  733. safefree((char*) polyptr);
  734. }
  735. #line 789 "GD.c"
  736.     }
  737.     XSRETURN_EMPTY;
  738. }
  739. XS(XS_GD__Image_rectangle)
  740. {
  741.     dXSARGS;
  742.     if (items != 6)
  743. Perl_croak(aTHX_ "Usage: GD::Image::rectangle(image, x1, y1, x2, y2, color)");
  744.     {
  745. GD__Image image;
  746. int x1 = (int)SvIV(ST(1));
  747. int y1 = (int)SvIV(ST(2));
  748. int x2 = (int)SvIV(ST(3));
  749. int y2 = (int)SvIV(ST(4));
  750. int color = (int)SvIV(ST(5));
  751. if (sv_derived_from(ST(0), "GD::Image")) {
  752.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  753.     image = INT2PTR(GD__Image,tmp);
  754. }
  755. else
  756.     croak("image is not of type GD::Image");
  757. #line 525 "GD.xs"
  758. {
  759. gdImageRectangle(image,x1,y1,x2,y2,color);
  760. }
  761. #line 817 "GD.c"
  762.     }
  763.     XSRETURN_EMPTY;
  764. }
  765. XS(XS_GD__Image_filledRectangle)
  766. {
  767.     dXSARGS;
  768.     if (items != 6)
  769. Perl_croak(aTHX_ "Usage: GD::Image::filledRectangle(image, x1, y1, x2, y2, color)");
  770.     {
  771. GD__Image image;
  772. int x1 = (int)SvIV(ST(1));
  773. int y1 = (int)SvIV(ST(2));
  774. int x2 = (int)SvIV(ST(3));
  775. int y2 = (int)SvIV(ST(4));
  776. int color = (int)SvIV(ST(5));
  777. if (sv_derived_from(ST(0), "GD::Image")) {
  778.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  779.     image = INT2PTR(GD__Image,tmp);
  780. }
  781. else
  782.     croak("image is not of type GD::Image");
  783. #line 539 "GD.xs"
  784. {
  785. gdImageFilledRectangle(image,x1,y1,x2,y2,color);
  786. }
  787. #line 845 "GD.c"
  788.     }
  789.     XSRETURN_EMPTY;
  790. }
  791. XS(XS_GD__Image_arc)
  792. {
  793.     dXSARGS;
  794.     if (items != 8)
  795. Perl_croak(aTHX_ "Usage: GD::Image::arc(image, cx, cy, w, h, s, e, color)");
  796.     {
  797. GD__Image image;
  798. int cx = (int)SvIV(ST(1));
  799. int cy = (int)SvIV(ST(2));
  800. int w = (int)SvIV(ST(3));
  801. int h = (int)SvIV(ST(4));
  802. int s = (int)SvIV(ST(5));
  803. int e = (int)SvIV(ST(6));
  804. int color = (int)SvIV(ST(7));
  805. if (sv_derived_from(ST(0), "GD::Image")) {
  806.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  807.     image = INT2PTR(GD__Image,tmp);
  808. }
  809. else
  810.     croak("image is not of type GD::Image");
  811. #line 555 "GD.xs"
  812. {
  813. gdImageArc(image,cx,cy,w,h,s,e,color);
  814. }
  815. #line 875 "GD.c"
  816.     }
  817.     XSRETURN_EMPTY;
  818. }
  819. XS(XS_GD__Image_fillToBorder)
  820. {
  821.     dXSARGS;
  822.     if (items != 5)
  823. Perl_croak(aTHX_ "Usage: GD::Image::fillToBorder(image, x, y, border, color)");
  824.     {
  825. GD__Image image;
  826. int x = (int)SvIV(ST(1));
  827. int y = (int)SvIV(ST(2));
  828. int border = (int)SvIV(ST(3));
  829. int color = (int)SvIV(ST(4));
  830. if (sv_derived_from(ST(0), "GD::Image")) {
  831.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  832.     image = INT2PTR(GD__Image,tmp);
  833. }
  834. else
  835.     croak("image is not of type GD::Image");
  836. #line 568 "GD.xs"
  837. {
  838. gdImageFillToBorder(image,x,y,border,color);
  839. }
  840. #line 902 "GD.c"
  841.     }
  842.     XSRETURN_EMPTY;
  843. }
  844. XS(XS_GD__Image_fill)
  845. {
  846.     dXSARGS;
  847.     if (items != 4)
  848. Perl_croak(aTHX_ "Usage: GD::Image::fill(image, x, y, color)");
  849.     {
  850. GD__Image image;
  851. int x = (int)SvIV(ST(1));
  852. int y = (int)SvIV(ST(2));
  853. int color = (int)SvIV(ST(3));
  854. if (sv_derived_from(ST(0), "GD::Image")) {
  855.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  856.     image = INT2PTR(GD__Image,tmp);
  857. }
  858. else
  859.     croak("image is not of type GD::Image");
  860. #line 580 "GD.xs"
  861. {
  862. gdImageFill(image,x,y,color);
  863. }
  864. #line 928 "GD.c"
  865.     }
  866.     XSRETURN_EMPTY;
  867. }
  868. XS(XS_GD__Image_setBrush)
  869. {
  870.     dXSARGS;
  871.     if (items != 2)
  872. Perl_croak(aTHX_ "Usage: GD::Image::setBrush(image, brush)");
  873.     {
  874. GD__Image image;
  875. GD__Image brush;
  876. if (sv_derived_from(ST(0), "GD::Image")) {
  877.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  878.     image = INT2PTR(GD__Image,tmp);
  879. }
  880. else
  881.     croak("image is not of type GD::Image");
  882. if (sv_derived_from(ST(1), "GD::Image")) {
  883.     IV tmp = SvIV((SV*)SvRV(ST(1)));
  884.     brush = INT2PTR(GD__Image,tmp);
  885. }
  886. else
  887.     croak("brush is not of type GD::Image");
  888. #line 590 "GD.xs"
  889. {
  890. gdImageSetBrush(image,brush);
  891. }
  892. #line 959 "GD.c"
  893.     }
  894.     XSRETURN_EMPTY;
  895. }
  896. XS(XS_GD__Image_setTile)
  897. {
  898.     dXSARGS;
  899.     if (items != 2)
  900. Perl_croak(aTHX_ "Usage: GD::Image::setTile(image, tile)");
  901.     {
  902. GD__Image image;
  903. GD__Image tile;
  904. if (sv_derived_from(ST(0), "GD::Image")) {
  905.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  906.     image = INT2PTR(GD__Image,tmp);
  907. }
  908. else
  909.     croak("image is not of type GD::Image");
  910. if (sv_derived_from(ST(1), "GD::Image")) {
  911.     IV tmp = SvIV((SV*)SvRV(ST(1)));
  912.     tile = INT2PTR(GD__Image,tmp);
  913. }
  914. else
  915.     croak("tile is not of type GD::Image");
  916. #line 600 "GD.xs"
  917. {
  918. gdImageSetTile(image,tile);
  919. }
  920. #line 990 "GD.c"
  921.     }
  922.     XSRETURN_EMPTY;
  923. }
  924. XS(XS_GD__Image_setStyle)
  925. {
  926.     dXSARGS;
  927.     if (items < 1)
  928. Perl_croak(aTHX_ "Usage: GD::Image::setStyle(image, ...)");
  929.     {
  930. GD__Image image;
  931. if (sv_derived_from(ST(0), "GD::Image")) {
  932.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  933.     image = INT2PTR(GD__Image,tmp);
  934. }
  935. else
  936.     croak("image is not of type GD::Image");
  937. #line 609 "GD.xs"
  938. {
  939. int *style;
  940. int i;
  941. if (items < 2)
  942. return;
  943. style = (int*) safemalloc(sizeof(int)*(items-1));
  944. if (style == NULL)
  945. croak("malloc returned NULL at setStyle().n");
  946. for(i=1;i<items;i++) {
  947. style[i-1]=(int)SvIV(ST(i));
  948. }
  949. gdImageSetStyle(image,style,items-1);
  950. safefree((char*) style);
  951. }
  952. #line 1025 "GD.c"
  953.     }
  954.     XSRETURN_EMPTY;
  955. }
  956. XS(XS_GD__Image_colorAllocate)
  957. {
  958.     dXSARGS;
  959.     if (items != 4)
  960. Perl_croak(aTHX_ "Usage: GD::Image::colorAllocate(image, r, g, b)");
  961.     {
  962. GD__Image image;
  963. int r = (int)SvIV(ST(1));
  964. int g = (int)SvIV(ST(2));
  965. int b = (int)SvIV(ST(3));
  966. int RETVAL;
  967. dXSTARG;
  968. if (sv_derived_from(ST(0), "GD::Image")) {
  969.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  970.     image = INT2PTR(GD__Image,tmp);
  971. }
  972. else
  973.     croak("image is not of type GD::Image");
  974. #line 633 "GD.xs"
  975. {
  976. RETVAL = gdImageColorAllocate(image,r,g,b);
  977. }
  978. #line 1053 "GD.c"
  979. XSprePUSH; PUSHi((IV)RETVAL);
  980.     }
  981.     XSRETURN(1);
  982. }
  983. XS(XS_GD__Image_colorClosest)
  984. {
  985.     dXSARGS;
  986.     if (items != 4)
  987. Perl_croak(aTHX_ "Usage: GD::Image::colorClosest(image, r, g, b)");
  988.     {
  989. GD__Image image;
  990. int r = (int)SvIV(ST(1));
  991. int g = (int)SvIV(ST(2));
  992. int b = (int)SvIV(ST(3));
  993. int RETVAL;
  994. dXSTARG;
  995. if (sv_derived_from(ST(0), "GD::Image")) {
  996.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  997.     image = INT2PTR(GD__Image,tmp);
  998. }
  999. else
  1000.     croak("image is not of type GD::Image");
  1001. #line 647 "GD.xs"
  1002. {
  1003. RETVAL = gdImageColorClosest(image,r,g,b);
  1004. }
  1005. #line 1082 "GD.c"
  1006. XSprePUSH; PUSHi((IV)RETVAL);
  1007.     }
  1008.     XSRETURN(1);
  1009. }
  1010. XS(XS_GD__Image_colorExact)
  1011. {
  1012.     dXSARGS;
  1013.     if (items != 4)
  1014. Perl_croak(aTHX_ "Usage: GD::Image::colorExact(image, r, g, b)");
  1015.     {
  1016. GD__Image image;
  1017. int r = (int)SvIV(ST(1));
  1018. int g = (int)SvIV(ST(2));
  1019. int b = (int)SvIV(ST(3));
  1020. int RETVAL;
  1021. dXSTARG;
  1022. if (sv_derived_from(ST(0), "GD::Image")) {
  1023.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  1024.     image = INT2PTR(GD__Image,tmp);
  1025. }
  1026. else
  1027.     croak("image is not of type GD::Image");
  1028. #line 661 "GD.xs"
  1029. {
  1030. RETVAL = gdImageColorExact(image,r,g,b);
  1031. }
  1032. #line 1111 "GD.c"
  1033. XSprePUSH; PUSHi((IV)RETVAL);
  1034.     }
  1035.     XSRETURN(1);
  1036. }
  1037. XS(XS_GD__Image_colorsTotal)
  1038. {
  1039.     dXSARGS;
  1040.     if (items != 1)
  1041. Perl_croak(aTHX_ "Usage: GD::Image::colorsTotal(image)");
  1042.     {
  1043. GD__Image image;
  1044. int RETVAL;
  1045. dXSTARG;
  1046. if (sv_derived_from(ST(0), "GD::Image")) {
  1047.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  1048.     image = INT2PTR(GD__Image,tmp);
  1049. }
  1050. else
  1051.     croak("image is not of type GD::Image");
  1052. #line 672 "GD.xs"
  1053. {
  1054. RETVAL = gdImageColorsTotal(image);
  1055. }
  1056. #line 1137 "GD.c"
  1057. XSprePUSH; PUSHi((IV)RETVAL);
  1058.     }
  1059.     XSRETURN(1);
  1060. }
  1061. XS(XS_GD__Image_interlaced)
  1062. {
  1063.     dXSARGS;
  1064.     if (items < 1)
  1065. Perl_croak(aTHX_ "Usage: GD::Image::interlaced(image, ...)");
  1066.     {
  1067. GD__Image image;
  1068. int RETVAL;
  1069. dXSTARG;
  1070. if (sv_derived_from(ST(0), "GD::Image")) {
  1071.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  1072.     image = INT2PTR(GD__Image,tmp);
  1073. }
  1074. else
  1075.     croak("image is not of type GD::Image");
  1076. #line 684 "GD.xs"
  1077. {
  1078. if (items > 1) {
  1079. if (SvOK(ST(1)))
  1080. gdImageInterlace(image,1);
  1081. else
  1082. gdImageInterlace(image,0);
  1083. }
  1084. RETVAL = gdImageGetInterlaced(image);
  1085. }
  1086. #line 1169 "GD.c"
  1087. XSprePUSH; PUSHi((IV)RETVAL);
  1088.     }
  1089.     XSRETURN(1);
  1090. }
  1091. XS(XS_GD__Image_colorDeallocate)
  1092. {
  1093.     dXSARGS;
  1094.     if (items != 2)
  1095. Perl_croak(aTHX_ "Usage: GD::Image::colorDeallocate(image, color)");
  1096.     {
  1097. GD__Image image;
  1098. int color = (int)SvIV(ST(1));
  1099. if (sv_derived_from(ST(0), "GD::Image")) {
  1100.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  1101.     image = INT2PTR(GD__Image,tmp);
  1102. }
  1103. else
  1104.     croak("image is not of type GD::Image");
  1105. #line 702 "GD.xs"
  1106. {
  1107. gdImageColorDeallocate(image,color);
  1108. }
  1109. #line 1194 "GD.c"
  1110.     }
  1111.     XSRETURN_EMPTY;
  1112. }
  1113. XS(XS_GD__Image_copy)
  1114. {
  1115.     dXSARGS;
  1116.     if (items != 8)
  1117. Perl_croak(aTHX_ "Usage: GD::Image::copy(destination, source, dstX, dstY, srcX, srcY, w, h)");
  1118.     {
  1119. GD__Image destination;
  1120. GD__Image source;
  1121. int dstX = (int)SvIV(ST(2));
  1122. int dstY = (int)SvIV(ST(3));
  1123. int srcX = (int)SvIV(ST(4));
  1124. int srcY = (int)SvIV(ST(5));
  1125. int w = (int)SvIV(ST(6));
  1126. int h = (int)SvIV(ST(7));
  1127. if (sv_derived_from(ST(0), "GD::Image")) {
  1128.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  1129.     destination = INT2PTR(GD__Image,tmp);
  1130. }
  1131. else
  1132.     croak("destination is not of type GD::Image");
  1133. if (sv_derived_from(ST(1), "GD::Image")) {
  1134.     IV tmp = SvIV((SV*)SvRV(ST(1)));
  1135.     source = INT2PTR(GD__Image,tmp);
  1136. }
  1137. else
  1138.     croak("source is not of type GD::Image");
  1139. #line 718 "GD.xs"
  1140. {
  1141. gdImageCopy(destination,source,dstX,dstY,srcX,srcY,w,h);
  1142. }
  1143. #line 1231 "GD.c"
  1144.     }
  1145.     XSRETURN_EMPTY;
  1146. }
  1147. XS(XS_GD__Image_copyResized)
  1148. {
  1149.     dXSARGS;
  1150.     if (items != 10)
  1151. Perl_croak(aTHX_ "Usage: GD::Image::copyResized(destination, source, dstX, dstY, srcX, srcY, destW, destH, srcW, srcH)");
  1152.     {
  1153. GD__Image destination;
  1154. GD__Image source;
  1155. int dstX = (int)SvIV(ST(2));
  1156. int dstY = (int)SvIV(ST(3));
  1157. int srcX = (int)SvIV(ST(4));
  1158. int srcY = (int)SvIV(ST(5));
  1159. int destW = (int)SvIV(ST(6));
  1160. int destH = (int)SvIV(ST(7));
  1161. int srcW = (int)SvIV(ST(8));
  1162. int srcH = (int)SvIV(ST(9));
  1163. if (sv_derived_from(ST(0), "GD::Image")) {
  1164.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  1165.     destination = INT2PTR(GD__Image,tmp);
  1166. }
  1167. else
  1168.     croak("destination is not of type GD::Image");
  1169. if (sv_derived_from(ST(1), "GD::Image")) {
  1170.     IV tmp = SvIV((SV*)SvRV(ST(1)));
  1171.     source = INT2PTR(GD__Image,tmp);
  1172. }
  1173. else
  1174.     croak("source is not of type GD::Image");
  1175. #line 736 "GD.xs"
  1176. {
  1177. gdImageCopyResized(destination,source,dstX,dstY,srcX,srcY,destW,destH,srcW,srcH);
  1178. }
  1179. #line 1270 "GD.c"
  1180.     }
  1181.     XSRETURN_EMPTY;
  1182. }
  1183. XS(XS_GD__Image_char)
  1184. {
  1185.     dXSARGS;
  1186.     if (items != 6)
  1187. Perl_croak(aTHX_ "Usage: GD::Image::char(image, font, x, y, c, color)");
  1188.     {
  1189. GD__Image image;
  1190. GD__Font font;
  1191. int x = (int)SvIV(ST(2));
  1192. int y = (int)SvIV(ST(3));
  1193. char * c = (char *)SvPV(ST(4),PL_na);
  1194. int color = (int)SvIV(ST(5));
  1195. if (sv_derived_from(ST(0), "GD::Image")) {
  1196.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  1197.     image = INT2PTR(GD__Image,tmp);
  1198. }
  1199. else
  1200.     croak("image is not of type GD::Image");
  1201. if (sv_derived_from(ST(1), "GD::Font")) {
  1202.     IV tmp = SvIV((SV*)SvRV(ST(1)));
  1203.     font = INT2PTR(GD__Font,tmp);
  1204. }
  1205. else
  1206.     croak("font is not of type GD::Font");
  1207. #line 750 "GD.xs"
  1208. {
  1209. gdImageChar(image,font,x,y,*c,color);
  1210. }
  1211. #line 1305 "GD.c"
  1212.     }
  1213.     XSRETURN_EMPTY;
  1214. }
  1215. XS(XS_GD__Image_charUp)
  1216. {
  1217.     dXSARGS;
  1218.     if (items != 6)
  1219. Perl_croak(aTHX_ "Usage: GD::Image::charUp(image, font, x, y, c, color)");
  1220.     {
  1221. GD__Image image;
  1222. GD__Font font;
  1223. int x = (int)SvIV(ST(2));
  1224. int y = (int)SvIV(ST(3));
  1225. char * c = (char *)SvPV(ST(4),PL_na);
  1226. int color = (int)SvIV(ST(5));
  1227. if (sv_derived_from(ST(0), "GD::Image")) {
  1228.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  1229.     image = INT2PTR(GD__Image,tmp);
  1230. }
  1231. else
  1232.     croak("image is not of type GD::Image");
  1233. if (sv_derived_from(ST(1), "GD::Font")) {
  1234.     IV tmp = SvIV((SV*)SvRV(ST(1)));
  1235.     font = INT2PTR(GD__Font,tmp);
  1236. }
  1237. else
  1238.     croak("font is not of type GD::Font");
  1239. #line 764 "GD.xs"
  1240. {
  1241. gdImageCharUp(image,font,x,y,*c,color);
  1242. }
  1243. #line 1340 "GD.c"
  1244.     }
  1245.     XSRETURN_EMPTY;
  1246. }
  1247. XS(XS_GD__Image_string)
  1248. {
  1249.     dXSARGS;
  1250.     if (items != 6)
  1251. Perl_croak(aTHX_ "Usage: GD::Image::string(image, font, x, y, s, color)");
  1252.     {
  1253. GD__Image image;
  1254. GD__Font font;
  1255. int x = (int)SvIV(ST(2));
  1256. int y = (int)SvIV(ST(3));
  1257. char * s = (char *)SvPV(ST(4),PL_na);
  1258. int color = (int)SvIV(ST(5));
  1259. if (sv_derived_from(ST(0), "GD::Image")) {
  1260.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  1261.     image = INT2PTR(GD__Image,tmp);
  1262. }
  1263. else
  1264.     croak("image is not of type GD::Image");
  1265. if (sv_derived_from(ST(1), "GD::Font")) {
  1266.     IV tmp = SvIV((SV*)SvRV(ST(1)));
  1267.     font = INT2PTR(GD__Font,tmp);
  1268. }
  1269. else
  1270.     croak("font is not of type GD::Font");
  1271. #line 778 "GD.xs"
  1272. {
  1273. gdImageString(image,font,x,y,s,color);
  1274. }
  1275. #line 1375 "GD.c"
  1276.     }
  1277.     XSRETURN_EMPTY;
  1278. }
  1279. XS(XS_GD__Image_stringUp)
  1280. {
  1281.     dXSARGS;
  1282.     if (items != 6)
  1283. Perl_croak(aTHX_ "Usage: GD::Image::stringUp(image, font, x, y, s, color)");
  1284.     {
  1285. GD__Image image;
  1286. GD__Font font;
  1287. int x = (int)SvIV(ST(2));
  1288. int y = (int)SvIV(ST(3));
  1289. char * s = (char *)SvPV(ST(4),PL_na);
  1290. int color = (int)SvIV(ST(5));
  1291. if (sv_derived_from(ST(0), "GD::Image")) {
  1292.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  1293.     image = INT2PTR(GD__Image,tmp);
  1294. }
  1295. else
  1296.     croak("image is not of type GD::Image");
  1297. if (sv_derived_from(ST(1), "GD::Font")) {
  1298.     IV tmp = SvIV((SV*)SvRV(ST(1)));
  1299.     font = INT2PTR(GD__Font,tmp);
  1300. }
  1301. else
  1302.     croak("font is not of type GD::Font");
  1303. #line 792 "GD.xs"
  1304. {
  1305. gdImageStringUp(image,font,x,y,s,color);
  1306. }
  1307. #line 1410 "GD.c"
  1308.     }
  1309.     XSRETURN_EMPTY;
  1310. }
  1311. XS(XS_GD__Font_Small)
  1312. {
  1313.     dXSARGS;
  1314.     if (items < 0 || items > 1)
  1315. Perl_croak(aTHX_ "Usage: GD::Font::Small(packname="GD::Font")");
  1316.     {
  1317. char * packname;
  1318. GD__Font RETVAL;
  1319. if (items < 1)
  1320.     packname = "GD::Font";
  1321. else {
  1322.     packname = (char *)SvPV(ST(0),PL_na);
  1323. }
  1324. #line 803 "GD.xs"
  1325. {
  1326. RETVAL = gdFontSmall;
  1327. }
  1328. #line 1433 "GD.c"
  1329. ST(0) = sv_newmortal();
  1330. sv_setref_pv(ST(0), "GD::Font", (void*)RETVAL);
  1331.     }
  1332.     XSRETURN(1);
  1333. }
  1334. XS(XS_GD__Font_Large)
  1335. {
  1336.     dXSARGS;
  1337.     if (items < 0 || items > 1)
  1338. Perl_croak(aTHX_ "Usage: GD::Font::Large(packname="GD::Font")");
  1339.     {
  1340. char * packname;
  1341. GD__Font RETVAL;
  1342. if (items < 1)
  1343.     packname = "GD::Font";
  1344. else {
  1345.     packname = (char *)SvPV(ST(0),PL_na);
  1346. }
  1347. #line 814 "GD.xs"
  1348. {
  1349. RETVAL = gdFontLarge;
  1350. }
  1351. #line 1458 "GD.c"
  1352. ST(0) = sv_newmortal();
  1353. sv_setref_pv(ST(0), "GD::Font", (void*)RETVAL);
  1354.     }
  1355.     XSRETURN(1);
  1356. }
  1357. XS(XS_GD__Font_MediumBold)
  1358. {
  1359.     dXSARGS;
  1360.     if (items < 0 || items > 1)
  1361. Perl_croak(aTHX_ "Usage: GD::Font::MediumBold(packname="GD::Font")");
  1362.     {
  1363. char * packname;
  1364. GD__Font RETVAL;
  1365. if (items < 1)
  1366.     packname = "GD::Font";
  1367. else {
  1368.     packname = (char *)SvPV(ST(0),PL_na);
  1369. }
  1370. #line 825 "GD.xs"
  1371. {
  1372. RETVAL = gdFontMediumBold;
  1373. }
  1374. #line 1483 "GD.c"
  1375. ST(0) = sv_newmortal();
  1376. sv_setref_pv(ST(0), "GD::Font", (void*)RETVAL);
  1377.     }
  1378.     XSRETURN(1);
  1379. }
  1380. XS(XS_GD__Font_Tiny)
  1381. {
  1382.     dXSARGS;
  1383.     if (items < 0 || items > 1)
  1384. Perl_croak(aTHX_ "Usage: GD::Font::Tiny(packname="GD::Font")");
  1385.     {
  1386. char * packname;
  1387. GD__Font RETVAL;
  1388. if (items < 1)
  1389.     packname = "GD::Font";
  1390. else {
  1391.     packname = (char *)SvPV(ST(0),PL_na);
  1392. }
  1393. #line 836 "GD.xs"
  1394. {
  1395. RETVAL = gdFontTiny;
  1396. }
  1397. #line 1508 "GD.c"
  1398. ST(0) = sv_newmortal();
  1399. sv_setref_pv(ST(0), "GD::Font", (void*)RETVAL);
  1400.     }
  1401.     XSRETURN(1);
  1402. }
  1403. XS(XS_GD__Font_nchars)
  1404. {
  1405.     dXSARGS;
  1406.     if (items != 1)
  1407. Perl_croak(aTHX_ "Usage: GD::Font::nchars(font)");
  1408.     {
  1409. GD__Font font;
  1410. int RETVAL;
  1411. dXSTARG;
  1412. if (sv_derived_from(ST(0), "GD::Font")) {
  1413.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  1414.     font = INT2PTR(GD__Font,tmp);
  1415. }
  1416. else
  1417.     croak("font is not of type GD::Font");
  1418. #line 847 "GD.xs"
  1419. {
  1420. RETVAL = font->nchars;
  1421. }
  1422. #line 1535 "GD.c"
  1423. XSprePUSH; PUSHi((IV)RETVAL);
  1424.     }
  1425.     XSRETURN(1);
  1426. }
  1427. XS(XS_GD__Font_offset)
  1428. {
  1429.     dXSARGS;
  1430.     if (items != 1)
  1431. Perl_croak(aTHX_ "Usage: GD::Font::offset(font)");
  1432.     {
  1433. GD__Font font;
  1434. int RETVAL;
  1435. dXSTARG;
  1436. if (sv_derived_from(ST(0), "GD::Font")) {
  1437.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  1438.     font = INT2PTR(GD__Font,tmp);
  1439. }
  1440. else
  1441.     croak("font is not of type GD::Font");
  1442. #line 858 "GD.xs"
  1443. {
  1444. RETVAL = font->offset;
  1445. }
  1446. #line 1561 "GD.c"
  1447. XSprePUSH; PUSHi((IV)RETVAL);
  1448.     }
  1449.     XSRETURN(1);
  1450. }
  1451. XS(XS_GD__Font_width)
  1452. {
  1453.     dXSARGS;
  1454.     if (items != 1)
  1455. Perl_croak(aTHX_ "Usage: GD::Font::width(font)");
  1456.     {
  1457. GD__Font font;
  1458. int RETVAL;
  1459. dXSTARG;
  1460. if (sv_derived_from(ST(0), "GD::Font")) {
  1461.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  1462.     font = INT2PTR(GD__Font,tmp);
  1463. }
  1464. else
  1465.     croak("font is not of type GD::Font");
  1466. #line 869 "GD.xs"
  1467. {
  1468. RETVAL = font->w;
  1469. }
  1470. #line 1587 "GD.c"
  1471. XSprePUSH; PUSHi((IV)RETVAL);
  1472.     }
  1473.     XSRETURN(1);
  1474. }
  1475. XS(XS_GD__Font_height)
  1476. {
  1477.     dXSARGS;
  1478.     if (items != 1)
  1479. Perl_croak(aTHX_ "Usage: GD::Font::height(font)");
  1480.     {
  1481. GD__Font font;
  1482. int RETVAL;
  1483. dXSTARG;
  1484. if (sv_derived_from(ST(0), "GD::Font")) {
  1485.     IV tmp = SvIV((SV*)SvRV(ST(0)));
  1486.     font = INT2PTR(GD__Font,tmp);
  1487. }
  1488. else
  1489.     croak("font is not of type GD::Font");
  1490. #line 880 "GD.xs"
  1491. {
  1492. RETVAL = font->h;
  1493. }
  1494. #line 1613 "GD.c"
  1495. XSprePUSH; PUSHi((IV)RETVAL);
  1496.     }
  1497.     XSRETURN(1);
  1498. }
  1499. #ifdef __cplusplus
  1500. extern "C"
  1501. #endif
  1502. XS(boot_GD)
  1503. {
  1504.     dXSARGS;
  1505.     char* file = __FILE__;
  1506.     XS_VERSION_BOOTCHECK ;
  1507.         newXS("GD::constant", XS_GD_constant, file);
  1508.         newXSproto("GD::Image::new", XS_GD__Image_new, file, "$;$$");
  1509.         newXSproto("GD::Image::_newFromGif", XS_GD__Image__newFromGif, file, "$$");
  1510.         newXSproto("GD::Image::_newFromXbm", XS_GD__Image__newFromXbm, file, "$$");
  1511.         newXSproto("GD::Image::_newFromGd", XS_GD__Image__newFromGd, file, "$$");
  1512.         newXSproto("GD::Image::DESTROY", XS_GD__Image_DESTROY, file, "$");
  1513.         newXSproto("GD::Image::gif", XS_GD__Image_gif, file, "$");
  1514.         newXSproto("GD::Image::gd", XS_GD__Image_gd, file, "$");
  1515.         newXSproto("GD::Image::transparent", XS_GD__Image_transparent, file, "$;$");
  1516.         newXSproto("GD::Image::getBounds", XS_GD__Image_getBounds, file, "$");
  1517.         newXSproto("GD::Image::rgb", XS_GD__Image_rgb, file, "$$");
  1518.         newXSproto("GD::Image::boundsSafe", XS_GD__Image_boundsSafe, file, "$$$");
  1519.         newXSproto("GD::Image::getPixel", XS_GD__Image_getPixel, file, "$$$");
  1520.         newXSproto("GD::Image::setPixel", XS_GD__Image_setPixel, file, "$$$");
  1521.         newXSproto("GD::Image::line", XS_GD__Image_line, file, "$$$$$$");
  1522.         newXSproto("GD::Image::dashedLine", XS_GD__Image_dashedLine, file, "$$$$$$");
  1523.         newXSproto("GD::Image::openPolygon", XS_GD__Image_openPolygon, file, "$$$");
  1524.         newXSproto("GD::Image::filledPolygon", XS_GD__Image_filledPolygon, file, "$$$");
  1525.         newXSproto("GD::Image::rectangle", XS_GD__Image_rectangle, file, "$$$$$$");
  1526.         newXSproto("GD::Image::filledRectangle", XS_GD__Image_filledRectangle, file, "$$$$$$");
  1527.         newXSproto("GD::Image::arc", XS_GD__Image_arc, file, "$$$$$$$$");
  1528.         newXSproto("GD::Image::fillToBorder", XS_GD__Image_fillToBorder, file, "$$$$$");
  1529.         newXSproto("GD::Image::fill", XS_GD__Image_fill, file, "$$$$");
  1530.         newXSproto("GD::Image::setBrush", XS_GD__Image_setBrush, file, "$$");
  1531.         newXSproto("GD::Image::setTile", XS_GD__Image_setTile, file, "$$");
  1532.         newXSproto("GD::Image::setStyle", XS_GD__Image_setStyle, file, "$;$");
  1533.         newXSproto("GD::Image::colorAllocate", XS_GD__Image_colorAllocate, file, "$$$$");
  1534.         newXSproto("GD::Image::colorClosest", XS_GD__Image_colorClosest, file, "$$$$");
  1535.         newXSproto("GD::Image::colorExact", XS_GD__Image_colorExact, file, "$$$$");
  1536.         newXSproto("GD::Image::colorsTotal", XS_GD__Image_colorsTotal, file, "$");
  1537.         newXSproto("GD::Image::interlaced", XS_GD__Image_interlaced, file, "$;$");
  1538.         newXSproto("GD::Image::colorDeallocate", XS_GD__Image_colorDeallocate, file, "$$");
  1539.         newXSproto("GD::Image::copy", XS_GD__Image_copy, file, "$$$$$$$$");
  1540.         newXSproto("GD::Image::copyResized", XS_GD__Image_copyResized, file, "$$$$$$$$$$");
  1541.         newXSproto("GD::Image::char", XS_GD__Image_char, file, "$$$$$$");
  1542.         newXSproto("GD::Image::charUp", XS_GD__Image_charUp, file, "$$$$$$");
  1543.         newXSproto("GD::Image::string", XS_GD__Image_string, file, "$$$$$$");
  1544.         newXSproto("GD::Image::stringUp", XS_GD__Image_stringUp, file, "$$$$$$");
  1545.         newXSproto("GD::Font::Small", XS_GD__Font_Small, file, "$");
  1546.         newXSproto("GD::Font::Large", XS_GD__Font_Large, file, "$");
  1547.         newXSproto("GD::Font::MediumBold", XS_GD__Font_MediumBold, file, "$");
  1548.         newXSproto("GD::Font::Tiny", XS_GD__Font_Tiny, file, "$");
  1549.         newXSproto("GD::Font::nchars", XS_GD__Font_nchars, file, "$");
  1550.         newXSproto("GD::Font::offset", XS_GD__Font_offset, file, "$");
  1551.         newXSproto("GD::Font::width", XS_GD__Font_width, file, "$");
  1552.         newXSproto("GD::Font::height", XS_GD__Font_height, file, "$");
  1553.     XSRETURN_YES;
  1554. }