import sys, re

try:
    ifn = sys.argv[1]
    ofn = sys.argv[2]
    ifl = open(ifn,'r')
except:
    print("Usage: {} <infile.pbm> <outfile.svg>".format(sys.argv[0]))
    sys.exit(1)
    
l = '#'
while l.startswith('#'):
	l = ifl.readline()    
if (not l.startswith('P1')):
	print("{} does not seem to be a text PBM file".format(sys.argv[1]))
l = '#'
while l.startswith('#'):
	l = ifl.readline()    
try:
	[xr,yr] = l.split(' ')
	xrng = int(xr)
	yrng = int(yr)
except:
	print("Cannot determine size of {}".format(sys.argv[1]))
	sys.exit(1)
	
print("PBM file, size {}x{}".format(xrng,yrng))

data = ifl.read()
data = re.sub('[\r\n\s]',' ',data,0).split()
vals = []
for d in data:
	try:
		vals.append(int(d))
	except:
		pass

if (xrng*yrng != len(vals)):
	print("Warning: Inconsistent size of input data\n")

try:
	ofl = open(ofn,'w')
except:
	print("Cannot open {} for writing".format(ofn))
	sys.exit(1)
	
ofl.write('<svg xmlns="http://www.w3.org/2000/svg" width="{}" height="{}">\n'.format(xrng,yrng))
for x in range(0,xrng):
	for y in range(0,yrng):
		if (vals[y*xrng+x] > 0):
			ofl.write('\t<rect x="{}" y="{}" width="1" height="1" style="fill:black" />\n'.format(x,y))
ofl.write('</svg>\n')			
ofl.close()