home *** CD-ROM | disk | FTP | other *** search
- '-----------------------------------------------------------
- ' ICOCON.BAS
- ' Copyright (C) 1991 Kay Glahn & DMV-Verlag
- ' Konvertieren von Icons in Bitmaps und umgekehrt
- ' Compiler: Quick Basic 4.5
- '-----------------------------------------------------------
- DECLARE SUB BmpToIco ()
- DECLARE SUB IcoToBmp ()
-
- ON ERROR GOTO ErrorHandler
-
- PRINT "Icon-/Bitmap-Converter ";
- PRINT "(C) 1991 Kay Glahn & DMV-Verlag"
- PRINT
- PRINT "(1) Icon --> Bitmap"
- PRINT "(2) Bitmap --> Icon"
- INPUT "Gewünschte Konvertierung : ", A$
- PRINT
- IF A$ = "1" THEN
- INPUT "Icondatei : ", Dat1$
- INPUT "Bitmapdatei : ", Dat2$
- ELSE
- INPUT "Bitmapdatei : ", Dat2$
- INPUT "Icondatei : ", Dat1$
- END IF
- PRINT
- IF NOT INSTR(Dat2$, ".") THEN Dat2$ = Dat2$ + ".BMP"
- IF NOT INSTR(Dat1$, ".") THEN Dat1$ = Dat1$ + ".ICO"
-
- OPEN Dat1$ FOR BINARY AS #1
- OPEN Dat2$ FOR BINARY AS #2
-
- SELECT CASE VAL(A$)
- CASE 1
- IF LOF(1) = 0 THEN
- CLOSE
- KILL Dat1$
- PRINT "Datei "; Dat1$; " ist nicht vorhanden!"
- END
- END IF
- CALL IcoToBmp
- CASE 2
- IF LOF(2) = 0 THEN
- CLOSE
- KILL Dat2$
- PRINT "Datei "; Dat2$; " ist nicht vorhanden!"
- END
- END IF
- CALL BmpToIco
- CASE ELSE
- PRINT "Falsche Parameter !"
- END SELECT
- CLOSE
- END
-
- ErrorHandler:
- PRINT "Systemfehler !"
- CLOSE
- END
-
- ' Konvertierung von Bitmap zu Icon
- SUB BmpToIco
- Kennung$ = SPACE$(2)
- GET #2, 1, Kennung$
- IF Kennung$ = "BM" THEN
- GET #2, 15, InfoHeadLen&
- InfoHead$ = SPACE$(InfoHeadLen&)
- GET #2, 15, InfoHead$
- GET #2, 47, ColEntr&
- GET #2, 29, BitperPix%
- IF BitperPix% <> 1 AND BitperPix% <> 3 AND BitperPix% <> 4 THEN
- PRINT "Ungültige Anzahl Farben !"
- CLOSE
- END
- END IF
- IF ColEntr& = 0 THEN ColEntr& = 2 ^ BitperPix%
- ColTable$ = SPACE$(ColEntr& * 4)
- GET #2, 15 + InfoHeadLen&, ColTable$
- GET #2, 11, BildDatBegin&
- GET #2, 3, DatLen&
- Bildlen& = DatLen& - BildDatBegin&
- BildDatBegin& = BildDatBegin& + 1
- IF Bildlen& > 32768 THEN
- PRINT "Falsches Bildformat !"
- CLOSE
- END
- END IF
- Bild1$ = SPACE$(Bildlen&)
- GET #2, BildDatBegin&, Bild1$
- GET #2, 19, Breite&
- GET #2, 23, Hohe&
- IF Breite& <> 16 AND Breite& <> 32 AND Breite& <> 64 THEN
- PRINT "Falsche Bildbreite !"
- CLOSE
- END
- END IF
- IF Hohe& <> 16 AND Hohe& <> 32 AND Hohe& <> 64 THEN
- PRINT "Falsche Bildhöhe !"
- CLOSE
- END
- END IF
- Bild2$ = STRING$(Breite& * Hohe& / 8, 0)
- Null% = 0
- PUT #1, 1, Null%
- Art% = 1
- PUT #1, 3, Art%
- AnzBilder% = 1
- PUT #1, 5, AnzBilder%
- Breite$ = CHR$(Breite&)
- Hohe$ = CHR$(Hohe&)
- Farben$ = CHR$(2 ^ BitperPix%)
- PUT #1, 7, Breite$
- PUT #1, 8, Hohe$
- PUT #1, 9, Farben$
- Null$ = CHR$(0)
- PUT #1, 10, Null$
- PUT #1, 11, Null%
- PUT #1, 13, Null%
- Bild2Len& = Hohe& * Breite& / 8
- ColTableLen& = ColEntr& * 4
- newbildlen& = InfoHeadLen& + Bildlen& + Bild2Len& + ColTableLen&
- PUT #1, 15, newbildlen&
- NewInfoHeadBegin& = 22
- PUT #1, 19, NewInfoHeadBegin&
- PUT #1, , InfoHead$
- PUT #1, , ColTable$
- PUT #1, , Bild1$
- PUT #1, , Bild2$
- NewHohe& = Hohe& * 2
- PUT #1, 31, NewHohe&
- PRINT "Konvertierung beendet !"
- ELSE
- PRINT "Ungültige Bitmap-Datei !"
- END IF
- END SUB
-
- ' Konvertierung von Icon zu Bitmap
- SUB IcoToBmp
- GET #1, 3, Art%
- IF Art% <> 1 THEN
- PRINT "Ungültige Icondatei "
- CLOSE
- END
- END IF
- GET #1, 5, AnzBilder%
- IF AnzBilder% = 1 THEN
- GET #1, 19, InfoHeadBegin&
- InfoHeadBegin& = InfoHeadBegin& + 1
- GET #1, InfoHeadBegin&, InfoHeadLen&
- InfoHeadLen& = InfoHeadLen& + 1
- InfoHead$ = SPACE$(InfoHeadLen&)
- GET #1, InfoHeadBegin&, InfoHead$
- GET #1, InfoHeadBegin& + 32, ColEntr&
- GET #1, InfoHeadBegin& + 14, BitperPix%
- IF ColEntr& = 0 THEN ColEntr& = 2 ^ BitperPix%
- ColTable$ = SPACE$(ColEntr& * 4)
- GET #1, InfoHeadBegin& + InfoHeadLen&, ColTable$
- Breite$ = SPACE$(1)
- GET #1, 7, Breite$
- Hohe$ = SPACE$(1)
- GET #1, 8, Hohe$
- GET #1, InfoHeadBegin& + 20, Bildlen&
- newbildlen& = Bildlen& - ASC(Breite$) * ASC(Hohe$) / 8
- Bild$ = SPACE$(newbildlen&)
- GET #1, InfoHeadBegin& + InfoHeadLen& + ColEntr& * 4, Bild$
- GET #1, 15, BildDatenLen&
- DatLen& = InfoHeadBegin& + BildDatenLen&
- NewBildDatBegin& = 14 + InfoHeadLen& + ColEntr& * 4 - 1
- Kennung$ = "BM"
- PUT #2, 1, Kennung$
- PUT #2, 3, DatLen&
- Nul% = 0
- PUT #2, 7, Nul%
- PUT #2, 9, Nul%
- PUT #2, 11, NewBildDatBegin&
- PUT #2, , InfoHead$
- PUT #2, , ColTable$
- PUT #2, , Bild$
- Hohe& = ASC(Hohe$)
- PUT #2, 23, Hohe&
- PRINT "Konvertierung beendet !"
- ELSE
- PRINT "Datei enthält mehr als ein Bild !"
- END IF
- END SUB
-
-