KSGSBildZ.cpp 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. #include "KSGSBildZ.h"
  2. #include "KSGSMausEreignis.h"
  3. #include "../Main/KSGScriptObj.h"
  4. #include "../Error/Error.h"
  5. #include "KSGSTyp.h"
  6. #include "KSGSBool.h"
  7. #include "KSGSBild.h"
  8. #include <ToolTip.h>
  9. #include "KSGSText.h"
  10. #include "KSGSInt.h"
  11. using namespace KSGScript;
  12. // Inhalt der KSGSBildZKlasse Klasse aus KSGSBildZ.h
  13. // Konstruktor
  14. KSGSBildZKlasse::KSGSBildZKlasse( KSGScriptObj *zObj, BildZ *std )
  15. : KSGSKlasseInstanz( KSGS_BILDO, 0, 0, zObj )
  16. {
  17. val = std;
  18. val->setMausEreignisParameter( this );
  19. val->setMausEreignis( ksgsBildZME );
  20. mausF = -1;
  21. }
  22. // Destruktor
  23. KSGSBildZKlasse::~KSGSBildZKlasse()
  24. {
  25. val->release();
  26. }
  27. // nicht constant
  28. KSGSVariable *KSGSBildZKlasse::startFunktion( int id, bool access, RCArray< KSGSVariable > *parameter )
  29. {
  30. KSGSVariable *ret = 0;
  31. switch( id )
  32. {
  33. case 0: // void setBild( Bild )
  34. if( parameter->getEintragAnzahl() < 1 )
  35. error( 20, {}, obj );
  36. val->setBild( parameter->z( 0 ) ? parameter->z( 0 )->getBild() : 0 );
  37. break;
  38. case 1: // void setRFarbe( int )
  39. if( parameter->getEintragAnzahl() < 1 )
  40. error( 20, {}, obj );
  41. val->setRahmenFarbe( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0 );
  42. break;
  43. case 2: // void setRBreite( int )
  44. if( parameter->getEintragAnzahl() < 1 )
  45. error( 20, {}, obj );
  46. val->setRahmenBreite( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0 );
  47. break;
  48. case 3: // void setStyle( int )
  49. if( parameter->getEintragAnzahl() < 1 )
  50. error( 20, {}, obj );
  51. val->setStyle( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0 );
  52. break;
  53. case 4: // void addStyle( int )
  54. if( parameter->getEintragAnzahl() < 1 )
  55. error( 20, {}, obj );
  56. val->addStyle( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0 );
  57. break;
  58. case 5: // void löscheStyle( int )
  59. if( parameter->getEintragAnzahl() < 1 )
  60. error( 20, {}, obj );
  61. val->setStyle( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0, 0 );
  62. break;
  63. case 6: // bool tick( double )
  64. if( parameter->getEintragAnzahl() < 1 )
  65. error( 20, {}, obj );
  66. ret = new KSGSBoolKlasse( obj, val->tick( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0 ) );
  67. break;
  68. case 7: // void setMausEreignis( Text )
  69. if( 1 )
  70. {
  71. if( parameter->getEintragAnzahl() < 1 )
  72. error( 20, {}, obj );
  73. Text *n = parameter->z( 0 ) ? parameter->z( 0 )->getText() : 0;
  74. if( n )
  75. {
  76. mausF = obj->getFunktionId( *n );
  77. n->release();
  78. }
  79. else
  80. mausF = -1;
  81. }
  82. break;
  83. case 8: // void doMausEreignis( MausEreignis )
  84. if( 1 )
  85. {
  86. if( parameter->getEintragAnzahl() < 1 )
  87. error( 20, {}, obj );
  88. MausEreignis me = parameter->z( 0 ) ? parameter->z( 0 )->getMausEreignis() : MausEreignis{ 0, 0, 0, 0, 1, 0, 0 };
  89. val->doPublicMausEreignis( me );
  90. }
  91. break;
  92. case 9: // void render( int, int, Bild )
  93. if( 1 )
  94. {
  95. if( parameter->getEintragAnzahl() < 1 )
  96. error( 20, {}, obj );
  97. Bild *b = parameter->z( 0 ) ? parameter->z( 0 )->getBild() : 0;
  98. if( b )
  99. {
  100. val->render( *b );
  101. b->release();
  102. }
  103. }
  104. break;
  105. case 10: // Bild getBild()
  106. ret = new KSGSBildKlasse( obj, val->getBild() );
  107. break;
  108. case 11: // bool hatStyle( int )
  109. ret = new KSGSBoolKlasse( obj, val->hatStyle( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0 ) );
  110. break;
  111. case 12: // bool hatStyleNicht( int )
  112. ret = new KSGSBoolKlasse( obj, val->hatStyleNicht( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0 ) );
  113. break;
  114. case 13: // BildZ dublizieren()
  115. ret = new KSGSBildZKlasse( obj, (BildZ*)val->dublizieren() );
  116. break;
  117. case 14: // void setToolTipText( Text )
  118. if( 1 )
  119. {
  120. if( parameter->getEintragAnzahl() < 1 )
  121. error( 20, {}, obj );
  122. Text *txt = parameter->z( 0 ) ? parameter->z( 0 )->getText() : 0;
  123. val->setToolTipText( txt ? *txt : 0, obj->zBildschirm(), obj->zSchrift() );
  124. if( txt )
  125. txt->release();
  126. }
  127. break;
  128. case 15: // void setPosition( int, int )
  129. if( parameter->getEintragAnzahl() < 2 )
  130. error( 20, {}, obj );
  131. val->setPosition( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  132. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0 );
  133. break;
  134. case 16: // void setGröße( int, int )
  135. if( parameter->getEintragAnzahl() < 2 )
  136. error( 20, {}, obj );
  137. val->setSize( parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0,
  138. parameter->z( 1 ) ? parameter->z( 1 )->getInt() : 0 );
  139. break;
  140. case 17: // int getBreite()
  141. ret = new KSGSIntKlasse( obj, val->getBreite() );
  142. break;
  143. case 18: // int getHöhe()
  144. ret = new KSGSIntKlasse( obj, val->getHeight() );
  145. break;
  146. case 19: // int getX()
  147. ret = new KSGSIntKlasse( obj, val->getX() );
  148. break;
  149. case 20: // int getY()
  150. ret = new KSGSIntKlasse( obj, val->getY() );
  151. break;
  152. default: // unbekannt
  153. error( 19, {}, obj );
  154. break;
  155. }
  156. parameter->release();
  157. return ret;
  158. }
  159. KSGSVariable *KSGSBildZKlasse::doOperator( int id, KSGSVariable *rechts )
  160. {
  161. if( !rechts )
  162. {
  163. error( 3, {}, obj );
  164. return 0;
  165. }
  166. KSGSVariable *ret = 0;
  167. switch( id )
  168. {
  169. case KSGS_O_SET:
  170. if( 1 )
  171. {
  172. val->release();
  173. val = rechts->getBildZ();
  174. ret = getThis();
  175. }
  176. break;
  177. }
  178. if( !ret )
  179. error( 21, {}, obj );
  180. if( rechts )
  181. rechts->release();
  182. return ret;
  183. }
  184. bool KSGSBildZKlasse::doMausEreignis( MausEreignis &me )
  185. {
  186. if( mausF < 0 )
  187. return 1;
  188. RCArray< KSGSVariable > *parameter = new RCArray< KSGSVariable >();
  189. parameter->add( new KSGSMausEreignisKlasse( obj, me ) );
  190. KSGSVariable *ret = obj->startFunktion( mausF, parameter );
  191. if( ret )
  192. {
  193. bool r = ret->getBool();
  194. ret->release();
  195. return r;
  196. }
  197. return 1;
  198. }
  199. // constant
  200. BildZ *KSGSBildZKlasse::getVal() const
  201. {
  202. return (BildZ*)val->getThis();
  203. }
  204. BildZ *KSGSBildZKlasse::zVal() const
  205. {
  206. return val;
  207. }
  208. // Ereignisse
  209. bool KSGScript::ksgsBildZME( void *var, void *obj, MausEreignis me )
  210. {
  211. if( !var )
  212. return 1;
  213. return ( (KSGSBildZKlasse*)var )->doMausEreignis( me );
  214. }