Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: third_party/libtiff/tif_luv.c

Issue 1563103002: XFA: Upgrade to libtiff 4.0.6. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: rename to libtiff Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/libtiff/tif_jpeg.c ('k') | third_party/libtiff/tif_lzw.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* $Id: tif_luv.c,v 1.35 2011-04-02 20:54:09 bfriesen Exp $ */ 1 /* $Id: tif_luv.c,v 1.40 2015-06-21 01:09:09 bfriesen Exp $ */
2 2
3 /* 3 /*
4 * Copyright (c) 1997 Greg Ward Larson 4 * Copyright (c) 1997 Greg Ward Larson
5 * Copyright (c) 1997 Silicon Graphics, Inc. 5 * Copyright (c) 1997 Silicon Graphics, Inc.
6 * 6 *
7 * Permission to use, copy, modify, distribute, and sell this software and 7 * Permission to use, copy, modify, distribute, and sell this software and
8 * its documentation for any purpose is hereby granted without fee, provided 8 * its documentation for any purpose is hereby granted without fee, provided
9 * that (i) the above copyright notices and this permission notice appear in 9 * that (i) the above copyright notices and this permission notice appear in
10 * all copies of the software and related documentation, and (ii) the names of 10 * all copies of the software and related documentation, and (ii) the names of
11 * Sam Leffler, Greg Larson and Silicon Graphics may not be used in any 11 * Sam Leffler, Greg Larson and Silicon Graphics may not be used in any
12 * advertising or publicity relating to the software without the specific, 12 * advertising or publicity relating to the software without the specific,
13 * prior written permission of Sam Leffler, Greg Larson and Silicon Graphics. 13 * prior written permission of Sam Leffler, Greg Larson and Silicon Graphics.
14 * 14 *
15 * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 15 * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
16 * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 16 * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
17 * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 17 * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
18 * 18 *
19 * IN NO EVENT SHALL SAM LEFFLER, GREG LARSON OR SILICON GRAPHICS BE LIABLE 19 * IN NO EVENT SHALL SAM LEFFLER, GREG LARSON OR SILICON GRAPHICS BE LIABLE
20 * FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, 20 * FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
21 * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 21 * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
22 * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 22 * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
23 * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 23 * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
24 * OF THIS SOFTWARE. 24 * OF THIS SOFTWARE.
25 */ 25 */
26
26 #include "tiffiop.h" 27 #include "tiffiop.h"
27 #ifdef LOGLUV_SUPPORT 28 #ifdef LOGLUV_SUPPORT
28 29
29 /* 30 /*
30 * TIFF Library. 31 * TIFF Library.
31 * LogLuv compression support for high dynamic range images. 32 * LogLuv compression support for high dynamic range images.
32 * 33 *
33 * Contributed by Greg Larson. 34 * Contributed by Greg Larson.
34 * 35 *
35 * LogLuv image support uses the TIFF library to store 16 or 10-bit 36 * LogLuv image support uses the TIFF library to store 16 or 10-bit
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 /* 372 /*
372 * Decode a strip of pixels. We break it into rows to 373 * Decode a strip of pixels. We break it into rows to
373 * maintain synchrony with the encode algorithm, which 374 * maintain synchrony with the encode algorithm, which
374 * is row by row. 375 * is row by row.
375 */ 376 */
376 static int 377 static int
377 LogLuvDecodeStrip(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) 378 LogLuvDecodeStrip(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
378 { 379 {
379 tmsize_t rowlen = TIFFScanlineSize(tif); 380 tmsize_t rowlen = TIFFScanlineSize(tif);
380 381
382 if (rowlen == 0)
383 return 0;
384
381 assert(cc%rowlen == 0); 385 assert(cc%rowlen == 0);
382 while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s)) 386 while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s))
383 bp += rowlen, cc -= rowlen; 387 bp += rowlen, cc -= rowlen;
384 return (cc == 0); 388 return (cc == 0);
385 } 389 }
386 390
387 /* 391 /*
388 * Decode a tile of pixels. We break it into rows to 392 * Decode a tile of pixels. We break it into rows to
389 * maintain synchrony with the encode algorithm, which 393 * maintain synchrony with the encode algorithm, which
390 * is row by row. 394 * is row by row.
391 */ 395 */
392 static int 396 static int
393 LogLuvDecodeTile(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) 397 LogLuvDecodeTile(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
394 { 398 {
395 tmsize_t rowlen = TIFFTileRowSize(tif); 399 tmsize_t rowlen = TIFFTileRowSize(tif);
396 400
401 if (rowlen == 0)
402 return 0;
403
397 assert(cc%rowlen == 0); 404 assert(cc%rowlen == 0);
398 while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s)) 405 while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s))
399 bp += rowlen, cc -= rowlen; 406 bp += rowlen, cc -= rowlen;
400 return (cc == 0); 407 return (cc == 0);
401 } 408 }
402 409
403 /* 410 /*
404 * Encode a row of 16-bit pixels. 411 * Encode a row of 16-bit pixels.
405 */ 412 */
406 static int 413 static int
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 643
637 /* 644 /*
638 * Encode a strip of pixels. We break it into rows to 645 * Encode a strip of pixels. We break it into rows to
639 * avoid encoding runs across row boundaries. 646 * avoid encoding runs across row boundaries.
640 */ 647 */
641 static int 648 static int
642 LogLuvEncodeStrip(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) 649 LogLuvEncodeStrip(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
643 { 650 {
644 tmsize_t rowlen = TIFFScanlineSize(tif); 651 tmsize_t rowlen = TIFFScanlineSize(tif);
645 652
653 if (rowlen == 0)
654 return 0;
655
646 assert(cc%rowlen == 0); 656 assert(cc%rowlen == 0);
647 while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 1) 657 while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 1)
648 bp += rowlen, cc -= rowlen; 658 bp += rowlen, cc -= rowlen;
649 return (cc == 0); 659 return (cc == 0);
650 } 660 }
651 661
652 /* 662 /*
653 * Encode a tile of pixels. We break it into rows to 663 * Encode a tile of pixels. We break it into rows to
654 * avoid encoding runs across row boundaries. 664 * avoid encoding runs across row boundaries.
655 */ 665 */
656 static int 666 static int
657 LogLuvEncodeTile(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) 667 LogLuvEncodeTile(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
658 { 668 {
659 tmsize_t rowlen = TIFFTileRowSize(tif); 669 tmsize_t rowlen = TIFFTileRowSize(tif);
660 670
671 if (rowlen == 0)
672 return 0;
673
661 assert(cc%rowlen == 0); 674 assert(cc%rowlen == 0);
662 while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 1) 675 while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 1)
663 bp += rowlen, cc -= rowlen; 676 bp += rowlen, cc -= rowlen;
664 return (cc == 0); 677 return (cc == 0);
665 } 678 }
666 679
667 /* 680 /*
668 * Encode/Decode functions for converting to and from user formats. 681 * Encode/Decode functions for converting to and from user formats.
669 */ 682 */
670 683
671 #include "uvcode.h" 684 #include "uvcode.h"
672 685
673 #ifndef UVSCALE 686 #ifndef UVSCALE
674 #define U_NEU 0.210526316 687 #define U_NEU 0.210526316
675 #define V_NEU 0.473684211 688 #define V_NEU 0.473684211
676 #define UVSCALE 410. 689 #define UVSCALE 410.
677 #endif 690 #endif
678 691
679 #ifndef M_LN2 692 #ifndef M_LN2
680 #define M_LN2 0.69314718055994530942 693 #define M_LN2 0.69314718055994530942
681 #endif 694 #endif
682 #ifndef M_PI 695 #ifndef M_PI
683 #define M_PI 3.14159265358979323846 696 #define M_PI 3.14159265358979323846
684 #endif 697 #endif
685 #ifndef log2 698 #undef log2 /* Conflict with C'99 function */
686 #define log2(x) ((1./M_LN2)*log(x)) 699 #define log2(x) ((1./M_LN2)*log(x))
687 #endif 700 #undef exp2 /* Conflict with C'99 function */
688 #define exp2(x) exp(M_LN2*(x)) 701 #define exp2(x) exp(M_LN2*(x))
689 702
690 #define itrunc(x,m) ((m)==SGILOGENCODE_NODITHER ? \ 703 #define itrunc(x,m) ((m)==SGILOGENCODE_NODITHER ? \
691 (int)(x) : \ 704 (int)(x) : \
692 (int)((x) + rand()*(1./RAND_MAX) - .5)) 705 (int)((x) + rand()*(1./RAND_MAX) - .5))
693 706
694 #if !LOGLUV_PUBLIC 707 #if !LOGLUV_PUBLIC
695 static 708 static
696 #endif 709 #endif
697 double 710 double
(...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after
1675 #endif /* LOGLUV_SUPPORT */ 1688 #endif /* LOGLUV_SUPPORT */
1676 1689
1677 /* vim: set ts=8 sts=8 sw=8 noet: */ 1690 /* vim: set ts=8 sts=8 sw=8 noet: */
1678 /* 1691 /*
1679 * Local Variables: 1692 * Local Variables:
1680 * mode: c 1693 * mode: c
1681 * c-basic-offset: 8 1694 * c-basic-offset: 8
1682 * fill-column: 78 1695 * fill-column: 78
1683 * End: 1696 * End:
1684 */ 1697 */
1685
OLDNEW
« no previous file with comments | « third_party/libtiff/tif_jpeg.c ('k') | third_party/libtiff/tif_lzw.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698