1e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved.
2e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Use of this source code is governed by a BSD-style license that can be
3e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// found in the LICENSE file.
4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
5e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcodec/jbig2/JBig2_Segment.h"
8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_memory.h"
10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCJBig2_Segment::CJBig2_Segment() {
12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  m_dwNumber = 0;
13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  m_cFlags.c = 0;
14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  m_nReferred_to_segment_count = 0;
154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  m_pReferred_to_segment_numbers = nullptr;
16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  m_dwPage_association = 0;
17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  m_dwData_length = 0;
18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  m_dwHeader_Length = 0;
19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  m_dwObjNum = 0;
20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  m_dwDataOffset = 0;
21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  m_State = JBIG2_SEGMENT_HEADER_UNPARSED;
22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  m_nResultType = JBIG2_VOID_POINTER;
234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  m_Result.vd = nullptr;
24e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCJBig2_Segment::~CJBig2_Segment() {
26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  FX_Free(m_pReferred_to_segment_numbers);
27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (m_nResultType) {
29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case JBIG2_IMAGE_POINTER:
30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      delete m_Result.im;
31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case JBIG2_SYMBOL_DICT_POINTER:
33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      delete m_Result.sd;
34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case JBIG2_PATTERN_DICT_POINTER:
36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      delete m_Result.pd;
37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case JBIG2_HUFFMAN_TABLE_POINTER:
39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      delete m_Result.ht;
40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      FX_Free(m_Result.vd);
43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
44e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
45