home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0600 / CCE_0678.ZIP / CCE_0678.PD / E_GEM135 / SOURCE / IMAGE.C < prev    next >
Text File  |  1993-12-28  |  11KB  |  228 lines

  1.  
  2. #define NULL    ((void *) 0l)
  3.  
  4. typedef struct
  5. {
  6.     int        *hi_on,*hi_off,*lo_on,*lo_off;
  7. } IMAGE;
  8.  
  9. typedef struct
  10. {
  11.     int        count;
  12.     IMAGE    *image;
  13. } IMAGES;
  14.  
  15. static int radio_hi_on[] = {
  16. 0x0000, 0x03E0, 0x0FF8, 0x1C0C, 0x3942, 0x32A2, 0x6551, 0x6AA9, 
  17. 0x6551, 0x6AA9, 0x6551, 0x22A2, 0x3142, 0x1004, 0x0C18, 0x03E0,
  18. 0x07C0, 0x1830, 0x2008, 0x47C4, 0x4FE4, 0x9FF2, 0x9FF2, 0x9FF2, 
  19. 0x9FF2, 0x9FF2, 0x4FE4, 0x47C4, 0x2008, 0x1830, 0x07C0, 0x0000,
  20. 0x0000, 0x03C0, 0x0C30, 0x1008, 0x23C4, 0x27E4, 0x4FF2, 0x4FF2, 
  21. 0x4FF2, 0x4FF2, 0x27E4, 0x23C4, 0x1008, 0x0C30, 0x03C0, 0x0000,
  22. 0x0000, 0x03C0, 0x0C30, 0x1188, 0x27E4, 0x2FF4, 0x4FF2, 0x5FFA,
  23. 0x5FFA, 0x4FF2, 0x2FF4, 0x27E4, 0x1188, 0x0C30, 0x03C0, 0x0000,
  24. 0x0000, 0x0000, 0x03C0, 0x0C30, 0x1008, 0x13C8, 0x27E4, 0x27E4, 
  25. 0x27E4, 0x27E4, 0x13C8, 0x1008, 0x0C30, 0x03C0, 0x0000, 0x0000,
  26. 0x0000, 0x43C2, 0x2C34, 0x1008, 0x2814, 0x2424, 0x4242, 0x4182, 
  27. 0x4182, 0x4242, 0x2424, 0x2814, 0x1008, 0x2C34, 0x43C2, 0x0000,
  28. 0x0000, 0x03C0, 0x0C30, 0x1008, 0x23C4, 0x2624, 0x4F92, 0x4FD2, 
  29. 0x4FF2, 0x4FF2, 0x27E4, 0x23C4, 0x1008, 0x0C30, 0x03C0, 0x0000,
  30. 0x0000, 0x03C0, 0x0C30, 0x1008, 0x23C4, 0x27E4, 0x4FF2, 0x4FF2, 
  31. 0x4FF2, 0x4FF2, 0x27E4, 0x23C4, 0x1008, 0x0C30, 0x03C0, 0x0000 };
  32.     
  33. static int radio_hi_off[] = {
  34. 0x0000, 0x03e0, 0x0c18, 0x1004, 0x2006, 0x2002, 0x4003, 0x4003,
  35. 0x4003, 0x4003, 0x4003, 0x2006, 0x200e, 0x181c, 0x0ff8, 0x03e0,
  36. 0x07C0, 0x1830, 0x2008, 0x4004, 0x4004, 0x8002, 0x8002, 0x8002,
  37. 0x8002, 0x8002, 0x4004, 0x4004, 0x2008, 0x1830, 0x07C0, 0x0000,
  38. 0x0000, 0x03C0, 0x0C30, 0x1008, 0x2004, 0x2004, 0x4002, 0x4002,
  39. 0x4002, 0x4002, 0x2004, 0x2004, 0x1008, 0x0C30, 0x03C0, 0x0000,
  40. 0x0000, 0x03C0, 0x0C30, 0x1008, 0x2004, 0x2004, 0x4002, 0x4002,
  41. 0x4002, 0x4002, 0x2004, 0x2004, 0x1008, 0x0C30, 0x03C0, 0x0000,
  42. 0x0000, 0x03C0, 0x0C30, 0x1008, 0x2004, 0x2004, 0x4002, 0x4002,
  43. 0x4002, 0x4002, 0x2004, 0x2004, 0x1008, 0x0C30, 0x03C0, 0x0000,
  44. 0x0000, 0x0000, 0x03C0, 0x0C30, 0x1008, 0x1008, 0x2004, 0x2004,
  45. 0x2004, 0x2004, 0x1008, 0x1008, 0x0C30, 0x03C0, 0x0000, 0x0000,
  46. 0x0000, 0x03C0, 0x0C30, 0x1008, 0x23C4, 0x2424, 0x4812, 0x4812, 
  47. 0x4812, 0x4812, 0x2424, 0x23C4, 0x1008, 0x0C30, 0x03C0, 0x0000,
  48. 0x0000, 0x03C0, 0x0C30, 0x1008, 0x23C4, 0x2424, 0x4812, 0x4812, 
  49. 0x4812, 0x4812, 0x2424, 0x23C4, 0x1008, 0x0C30, 0x03C0, 0x0000 };
  50.  
  51. static int radio_lo_on[] = {
  52. 0x0FF0, 0x781E, 0xE3C7, 0xCFF3, 0xCFF3, 0xE3C7, 0x781E, 0x0FF0 };
  53.  
  54. static int radio_lo_off[] = { 
  55. 0x0FF0, 0x781E, 0xE007, 0xC003, 0xC003, 0xE007, 0x781E, 0x0FF0 };
  56.  
  57. static int check_hi_on[] = {
  58. 0x0000, 0x7FFF, 0x4001, 0x580D, 0x5C1D, 0x4E39, 0x4771, 0x43E1, 
  59. 0x41C1, 0x43E1, 0x4771, 0x4E39, 0x5C1D, 0x580D, 0x4001, 0x7FFF,
  60. 0x0000, 0x7FFE, 0x6006, 0x500A, 0x4812, 0x4422, 0x4242, 0x4182, 
  61. 0x4182, 0x4242, 0x4422, 0x4812, 0x500A, 0x6006, 0x7FFE, 0x0000,
  62. 0x0000, 0x7FFE, 0x4002, 0x500A, 0x4812, 0x4422, 0x4242, 0x4182,
  63. 0x4182, 0x4242, 0x4422, 0x4812, 0x500A, 0x4002, 0x7FFE, 0x0000,
  64. 0x0000, 0x7FFE, 0x4002, 0x500A, 0x4812, 0x4422, 0x4242, 0x4182,
  65. 0x4182, 0x4242, 0x4422, 0x4812, 0x500A, 0x4002, 0x7FFE, 0x0000,
  66. 0x0000, 0x4002, 0x3FFC, 0x300C, 0x2814, 0x2424, 0x2244, 0x2184, 
  67. 0x2184, 0x2244, 0x2424, 0x2814, 0x300C, 0x3FFC, 0x4002, 0x0000 };
  68.  
  69. static int check_hi_off[] = {
  70. 0x0000, 0x7FFF, 0x4001, 0x4001, 0x4001, 0x4001, 0x4001, 0x4001,
  71. 0x4001, 0x4001, 0x4001, 0x4001, 0x4001, 0x4001, 0x4001, 0x7FFF,
  72. 0x0000, 0x7FFE, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002,
  73. 0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x7FFE, 0x0000,
  74. 0x0000, 0x7FFE, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002,
  75. 0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x7FFE, 0x0000,
  76. 0x0000, 0x0000, 0x3FFC, 0x2004, 0x2004, 0x2004, 0x2004, 0x2004, 
  77. 0x2004, 0x2004, 0x2004, 0x2004, 0x2004, 0x3FFC, 0x0000, 0x0000,
  78. 0x0000, 0x0000, 0x3FFC, 0x2004, 0x2004, 0x2004, 0x2004, 0x2004, 
  79. 0x2004, 0x2004, 0x2004, 0x2004, 0x2004, 0x3FFC, 0x0000, 0x0000 };
  80.  
  81. static int check_lo_on[] = 
  82. { 0x7FFC, 0x701C, 0x4C64, 0x4384, 0x4C64, 0x701C, 0x7FFC ,0x0000 };
  83.  
  84. static int check_lo_off[] = 
  85. { 0x7FFC, 0x4004, 0x4004, 0x4004, 0x4004, 0x4004, 0x7FFC ,0x0000 };
  86.  
  87. static int cycle_hi[] = {
  88. 0x0000, 0x1000, 0x19C0, 0x1C30, 0x1E08, 0x0008, 0x2004, 0x2004,
  89. 0x2004, 0x2004, 0x1000, 0x1078, 0x0C38, 0x0398, 0x0008, 0x0000,
  90. 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0FF0, 0x1FF8, 0x3FFC, 0x0000,
  91. 0x0000, 0x3FFC, 0x1FF8, 0x0FF0, 0x07E0, 0x03C0, 0x0180, 0x0000 };
  92.  
  93. static int cycle_lo[] = {
  94. 0x0800, 0x0FE0, 0x0F18, 0x2004, 0x2004, 0x18F0, 0x07F0, 0x0010 };
  95.  
  96. static int arrow_up_lo_sel[] = {
  97. 0x0000, 0x0180, 0x0180, 0x03C0, 0x03C0, 0x07E0, 0x07E0, 0x0000 };
  98. static int arrow_up_lo[] = {
  99. 0x0000, 0x0180, 0x0180, 0x0240, 0x0240, 0x0420, 0x07E0, 0x0000};
  100.  
  101. static int arrow_dn_lo_sel[] = {
  102. 0x0000, 0x07E0, 0x07E0, 0x03E0, 0x03C0, 0x0180, 0x0180, 0x0000};
  103. static int arrow_dn_lo[] = {
  104. 0x0000, 0x07E0, 0x0420, 0x0240, 0x0240, 0x0180, 0x0180, 0x0000};
  105.  
  106. static int arrow_right_lo_sel[] = {
  107. 0x0000, 0x3C00, 0x3FC0, 0x3FFC, 0x3FC0, 0x3C00, 0x0000 , 0x0000};
  108. static int arrow_right_lo[] = {
  109. 0x0000, 0x3C00, 0x23C0, 0x203C, 0x23C0, 0x3C00, 0x0000 , 0x0000};
  110.  
  111. static int arrow_left_lo_sel[] = {
  112. 0x0000, 0x001E, 0x01FE, 0x1FFE, 0x01FE, 0x001E, 0x0000, 0x0000 };
  113. static int arrow_left_lo[] = {
  114. 0x0000, 0x001E, 0x01E2, 0x1E02, 0x01E2, 0x001E, 0x0000, 0x0000 };
  115.  
  116. static int arrow_up_hi_sel[] = {
  117. 0x0000, 0x0000, 0x0080, 0x00C0, 0x01C0, 0x01E0, 0x03E0, 0x03F0, 
  118. 0x07F0, 0x07F8, 0x0FF8, 0x0FFC, 0x1FFC, 0x1FFE, 0x0FFE, 0x0000,
  119. 0x0000, 0x0000, 0x0180, 0x0180, 0x03C0, 0x03C0, 0x07E0, 0x07E0, 
  120. 0x0FF0, 0x0FF0, 0x1FF8, 0x1FF8, 0x3FFC, 0x3FFC, 0x0000, 0x0000,
  121. 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0FF0, 0x1FF8, 0x3FFC, 0x7FFE, 
  122. 0x7FFE, 0x7FFE, 0x0FF0, 0x0FF0, 0x0FF0, 0x0FF0, 0x0000, 0x0000 };
  123.  
  124. static int arrow_up_hi[] = {
  125. 0x0000, 0x0000, 0x0080, 0x00C0, 0x0140, 0x0160, 0x0220, 0x0230, 
  126. 0x0410, 0x0418, 0x0808, 0x080C, 0x1004, 0x1FFE, 0x0FFE, 0x0000,
  127. 0x0000, 0x0000, 0x0180, 0x0180, 0x0240, 0x0240, 0x0420, 0x0420, 
  128. 0x0810, 0x0810, 0x1008, 0x1008, 0x2004, 0x3FFC, 0x0000, 0x0000,
  129. 0x0000, 0x0180, 0x03C0, 0x0660, 0x0C30, 0x1818, 0x300C, 0x6006, 
  130. 0x4002, 0x781E, 0x0810, 0x0810, 0x0810, 0x0FF0, 0x0000, 0x0000 };
  131.  
  132. static int arrow_dn_hi_sel[] = {
  133. 0x0000, 0x0000, 0x1FFC, 0x1FFC, 0x1FFC, 0x0FF8, 0x0FF8, 0x07F0, 
  134. 0x07F0, 0x03E0, 0x03E0, 0x01C0, 0x01C0, 0x0080, 0x0000, 0x0000,
  135. 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x1FF8, 0x1FF8, 0x0FF0, 0x0FF0, 
  136. 0x07E0, 0x07E0, 0x03C0, 0x03C0, 0x0180, 0x0180, 0x0000, 0x0000,
  137. 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0FF0, 0x0FF0, 0x7FFE, 0x7FFE, 
  138. 0x7FFE, 0x3FFC, 0x1FF8, 0x0FF0, 0x07E0, 0x03C0, 0x0180, 0x0000 };
  139.  
  140. static int arrow_dn_hi[] = {
  141. 0x0000, 0x0000, 0x1FFC, 0x100C, 0x180C, 0x0818, 0x0C18, 0x0430, 
  142. 0x0630, 0x0260, 0x0360, 0x01C0, 0x01C0, 0x0080, 0x0000, 0x0000,
  143. 0x0000, 0x0000, 0x3FFC, 0x2004, 0x1008, 0x1008, 0x0810, 0x0810, 
  144. 0x0420, 0x0420, 0x0240, 0x0240, 0x0180, 0x0180, 0x0000, 0x0000,
  145. 0x0000, 0x0000, 0x0FF0, 0x0810, 0x0810, 0x0810, 0x781E, 0x4002, 
  146. 0x6006, 0x300C, 0x1818, 0x0C30, 0x0660, 0x03C0, 0x0180, 0x0000 };
  147.  
  148. static int arrow_left_hi_sel[] = {
  149. 0x0000, 0x0000, 0x000C, 0x003E, 0x00FE, 0x03FE, 0x0FFE, 0x3FFE, 
  150. 0x1FFE, 0x07FE, 0x01FE, 0x007E, 0x001E, 0x0006, 0x0000, 0x0000,
  151. 0x0000, 0x0000, 0x000C, 0x003C, 0x00FC, 0x03FC, 0x0FFC, 0x3FFC, 
  152. 0x3FFC, 0x0FFC, 0x03FC, 0x00FC, 0x003C, 0x000C, 0x0000, 0x0000,
  153. 0x0000, 0x01C0, 0x03C0, 0x07C0, 0x0FFC, 0x1FFC, 0x3FFC, 0x7FFC, 
  154. 0x7FFC, 0x3FFC, 0x1FFC, 0x0FFC, 0x07C0, 0x03C0, 0x01C0, 0x0000 };
  155.  
  156. static int arrow_left_hi[] = {
  157. 0x0000, 0x0000, 0x000C, 0x0036, 0x00C6, 0x0306, 0x0C06, 0x3006, 
  158. 0x1C06, 0x0706, 0x01C6, 0x0076, 0x001E, 0x0006, 0x0000, 0x0000,
  159. 0x0000, 0x0000, 0x000C, 0x0034, 0x00C4, 0x0304, 0x0C04, 0x3004, 
  160. 0x3004, 0x0C04, 0x0304, 0x00C4, 0x0034, 0x000C, 0x0000, 0x0000,
  161. 0x0000, 0x01C0, 0x0340, 0x0640, 0x0C7C, 0x1804, 0x3004, 0x6004, 
  162. 0x6004, 0x3004, 0x1804, 0x0C7C, 0x0640, 0x0340, 0x01C0, 0x0000 };
  163.  
  164. static int arrow_right_hi_sel[] = {
  165. 0x0000, 0x0000, 0x3000, 0x3C00, 0x3F00, 0x3FC0, 0x3FF0, 0x3FFC, 
  166. 0x3FFE, 0x3FF8, 0x3FE0, 0x3F80, 0x3E00, 0x1800, 0x0000, 0x0000,
  167. 0x0000, 0x0000, 0x3000, 0x3C00, 0x3F00, 0x3FC0, 0x3FF0, 0x3FFC, 
  168. 0x3FFC, 0x3FF0, 0x3FC0, 0x3F00, 0x3C00, 0x3000, 0x0000, 0x0000,
  169. 0x0000, 0x0380, 0x03C0, 0x03E0, 0x3FF0, 0x3FF8, 0x3FFC, 0x3FFE, 
  170. 0x3FFE, 0x3FFC, 0x3FF8, 0x3FF0, 0x03E0, 0x03C0, 0x0380, 0x0000 };
  171.  
  172. static int arrow_right_hi[] = {
  173. 0x0000, 0x0000, 0x3000, 0x2C00, 0x2300, 0x20C0, 0x2030, 0x200C, 
  174. 0x203E, 0x20F8, 0x23E0, 0x2F80, 0x3E00, 0x1800, 0x0000, 0x0000,
  175. 0x0000, 0x0000, 0x3000, 0x2C00, 0x2300, 0x20C0, 0x2030, 0x200C, 
  176. 0x200C, 0x2030, 0x20C0, 0x2300, 0x2C00, 0x3000, 0x0000, 0x0000,
  177. 0x0000, 0x0380, 0x02C0, 0x0260, 0x3E30, 0x2018, 0x200C, 0x2006, 
  178. 0x2006, 0x200C, 0x2018, 0x3E30, 0x0260, 0x02C0, 0x0380, 0x0000 };
  179.  
  180. static IMAGE radio_im[] = {
  181. {radio_hi_on+32,radio_hi_off+32,radio_lo_on,radio_lo_off},
  182. {radio_hi_on,radio_hi_off,NULL,NULL},
  183. {radio_hi_on+16,radio_hi_off+16,NULL,NULL},
  184. {radio_hi_on+48,radio_hi_off+48,NULL,NULL},
  185. {radio_hi_on+64,radio_hi_off+80,NULL,NULL},
  186. {radio_hi_on+80,radio_hi_off+64,NULL,NULL},
  187. {radio_hi_on+96,radio_hi_off+96,NULL,NULL},
  188. {radio_hi_on+112,radio_hi_off+112,NULL,NULL} };
  189.  
  190. static IMAGE check_im[] = {
  191. {check_hi_on+16,check_hi_off+16,check_lo_on,check_lo_off},
  192. {check_hi_on,check_hi_off,NULL,NULL},
  193. {check_hi_on+32,check_hi_off+48,NULL,NULL},
  194. {check_hi_on+48,check_hi_off+32,NULL,NULL},
  195. {check_hi_on+64,check_hi_off+64,NULL,NULL} };
  196.  
  197. static IMAGE cycle_im[] = {
  198. {cycle_hi,NULL,cycle_lo,NULL},
  199. {cycle_hi+16,NULL,NULL,NULL} };
  200.  
  201. static IMAGE arrow_up_im[] = {
  202. {arrow_up_hi_sel,arrow_up_hi,arrow_up_lo_sel,arrow_up_lo},
  203. {arrow_up_hi_sel+16,arrow_up_hi+16,NULL,NULL},
  204. {arrow_up_hi_sel+32,arrow_up_hi+32,NULL,NULL} };
  205.  
  206. static IMAGE arrow_dn_im[] = {
  207. {arrow_dn_hi_sel,arrow_dn_hi,arrow_dn_lo_sel,arrow_dn_lo},
  208. {arrow_dn_hi_sel+16,arrow_dn_hi+16,NULL,NULL},
  209. {arrow_dn_hi_sel+32,arrow_dn_hi+32,NULL,NULL} };
  210.  
  211. static IMAGE arrow_left_im[] = {
  212. {arrow_left_hi_sel,arrow_left_hi,arrow_left_lo_sel,arrow_left_lo},
  213. {arrow_left_hi_sel+16,arrow_left_hi+16,NULL,NULL},
  214. {arrow_left_hi_sel+32,arrow_left_hi+32,NULL,NULL} };
  215.  
  216. static IMAGE arrow_right_im[] = {
  217. {arrow_right_hi_sel,arrow_right_hi,arrow_right_lo_sel,arrow_right_lo},
  218. {arrow_right_hi_sel+16,arrow_right_hi+16,NULL,NULL},
  219. {arrow_right_hi_sel+32,arrow_right_hi+32,NULL,NULL} };
  220.  
  221. IMAGES radios = { 8, radio_im };
  222. IMAGES checks = { 5, check_im };
  223. IMAGES cycles = { 2, cycle_im };
  224. IMAGES arrows_up    = { 3, arrow_up_im };
  225. IMAGES arrows_down    = { 3, arrow_dn_im };
  226. IMAGES arrows_right    = { 3, arrow_right_im };
  227. IMAGES arrows_left    = { 3, arrow_left_im };
  228.