Explorar el Código

loading unaligned pbm

Ariel Manzur hace 9 años
padre
commit
761b08ec8f
Se han modificado 1 ficheros con 5 adiciones y 5 borrados
  1. 5 5
      drivers/pnm/bitmap_loader_pnm.cpp

+ 5 - 5
drivers/pnm/bitmap_loader_pnm.cpp

@@ -170,15 +170,12 @@ RES ResourceFormatPBM::load(const String &p_path,const String& p_original_path,E
 		}
 		}
 
 
 		DVector<uint8_t>::Read r=token.read();
 		DVector<uint8_t>::Read r=token.read();
-		int bitwidth = width;
-		if (bitwidth % 8)
-			bitwidth+=8-(bitwidth%8);
 			
 			
 		for(int i=0;i<height;i++) {
 		for(int i=0;i<height;i++) {
 			for(int j=0;j<width;j++) {
 			for(int j=0;j<width;j++) {
 
 
 
 
-				char num = r[i*bitwidth+j];
+				char num = r[i*width+j];
 				bm->set_bit(Point2i(j,i),num=='0');
 				bm->set_bit(Point2i(j,i),num=='0');
 			}
 			}
 
 
@@ -197,11 +194,14 @@ RES ResourceFormatPBM::load(const String &p_path,const String& p_original_path,E
 		}
 		}
 
 
 		DVector<uint8_t>::Read r=token.read();
 		DVector<uint8_t>::Read r=token.read();
+		int bitwidth = width;
+		if (bitwidth % 8)
+			bitwidth+=8-(bitwidth%8);
 
 
 		for(int i=0;i<height;i++) {
 		for(int i=0;i<height;i++) {
 			for(int j=0;j<width;j++) {
 			for(int j=0;j<width;j++) {
 
 
-				int ofs = width*i+j;
+				int ofs = bitwidth*i+j;
 
 
 				uint8_t byte = r[ofs/8];
 				uint8_t byte = r[ofs/8];
 				bool bit = (byte>>(7-(ofs%8)))&1;
 				bool bit = (byte>>(7-(ofs%8)))&1;