sq_fpdf.cpp 32 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178
  1. #include "squirrel.h"
  2. #include "fpdf.h"
  3. #include <string.h>
  4. #include <stdio.h>
  5. class Sq_Fpdf : public FPDF {
  6. protected:
  7. HSQUIRRELVM sqvm;
  8. HSQOBJECT self_weakref;
  9. public:
  10. Sq_Fpdf(HSQUIRRELVM v, HSQOBJECT &self):FPDF(){
  11. sqvm = v;
  12. self_weakref = self;
  13. }
  14. void callVirtual(const SQChar *func_name){
  15. //sq_reservestack(sqvm, 20);
  16. SQInteger top = sq_gettop(sqvm);
  17. sq_pushobject(sqvm, self_weakref);
  18. sq_pushstring(sqvm, func_name, -1);
  19. sq_get(sqvm, -2);
  20. if(sq_gettype(sqvm, -1) == OT_CLOSURE){
  21. sq_push(sqvm, -2); //this
  22. sq_call(sqvm, 1, SQFalse, SQTrue);
  23. }
  24. sq_settop(sqvm, top);
  25. }
  26. void Header (){
  27. callVirtual(_SC("Header"));
  28. };
  29. void Footer () {
  30. callVirtual(_SC("Footer"));
  31. };
  32. bool AcceptPageBreak (){
  33. callVirtual(_SC("AcceptPageBreak"));
  34. return FPDF::AcceptPageBreak();
  35. };
  36. };
  37. static SQRESULT sq_glue_releasehook(SQUserPointer p, SQInteger size, HSQUIRRELVM v)
  38. {
  39. Sq_Fpdf *self = ((Sq_Fpdf *)p);
  40. delete self;
  41. return 1;
  42. }
  43. static SQRESULT sq_glue_constructor(HSQUIRRELVM v)
  44. {
  45. //SQ_FUNC_VARS_NO_TOP(v);
  46. HSQOBJECT self;
  47. sq_resetobject(&self);
  48. sq_getstackobj(v, 1, &self);
  49. Sq_Fpdf *cptr = new Sq_Fpdf(v, self);
  50. sq_setinstanceup(v, 1, cptr);
  51. sq_setreleasehook(v,1, sq_glue_releasehook);
  52. return 1;
  53. }
  54. SQ_OPT_STRING_STRLEN();
  55. static const SQChar *SQ_FPDF_TAG = "Sq_Fpdf";
  56. #define GET_SQ_FPDF() SQ_GET_INSTANCE(v, 1, Sq_Fpdf, SQ_FPDF_TAG)
  57. /* bool AcceptPageBreak( ) */
  58. static SQRESULT sq_glue_AcceptPageBreak(HSQUIRRELVM v){
  59. SQ_FUNC_VARS_NO_TOP(v);
  60. GET_SQ_FPDF();
  61. sq_pushbool(v, self->FPDF::AcceptPageBreak());
  62. return 1;
  63. }
  64. /* void AddFont( char const * afamily , char const * astyle = 0 , char const * afile = 0 ) */
  65. static SQRESULT sq_glue_AddFont(HSQUIRRELVM v){
  66. SQ_FUNC_VARS(v);
  67. GET_SQ_FPDF();
  68. SQ_GET_STRING(v, 2, afamily);
  69. SQ_OPT_STRING(v, 3, astyle, 0);
  70. SQ_OPT_STRING(v, 4, afile, 0);
  71. self->AddFont(afamily, astyle, afile);
  72. return 0;
  73. }
  74. /* int AddLink( ) */
  75. static SQRESULT sq_glue_AddLink(HSQUIRRELVM v){
  76. SQ_FUNC_VARS_NO_TOP(v);
  77. GET_SQ_FPDF();
  78. sq_pushinteger(v, self->AddLink());
  79. return 1;
  80. }
  81. /* void AddPage( FPDF::e_orientation orientation = FPDF::e_orientation_none , FPDF::st_pagesize * psize = 0 ) */
  82. static SQRESULT sq_glue_AddPage(HSQUIRRELVM v){
  83. SQ_FUNC_VARS(v);
  84. GET_SQ_FPDF();
  85. SQ_OPT_INTEGER(v, 2, orientation, FPDF::e_orientation_none);
  86. SQ_OPT_STRING(v, 3, psize, 0);
  87. self->AddPage((FPDF::e_orientation)orientation, 0);
  88. return 0;
  89. }
  90. /* void AliasNbPages( char const * alias = "{nb}" ) */
  91. static SQRESULT sq_glue_AliasNbPages(HSQUIRRELVM v){
  92. SQ_FUNC_VARS(v);
  93. GET_SQ_FPDF();
  94. SQ_OPT_STRING(v, 2, alias, "{nb}");
  95. self->AliasNbPages(alias);
  96. return 0;
  97. }
  98. /* int CalcLines( pdf_float_t w , char const * txt ) */
  99. static SQRESULT sq_glue_CalcLines(HSQUIRRELVM v){
  100. SQ_FUNC_VARS_NO_TOP(v);
  101. GET_SQ_FPDF();
  102. SQ_GET_FLOAT(v, 2, w);
  103. SQ_GET_STRING(v, 3, txt);
  104. sq_pushinteger(v, self->CalcLines(w, txt));
  105. return 1;
  106. }
  107. /* void Cell( pdf_float_t w , pdf_float_t h = 0.0f , char const * txt = 0 , char const * border = 0 , int ln = 0 , char align = ' ' , bool fill = false , int link = 0 ) */
  108. static SQRESULT sq_glue_Cell(HSQUIRRELVM v){
  109. SQ_FUNC_VARS(v);
  110. GET_SQ_FPDF();
  111. SQ_GET_FLOAT(v, 2, w);
  112. SQ_OPT_FLOAT(v, 3, h, 0.0f);
  113. SQ_OPT_STRING(v, 4, txt, 0);
  114. SQ_OPT_STRING(v, 5, border, 0);
  115. SQ_OPT_INTEGER(v, 6, ln, 0);
  116. SQ_OPT_INTEGER(v, 7, align, ' ');
  117. SQ_OPT_BOOL(v, 8, fill, false);
  118. SQ_OPT_INTEGER(v, 9, link, 0);
  119. self->Cell(w, h, txt, border, ln, align, fill ? 1 : 0, link);
  120. return 0;
  121. }
  122. /* void CellFit( pdf_float_t w , pdf_float_t h = 0 , char const * txt = 0 , char const * border = 0 , int ln = 0 , char align = ' ' , bool fill = false , int link = 0 , bool scale = false , bool force = true ) */
  123. static SQRESULT sq_glue_CellFit(HSQUIRRELVM v){
  124. SQ_FUNC_VARS(v);
  125. GET_SQ_FPDF();
  126. SQ_GET_FLOAT(v, 2, w);
  127. SQ_OPT_FLOAT(v, 3, h, 0);
  128. SQ_OPT_STRING(v, 4, txt, 0);
  129. SQ_OPT_STRING(v, 5, border, 0);
  130. SQ_OPT_INTEGER(v, 6, ln, 0);
  131. SQ_OPT_INTEGER(v, 7, align, ' ');
  132. SQ_OPT_BOOL(v, 8, fill, false);
  133. SQ_OPT_INTEGER(v, 9, link, 0);
  134. SQ_OPT_INTEGER(v, 10, scale, false);
  135. SQ_OPT_INTEGER(v, 11, force, true);
  136. self->CellFit(w, h, txt, border, ln, align, fill ? 1 : 0, link, scale, force);
  137. return 0;
  138. }
  139. /* void CellFitScale( pdf_float_t w , pdf_float_t h = 0 , char const * txt = 0 , char const * border = 0 , int ln = 0 , char align = ' ' , bool fill = false , int link = 0 ) */
  140. static SQRESULT sq_glue_CellFitScale(HSQUIRRELVM v){
  141. SQ_FUNC_VARS(v);
  142. GET_SQ_FPDF();
  143. SQ_GET_FLOAT(v, 2, w);
  144. SQ_OPT_FLOAT(v, 3, h, 0);
  145. SQ_OPT_STRING(v, 4, txt, 0);
  146. SQ_OPT_STRING(v, 5, border, 0);
  147. SQ_OPT_INTEGER(v, 6, ln, 0);
  148. SQ_OPT_INTEGER(v, 7, align, ' ');
  149. SQ_OPT_BOOL(v, 8, fill, false);
  150. SQ_OPT_INTEGER(v, 9, link, 0);
  151. self->CellFitScale(w, h, txt, border, ln, align, fill ? 1 : 0, link);
  152. return 0;
  153. }
  154. /* void CellFitScaleForce( pdf_float_t w , pdf_float_t h = 0 , char const * txt = 0 , char const * border = 0 , int ln = 0 , char align = ' ' , bool fill = false , int link = 0 ) */
  155. static SQRESULT sq_glue_CellFitScaleForce(HSQUIRRELVM v){
  156. SQ_FUNC_VARS(v);
  157. GET_SQ_FPDF();
  158. SQ_GET_FLOAT(v, 2, w);
  159. SQ_OPT_FLOAT(v, 3, h, 0);
  160. SQ_OPT_STRING(v, 4, txt, 0);
  161. SQ_OPT_STRING(v, 5, border, 0);
  162. SQ_OPT_INTEGER(v, 6, ln, 0);
  163. SQ_OPT_INTEGER(v, 7, align, ' ');
  164. SQ_OPT_BOOL(v, 8, fill, false);
  165. SQ_OPT_INTEGER(v, 9, link, 0);
  166. self->CellFitScaleForce(w, h, txt, border, ln, align, fill ? 1 : 0, link);
  167. return 0;
  168. }
  169. /* void CellFitSpace( pdf_float_t w , pdf_float_t h = 0 , char const * txt = 0 , char const * border = 0 , int ln = 0 , char align = ' ' , bool fill = false , int link = 0 ) */
  170. static SQRESULT sq_glue_CellFitSpace(HSQUIRRELVM v){
  171. SQ_FUNC_VARS(v);
  172. GET_SQ_FPDF();
  173. SQ_GET_FLOAT(v, 2, w);
  174. SQ_OPT_FLOAT(v, 3, h, 0);
  175. SQ_OPT_STRING(v, 4, txt, 0);
  176. SQ_OPT_STRING(v, 5, border, 0);
  177. SQ_OPT_INTEGER(v, 6, ln, 0);
  178. SQ_OPT_INTEGER(v, 7, align, ' ');
  179. SQ_OPT_BOOL(v, 8, fill, false);
  180. SQ_OPT_INTEGER(v, 9, link, 0);
  181. self->CellFitSpace(w, h, txt, border, ln, align, fill ? 1 : 0, link);
  182. return 0;
  183. }
  184. /* void CellFitSpaceForce( pdf_float_t w , pdf_float_t h = 0 , char const * txt = 0 , char const * border = 0 , int ln = 0 , char align = ' ' , bool fill = false , int link = 0 ) */
  185. static SQRESULT sq_glue_CellFitSpaceForce(HSQUIRRELVM v){
  186. SQ_FUNC_VARS(v);
  187. GET_SQ_FPDF();
  188. SQ_GET_FLOAT(v, 2, w);
  189. SQ_OPT_FLOAT(v, 3, h, 0);
  190. SQ_OPT_STRING(v, 4, txt, 0);
  191. SQ_OPT_STRING(v, 5, border, 0);
  192. SQ_OPT_INTEGER(v, 6, ln, 0);
  193. SQ_OPT_INTEGER(v, 7, align, ' ');
  194. SQ_OPT_BOOL(v, 8, fill, false);
  195. SQ_OPT_INTEGER(v, 9, link, 0);
  196. self->CellFitSpaceForce(w, h, txt, border, ln, align, fill ? 1 : 0, link);
  197. return 0;
  198. }
  199. /* void CheckPageBreak( pdf_float_t height ) */
  200. static SQRESULT sq_glue_CheckPageBreak(HSQUIRRELVM v){
  201. SQ_FUNC_VARS_NO_TOP(v);
  202. GET_SQ_FPDF();
  203. SQ_GET_FLOAT(v, 2, height);
  204. self->CheckPageBreak(height);
  205. return 0;
  206. }
  207. /* void Circle( pdf_float_t x , pdf_float_t y , pdf_float_t r , char const * style = "D" ) */
  208. static SQRESULT sq_glue_Circle(HSQUIRRELVM v){
  209. SQ_FUNC_VARS(v);
  210. GET_SQ_FPDF();
  211. SQ_GET_FLOAT(v, 2, x);
  212. SQ_GET_FLOAT(v, 3, y);
  213. SQ_GET_FLOAT(v, 4, r);
  214. SQ_OPT_STRING(v, 5, style, "D");
  215. self->Circle(x, y, r, style);
  216. return 0;
  217. }
  218. /* void ClippedCell( pdf_float_t w , pdf_float_t h = 0 , char const * txt = 0 , char const * border = 0 , int ln = 0 , char align = ' ' , bool fill = false , int link = 0 ) */
  219. static SQRESULT sq_glue_ClippedCell(HSQUIRRELVM v){
  220. SQ_FUNC_VARS(v);
  221. GET_SQ_FPDF();
  222. SQ_GET_FLOAT(v, 2, w);
  223. SQ_OPT_FLOAT(v, 3, h, 0);
  224. SQ_OPT_STRING(v, 4, txt, 0);
  225. SQ_OPT_STRING(v, 5, border, 0);
  226. SQ_OPT_INTEGER(v, 6, ln, 0);
  227. SQ_OPT_INTEGER(v, 7, align, ' ');
  228. SQ_OPT_BOOL(v, 8, fill, false);
  229. SQ_OPT_INTEGER(v, 9, link, 0);
  230. self->ClippedCell(w, h, txt, border, ln, align, fill ? 1 : 0, link);
  231. return 0;
  232. }
  233. /* void ClippingRect( pdf_float_t x , pdf_float_t y , pdf_float_t w , pdf_float_t h , bool outline = false ) */
  234. static SQRESULT sq_glue_ClippingRect(HSQUIRRELVM v){
  235. SQ_FUNC_VARS(v);
  236. GET_SQ_FPDF();
  237. SQ_GET_FLOAT(v, 2, x);
  238. SQ_GET_FLOAT(v, 3, y);
  239. SQ_GET_FLOAT(v, 4, w);
  240. SQ_GET_FLOAT(v, 5, h);
  241. SQ_OPT_INTEGER(v, 6, outline, false);
  242. self->ClippingRect(x, y, w, h, outline);
  243. return 0;
  244. }
  245. /* void ClippingText( pdf_float_t x , pdf_float_t y , char const * txt , bool outline = false ) */
  246. static SQRESULT sq_glue_ClippingText(HSQUIRRELVM v){
  247. SQ_FUNC_VARS(v);
  248. GET_SQ_FPDF();
  249. SQ_GET_FLOAT(v, 2, x);
  250. SQ_GET_FLOAT(v, 3, y);
  251. SQ_GET_STRING(v, 4, txt);
  252. SQ_OPT_INTEGER(v, 5, outline, false);
  253. self->ClippingText(x, y, txt, outline);
  254. return 0;
  255. }
  256. /* void Close( ) */
  257. static SQRESULT sq_glue_Close(HSQUIRRELVM v){
  258. SQ_FUNC_VARS_NO_TOP(v);
  259. GET_SQ_FPDF();
  260. self->Close();
  261. return 0;
  262. }
  263. /* void Ellipse( pdf_float_t x , pdf_float_t y , pdf_float_t rx , pdf_float_t ry , char const * style = "D" ) */
  264. static SQRESULT sq_glue_Ellipse(HSQUIRRELVM v){
  265. SQ_FUNC_VARS(v);
  266. GET_SQ_FPDF();
  267. SQ_GET_FLOAT(v, 2, x);
  268. SQ_GET_FLOAT(v, 3, y);
  269. SQ_GET_FLOAT(v, 4, rx);
  270. SQ_GET_FLOAT(v, 5, ry);
  271. SQ_OPT_STRING(v, 6, style, "D");
  272. self->Ellipse(x, y, rx, ry, style);
  273. return 0;
  274. }
  275. /* void Error( char const * msg ) */
  276. static SQRESULT sq_glue_Error(HSQUIRRELVM v){
  277. SQ_FUNC_VARS_NO_TOP(v);
  278. GET_SQ_FPDF();
  279. SQ_GET_STRING(v, 2, msg);
  280. self->Error(msg);
  281. return 0;
  282. }
  283. /* void Footer( ) */
  284. static SQRESULT sq_glue_Footer(HSQUIRRELVM v){
  285. SQ_FUNC_VARS_NO_TOP(v);
  286. GET_SQ_FPDF();
  287. self->FPDF::Footer();
  288. return 0;
  289. }
  290. /* const & GetAliasNbPages( ) */
  291. static SQRESULT sq_glue_GetAliasNbPages(HSQUIRRELVM v){
  292. SQ_FUNC_VARS_NO_TOP(v);
  293. GET_SQ_FPDF();
  294. std::string str = self->GetAliasNbPages();
  295. sq_pushstring(v, str.c_str(), str.size());
  296. return 1;
  297. }
  298. static void push_pdf_color(HSQUIRRELVM v, FPDF::pdf_color_t &color){
  299. if(sq_gettop(v) >= 2 && sq_gettype(v, 2) == OT_TABLE){
  300. sq_settop(v, 2);
  301. }
  302. else sq_newtable(v);
  303. sq_pushliteral(v, _SC("r"));
  304. sq_pushinteger(v, color.r);
  305. sq_rawset(v, -3);
  306. sq_pushliteral(v, _SC("g"));
  307. sq_pushinteger(v, color.g);
  308. sq_rawset(v, -3);
  309. sq_pushliteral(v, _SC("b"));
  310. sq_pushinteger(v, color.b);
  311. sq_rawset(v, -3);
  312. sq_pushliteral(v, _SC("t"));
  313. sq_pushinteger(v, color.t);
  314. sq_rawset(v, -3);
  315. }
  316. /* void GetDrawColor( FPDF::pdf_color_t & color ) */
  317. static SQRESULT sq_glue_GetDrawColor(HSQUIRRELVM v){
  318. SQ_FUNC_VARS_NO_TOP(v);
  319. GET_SQ_FPDF();
  320. FPDF::pdf_color_t color;
  321. self->GetDrawColor(color);
  322. push_pdf_color(v, color);
  323. return 1;
  324. }
  325. /* void GetFillColor( FPDF::pdf_color_t & color ) */
  326. static SQRESULT sq_glue_GetFillColor(HSQUIRRELVM v){
  327. SQ_FUNC_VARS_NO_TOP(v);
  328. GET_SQ_FPDF();
  329. FPDF::pdf_color_t color;
  330. self->GetFillColor(color);
  331. push_pdf_color(v, color);
  332. return 1;
  333. }
  334. /* void GetFontSettings( font_settings_st & fs ) */
  335. static SQRESULT sq_glue_GetFontSettings(HSQUIRRELVM v){
  336. SQ_FUNC_VARS(v);
  337. GET_SQ_FPDF();
  338. FPDF::font_settings_st fs;
  339. self->GetFontSettings(fs);
  340. if(_top_ >= 2 && sq_gettype(v, 2) == OT_TABLE){
  341. sq_settop(v, 2);
  342. }
  343. else sq_newtable(v);
  344. sq_pushliteral(v, _SC("family"));
  345. sq_pushstring(v, fs.family.c_str(), fs.family.size());
  346. sq_rawset(v, -3);
  347. sq_pushliteral(v, _SC("style"));
  348. sq_pushstring(v, fs.style.c_str(), fs.style.size());
  349. sq_rawset(v, -3);
  350. sq_pushliteral(v, _SC("size"));
  351. sq_pushfloat(v, fs.size);
  352. sq_rawset(v, -3);
  353. return 1;
  354. }
  355. /* pdf_float_t GetFontSize( ) */
  356. static SQRESULT sq_glue_GetFontSize(HSQUIRRELVM v){
  357. SQ_FUNC_VARS_NO_TOP(v);
  358. GET_SQ_FPDF();
  359. sq_pushfloat(v, self->GetFontSize());
  360. return 1;
  361. }
  362. /* pdf_float_t GetH( ) */
  363. static SQRESULT sq_glue_GetH(HSQUIRRELVM v){
  364. SQ_FUNC_VARS_NO_TOP(v);
  365. GET_SQ_FPDF();
  366. sq_pushfloat(v, self->GetH());
  367. return 1;
  368. }
  369. /* pdf_float_t GetLeftMargin( ) */
  370. static SQRESULT sq_glue_GetLeftMargin(HSQUIRRELVM v){
  371. SQ_FUNC_VARS_NO_TOP(v);
  372. GET_SQ_FPDF();
  373. sq_pushfloat(v, self->GetLeftMargin());
  374. return 1;
  375. }
  376. /* pdf_float_t GetRightMargin( ) */
  377. static SQRESULT sq_glue_GetRightMargin(HSQUIRRELVM v){
  378. SQ_FUNC_VARS_NO_TOP(v);
  379. GET_SQ_FPDF();
  380. sq_pushfloat(v, self->GetRightMargin());
  381. return 1;
  382. }
  383. /* pdf_float_t GetStringWidth( char const * s ) */
  384. static SQRESULT sq_glue_GetStringWidth(HSQUIRRELVM v){
  385. SQ_FUNC_VARS_NO_TOP(v);
  386. GET_SQ_FPDF();
  387. SQ_GET_STRING(v, 2, s);
  388. sq_pushfloat(v, self->GetStringWidth(s));
  389. return 1;
  390. }
  391. /* void GetTextColor( FPDF::pdf_color_t & color ) */
  392. static SQRESULT sq_glue_GetTextColor(HSQUIRRELVM v){
  393. SQ_FUNC_VARS_NO_TOP(v);
  394. GET_SQ_FPDF();
  395. FPDF::pdf_color_t color;
  396. self->GetTextColor(color);
  397. push_pdf_color(v, color);
  398. return 1;
  399. }
  400. /* pdf_float_t GetW( ) */
  401. static SQRESULT sq_glue_GetW(HSQUIRRELVM v){
  402. SQ_FUNC_VARS_NO_TOP(v);
  403. GET_SQ_FPDF();
  404. sq_pushfloat(v, self->GetW());
  405. return 1;
  406. }
  407. /* pdf_float_t GetX( ) */
  408. static SQRESULT sq_glue_GetX(HSQUIRRELVM v){
  409. SQ_FUNC_VARS_NO_TOP(v);
  410. GET_SQ_FPDF();
  411. sq_pushfloat(v, self->GetX());
  412. return 1;
  413. }
  414. /* pdf_float_t GetY( ) */
  415. static SQRESULT sq_glue_GetY(HSQUIRRELVM v){
  416. SQ_FUNC_VARS_NO_TOP(v);
  417. GET_SQ_FPDF();
  418. sq_pushfloat(v, self->GetY());
  419. return 1;
  420. }
  421. /* void Header( ) */
  422. static SQRESULT sq_glue_Header(HSQUIRRELVM v){
  423. SQ_FUNC_VARS_NO_TOP(v);
  424. GET_SQ_FPDF();
  425. self->FPDF::Header();
  426. return 0;
  427. }
  428. /* void Image( char const * file , pdf_float_t x = -1 , pdf_float_t y = -1 , pdf_float_t w = 0.0 , pdf_float_t h = 0.0 , char const * atype = 0 , int link = 0 ) */
  429. static SQRESULT sq_glue_Image(HSQUIRRELVM v){
  430. SQ_FUNC_VARS(v);
  431. GET_SQ_FPDF();
  432. SQ_GET_STRING(v, 2, file);
  433. SQ_OPT_FLOAT(v, 3, x, -1);
  434. SQ_OPT_FLOAT(v, 4, y, -1);
  435. SQ_OPT_FLOAT(v, 5, w, 0.0);
  436. SQ_OPT_FLOAT(v, 6, h, 0.0);
  437. SQ_OPT_STRING(v, 7, atype, 0);
  438. SQ_OPT_INTEGER(v, 8, link, 0);
  439. self->Image(file, x, y, w, h, atype, link);
  440. return 0;
  441. }
  442. /* void IncludeJS( char const * script ) */
  443. static SQRESULT sq_glue_IncludeJS(HSQUIRRELVM v){
  444. SQ_FUNC_VARS_NO_TOP(v);
  445. GET_SQ_FPDF();
  446. SQ_GET_STRING(v, 2, script);
  447. self->IncludeJS(script);
  448. return 0;
  449. }
  450. /* void Line( pdf_float_t x1 , pdf_float_t y1 , pdf_float_t x2 , pdf_float_t y2 ) */
  451. static SQRESULT sq_glue_Line(HSQUIRRELVM v){
  452. SQ_FUNC_VARS_NO_TOP(v);
  453. GET_SQ_FPDF();
  454. SQ_GET_FLOAT(v, 2, x1);
  455. SQ_GET_FLOAT(v, 3, y1);
  456. SQ_GET_FLOAT(v, 4, x2);
  457. SQ_GET_FLOAT(v, 5, y2);
  458. self->Line(x1, y1, x2, y2);
  459. return 0;
  460. }
  461. /* void Link( pdf_float_t x , pdf_float_t y , pdf_float_t w , pdf_float_t h , int link ) */
  462. static SQRESULT sq_glue_Link(HSQUIRRELVM v){
  463. SQ_FUNC_VARS_NO_TOP(v);
  464. GET_SQ_FPDF();
  465. SQ_GET_FLOAT(v, 2, x);
  466. SQ_GET_FLOAT(v, 3, y);
  467. SQ_GET_FLOAT(v, 4, w);
  468. SQ_GET_FLOAT(v, 5, h);
  469. SQ_GET_INTEGER(v, 6, link);
  470. self->Link(x, y, w, h, link);
  471. return 0;
  472. }
  473. /* void Ln( pdf_float_t h = 0.0 ) */
  474. static SQRESULT sq_glue_Ln(HSQUIRRELVM v){
  475. SQ_FUNC_VARS(v);
  476. GET_SQ_FPDF();
  477. SQ_OPT_FLOAT(v, 2, h, 0.0);
  478. self->Ln(h);
  479. return 0;
  480. }
  481. /* void MultiCell( pdf_float_t w , pdf_float_t h , char const * txt , char const * border = 0 , char align = 'J' , bool fill = false ) */
  482. static SQRESULT sq_glue_MultiCell(HSQUIRRELVM v){
  483. SQ_FUNC_VARS(v);
  484. GET_SQ_FPDF();
  485. SQ_GET_FLOAT(v, 2, w);
  486. SQ_GET_FLOAT(v, 3, h);
  487. SQ_GET_STRING(v, 4, txt);
  488. SQ_OPT_STRING(v, 5, border, 0);
  489. SQ_OPT_INTEGER(v, 6, align, 'J');
  490. SQ_OPT_BOOL(v, 7, fill, false);
  491. self->MultiCell(w, h, txt, border, align, fill ? 1 : 0);
  492. return 0;
  493. }
  494. /* void MultiCellBlt( pdf_float_t w , pdf_float_t h , char const * blt , char const * txt , char const * border = 0 , char align = 'J' , bool fill = false ) */
  495. static SQRESULT sq_glue_MultiCellBlt(HSQUIRRELVM v){
  496. SQ_FUNC_VARS(v);
  497. GET_SQ_FPDF();
  498. SQ_GET_FLOAT(v, 2, w);
  499. SQ_GET_FLOAT(v, 3, h);
  500. SQ_GET_STRING(v, 4, blt);
  501. SQ_GET_STRING(v, 5, txt);
  502. SQ_OPT_STRING(v, 6, border, 0);
  503. SQ_OPT_INTEGER(v, 7, align, 'J');
  504. SQ_OPT_BOOL(v, 8, fill, false);
  505. self->MultiCellBlt(w, h, blt, txt, border, align, fill ? 1 : 0);
  506. return 0;
  507. }
  508. /* void Open( ) */
  509. static SQRESULT sq_glue_Open(HSQUIRRELVM v){
  510. SQ_FUNC_VARS_NO_TOP(v);
  511. GET_SQ_FPDF();
  512. self->Open();
  513. return 0;
  514. }
  515. /* string Output( char const * name = 0 , char dest = ' ' ) */
  516. static SQRESULT sq_glue_Output(HSQUIRRELVM v){
  517. SQ_FUNC_VARS(v);
  518. GET_SQ_FPDF();
  519. SQ_OPT_STRING(v, 2, name, 0);
  520. SQ_OPT_INTEGER(v, 3, dest, ' ');
  521. std::string str = self->Output(name, dest);
  522. sq_pushstring(v, str.c_str(), str.size());
  523. return 1;
  524. }
  525. /* int PageNo( ) */
  526. static SQRESULT sq_glue_PageNo(HSQUIRRELVM v){
  527. SQ_FUNC_VARS_NO_TOP(v);
  528. GET_SQ_FPDF();
  529. sq_pushinteger(v, self->PageNo());
  530. return 1;
  531. }
  532. /* void Rect( pdf_float_t x , pdf_float_t y , pdf_float_t w , pdf_float_t h , char const * style = 0 ) */
  533. static SQRESULT sq_glue_Rect(HSQUIRRELVM v){
  534. SQ_FUNC_VARS(v);
  535. GET_SQ_FPDF();
  536. SQ_GET_FLOAT(v, 2, x);
  537. SQ_GET_FLOAT(v, 3, y);
  538. SQ_GET_FLOAT(v, 4, w);
  539. SQ_GET_FLOAT(v, 5, h);
  540. SQ_OPT_STRING(v, 6, style, 0);
  541. self->Rect(x, y, w, h, style);
  542. return 0;
  543. }
  544. /* void Rotate( pdf_float_t angle , pdf_float_t x = -1 , pdf_float_t y = -1 ) */
  545. static SQRESULT sq_glue_Rotate(HSQUIRRELVM v){
  546. SQ_FUNC_VARS(v);
  547. GET_SQ_FPDF();
  548. SQ_GET_FLOAT(v, 2, angle);
  549. SQ_OPT_FLOAT(v, 3, x, -1);
  550. SQ_OPT_FLOAT(v, 4, y, -1);
  551. self->Rotate(angle, x, y);
  552. return 0;
  553. }
  554. /* void RotatedText( pdf_float_t x , pdf_float_t y , char const * txt , pdf_float_t angle ) */
  555. static SQRESULT sq_glue_RotatedText(HSQUIRRELVM v){
  556. SQ_FUNC_VARS_NO_TOP(v);
  557. GET_SQ_FPDF();
  558. SQ_GET_FLOAT(v, 2, x);
  559. SQ_GET_FLOAT(v, 3, y);
  560. SQ_GET_STRING(v, 4, txt);
  561. SQ_GET_FLOAT(v, 5, angle);
  562. self->RotatedText(x, y, txt, angle);
  563. return 0;
  564. }
  565. /* void RoundedRect( pdf_float_t x , pdf_float_t y , pdf_float_t w , pdf_float_t h , pdf_float_t r , char const * style = "" ) */
  566. static SQRESULT sq_glue_RoundedRect(HSQUIRRELVM v){
  567. SQ_FUNC_VARS(v);
  568. GET_SQ_FPDF();
  569. SQ_GET_FLOAT(v, 2, x);
  570. SQ_GET_FLOAT(v, 3, y);
  571. SQ_GET_FLOAT(v, 4, w);
  572. SQ_GET_FLOAT(v, 5, h);
  573. SQ_GET_FLOAT(v, 6, r);
  574. SQ_OPT_STRING(v, 7, style, "");
  575. self->RoundedRect(x, y, w, h, r, style);
  576. return 0;
  577. }
  578. /* void SetAlpha( pdf_float_t alpha , char const * bm = 0 ) */
  579. static SQRESULT sq_glue_SetAlpha(HSQUIRRELVM v){
  580. SQ_FUNC_VARS(v);
  581. GET_SQ_FPDF();
  582. SQ_GET_FLOAT(v, 2, alpha);
  583. SQ_OPT_STRING(v, 3, bm, 0);
  584. self->SetAlpha(alpha, bm);
  585. return 0;
  586. }
  587. /* void SetAuthor( char const * author ) */
  588. static SQRESULT sq_glue_SetAuthor(HSQUIRRELVM v){
  589. SQ_FUNC_VARS_NO_TOP(v);
  590. GET_SQ_FPDF();
  591. SQ_GET_STRING(v, 2, author);
  592. self->SetAuthor(author);
  593. return 0;
  594. }
  595. /* void SetAutoPageBreak( bool b , pdf_float_t margin = 0.0f ) */
  596. static SQRESULT sq_glue_SetAutoPageBreak(HSQUIRRELVM v){
  597. SQ_FUNC_VARS(v);
  598. GET_SQ_FPDF();
  599. SQ_GET_INTEGER(v, 2, b);
  600. SQ_OPT_FLOAT(v, 3, margin, 0.0f);
  601. self->SetAutoPageBreak(b, margin);
  602. return 0;
  603. }
  604. /* void SetCompression( bool compress ) */
  605. static SQRESULT sq_glue_SetCompression(HSQUIRRELVM v){
  606. SQ_FUNC_VARS_NO_TOP(v);
  607. GET_SQ_FPDF();
  608. SQ_GET_BOOL(v, 2, compress);
  609. self->SetCompression(compress);
  610. return 0;
  611. }
  612. /* void SetCreator( char const * creator ) */
  613. static SQRESULT sq_glue_SetCreator(HSQUIRRELVM v){
  614. SQ_FUNC_VARS_NO_TOP(v);
  615. GET_SQ_FPDF();
  616. SQ_GET_STRING(v, 2, creator);
  617. self->SetCreator(creator);
  618. return 0;
  619. }
  620. /* void SetDash( pdf_float_t black = -1 , pdf_float_t white = -1 ) */
  621. static SQRESULT sq_glue_SetDash(HSQUIRRELVM v){
  622. SQ_FUNC_VARS(v);
  623. GET_SQ_FPDF();
  624. SQ_OPT_FLOAT(v, 2, black, -1);
  625. SQ_OPT_FLOAT(v, 3, white, -1);
  626. self->SetDash(black, white);
  627. return 0;
  628. }
  629. /* void SetDisplayMode( FPDF::e_zoom_mode zoom , FPDF::e_layout_mode layout = FPDF::e_layout_default ) */
  630. static SQRESULT sq_glue_SetDisplayMode(HSQUIRRELVM v){
  631. SQ_FUNC_VARS(v);
  632. GET_SQ_FPDF();
  633. SQ_GET_INTEGER(v, 2, zoom);
  634. SQ_OPT_INTEGER(v, 3, layout, FPDF::e_layout_default);
  635. //self->SetDisplayMode(zoom, layout);
  636. return 0;
  637. }
  638. /* void SetDoubleSided( pdf_float_t inner = 7 , pdf_float_t outer = 13 ) */
  639. static SQRESULT sq_glue_SetDoubleSided(HSQUIRRELVM v){
  640. SQ_FUNC_VARS(v);
  641. GET_SQ_FPDF();
  642. SQ_OPT_FLOAT(v, 2, inner, 7);
  643. SQ_OPT_FLOAT(v, 3, outer, 13);
  644. self->SetDoubleSided(inner, outer);
  645. return 0;
  646. }
  647. static SQRESULT get_pdfcolor_from_table(HSQUIRRELVM v, FPDF::pdf_color_t &color){
  648. if(sq_gettop(v) == 2){
  649. if(sq_gettype(v, 2) == OT_TABLE){
  650. SQInteger icolor;
  651. sq_pushliteral(v, _SC("r"));
  652. if(sq_rawget(v, 2) != SQ_OK) return SQ_ERROR;
  653. sq_getinteger(v, -1, &icolor);
  654. sq_poptop(v);
  655. color.r = icolor;
  656. sq_pushliteral(v, _SC("g"));
  657. if(sq_rawget(v, 2) != SQ_OK) return SQ_ERROR;
  658. sq_getinteger(v, -1, &icolor);
  659. sq_poptop(v);
  660. color.g = icolor;
  661. sq_pushliteral(v, _SC("b"));
  662. if(sq_rawget(v, 2) != SQ_OK) return SQ_ERROR;
  663. sq_getinteger(v, -1, &icolor);
  664. sq_poptop(v);
  665. color.b = icolor;
  666. sq_pushliteral(v, _SC("t"));
  667. if(sq_rawget(v, 2) != SQ_OK) return SQ_ERROR;
  668. sq_getinteger(v, -1, &icolor);
  669. sq_poptop(v);
  670. color.t = icolor;
  671. return SQ_OK;
  672. }
  673. }
  674. return SQ_ERROR;
  675. }
  676. /* void SetDrawColor( unsigned char r , unsigned char g , unsigned char b ) */
  677. static SQRESULT sq_glue_SetDrawColor(HSQUIRRELVM v){
  678. SQ_FUNC_VARS(v);
  679. GET_SQ_FPDF();
  680. if(_top_ == 2){
  681. FPDF::pdf_color_t color;
  682. if(get_pdfcolor_from_table(v, color) == SQ_OK){
  683. self->SetDrawColor(color);
  684. }
  685. else if(sq_gettype(v, 2) == OT_INTEGER){
  686. SQInteger icolor;
  687. sq_getinteger(v, 2, &icolor);
  688. self->SetDrawColor(icolor);
  689. }
  690. else return SQ_ERROR;
  691. }
  692. else
  693. {
  694. SQ_GET_INTEGER(v, 2, r);
  695. SQ_GET_INTEGER(v, 3, g);
  696. SQ_GET_INTEGER(v, 4, b);
  697. self->SetDrawColor(r, g, b);
  698. }
  699. return 0;
  700. }
  701. /* void SetFillColor( unsigned char r , unsigned char g , unsigned char b ) */
  702. static SQRESULT sq_glue_SetFillColor(HSQUIRRELVM v){
  703. SQ_FUNC_VARS(v);
  704. GET_SQ_FPDF();
  705. if(_top_ == 2){
  706. FPDF::pdf_color_t color;
  707. if(get_pdfcolor_from_table(v, color) == SQ_OK){
  708. self->SetFillColor(color);
  709. }
  710. else if(sq_gettype(v, 2) == OT_INTEGER){
  711. SQInteger icolor;
  712. sq_getinteger(v, 2, &icolor);
  713. self->SetFillColor(icolor);
  714. }
  715. else return SQ_ERROR;
  716. }
  717. else
  718. {
  719. SQ_GET_INTEGER(v, 2, r);
  720. SQ_GET_INTEGER(v, 3, g);
  721. SQ_GET_INTEGER(v, 4, b);
  722. self->SetFillColor(r, g, b);
  723. }
  724. return 0;
  725. }
  726. /* void SetFont( char const * afamily = 0 , char const * astyle = 0 , pdf_float_t size = 0 ) */
  727. static SQRESULT sq_glue_SetFont(HSQUIRRELVM v){
  728. SQ_FUNC_VARS(v);
  729. GET_SQ_FPDF();
  730. SQ_OPT_STRING(v, 2, afamily, 0);
  731. SQ_OPT_STRING(v, 3, astyle, 0);
  732. SQ_OPT_FLOAT(v, 4, size, 0);
  733. self->SetFont(afamily, astyle, size);
  734. return 0;
  735. }
  736. /* void SetFontSettings( font_settings_st & fs ) */
  737. static SQRESULT sq_glue_SetFontSettings(HSQUIRRELVM v){
  738. SQ_FUNC_VARS(v);
  739. GET_SQ_FPDF();
  740. if(_top_ == 2){
  741. if(sq_gettype(v, 2) == OT_TABLE){
  742. const SQChar *str;
  743. SQFloat num;
  744. FPDF::font_settings_st fs;
  745. sq_pushliteral(v, _SC("family"));
  746. if(sq_rawget(v, 2) != SQ_OK) return SQ_ERROR;
  747. sq_getstring(v, -1, &str);
  748. sq_poptop(v);
  749. fs.family = str;
  750. sq_pushliteral(v, _SC("style"));
  751. if(sq_rawget(v, 2) != SQ_OK) return SQ_ERROR;
  752. sq_getstring(v, -1, &str);
  753. sq_poptop(v);
  754. fs.style = str;
  755. sq_pushliteral(v, _SC("size"));
  756. if(sq_rawget(v, 2) != SQ_OK) return SQ_ERROR;
  757. sq_getfloat(v, -1, &num);
  758. sq_poptop(v);
  759. fs.size = num;
  760. self->SetFontSettings(fs);
  761. return 0;
  762. }
  763. }
  764. return SQ_ERROR;
  765. }
  766. /* void SetFontSize( pdf_float_t size ) */
  767. static SQRESULT sq_glue_SetFontSize(HSQUIRRELVM v){
  768. SQ_FUNC_VARS_NO_TOP(v);
  769. GET_SQ_FPDF();
  770. SQ_GET_FLOAT(v, 2, size);
  771. self->SetFontSize(size);
  772. return 0;
  773. }
  774. /* void SetKeywords( char const * keywords ) */
  775. static SQRESULT sq_glue_SetKeywords(HSQUIRRELVM v){
  776. SQ_FUNC_VARS_NO_TOP(v);
  777. GET_SQ_FPDF();
  778. SQ_GET_STRING(v, 2, keywords);
  779. self->SetKeywords(keywords);
  780. return 0;
  781. }
  782. /* void SetLeftMargin( pdf_float_t margin ) */
  783. static SQRESULT sq_glue_SetLeftMargin(HSQUIRRELVM v){
  784. SQ_FUNC_VARS_NO_TOP(v);
  785. GET_SQ_FPDF();
  786. SQ_GET_FLOAT(v, 2, margin);
  787. self->SetLeftMargin(margin);
  788. return 0;
  789. }
  790. /* void SetLineWidth( pdf_float_t width ) */
  791. static SQRESULT sq_glue_SetLineWidth(HSQUIRRELVM v){
  792. SQ_FUNC_VARS_NO_TOP(v);
  793. GET_SQ_FPDF();
  794. SQ_GET_FLOAT(v, 2, width);
  795. self->SetLineWidth(width);
  796. return 0;
  797. }
  798. /* void SetLink( int link , pdf_float_t y = 0 , int page = -1 ) */
  799. static SQRESULT sq_glue_SetLink(HSQUIRRELVM v){
  800. SQ_FUNC_VARS(v);
  801. GET_SQ_FPDF();
  802. SQ_GET_INTEGER(v, 2, link);
  803. SQ_OPT_FLOAT(v, 3, y, 0);
  804. SQ_OPT_INTEGER(v, 4, page, -1);
  805. self->SetLink(link, y, page);
  806. return 0;
  807. }
  808. /* void SetMargins( pdf_float_t left , pdf_float_t top , pdf_float_t right = 0.0f ) */
  809. static SQRESULT sq_glue_SetMargins(HSQUIRRELVM v){
  810. SQ_FUNC_VARS(v);
  811. GET_SQ_FPDF();
  812. SQ_GET_FLOAT(v, 2, left);
  813. SQ_GET_FLOAT(v, 3, top);
  814. SQ_OPT_FLOAT(v, 4, right, 0.0f);
  815. self->SetMargins(left, top, right);
  816. return 0;
  817. }
  818. /* void SetRightMargin( pdf_float_t margin ) */
  819. static SQRESULT sq_glue_SetRightMargin(HSQUIRRELVM v){
  820. SQ_FUNC_VARS_NO_TOP(v);
  821. GET_SQ_FPDF();
  822. SQ_GET_FLOAT(v, 2, margin);
  823. self->SetRightMargin(margin);
  824. return 0;
  825. }
  826. /* void SetSubject( char const * subject ) */
  827. static SQRESULT sq_glue_SetSubject(HSQUIRRELVM v){
  828. SQ_FUNC_VARS_NO_TOP(v);
  829. GET_SQ_FPDF();
  830. SQ_GET_STRING(v, 2, subject);
  831. self->SetSubject(subject);
  832. return 0;
  833. }
  834. /* void SetTextColor( unsigned char r , unsigned char g , unsigned char b ) */
  835. static SQRESULT sq_glue_SetTextColor(HSQUIRRELVM v){
  836. SQ_FUNC_VARS(v);
  837. GET_SQ_FPDF();
  838. if(_top_ == 2){
  839. FPDF::pdf_color_t color;
  840. if(get_pdfcolor_from_table(v, color) == SQ_OK){
  841. self->SetTextColor(color);
  842. }
  843. else if(sq_gettype(v, 2) == OT_INTEGER){
  844. SQInteger icolor;
  845. sq_getinteger(v, 2, &icolor);
  846. self->SetTextColor(icolor);
  847. }
  848. else return SQ_ERROR;
  849. }
  850. else
  851. {
  852. SQ_GET_INTEGER(v, 2, r);
  853. SQ_GET_INTEGER(v, 3, g);
  854. SQ_GET_INTEGER(v, 4, b);
  855. self->SetTextColor(r, g, b);
  856. }
  857. return 0;
  858. }
  859. /* void SetTitle( char const * title ) */
  860. static SQRESULT sq_glue_SetTitle(HSQUIRRELVM v){
  861. SQ_FUNC_VARS_NO_TOP(v);
  862. GET_SQ_FPDF();
  863. SQ_GET_STRING(v, 2, title);
  864. self->SetTitle(title);
  865. return 0;
  866. }
  867. /* void SetTopMargin( pdf_float_t margin ) */
  868. static SQRESULT sq_glue_SetTopMargin(HSQUIRRELVM v){
  869. SQ_FUNC_VARS_NO_TOP(v);
  870. GET_SQ_FPDF();
  871. SQ_GET_FLOAT(v, 2, margin);
  872. self->SetTopMargin(margin);
  873. return 0;
  874. }
  875. /* void SetX( pdf_float_t x ) */
  876. static SQRESULT sq_glue_SetX(HSQUIRRELVM v){
  877. SQ_FUNC_VARS_NO_TOP(v);
  878. GET_SQ_FPDF();
  879. SQ_GET_FLOAT(v, 2, x);
  880. self->SetX(x);
  881. return 0;
  882. }
  883. /* void SetXY( pdf_float_t x , pdf_float_t y ) */
  884. static SQRESULT sq_glue_SetXY(HSQUIRRELVM v){
  885. SQ_FUNC_VARS_NO_TOP(v);
  886. GET_SQ_FPDF();
  887. SQ_GET_FLOAT(v, 2, x);
  888. SQ_GET_FLOAT(v, 3, y);
  889. self->SetXY(x, y);
  890. return 0;
  891. }
  892. /* void SetY( pdf_float_t y ) */
  893. static SQRESULT sq_glue_SetY(HSQUIRRELVM v){
  894. SQ_FUNC_VARS_NO_TOP(v);
  895. GET_SQ_FPDF();
  896. SQ_GET_FLOAT(v, 2, y);
  897. self->SetY(y);
  898. return 0;
  899. }
  900. /* void Text( pdf_float_t x , pdf_float_t y , char const * txt ) */
  901. static SQRESULT sq_glue_Text(HSQUIRRELVM v){
  902. SQ_FUNC_VARS_NO_TOP(v);
  903. GET_SQ_FPDF();
  904. SQ_GET_FLOAT(v, 2, x);
  905. SQ_GET_FLOAT(v, 3, y);
  906. SQ_GET_STRING(v, 4, txt);
  907. self->Text(x, y, txt);
  908. return 0;
  909. }
  910. /* void TextShadow( pdf_float_t x , pdf_float_t y , char const * txt , pdf_float_t displacement = .3 ) */
  911. static SQRESULT sq_glue_TextShadow(HSQUIRRELVM v){
  912. SQ_FUNC_VARS(v);
  913. GET_SQ_FPDF();
  914. SQ_GET_FLOAT(v, 2, x);
  915. SQ_GET_FLOAT(v, 3, y);
  916. SQ_GET_STRING(v, 4, txt);
  917. SQ_OPT_FLOAT(v, 5, displacement, .3);
  918. self->TextShadow(x, y, txt, displacement);
  919. return 0;
  920. }
  921. /* void UnsetClipping( ) */
  922. static SQRESULT sq_glue_UnsetClipping(HSQUIRRELVM v){
  923. SQ_FUNC_VARS_NO_TOP(v);
  924. GET_SQ_FPDF();
  925. self->UnsetClipping();
  926. return 0;
  927. }
  928. /* void Write( pdf_float_t h , char const * txt , int link = 0 ) */
  929. static SQRESULT sq_glue_Write(HSQUIRRELVM v){
  930. SQ_FUNC_VARS(v);
  931. GET_SQ_FPDF();
  932. SQ_GET_FLOAT(v, 2, h);
  933. SQ_GET_STRING(v, 3, txt);
  934. SQ_OPT_INTEGER(v, 4, link, 0);
  935. self->Write(h, txt, link);
  936. return 0;
  937. }
  938. /* int getCustomZoom( ) */
  939. static SQRESULT sq_glue_getCustomZoom(HSQUIRRELVM v){
  940. SQ_FUNC_VARS_NO_TOP(v);
  941. GET_SQ_FPDF();
  942. sq_pushinteger(v, self->getCustomZoom());
  943. return 1;
  944. }
  945. /* void reset( FPDF::e_orientation orientation = FPDF::e_orientation_portrait , FPDF::e_units unit = FPDF::e_mm , FPDF::e_page_sizes psize = FPDF::e_A4 ) */
  946. static SQRESULT sq_glue_reset(HSQUIRRELVM v){
  947. SQ_FUNC_VARS(v);
  948. GET_SQ_FPDF();
  949. SQ_OPT_INTEGER(v, 2, orientation, FPDF::e_orientation_portrait);
  950. SQ_OPT_INTEGER(v, 3, unit, FPDF::e_mm);
  951. SQ_OPT_INTEGER(v, 4, psize, FPDF::e_A4);
  952. //self->reset(orientation, unit, psize);
  953. return 0;
  954. }
  955. /* void setCustomZoom( int zoom ) */
  956. static SQRESULT sq_glue_setCustomZoom(HSQUIRRELVM v){
  957. SQ_FUNC_VARS_NO_TOP(v);
  958. GET_SQ_FPDF();
  959. SQ_GET_INTEGER(v, 2, zoom);
  960. self->setCustomZoom(zoom);
  961. return 0;
  962. }
  963. #define _DECL_FUNC(name,nparams,tycheck) {_SC(#name), sq_glue_##name,nparams,tycheck}
  964. static SQRegFunction sq_glue_my_methods[] =
  965. {
  966. _DECL_FUNC(constructor, 1, _SC("x")),
  967. _DECL_FUNC(AcceptPageBreak, 1, _SC("x")),
  968. _DECL_FUNC(AddFont, -2, _SC("xsss")),
  969. _DECL_FUNC(AddLink, 1, _SC("x")),
  970. _DECL_FUNC(AddPage, -1, _SC("xis")),
  971. _DECL_FUNC(AliasNbPages, -1, _SC("xs")),
  972. _DECL_FUNC(CalcLines, 3, _SC("xns")),
  973. _DECL_FUNC(Cell, -2, _SC("xnnssiibi")),
  974. _DECL_FUNC(CellFit, -2, _SC("xnnssiibiii")),
  975. _DECL_FUNC(CellFitScale, -2, _SC("xnnssiibi")),
  976. _DECL_FUNC(CellFitScaleForce, -2, _SC("xnnssiibi")),
  977. _DECL_FUNC(CellFitSpace, -2, _SC("xnnssiibi")),
  978. _DECL_FUNC(CellFitSpaceForce, -2, _SC("xnnssiibi")),
  979. _DECL_FUNC(CheckPageBreak, 2, _SC("xn")),
  980. _DECL_FUNC(Circle, -4, _SC("xnnns")),
  981. _DECL_FUNC(ClippedCell, -2, _SC("xnnssiibi")),
  982. _DECL_FUNC(ClippingRect, -5, _SC("xnnnni")),
  983. _DECL_FUNC(ClippingText, -4, _SC("xnnsi")),
  984. _DECL_FUNC(Close, 1, _SC("x")),
  985. _DECL_FUNC(Ellipse, -5, _SC("xnnnns")),
  986. _DECL_FUNC(Error, 2, _SC("xs")),
  987. _DECL_FUNC(Footer, 1, _SC("x")),
  988. _DECL_FUNC(GetAliasNbPages, 1, _SC("x")),
  989. _DECL_FUNC(GetDrawColor, -1, _SC("xt")),
  990. _DECL_FUNC(GetFillColor, -1, _SC("xt")),
  991. _DECL_FUNC(GetFontSettings, -1, _SC("xt")),
  992. _DECL_FUNC(GetFontSize, 1, _SC("x")),
  993. _DECL_FUNC(GetH, 1, _SC("x")),
  994. _DECL_FUNC(GetLeftMargin, 1, _SC("x")),
  995. _DECL_FUNC(GetRightMargin, 1, _SC("x")),
  996. _DECL_FUNC(GetStringWidth, 2, _SC("xs")),
  997. _DECL_FUNC(GetTextColor, -1, _SC("xt")),
  998. _DECL_FUNC(GetW, 1, _SC("x")),
  999. _DECL_FUNC(GetX, 1, _SC("x")),
  1000. _DECL_FUNC(GetY, 1, _SC("x")),
  1001. _DECL_FUNC(Header, 1, _SC("x")),
  1002. _DECL_FUNC(Image, -2, _SC("xsnnnnsi")),
  1003. _DECL_FUNC(IncludeJS, 2, _SC("xs")),
  1004. _DECL_FUNC(Line, 5, _SC("xnnnn")),
  1005. _DECL_FUNC(Link, 6, _SC("xnnnni")),
  1006. _DECL_FUNC(Ln, -1, _SC("xn")),
  1007. _DECL_FUNC(MultiCell, -4, _SC("xnnssib")),
  1008. _DECL_FUNC(MultiCellBlt, -5, _SC("xnnsssbi")),
  1009. _DECL_FUNC(Open, 1, _SC("x")),
  1010. _DECL_FUNC(Output, -1, _SC("xsi")),
  1011. _DECL_FUNC(PageNo, 1, _SC("x")),
  1012. _DECL_FUNC(Rect, -5, _SC("xnnnns")),
  1013. _DECL_FUNC(Rotate, -2, _SC("xnnn")),
  1014. _DECL_FUNC(RotatedText, 5, _SC("xnnsn")),
  1015. _DECL_FUNC(RoundedRect, -6, _SC("xnnnnns")),
  1016. _DECL_FUNC(SetAlpha, -2, _SC("xns")),
  1017. _DECL_FUNC(SetAuthor, 2, _SC("xs")),
  1018. _DECL_FUNC(SetAutoPageBreak, -2, _SC("xin")),
  1019. _DECL_FUNC(SetCompression, 2, _SC("xb")),
  1020. _DECL_FUNC(SetCreator, 2, _SC("xs")),
  1021. _DECL_FUNC(SetDash, -1, _SC("xnn")),
  1022. _DECL_FUNC(SetDisplayMode, -2, _SC("xii")),
  1023. _DECL_FUNC(SetDoubleSided, -1, _SC("xnn")),
  1024. _DECL_FUNC(SetDrawColor, -2, _SC("xiii")),
  1025. _DECL_FUNC(SetFillColor, -2, _SC("x t|i ii")),
  1026. _DECL_FUNC(SetFont, -1, _SC("xssn")),
  1027. _DECL_FUNC(SetFontSettings, 2, _SC("xt")),
  1028. _DECL_FUNC(SetFontSize, 2, _SC("xn")),
  1029. _DECL_FUNC(SetKeywords, 2, _SC("xs")),
  1030. _DECL_FUNC(SetLeftMargin, 2, _SC("xn")),
  1031. _DECL_FUNC(SetLineWidth, 2, _SC("xn")),
  1032. _DECL_FUNC(SetLink, -2, _SC("xini")),
  1033. _DECL_FUNC(SetMargins, -3, _SC("xnnn")),
  1034. _DECL_FUNC(SetRightMargin, 2, _SC("xn")),
  1035. _DECL_FUNC(SetSubject, 2, _SC("xs")),
  1036. _DECL_FUNC(SetTextColor, -2, _SC("xiii")),
  1037. _DECL_FUNC(SetTitle, 2, _SC("xs")),
  1038. _DECL_FUNC(SetTopMargin, 2, _SC("xn")),
  1039. _DECL_FUNC(SetX, 2, _SC("xn")),
  1040. _DECL_FUNC(SetXY, 3, _SC("xnn")),
  1041. _DECL_FUNC(SetY, 2, _SC("xn")),
  1042. _DECL_FUNC(Text, 4, _SC("xnns")),
  1043. _DECL_FUNC(TextShadow, -4, _SC("xnnsn")),
  1044. _DECL_FUNC(UnsetClipping, 1, _SC("x")),
  1045. _DECL_FUNC(Write, -3, _SC("xnsi")),
  1046. _DECL_FUNC(getCustomZoom, 1, _SC("x")),
  1047. _DECL_FUNC(reset, -1, _SC("xiii")),
  1048. _DECL_FUNC(setCustomZoom, 2, _SC("xi")),
  1049. {0,0}
  1050. };
  1051. #ifdef __cplusplus
  1052. extern "C" {
  1053. #endif
  1054. SQRESULT sqext_register_Sq_Fpdf(HSQUIRRELVM v)
  1055. {
  1056. sq_pushstring(v,SQ_FPDF_TAG,-1);
  1057. sq_newclass(v,SQFalse);
  1058. sq_settypetag(v,-1,(void*)SQ_FPDF_TAG);
  1059. sq_insert_reg_funcs(v, sq_glue_my_methods);
  1060. sq_newslot(v,-3,SQTrue);
  1061. return 1;
  1062. }
  1063. #ifdef __cplusplus
  1064. }
  1065. #endif