From 36a155d1f3a9d9f315655a20d583c13644ef1f3e Mon Sep 17 00:00:00 2001 From: Ryan Harrison Date: Wed, 27 Sep 2017 15:39:26 -0400 Subject: Cleaning up naming of GIF files/classes/variables Moved everything from core/fxcodec/lgif to core/fxcodec/gif Converted CGifContext -> CFX_GifContext Removed _ptr suffixes from CXF_GifContext Movef fx_gif.* -> cfx_gif.* Renamed structs in cfx_gif.h Renamed members of CFX_GifImage Renamed members of CFX_GifContext Renamed CFX_LZWDecoder -> CFX_LZWDecompressor BUG=pdfium:903 Change-Id: I537e905e935da26832e6bbdc03e0373ed5500bcb Reviewed-on: https://pdfium-review.googlesource.com/14990 Commit-Queue: Ryan Harrison Reviewed-by: dsinclair --- core/fxcodec/gif/cfx_gif.h | 131 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 core/fxcodec/gif/cfx_gif.h (limited to 'core/fxcodec/gif/cfx_gif.h') diff --git a/core/fxcodec/gif/cfx_gif.h b/core/fxcodec/gif/cfx_gif.h new file mode 100644 index 0000000000..02a4862017 --- /dev/null +++ b/core/fxcodec/gif/cfx_gif.h @@ -0,0 +1,131 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_GIF_CFX_GIF_H_ +#define CORE_FXCODEC_GIF_CFX_GIF_H_ + +#include +#include + +class CFX_GifContext; + +#define GIF_SIGNATURE "GIF" +#define GIF_SIG_EXTENSION 0x21 +#define GIF_SIG_IMAGE 0x2C +#define GIF_SIG_TRAILER 0x3B +#define GIF_BLOCK_GCE 0xF9 +#define GIF_BLOCK_PTE 0x01 +#define GIF_BLOCK_CE 0xFE +#define GIF_BLOCK_AE 0xFF +#define GIF_BLOCK_TERMINAL 0x00 +#define GIF_MAX_LZW_EXP 12 +#define GIF_MAX_LZW_CODE 4096 +#define GIF_DATA_BLOCK 255 +#define GIF_MAX_ERROR_SIZE 256 +#define GIF_D_STATUS_SIG 0x01 +#define GIF_D_STATUS_TAIL 0x02 +#define GIF_D_STATUS_EXT 0x03 +#define GIF_D_STATUS_EXT_AE 0x04 +#define GIF_D_STATUS_EXT_CE 0x05 +#define GIF_D_STATUS_EXT_GCE 0x06 +#define GIF_D_STATUS_EXT_PTE 0x07 +#define GIF_D_STATUS_EXT_UNE 0x08 +#define GIF_D_STATUS_IMG_INFO 0x09 +#define GIF_D_STATUS_IMG_DATA 0x0A + +#pragma pack(1) +typedef struct { + uint8_t pal_bits : 3; + uint8_t sort_flag : 1; + uint8_t color_resolution : 3; + uint8_t global_pal : 1; +} CFX_GifGlobalFlags; + +typedef struct { + uint8_t pal_bits : 3; + uint8_t reserved : 2; + uint8_t sort_flag : 1; + uint8_t interlace : 1; + uint8_t local_pal : 1; +} CFX_GifLocalFlags; + +typedef struct { + char signature[3]; + char version[3]; +} CFX_GifHeader; + +typedef struct { + uint16_t width; + uint16_t height; + CFX_GifGlobalFlags global_flags; + uint8_t bc_index; + uint8_t pixel_aspect; +} CFX_GifLocalScreenDescriptor; + +typedef struct { + uint16_t left; + uint16_t top; + uint16_t width; + uint16_t height; + CFX_GifLocalFlags local_flags; +} CFX_CFX_GifImageInfo; + +typedef struct { + uint8_t transparency : 1; + uint8_t user_input : 1; + uint8_t disposal_method : 3; + uint8_t reserved : 3; +} CFX_GifControlExtensionFlags; + +typedef struct { + uint8_t block_size; + CFX_GifControlExtensionFlags gce_flags; + uint16_t delay_time; + uint8_t trans_index; +} CFX_GifGraphicControlExtension; + +typedef struct { + uint8_t block_size; + uint16_t grid_left; + uint16_t grid_top; + uint16_t grid_width; + uint16_t grid_height; + + uint8_t char_width; + uint8_t char_height; + + uint8_t fc_index; + uint8_t bc_index; +} CFX_GifPlainTextExtension; + +typedef struct { + uint8_t block_size; + uint8_t app_identify[8]; + uint8_t app_authentication[3]; +} GifApplicationExtension; + +typedef struct { uint8_t r, g, b; } CFX_GifPalette; +#pragma pack() + +enum class CFX_GifDecodeStatus { + Error, + Success, + Unfinished, + InsufficientDestSize, // Only used internally by CGifLZWDecoder::Decode() +}; + +typedef struct { + std::unique_ptr image_GCE; + std::vector local_palettes; + std::vector row_buffer; + CFX_CFX_GifImageInfo image_info; + uint8_t local_pallette_exp; + uint8_t code_exp; + uint32_t data_pos; + int32_t row_num; +} CFX_GifImage; + +#endif // CORE_FXCODEC_GIF_CFX_GIF_H_ -- cgit v1.2.3