home *** CD-ROM | disk | FTP | other *** search
- zefile$ = DIR$("*.tga")
- how% = 0
- DO UNTIL zefile$ = ""
- zefile$ = LEFT$(zefile$, INSTR(zefile$, ".") - 1)
- how% = how% + 1
- CLS
- PRINT "Run Length Encoding of 24 bit Targa: "; zefile$
- PRINT "File #"; how%
- OPEN zefile$ + ".tga" FOR BINARY AS #1
- x$ = " "
- y$ = " "
- z$ = " "
- aver@ = 0
- aveg@ = 0
- aveb@ = 0
- ave@ = 0
- GET #1, 13, x$
- GET #1, 15, y$
- GET #1, 18, z$
- x% = CVI(x$)
- y% = CVI(y$)
- PRINT "Total X ="; x%
- PRINT " Y ="; y%
- PRINT "Direction = ";
- IF ASC(z$) = 32 THEN
- PRINT "Forward"
- ELSE
- PRINT "Reverse"
- END IF
- PRINT STRING$(80, "-")
- IF x% MOD 4 = 0 THEN
- OPEN zefile$ + ".rle" FOR OUTPUT AS #2
- CLOSE 2
- OPEN zefile$ + ".rle" FOR BINARY AS #2
- l@ = LOF(1) - (x% * 3) + 1
- B$ = SPACE$(x% * 3)
- Rle@ = 1
- IF ASC(z$) = 32 THEN
- start@ = 19
- ender@ = l@
- steper@ = x% * 3
- ELSE
- start@ = l@
- ender@ = 19
- steper@ = -x% * 3
- END IF
- FOR q@ = start@ TO ender@ STEP steper@
- GET #1, q@, B$
- Black% = 0
- Part% = 0
- Org% = 0
- FOR P% = 1 TO x% * 3 STEP 12
- state% = 0
- mask% = 15
- FOR r% = 0 TO 11 STEP 3
- IF ASC(MID$(B$, P% + r%, 1)) < 15 AND ASC(MID$(B$, P% + r% + 1, 1)) < 15 AND ASC(MID$(B$, P% + r% + 2, 1)) < 15 THEN
- state% = state% + 1
- mask% = mask% - 2 ^ (3 - (r% / 3))
- ELSE
- aveb@ = aveb@ + ASC(MID$(B$, P% + r%, 1))
- aveg@ = aveg@ + ASC(MID$(B$, P% + r% + 1, 1))
- aver@ = aver@ + ASC(MID$(B$, P% + r% + 2, 1))
- ave@ = ave@ + 1
- END IF
- NEXT r%
- IF state% = 4 THEN
- IF Part% <> 0 OR Org% <> 0 THEN GOSUB saveit
- Black% = Black% + 1
- ELSEIF state% <> 0 THEN
- IF Black% <> 0 OR Org% <> 0 THEN GOSUB saveit
- Rle$ = "P" + CHR$(mask%)
- PUT #2, Rle@, Rle$
- Rle@ = Rle@ + 2
- ELSE
- IF Part% <> 0 OR Black% <> 0 THEN GOSUB saveit
- Org% = Org% + 1
- END IF
- NEXT P%
- IF Black% <> 0 OR Part% <> 0 OR Org% <> 0 THEN GOSUB saveit
- NEXT q@
- CLOSE
- PRINT
- SHELL "trg2mmp " + zefile$ + ".tga " + zefile$ + ".mmp"
- OPEN zefile$ + ".rgb" FOR OUTPUT AS #3
- PRINT #3, aver@ \ ave@
- PRINT #3, aveg@ \ ave@
- PRINT #3, aveb@ \ ave@
- PRINT #3, 100
- PRINT #3, 100
- END IF
- CLOSE
- zefile$ = DIR$
- LOOP
-
- END
-
- saveit:
- IF Black% <> 0 THEN
- Rle$ = "B" + CHR$(Black%)
- PUT #2, Rle@, Rle$
- Rle@ = Rle@ + 2
- END IF
- IF Part% <> 0 THEN
- Rle$ = "P" + CHR$(Part%)
- PUT #2, Rle@, Rle$
- Rle@ = Rle@ + 2
- END IF
- IF Org% <> 0 THEN
- Rle$ = "O" + CHR$(Org%)
- PUT #2, Rle@, Rle$
- Rle@ = Rle@ + 2
- END IF
- T@ = T@ + Black% + Part% + Org%
- Black% = 0
- Part% = 0
- Org% = 0
- RETURN
-
-