Ressourcen.cpp 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. #include "Ressourcen.h"
  2. // Inhalt der RessourceBild Klasse aus Ressource.h
  3. // Konstruktor
  4. RessourceBild::RessourceBild()
  5. {
  6. name = new RCArray< Text >();
  7. bild = new RCArray< Bild >();
  8. anzahl = 0;
  9. ref = 1;
  10. }
  11. // Destruktor
  12. RessourceBild::~RessourceBild()
  13. {
  14. name->release();
  15. bild->release();
  16. }
  17. // nicht constant
  18. bool RessourceBild::add( Text *name, Bild *bild )
  19. {
  20. bool ret = add( name->getText(), bild );
  21. name->release();
  22. return ret;
  23. }
  24. bool RessourceBild::add( const char *name, Bild *bild )
  25. {
  26. if( hat( name ) )
  27. {
  28. bild->release();
  29. return 0;
  30. }
  31. this->name->add( new Text( name ), anzahl );
  32. this->bild->add( bild, anzahl );
  33. anzahl++;
  34. return 1;
  35. }
  36. bool RessourceBild::remove( Text *name )
  37. {
  38. bool ret = remove( name->getText() );
  39. name->release();
  40. return ret;
  41. }
  42. bool RessourceBild::remove( const char *name )
  43. {
  44. for( int i = 0; i < anzahl; i++ )
  45. {
  46. if( this->name->z( i )->istGleich( name ) )
  47. {
  48. this->name->remove( i );
  49. bild->remove( i );
  50. anzahl--;
  51. return 1;
  52. }
  53. }
  54. return 0;
  55. }
  56. void RessourceBild::reset()
  57. {
  58. for( int i = 0; i < anzahl; i++ )
  59. {
  60. name->remove( 0 );
  61. bild->remove( 0 );
  62. }
  63. anzahl = 0;
  64. }
  65. // constant
  66. bool RessourceBild::hat( Text *name )
  67. {
  68. bool ret = hat( name->getText() );
  69. name->release();
  70. return ret;
  71. }
  72. bool RessourceBild::hat( const char *name )
  73. {
  74. for( int i = 0; i < anzahl; i++ )
  75. {
  76. if( this->name->z( i )->istGleich( name ) )
  77. return 1;
  78. }
  79. return 0;
  80. }
  81. Bild *RessourceBild::get( Text *name )
  82. {
  83. Bild *ret = get( name->getText() );
  84. name->release();
  85. return ret;
  86. }
  87. Bild *RessourceBild::get( const char *name )
  88. {
  89. for( int i = 0; i < anzahl; i++ )
  90. {
  91. if( this->name->z( i )->istGleich( name ) )
  92. return this->bild->get( i );
  93. }
  94. return 0;
  95. }
  96. Bild *RessourceBild::z( Text *name )
  97. {
  98. Bild *ret = z( name->getText() );
  99. name->release();
  100. return ret;
  101. }
  102. Bild *RessourceBild::z( const char *name )
  103. {
  104. for( int i = 0; i < anzahl; i++ )
  105. {
  106. if( this->name->z( i )->istGleich( name ) )
  107. return this->bild->z( i );
  108. }
  109. return 0;
  110. }
  111. // Reference Counting
  112. RessourceBild *RessourceBild::getThis()
  113. {
  114. ref++;
  115. return this;
  116. }
  117. RessourceBild *RessourceBild::release()
  118. {
  119. ref--;
  120. if( !ref )
  121. delete this;
  122. return 0;
  123. }
  124. // Inhalt der RessourceSchrift Klasse aus Ressource.h
  125. // Konstruktor
  126. RessourceSchrift::RessourceSchrift()
  127. {
  128. name = new RCArray< Text >();
  129. schrift = new RCArray< Schrift >();
  130. anzahl = 0;
  131. ref = 1;
  132. }
  133. // Destruktor
  134. RessourceSchrift::~RessourceSchrift()
  135. {
  136. name->release();
  137. schrift->release();
  138. }
  139. // nicht constant
  140. bool RessourceSchrift::add( Text *name, Schrift *schrift )
  141. {
  142. bool ret = add( name->getText(), schrift );
  143. name->release();
  144. return ret;
  145. }
  146. bool RessourceSchrift::add( const char *name, Schrift *schrift )
  147. {
  148. if( hat( name ) )
  149. {
  150. schrift->release();
  151. return 0;
  152. }
  153. this->name->add( new Text( name ), anzahl );
  154. this->schrift->add( schrift, anzahl );
  155. anzahl++;
  156. return 1;
  157. }
  158. bool RessourceSchrift::remove( Text *name )
  159. {
  160. bool ret = remove( name->getText() );
  161. name->release();
  162. return ret;
  163. }
  164. bool RessourceSchrift::remove( const char *name )
  165. {
  166. for( int i = 0; i < anzahl; i++ )
  167. {
  168. if( this->name->z( i )->istGleich( name ) )
  169. {
  170. this->name->remove( i );
  171. schrift->remove( i );
  172. anzahl--;
  173. return 1;
  174. }
  175. }
  176. return 0;
  177. }
  178. void RessourceSchrift::reset()
  179. {
  180. for( int i = 0; i < anzahl; i++ )
  181. {
  182. name->remove( 0 );
  183. schrift->remove( 0 );
  184. }
  185. anzahl = 0;
  186. }
  187. // constant
  188. bool RessourceSchrift::hat( Text *name )
  189. {
  190. bool ret = hat( name->getText() );
  191. name->release();
  192. return ret;
  193. }
  194. bool RessourceSchrift::hat( const char *name )
  195. {
  196. for( int i = 0; i < anzahl; i++ )
  197. {
  198. if( this->name->z( i )->istGleich( name ) )
  199. return 1;
  200. }
  201. return 0;
  202. }
  203. Schrift *RessourceSchrift::get( Text *name )
  204. {
  205. Schrift *ret = get( name->getText() );
  206. name->release();
  207. return ret;
  208. }
  209. Schrift *RessourceSchrift::get( const char *name )
  210. {
  211. for( int i = 0; i < anzahl; i++ )
  212. {
  213. if( this->name->z( i )->istGleich( name ) )
  214. return this->schrift->get( i );
  215. }
  216. return 0;
  217. }
  218. Schrift *RessourceSchrift::z( Text *name )
  219. {
  220. Schrift *ret = z( name->getText() );
  221. name->release();
  222. return ret;
  223. }
  224. Schrift *RessourceSchrift::z( const char *name )
  225. {
  226. for( int i = 0; i < anzahl; i++ )
  227. {
  228. if( this->name->z( i )->istGleich( name ) )
  229. return this->schrift->z( i );
  230. }
  231. return 0;
  232. }
  233. // Reference Counting
  234. RessourceSchrift *RessourceSchrift::getThis()
  235. {
  236. ref++;
  237. return this;
  238. }
  239. RessourceSchrift *RessourceSchrift::release()
  240. {
  241. ref--;
  242. if( !ref )
  243. delete this;
  244. return 0;
  245. }