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

Side by Side Diff: core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp

Issue 1265503005: clang-format all pdfium code. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: sigh Created 5 years, 4 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
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 "JBig2_HuffmanTable.h" 7 #include "JBig2_HuffmanTable.h"
8 #include "JBig2_BitStream.h" 8 #include "JBig2_BitStream.h"
9 #include <string.h> 9 #include <string.h>
10 10
11 CJBig2_HuffmanTable::CJBig2_HuffmanTable(const JBig2TableLine *pTable, int nLine s, 11 CJBig2_HuffmanTable::CJBig2_HuffmanTable(const JBig2TableLine* pTable,
12 FX_BOOL bHTOOB) 12 int nLines,
13 { 13 FX_BOOL bHTOOB) {
14 init(); 14 init();
15 m_bOK = parseFromStandardTable(pTable, nLines, bHTOOB); 15 m_bOK = parseFromStandardTable(pTable, nLines, bHTOOB);
16 } 16 }
17 17
18 CJBig2_HuffmanTable::CJBig2_HuffmanTable(CJBig2_BitStream *pStream) 18 CJBig2_HuffmanTable::CJBig2_HuffmanTable(CJBig2_BitStream* pStream) {
19 { 19 init();
20 init(); 20 m_bOK = parseFromCodedBuffer(pStream);
21 m_bOK = parseFromCodedBuffer(pStream);
22 } 21 }
23 22
24 CJBig2_HuffmanTable::~CJBig2_HuffmanTable() 23 CJBig2_HuffmanTable::~CJBig2_HuffmanTable() {
25 { 24 if (CODES) {
26 if(CODES) { 25 m_pModule->JBig2_Free(CODES);
27 m_pModule->JBig2_Free(CODES); 26 }
27 if (PREFLEN) {
28 m_pModule->JBig2_Free(PREFLEN);
29 }
30 if (RANGELEN) {
31 m_pModule->JBig2_Free(RANGELEN);
32 }
33 if (RANGELOW) {
34 m_pModule->JBig2_Free(RANGELOW);
35 }
36 }
37 void CJBig2_HuffmanTable::init() {
38 HTOOB = FALSE;
39 NTEMP = 0;
40 CODES = NULL;
41 PREFLEN = NULL;
42 RANGELEN = NULL;
43 RANGELOW = NULL;
44 }
45 int CJBig2_HuffmanTable::parseFromStandardTable(const JBig2TableLine* pTable,
46 int nLines,
47 FX_BOOL bHTOOB) {
48 int CURLEN, LENMAX, CURCODE, CURTEMP, i;
49 int* LENCOUNT;
50 int* FIRSTCODE;
51 HTOOB = bHTOOB;
52 NTEMP = nLines;
53 CODES = (int*)m_pModule->JBig2_Malloc2(sizeof(int), NTEMP);
54 PREFLEN = (int*)m_pModule->JBig2_Malloc2(sizeof(int), NTEMP);
55 RANGELEN = (int*)m_pModule->JBig2_Malloc2(sizeof(int), NTEMP);
56 RANGELOW = (int*)m_pModule->JBig2_Malloc2(sizeof(int), NTEMP);
57 LENMAX = 0;
58 for (i = 0; i < NTEMP; i++) {
59 PREFLEN[i] = pTable[i].PREFLEN;
60 RANGELEN[i] = pTable[i].RANDELEN;
61 RANGELOW[i] = pTable[i].RANGELOW;
62 if (PREFLEN[i] > LENMAX) {
63 LENMAX = PREFLEN[i];
28 } 64 }
29 if(PREFLEN) { 65 }
30 m_pModule->JBig2_Free(PREFLEN); 66 LENCOUNT = (int*)m_pModule->JBig2_Malloc2(sizeof(int), (LENMAX + 1));
67 JBIG2_memset(LENCOUNT, 0, sizeof(int) * (LENMAX + 1));
68 FIRSTCODE = (int*)m_pModule->JBig2_Malloc2(sizeof(int), (LENMAX + 1));
69 for (i = 0; i < NTEMP; i++) {
70 LENCOUNT[PREFLEN[i]]++;
71 }
72 CURLEN = 1;
73 FIRSTCODE[0] = 0;
74 LENCOUNT[0] = 0;
75 while (CURLEN <= LENMAX) {
76 FIRSTCODE[CURLEN] = (FIRSTCODE[CURLEN - 1] + LENCOUNT[CURLEN - 1]) << 1;
77 CURCODE = FIRSTCODE[CURLEN];
78 CURTEMP = 0;
79 while (CURTEMP < NTEMP) {
80 if (PREFLEN[CURTEMP] == CURLEN) {
81 CODES[CURTEMP] = CURCODE;
82 CURCODE = CURCODE + 1;
83 }
84 CURTEMP = CURTEMP + 1;
31 } 85 }
32 if(RANGELEN) { 86 CURLEN = CURLEN + 1;
33 m_pModule->JBig2_Free(RANGELEN); 87 }
34 } 88 m_pModule->JBig2_Free(LENCOUNT);
35 if(RANGELOW) { 89 m_pModule->JBig2_Free(FIRSTCODE);
36 m_pModule->JBig2_Free(RANGELOW); 90 return 1;
37 }
38 }
39 void CJBig2_HuffmanTable::init()
40 {
41 HTOOB = FALSE;
42 NTEMP = 0;
43 CODES = NULL;
44 PREFLEN = NULL;
45 RANGELEN = NULL;
46 RANGELOW = NULL;
47 }
48 int CJBig2_HuffmanTable::parseFromStandardTable(const JBig2TableLine *pTable, in t nLines, FX_BOOL bHTOOB)
49 {
50 int CURLEN, LENMAX, CURCODE, CURTEMP, i;
51 int *LENCOUNT;
52 int *FIRSTCODE;
53 HTOOB = bHTOOB;
54 NTEMP = nLines;
55 CODES = (int*)m_pModule->JBig2_Malloc2(sizeof(int), NTEMP);
56 PREFLEN = (int*)m_pModule->JBig2_Malloc2(sizeof(int), NTEMP);
57 RANGELEN = (int*)m_pModule->JBig2_Malloc2(sizeof(int), NTEMP);
58 RANGELOW = (int*)m_pModule->JBig2_Malloc2(sizeof(int), NTEMP);
59 LENMAX = 0;
60 for(i = 0; i < NTEMP; i++) {
61 PREFLEN[i] = pTable[i].PREFLEN;
62 RANGELEN[i] = pTable[i].RANDELEN;
63 RANGELOW[i] = pTable[i].RANGELOW;
64 if(PREFLEN[i] > LENMAX) {
65 LENMAX = PREFLEN[i];
66 }
67 }
68 LENCOUNT = (int*)m_pModule->JBig2_Malloc2(sizeof(int), (LENMAX + 1));
69 JBIG2_memset(LENCOUNT, 0, sizeof(int) * (LENMAX + 1));
70 FIRSTCODE = (int*)m_pModule->JBig2_Malloc2(sizeof(int), (LENMAX + 1));
71 for(i = 0; i < NTEMP; i++) {
72 LENCOUNT[PREFLEN[i]] ++;
73 }
74 CURLEN = 1;
75 FIRSTCODE[0] = 0;
76 LENCOUNT[0] = 0;
77 while(CURLEN <= LENMAX) {
78 FIRSTCODE[CURLEN] = (FIRSTCODE[CURLEN - 1] + LENCOUNT[CURLEN - 1]) << 1;
79 CURCODE = FIRSTCODE[CURLEN];
80 CURTEMP = 0;
81 while(CURTEMP < NTEMP) {
82 if(PREFLEN[CURTEMP] == CURLEN) {
83 CODES[CURTEMP] = CURCODE;
84 CURCODE = CURCODE + 1;
85 }
86 CURTEMP = CURTEMP + 1;
87 }
88 CURLEN = CURLEN + 1;
89 }
90 m_pModule->JBig2_Free(LENCOUNT);
91 m_pModule->JBig2_Free(FIRSTCODE);
92 return 1;
93 } 91 }
94 92
95 #define HT_CHECK_MEMORY_ADJUST» » » \ 93 #define HT_CHECK_MEMORY_ADJUST \
96 if(NTEMP >= nSize)» \ 94 if (NTEMP >= nSize) { \
97 {» \ 95 nSize += 16; \
98 nSize += 16;» \ 96 PREFLEN = (int*)m_pModule->JBig2_Realloc(PREFLEN, sizeof(int) * nSize); \
99 PREFLEN = (int*)m_pModule->JBig2_Realloc(PREFLEN,sizeof(int)*nSize);» \ 97 RANGELEN = (int*)m_pModule->JBig2_Realloc(RANGELEN, sizeof(int) * nSize); \
100 RANGELEN = (int*)m_pModule->JBig2_Realloc(RANGELEN,sizeof(int)*nSize);» \ 98 RANGELOW = (int*)m_pModule->JBig2_Realloc(RANGELOW, sizeof(int) * nSize); \
101 RANGELOW = (int*)m_pModule->JBig2_Realloc(RANGELOW,sizeof(int)*nSize);» \ 99 }
100 int CJBig2_HuffmanTable::parseFromCodedBuffer(CJBig2_BitStream* pStream) {
101 unsigned char HTPS, HTRS;
102 FX_DWORD HTLOW, HTHIGH;
103 FX_DWORD CURRANGELOW;
104 FX_DWORD nSize = 16;
105 int CURLEN, LENMAX, CURCODE, CURTEMP;
106 int* LENCOUNT;
107 int* FIRSTCODE;
108 unsigned char cTemp;
109 if (pStream->read1Byte(&cTemp) == -1) {
110 goto failed;
111 }
112 HTOOB = cTemp & 0x01;
113 HTPS = ((cTemp >> 1) & 0x07) + 1;
114 HTRS = ((cTemp >> 4) & 0x07) + 1;
115 if (pStream->readInteger(&HTLOW) == -1 ||
116 pStream->readInteger(&HTHIGH) == -1 || HTLOW > HTHIGH) {
117 goto failed;
118 }
119 PREFLEN = (int*)m_pModule->JBig2_Malloc2(sizeof(int), nSize);
120 RANGELEN = (int*)m_pModule->JBig2_Malloc2(sizeof(int), nSize);
121 RANGELOW = (int*)m_pModule->JBig2_Malloc2(sizeof(int), nSize);
122 CURRANGELOW = HTLOW;
123 NTEMP = 0;
124 do {
125 HT_CHECK_MEMORY_ADJUST
126 if ((pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) ||
127 (pStream->readNBits(HTRS, &RANGELEN[NTEMP]) == -1)) {
128 goto failed;
102 } 129 }
103 int CJBig2_HuffmanTable::parseFromCodedBuffer(CJBig2_BitStream *pStream) 130 RANGELOW[NTEMP] = CURRANGELOW;
104 { 131 CURRANGELOW = CURRANGELOW + (1 << RANGELEN[NTEMP]);
105 unsigned char HTPS, HTRS; 132 NTEMP = NTEMP + 1;
106 FX_DWORD HTLOW, HTHIGH; 133 } while (CURRANGELOW < HTHIGH);
107 FX_DWORD CURRANGELOW; 134 HT_CHECK_MEMORY_ADJUST
108 FX_DWORD nSize = 16; 135 if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) {
109 int CURLEN, LENMAX, CURCODE, CURTEMP; 136 goto failed;
110 int *LENCOUNT; 137 }
111 int *FIRSTCODE; 138 RANGELEN[NTEMP] = 32;
112 unsigned char cTemp; 139 RANGELOW[NTEMP] = HTLOW - 1;
113 if(pStream->read1Byte(&cTemp) == -1) { 140 NTEMP = NTEMP + 1;
114 goto failed; 141 HT_CHECK_MEMORY_ADJUST
142 if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) {
143 goto failed;
144 }
145 RANGELEN[NTEMP] = 32;
146 RANGELOW[NTEMP] = HTHIGH;
147 NTEMP = NTEMP + 1;
148 if (HTOOB) {
149 HT_CHECK_MEMORY_ADJUST
150 if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) {
151 goto failed;
115 } 152 }
116 HTOOB = cTemp & 0x01; 153 NTEMP = NTEMP + 1;
117 HTPS = ((cTemp >> 1) & 0x07) + 1; 154 }
118 HTRS = ((cTemp >> 4) & 0x07) + 1; 155 CODES = (int*)m_pModule->JBig2_Malloc2(sizeof(int), NTEMP);
119 if(pStream->readInteger(&HTLOW) == -1 || 156 LENMAX = 0;
120 pStream->readInteger(&HTHIGH) == -1 || 157 for (int i = 0; i < NTEMP; i++) {
121 HTLOW > HTHIGH) { 158 if (PREFLEN[i] > LENMAX) {
122 goto failed; 159 LENMAX = PREFLEN[i];
123 } 160 }
124 PREFLEN = (int*)m_pModule->JBig2_Malloc2(sizeof(int), nSize); 161 }
125 RANGELEN = (int*)m_pModule->JBig2_Malloc2(sizeof(int), nSize); 162 LENCOUNT = (int*)m_pModule->JBig2_Malloc2(sizeof(int), (LENMAX + 1));
126 RANGELOW = (int*)m_pModule->JBig2_Malloc2(sizeof(int), nSize); 163 JBIG2_memset(LENCOUNT, 0, sizeof(int) * (LENMAX + 1));
127 CURRANGELOW = HTLOW; 164 FIRSTCODE = (int*)m_pModule->JBig2_Malloc2(sizeof(int), (LENMAX + 1));
128 NTEMP = 0; 165 for (int i = 0; i < NTEMP; i++) {
129 do { 166 LENCOUNT[PREFLEN[i]]++;
130 HT_CHECK_MEMORY_ADJUST 167 }
131 if((pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) || 168 CURLEN = 1;
132 (pStream->readNBits(HTRS, &RANGELEN[NTEMP]) == -1)) { 169 FIRSTCODE[0] = 0;
133 goto failed; 170 LENCOUNT[0] = 0;
134 } 171 while (CURLEN <= LENMAX) {
135 RANGELOW[NTEMP] = CURRANGELOW; 172 FIRSTCODE[CURLEN] = (FIRSTCODE[CURLEN - 1] + LENCOUNT[CURLEN - 1]) << 1;
136 CURRANGELOW = CURRANGELOW + (1 << RANGELEN[NTEMP]); 173 CURCODE = FIRSTCODE[CURLEN];
137 NTEMP = NTEMP + 1; 174 CURTEMP = 0;
138 } while(CURRANGELOW < HTHIGH); 175 while (CURTEMP < NTEMP) {
139 HT_CHECK_MEMORY_ADJUST 176 if (PREFLEN[CURTEMP] == CURLEN) {
140 if(pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) { 177 CODES[CURTEMP] = CURCODE;
141 goto failed; 178 CURCODE = CURCODE + 1;
179 }
180 CURTEMP = CURTEMP + 1;
142 } 181 }
143 RANGELEN[NTEMP] = 32; 182 CURLEN = CURLEN + 1;
144 RANGELOW[NTEMP] = HTLOW - 1; 183 }
145 NTEMP = NTEMP + 1; 184 m_pModule->JBig2_Free(LENCOUNT);
146 HT_CHECK_MEMORY_ADJUST 185 m_pModule->JBig2_Free(FIRSTCODE);
147 if(pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) { 186 return TRUE;
148 goto failed;
149 }
150 RANGELEN[NTEMP] = 32;
151 RANGELOW[NTEMP] = HTHIGH;
152 NTEMP = NTEMP + 1;
153 if(HTOOB) {
154 HT_CHECK_MEMORY_ADJUST
155 if(pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) {
156 goto failed;
157 }
158 NTEMP = NTEMP + 1;
159 }
160 CODES = (int*)m_pModule->JBig2_Malloc2(sizeof(int), NTEMP);
161 LENMAX = 0;
162 for(int i = 0; i < NTEMP; i++) {
163 if(PREFLEN[i] > LENMAX) {
164 LENMAX = PREFLEN[i];
165 }
166 }
167 LENCOUNT = (int*)m_pModule->JBig2_Malloc2(sizeof(int), (LENMAX + 1));
168 JBIG2_memset(LENCOUNT, 0, sizeof(int) * (LENMAX + 1));
169 FIRSTCODE = (int*)m_pModule->JBig2_Malloc2(sizeof(int), (LENMAX + 1));
170 for(int i = 0; i < NTEMP; i++) {
171 LENCOUNT[PREFLEN[i]] ++;
172 }
173 CURLEN = 1;
174 FIRSTCODE[0] = 0;
175 LENCOUNT[0] = 0;
176 while(CURLEN <= LENMAX) {
177 FIRSTCODE[CURLEN] = (FIRSTCODE[CURLEN - 1] + LENCOUNT[CURLEN - 1]) << 1;
178 CURCODE = FIRSTCODE[CURLEN];
179 CURTEMP = 0;
180 while(CURTEMP < NTEMP) {
181 if(PREFLEN[CURTEMP] == CURLEN) {
182 CODES[CURTEMP] = CURCODE;
183 CURCODE = CURCODE + 1;
184 }
185 CURTEMP = CURTEMP + 1;
186 }
187 CURLEN = CURLEN + 1;
188 }
189 m_pModule->JBig2_Free(LENCOUNT);
190 m_pModule->JBig2_Free(FIRSTCODE);
191 return TRUE;
192 failed: 187 failed:
193 return FALSE; 188 return FALSE;
194 } 189 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698