42
42
#include " precomp.hpp"
43
43
#include " utils.hpp"
44
44
45
+ int validateToInt (size_t sz)
46
+ {
47
+ int valueInt = (int )sz;
48
+ CV_Assert ((size_t )valueInt == sz);
49
+ return valueInt;
50
+ }
51
+
45
52
#define SCALE 14
46
53
#define cR (int )(0.299 *(1 << SCALE) + 0.5 )
47
54
#define cG (int )(0.587 *(1 << SCALE) + 0.5 )
@@ -537,23 +544,25 @@ uchar* FillColorRow1( uchar* data, uchar* indices, int len, PaletteEntry* palett
537
544
{
538
545
uchar* end = data + len*3 ;
539
546
547
+ const PaletteEntry p0 = palette[0 ], p1 = palette[1 ];
548
+
540
549
while ( (data += 24 ) < end )
541
550
{
542
551
int idx = *indices++;
543
- *((PaletteEntry*)(data - 24 )) = palette[ (idx & 128 ) != 0 ] ;
544
- *((PaletteEntry*)(data - 21 )) = palette[ (idx & 64 ) != 0 ] ;
545
- *((PaletteEntry*)(data - 18 )) = palette[ (idx & 32 ) != 0 ] ;
546
- *((PaletteEntry*)(data - 15 )) = palette[ (idx & 16 ) != 0 ] ;
547
- *((PaletteEntry*)(data - 12 )) = palette[ (idx & 8 ) != 0 ] ;
548
- *((PaletteEntry*)(data - 9 )) = palette[ (idx & 4 ) != 0 ] ;
549
- *((PaletteEntry*)(data - 6 )) = palette[ (idx & 2 ) != 0 ] ;
550
- *((PaletteEntry*)(data - 3 )) = palette[ (idx & 1 ) != 0 ] ;
552
+ *((PaletteEntry*)(data - 24 )) = (idx & 128 ) ? p1 : p0 ;
553
+ *((PaletteEntry*)(data - 21 )) = (idx & 64 ) ? p1 : p0 ;
554
+ *((PaletteEntry*)(data - 18 )) = (idx & 32 ) ? p1 : p0 ;
555
+ *((PaletteEntry*)(data - 15 )) = (idx & 16 ) ? p1 : p0 ;
556
+ *((PaletteEntry*)(data - 12 )) = (idx & 8 ) ? p1 : p0 ;
557
+ *((PaletteEntry*)(data - 9 )) = (idx & 4 ) ? p1 : p0 ;
558
+ *((PaletteEntry*)(data - 6 )) = (idx & 2 ) ? p1 : p0 ;
559
+ *((PaletteEntry*)(data - 3 )) = (idx & 1 ) ? p1 : p0 ;
551
560
}
552
561
553
- int idx = indices[0 ] << 24 ;
562
+ int idx = indices[0 ];
554
563
for ( data -= 24 ; data < end; data += 3 , idx += idx )
555
564
{
556
- PaletteEntry clr = palette[ idx < 0 ] ;
565
+ const PaletteEntry clr = ( idx & 128 ) ? p1 : p0 ;
557
566
WRITE_PIX ( data, clr );
558
567
}
559
568
@@ -565,23 +574,25 @@ uchar* FillGrayRow1( uchar* data, uchar* indices, int len, uchar* palette )
565
574
{
566
575
uchar* end = data + len;
567
576
577
+ const uchar p0 = palette[0 ], p1 = palette[1 ];
578
+
568
579
while ( (data += 8 ) < end )
569
580
{
570
581
int idx = *indices++;
571
- *((uchar*)(data - 8 )) = palette[ (idx & 128 ) != 0 ] ;
572
- *((uchar*)(data - 7 )) = palette[ (idx & 64 ) != 0 ] ;
573
- *((uchar*)(data - 6 )) = palette[ (idx & 32 ) != 0 ] ;
574
- *((uchar*)(data - 5 )) = palette[ (idx & 16 ) != 0 ] ;
575
- *((uchar*)(data - 4 )) = palette[ (idx & 8 ) != 0 ] ;
576
- *((uchar*)(data - 3 )) = palette[ (idx & 4 ) != 0 ] ;
577
- *((uchar*)(data - 2 )) = palette[ (idx & 2 ) != 0 ] ;
578
- *((uchar*)(data - 1 )) = palette[ (idx & 1 ) != 0 ] ;
582
+ *((uchar*)(data - 8 )) = (idx & 128 ) ? p1 : p0 ;
583
+ *((uchar*)(data - 7 )) = (idx & 64 ) ? p1 : p0 ;
584
+ *((uchar*)(data - 6 )) = (idx & 32 ) ? p1 : p0 ;
585
+ *((uchar*)(data - 5 )) = (idx & 16 ) ? p1 : p0 ;
586
+ *((uchar*)(data - 4 )) = (idx & 8 ) ? p1 : p0 ;
587
+ *((uchar*)(data - 3 )) = (idx & 4 ) ? p1 : p0 ;
588
+ *((uchar*)(data - 2 )) = (idx & 2 ) ? p1 : p0 ;
589
+ *((uchar*)(data - 1 )) = (idx & 1 ) ? p1 : p0 ;
579
590
}
580
591
581
- int idx = indices[0 ] << 24 ;
592
+ int idx = indices[0 ];
582
593
for ( data -= 8 ; data < end; data++, idx += idx )
583
594
{
584
- data[0 ] = palette[ idx < 0 ] ;
595
+ data[0 ] = ( idx & 128 ) ? p1 : p0 ;
585
596
}
586
597
587
598
return data;
0 commit comments