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

Side by Side Diff: core/src/fxcodec/codec/fx_codec_jpx_opj.cpp

Issue 1172793002: Merge to XFA: Use stdint.h types throughout PDFium. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 5 years, 6 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 | « core/src/fxcodec/codec/fx_codec_jpeg.cpp ('k') | core/src/fxcodec/codec/fx_codec_png.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "../../../include/fxcodec/fx_codec.h" 10 #include "../../../include/fxcodec/fx_codec.h"
(...skipping 696 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 int i, wid, hei, row, col, channel, src; 707 int i, wid, hei, row, col, channel, src;
708 FX_LPBYTE pChannel, pScanline, pPixel; 708 FX_LPBYTE pChannel, pScanline, pPixel;
709 709
710 if(image->comps[0].w != image->x1 || image->comps[0].h != image->y1) { 710 if(image->comps[0].w != image->x1 || image->comps[0].h != image->y1) {
711 return FALSE; 711 return FALSE;
712 } 712 }
713 if(pitch < (int)(image->comps[0].w * 8 * image->numcomps + 31) >> 5 << 2) { 713 if(pitch < (int)(image->comps[0].w * 8 * image->numcomps + 31) >> 5 << 2) {
714 return FALSE; 714 return FALSE;
715 } 715 }
716 FXSYS_memset8(dest_buf, 0xff, image->y1 * pitch); 716 FXSYS_memset8(dest_buf, 0xff, image->y1 * pitch);
717 FX_BYTE** channel_bufs = FX_Alloc(FX_BYTE*, image->numcomps); 717 uint8_t** channel_bufs = FX_Alloc(uint8_t*, image->numcomps);
718 FX_BOOL result = FALSE; 718 FX_BOOL result = FALSE;
719 int* adjust_comps = FX_Alloc(int, image->numcomps); 719 int* adjust_comps = FX_Alloc(int, image->numcomps);
720 for (i = 0; i < (int)image->numcomps; i ++) { 720 for (i = 0; i < (int)image->numcomps; i ++) {
721 channel_bufs[i] = dest_buf + offsets[i]; 721 channel_bufs[i] = dest_buf + offsets[i];
722 adjust_comps[i] = image->comps[i].prec - 8; 722 adjust_comps[i] = image->comps[i].prec - 8;
723 if(i > 0) { 723 if(i > 0) {
724 if(image->comps[i].dx != image->comps[i - 1].dx 724 if(image->comps[i].dx != image->comps[i - 1].dx
725 || image->comps[i].dy != image->comps[i - 1].dy 725 || image->comps[i].dy != image->comps[i - 1].dy
726 || image->comps[i].prec != image->comps[i - 1].prec) { 726 || image->comps[i].prec != image->comps[i - 1].prec) {
727 goto done; 727 goto done;
728 } 728 }
729 } 729 }
730 } 730 }
731 wid = image->comps[0].w; 731 wid = image->comps[0].w;
732 hei = image->comps[0].h; 732 hei = image->comps[0].h;
733 for (channel = 0; channel < (int)image->numcomps; channel++) { 733 for (channel = 0; channel < (int)image->numcomps; channel++) {
734 pChannel = channel_bufs[channel]; 734 pChannel = channel_bufs[channel];
735 if(adjust_comps[channel] < 0) { 735 if(adjust_comps[channel] < 0) {
736 for(row = 0; row < hei; row++) { 736 for(row = 0; row < hei; row++) {
737 pScanline = pChannel + row * pitch; 737 pScanline = pChannel + row * pitch;
738 for (col = 0; col < wid; col++) { 738 for (col = 0; col < wid; col++) {
739 pPixel = pScanline + col * image->numcomps; 739 pPixel = pScanline + col * image->numcomps;
740 src = image->comps[channel].data[row * wid + col]; 740 src = image->comps[channel].data[row * wid + col];
741 src += image->comps[channel].sgnd ? 1 << (image->comps[chann el].prec - 1) : 0; 741 src += image->comps[channel].sgnd ? 1 << (image->comps[chann el].prec - 1) : 0;
742 if (adjust_comps[channel] > 0) { 742 if (adjust_comps[channel] > 0) {
743 *pPixel = 0; 743 *pPixel = 0;
744 } else { 744 } else {
745 *pPixel = (FX_BYTE)(src << -adjust_comps[channel]); 745 *pPixel = (uint8_t)(src << -adjust_comps[channel]);
746 } 746 }
747 } 747 }
748 } 748 }
749 } else { 749 } else {
750 for(row = 0; row < hei; row++) { 750 for(row = 0; row < hei; row++) {
751 pScanline = pChannel + row * pitch; 751 pScanline = pChannel + row * pitch;
752 for (col = 0; col < wid; col++) { 752 for (col = 0; col < wid; col++) {
753 pPixel = pScanline + col * image->numcomps; 753 pPixel = pScanline + col * image->numcomps;
754 if (!image->comps[channel].data) { 754 if (!image->comps[channel].data) {
755 continue; 755 continue;
756 } 756 }
757 src = image->comps[channel].data[row * wid + col]; 757 src = image->comps[channel].data[row * wid + col];
758 src += image->comps[channel].sgnd ? 1 << (image->comps[chann el].prec - 1) : 0; 758 src += image->comps[channel].sgnd ? 1 << (image->comps[chann el].prec - 1) : 0;
759 if (adjust_comps[channel] - 1 < 0) { 759 if (adjust_comps[channel] - 1 < 0) {
760 *pPixel = (FX_BYTE)((src >> adjust_comps[channel])); 760 *pPixel = (uint8_t)((src >> adjust_comps[channel]));
761 } else { 761 } else {
762 int tmpPixel = (src >> adjust_comps[channel]) + ((src >> (adjust_comps[channel] - 1)) % 2); 762 int tmpPixel = (src >> adjust_comps[channel]) + ((src >> (adjust_comps[channel] - 1)) % 2);
763 if (tmpPixel > 255) { 763 if (tmpPixel > 255) {
764 tmpPixel = 255; 764 tmpPixel = 255;
765 } else if (tmpPixel < 0) { 765 } else if (tmpPixel < 0) {
766 tmpPixel = 0; 766 tmpPixel = 0;
767 } 767 }
768 *pPixel = (FX_BYTE)tmpPixel; 768 *pPixel = (uint8_t)tmpPixel;
769 } 769 }
770 } 770 }
771 } 771 }
772 } 772 }
773 } 773 }
774 result = TRUE; 774 result = TRUE;
775 775
776 done: 776 done:
777 FX_Free(channel_bufs); 777 FX_Free(channel_bufs);
778 FX_Free(adjust_comps); 778 FX_Free(adjust_comps);
(...skipping 24 matching lines...) Expand all
803 FX_BOOL CCodec_JpxModule::Decode(void* ctx, FX_LPBYTE dest_data, int pitch, FX_B OOL bTranslateColor, FX_LPBYTE offsets) 803 FX_BOOL CCodec_JpxModule::Decode(void* ctx, FX_LPBYTE dest_data, int pitch, FX_B OOL bTranslateColor, FX_LPBYTE offsets)
804 { 804 {
805 CJPX_Decoder* pDecoder = (CJPX_Decoder*)ctx; 805 CJPX_Decoder* pDecoder = (CJPX_Decoder*)ctx;
806 return pDecoder->Decode(dest_data, pitch, bTranslateColor, offsets); 806 return pDecoder->Decode(dest_data, pitch, bTranslateColor, offsets);
807 } 807 }
808 void CCodec_JpxModule::DestroyDecoder(void* ctx) 808 void CCodec_JpxModule::DestroyDecoder(void* ctx)
809 { 809 {
810 CJPX_Decoder* pDecoder = (CJPX_Decoder*)ctx; 810 CJPX_Decoder* pDecoder = (CJPX_Decoder*)ctx;
811 delete pDecoder; 811 delete pDecoder;
812 } 812 }
OLDNEW
« no previous file with comments | « core/src/fxcodec/codec/fx_codec_jpeg.cpp ('k') | core/src/fxcodec/codec/fx_codec_png.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698