diff options
Diffstat (limited to 'core/fxcodec/lgif/cgifcontext.cpp')
-rw-r--r-- | core/fxcodec/lgif/cgifcontext.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/core/fxcodec/lgif/cgifcontext.cpp b/core/fxcodec/lgif/cgifcontext.cpp new file mode 100644 index 0000000000..aa2aba6075 --- /dev/null +++ b/core/fxcodec/lgif/cgifcontext.cpp @@ -0,0 +1,64 @@ +// Copyright 2017 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 + +#include "core/fxcodec/lgif/cgifcontext.h" + +#include <utility> + +#include "core/fxcodec/codec/ccodec_gifmodule.h" +#include "core/fxcodec/lgif/fx_gif.h" +#include "third_party/base/ptr_util.h" +#include "third_party/base/stl_util.h" + +CGifContext::CGifContext(CCodec_GifModule* gif_module, char* error_string) + : global_pal_num(0), + img_row_offset(0), + img_row_avail_size(0), + avail_in(0), + decode_status(GIF_D_STATUS_SIG), + skip_size(0), + m_Module(gif_module), + err_ptr(error_string), + next_in(nullptr), + width(0), + height(0), + bc_index(0), + pixel_aspect(0), + global_sort_flag(0), + global_color_resolution(0), + img_pass_num(0) {} + +CGifContext::~CGifContext() {} + +void CGifContext::ErrorData(const char* err_msg) { + strncpy(err_ptr, err_msg, GIF_MAX_ERROR_SIZE - 1); + longjmp(jmpbuf, 1); +} + +void CGifContext::RecordCurrentPosition(uint32_t* cur_pos_ptr) { + m_Module->GetDelegate()->GifRecordCurrentPosition(*cur_pos_ptr); +} + +void CGifContext::ReadScanline(int32_t row_num, uint8_t* row_buf) { + m_Module->GetDelegate()->GifReadScanline(row_num, row_buf); +} + +bool CGifContext::GetRecordPosition(uint32_t cur_pos, + int32_t left, + int32_t top, + int32_t width, + int32_t height, + int32_t pal_num, + GifPalette* pal_ptr, + int32_t delay_time, + bool user_input, + int32_t trans_index, + int32_t disposal_method, + bool interlace) { + return m_Module->GetDelegate()->GifInputRecordPositionBuf( + cur_pos, FX_RECT(left, top, left + width, top + height), pal_num, pal_ptr, + delay_time, user_input, trans_index, disposal_method, interlace); +} |