KSGSBild.cpp 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. #include "KSGSBild.h"
  2. #include "KSGSTyp.h"
  3. #include "../Error/Error.h"
  4. #include <Punkt.h>
  5. #include "KSGSBool.h"
  6. #include "KSGSInt.h"
  7. using namespace KSGScript;
  8. // Inhalt der KSGSBildKlasse Klasse aus KSGSBild.h
  9. // Konstruktor
  10. KSGSBildKlasse::KSGSBildKlasse( KSGScriptProcessor *zObj, Bild *std )
  11. : KSGSKlasseInstanz( KSGS_BILD, 0, 0, zObj )
  12. {
  13. val = std;
  14. }
  15. // Destruktor
  16. KSGSBildKlasse::~KSGSBildKlasse()
  17. {
  18. val->release();
  19. }
  20. // nicht constant
  21. void KSGSBildKlasse::set( Bild *b )
  22. {
  23. if( val )
  24. val->release();
  25. val = b;
  26. }
  27. KSGSVariable *KSGSBildKlasse::startFunktion( int id, bool access, RCArray< KSGSVariable > *parameter )
  28. {
  29. KSGSVariable *ret = 0;
  30. switch( id )
  31. {
  32. case 0: // void neuBild( int, int, int )
  33. if( parameter->getEintragAnzahl() < 3 )
  34. error( 20, {}, obj );
  35. val->neuBild( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  36. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  37. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0 );
  38. break;
  39. case 1: // void setAlpha( int )
  40. if( parameter->getEintragAnzahl() < 1 )
  41. error( 20, {}, obj );
  42. val->setAlpha( (unsigned char)( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0 ) );
  43. break;
  44. case 2: // void releaseAlpha()
  45. val->releaseAlpha();
  46. break;
  47. case 3: // void alphaPixel( int, int, int )
  48. if( parameter->getEintragAnzahl() < 3 )
  49. error( 20, {}, obj );
  50. if( val->hasAlpha3D() )
  51. {
  52. val->alphaPixelDP3D( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  53. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  54. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0 );
  55. }
  56. else
  57. {
  58. val->alphaPixelDP2D( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  59. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  60. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0 );
  61. }
  62. break;
  63. case 4: // void setPixel( int, int, int )
  64. if( parameter->getEintragAnzahl() < 3 )
  65. error( 20, {}, obj );
  66. val->setPixelDP( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  67. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  68. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0 );
  69. break;
  70. case 5: // void alphaRegion( int, int, int, int, int )
  71. if( parameter->getEintragAnzahl() < 5 )
  72. error( 20, {}, obj );
  73. val->alphaRegion( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  74. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  75. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0,
  76. parameter->z( 3 ) ? parameter->z( 3 )->getInt() : 0,
  77. parameter->z( 4 ) ? parameter->z( 4 )->getInt() : 0 );
  78. break;
  79. case 6: // void füllRegion( int, int, int, int, int )
  80. if( parameter->getEintragAnzahl() < 5 )
  81. error( 20, {}, obj );
  82. val->fillRegion( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  83. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  84. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0,
  85. parameter->z( 3 ) ? parameter->z( 3 )->getInt() : 0,
  86. parameter->z( 4 ) ? parameter->z( 4 )->getInt() : 0 );
  87. break;
  88. case 7: // void drawLinieAlpha( int, int, int, int, int )
  89. if( parameter->getEintragAnzahl() < 5 )
  90. error( 20, {}, obj );
  91. val->drawLinieAlpha( Punkt( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  92. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0 ),
  93. Punkt( parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0,
  94. parameter->z( 3 ) ? parameter->z( 3 )->getInt() : 0 ),
  95. parameter->z( 4 ) ? parameter->z( 4 )->getInt() : 0 );
  96. break;
  97. case 8: // void drawLinie( int, int, int, int, int )
  98. if( parameter->getEintragAnzahl() < 5 )
  99. error( 20, {}, obj );
  100. val->drawLinie( Punkt( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  101. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0 ),
  102. Punkt( parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0,
  103. parameter->z( 3 ) ? parameter->z( 3 )->getInt() : 0 ),
  104. parameter->z( 4 ) ? parameter->z( 4 )->getInt() : 0 );
  105. break;
  106. case 9: // void alphaBild( int, int, int, int, Bild )
  107. if( 1 )
  108. {
  109. if( parameter->getEintragAnzahl() < 5 )
  110. error( 20, {}, obj );
  111. Bild *tmp = parameter->z( 4 ) ? parameter->z( 4 )->getBild() : new Bild();
  112. if( tmp )
  113. {
  114. val->alphaBild( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  115. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  116. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0,
  117. parameter->z( 3 ) ? parameter->z( 3 )->getInt() : 0,
  118. *tmp );
  119. tmp->release();
  120. }
  121. }
  122. break;
  123. case 10: // void drawBild( int, int, int, int, Bild )
  124. if( 1 )
  125. {
  126. if( parameter->getEintragAnzahl() < 5 )
  127. error( 20, {}, obj );
  128. Bild *tmp = parameter->z( 4 ) ? parameter->z( 4 )->getBild() : new Bild();
  129. if( tmp )
  130. {
  131. val->drawBild( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  132. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  133. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0,
  134. parameter->z( 3 ) ? parameter->z( 3 )->getInt() : 0,
  135. *tmp );
  136. tmp->release();
  137. }
  138. }
  139. break;
  140. case 11: // void alphaBild90( int, int, int, int, Bild )
  141. if( 1 )
  142. {
  143. if( parameter->getEintragAnzahl() < 5 )
  144. error( 20, {}, obj );
  145. Bild *tmp = parameter->z( 4 ) ? parameter->z( 4 )->getBild() : new Bild();
  146. if( tmp )
  147. {
  148. val->alphaBild90( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  149. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  150. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0,
  151. parameter->z( 3 ) ? parameter->z( 3 )->getInt() : 0,
  152. *tmp );
  153. tmp->release();
  154. }
  155. }
  156. break;
  157. case 12: // void drawBild90( int, int, int, int, Bild )
  158. if( 1 )
  159. {
  160. if( parameter->getEintragAnzahl() < 5 )
  161. error( 20, {}, obj );
  162. Bild *tmp = parameter->z( 4 ) ? parameter->z( 4 )->getBild() : new Bild();
  163. if( tmp )
  164. {
  165. val->drawBild90( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  166. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  167. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0,
  168. parameter->z( 3 ) ? parameter->z( 3 )->getInt() : 0,
  169. *tmp );
  170. tmp->release();
  171. }
  172. }
  173. break;
  174. case 13: // void alphaBild180( int, int, int, int, Bild )
  175. if( 1 )
  176. {
  177. if( parameter->getEintragAnzahl() < 5 )
  178. error( 20, {}, obj );
  179. Bild *tmp = parameter->z( 4 ) ? parameter->z( 4 )->getBild() : new Bild();
  180. if( tmp )
  181. {
  182. val->alphaBild180( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  183. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  184. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0,
  185. parameter->z( 3 ) ? parameter->z( 3 )->getInt() : 0,
  186. *tmp );
  187. tmp->release();
  188. }
  189. }
  190. break;
  191. case 14: // void drawBild180( int, int, int, int, Bild )
  192. if( 1 )
  193. {
  194. if( parameter->getEintragAnzahl() < 5 )
  195. error( 20, {}, obj );
  196. Bild *tmp = parameter->z( 4 ) ? parameter->z( 4 )->getBild() : new Bild();
  197. if( tmp )
  198. {
  199. val->drawBild180( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  200. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  201. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0,
  202. parameter->z( 3 ) ? parameter->z( 3 )->getInt() : 0,
  203. *tmp );
  204. tmp->release();
  205. }
  206. }
  207. break;
  208. case 15: // void alphaBild270( int, int, int, int, Bild )
  209. if( 1 )
  210. {
  211. if( parameter->getEintragAnzahl() < 5 )
  212. error( 20, {}, obj );
  213. Bild *tmp = parameter->z( 4 ) ? parameter->z( 4 )->getBild() : new Bild();
  214. if( tmp )
  215. {
  216. val->alphaBild270( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  217. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  218. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0,
  219. parameter->z( 3 ) ? parameter->z( 3 )->getInt() : 0,
  220. *tmp );
  221. tmp->release();
  222. }
  223. }
  224. break;
  225. case 16: // void drawBild270( int, int, int, int, Bild )
  226. if( 1 )
  227. {
  228. if( parameter->getEintragAnzahl() < 5 )
  229. error( 20, {}, obj );
  230. Bild *tmp = parameter->z( 4 ) ? parameter->z( 4 )->getBild() : new Bild();
  231. if( tmp )
  232. {
  233. val->drawBild270( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  234. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  235. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0,
  236. parameter->z( 3 ) ? parameter->z( 3 )->getInt() : 0,
  237. *tmp );
  238. tmp->release();
  239. }
  240. }
  241. break;
  242. case 17: // bool setDrawOptions( int, int, int, int )
  243. if( parameter->getEintragAnzahl() < 4 )
  244. error( 20, {}, obj );
  245. ret = new KSGSBoolKlasse( obj, val->setDrawOptions( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  246. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  247. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0,
  248. parameter->z( 3 ) ? parameter->z( 3 )->getInt() : 0 ) );
  249. break;
  250. case 18: // bool setDrawOptionsErzwingen( int, int, int, int )
  251. if( parameter->getEintragAnzahl() < 4 )
  252. error( 20, {}, obj );
  253. ret = new KSGSBoolKlasse( obj, val->setDrawOptionsErzwingen( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  254. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0,
  255. parameter->z( 2 ) ? parameter->z( 2 )->getInt() : 0,
  256. parameter->z( 3 ) ? parameter->z( 3 )->getInt() : 0 ) );
  257. break;
  258. case 19: // void releaseDrawOptions()
  259. val->releaseDrawOptions();
  260. break;
  261. case 20: // int getBreite()
  262. ret = new KSGSIntKlasse( obj, val->getBreite() );
  263. break;
  264. case 21: // int getHöhe()
  265. ret = new KSGSIntKlasse( obj, val->getHeight() );
  266. break;
  267. case 22: // int getPixel( int, int )
  268. if( parameter->getEintragAnzahl() < 2 )
  269. error( 20, {}, obj );
  270. ret = new KSGSIntKlasse( obj, val->getPixel( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  271. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0 ) );
  272. break;
  273. case 23: // void addScrollOffset( int, int )
  274. if( parameter->getEintragAnzahl() < 2 )
  275. error( 20, {}, obj );
  276. val->addScrollOffset( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  277. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0 );
  278. break;
  279. default: // unbekannt
  280. error( 19, {}, obj );
  281. break;
  282. }
  283. parameter->release();
  284. return ret;
  285. }
  286. KSGSVariable *KSGSBildKlasse::doOperator( int id, KSGSVariable *rechts )
  287. {
  288. if( !rechts )
  289. {
  290. error( 3, {}, obj );
  291. return 0;
  292. }
  293. KSGSVariable *ret = 0;
  294. switch( id )
  295. {
  296. case KSGS_O_SET:
  297. if( 1 )
  298. {
  299. val->release();
  300. val = rechts->getBild();
  301. ret = dynamic_cast<KSGSVariable *>( getThis() );
  302. }
  303. break;
  304. }
  305. if( !ret )
  306. error( 21, {}, obj );
  307. if( rechts )
  308. rechts->release();
  309. return ret;
  310. }
  311. // constant
  312. Bild *KSGSBildKlasse::getVal() const
  313. {
  314. return dynamic_cast<Bild *>( val->getThis() );
  315. }
  316. Bild *KSGSBildKlasse::zVal() const
  317. {
  318. return val;
  319. }