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

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

Issue 453133004: clang-format all code (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 6 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 int HTLOW, HTHIGH;
103 int CURRANGELOW;
104 int nSize = 16;
105 int CURLEN, LENMAX, CURCODE, CURTEMP, i;
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((FX_DWORD*)&HTLOW) == -1 ||
116 pStream->readInteger((FX_DWORD*)&HTHIGH) == -1) {
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 int HTLOW, HTHIGH; 133 } while (CURRANGELOW < HTHIGH);
107 int CURRANGELOW; 134 HT_CHECK_MEMORY_ADJUST
108 int nSize = 16; 135 if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) {
109 int CURLEN, LENMAX, CURCODE, CURTEMP, i; 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((FX_DWORD*)&HTLOW) == -1 || 156 LENMAX = 0;
120 pStream->readInteger((FX_DWORD*)&HTHIGH) == -1) { 157 for (i = 0; i < NTEMP; i++) {
121 goto failed; 158 if (PREFLEN[i] > LENMAX) {
159 LENMAX = PREFLEN[i];
122 } 160 }
123 PREFLEN = (int*)m_pModule->JBig2_Malloc2(sizeof(int), nSize); 161 }
124 RANGELEN = (int*)m_pModule->JBig2_Malloc2(sizeof(int), nSize); 162 LENCOUNT = (int*)m_pModule->JBig2_Malloc2(sizeof(int), (LENMAX + 1));
125 RANGELOW = (int*)m_pModule->JBig2_Malloc2(sizeof(int), nSize); 163 JBIG2_memset(LENCOUNT, 0, sizeof(int) * (LENMAX + 1));
126 CURRANGELOW = HTLOW; 164 FIRSTCODE = (int*)m_pModule->JBig2_Malloc2(sizeof(int), (LENMAX + 1));
127 NTEMP = 0; 165 for (i = 0; i < NTEMP; i++) {
128 do { 166 LENCOUNT[PREFLEN[i]]++;
129 HT_CHECK_MEMORY_ADJUST 167 }
130 if((pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) 168 CURLEN = 1;
131 || (pStream->readNBits(HTRS, &RANGELEN[NTEMP]) == -1)) { 169 FIRSTCODE[0] = 0;
132 goto failed; 170 LENCOUNT[0] = 0;
133 } 171 while (CURLEN <= LENMAX) {
134 RANGELOW[NTEMP] = CURRANGELOW; 172 FIRSTCODE[CURLEN] = (FIRSTCODE[CURLEN - 1] + LENCOUNT[CURLEN - 1]) << 1;
135 CURRANGELOW = CURRANGELOW + (1 << RANGELEN[NTEMP]); 173 CURCODE = FIRSTCODE[CURLEN];
136 NTEMP = NTEMP + 1; 174 CURTEMP = 0;
137 } while(CURRANGELOW < HTHIGH); 175 while (CURTEMP < NTEMP) {
138 HT_CHECK_MEMORY_ADJUST 176 if (PREFLEN[CURTEMP] == CURLEN) {
139 if(pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) { 177 CODES[CURTEMP] = CURCODE;
140 goto failed; 178 CURCODE = CURCODE + 1;
179 }
180 CURTEMP = CURTEMP + 1;
141 } 181 }
142 RANGELEN[NTEMP] = 32; 182 CURLEN = CURLEN + 1;
143 RANGELOW[NTEMP] = HTLOW - 1; 183 }
144 NTEMP = NTEMP + 1; 184 m_pModule->JBig2_Free(LENCOUNT);
145 HT_CHECK_MEMORY_ADJUST 185 m_pModule->JBig2_Free(FIRSTCODE);
146 if(pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) { 186 return TRUE;
147 goto failed;
148 }
149 RANGELEN[NTEMP] = 32;
150 RANGELOW[NTEMP] = HTHIGH;
151 NTEMP = NTEMP + 1;
152 if(HTOOB) {
153 HT_CHECK_MEMORY_ADJUST
154 if(pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) {
155 goto failed;
156 }
157 NTEMP = NTEMP + 1;
158 }
159 CODES = (int*)m_pModule->JBig2_Malloc2(sizeof(int), NTEMP);
160 LENMAX = 0;
161 for(i = 0; i < NTEMP; i++) {
162 if(PREFLEN[i] > LENMAX) {
163 LENMAX = PREFLEN[i];
164 }
165 }
166 LENCOUNT = (int*)m_pModule->JBig2_Malloc2(sizeof(int), (LENMAX + 1));
167 JBIG2_memset(LENCOUNT, 0, sizeof(int) * (LENMAX + 1));
168 FIRSTCODE = (int*)m_pModule->JBig2_Malloc2(sizeof(int), (LENMAX + 1));
169 for(i = 0; i < NTEMP; i++) {
170 LENCOUNT[PREFLEN[i]] ++;
171 }
172 CURLEN = 1;
173 FIRSTCODE[0] = 0;
174 LENCOUNT[0] = 0;
175 while(CURLEN <= LENMAX) {
176 FIRSTCODE[CURLEN] = (FIRSTCODE[CURLEN - 1] + LENCOUNT[CURLEN - 1]) << 1;
177 CURCODE = FIRSTCODE[CURLEN];
178 CURTEMP = 0;
179 while(CURTEMP < NTEMP) {
180 if(PREFLEN[CURTEMP] == CURLEN) {
181 CODES[CURTEMP] = CURCODE;
182 CURCODE = CURCODE + 1;
183 }
184 CURTEMP = CURTEMP + 1;
185 }
186 CURLEN = CURLEN + 1;
187 }
188 m_pModule->JBig2_Free(LENCOUNT);
189 m_pModule->JBig2_Free(FIRSTCODE);
190 return TRUE;
191 failed: 187 failed:
192 return FALSE; 188 return FALSE;
193 } 189 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698