in 2019, we can download cximage600_demo.exe at
http://www.xdp.it/cgi-bin/dl7z.pl?cximage/600/cximage600_demo
But it has a little bug at rotate tif, which orientation=6 or 8.
----------- example 1 --------------------------------------------
in 6.tif, the image data(which strip_offset=0x6e) is
80 //0th row image data= "8 "
a0 //1st row image data= "8 2 "
f0 //2nd row image data= "8 4 2 1"
80 //3rd row image data= "8 "
This tif without rowsPerStrip,
but from the strip_offset in tif_file,
we can see 4 rows image data at here.
And its orientation=6(which file offset=0x4e),
it means row 0=right hand side of image, col 0=top of image.
Clearly, it is a image of capital letter 'F',
no rotate, no (left-right)mirror, no (upside-down)filp.
---------- example 2 ---------------------------------------------
in 8.tif, the image data(which strip_offset=0x6e, too) is
10 //0th row image data= " 1"
f0 //1st row image data= "8 4 2 1"
50 //2nd row image data= " 4 1"
10 //3rd row image data= " 1"
That tif without rowsPerStrip too,
but from the strip_offset in tif_file,
we can see 4 rows image data at there.
And its orientation=8(which file offset=0x4e),
it means row 0=left hand side of image, col 0=bottom of image.
Clearly, it is a image of capital letter 'F',
no rotate, no (left-right)mirror, no (upside-down)filp.
------------ asm ------------------------------------------------
But cximage600_demo.exe show these tifs upside-down.
We can see its' assembly code in cxImg600.asm,
which display function bool CxImageTIF::Decode()'s assembly code
(its' c code can be found in xImaTif.cpp).
And we find it will be ok(no rotate, no mirror, no filp),
after I exchange the "case 6" and "case 8".
That means exchange 2 item in jump_table 0042E818, they
are the 4th item (memory address=0042E828, file offset=2e828) which value=0042E6EB,
and the 6th item (memory address=0042E830, file offset=2e830) which value=0042E74A.
I just modify 2 dword(actually 4 bytes, because the "0042" are same),
so it runs better. Of cause, before modify the exe,
I back up it as "cxImg600.bak".
To prove I just modify 4 bytes,
I input "fc /b cximg600.bak cximg600.exe" in my console.
If i want a file report, i can "fc /b cximg600.bak cximg600.exe > 600.txt".
so I get a text file, which name is "600.txt", and which content is:
Comparing files cximg600.bak and cxImg600.exe
0002E828: EB 4A
0002E829: E6 E7
0002E830: 4A EB
0002E831: E7 E6
------------ after word ------------------------------------------
If you had download a same cxImage exe 6.0, after you notice bugs above, you can
1)send message to www.xdp.it...but it has error 404.
2)download the source code, compile by yourself...even you maybe not a programer.
3)rename your exe as cxImg600.bak, and input "difc.exe 600.txt" in console.
Of course, the name of file is not import.