import com.ms.wfc.io.*; import com.ms.wfc.core.*; import com.ms.wfc.app.*; import com.ms.wfc.ui.*; import com.ms.wfc.util.*; import java.util.Vector; import com.ms.lang.*; import com.ms.*; public class RoofExt { Vector roofPairs = new Vector(); public static void main (String[] args){ RoofExt main = new RoofExt(); main.FileMenuOpen_click(args[0]); for ( int i = 0 ; i < main.roofPairs.size() ; i++ ) { RoofPair aRoofPair = (RoofPair)(main.roofPairs.elementAt(i)); String index = Integer.toString(i); while(index.length() < 3 ) index = "0" + index; File intOut = File.create("int" + index + ".bmp"); aRoofPair.intImage.save(intOut); File extOut = File.create("ext" + index + ".bmp"); aRoofPair.extImage.save(extOut); } } public void FileMenuOpen_click(String filename) { String inFileName = filename; int type; roofPairs = new Vector(1); File rfmFile = new File(inFileName,FileMode.OPEN,FileAccess.READ,FileShare.READ); rfmFile.setPosition(4); int i,j; int roofs =rfmFile.readInt(); short[][] intData = new short[roofs][]; short[][] extData = new short[roofs][]; int[] verticeCounts = new int[roofs]; Point[][] verticeData = new Point[roofs][12]; int[] imageWidthTimesTwo = new int[roofs]; // // [i][0] // // [i][1] // Point[][] corners = new Point[roofs][2]; int x1,x2,y1,y2; int[] widths = new int[roofs]; int[] heights = new int[roofs]; long[] intStart = new long[roofs]; long[] extStart = new long[roofs]; if ( roofs > 0 ) { rfmFile.setPosition(16); for ( i = 0 ; i < roofs ; i++ ) { rfmFile.setPosition(20+i*132); verticeCounts[i] = (rfmFile.readInt()); for ( j = 0 ; j < verticeCounts[i] ; j++ ) { verticeData[i][j] = new Point((rfmFile.readInt()),(rfmFile.readInt())); } rfmFile.setPosition(16+i*132+104); imageWidthTimesTwo[i] = (rfmFile.readInt()); x1 = (rfmFile.readInt()); y1 = (rfmFile.readInt()); x2 = (rfmFile.readInt()); y2 = (rfmFile.readInt()); corners[i][0] = new Point(x1,y1); corners[i][1] = new Point(x2,y2); widths[i] = imageWidthTimesTwo[i]/2; extStart[i] = (long)((rfmFile.readInt())); intStart[i] = (long)((rfmFile.readInt())); heights[i] = (((int)(intStart[i]-extStart[i])/2)/widths[i]); } for ( i = 0 ; i < roofs ; i++ ) { rfmFile.setPosition(extStart[i]); extData[i] = new short[widths[i]*heights[i]]; extData[i] = rfmFile.readShorts(extData[i].length); rfmFile.setPosition(intStart[i]); intData[i] = new short[widths[i]*heights[i]]; intData[i] = rfmFile.readShorts(intData[i].length); RoofPair thisAdd = new RoofPair(intData[i],extData[i],widths[i],heights[i],corners[i][0],(corners[i][1].x-corners[i][0].x)); roofPairs.addElement(thisAdd); } rfmFile.close(); intData = null; extData = null; widths = null; heights = null; corners = null; } } public class RoofPair { public Bitmap intImage; public Bitmap extImage; com.ms.wfc.io.File intFile; com.ms.wfc.io.File extFile; short[] intData; short[] extData; Vector vertices = new Vector(1); final Color transparent=Color.WHITE; int height,width; int x,y; public RoofPair() { } public Bitmap arrayToBitmap(short[] pixelData,int width,int height) { Bitmap tempBitmap = new Bitmap(width,height); Graphics tempG = tempBitmap.getGraphics(); int r,g,b; int j,i; for ( j = 0 ; j < height ; j++ ) { for ( i = 0 ; i < width ; i++ ) { r = (( pixelData[j*width+i] >> 10 ) << 3 )& 0xff; g = (( pixelData[j*width+i] >> 5 ) << 3 )& 0xff; b = (( pixelData[j*width+i] ) << 3 )& 0xff; if ( pixelData[j*width+i] == 0xFF7F || pixelData[j*width+i] == 0x7FFF) { r = 0xFF; g = 0xFF; b = 0xFF; } tempG.setPixel(i,j,new Color(r,g,b)); } } tempG.dispose(); return(tempBitmap); } public RoofPair(short[] intArray2,short[] extArray2,int width,int height,Point origin,int trueWidth) { // RoofPair constructor int i,j; for ( i = 0 ; i < height ; i++ ) { for ( j = trueWidth ; j < width ; j++ ) { intArray2[i*width+j] = (short)0x7FFF; extArray2[i*width+j] = (short)0x7FFF; } } extImage = arrayToBitmap(extArray2,width,height); intImage = arrayToBitmap(intArray2,width,height); extImage.setTransparent(true);extImage.setTransparentColor(transparent); intImage.setTransparent(true);intImage.setTransparentColor(transparent); } // end RoofPair constructor } }