summaryrefslogtreecommitdiff
path: root/core/fxcodec/lgif
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcodec/lgif')
-rw-r--r--core/fxcodec/lgif/fx_gif.cpp60
-rw-r--r--core/fxcodec/lgif/fx_gif.h5
2 files changed, 29 insertions, 36 deletions
diff --git a/core/fxcodec/lgif/fx_gif.cpp b/core/fxcodec/lgif/fx_gif.cpp
index b509c8ccfd..0e2626984b 100644
--- a/core/fxcodec/lgif/fx_gif.cpp
+++ b/core/fxcodec/lgif/fx_gif.cpp
@@ -7,6 +7,7 @@
#include "core/fxcodec/lgif/fx_gif.h"
#include "core/fxcodec/lbmp/fx_bmp.h"
+#include "third_party/base/stl_util.h"
void CGifLZWDecoder::Input(uint8_t* src_buf, uint32_t src_size) {
next_in = src_buf;
@@ -372,16 +373,12 @@ void CGifLZWEncoder::Finish(uint8_t*& dst_buf,
ClearTable();
}
gif_decompress_struct_p gif_create_decompress() {
- gif_decompress_struct_p gif_ptr =
- (gif_decompress_struct*)FX_Alloc(uint8_t, sizeof(gif_decompress_struct));
- if (!gif_ptr)
- return nullptr;
-
+ gif_decompress_struct_p gif_ptr = FX_Alloc(gif_decompress_struct, 1);
FXSYS_memset(gif_ptr, 0, sizeof(gif_decompress_struct));
gif_ptr->decode_status = GIF_D_STATUS_SIG;
- gif_ptr->img_ptr_arr_ptr = new CFX_ArrayTemplate<GifImage*>;
+ gif_ptr->img_ptr_arr_ptr = new std::vector<GifImage*>;
gif_ptr->cmt_data_ptr = new CFX_ByteString;
- gif_ptr->pt_ptr_arr_ptr = new CFX_ArrayTemplate<GifPlainText*>;
+ gif_ptr->pt_ptr_arr_ptr = new std::vector<GifPlainText*>;
return gif_ptr;
}
void gif_destroy_decompress(gif_decompress_struct_pp gif_ptr_ptr) {
@@ -393,9 +390,9 @@ void gif_destroy_decompress(gif_decompress_struct_pp gif_ptr_ptr) {
FX_Free(gif_ptr->global_pal_ptr);
delete gif_ptr->img_decoder_ptr;
if (gif_ptr->img_ptr_arr_ptr) {
- int32_t size_img_arr = gif_ptr->img_ptr_arr_ptr->GetSize();
- for (int32_t i = 0; i < size_img_arr; i++) {
- GifImage* p = gif_ptr->img_ptr_arr_ptr->GetAt(i);
+ size_t size_img_arr = gif_ptr->img_ptr_arr_ptr->size();
+ for (size_t i = 0; i < size_img_arr; i++) {
+ GifImage* p = (*gif_ptr->img_ptr_arr_ptr)[i];
FX_Free(p->image_info_ptr);
FX_Free(p->image_gce_ptr);
FX_Free(p->image_row_buf);
@@ -404,31 +401,27 @@ void gif_destroy_decompress(gif_decompress_struct_pp gif_ptr_ptr) {
}
FX_Free(p);
}
- gif_ptr->img_ptr_arr_ptr->RemoveAll();
+ gif_ptr->img_ptr_arr_ptr->clear();
delete gif_ptr->img_ptr_arr_ptr;
}
delete gif_ptr->cmt_data_ptr;
FX_Free(gif_ptr->gce_ptr);
if (gif_ptr->pt_ptr_arr_ptr) {
- int32_t size_pt_arr = gif_ptr->pt_ptr_arr_ptr->GetSize();
- for (int32_t i = 0; i < size_pt_arr; i++) {
- GifPlainText* p = gif_ptr->pt_ptr_arr_ptr->GetAt(i);
+ size_t size_pt_arr = gif_ptr->pt_ptr_arr_ptr->size();
+ for (size_t i = 0; i < size_pt_arr; i++) {
+ GifPlainText* p = (*gif_ptr->pt_ptr_arr_ptr)[i];
FX_Free(p->gce_ptr);
FX_Free(p->pte_ptr);
delete p->string_ptr;
FX_Free(p);
}
- gif_ptr->pt_ptr_arr_ptr->RemoveAll();
+ gif_ptr->pt_ptr_arr_ptr->clear();
delete gif_ptr->pt_ptr_arr_ptr;
}
FX_Free(gif_ptr);
}
gif_compress_struct_p gif_create_compress() {
- gif_compress_struct_p gif_ptr =
- (gif_compress_struct*)FX_Alloc(uint8_t, sizeof(gif_compress_struct));
- if (!gif_ptr)
- return nullptr;
-
+ gif_compress_struct_p gif_ptr = FX_Alloc(gif_compress_struct, 1);
FXSYS_memset(gif_ptr, 0, sizeof(gif_compress_struct));
gif_ptr->img_encoder_ptr = new CGifLZWEncoder;
gif_ptr->header_ptr = (GifHeader*)FX_Alloc(uint8_t, sizeof(GifHeader));
@@ -724,7 +717,7 @@ int32_t gif_decode_extension(gif_decompress_struct_p gif_ptr) {
*(gif_pt_ptr->string_ptr) +=
CFX_ByteString((const FX_CHAR*)data_ptr, data_size);
}
- gif_ptr->pt_ptr_arr_ptr->Add(gif_pt_ptr);
+ gif_ptr->pt_ptr_arr_ptr->push_back(gif_pt_ptr);
} break;
case GIF_D_STATUS_EXT_GCE: {
ASSERT(sizeof(GifGCE) == 5);
@@ -829,19 +822,19 @@ int32_t gif_decode_image_info(gif_decompress_struct_p gif_ptr) {
&gif_image_ptr->image_data_pos);
gif_image_ptr->image_data_pos += gif_ptr->skip_size;
gif_takeover_gce_ptr(gif_ptr, &gif_image_ptr->image_gce_ptr);
- gif_ptr->img_ptr_arr_ptr->Add(gif_image_ptr);
+ gif_ptr->img_ptr_arr_ptr->push_back(gif_image_ptr);
gif_save_decoding_status(gif_ptr, GIF_D_STATUS_IMG_DATA);
return 1;
}
int32_t gif_load_frame(gif_decompress_struct_p gif_ptr, int32_t frame_num) {
if (!gif_ptr || frame_num < 0 ||
- frame_num >= gif_ptr->img_ptr_arr_ptr->GetSize()) {
+ frame_num >= pdfium::CollectionSize<int>(*gif_ptr->img_ptr_arr_ptr)) {
return 0;
}
uint8_t* data_size_ptr = nullptr;
uint8_t* data_ptr = nullptr;
uint32_t skip_size_org = gif_ptr->skip_size;
- GifImage* gif_image_ptr = gif_ptr->img_ptr_arr_ptr->GetAt(frame_num);
+ GifImage* gif_image_ptr = (*gif_ptr->img_ptr_arr_ptr)[frame_num];
uint32_t gif_img_row_bytes = gif_image_ptr->image_info_ptr->width;
if (gif_ptr->decode_status == GIF_D_STATUS_TAIL) {
if (gif_image_ptr->image_row_buf) {
@@ -1034,7 +1027,7 @@ uint32_t gif_get_avail_input(gif_decompress_struct_p gif_ptr,
return gif_ptr->avail_in;
}
int32_t gif_get_frame_num(gif_decompress_struct_p gif_ptr) {
- return gif_ptr->img_ptr_arr_ptr->GetSize();
+ return pdfium::CollectionSize<int32_t>(*gif_ptr->img_ptr_arr_ptr);
}
static bool gif_write_header(gif_compress_struct_p gif_ptr,
uint8_t*& dst_buf,
@@ -1068,12 +1061,11 @@ static bool gif_write_header(gif_compress_struct_p gif_ptr,
return true;
}
void interlace_buf(const uint8_t* buf, uint32_t pitch, uint32_t height) {
- CFX_ArrayTemplate<uint8_t*> pass[4];
- int i, j;
- uint32_t row;
- row = 0;
+ std::vector<uint8_t*> pass[4];
+ uint32_t row = 0;
uint8_t* temp;
while (row < height) {
+ size_t j;
if (row % 8 == 0) {
j = 0;
} else if (row % 4 == 0) {
@@ -1085,13 +1077,13 @@ void interlace_buf(const uint8_t* buf, uint32_t pitch, uint32_t height) {
}
temp = FX_Alloc(uint8_t, pitch);
FXSYS_memcpy(temp, &buf[pitch * row], pitch);
- pass[j].Add(temp);
+ pass[j].push_back(temp);
row++;
}
- for (i = 0, row = 0; i < 4; i++) {
- for (j = 0; j < pass[i].GetSize(); j++, row++) {
- FXSYS_memcpy((uint8_t*)&buf[pitch * row], pass[i].GetAt(j), pitch);
- FX_Free(pass[i].GetAt(j));
+ for (size_t i = 0, row = 0; i < 4; i++) {
+ for (size_t j = 0; j < pass[i].size(); j++, row++) {
+ FXSYS_memcpy((uint8_t*)&buf[pitch * row], pass[i][j], pitch);
+ FX_Free(pass[i][j]);
}
}
}
diff --git a/core/fxcodec/lgif/fx_gif.h b/core/fxcodec/lgif/fx_gif.h
index eb5f85a187..a8b780b099 100644
--- a/core/fxcodec/lgif/fx_gif.h
+++ b/core/fxcodec/lgif/fx_gif.h
@@ -8,6 +8,7 @@
#define CORE_FXCODEC_LGIF_FX_GIF_H_
#include <setjmp.h>
+#include <vector>
#include "core/fxcrt/fx_basic.h"
@@ -223,7 +224,7 @@ struct tag_gif_decompress_struct {
uint32_t img_row_offset;
uint32_t img_row_avail_size;
uint8_t img_pass_num;
- CFX_ArrayTemplate<GifImage*>* img_ptr_arr_ptr;
+ std::vector<GifImage*>* img_ptr_arr_ptr;
uint8_t* (*gif_ask_buf_for_pal_fn)(gif_decompress_struct_p gif_ptr,
int32_t pal_size);
uint8_t* next_in;
@@ -250,7 +251,7 @@ struct tag_gif_decompress_struct {
bool interlace);
CFX_ByteString* cmt_data_ptr;
GifGCE* gce_ptr;
- CFX_ArrayTemplate<GifPlainText*>* pt_ptr_arr_ptr;
+ std::vector<GifPlainText*>* pt_ptr_arr_ptr;
};
typedef struct tag_gif_compress_struct gif_compress_struct;
typedef gif_compress_struct* gif_compress_struct_p;