Ticket #8429: patch.txt

File patch.txt, 3.4 KB (added by anonymous, 10 years ago)

Illustration of changes (quick-n-dirty patch)

Line 
1Index: boost/gil/extension/io/formats/targa/read.hpp
2===================================================================
3--- boost/gil/extension/io/formats/targa/read.hpp (revision 83843)
4+++ boost/gil/extension/io/formats/targa/read.hpp (working copy)
5@@ -127,7 +127,14 @@
6 {
7 this->_scanline_length = this->_info._width * ( this->_info._bits_per_pixel / 8 );
8
9- read_data< bgr8_view_t >( dst_view );
10+ if( this->_info._descriptor & 0x20 )
11+ {
12+ read_data< bgr8_view_t >( flipped_up_down_view( dst_view ) );
13+ }
14+ else
15+ {
16+ read_data< bgr8_view_t >( dst_view );
17+ }
18
19 break;
20 }
21@@ -135,7 +142,14 @@
22 {
23 this->_scanline_length = this->_info._width * ( this->_info._bits_per_pixel / 8 );
24
25- read_data< bgra8_view_t >( dst_view );
26+ if( this->_info._descriptor & 0x20 )
27+ {
28+ read_data< bgra8_view_t >( flipped_up_down_view( dst_view ) );
29+ }
30+ else
31+ {
32+ read_data< bgra8_view_t >( dst_view );
33+ }
34
35 break;
36 }
37@@ -164,12 +178,26 @@
38 {
39 case 24:
40 {
41- read_rle_data< bgr8_view_t >( dst_view );
42+ if( this->_info._descriptor & 0x20 )
43+ {
44+ read_rle_data< bgr8_view_t >( flipped_up_down_view( dst_view ) );
45+ }
46+ else
47+ {
48+ read_rle_data< bgr8_view_t >( dst_view );
49+ }
50 break;
51 }
52 case 32:
53 {
54- read_rle_data< bgra8_view_t >( dst_view );
55+ if( this->_info._descriptor & 0x20 )
56+ {
57+ read_rle_data< bgra8_view_t >( flipped_up_down_view( dst_view ) );
58+ }
59+ else
60+ {
61+ read_rle_data< bgra8_view_t >( dst_view );
62+ }
63 break;
64 }
65 default:
66Index: boost/gil/extension/io/formats/targa/reader_backend.hpp
67===================================================================
68--- boost/gil/extension/io/formats/targa/reader_backend.hpp (revision 83843)
69+++ boost/gil/extension/io/formats/targa/reader_backend.hpp (working copy)
70@@ -94,8 +94,10 @@
71 }
72
73 _info._descriptor = _io_dev.read_uint8();
74- if( ( _info._bits_per_pixel == 24 && _info._descriptor != 0 )
75- || ( _info._bits_per_pixel == 32 && _info._descriptor != 8 )
76+ targa_descriptor::type pixel_type = _info._descriptor & 0xdf;
77+
78+ if( ( _info._bits_per_pixel == 24 && pixel_type != 0 )
79+ || ( _info._bits_per_pixel == 32 && pixel_type != 8 )
80 )
81 {
82 io_error( "Unsupported descriptor for targa file" );