home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 148.lha / Planes_v1.1 / Fixicon.bas < prev    next >
BASIC Source File  |  1980-11-15  |  3KB  |  92 lines

  1.  
  2. ' FixIcon by David M. Pochron v.1.0  7/16/88
  3. ' Sets icon to 3 bitplanes so system won't crash in 16-color WB
  4.  
  5. ' (Yes folks I could program this in C or assembly but what the heck...it works.)
  6.  
  7.  
  8. DEFLNG a-z
  9.  
  10. DECLARE FUNCTION PutDiskObject LIBRARY
  11. DECLARE FUNCTION GetDiskObject LIBRARY
  12.  
  13. LIBRARY "icon.library"
  14.  
  15. INPUT "Enter icon name (no .info) > ",f$:f$=f$+CHR$(0)
  16. obj=GetDiskObject(SADD(f$))
  17. IF obj<>0 THEN
  18.   img1=PEEKL(obj+22):img2=PEEKL(obj+26)
  19.   'GOSUB show    'unREM this if you want to see all of icon's struct. values
  20.   a=PEEKW(img1+8)
  21.   PRINT "Icon has";a;"bitplanes and ";
  22.   IF img2=0 THEN
  23.     PRINT "no alt image."
  24.     PRINT :PRINT "Since 4-color icons with no alt image work fine"
  25.     PRINT "in the 16-color WB do you still wish to force it to 3 bitplanes";
  26.     INPUT a$:IF UCASE$(a$)<>"Y" THEN cleanup
  27.   ELSE
  28.     PRINT "has an alt. image."
  29.   END IF
  30.   IF PEEKW(obj+16)=5 THEN PRINT :PRINT "Cannot fix backfill icons due to system incompatability.":PRINT "(Backfill only works in 4-color WB on 1.2)":GOTO cleanup
  31.   IF a<3 THEN                'check depth to see if fix is needed
  32.     PRINT "Fixing...";
  33.     POKEW img1+8,3           'set depth
  34.     POKE img1+14,3           'set planepick
  35.     IF img2<>0 THEN POKEW img2+8,3:POKE img2+14,3   'do same for alt image if exists
  36.     e=PutDiskObject(SADD(f$),obj)
  37.     IF e=0 THEN PRINT "  Error writing icon!" ELSE PRINT "Done."
  38.   ELSE
  39.     PRINT "No need to fix...enough bitplanes already."
  40.   END IF
  41.   cleanup:FreeDiskObject obj
  42. ELSE
  43.   PRINT "No icon found by that name!"
  44. END IF
  45.  
  46. LIBRARY CLOSE
  47. END
  48.   
  49.     
  50. show:
  51. PRINT obj
  52. PRINT PEEKW(obj+0),"magic number"
  53. PRINT PEEKW(obj+2),"version"
  54. PRINT "gadget structures (at +4)"
  55. PRINT "  ";PEEKL(obj+4),"Next gadget"
  56. PRINT "  ";PEEKW(obj+8),"Leftedge"
  57. PRINT "  ";PEEKW(obj+10),"Topedge"
  58. PRINT "  ";PEEKW(obj+12),"X size"
  59. PRINT "  ";PEEKW(obj+14),"Y size"
  60. PRINT "  ";PEEKW(obj+16),"Activation type"
  61. PRINT "  ";PEEKW(obj+20),"Gadget type
  62. PRINT "  ";PEEKL(obj+22),"image structptr."
  63. img=img1:GOSUB imagemap
  64. PRINT "  ";PEEKL(obj+26),"alt. imageptr"
  65. img=img2:GOSUB imagemap
  66. PRINT "  ";PEEKL(obj+30),"intuitext ptr"
  67. PRINT "  ";PEEKL(obj+38),"Specialinfo"
  68. PRINT "  ";PEEKW(obj+42),"I.D."
  69. PRINT PEEK(obj+48),"Icon type"
  70. PRINT PEEKL(obj+52),"default tool"
  71. PRINT PEEKL(obj+54),"tooltypes"
  72. PRINT PEEKL(obj+58),"current xpos"
  73. PRINT PEEKL(obj+62),"current ypos"
  74. PRINT PEEKL(obj+66),"drawer data"
  75. PRINT PEEKL(obj+70),"tool window"
  76. PRINT PEEKL(obj+74),"stack"
  77. RETURN
  78.  
  79. imagemap:
  80. IF img=0 THEN RETURN
  81. PRINT "    ";PEEKW(img),"Leftedge"
  82. PRINT "    ";PEEKW(img+2),"TopEdge"
  83. PRINT "    ";PEEKW(img+4),"Width"
  84. PRINT "    ";PEEKW(img+6),"Height"
  85. PRINT "    ";PEEKW(img+8),"Depth"
  86. PRINT "    ";PEEKL(img+10),"Image data ptr."
  87. PRINT "    ";PEEK(img+14),"PlanePick"
  88. PRINT "    ";PEEK(img+15),"PlaneOnOff"
  89. PRINT "    ";PEEKL(img+16),"Next Image"
  90. RETURN
  91.  
  92.