Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
authorBo Xu <bo_xu@foxitsoftware.com>
Wed, 29 Oct 2014 06:03:33 +0000 (23:03 -0700)
committerBo Xu <bo_xu@foxitsoftware.com>
Mon, 3 Nov 2014 19:10:11 +0000 (11:10 -0800)
1059 files changed:
core/include/fpdfdoc/fpdf_doc.h
core/include/fxcodec/fx_codec.h
core/include/fxcodec/fx_codec_def.h
core/include/fxcodec/fx_codec_provider.h
core/include/fxcrt/fx_arb.h
core/include/fxcrt/fx_basic.h
core/include/fxcrt/fx_ext.h
core/include/fxcrt/fx_stream.h
core/include/fxcrt/fx_ucd.h
core/include/fxge/fx_font.h
core/src/fpdfdoc/doc_formfield.cpp
core/src/fxcodec/codec/codec_int.h
core/src/fxcodec/codec/fx_codec.cpp
core/src/fxcodec/codec/fx_codec_bmp.cpp [new file with mode: 0644]
core/src/fxcodec/codec/fx_codec_gif.cpp [new file with mode: 0644]
core/src/fxcodec/codec/fx_codec_jpeg.cpp
core/src/fxcodec/codec/fx_codec_png.cpp [new file with mode: 0644]
core/src/fxcodec/codec/fx_codec_progress.cpp [new file with mode: 0644]
core/src/fxcodec/codec/fx_codec_progress.h [new file with mode: 0644]
core/src/fxcodec/codec/fx_codec_tiff.cpp [new file with mode: 0644]
core/src/fxcodec/fx_lpng/include/fx_png.h [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_png.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_pngerror.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_pngget.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_pngmem.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_pngpread.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_pngread.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_pngrio.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_pngrtran.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_pngrutil.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_pngset.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_pngtrans.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_pngwio.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_pngwrite.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_pngwtran.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/fx_pngwutil.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/png.h [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/pngconf.h [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/pngdebug.h [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/pnginfo.h [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/pnglibconf.h [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/pngpriv.h [new file with mode: 0644]
core/src/fxcodec/fx_lpng/lpng_v163/pngstruct.h [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_png.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_pngerror.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_pngget.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_pngmem.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_pngpread.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_pngread.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_pngrio.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_pngrtran.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_pngrutil.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_pngset.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_pngtrans.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_pngwio.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_pngwrite.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_pngwtran.c [new file with mode: 0644]
core/src/fxcodec/fx_lpng/src/fx_pngwutil.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/include/fx_tiffiop.h [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_aux.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_close.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_codec.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_color.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_compress.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_dir.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_dirinfo.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_dirread.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_dirwrite.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_dumpmode.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_error.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_extension.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_fax3.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_fax3sm.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_flush.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_getimage.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_jpeg.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_luv.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_lzw.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_next.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_ojpeg.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_open.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_packbits.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_pixarlog.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_predict.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_print.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_read.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_strip.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_swab.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_thunder.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_tile.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_version.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_warning.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_write.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/src/fx_tif_zip.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/t4.h [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_aux.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_close.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_codec.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_color.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_compress.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_dir.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_dir.h [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_dirinfo.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_dirread.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_dirwrite.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_dumpmode.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_error.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_extension.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_fax3.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_fax3.h [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_fax3sm.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_flush.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_getimage.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_jpeg.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_luv.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_lzw.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_next.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_ojpeg.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_open.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_packbits.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_pixarlog.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_predict.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_predict.h [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_print.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_read.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_strip.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_swab.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_thunder.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_tile.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_version.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_warning.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_write.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tif_zip.c [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tiff.h [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tiffconf.h [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tiffio.h [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tiffiop.h [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/tiffvers.h [new file with mode: 0644]
core/src/fxcodec/fx_tiff/tiff_v403/uvcode.h [new file with mode: 0644]
core/src/fxcodec/lbmp/fx_bmp.cpp [new file with mode: 0644]
core/src/fxcodec/lbmp/fx_bmp.h [new file with mode: 0644]
core/src/fxcodec/lgif/fx_gif.cpp [new file with mode: 0644]
core/src/fxcodec/lgif/fx_gif.h [new file with mode: 0644]
core/src/fxcrt/extension.h
core/src/fxcrt/fx_arabic.cpp
core/src/fxcrt/fx_arabic.h
core/src/fxcrt/fx_extension.cpp
core/src/fxcrt/fx_xml_parser.cpp
core/src/fxge/ge/fx_ge_font.cpp
core/src/fxge/ge/fx_ge_fontmap.cpp
core/src/fxge/ge/text_int.h
fpdfsdk/include/formfiller/FFL_ComboBox.h
fpdfsdk/include/formfiller/FFL_FormFiller.h
fpdfsdk/include/formfiller/FFL_IFormFiller.h
fpdfsdk/include/formfiller/FFL_Notify.h
fpdfsdk/include/formfiller/FFL_TextField.h
fpdfsdk/include/fpdf_dataavail.h
fpdfsdk/include/fpdf_flatten.h
fpdfsdk/include/fpdf_progressive.h
fpdfsdk/include/fpdf_transformpage.h
fpdfsdk/include/fpdfdoc.h
fpdfsdk/include/fpdfedit.h
fpdfsdk/include/fpdfformfill.h
fpdfsdk/include/fpdfppo.h
fpdfsdk/include/fpdftext.h
fpdfsdk/include/fpdfview.h
fpdfsdk/include/fpdfxfa/fpdfxfa_app.h [new file with mode: 0644]
fpdfsdk/include/fpdfxfa/fpdfxfa_doc.h [new file with mode: 0644]
fpdfsdk/include/fpdfxfa/fpdfxfa_page.h [new file with mode: 0644]
fpdfsdk/include/fpdfxfa/fpdfxfa_util.h [new file with mode: 0644]
fpdfsdk/include/fsdk_annothandler.h
fpdfsdk/include/fsdk_baseannot.h
fpdfsdk/include/fsdk_baseform.h
fpdfsdk/include/fsdk_define.h
fpdfsdk/include/fsdk_mgr.h
fpdfsdk/include/javascript/IJavaScript.h
fpdfsdk/include/javascript/JS_Context.h
fpdfsdk/include/javascript/JS_Define.h
fpdfsdk/include/javascript/JS_GlobalData.h
fpdfsdk/include/javascript/JS_Object.h
fpdfsdk/include/javascript/JS_Runtime.h
fpdfsdk/include/javascript/JavaScript.h
fpdfsdk/include/pdfwindow/PWL_Edit.h
fpdfsdk/src/formfiller/FFL_ComboBox.cpp
fpdfsdk/src/formfiller/FFL_FormFiller.cpp
fpdfsdk/src/formfiller/FFL_IFormFiller.cpp
fpdfsdk/src/formfiller/FFL_TextField.cpp
fpdfsdk/src/fpdf_dataavail.cpp
fpdfsdk/src/fpdf_ext.cpp
fpdfsdk/src/fpdf_flatten.cpp
fpdfsdk/src/fpdf_progressive.cpp
fpdfsdk/src/fpdf_transformpage.cpp
fpdfsdk/src/fpdfdoc.cpp
fpdfsdk/src/fpdfeditimg.cpp
fpdfsdk/src/fpdfeditpage.cpp
fpdfsdk/src/fpdfformfill.cpp
fpdfsdk/src/fpdfppo.cpp
fpdfsdk/src/fpdfsave.cpp
fpdfsdk/src/fpdftext.cpp
fpdfsdk/src/fpdfview.cpp
fpdfsdk/src/fpdfxfa/fpdfxfa_app.cpp [new file with mode: 0644]
fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp [new file with mode: 0644]
fpdfsdk/src/fpdfxfa/fpdfxfa_page.cpp [new file with mode: 0644]
fpdfsdk/src/fpdfxfa/fpdfxfa_util.cpp [new file with mode: 0644]
fpdfsdk/src/fsdk_actionhandler.cpp
fpdfsdk/src/fsdk_annothandler.cpp
fpdfsdk/src/fsdk_baseannot.cpp
fpdfsdk/src/fsdk_baseform.cpp
fpdfsdk/src/fsdk_mgr.cpp
fpdfsdk/src/javascript/Document.cpp
fpdfsdk/src/javascript/Field.cpp
fpdfsdk/src/javascript/JS_Context.cpp
fpdfsdk/src/javascript/JS_GlobalData.cpp
fpdfsdk/src/javascript/JS_Object.cpp
fpdfsdk/src/javascript/JS_Runtime.cpp
fpdfsdk/src/javascript/app.cpp
fpdfsdk/src/javascript/global.cpp
fpdfsdk/src/jsapi/fxjs_v8.cpp
fpdfsdk/src/pdfwindow/PWL_ComboBox.cpp
pdfium.gyp
samples/pdfium_test.cc
xfa.gyp [new file with mode: 0644]
xfa/include/foxitxfa.h [new file with mode: 0644]
xfa/include/fwl/adapter/fwl_adapterclipboardmgr.h [new file with mode: 0644]
xfa/include/fwl/adapter/fwl_adaptercursormgr.h [new file with mode: 0644]
xfa/include/fwl/adapter/fwl_adaptermonitormgr.h [new file with mode: 0644]
xfa/include/fwl/adapter/fwl_adapternative.h [new file with mode: 0644]
xfa/include/fwl/adapter/fwl_adapterthreadmgr.h [new file with mode: 0644]
xfa/include/fwl/adapter/fwl_adaptertimermgr.h [new file with mode: 0644]
xfa/include/fwl/adapter/fwl_adapterwidgetmgr.h [new file with mode: 0644]
xfa/include/fwl/adapter/fwl_sdadapterimp.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fwl_barcode.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fwl_caret.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fwl_checkbox.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fwl_combobox.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fwl_datetimepicker.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fwl_edit.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fwl_listbox.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fwl_menu.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fwl_monthcalendar.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fwl_picturebox.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fwl_pushbutton.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fwl_scrollbar.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fwl_spinbutton.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fwl_tooltipctrl.h [new file with mode: 0644]
xfa/include/fwl/basewidget/fxmath_barcode.h [new file with mode: 0644]
xfa/include/fwl/core/fwl_app.h [new file with mode: 0644]
xfa/include/fwl/core/fwl_content.h [new file with mode: 0644]
xfa/include/fwl/core/fwl_error.h [new file with mode: 0644]
xfa/include/fwl/core/fwl_form.h [new file with mode: 0644]
xfa/include/fwl/core/fwl_grid.h [new file with mode: 0644]
xfa/include/fwl/core/fwl_note.h [new file with mode: 0644]
xfa/include/fwl/core/fwl_panel.h [new file with mode: 0644]
xfa/include/fwl/core/fwl_target.h [new file with mode: 0644]
xfa/include/fwl/core/fwl_theme.h [new file with mode: 0644]
xfa/include/fwl/core/fwl_thread.h [new file with mode: 0644]
xfa/include/fwl/core/fwl_timer.h [new file with mode: 0644]
xfa/include/fwl/core/fwl_widget.h [new file with mode: 0644]
xfa/include/fwl/core/fwl_widgetdef.h [new file with mode: 0644]
xfa/include/fwl/core/fwl_widgetmgr.h [new file with mode: 0644]
xfa/include/fwl/fwl.h [new file with mode: 0644]
xfa/include/fwl/lightwidget/app.h [new file with mode: 0644]
xfa/include/fwl/lightwidget/barcode.h [new file with mode: 0644]
xfa/include/fwl/lightwidget/caret.h [new file with mode: 0644]
xfa/include/fwl/lightwidget/checkbox.h [new file with mode: 0644]
xfa/include/fwl/lightwidget/combobox.h [new file with mode: 0644]
xfa/include/fwl/lightwidget/datetimepicker.h [new file with mode: 0644]
xfa/include/fwl/lightwidget/edit.h [new file with mode: 0644]
xfa/include/fwl/lightwidget/listbox.h [new file with mode: 0644]
xfa/include/fwl/lightwidget/picturebox.h [new file with mode: 0644]
xfa/include/fwl/lightwidget/pushbutton.h [new file with mode: 0644]
xfa/include/fwl/lightwidget/scrollbar.h [new file with mode: 0644]
xfa/include/fwl/lightwidget/theme.h [new file with mode: 0644]
xfa/include/fwl/lightwidget/tooltipctrl.h [new file with mode: 0644]
xfa/include/fwl/lightwidget/widget.h [new file with mode: 0644]
xfa/include/fwl/theme/barcodetp.h [new file with mode: 0644]
xfa/include/fwl/theme/carettp.h [new file with mode: 0644]
xfa/include/fwl/theme/checkboxtp.h [new file with mode: 0644]
xfa/include/fwl/theme/comboboxtp.h [new file with mode: 0644]
xfa/include/fwl/theme/datetimepickertp.h [new file with mode: 0644]
xfa/include/fwl/theme/edittp.h [new file with mode: 0644]
xfa/include/fwl/theme/formtp.h [new file with mode: 0644]
xfa/include/fwl/theme/listboxtp.h [new file with mode: 0644]
xfa/include/fwl/theme/monthcalendartp.h [new file with mode: 0644]
xfa/include/fwl/theme/pictureboxtp.h [new file with mode: 0644]
xfa/include/fwl/theme/pushbuttontp.h [new file with mode: 0644]
xfa/include/fwl/theme/scrollbartp.h [new file with mode: 0644]
xfa/include/fwl/theme/utils.h [new file with mode: 0644]
xfa/include/fwl/theme/widgettp.h [new file with mode: 0644]
xfa/include/fxbarcode/BC_BarCode.h [new file with mode: 0644]
xfa/include/fxfa/fxfa.h [new file with mode: 0644]
xfa/include/fxfa/fxfa_basic.h [new file with mode: 0644]
xfa/include/fxfa/fxfa_objectacc.h [new file with mode: 0644]
xfa/include/fxfa/fxfa_widget.h [new file with mode: 0644]
xfa/include/fxgraphics/fx_graphics.h [new file with mode: 0644]
xfa/include/fxjse/fxjse.h [new file with mode: 0644]
xfa/src/fdp/include/fde.h [new file with mode: 0644]
xfa/src/fdp/include/fde_brs.h [new file with mode: 0644]
xfa/src/fdp/include/fde_css.h [new file with mode: 0644]
xfa/src/fdp/include/fde_img.h [new file with mode: 0644]
xfa/src/fdp/include/fde_mem.h [new file with mode: 0644]
xfa/src/fdp/include/fde_pen.h [new file with mode: 0644]
xfa/src/fdp/include/fde_psr.h [new file with mode: 0644]
xfa/src/fdp/include/fde_pth.h [new file with mode: 0644]
xfa/src/fdp/include/fde_rdr.h [new file with mode: 0644]
xfa/src/fdp/include/fde_rdv.h [new file with mode: 0644]
xfa/src/fdp/include/fde_tto.h [new file with mode: 0644]
xfa/src/fdp/include/fde_xml.h [new file with mode: 0644]
xfa/src/fdp/src/css/fde_csscache.cpp [new file with mode: 0644]
xfa/src/fdp/src/css/fde_csscache.h [new file with mode: 0644]
xfa/src/fdp/src/css/fde_cssdatatable.cpp [new file with mode: 0644]
xfa/src/fdp/src/css/fde_cssdatatable.h [new file with mode: 0644]
xfa/src/fdp/src/css/fde_cssdeclaration.cpp [new file with mode: 0644]
xfa/src/fdp/src/css/fde_cssdeclaration.h [new file with mode: 0644]
xfa/src/fdp/src/css/fde_cssstyleselector.cpp [new file with mode: 0644]
xfa/src/fdp/src/css/fde_cssstyleselector.h [new file with mode: 0644]
xfa/src/fdp/src/css/fde_cssstylesheet.cpp [new file with mode: 0644]
xfa/src/fdp/src/css/fde_cssstylesheet.h [new file with mode: 0644]
xfa/src/fdp/src/css/fde_csssyntax.cpp [new file with mode: 0644]
xfa/src/fdp/src/css/fde_csssyntax.h [new file with mode: 0644]
xfa/src/fdp/src/fde/fde_devbasic.cpp [new file with mode: 0644]
xfa/src/fdp/src/fde/fde_devbasic.h [new file with mode: 0644]
xfa/src/fdp/src/fde/fde_gdidevice.cpp [new file with mode: 0644]
xfa/src/fdp/src/fde/fde_gdidevice.h [new file with mode: 0644]
xfa/src/fdp/src/fde/fde_gedevice.cpp [new file with mode: 0644]
xfa/src/fdp/src/fde/fde_gedevice.h [new file with mode: 0644]
xfa/src/fdp/src/fde/fde_geobject.cpp [new file with mode: 0644]
xfa/src/fdp/src/fde/fde_geobject.h [new file with mode: 0644]
xfa/src/fdp/src/fde/fde_iterator.cpp [new file with mode: 0644]
xfa/src/fdp/src/fde/fde_iterator.h [new file with mode: 0644]
xfa/src/fdp/src/fde/fde_object.cpp [new file with mode: 0644]
xfa/src/fdp/src/fde/fde_object.h [new file with mode: 0644]
xfa/src/fdp/src/fde/fde_render.cpp [new file with mode: 0644]
xfa/src/fdp/src/fde/fde_render.h [new file with mode: 0644]
xfa/src/fdp/src/tto/fde_textout.cpp [new file with mode: 0644]
xfa/src/fdp/src/tto/fde_textout.h [new file with mode: 0644]
xfa/src/fdp/src/xml/fde_xml.cpp [new file with mode: 0644]
xfa/src/fdp/src/xml/fde_xml.h [new file with mode: 0644]
xfa/src/fee/include/fx_wordbreak.h [new file with mode: 0644]
xfa/src/fee/include/ifde_txtedtbuf.h [new file with mode: 0644]
xfa/src/fee/include/ifde_txtedtengine.h [new file with mode: 0644]
xfa/src/fee/include/ifde_txtedtpage.h [new file with mode: 0644]
xfa/src/fee/src/fee/fde_txtedtblock.cpp [new file with mode: 0644]
xfa/src/fee/src/fee/fde_txtedtblock.h [new file with mode: 0644]
xfa/src/fee/src/fee/fde_txtedtbuf.cpp [new file with mode: 0644]
xfa/src/fee/src/fee/fde_txtedtbuf.h [new file with mode: 0644]
xfa/src/fee/src/fee/fde_txtedtengine.cpp [new file with mode: 0644]
xfa/src/fee/src/fee/fde_txtedtengine.h [new file with mode: 0644]
xfa/src/fee/src/fee/fde_txtedtkmpmatch.cpp [new file with mode: 0644]
xfa/src/fee/src/fee/fde_txtedtkmpmatch.h [new file with mode: 0644]
xfa/src/fee/src/fee/fde_txtedtpage.cpp [new file with mode: 0644]
xfa/src/fee/src/fee/fde_txtedtpage.h [new file with mode: 0644]
xfa/src/fee/src/fee/fde_txtedtparag.cpp [new file with mode: 0644]
xfa/src/fee/src/fee/fde_txtedtparag.h [new file with mode: 0644]
xfa/src/fee/src/fx_wordbreak/fx_wordbreak_impl.cpp [new file with mode: 0644]
xfa/src/fee/src/fx_wordbreak/fx_wordbreak_impl.h [new file with mode: 0644]
xfa/src/fee/src/fx_wordbreak/fx_wordbreakdata.cpp [new file with mode: 0644]
xfa/src/fgas/include/fgas.h [new file with mode: 0644]
xfa/src/fgas/include/fx_alg.h [new file with mode: 0644]
xfa/src/fgas/include/fx_cpg.h [new file with mode: 0644]
xfa/src/fgas/include/fx_datetime.h [new file with mode: 0644]
xfa/src/fgas/include/fx_fnt.h [new file with mode: 0644]
xfa/src/fgas/include/fx_lbk.h [new file with mode: 0644]
xfa/src/fgas/include/fx_lgg.h [new file with mode: 0644]
xfa/src/fgas/include/fx_locale.h [new file with mode: 0644]
xfa/src/fgas/include/fx_mem.h [new file with mode: 0644]
xfa/src/fgas/include/fx_rbk.h [new file with mode: 0644]
xfa/src/fgas/include/fx_sax.h [new file with mode: 0644]
xfa/src/fgas/include/fx_stm.h [new file with mode: 0644]
xfa/src/fgas/include/fx_sys.h [new file with mode: 0644]
xfa/src/fgas/include/fx_tbk.h [new file with mode: 0644]
xfa/src/fgas/include/fx_ucd.h [new file with mode: 0644]
xfa/src/fgas/include/fx_utl.h [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpcu1250.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpcu1251.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpcu1252.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpcu1253.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpcu1254.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpcu1255.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpcu1256.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpcu1257.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpcu1258.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpcu874.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpcu932.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpcu936.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpcu949.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpcu950.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cphi1250.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cphi1251.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cphi1252.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cphi1253.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cphi1254.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cphi1255.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cphi1256.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cphi1257.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cphi1258.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cphi874.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cphi932.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cphi936.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cphi949.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cphi950.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpuc1250.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpuc1251.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpuc1252.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpuc1253.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpuc1254.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpuc1255.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpuc1256.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpuc1257.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpuc1258.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpuc874.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpuc932.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpuc936.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpuc949.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/codepage/cpuc950.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/fx_algorithm.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/fx_codepage.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/fx_codepage.h [new file with mode: 0644]
xfa/src/fgas/src/crt/fx_cpmgr.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/fx_encode.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/fx_memory.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/fx_memory.h [new file with mode: 0644]
xfa/src/fgas/src/crt/fx_stream.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/fx_stream.h [new file with mode: 0644]
xfa/src/fgas/src/crt/fx_system.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/fx_utils.cpp [new file with mode: 0644]
xfa/src/fgas/src/crt/fx_utils.h [new file with mode: 0644]
xfa/src/fgas/src/fgas_base.h [new file with mode: 0644]
xfa/src/fgas/src/font/fx_fontutils.cpp [new file with mode: 0644]
xfa/src/fgas/src/font/fx_fontutils.h [new file with mode: 0644]
xfa/src/fgas/src/font/fx_gdifont.cpp [new file with mode: 0644]
xfa/src/fgas/src/font/fx_gdifont.h [new file with mode: 0644]
xfa/src/fgas/src/font/fx_gefont.cpp [new file with mode: 0644]
xfa/src/fgas/src/font/fx_gefont.h [new file with mode: 0644]
xfa/src/fgas/src/font/fx_stdfontmgr.cpp [new file with mode: 0644]
xfa/src/fgas/src/font/fx_stdfontmgr.h [new file with mode: 0644]
xfa/src/fgas/src/layout/fx_linebreak.cpp [new file with mode: 0644]
xfa/src/fgas/src/layout/fx_rtfbreak.cpp [new file with mode: 0644]
xfa/src/fgas/src/layout/fx_rtfbreak.h [new file with mode: 0644]
xfa/src/fgas/src/layout/fx_textbreak.cpp [new file with mode: 0644]
xfa/src/fgas/src/layout/fx_textbreak.h [new file with mode: 0644]
xfa/src/fgas/src/layout/fx_unicode.cpp [new file with mode: 0644]
xfa/src/fgas/src/layout/fx_unicode.h [new file with mode: 0644]
xfa/src/fgas/src/localization/fx_datetime.cpp [new file with mode: 0644]
xfa/src/fgas/src/localization/fx_locale.cpp [new file with mode: 0644]
xfa/src/fgas/src/localization/fx_localeimp.h [new file with mode: 0644]
xfa/src/fgas/src/localization/fx_localemgr.cpp [new file with mode: 0644]
xfa/src/fgas/src/localization/fx_localemgr.h [new file with mode: 0644]
xfa/src/fgas/src/xml/fx_sax_imp.cpp [new file with mode: 0644]
xfa/src/fgas/src/xml/fx_sax_imp.h [new file with mode: 0644]
xfa/src/foxitlib.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fwl_barcodeimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fwl_caretimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fwl_checkboximp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fwl_comboboximp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fwl_datetimepickerimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fwl_editimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fwl_formproxyimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fwl_listboximp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fwl_monthcalendarimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fwl_pictureboximp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fwl_pushbuttonimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fwl_scrollbarimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fwl_spinbuttonimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fwl_tooltipctrlimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/fxmath_barcodeimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fwl_barcodeimp.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fwl_caretimp.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fwl_checkboximp.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fwl_comboboximp.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fwl_datetimepickerimp.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fwl_editimp.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fwl_formproxyimp.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fwl_listboximp.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fwl_monthcalendarimp.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fwl_pictureboximp.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fwl_pushbuttonimp.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fwl_scrollbarimp.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fwl_spinbuttonimp.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fwl_tooltipctrlimp.h [new file with mode: 0644]
xfa/src/fwl/src/basewidget/include/fxmath_barcodeimp.h [new file with mode: 0644]
xfa/src/fwl/src/core/fwl_appimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/core/fwl_contentimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/core/fwl_formimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/core/fwl_gridimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/core/fwl_noteimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/core/fwl_panelimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/core/fwl_sdadapterimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/core/fwl_targetimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/core/fwl_threadimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/core/fwl_timerimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/core/fwl_widgetimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/core/fwl_widgetmgrimp.cpp [new file with mode: 0644]
xfa/src/fwl/src/core/include/fwl_appimp.h [new file with mode: 0644]
xfa/src/fwl/src/core/include/fwl_contentimp.h [new file with mode: 0644]
xfa/src/fwl/src/core/include/fwl_formimp.h [new file with mode: 0644]
xfa/src/fwl/src/core/include/fwl_gridimp.h [new file with mode: 0644]
xfa/src/fwl/src/core/include/fwl_noteimp.h [new file with mode: 0644]
xfa/src/fwl/src/core/include/fwl_panelimp.h [new file with mode: 0644]
xfa/src/fwl/src/core/include/fwl_targetimp.h [new file with mode: 0644]
xfa/src/fwl/src/core/include/fwl_threadimp.h [new file with mode: 0644]
xfa/src/fwl/src/core/include/fwl_widgetimp.h [new file with mode: 0644]
xfa/src/fwl/src/core/include/fwl_widgetmgrimp.h [new file with mode: 0644]
xfa/src/fwl/src/lightwidget/app.cpp [new file with mode: 0644]
xfa/src/fwl/src/lightwidget/barcode.cpp [new file with mode: 0644]
xfa/src/fwl/src/lightwidget/caret.cpp [new file with mode: 0644]
xfa/src/fwl/src/lightwidget/checkbox.cpp [new file with mode: 0644]
xfa/src/fwl/src/lightwidget/combobox.cpp [new file with mode: 0644]
xfa/src/fwl/src/lightwidget/datetimepicker.cpp [new file with mode: 0644]
xfa/src/fwl/src/lightwidget/edit.cpp [new file with mode: 0644]
xfa/src/fwl/src/lightwidget/listbox.cpp [new file with mode: 0644]
xfa/src/fwl/src/lightwidget/picturebox.cpp [new file with mode: 0644]
xfa/src/fwl/src/lightwidget/pushbutton.cpp [new file with mode: 0644]
xfa/src/fwl/src/lightwidget/scrollbar.cpp [new file with mode: 0644]
xfa/src/fwl/src/lightwidget/theme.cpp [new file with mode: 0644]
xfa/src/fwl/src/lightwidget/tooltipctrl.cpp [new file with mode: 0644]
xfa/src/fwl/src/lightwidget/widget.cpp [new file with mode: 0644]
xfa/src/fwl/src/theme/barcodetp.cpp [new file with mode: 0644]
xfa/src/fwl/src/theme/carettp.cpp [new file with mode: 0644]
xfa/src/fwl/src/theme/checkboxtp.cpp [new file with mode: 0644]
xfa/src/fwl/src/theme/comboboxtp.cpp [new file with mode: 0644]
xfa/src/fwl/src/theme/datetimepickertp.cpp [new file with mode: 0644]
xfa/src/fwl/src/theme/edittp.cpp [new file with mode: 0644]
xfa/src/fwl/src/theme/formtp.cpp [new file with mode: 0644]
xfa/src/fwl/src/theme/listboxtp.cpp [new file with mode: 0644]
xfa/src/fwl/src/theme/monthcalendartp.cpp [new file with mode: 0644]
xfa/src/fwl/src/theme/pictureboxtp.cpp [new file with mode: 0644]
xfa/src/fwl/src/theme/pushbuttontp.cpp [new file with mode: 0644]
xfa/src/fwl/src/theme/scrollbartp.cpp [new file with mode: 0644]
xfa/src/fwl/src/theme/widgettp.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_ASCIIEncoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_BarCode.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_Base256Encoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_Binarizer.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_BinaryBitmap.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_BufferedImageLuminanceSource.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_C40Encoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_CommonBitArray.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_CommonBitMatrix.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_CommonBitSource.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_CommonByteArray.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_CommonByteMatrix.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_CommonCharacterSetECI.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_CommonDecoderResult.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_CommonECI.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_CommonPerspectiveTransform.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_DataMatrixBitMatrixParser.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_DataMatrixDataBlock.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_DataMatrixDecodedBitStreamParser.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_DataMatrixDecoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_DataMatrixDetector.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_DataMatrixReader.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_DataMatrixSymbolInfo144.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_DataMatrixVersion.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_DataMatrixWriter.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_DefaultPlacement.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_Dimension.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_EdifactEncoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_Encoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_EncoderContext.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_ErrorCorrection.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_FinderPatternInfo.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_GlobalHistogramBinarizer.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_HighLevelEncoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_Library.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_LuminanceSource.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OneDReader.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OneDimReader.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OneDimWriter.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OnedCodaBarReader.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OnedCodaBarWriter.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OnedCode128Reader.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OnedCode128Writer.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OnedCode39Reader.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OnedCode39Writer.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OnedEAN13Reader.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OnedEAN13Writer.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OnedEAN8Reader.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OnedEAN8Writer.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OnedUPCAReader.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_OnedUPCAWriter.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417BarcodeMatrix.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417BarcodeMetadata.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417BarcodeRow.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417BarcodeValue.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417BoundingBox.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417Codeword.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417CodewordDecoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417Common.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417Compaction.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417DecodedBitStreamParser.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417DetectionResult.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417DetectionResultColumn.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417DetectionResultRowIndicatorColumn.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417Detector.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417DetectorResult.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417Dimensions.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417ECErrorCorrection.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417ECModulusGF.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417ECModulusPoly.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417ErrorCorrection.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417HighLevelEncoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417Reader.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417ResultMetadata.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417ScanningDecoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_PDF417Writer.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRAlignmentPattern.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRAlignmentPatternFinder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRBitMatrixParser.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCodeReader.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCodeWriter.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCoderBitVector.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCoderBlockPair.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCoderDecoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCoderECB.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCoderECBlocks.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCoderEncoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCoderErrorCorrectionLevel.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCoderFormatInformation.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCoderMaskUtil.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCoderMatrixUtil.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCoderMode.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRCoderVersion.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRDataBlock.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRDataMask.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRDecodedBitStreamParser.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRDetector.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRDetectorResult.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRFinderPattern.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRFinderPatternFinder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_QRGridSampler.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_Reader.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_ReedSolomon.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_ReedSolomonDecoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_ReedSolomonGF256.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_ReedSolomonGF256Poly.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_ResultPoint.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_SymbolInfo.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_SymbolShapeHint.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_TextEncoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_TwoDimWriter.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_UtilCodingConvert.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_UtilRSS.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_Utils.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_WhiteRectangleDetector.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_Writer.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/BC_X12Encoder.cpp [new file with mode: 0644]
xfa/src/fxbarcode/src/barcode.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_ASCIIEncoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_Base256Encoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_Binarizer.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_BinaryBitmap.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_BufferedImageLuminanceSource.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_C40Encoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_CommonBitArray.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_CommonBitMatrix.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_CommonBitSource.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_CommonByteArray.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_CommonByteMatrix.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_CommonCharacterSetECI.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_CommonDecoderResult.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_CommonECI.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_CommonPerspectiveTransform.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_DataMatrixBitMatrixParser.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_DataMatrixDataBlock.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_DataMatrixDecodedBitStreamParser.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_DataMatrixDecoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_DataMatrixDetector.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_DataMatrixReader.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_DataMatrixSymbolInfo144.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_DataMatrixVersion.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_DataMatrixWriter.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_DecoderResult.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_DefaultPlacement.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_Dimension.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_EdifactEncoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_Encoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_EncoderContext.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_ErrorCorrection.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_FinderPatternInfo.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_GlobalHistogramBinarizer.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_HighLevelEncoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_LuminanceSource.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OneDReader.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OneDimReader.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OneDimWriter.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OnedCodaBarReader.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OnedCodaBarWriter.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OnedCode128Reader.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OnedCode128Writer.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OnedCode39Reader.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OnedCode39Writer.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OnedEAN13Reader.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OnedEAN13Writer.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OnedEAN8Reader.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OnedEAN8Writer.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OnedUPCAReader.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_OnedUPCAWriter.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417BarcodeMatrix.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417BarcodeMetadata.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417BarcodeRow.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417BarcodeValue.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417BoundingBox.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417Codeword.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417CodewordDecoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417Common.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417Compaction.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417DecodedBitStreamParser.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417DetectionResult.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417DetectionResultColumn.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417DetectionResultRowIndicatorColumn.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417Detector.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417DetectorResult.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417Dimensions.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417ECErrorCorrection.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417ECModulusGF.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417ECModulusPoly.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417ErrorCorrection.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417HighLevelEncoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417Reader.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417ResultMetadata.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417ScanningDecoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_PDF417Writer.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRAlignmentPattern.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRAlignmentPatternFinder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRBitMatrixParser.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCodeReader.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCodeWriter.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCoderBitVector.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCoderBlockPair.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCoderDecoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCoderECB.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCoderECBlocks.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCoderEncoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCoderErrorCorrectionLevel.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCoderFormatInformation.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCoderMaskUtil.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCoderMatrixUtil.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCoderMode.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRCoderVersion.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRDataBlock.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRDataMask.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRDecodedBitStreamParser.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRDetector.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRDetectorResult.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRFinderPattern.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRFinderPatternFinder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_QRGridSampler.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_Reader.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_ReedSolomon.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_ReedSolomonDecoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_ReedSolomonGF256.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_ReedSolomonGF256Poly.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_ResultPoint.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_SymbolInfo.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_SymbolShapeHint.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_TextEncoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_TwoDimWriter.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_UtilCodingConvert.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_UtilRSS.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_WhiteRectangleDetector.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_Writer.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/BC_X12Encoder.h [new file with mode: 0644]
xfa/src/fxbarcode/src/include/utils.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_checksum.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_checksum.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffConfigAcc.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffConfigAcc.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffapp.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffapp.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffbarcode.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffbarcode.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffcheckbutton.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffcheckbutton.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffchoicelist.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffchoicelist.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffdoc.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffdoc.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffdochandler.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffdochandler.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffdocview.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffdocview.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffdraw.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffdraw.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffexclgroup.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffexclgroup.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_fffield.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_fffield.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffimage.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffimage.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffimageedit.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffimageedit.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffnotify.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffnotify.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffpageview.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffpageview.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffpath.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffpath.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffpushbutton.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffpushbutton.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffsignature.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffsignature.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffsubform.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffsubform.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_fftext.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_fftext.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_fftextedit.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_fftextedit.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffwidget.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffwidget.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffwidgetacc.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffwidgetacc.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffwidgethandler.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_ffwidgethandler.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_fontmgr.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_fontmgr.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_fwladapter.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_fwladapter.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_fwltheme.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_fwltheme.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_rendercontext.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_rendercontext.h [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_textlayout.cpp [new file with mode: 0644]
xfa/src/fxfa/src/app/xfa_textlayout.h [new file with mode: 0644]
xfa/src/fxfa/src/common/fxfa_localevalue.h [new file with mode: 0644]
xfa/src/fxfa/src/common/xfa_common.h [new file with mode: 0644]
xfa/src/fxfa/src/common/xfa_debug.h [new file with mode: 0644]
xfa/src/fxfa/src/common/xfa_docdata.h [new file with mode: 0644]
xfa/src/fxfa/src/common/xfa_doclayout.h [new file with mode: 0644]
xfa/src/fxfa/src/common/xfa_document.h [new file with mode: 0644]
xfa/src/fxfa/src/common/xfa_fm2jsapi.h [new file with mode: 0644]
xfa/src/fxfa/src/common/xfa_localemgr.h [new file with mode: 0644]
xfa/src/fxfa/src/common/xfa_object.h [new file with mode: 0644]
xfa/src/fxfa/src/common/xfa_parser.h [new file with mode: 0644]
xfa/src/fxfa/src/common/xfa_script.h [new file with mode: 0644]
xfa/src/fxfa/src/common/xfa_utils.h [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_error.cpp [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_error.h [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_expression.cpp [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_expression.h [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_fm2js.cpp [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_fm2js.h [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_fm2jsapi.cpp [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_fm2jscontext.cpp [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_fm2jscontext.h [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_fmparse.cpp [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_fmparse.h [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_lexer.cpp [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_lexer.h [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_program.cpp [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_program.h [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_simpleexpression.cpp [new file with mode: 0644]
xfa/src/fxfa/src/fm2js/xfa_simpleexpression.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_basic_data.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_basic_imp.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_basic_imp.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_debug_parser.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_debug_parser.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_document_datadescription_imp.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_document_datadescription_imp.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_document_datamerger_imp.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_document_datamerger_imp.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_document_imp.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_document_imp.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_document_layout_imp.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_document_layout_imp.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_document_serialize.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_document_serialize.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_layout_appadapter.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_layout_appadapter.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_layout_itemlayout.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_layout_itemlayout.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_layout_pagemgr_new.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_layout_pagemgr_new.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_locale.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_locale.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_localemgr.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_localevalue.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_object_imp.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_objectacc_imp.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_parser_imp.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_parser_imp.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_datawindow.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_datawindow.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_eventpseudomodel.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_eventpseudomodel.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_hostpseudomodel.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_hostpseudomodel.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_imp.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_imp.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_layoutpseudomodel.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_layoutpseudomodel.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_logpseudomodel.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_logpseudomodel.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_nodehelper.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_nodehelper.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_resolveprocessor.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_resolveprocessor.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_signaturepseudomodel.cpp [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_script_signaturepseudomodel.h [new file with mode: 0644]
xfa/src/fxfa/src/parser/xfa_utils_imp.cpp [new file with mode: 0644]
xfa/src/fxgraphics/src/fx_graphics.cpp [new file with mode: 0644]
xfa/src/fxgraphics/src/fx_metafile_interpreter.cpp [new file with mode: 0644]
xfa/src/fxgraphics/src/fx_metafile_interpreter.h [new file with mode: 0644]
xfa/src/fxgraphics/src/fx_path_generator.cpp [new file with mode: 0644]
xfa/src/fxgraphics/src/fx_path_generator.h [new file with mode: 0644]
xfa/src/fxgraphics/src/pre.h [new file with mode: 0644]
xfa/src/fxjse/src/class.cpp [new file with mode: 0644]
xfa/src/fxjse/src/class.h [new file with mode: 0644]
xfa/src/fxjse/src/context.cpp [new file with mode: 0644]
xfa/src/fxjse/src/context.h [new file with mode: 0644]
xfa/src/fxjse/src/dynprop.cpp [new file with mode: 0644]
xfa/src/fxjse/src/fxv8.h [new file with mode: 0644]
xfa/src/fxjse/src/runtime.cpp [new file with mode: 0644]
xfa/src/fxjse/src/runtime.h [new file with mode: 0644]
xfa/src/fxjse/src/scope_inline.h [new file with mode: 0644]
xfa/src/fxjse/src/util_inline.h [new file with mode: 0644]
xfa/src/fxjse/src/value.cpp [new file with mode: 0644]
xfa/src/fxjse/src/value.h [new file with mode: 0644]
xfa_test/FormFiller_Test/BookMarkView.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/BookMarkView.h [new file with mode: 0644]
xfa_test/FormFiller_Test/ChildFrm.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/ChildFrm.h [new file with mode: 0644]
xfa_test/FormFiller_Test/ConvertDlg.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/ConvertDlg.h [new file with mode: 0644]
xfa_test/FormFiller_Test/ExportPage.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/ExportPage.h [new file with mode: 0644]
xfa_test/FormFiller_Test/FX_SplitterWnd.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/FX_SplitterWnd.h [new file with mode: 0644]
xfa_test/FormFiller_Test/FindDlg.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/FindDlg.h [new file with mode: 0644]
xfa_test/FormFiller_Test/GotoPageDlg.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/GotoPageDlg.h [new file with mode: 0644]
xfa_test/FormFiller_Test/JS_ResponseDlg.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/JS_ResponseDlg.h [new file with mode: 0644]
xfa_test/FormFiller_Test/MainFrm.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/MainFrm.h [new file with mode: 0644]
xfa_test/FormFiller_Test/ReaderVC.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/ReaderVC.dsp [new file with mode: 0644]
xfa_test/FormFiller_Test/ReaderVC.h [new file with mode: 0644]
xfa_test/FormFiller_Test/ReaderVC.rc [new file with mode: 0644]
xfa_test/FormFiller_Test/ReaderVCDoc.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/ReaderVCDoc.h [new file with mode: 0644]
xfa_test/FormFiller_Test/ReaderVCView.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/ReaderVCView.h [new file with mode: 0644]
xfa_test/FormFiller_Test/StdAfx.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/StdAfx.h [new file with mode: 0644]
xfa_test/FormFiller_Test/TestJsDlg.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/TestJsDlg.h [new file with mode: 0644]
xfa_test/FormFiller_Test/ZoomDlg.cpp [new file with mode: 0644]
xfa_test/FormFiller_Test/ZoomDlg.h [new file with mode: 0644]
xfa_test/FormFiller_Test/res/BigHandCursor.cur [new file with mode: 0644]
xfa_test/FormFiller_Test/res/Rd_SelText_Icon.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/Rd_SelText_Icon_Dis.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/ReaderVC.ico [new file with mode: 0644]
xfa_test/FormFiller_Test/res/ReaderVC.rc2 [new file with mode: 0644]
xfa_test/FormFiller_Test/res/ReaderVCDoc.ico [new file with mode: 0644]
xfa_test/FormFiller_Test/res/SmallHandCursor.cur [new file with mode: 0644]
xfa_test/FormFiller_Test/res/Toolbar.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/bookmark.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/bound.cur [new file with mode: 0644]
xfa_test/FormFiller_Test/res/point.cur [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_actual_size.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_bookmark1.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_clockwise.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_counterclockwise.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_first.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_fit_page.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_fit_width.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hand1.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_about2.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_actual_size.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_bookmark1.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_clockwise.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_counterclockwise.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_first.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_first.xpm [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_fit_page.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_fit_width.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_hand1.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_last.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_next.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_open1.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_prev.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_print.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_search.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_snap_shot.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_zoomin.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_hot_zoomout.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_last.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_next.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_prev.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_print.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_search.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_snap_shot.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_zoomin.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/res/tool_zoomout.bmp [new file with mode: 0644]
xfa_test/FormFiller_Test/resource.h [new file with mode: 0644]
xfa_test/pdf/BUILD.gn [new file with mode: 0644]
xfa_test/pdf/DEPS [new file with mode: 0644]
xfa_test/pdf/Info.plist [new file with mode: 0644]
xfa_test/pdf/OWNERS [new file with mode: 0644]
xfa_test/pdf/button.cc [new file with mode: 0644]
xfa_test/pdf/button.h [new file with mode: 0644]
xfa_test/pdf/chunk_stream.cc [new file with mode: 0644]
xfa_test/pdf/chunk_stream.h [new file with mode: 0644]
xfa_test/pdf/control.cc [new file with mode: 0644]
xfa_test/pdf/control.h [new file with mode: 0644]
xfa_test/pdf/document_loader.cc [new file with mode: 0644]
xfa_test/pdf/document_loader.h [new file with mode: 0644]
xfa_test/pdf/draw_utils.cc [new file with mode: 0644]
xfa_test/pdf/draw_utils.h [new file with mode: 0644]
xfa_test/pdf/fading_control.cc [new file with mode: 0644]
xfa_test/pdf/fading_control.h [new file with mode: 0644]
xfa_test/pdf/fading_controls.cc [new file with mode: 0644]
xfa_test/pdf/fading_controls.h [new file with mode: 0644]
xfa_test/pdf/instance.cc [new file with mode: 0644]
xfa_test/pdf/instance.h [new file with mode: 0644]
xfa_test/pdf/number_image_generator.cc [new file with mode: 0644]
xfa_test/pdf/number_image_generator.h [new file with mode: 0644]
xfa_test/pdf/out_of_process_instance.cc [new file with mode: 0644]
xfa_test/pdf/out_of_process_instance.h [new file with mode: 0644]
xfa_test/pdf/page_indicator.cc [new file with mode: 0644]
xfa_test/pdf/page_indicator.h [new file with mode: 0644]
xfa_test/pdf/paint_aggregator.cc [new file with mode: 0644]
xfa_test/pdf/paint_aggregator.h [new file with mode: 0644]
xfa_test/pdf/paint_manager.cc [new file with mode: 0644]
xfa_test/pdf/paint_manager.h [new file with mode: 0644]
xfa_test/pdf/pdf.cc [new file with mode: 0644]
xfa_test/pdf/pdf.def [new file with mode: 0644]
xfa_test/pdf/pdf.gyp [new file with mode: 0644]
xfa_test/pdf/pdf.h [new file with mode: 0644]
xfa_test/pdf/pdf.rc [new file with mode: 0644]
xfa_test/pdf/pdf_engine.h [new file with mode: 0644]
xfa_test/pdf/pdfium/pdfium_assert_matching_enums.cc [new file with mode: 0644]
xfa_test/pdf/pdfium/pdfium_engine.cc [new file with mode: 0644]
xfa_test/pdf/pdfium/pdfium_engine.h [new file with mode: 0644]
xfa_test/pdf/pdfium/pdfium_mem_buffer_file_read.cc [new file with mode: 0644]
xfa_test/pdf/pdfium/pdfium_mem_buffer_file_read.h [new file with mode: 0644]
xfa_test/pdf/pdfium/pdfium_mem_buffer_file_write.cc [new file with mode: 0644]
xfa_test/pdf/pdfium/pdfium_mem_buffer_file_write.h [new file with mode: 0644]
xfa_test/pdf/pdfium/pdfium_page.cc [new file with mode: 0644]
xfa_test/pdf/pdfium/pdfium_page.h [new file with mode: 0644]
xfa_test/pdf/pdfium/pdfium_range.cc [new file with mode: 0644]
xfa_test/pdf/pdfium/pdfium_range.h [new file with mode: 0644]
xfa_test/pdf/preview_mode_client.cc [new file with mode: 0644]
xfa_test/pdf/preview_mode_client.h [new file with mode: 0644]
xfa_test/pdf/progress_control.cc [new file with mode: 0644]
xfa_test/pdf/progress_control.h [new file with mode: 0644]
xfa_test/pdf/resource.h [new file with mode: 0644]
xfa_test/pdf/resource_consts.h [new file with mode: 0644]
xfa_test/pdf/thumbnail_control.cc [new file with mode: 0644]
xfa_test/pdf/thumbnail_control.h [new file with mode: 0644]
xfa_test/process/process.cc [new file with mode: 0644]
xfa_test/process/script.txt [new file with mode: 0644]

index e4cf777..960e943 100644 (file)
@@ -1230,8 +1230,9 @@ public:
 
     FX_BOOL                                    ClearSelectedOptions(FX_BOOL bNotify = FALSE);
 
+    FX_BOOL                                    ClearOptions(FX_BOOL bNotify = FALSE);\r
 
-
+    int                                                InsertOption(CFX_WideString csOptLabel, int index = -1, FX_BOOL bNotify = FALSE);\r
 
     FX_FLOAT                           GetFontSize()
     {
index da8b309..b0eecc3 100644 (file)
@@ -13,6 +13,7 @@
 #include "fx_codec_provider.h"
 class CFX_DIBSource;
 class ICodec_ScanlineDecoder;
+class ICodec_ProgressiveDecoder;\r
 class ICodec_BasicModule;
 class ICodec_FaxModule;
 class ICodec_JpegModule;
@@ -21,6 +22,11 @@ class ICodec_Jbig2Module;
 class ICodec_IccModule;
 class ICodec_FlateModule;
 class ICodec_Jbig2Encoder;
+class ICodec_PngModule;\r
+class ICodec_GifModule;\r
+class ICodec_BmpModule;\r
+class ICodec_TiffModule;\r
+class CFX_DIBAttribute;\r
 class ICodec_ScanlineDecoder;
 class CCodec_ModuleMgr : public CFX_Object
 {
@@ -37,6 +43,9 @@ public:
 
     void                               InitIccDecoder();
 
+\r
+    ICodec_ProgressiveDecoder* CreateProgressiveDecoder();\r
+\r
     ICodec_Jbig2Encoder*               CreateJbig2Encoder();
 protected:
     CCodec_ModuleMgr();
@@ -70,6 +79,22 @@ public:
     {
         return m_pFlateModule;
     }
+    ICodec_PngModule*  GetPngModule()\r
+    {\r
+        return m_pPngModule;\r
+    }\r
+    ICodec_GifModule*  GetGifModule()\r
+    {\r
+        return m_pGifModule;\r
+    }\r
+    ICodec_BmpModule*  GetBmpModule()\r
+    {\r
+        return m_pBmpModule;\r
+    }\r
+    ICodec_TiffModule* GetTiffModule()\r
+    {\r
+        return m_pTiffModule;\r
+    }\r
 protected:
     ICodec_BasicModule*        m_pBasicModule;
     ICodec_FaxModule*  m_pFaxModule;
@@ -78,6 +103,10 @@ protected:
     ICodec_Jbig2Module*        m_pJbig2Module;
     ICodec_IccModule*  m_pIccModule;
     ICodec_FlateModule*        m_pFlateModule;
+    ICodec_PngModule*  m_pPngModule;\r
+    ICodec_GifModule*  m_pGifModule;\r
+    ICodec_BmpModule*  m_pBmpModule;\r
+    ICodec_TiffModule* m_pTiffModule;\r
 
 };
 class ICodec_BasicModule : public CFX_Object
@@ -170,7 +199,7 @@ public:
 
     virtual void               Input(void* pContext, FX_LPCBYTE src_buf, FX_DWORD src_size) = 0;
 
-    virtual int                        ReadHeader(void* pContext, int* width, int* height, int* nComps) = 0;
+    virtual int                        ReadHeader(void* pContext, int* width, int* height, int* nComps, CFX_DIBAttribute* pAttribute = NULL) = 0;\r
 
 
     virtual int                        StartScanline(void* pContext, int down_scale) = 0;
@@ -197,6 +226,97 @@ public:
 
     virtual void               DestroyDecoder(FX_LPVOID ctx) = 0;
 };
+class ICodec_PngModule : public CFX_Object\r
+{\r
+public:\r
+\r
+    virtual ~ICodec_PngModule() {}\r
+\r
+    virtual void*              Start(void* pModule) = 0;\r
+\r
+    virtual void               Finish(void* pContext) = 0;\r
+\r
+    virtual FX_BOOL            Input(void* pContext, FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_DIBAttribute* pAttribute = NULL) = 0;\r
+\r
+    FX_BOOL                            (*ReadHeaderCallback)(void* pModule, int width, int height, int bpc, int pass, int* color_type, double* gamma);\r
+\r
+    FX_BOOL                            (*AskScanlineBufCallback)(void* pModule, int line, FX_LPBYTE& src_buf);\r
+\r
+    void                               (*FillScanlineBufCompletedCallback)(void* pModule, int pass, int line);\r
+};\r
+class ICodec_GifModule : public CFX_Object\r
+{\r
+public:\r
+\r
+    virtual ~ICodec_GifModule() {}\r
+\r
+    virtual void*              Start(void* pModule) = 0;\r
+\r
+    virtual void               Finish(void* pContext) = 0;\r
+\r
+    virtual FX_DWORD   GetAvailInput(void* pContext, FX_LPBYTE* avail_buf_ptr = NULL) = 0;\r
+\r
+    virtual void               Input(void* pContext, FX_LPCBYTE src_buf, FX_DWORD src_size) = 0;\r
+\r
+    virtual FX_INT32   ReadHeader(void* pContext, int* width, int* height,\r
+                                   int* pal_num, void** pal_pp, int* bg_index, CFX_DIBAttribute* pAttribute = NULL) = 0;\r
+\r
+    virtual FX_INT32   LoadFrameInfo(void* pContext, int* frame_num) = 0;\r
+\r
+    void                               (*RecordCurrentPositionCallback)(void* pModule, FX_DWORD& cur_pos);\r
+\r
+    FX_LPBYTE                  (*AskLocalPaletteBufCallback)(void* pModule, FX_INT32 frame_num, FX_INT32 pal_size);\r
+\r
+    virtual FX_INT32   LoadFrame(void* pContext, int frame_num, CFX_DIBAttribute* pAttribute = NULL) = 0;\r
+\r
+    FX_BOOL                            (*InputRecordPositionBufCallback)(void* pModule, FX_DWORD rcd_pos, const FX_RECT& img_rc,\r
+            FX_INT32 pal_num, void* pal_ptr,\r
+            FX_INT32 delay_time, FX_BOOL user_input,\r
+            FX_INT32 trans_index, FX_INT32 disposal_method, FX_BOOL interlace);\r
+\r
+    void                               (*ReadScanlineCallback)(void* pModule, FX_INT32 row_num, FX_LPBYTE row_buf);\r
+};\r
+class ICodec_BmpModule : public CFX_Object\r
+{\r
+public:\r
+\r
+    virtual ~ICodec_BmpModule() {}\r
+\r
+    virtual void*              Start(void* pModule) = 0;\r
+\r
+    virtual void               Finish(void* pContext) = 0;\r
+\r
+    virtual FX_DWORD   GetAvailInput(void* pContext, FX_LPBYTE* avail_buf_ptr = NULL) = 0;\r
+\r
+    virtual void               Input(void* pContext, FX_LPCBYTE src_buf, FX_DWORD src_size) = 0;\r
+\r
+    virtual FX_INT32   ReadHeader(void* pContext, FX_INT32* width, FX_INT32* height, FX_BOOL* tb_flag, FX_INT32* components,\r
+                                   int* pal_num, FX_DWORD** pal_pp, CFX_DIBAttribute* pAttribute = NULL) = 0;\r
+\r
+    virtual FX_INT32   LoadImage(void* pContext) = 0;\r
+\r
+    FX_BOOL                            (*InputImagePositionBufCallback)(void* pModule, FX_DWORD rcd_pos);\r
+\r
+    void                               (*ReadScanlineCallback)(void* pModule, FX_INT32 row_num, FX_LPBYTE row_buf);\r
+};\r
+class ICodec_TiffModule : public CFX_Object\r
+{\r
+public:\r
+\r
+    virtual ~ICodec_TiffModule() {}\r
+\r
+    virtual FX_LPVOID  CreateDecoder(IFX_FileRead* file_ptr) = 0;\r
+\r
+\r
+    virtual void               GetFrames(FX_LPVOID ctx, FX_INT32& frames) = 0;\r
+\r
+    virtual FX_BOOL            LoadFrameInfo(FX_LPVOID ctx, FX_INT32 frame, FX_DWORD& width, FX_DWORD& height, FX_DWORD& comps, FX_DWORD& bpc, CFX_DIBAttribute* pAttribute = NULL) = 0;\r
+\r
+\r
+    virtual FX_BOOL            Decode(FX_LPVOID ctx, class CFX_DIBitmap* pDIBitmap) = 0;\r
+\r
+    virtual void               DestroyDecoder(FX_LPVOID ctx) = 0;\r
+};\r
 class ICodec_Jbig2Module : public CFX_Object
 {
 public:
@@ -218,6 +338,34 @@ public:
     virtual FXCODEC_STATUS             ContinueDecode(void* pJbig2Content, IFX_Pause* pPause) = 0;
     virtual void                               DestroyJbig2Context(void* pJbig2Content) = 0;
 };
+class ICodec_ProgressiveDecoder : public CFX_Object\r
+{\r
+public:\r
+\r
+    virtual ~ICodec_ProgressiveDecoder() {}\r
+\r
+    virtual FXCODEC_STATUS             LoadImageInfo(IFX_FileRead* pFile, FXCODEC_IMAGE_TYPE imageType = FXCODEC_IMAGE_UNKNOWN, CFX_DIBAttribute* pAttribute = NULL) = 0;\r
+\r
+    virtual FXCODEC_IMAGE_TYPE GetType() = 0;\r
+\r
+    virtual FX_INT32                   GetWidth() = 0;\r
+\r
+    virtual FX_INT32                   GetHeight() = 0;\r
+\r
+    virtual FX_INT32                   GetNumComponents() = 0;\r
+\r
+    virtual FX_INT32                   GetBPC() = 0;\r
+\r
+    virtual void                               SetClipBox(FX_RECT* clip) = 0;\r
+\r
+    virtual FXCODEC_STATUS             GetFrames(FX_INT32& frames, IFX_Pause* pPause = NULL) = 0;\r
+\r
+    virtual FXCODEC_STATUS             StartDecode(class CFX_DIBitmap* pDIBitmap,\r
+                                            FX_INT32 start_x, FX_INT32 start_y, FX_INT32 size_x, FX_INT32 size_y,\r
+                                            FX_INT32 frames = 0, FX_BOOL bInterpol = TRUE) = 0;\r
+\r
+    virtual FXCODEC_STATUS             ContinueDecode(IFX_Pause* pPause = NULL) = 0;\r
+};\r
 class ICodec_Jbig2Encoder : public CFX_Object
 {
 public:
@@ -286,4 +434,38 @@ public:
 void AdobeCMYK_to_sRGB(FX_FLOAT c, FX_FLOAT m, FX_FLOAT y, FX_FLOAT k, FX_FLOAT& R, FX_FLOAT& G, FX_FLOAT& B);
 void AdobeCMYK_to_sRGB1(FX_BYTE c, FX_BYTE m, FX_BYTE y, FX_BYTE k, FX_BYTE& R, FX_BYTE& G, FX_BYTE& B);
 FX_BOOL MD5ComputeID(FX_LPCVOID buf, FX_DWORD dwSize, FX_BYTE ID[16]);
+class CFX_DIBAttribute : public CFX_Object\r
+{\r
+public:\r
+    CFX_DIBAttribute();\r
+    ~CFX_DIBAttribute();\r
+\r
+    FX_INT32           m_nXDPI;\r
+\r
+    FX_INT32           m_nYDPI;\r
+\r
+    FX_FLOAT           m_fAspectRatio;\r
+\r
+    FX_WORD                    m_wDPIUnit;\r
+\r
+    CFX_ByteString     m_strAuthor;\r
+\r
+    FX_BYTE                    m_strTime[20];\r
+\r
+    FX_INT32           m_nGifLeft;\r
+    FX_INT32           m_nGifTop;\r
+\r
+    FX_DWORD*          m_pGifLocalPalette;\r
+\r
+    FX_DWORD           m_nGifLocalPalNum;\r
+\r
+    FX_INT32           m_nBmpCompressType;\r
+    class IFX_DIBAttributeExif* m_pExif;\r
+};\r
+class IFX_DIBAttributeExif : public CFX_Object\r
+{\r
+public:\r
+    virtual ~IFX_DIBAttributeExif() {};\r
+    virtual FX_BOOL            GetInfo(FX_WORD tag, FX_LPVOID val) = 0;\r
+};\r
 #endif
index 0d08da6..7a18f5b 100644 (file)
@@ -6,6 +6,15 @@
 
 #ifndef _FX_CODEC_DEF_H_
 #define _FX_CODEC_DEF_H_
+enum FXCODEC_IMAGE_TYPE {
+    FXCODEC_IMAGE_UNKNOWN = 0,
+    FXCODEC_IMAGE_BMP,
+    FXCODEC_IMAGE_JPG,
+    FXCODEC_IMAGE_PNG,
+    FXCODEC_IMAGE_GIF,
+    FXCODEC_IMAGE_TIF,
+    FXCODEC_IMAGE_MAX
+};
 enum FXCODEC_STATUS {
     FXCODEC_STATUS_ERROR = -1,
     FXCODEC_STATUS_FRAME_READY,
@@ -58,6 +67,12 @@ enum FXCODEC_STATUS {
 #define Icc_PARAMTYPE_NONE                                     0
 #define Icc_PARAMTYPE_BUFFER                           1
 #define Icc_PARAMTYPE_PARAM                                    2
+enum FXCODEC_RESUNIT {
+    FXCODEC_RESUNIT_NONE = 0,
+    FXCODEC_RESUNIT_INCH,
+    FXCODEC_RESUNIT_CENTIMETER,
+    FXCODEC_RESUNIT_METER
+};
 #define EXIFTAG_USHORT_RESUNIT                         296
 #define EXIFTAG_FLOAT_DPIX                                     282
 #define EXIFTAG_FLOAT_DPIY                                     283
index a3ef396..f26194a 100644 (file)
@@ -6,6 +6,7 @@
 
 #ifndef _FX_CODEC_PROVIDER_H_
 #define _FX_CODEC_PROVIDER_H_
+class CFX_DIBAttribute;
 class IFX_JpegProvider
 {
 public:
@@ -39,8 +40,7 @@ public:
 
     virtual void               Input(void* pContext, FX_LPCBYTE src_buf, FX_DWORD src_size) = 0;
 
-    virtual int                        ReadHeader(void* pContext, int* width, int* height, int* nComps) = 0;
-
+    virtual int                        ReadHeader(void* pContext, int* width, int* height, int* nComps, CFX_DIBAttribute* pAttribute = NULL) = 0;
 
     virtual int                        StartScanline(void* pContext, int down_scale) = 0;
 
index 4950f81..ed0370f 100644 (file)
@@ -6,6 +6,54 @@
 
 #ifndef _FX_ARABIC_
 #define _FX_ARABIC_
+class IFX_ArabicChar;
+class IFX_BidiChar;
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+typedef struct _FX_ARBFORMTABLE {
+    FX_WCHAR   wIsolated;
+    FX_WCHAR   wFinal;
+    FX_WCHAR   wInitial;
+    FX_WCHAR   wMedial;
+} FX_ARBFORMTABLE, * FX_LPARBFORMTABLE;
+typedef FX_ARBFORMTABLE const * FX_LPCARBFORMTABLE;
+typedef struct _FX_ARAALEF {
+    FX_WCHAR   wAlef;
+    FX_WCHAR   wIsolated;
+} FX_ARAALEF, * FX_LPARAALEF;
+typedef FX_ARAALEF const * FX_LPCARAALEF;
+typedef struct _FX_ARASHADDA {
+    FX_WCHAR   wShadda;
+    FX_WCHAR   wIsolated;
+} FX_ARASHADDA, * FX_LPARASHADDA;
+typedef FX_ARASHADDA const * FX_LPCARASHADDA;
+FX_LPCARBFORMTABLE FX_GetArabicFormTable(FX_WCHAR unicode);
+FX_WCHAR FX_GetArabicFromAlefTable(FX_WCHAR alef);
+FX_WCHAR FX_GetArabicFromShaddaTable(FX_WCHAR shadda);
+#ifdef __cplusplus
+};
+#endif
+enum FX_ARBPOSITION {
+    FX_ARBPOSITION_Isolated = 0,
+    FX_ARBPOSITION_Final,
+    FX_ARBPOSITION_Initial,
+    FX_ARBPOSITION_Medial,
+};
+class IFX_ArabicChar
+{
+public:
+    static IFX_ArabicChar*             Create();
+    virtual void                               Release() = 0;
+    virtual FX_BOOL                            IsArabicChar(FX_WCHAR wch) const = 0;
+    virtual FX_BOOL                            IsArabicFormChar(FX_WCHAR wch) const = 0;
+    virtual FX_WCHAR                   GetFormChar(FX_WCHAR wch, FX_WCHAR prev = 0, FX_WCHAR next = 0) const = 0;
+    virtual FX_WCHAR                   GetFormChar(const CFX_Char *cur, const CFX_Char *prev, const CFX_Char *next) const = 0;
+};
+void FX_BidiLine(CFX_WideString &wsText, FX_INT32 iBaseLevel = 0);
+void FX_BidiLine(CFX_TxtCharArray &chars, FX_INT32 iCount, FX_INT32 iBaseLevel = 0);
+void FX_BidiLine(CFX_RTFCharArray &chars, FX_INT32 iCount, FX_INT32 iBaseLevel = 0);
 class IFX_BidiChar
 {
 public:
index 22ba611..0c84f54 100644 (file)
@@ -1578,6 +1578,13 @@ typedef enum {
 } FX_ProgressiveStatus;
 #define ProgressiveStatus      FX_ProgressiveStatus
 #define FX_NAMESPACE_DECLARE(namespace, type)       namespace::type
+class IFX_Unknown
+{
+public:
+    virtual FX_DWORD   Release() = 0;
+    virtual FX_DWORD   AddRef() = 0;
+};
+#define FX_IsOdd(a)    ((a) & 1)
 
 class CFX_Vector_3by1 : public CFX_Object
 {
index 03ec488..ceba015 100644 (file)
@@ -76,6 +76,24 @@ void         FX_Random_GenerateCrypto(FX_LPDWORD pBuffer, FX_INT32 iCount);
 #ifdef __cplusplus
 }
 #endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct FX_GUID {
+    FX_DWORD   data1;
+    FX_WORD            data2;
+    FX_WORD            data3;
+    FX_BYTE            data4[8];
+} FX_GUID, * FX_LPGUID;
+typedef FX_GUID const * FX_LPCGUID;
+
+void   FX_GUID_CreateV4(FX_LPGUID pGUID);
+
+void   FX_GUID_ToString(FX_LPCGUID pGUID, CFX_ByteString &bsStr, FX_BOOL bSeparator = TRUE);
+#ifdef __cplusplus
+}
+#endif
 template<class baseType>
 class CFX_SSortTemplate
 {
index 8e298f7..0a3d1c4 100644 (file)
@@ -162,6 +162,15 @@ public:
 };
 IFX_FileStream*                FX_CreateFileStream(FX_LPCSTR filename, FX_DWORD dwModes);
 IFX_FileStream*                FX_CreateFileStream(FX_LPCWSTR filename, FX_DWORD dwModes);
+class IFX_FileAccess
+{
+public:
+       virtual void                            Release() = 0;  
+       virtual IFX_FileAccess*         Retain() = 0;
+       virtual void                            GetPath(CFX_WideString& wsPath) = 0;
+       virtual IFX_FileStream*         CreateFileStream(FX_DWORD dwModes) = 0;
+};
+IFX_FileAccess* FX_CreateDefaultFileAccess(FX_WSTR wsPath);
 class IFX_MemoryStream : public IFX_FileStream
 {
 public:
index 9e1862a..c87e459 100644 (file)
@@ -88,6 +88,20 @@ enum FX_CHARTYPE {
     FX_CHARTYPE_ArabicForm                     = (11 << FX_CHARTYPEBITS),
     FX_CHARTYPE_Arabic                         = (12 << FX_CHARTYPEBITS),
 };
+typedef struct _FX_CHARPROPERTIES {\r
+    union FX_CHARPROPERTIES_UNION{\r
+        struct FX_CHARPROPERTIES_BIT{\r
+            FX_DWORD   dwBreakType             : 6;\r
+            FX_DWORD   dwBidiClass             : 5;\r
+            FX_DWORD   dwCharType              : 4;\r
+            FX_DWORD   dwRotation              : 1;\r
+            FX_DWORD   dwCJKSpecial    : 1;\r
+            FX_DWORD   dwVertIndex             : 6;\r
+            FX_DWORD   dwBidiIndex             : 9;\r
+        };\r
+        FX_DWORD       dwCharProps;\r
+    };\r
+} FX_CHARPROPERTIES;\r
 FX_DWORD FX_GetUnicodeProperties(FX_WCHAR wch);
 FX_BOOL        FX_IsCtrlCode(FX_WCHAR ch);
 FX_BOOL        FX_IsRotationCode(FX_WCHAR ch);
@@ -95,4 +109,89 @@ FX_BOOL FX_IsCombinationChar(FX_WCHAR wch);
 FX_BOOL        FX_IsBidiChar(FX_WCHAR wch);
 FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, FX_BOOL bRTL, FX_BOOL bVertical);
 FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, FX_DWORD dwProps, FX_BOOL bRTL, FX_BOOL bVertical);
+class CFX_Char : public CFX_Object\r
+{\r
+public:\r
+    CFX_Char() : m_wCharCode(0)\r
+        , m_nBreakType(0)\r
+        , m_nRotation(0)\r
+        , m_dwCharProps(0)\r
+        , m_dwCharStyles(0)\r
+        , m_iCharWidth(0)\r
+        , m_iHorizontalScale(100)\r
+        , m_iVertialScale(100)\r
+    {\r
+    }\r
+    CFX_Char(FX_WORD wCharCode, FX_DWORD dwCharProps)\r
+        : m_wCharCode(wCharCode)\r
+        , m_nBreakType(0)\r
+        , m_nRotation(0)\r
+        , m_dwCharProps(dwCharProps)\r
+        , m_dwCharStyles(0)\r
+        , m_iCharWidth(0)\r
+        , m_iHorizontalScale(100)\r
+        , m_iVertialScale(100)\r
+    {\r
+    }\r
+    FX_DWORD   GetCharType() const\r
+    {\r
+        return m_dwCharProps & FX_CHARTYPEBITSMASK;\r
+    }\r
+    FX_WORD            m_wCharCode;\r
+    FX_BYTE            m_nBreakType;\r
+    FX_INT8            m_nRotation;\r
+    FX_DWORD   m_dwCharProps;\r
+    FX_DWORD   m_dwCharStyles;\r
+    FX_INT32   m_iCharWidth;\r
+    FX_INT32   m_iHorizontalScale;\r
+    FX_INT32   m_iVertialScale;\r
+};\r
+typedef CFX_ArrayTemplate<CFX_Char>    CFX_CharArray;\r
+class CFX_TxtChar : public CFX_Char\r
+{\r
+public:\r
+    CFX_TxtChar() : CFX_Char()\r
+        , m_dwStatus(0)\r
+        , m_iBidiClass(0)\r
+        , m_iBidiLevel(0)\r
+        , m_iBidiPos(0)\r
+        , m_iBidiOrder(0)\r
+        , m_pUserData(NULL)\r
+    {\r
+    }\r
+    FX_DWORD                   m_dwStatus;\r
+    FX_INT16                   m_iBidiClass;\r
+    FX_INT16                   m_iBidiLevel;\r
+    FX_INT16                   m_iBidiPos;\r
+    FX_INT16                   m_iBidiOrder;\r
+    FX_LPVOID                  m_pUserData;\r
+};\r
+typedef CFX_ArrayTemplate<CFX_TxtChar> CFX_TxtCharArray;\r
+class CFX_RTFChar : public CFX_Char\r
+{\r
+public:\r
+    CFX_RTFChar() : CFX_Char()\r
+        , m_dwStatus(0)\r
+        , m_iFontSize(0)\r
+        , m_iFontHeight(0)\r
+        , m_iBidiClass(0)\r
+        , m_iBidiLevel(0)\r
+        , m_iBidiPos(0)\r
+        , m_dwLayoutStyles(0)\r
+        , m_dwIdentity(0)\r
+        , m_pUserData(NULL)\r
+    {\r
+    }\r
+    FX_DWORD                   m_dwStatus;\r
+    FX_INT32                   m_iFontSize;\r
+    FX_INT32                   m_iFontHeight;\r
+    FX_INT16                   m_iBidiClass;\r
+    FX_INT16                   m_iBidiLevel;\r
+    FX_INT16                   m_iBidiPos;\r
+    FX_INT16                   m_iBidiOrder;\r
+    FX_DWORD                   m_dwLayoutStyles;\r
+    FX_DWORD                   m_dwIdentity;\r
+    IFX_Unknown                        *m_pUserData;\r
+};\r
+typedef CFX_ArrayTemplate<CFX_RTFChar> CFX_RTFCharArray;\r
 #endif
index 52f8f30..8744919 100644 (file)
@@ -29,6 +29,7 @@ class CFontFileFaceInfo;
 #define FXFONT_ITALIC                  0x40
 #define FXFONT_BOLD                            0x40000
 #define FXFONT_USEEXTERNATTR   0x80000
+#define FXFONT_EXACTMATCH              0x80000000\r
 #define FXFONT_CIDFONT                 0x100000
 #define FXFONT_ANSI_CHARSET            0
 #define FXFONT_DEFAULT_CHARSET 1
@@ -61,7 +62,10 @@ public:
 
     FX_BOOL                                    LoadEmbedded(FX_LPCBYTE data, FX_DWORD size);
 
-    FX_BOOL                                    LoadFile(IFX_FileRead* pFile);
+       FX_BOOL                                 LoadFile(IFX_FileRead* pFile, int nFaceIndex = 0, int* pFaceCount = NULL);\r
+\r
+    FX_BOOL                 LoadClone(const CFX_Font* pFont);\r
+\r
 
     FXFT_Face                          GetFace() const
     {
@@ -141,6 +145,7 @@ protected:
 
     FX_BOOL                                    m_bEmbedded;
     FX_BOOL                                    m_bVertical;
+    FX_BOOL                 m_bLogic;\r
     void*                                      m_pOwnedStream;
 };
 #define ENCODING_INTERNAL              0
@@ -157,6 +162,32 @@ public:
     virtual FX_DWORD           CharCodeFromUnicode(FX_WCHAR Unicode) const = 0;
 };
 IFX_FontEncoding* FXGE_CreateUnicodeEncoding(CFX_Font* pFont);
+#define FXFM_ENC_TAG(a, b, c, d) (((FX_DWORD)(a) << 24) | ((FX_DWORD)(b) << 16) | ((FX_DWORD)(c) << 8) | (FX_DWORD)(d))\r
+#define FXFM_ENCODING_NONE                             FXFM_ENC_TAG(0, 0, 0, 0)\r
+#define FXFM_ENCODING_MS_SYMBOL                        FXFM_ENC_TAG('s', 'y', 'm', 'b')\r
+#define FXFM_ENCODING_UNICODE                  FXFM_ENC_TAG('u', 'n', 'i', 'c')\r
+#define FXFM_ENCODING_MS_SJIS                  FXFM_ENC_TAG('s', 'j', 'i', 's')\r
+#define FXFM_ENCODING_MS_GB2312                        FXFM_ENC_TAG('g', 'b', ' ', ' ')\r
+#define FXFM_ENCODING_MS_BIG5                  FXFM_ENC_TAG('b', 'i', 'g', '5')\r
+#define FXFM_ENCODING_MS_WANSUNG               FXFM_ENC_TAG('w', 'a', 'n', 's')\r
+#define FXFM_ENCODING_MS_JOHAB                 FXFM_ENC_TAG('j', 'o', 'h', 'a')\r
+#define FXFM_ENCODING_ADOBE_STANDARD   FXFM_ENC_TAG('A', 'D', 'O', 'B')\r
+#define FXFM_ENCODING_ADOBE_EXPERT             FXFM_ENC_TAG('A', 'D', 'B', 'E')\r
+#define FXFM_ENCODING_ADOBE_CUSTOM             FXFM_ENC_TAG('A', 'D', 'B', 'C')\r
+#define FXFM_ENCODING_ADOBE_LATIN_1            FXFM_ENC_TAG('l', 'a', 't', '1')\r
+#define FXFM_ENCODING_OLD_LATIN_2              FXFM_ENC_TAG('l', 'a', 't', '2')\r
+#define FXFM_ENCODING_APPLE_ROMAN              FXFM_ENC_TAG('a', 'r', 'm', 'n')\r
+class IFX_FontEncodingEx : public IFX_FontEncoding\r
+{\r
+public:\r
+\r
+    virtual FX_DWORD           GlyphIndexFromName(FX_LPCSTR pStrName) = 0;\r
+\r
+    virtual CFX_ByteString     NameFromGlyphIndex(FX_DWORD dwGlyphIndex) = 0;\r
+\r
+    virtual FX_DWORD           CharCodeFromGlyphIndex(FX_DWORD dwGlyphIndex) = 0;\r
+};\r
+IFX_FontEncodingEx*    FX_CreateFontEncodingEx(CFX_Font* pFont, FX_DWORD nEncodingID = FXFM_ENCODING_NONE);\r
 #define FXFONT_SUBST_MM                                0x01
 #define FXFONT_SUBST_GLYPHPATH         0x04
 #define FXFONT_SUBST_CLEARTYPE         0x08
@@ -277,6 +308,7 @@ public:
     }
     virtual FXFT_Face  FindSubstFont(const CFX_ByteString& face_name, FX_BOOL bTrueType, FX_DWORD flags,
                                       int weight, int italic_angle, int CharsetCP, CFX_SubstFont* pSubstFont);
+    FXFT_Face  FindSubstFontByUnicode(FX_DWORD dwUnicode, FX_DWORD flags, int weight, int italic_angle);\r
 private:
     CFX_ByteString             GetPSNameFromTT(void* hFont);
     CFX_ByteString             MatchInstalledFonts(const CFX_ByteString& norm_name);
@@ -298,6 +330,10 @@ public:
     virtual void               Release() = 0;
     virtual    FX_BOOL         EnumFontList(CFX_FontMapper* pMapper) = 0;
     virtual void*              MapFont(int weight, FX_BOOL bItalic, int charset, int pitch_family, FX_LPCSTR face, FX_BOOL& bExact) = 0;
+    virtual void*              MapFontByUnicode(FX_DWORD dwUnicode, int weight, FX_BOOL bItalic, int pitch_family)\r
+    {\r
+        return NULL;\r
+    }\r
     virtual void*              GetFont(FX_LPCSTR face) = 0;
     virtual FX_DWORD   GetFontData(void* hFont, FX_DWORD table, FX_LPBYTE buffer, FX_DWORD size) = 0;
     virtual FX_BOOL            GetFaceName(void* hFont, CFX_ByteString& name) = 0;
@@ -321,6 +357,7 @@ public:
     virtual void               Release();
     virtual    FX_BOOL         EnumFontList(CFX_FontMapper* pMapper);
     virtual void*              MapFont(int weight, FX_BOOL bItalic, int charset, int pitch_family, FX_LPCSTR face, FX_BOOL& bExact);
+    virtual void*              MapFontByUnicode(FX_DWORD dwUnicode, int weight, FX_BOOL bItalic, int pitch_family);\r
     virtual void*              GetFont(FX_LPCSTR face);
     virtual FX_DWORD   GetFontData(void* hFont, FX_DWORD table, FX_LPBYTE buffer, FX_DWORD size);
     virtual void               DeleteFont(void* hFont);
index a2f0fbd..64e9c28 100644 (file)
@@ -797,6 +797,77 @@ int CPDF_FormField::FindOptionValue(FX_LPCWSTR csOptValue, int iStartIndex)
     }
     return -1;
 }
+int CPDF_FormField::InsertOption(CFX_WideString csOptLabel, int index, FX_BOOL bNotify)\r
+{\r
+    if (csOptLabel.IsEmpty()) return -1;\r
+\r
+    if (bNotify && m_pForm->m_pFormNotify != NULL)\r
+    {\r
+        int iRet = 0;\r
+        if (GetType() == ListBox) iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csOptLabel);\r
+        if (GetType() == ComboBox) iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csOptLabel);\r
+        if (iRet < 0) return -1;\r
+    }\r
+\r
+    CFX_ByteString csStr = PDF_EncodeText(csOptLabel, csOptLabel.GetLength());\r
+    CPDF_Array* pOpt = NULL;\r
+    CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "Opt");\r
+    if (pValue == NULL || pValue->GetType() != PDFOBJ_ARRAY)\r
+    {\r
+        pOpt = CPDF_Array::Create();\r
+        if (pOpt == NULL) return -1;\r
+        m_pDict->SetAt("Opt", pOpt);\r
+    }\r
+    else\r
+        pOpt = (CPDF_Array*)pValue;\r
+    int iCount = (int)pOpt->GetCount();\r
+    if (index < 0 || index >= iCount)\r
+    {\r
+        pOpt->AddString(csStr);\r
+        index = iCount;\r
+    }\r
+    else {\r
+        CPDF_String* pString = CPDF_String::Create(csStr);\r
+        if (pString == NULL) return -1;\r
+        pOpt->InsertAt(index, pString);\r
+    }\r
+\r
+    if (bNotify && m_pForm->m_pFormNotify != NULL)\r
+    {\r
+        if (GetType() == ListBox) m_pForm->m_pFormNotify->AfterSelectionChange(this);\r
+        if (GetType() == ComboBox) m_pForm->m_pFormNotify->AfterValueChange(this);\r
+    }\r
+    m_pForm->m_bUpdated = TRUE;\r
+    return index;\r
+}
+FX_BOOL CPDF_FormField::ClearOptions(FX_BOOL bNotify)\r
+{\r
+    if (bNotify && m_pForm->m_pFormNotify != NULL)\r
+    {\r
+        int iRet = 0;\r
+        CFX_WideString csValue;\r
+        int iIndex = GetSelectedIndex(0);\r
+        if (iIndex >= 0) csValue = GetOptionLabel(iIndex);\r
+        if (GetType() == ListBox) iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue);\r
+        if (GetType() == ComboBox) iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue);\r
+        if (iRet < 0) return FALSE;\r
+    }\r
+\r
+    m_pDict->RemoveAt("Opt");\r
+    m_pDict->RemoveAt("V");\r
+    m_pDict->RemoveAt("DV");\r
+    m_pDict->RemoveAt("I");\r
+    m_pDict->RemoveAt("TI");\r
+\r
+    if (bNotify && m_pForm->m_pFormNotify != NULL)\r
+    {\r
+        if (GetType() == ListBox) m_pForm->m_pFormNotify->AfterSelectionChange(this);\r
+        if (GetType() == ComboBox) m_pForm->m_pFormNotify->AfterValueChange(this);\r
+    }\r
+\r
+    m_pForm->m_bUpdated = TRUE;\r
+    return TRUE;\r
+}
 FX_BOOL CPDF_FormField::CheckControl(int iControlIndex, FX_BOOL bChecked, FX_BOOL bNotify)
 {
     ASSERT(GetType() == CheckBox || GetType() == RadioButton);
index 78672e6..3cbdce9 100644 (file)
@@ -142,13 +142,67 @@ public:
     virtual void*              Start();
     virtual void               Finish(void* pContext);
     virtual void               Input(void* pContext, FX_LPCBYTE src_buf, FX_DWORD src_size);
-    virtual int                        ReadHeader(void* pContext, int* width, int* height, int* nComps);
+    virtual int                        ReadHeader(void* pContext, int* width, int* height, int* nComps, CFX_DIBAttribute* pAttribute = NULL);\r
     virtual FX_BOOL            StartScanline(void* pContext, int down_scale);
     virtual FX_BOOL            ReadScanline(void* pContext, FX_LPBYTE dest_buf);
     virtual FX_DWORD   GetAvailInput(void* pContext, FX_LPBYTE* avail_buf_ptr);
 protected:
     IFX_JpegProvider* m_pExtProvider;
 };
+#define PNG_ERROR_SIZE 256\r
+class CCodec_PngModule : public ICodec_PngModule\r
+{\r
+public:\r
+    CCodec_PngModule()\r
+    {\r
+        FXSYS_memset8(m_szLastError, '\0', PNG_ERROR_SIZE);\r
+    }\r
+\r
+    virtual void*              Start(void* pModule);\r
+    virtual void               Finish(void* pContext);\r
+    virtual FX_BOOL            Input(void* pContext, FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_DIBAttribute* pAttribute);\r
+protected:\r
+    FX_CHAR                            m_szLastError[PNG_ERROR_SIZE];\r
+};\r
+class CCodec_GifModule : public ICodec_GifModule\r
+{\r
+public:\r
+    CCodec_GifModule()\r
+    {\r
+        FXSYS_memset8(m_szLastError, '\0', 256);\r
+    }\r
+    virtual void*              Start(void* pModule);\r
+    virtual void               Finish(void* pContext);\r
+    virtual FX_DWORD   GetAvailInput(void* pContext, FX_LPBYTE* avail_buf_ptr);\r
+    virtual void               Input(void* pContext, FX_LPCBYTE src_buf, FX_DWORD src_size);\r
+\r
+    virtual FX_INT32   ReadHeader(void* pContext, int* width, int* height,\r
+                                   int* pal_num, void** pal_pp, int* bg_index, CFX_DIBAttribute* pAttribute);\r
+\r
+    virtual FX_INT32   LoadFrameInfo(void* pContext, int* frame_num);\r
+\r
+    virtual FX_INT32   LoadFrame(void* pContext, int frame_num, CFX_DIBAttribute* pAttribute);\r
+\r
+protected:\r
+    FX_CHAR                            m_szLastError[256];\r
+};\r
+class CCodec_BmpModule : public ICodec_BmpModule\r
+{\r
+public:\r
+    CCodec_BmpModule()\r
+    {\r
+        FXSYS_memset8(m_szLastError, '\0', 256);\r
+    }\r
+    virtual void*              Start(void* pModule);\r
+    virtual void               Finish(void* pContext);\r
+    virtual FX_DWORD   GetAvailInput(void* pContext, FX_LPBYTE* avail_buf_ptr);\r
+    virtual void               Input(void* pContext, FX_LPCBYTE src_buf, FX_DWORD src_size);\r
+    virtual FX_INT32   ReadHeader(void* pContext, FX_INT32* width, FX_INT32* height, FX_BOOL* tb_flag, FX_INT32* components, FX_INT32* pal_num, FX_DWORD** pal_pp, CFX_DIBAttribute* pAttribute);\r
+    virtual FX_INT32   LoadImage(void* pContext);\r
+\r
+protected:\r
+    FX_CHAR                            m_szLastError[256];\r
+};\r
 class CCodec_IccModule : public ICodec_IccModule
 {
 public:
@@ -196,6 +250,15 @@ public:
     FX_BOOL            Decode(void* ctx, FX_LPBYTE dest_data, int pitch, FX_BOOL bTranslateColor, FX_LPBYTE offsets);
     void               DestroyDecoder(void* ctx);
 };
+class CCodec_TiffModule : public ICodec_TiffModule\r
+{\r
+public:\r
+    virtual FX_LPVOID  CreateDecoder(IFX_FileRead* file_ptr);\r
+    virtual void               GetFrames(FX_LPVOID ctx, FX_INT32& frames);\r
+    virtual FX_BOOL            LoadFrameInfo(FX_LPVOID ctx, FX_INT32 frame, FX_DWORD& width, FX_DWORD& height, FX_DWORD& comps, FX_DWORD& bpc, CFX_DIBAttribute* pAttribute = NULL);\r
+    virtual FX_BOOL            Decode(FX_LPVOID ctx, class CFX_DIBitmap* pDIBitmap);\r
+    virtual void               DestroyDecoder(FX_LPVOID ctx);\r
+};\r
 #include "../jbig2/JBig2_Context.h"
 class CPDF_Jbig2Interface : public CFX_Object, public CJBig2_Module
 {
@@ -270,3 +333,27 @@ public:
     CPDF_Jbig2Interface        m_Module;
 private:
 };
+class CFX_DIBAttributeExif : public IFX_DIBAttributeExif\r
+{\r
+public:\r
+    CFX_DIBAttributeExif();\r
+    ~CFX_DIBAttributeExif();\r
+    virtual FX_BOOL            GetInfo(FX_WORD tag, FX_LPVOID val);\r
+\r
+    FX_BOOL ParseExif(CFX_MapPtrTemplate<FX_DWORD, FX_LPBYTE>* pHead, FX_LPBYTE data, FX_DWORD len, CFX_MapPtrTemplate<FX_DWORD, FX_LPBYTE>* pVal);\r
+\r
+    typedef FX_WORD (*_Read2Bytes)(FX_LPBYTE data);\r
+    typedef FX_DWORD (*_Read4Bytes)(FX_LPBYTE data);\r
+    FX_LPBYTE ParseExifIFH(FX_LPBYTE data, FX_DWORD len, _Read2Bytes* pReadWord, _Read4Bytes* pReadDword);\r
+    FX_BOOL ParseExifIFD(CFX_MapPtrTemplate<FX_DWORD, FX_LPBYTE>* pMap, FX_LPBYTE data, FX_DWORD len);\r
+\r
+    FX_LPBYTE                  m_pExifData;\r
+\r
+    FX_DWORD                   m_dwExifDataLen;\r
+\r
+    void                               clear();\r
+    _Read2Bytes m_readWord;\r
+    _Read4Bytes m_readDword;\r
+    CFX_MapPtrTemplate<FX_DWORD, FX_LPBYTE> m_TagHead;\r
+    CFX_MapPtrTemplate<FX_DWORD, FX_LPBYTE> m_TagVal;\r
+};\r
index 456ec40..b2f70c7 100644 (file)
@@ -14,6 +14,10 @@ CCodec_ModuleMgr::CCodec_ModuleMgr()
     m_pJpxModule = FX_NEW CCodec_JpxModule;
     m_pJbig2Module = FX_NEW CCodec_Jbig2Module;
     m_pIccModule = FX_NEW CCodec_IccModule;
+    m_pPngModule = FX_NEW CCodec_PngModule;\r
+    m_pGifModule = FX_NEW CCodec_GifModule;\r
+    m_pBmpModule = FX_NEW CCodec_BmpModule;\r
+    m_pTiffModule = FX_NEW CCodec_TiffModule;\r
     m_pFlateModule = FX_NEW CCodec_FlateModule;
 }
 CCodec_ModuleMgr::~CCodec_ModuleMgr()
@@ -249,6 +253,343 @@ void CCodec_ModuleMgr::Destroy()
 {
     delete this;
 }
+CFX_DIBAttribute::CFX_DIBAttribute()\r
+{\r
+    FXSYS_memset32(this, 0, sizeof(CFX_DIBAttribute));\r
+    m_nXDPI = -1;\r
+    m_nYDPI = -1;\r
+    m_fAspectRatio = -1.0f;\r
+    m_pExif = FX_NEW CFX_DIBAttributeExif;\r
+}\r
+CFX_DIBAttribute::~CFX_DIBAttribute()\r
+{\r
+    if (m_pExif) {\r
+        delete m_pExif;\r
+    }\r
+}\r
+CFX_DIBAttributeExif::CFX_DIBAttributeExif()\r
+{\r
+    m_pExifData = NULL;\r
+    m_dwExifDataLen = 0;\r
+}\r
+CFX_DIBAttributeExif::~CFX_DIBAttributeExif()\r
+{\r
+    clear();\r
+}\r
+void CFX_DIBAttributeExif::clear()\r
+{\r
+    if (m_pExifData) {\r
+        FX_Free(m_pExifData);\r
+    }\r
+    m_pExifData = NULL;\r
+    FX_DWORD key = 0;\r
+    FX_LPBYTE buf = NULL;\r
+    FX_POSITION pos = NULL;\r
+    pos = m_TagHead.GetStartPosition();\r
+    while (pos) {\r
+        m_TagHead.GetNextAssoc(pos, key, buf);\r
+        if (buf) {\r
+            FX_Free(buf);\r
+        }\r
+    }\r
+    m_TagHead.RemoveAll();\r
+    pos = m_TagVal.GetStartPosition();\r
+    while (pos) {\r
+        m_TagVal.GetNextAssoc(pos, key, buf);\r
+        if (buf) {\r
+            FX_Free(buf);\r
+        }\r
+    }\r
+    m_TagVal.RemoveAll();\r
+}\r
+static FX_WORD _Read2BytesL(FX_LPBYTE data)\r
+{\r
+    ASSERT(data);\r
+    return data[0] | (data[1] << 8);\r
+}\r
+static FX_WORD _Read2BytesB(FX_LPBYTE data)\r
+{\r
+    ASSERT(data);\r
+    return data[1] | (data[0] << 8);\r
+}\r
+static FX_DWORD _Read4BytesL(FX_LPBYTE data)\r
+{\r
+    return _Read2BytesL(data) | (_Read2BytesL(data + 2) << 16);\r
+}\r
+static FX_DWORD _Read4BytesB(FX_LPBYTE data)\r
+{\r
+    return _Read2BytesB(data + 2) | (_Read2BytesB(data) << 16);\r
+}\r
+typedef FX_WORD (*_Read2Bytes) (FX_LPBYTE data);\r
+typedef FX_DWORD (*_Read4Bytes) (FX_LPBYTE data);\r
+typedef void (*_Write2Bytes) (FX_LPBYTE data, FX_WORD val);\r
+typedef void (*_Write4Bytes) (FX_LPBYTE data, FX_DWORD val);\r
+FX_LPBYTE CFX_DIBAttributeExif::ParseExifIFH(FX_LPBYTE data, FX_DWORD len, _Read2Bytes* pReadWord, _Read4Bytes* pReadDword)\r
+{\r
+    if (len > 8) {\r
+        FX_BOOL tag = FALSE;\r
+        if (FXSYS_memcmp32(data, "\x49\x49\x2a\x00", 4) == 0) {\r
+            if (pReadWord) {\r
+                *pReadWord = _Read2BytesL;\r
+            }\r
+            if (pReadDword) {\r
+                *pReadDword = _Read4BytesL;\r
+            }\r
+            tag = TRUE;\r
+        } else if (FXSYS_memcmp32(data, "\x4d\x4d\x00\x2a", 4) == 0) {\r
+            if (pReadWord) {\r
+                *pReadWord = _Read2BytesB;\r
+            }\r
+            if (pReadDword) {\r
+                *pReadDword = _Read4BytesB;\r
+            }\r
+            tag = TRUE;\r
+        }\r
+        if (tag) {\r
+            data += 4;\r
+            if (pReadDword) {\r
+                data += (*pReadDword)(data) - 4;\r
+            } else {\r
+                data += 4;\r
+            }\r
+        }\r
+    }\r
+    return data;\r
+}\r
+FX_BOOL CFX_DIBAttributeExif::ParseExifIFD(CFX_MapPtrTemplate<FX_DWORD, FX_LPBYTE>* pMap, FX_LPBYTE data, FX_DWORD len)\r
+{\r
+    if (pMap && data) {\r
+        if (len > 8) {\r
+            FX_WORD wTagNum = m_readWord(data);\r
+            data += 2;\r
+            FX_DWORD wTag;\r
+            FX_LPBYTE buf;\r
+            while (wTagNum--) {\r
+                wTag = m_readWord(data);\r
+                data += 2;\r
+                if (!pMap->Lookup(wTag, buf)) {\r
+                    buf = FX_Alloc(FX_BYTE, 10);\r
+                    if (buf == NULL) {\r
+                        return FALSE;\r
+                    }\r
+                    FXSYS_memcpy32(buf, data, 10);\r
+                    pMap->SetAt(wTag, buf);\r
+                }\r
+                data += 10;\r
+            }\r
+            FX_DWORD dwIFDOffset;\r
+            dwIFDOffset = m_readDword(data);\r
+            while (dwIFDOffset && dwIFDOffset < len) {\r
+                data = m_pExifData + dwIFDOffset;\r
+                wTagNum = m_readWord(data);\r
+                data += 2;\r
+                while (wTagNum--) {\r
+                    wTag = m_readWord(data);\r
+                    data += 2;\r
+                    if (!pMap->Lookup(wTag, buf)) {\r
+                        buf = FX_Alloc(FX_BYTE, 10);\r
+                        if (buf == NULL) {\r
+                            return FALSE;\r
+                        }\r
+                        FXSYS_memcpy32(buf, data, 10);\r
+                        pMap->SetAt(wTag, buf);\r
+                    }\r
+                    data += 10;\r
+                }\r
+                dwIFDOffset = m_readDword(data);\r
+            }\r
+            return TRUE;\r
+        }\r
+    }\r
+    return FALSE;\r
+}\r
+enum FX_ExifDataType {\r
+    FX_UnsignedByte = 1,\r
+    FX_AscString,\r
+    FX_UnsignedShort,\r
+    FX_UnsignedLong,\r
+    FX_UnsignedRation,\r
+    FX_SignedByte,\r
+    FX_Undefined,\r
+    FX_SignedShort,\r
+    FX_SignedLong,\r
+    FX_SignedRation,\r
+    FX_SignedFloat,\r
+    FX_DoubleFloat\r
+};\r
+FX_BOOL CFX_DIBAttributeExif::ParseExif(CFX_MapPtrTemplate<FX_DWORD, FX_LPBYTE>* pHead, FX_LPBYTE data, FX_DWORD len, CFX_MapPtrTemplate<FX_DWORD, FX_LPBYTE>* pVal)\r
+{\r
+    if (pHead && data && pVal) {\r
+        if (len > 8) {\r
+            FX_LPBYTE old_data = data;\r
+            data = ParseExifIFH(data, len, &m_readWord, &m_readDword);\r
+            if (data == old_data) {\r
+                return FALSE;\r
+            }\r
+            if (pHead->GetCount() == 0) {\r
+                if (!ParseExifIFD(pHead, data, len)) {\r
+                    return FALSE;\r
+                }\r
+            }\r
+            FX_DWORD dwModuleNum;\r
+            FX_WORD type;\r
+            FX_DWORD dwSize;\r
+            FX_DWORD tag;\r
+            FX_LPBYTE head;\r
+            FX_POSITION pos = pHead->GetStartPosition();\r
+            while (pos) {\r
+                pHead->GetNextAssoc(pos, tag, head);\r
+                FX_LPBYTE val = NULL, buf = NULL, temp = NULL;\r
+                int i;\r
+                if (head) {\r
+                    type = m_readWord(head);\r
+                    head += 2;\r
+                    dwModuleNum = m_readDword(head);\r
+                    head += 4;\r
+                    switch (type) {\r
+                        case FX_UnsignedByte:\r
+                        case FX_AscString:\r
+                        case FX_SignedByte:\r
+                        case FX_Undefined:\r
+                            dwSize = dwModuleNum;\r
+                            val = FX_Alloc(FX_BYTE, dwSize);\r
+                            if (val == NULL) {\r
+                                return FALSE;\r
+                            }\r
+                            if (dwSize > 4) {\r
+                                FXSYS_memcpy32(val, old_data + m_readDword(head), dwSize);\r
+                            } else {\r
+                                FXSYS_memcpy32(val, head, dwSize);\r
+                            }\r
+                            break;\r
+                        case FX_UnsignedShort:\r
+                        case FX_SignedShort:\r
+                            dwSize = dwModuleNum << 1;\r
+                            val = FX_Alloc(FX_BYTE, dwSize);\r
+                            if (val == NULL) {\r
+                                return FALSE;\r
+                            }\r
+                            if (dwSize > 4) {\r
+                                FXSYS_memcpy32(val, old_data + m_readDword(head), dwSize);\r
+                            } else {\r
+                                FXSYS_memcpy32(val, head, dwSize);\r
+                            }\r
+                            buf = val;\r
+                            for(i = 0; i < (int)dwModuleNum; i ++) {\r
+                                *(FX_WORD*)buf = m_readWord(buf);\r
+                                buf += 2;\r
+                            }\r
+                            break;\r
+                        case FX_UnsignedLong:\r
+                        case FX_SignedLong:\r
+                        case FX_SignedFloat:\r
+                            dwSize = dwModuleNum << 2;\r
+                            val = FX_Alloc(FX_BYTE, dwSize);\r
+                            if (val == NULL) {\r
+                                return FALSE;\r
+                            }\r
+                            if (dwSize > 4) {\r
+                                FXSYS_memcpy32(val, old_data + m_readDword(head), dwSize);\r
+                            } else {\r
+                                FXSYS_memcpy32(val, head, dwSize);\r
+                            }\r
+                            buf = val;\r
+                            for(i = 0; i < (int)dwModuleNum; i ++) {\r
+                                *(FX_DWORD*)buf = m_readDword(buf);\r
+                                buf += 4;\r
+                            }\r
+                            break;\r
+                        case FX_UnsignedRation:\r
+                        case FX_SignedRation: {\r
+                                dwSize = dwModuleNum << 3;\r
+                                buf = FX_Alloc(FX_BYTE, dwSize);\r
+                                if (buf == NULL) {\r
+                                    return FALSE;\r
+                                }\r
+                                if (dwSize > 4) {\r
+                                    FXSYS_memcpy32(buf, old_data + m_readDword(head), dwSize);\r
+                                } else {\r
+                                    FXSYS_memcpy32(buf, head, dwSize);\r
+                                }\r
+                                temp = buf;\r
+                                val = FX_Alloc(FX_BYTE, dwSize / 2);\r
+                                if (val == NULL) {\r
+                                    FX_Free(buf);\r
+                                    return FALSE;\r
+                                }\r
+                                for(i = 0; i < (int)dwModuleNum; i ++) {\r
+                                    *(FX_DWORD*)temp = m_readDword(temp);\r
+                                    *(FX_DWORD*)(temp + 4) = m_readDword(temp + 4);\r
+                                    FX_DWORD* lNumerator = (FX_DWORD*)temp;\r
+                                    FX_DWORD* lNenominator = (FX_DWORD*)(temp + 4);\r
+                                    *(FX_FLOAT*)(val + i * 4) = (FX_FLOAT)(*lNumerator) / (FX_FLOAT)(*lNenominator);\r
+                                    temp += 8;\r
+                                }\r
+                                FX_Free(buf);\r
+                            }\r
+                            break;\r
+                        case FX_DoubleFloat:\r
+                            dwSize = dwModuleNum << 3;\r
+                            val = FX_Alloc(FX_BYTE, dwSize);\r
+                            if (val == NULL) {\r
+                                return FALSE;\r
+                            }\r
+                            if (dwSize > 4) {\r
+                                FXSYS_memcpy32(val, old_data + m_readDword(head), dwSize);\r
+                            } else {\r
+                                FXSYS_memcpy32(val, head, dwSize);\r
+                            }\r
+                            buf = val;\r
+                            for(i = 0; i < (int)dwModuleNum; i ++) {\r
+                                *(FX_DWORD*)buf = m_readDword(buf);\r
+                                *(FX_DWORD*)(buf + 4) = m_readDword(buf + 4);\r
+                                buf += 8;\r
+                            }\r
+                            break;\r
+                        default:\r
+                            return FALSE;\r
+                    }\r
+                }\r
+                pVal->SetAt(tag, val);\r
+            }\r
+            return TRUE;\r
+        }\r
+    }\r
+    return FALSE;\r
+}\r
+#define FXEXIF_INFOCONVERT(T) {T* src = (T*)ptr;       T* dst = (T*)val;       *dst = *src;}\r
+FX_BOOL CFX_DIBAttributeExif::GetInfo( FX_WORD tag, FX_LPVOID val )\r
+{\r
+    if (m_TagVal.GetCount() == 0) {\r
+        if (!ParseExif(&m_TagHead, m_pExifData, m_dwExifDataLen, &m_TagVal)) {\r
+            return FALSE;\r
+        }\r
+    }\r
+    FX_LPBYTE ptr = NULL;\r
+    if (m_TagVal.Lookup(tag, ptr)) {\r
+        switch (tag) {\r
+            case EXIFTAG_USHORT_RESUNIT:\r
+                FXEXIF_INFOCONVERT(FX_WORD);\r
+                {\r
+                    FX_WORD* ptr = (FX_WORD*)val;\r
+                    *ptr -= 1;\r
+                }\r
+                break;\r
+            case EXIFTAG_FLOAT_DPIX:\r
+            case EXIFTAG_FLOAT_DPIY:\r
+                FXEXIF_INFOCONVERT(FX_FLOAT);\r
+                break;\r
+            case EXIFTAG_USHORT_ORIENTATION:\r
+                FXEXIF_INFOCONVERT(FX_WORD);\r
+                break;\r
+            default: {\r
+                    FX_LPBYTE* dst = (FX_LPBYTE*)val;\r
+                    *dst = ptr;\r
+                }\r
+        }\r
+    }\r
+    return TRUE;\r
+}\r
 class CCodec_RLScanlineDecoder : public CCodec_ScanlineDecoder
 {
 public:
diff --git a/core/src/fxcodec/codec/fx_codec_bmp.cpp b/core/src/fxcodec/codec/fx_codec_bmp.cpp
new file mode 100644 (file)
index 0000000..4e974e2
--- /dev/null
@@ -0,0 +1,124 @@
+// Copyright 2014 PDFium Authors. All rights reserved.\r
+// Use of this source code is governed by a BSD-style license that can be\r
+// found in the LICENSE file.\r
+\r
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
+\r
+#include "../../../include/fxcodec/fx_codec.h"\r
+#include "../../../include/fxge/fx_dib.h"\r
+#include "codec_int.h"\r
+#include "../lbmp/fx_bmp.h"\r
+struct FXBMP_Context {\r
+    bmp_decompress_struct_p bmp_ptr;\r
+    void*              parent_ptr;\r
+    void*              child_ptr;\r
+\r
+    void*              (*m_AllocFunc)(unsigned int);\r
+    void               (*m_FreeFunc)(void*);\r
+};\r
+extern "C" {\r
+    static void* _bmp_alloc_func(unsigned int size)\r
+    {\r
+        return FX_Alloc(char, size);\r
+    }\r
+    static void  _bmp_free_func(void* p)\r
+    {\r
+        if(p != NULL) {\r
+            FX_Free(p);\r
+        }\r
+    }\r
+};\r
+static void _bmp_error_data(bmp_decompress_struct_p bmp_ptr, FX_LPCSTR err_msg)\r
+{\r
+    FXSYS_strncpy((char*)bmp_ptr->err_ptr, err_msg, BMP_MAX_ERROR_SIZE - 1);\r
+    longjmp(bmp_ptr->jmpbuf, 1);\r
+}\r
+static void _bmp_read_scanline(bmp_decompress_struct_p bmp_ptr, FX_INT32 row_num, FX_LPBYTE row_buf)\r
+{\r
+    FXBMP_Context* p = (FXBMP_Context*)bmp_ptr->context_ptr;\r
+    CCodec_BmpModule* pModule = (CCodec_BmpModule*)p->parent_ptr;\r
+    pModule->ReadScanlineCallback(p->child_ptr, row_num, row_buf);\r
+}\r
+static FX_BOOL _bmp_get_data_position(bmp_decompress_struct_p bmp_ptr, FX_DWORD rcd_pos)\r
+{\r
+    FXBMP_Context* p = (FXBMP_Context*)bmp_ptr->context_ptr;\r
+    CCodec_BmpModule* pModule = (CCodec_BmpModule*)p->parent_ptr;\r
+    return pModule->InputImagePositionBufCallback(p->child_ptr, rcd_pos);\r
+}\r
+void* CCodec_BmpModule::Start(void* pModule)\r
+{\r
+    FXBMP_Context* p = (FXBMP_Context*)FX_Alloc(FX_BYTE, sizeof(FXBMP_Context));\r
+    if (p == NULL) {\r
+        return NULL;\r
+    }\r
+    FXSYS_memset32(p, 0, sizeof(FXBMP_Context));\r
+    if(p == NULL) {\r
+        return NULL;\r
+    }\r
+    p->m_AllocFunc = _bmp_alloc_func;\r
+    p->m_FreeFunc = _bmp_free_func;\r
+    p->bmp_ptr = NULL;\r
+    p->parent_ptr = (void*)this;\r
+    p->child_ptr = pModule;\r
+    p->bmp_ptr = _bmp_create_decompress();\r
+    if (p->bmp_ptr == NULL) {\r
+        FX_Free(p);\r
+        return NULL;\r
+    }\r
+    p->bmp_ptr->context_ptr = (void*)p;\r
+    p->bmp_ptr->err_ptr = m_szLastError;\r
+    p->bmp_ptr->_bmp_error_fn = _bmp_error_data;\r
+    p->bmp_ptr->_bmp_get_row_fn = _bmp_read_scanline;\r
+    p->bmp_ptr->_bmp_get_data_position_fn = _bmp_get_data_position;\r
+    return p;\r
+}\r
+void CCodec_BmpModule::Finish(void* pContext)\r
+{\r
+    FXBMP_Context* p = (FXBMP_Context*)pContext;\r
+    if(p != NULL) {\r
+        _bmp_destroy_decompress(&p->bmp_ptr);\r
+        p->m_FreeFunc(p);\r
+    }\r
+}\r
+FX_INT32 CCodec_BmpModule::ReadHeader(void* pContext, FX_INT32* width, FX_INT32* height, FX_BOOL* tb_flag, FX_INT32* components, FX_INT32* pal_num, FX_DWORD** pal_pp, CFX_DIBAttribute* pAttribute)\r
+{\r
+    FXBMP_Context* p = (FXBMP_Context*)pContext;\r
+    if(setjmp(p->bmp_ptr->jmpbuf)) {\r
+        return 0;\r
+    }\r
+    FX_INT32 ret = _bmp_read_header(p->bmp_ptr);\r
+    if (ret != 1) {\r
+        return ret;\r
+    }\r
+    *width = p->bmp_ptr->width;\r
+    *height = p->bmp_ptr->height;\r
+    *tb_flag = p->bmp_ptr->imgTB_flag;\r
+    *components = p->bmp_ptr->components;\r
+    *pal_num = p->bmp_ptr->pal_num;\r
+    *pal_pp = p->bmp_ptr->pal_ptr;\r
+    if (pAttribute) {\r
+        pAttribute->m_wDPIUnit = FXCODEC_RESUNIT_METER;\r
+        pAttribute->m_nXDPI = p->bmp_ptr->dpi_x;\r
+        pAttribute->m_nYDPI = p->bmp_ptr->dpi_y;\r
+        pAttribute->m_nBmpCompressType = p->bmp_ptr->compress_flag;\r
+    }\r
+    return 1;\r
+}\r
+FX_INT32 CCodec_BmpModule::LoadImage(void* pContext)\r
+{\r
+    FXBMP_Context* p = (FXBMP_Context*)pContext;\r
+    if(setjmp(p->bmp_ptr->jmpbuf)) {\r
+        return 0;\r
+    }\r
+    return _bmp_decode_image(p->bmp_ptr);\r
+}\r
+FX_DWORD CCodec_BmpModule::GetAvailInput(void* pContext, FX_LPBYTE* avial_buf_ptr)\r
+{\r
+    FXBMP_Context* p = (FXBMP_Context*)pContext;\r
+    return _bmp_get_avail_input(p->bmp_ptr, avial_buf_ptr);\r
+}\r
+void CCodec_BmpModule::Input(void* pContext, FX_LPCBYTE src_buf, FX_DWORD src_size)\r
+{\r
+    FXBMP_Context* p = (FXBMP_Context*)pContext;\r
+    _bmp_input_buffer(p->bmp_ptr, (FX_LPBYTE)src_buf, src_size);\r
+}\r
diff --git a/core/src/fxcodec/codec/fx_codec_gif.cpp b/core/src/fxcodec/codec/fx_codec_gif.cpp
new file mode 100644 (file)
index 0000000..1fc708d
--- /dev/null
@@ -0,0 +1,176 @@
+// Copyright 2014 PDFium Authors. All rights reserved.\r
+// Use of this source code is governed by a BSD-style license that can be\r
+// found in the LICENSE file.\r
+\r
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
+\r
+#include "../../../include/fxcodec/fx_codec.h"\r
+#include "../../../include/fxge/fx_dib.h"\r
+#include "codec_int.h"\r
+#include "../lgif/fx_gif.h"\r
+struct FXGIF_Context {\r
+    gif_decompress_struct_p gif_ptr;\r
+    void*              parent_ptr;\r
+    void*              child_ptr;\r
+\r
+    void*              (*m_AllocFunc)(unsigned int);\r
+    void               (*m_FreeFunc)(void*);\r
+};\r
+extern "C" {\r
+    static void* _gif_alloc_func(unsigned int size)\r
+    {\r
+        return FX_Alloc(char, size);\r
+    }\r
+    static void  _gif_free_func(void* p)\r
+    {\r
+        if(p != NULL) {\r
+            FX_Free(p);\r
+        }\r
+    }\r
+};\r
+static void _gif_error_data(gif_decompress_struct_p gif_ptr, FX_LPCSTR err_msg)\r
+{\r
+    FXSYS_strncpy((char*)gif_ptr->err_ptr, err_msg, GIF_MAX_ERROR_SIZE - 1);\r
+    longjmp(gif_ptr->jmpbuf, 1);\r
+}\r
+static FX_LPBYTE _gif_ask_buf_for_pal(gif_decompress_struct_p gif_ptr, FX_INT32 pal_size)\r
+{\r
+    FXGIF_Context* p = (FXGIF_Context*)gif_ptr->context_ptr;\r
+    CCodec_GifModule* pModule = (CCodec_GifModule*)p->parent_ptr;\r
+    return pModule->AskLocalPaletteBufCallback(p->child_ptr,\r
+            _gif_get_frame_num(gif_ptr),\r
+            pal_size);\r
+}\r
+static void _gif_record_current_position(gif_decompress_struct_p gif_ptr, FX_DWORD* cur_pos_ptr)\r
+{\r
+    FXGIF_Context* p = (FXGIF_Context*)gif_ptr->context_ptr;\r
+    CCodec_GifModule* pModule = (CCodec_GifModule*)p->parent_ptr;\r
+    pModule->RecordCurrentPositionCallback(p->child_ptr, *cur_pos_ptr);\r
+}\r
+static void _gif_read_scanline(gif_decompress_struct_p gif_ptr, FX_INT32 row_num, FX_LPBYTE row_buf)\r
+{\r
+    FXGIF_Context* p = (FXGIF_Context*)gif_ptr->context_ptr;\r
+    CCodec_GifModule* pModule = (CCodec_GifModule*)p->parent_ptr;\r
+    pModule->ReadScanlineCallback(p->child_ptr, row_num, row_buf);\r
+}\r
+static FX_BOOL _gif_get_record_position(gif_decompress_struct_p gif_ptr, FX_DWORD cur_pos,\r
+                                        FX_INT32 left, FX_INT32 top, FX_INT32 width, FX_INT32 height,\r
+                                        FX_INT32 pal_num, void* pal_ptr,\r
+                                        FX_INT32 delay_time, FX_BOOL user_input,\r
+                                        FX_INT32 trans_index, FX_INT32 disposal_method, FX_BOOL interlace)\r
+{\r
+    FXGIF_Context* p = (FXGIF_Context*)gif_ptr->context_ptr;\r
+    CCodec_GifModule* pModule = (CCodec_GifModule*)p->parent_ptr;\r
+    return pModule->InputRecordPositionBufCallback(p->child_ptr, cur_pos, FX_RECT(left, top, left + width, top + height),\r
+            pal_num, pal_ptr, delay_time, user_input, trans_index, disposal_method, interlace);\r
+}\r
+void* CCodec_GifModule::Start(void* pModule)\r
+{\r
+    FXGIF_Context* p = (FXGIF_Context*)FX_Alloc(FX_BYTE, sizeof(FXGIF_Context));\r
+    if (p == NULL) {\r
+        return NULL;\r
+    }\r
+    FXSYS_memset32(p, 0, sizeof(FXGIF_Context));\r
+    p->m_AllocFunc = _gif_alloc_func;\r
+    p->m_FreeFunc = _gif_free_func;\r
+    p->gif_ptr = NULL;\r
+    p->parent_ptr = (void*)this;\r
+    p->child_ptr = pModule;\r
+    p->gif_ptr = _gif_create_decompress();\r
+    if (p->gif_ptr == NULL) {\r
+        FX_Free(p);\r
+        return NULL;\r
+    }\r
+    p->gif_ptr->context_ptr = (void*)p;\r
+    p->gif_ptr->err_ptr = m_szLastError;\r
+    p->gif_ptr->_gif_error_fn = _gif_error_data;\r
+    p->gif_ptr->_gif_ask_buf_for_pal_fn = _gif_ask_buf_for_pal;\r
+    p->gif_ptr->_gif_record_current_position_fn = _gif_record_current_position;\r
+    p->gif_ptr->_gif_get_row_fn = _gif_read_scanline;\r
+    p->gif_ptr->_gif_get_record_position_fn = _gif_get_record_position;\r
+    return p;\r
+}\r
+void CCodec_GifModule::Finish(void* pContext)\r
+{\r
+    FXGIF_Context* p = (FXGIF_Context*)pContext;\r
+    if(p != NULL) {\r
+        _gif_destroy_decompress(&p->gif_ptr);\r
+        p->m_FreeFunc(p);\r
+    }\r
+}\r
+FX_INT32 CCodec_GifModule::ReadHeader(void* pContext, int* width, int* height,\r
+                                      int* pal_num, void** pal_pp, int* bg_index, CFX_DIBAttribute* pAttribute)\r
+{\r
+    FXGIF_Context* p = (FXGIF_Context*)pContext;\r
+    if(setjmp(p->gif_ptr->jmpbuf)) {\r
+        return 0;\r
+    }\r
+    FX_INT32 ret = _gif_read_header(p->gif_ptr);\r
+    if (ret != 1) {\r
+        return ret;\r
+    }\r
+    if (pAttribute) {\r
+    }\r
+    *width = p->gif_ptr->width;\r
+    *height = p->gif_ptr->height;\r
+    *pal_num = p->gif_ptr->global_pal_num;\r
+    *pal_pp = p->gif_ptr->global_pal_ptr;\r
+    *bg_index = p->gif_ptr->bc_index;\r
+    return 1;\r
+}\r
+FX_INT32 CCodec_GifModule::LoadFrameInfo(void* pContext, int* frame_num)\r
+{\r
+    FXGIF_Context* p = (FXGIF_Context*)pContext;\r
+    if(setjmp(p->gif_ptr->jmpbuf)) {\r
+        return 0;\r
+    }\r
+    FX_INT32 ret = _gif_get_frame(p->gif_ptr);\r
+    if (ret != 1) {\r
+        return ret;\r
+    }\r
+    *frame_num = _gif_get_frame_num(p->gif_ptr);\r
+    return 1;\r
+}\r
+FX_INT32 CCodec_GifModule::LoadFrame(void* pContext, int frame_num, CFX_DIBAttribute* pAttribute)\r
+{\r
+    FXGIF_Context* p = (FXGIF_Context*)pContext;\r
+    if(setjmp(p->gif_ptr->jmpbuf)) {\r
+        return 0;\r
+    }\r
+    FX_INT32 ret = _gif_load_frame(p->gif_ptr, frame_num);\r
+    if (ret == 1) {\r
+        if (pAttribute) {\r
+            pAttribute->m_nGifLeft = p->gif_ptr->img_ptr_arr_ptr->GetAt(frame_num)->image_info_ptr->left;\r
+            pAttribute->m_nGifTop = p->gif_ptr->img_ptr_arr_ptr->GetAt(frame_num)->image_info_ptr->top;\r
+            pAttribute->m_fAspectRatio = p->gif_ptr->pixel_aspect;\r
+            if (p->gif_ptr->cmt_data_ptr) {\r
+                FX_LPCBYTE buf = (FX_LPCBYTE)p->gif_ptr->cmt_data_ptr->GetBuffer(0);\r
+                FX_DWORD len = p->gif_ptr->cmt_data_ptr->GetLength();\r
+                if (len > 21) {\r
+                    FX_BYTE size = *buf++;\r
+                    if (size) {\r
+                        pAttribute->m_strAuthor = CFX_ByteString(buf, size);\r
+                    } else {\r
+                        pAttribute->m_strAuthor.Empty();\r
+                    }\r
+                    buf += size;\r
+                    size = *buf++;\r
+                    if (size == 20) {\r
+                        FXSYS_memcpy32(pAttribute->m_strTime, buf, size);\r
+                    }\r
+                }\r
+            }\r
+        }\r
+    }\r
+    return ret;\r
+}\r
+FX_DWORD CCodec_GifModule::GetAvailInput(void* pContext, FX_LPBYTE* avial_buf_ptr)\r
+{\r
+    FXGIF_Context* p = (FXGIF_Context*)pContext;\r
+    return _gif_get_avail_input(p->gif_ptr, avial_buf_ptr);\r
+}\r
+void CCodec_GifModule::Input(void* pContext, FX_LPCBYTE src_buf, FX_DWORD src_size)\r
+{\r
+    FXGIF_Context* p = (FXGIF_Context*)pContext;\r
+    _gif_input_buffer(p->gif_ptr, (FX_LPBYTE)src_buf, src_size);\r
+}\r
index 489f099..95770ea 100644 (file)
@@ -73,6 +73,68 @@ extern "C" {
 #define        JPEG_MARKER_AUTHORTIME  (JPEG_APP0 + 3)
 #define        JPEG_MARKER_MAXSIZE     0xFFFF
 #define        JPEG_OVERHEAD_LEN       14
+static FX_BOOL _JpegIsIccMarker(jpeg_saved_marker_ptr marker)
+{
+    if (marker->marker == JPEG_MARKER_ICC &&
+            marker->data_length >= JPEG_OVERHEAD_LEN &&
+            (FXSYS_memcmp32(marker->data, "\x49\x43\x43\x5f\x50\x52\x4f\x46\x49\x4c\x45\x00", 12) == 0)) {
+        return TRUE;
+    }
+    return FALSE;
+}
+static FX_BOOL _JpegLoadIccProfile(j_decompress_ptr cinfo, FX_LPBYTE* icc_buf_ptr, FX_DWORD* icc_length)
+{
+    if(icc_buf_ptr == NULL || icc_length == NULL) {
+        return FALSE;
+    }
+    *icc_buf_ptr = NULL;
+    *icc_length = 0;
+    FX_LPBYTE icc_data_ptr = NULL;
+    FX_DWORD icc_data_len = 0;
+    FX_BYTE count_icc_marker = 0;
+    FX_BYTE num_icc_marker = 0;
+    jpeg_saved_marker_ptr marker_list[256] = {NULL};
+    for (jpeg_saved_marker_ptr cur_marker = cinfo->marker_list;
+            cur_marker != NULL;
+            cur_marker = cur_marker->next) {
+        if(_JpegIsIccMarker(cur_marker)) {
+            if(count_icc_marker == 0) {
+                num_icc_marker = cur_marker->data[13];
+            } else if(num_icc_marker != cur_marker->data[13]) {
+                return FALSE;
+            }
+            int sn = cur_marker->data[12] - 1;
+            if(sn < 0 || sn >= num_icc_marker) {
+                return FALSE;
+            }
+            if(marker_list[sn] == NULL) {
+                marker_list[sn] = cur_marker;
+            } else {
+                return FALSE;
+            }
+            count_icc_marker ++;
+            icc_data_len +=    (cur_marker->data_length - JPEG_OVERHEAD_LEN);
+        }
+    }
+    if(count_icc_marker != num_icc_marker) {
+        return FALSE;
+    }
+    if(num_icc_marker == 0) {
+        return TRUE;
+    }
+    icc_data_ptr = FX_Alloc(FX_BYTE, icc_data_len);
+    if(icc_buf_ptr == NULL)    {
+        return FALSE;
+    }
+    *icc_buf_ptr = icc_data_ptr;
+    *icc_length = icc_data_len;
+    for (int idx = 0; idx < num_icc_marker; idx++) {
+        icc_data_len = marker_list[idx]->data_length - JPEG_OVERHEAD_LEN;
+        FXSYS_memcpy32(icc_data_ptr, marker_list[idx]->data + JPEG_OVERHEAD_LEN, icc_data_len);
+        icc_data_ptr += icc_data_len;
+    }
+    return TRUE;
+}
 static FX_BOOL _JpegEmbedIccProfile(j_compress_ptr cinfo, FX_LPCBYTE icc_buf_ptr, FX_DWORD icc_length)
 {
     if(icc_buf_ptr == NULL || icc_length == 0) {
@@ -207,6 +269,17 @@ static void _JpegEncode(const CFX_DIBSource* pSource, FX_LPBYTE& dest_buf, FX_ST
     }
     dest_size = dest_buf_length - (FX_STRSIZE)dest.free_in_buffer;
 }
+static void _JpegLoadAttribute(struct jpeg_decompress_struct* pInfo, CFX_DIBAttribute* pAttribute)
+{
+    if (pInfo == NULL || pAttribute == NULL) {
+        return;
+    }
+    if (pAttribute) {
+        pAttribute->m_nXDPI = pInfo->X_density;
+        pAttribute->m_nYDPI = pInfo->Y_density;
+        pAttribute->m_wDPIUnit = pInfo->density_unit;
+    }
+}
 static FX_BOOL _JpegLoadInfo(FX_LPCBYTE src_buf, FX_DWORD src_size, int& width, int& height,
                              int& num_components, int& bits_per_components, FX_BOOL& color_transform,
                              FX_LPBYTE* icc_buf_ptr, FX_DWORD* icc_length)
@@ -613,10 +686,10 @@ void CCodec_JpegModule::Input(void* pContext, const unsigned char* src_buf, FX_D
     p->m_SrcMgr.next_input_byte = src_buf;
     p->m_SrcMgr.bytes_in_buffer = src_size;
 }
-int CCodec_JpegModule::ReadHeader(void* pContext, int* width, int* height, int* nComps)
+int CCodec_JpegModule::ReadHeader(void* pContext, int* width, int* height, int* nComps, CFX_DIBAttribute* pAttribute)
 {
     if (m_pExtProvider) {
-        return m_pExtProvider->ReadHeader(pContext, width, height, nComps);
+        return m_pExtProvider->ReadHeader(pContext, width, height, nComps, pAttribute);
     }
     FXJPEG_Context* p = (FXJPEG_Context*)pContext;
     if (setjmp(p->m_JumpMark) == -1) {
@@ -632,6 +705,7 @@ int CCodec_JpegModule::ReadHeader(void* pContext, int* width, int* height, int*
     *width = p->m_Info.image_width;
     *height = p->m_Info.image_height;
     *nComps = p->m_Info.num_components;
+    _JpegLoadAttribute(&p->m_Info, pAttribute);
     return 0;
 }
 FX_BOOL CCodec_JpegModule::StartScanline(void* pContext, int down_scale)
diff --git a/core/src/fxcodec/codec/fx_codec_png.cpp b/core/src/fxcodec/codec/fx_codec_png.cpp
new file mode 100644 (file)
index 0000000..0ddae7a
--- /dev/null
@@ -0,0 +1,245 @@
+// Copyright 2014 PDFium Authors. All rights reserved.\r
+// Use of this source code is governed by a BSD-style license that can be\r
+// found in the LICENSE file.\r
+\r
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
+\r
+#include "../../../include/fxcodec/fx_codec.h"\r
+#include "../../../include/fxge/fx_dib.h"\r
+#include "codec_int.h"\r
+extern "C" {\r
+#undef FAR\r
+#include "../fx_lpng/include/fx_png.h"\r
+}\r
+static void _png_error_data(png_structp png_ptr, png_const_charp error_msg)\r
+{\r
+    if(png_get_error_ptr(png_ptr)) {\r
+        FXSYS_strncpy((char*)png_get_error_ptr(png_ptr), error_msg, PNG_ERROR_SIZE - 1);\r
+    }\r
+    longjmp(png_jmpbuf(png_ptr), 1);\r
+}\r
+static void _png_warning_data(png_structp png_ptr, png_const_charp error_msg)\r
+{\r
+}\r
+static void _png_load_bmp_attribute(png_structp png_ptr, png_infop info_ptr, CFX_DIBAttribute* pAttribute)\r
+{\r
+    if (pAttribute) {\r
+#if defined(PNG_pHYs_SUPPORTED)\r
+        pAttribute->m_nXDPI = png_get_x_pixels_per_meter(png_ptr, info_ptr);\r
+        pAttribute->m_nYDPI = png_get_y_pixels_per_meter(png_ptr, info_ptr);\r
+        png_uint_32 res_x, res_y;\r
+        int unit_type;\r
+        png_get_pHYs(png_ptr, info_ptr, &res_x, &res_y, &unit_type);\r
+        switch (unit_type) {\r
+            case PNG_RESOLUTION_METER:\r
+                pAttribute->m_wDPIUnit = FXCODEC_RESUNIT_METER;\r
+                break;\r
+            default:\r
+                pAttribute->m_wDPIUnit = FXCODEC_RESUNIT_NONE;\r
+        }\r
+#endif\r
+#if defined(PNG_iCCP_SUPPORTED)\r
+        png_charp icc_name;\r
+        png_bytep icc_profile;\r
+        png_uint_32 icc_proflen;\r
+        int compress_type;\r
+        png_get_iCCP(png_ptr, info_ptr, &icc_name, &compress_type, &icc_profile, &icc_proflen);\r
+#endif\r
+        int bTime = 0;\r
+#if defined(PNG_tIME_SUPPORTED)\r
+        png_timep t = NULL;\r
+        png_get_tIME(png_ptr, info_ptr, &t);\r
+        if (t) {\r
+            FXSYS_memset32(pAttribute->m_strTime, 0, 20);\r
+            FXSYS_sprintf((FX_LPSTR)pAttribute->m_strTime, "%4d:%2d:%2d %2d:%2d:%2d", t->year, t->month, t->day, t->hour, t->minute, t->second);\r
+            bTime = 1;\r
+        }\r
+#endif\r
+#if defined(PNG_TEXT_SUPPORTED)\r
+        int i;\r
+        FX_DWORD len;\r
+        FX_LPCSTR buf;\r
+        int num_text;\r
+        png_textp text = NULL;\r
+        png_get_text(png_ptr, info_ptr, &text, &num_text);\r
+        for (i = 0; i < num_text; i++) {\r
+            len = (FX_DWORD)FXSYS_strlen(text[i].key);\r
+            buf = "Time";\r
+            if (!FXSYS_memcmp32(buf, text[i].key, FX_MIN(len, FXSYS_strlen(buf)))) {\r
+                if (!bTime) {\r
+                    FXSYS_memset32(pAttribute->m_strTime, 0, 20);\r
+                    FXSYS_memcpy32(pAttribute->m_strTime, text[i].text, text[i].text_length);\r
+                }\r
+            } else {\r
+                buf = "Author";\r
+                if (!FXSYS_memcmp32(buf, text[i].key, FX_MIN(len, FXSYS_strlen(buf)))) {\r
+                    pAttribute->m_strAuthor.Empty();\r
+                    pAttribute->m_strAuthor.Load((FX_LPBYTE)text[i].text, (FX_STRSIZE)text[i].text_length);\r
+                }\r
+            }\r
+        }\r
+#endif\r
+    }\r
+}\r
+struct FXPNG_Context {\r
+    png_structp png_ptr;\r
+    png_infop  info_ptr;\r
+    void*              parent_ptr;\r
+    void*              child_ptr;\r
+\r
+    void*              (*m_AllocFunc)(unsigned int);\r
+    void               (*m_FreeFunc)(void*);\r
+};\r
+extern "C" {\r
+    static void* _png_alloc_func(unsigned int size)\r
+    {\r
+        return FX_Alloc(char, size);\r
+    }\r
+    static void  _png_free_func(void* p)\r
+    {\r
+        if(p != NULL) {\r
+            FX_Free(p);\r
+        }\r
+    }\r
+};\r
+static void _png_get_header_func(png_structp png_ptr, png_infop info_ptr)\r
+{\r
+    FXPNG_Context* p = (FXPNG_Context*)png_get_progressive_ptr(png_ptr);\r
+    if(p == NULL) {\r
+        return;\r
+    }\r
+    CCodec_PngModule* pModule = (CCodec_PngModule*)p->parent_ptr;\r
+    if(pModule == NULL) {\r
+        return;\r
+    }\r
+    png_uint_32 width = 0, height = 0;\r
+    int bpc = 0, color_type = 0 , color_type1 = 0, pass = 0;\r
+    double gamma = 1.0;\r
+    png_get_IHDR(png_ptr, info_ptr, &width, &height, &bpc, &color_type, NULL, NULL, NULL);\r
+    color_type1 = color_type;\r
+    if(bpc > 8) {\r
+        png_set_strip_16(png_ptr);\r
+    } else if(bpc < 8) {\r
+        png_set_expand_gray_1_2_4_to_8(png_ptr);\r
+    }\r
+    bpc = 8;\r
+    if(color_type == PNG_COLOR_TYPE_PALETTE) {\r
+        png_set_palette_to_rgb(png_ptr);\r
+    }\r
+    pass = png_set_interlace_handling(png_ptr);\r
+    if(!pModule->ReadHeaderCallback(p->child_ptr, width, height, bpc, pass, &color_type, &gamma)) {\r
+        png_error(p->png_ptr, "Read Header Callback Error");\r
+    }\r
+    int intent;\r
+    if (png_get_sRGB(png_ptr, info_ptr, &intent)) {\r
+        png_set_gamma(png_ptr, gamma, 0.45455);\r
+    } else {\r
+        double image_gamma;\r
+        if(png_get_gAMA(png_ptr, info_ptr, &image_gamma)) {\r
+            png_set_gamma(png_ptr, gamma, image_gamma);\r
+        } else {\r
+            png_set_gamma(png_ptr, gamma, 0.45455);\r
+        }\r
+    }\r
+    switch(color_type) {\r
+        case PNG_COLOR_TYPE_GRAY:\r
+        case PNG_COLOR_TYPE_GRAY_ALPHA: {\r
+                if(color_type1 & PNG_COLOR_MASK_COLOR) {\r
+                    png_set_rgb_to_gray(png_ptr, 1, 0.299, 0.587);\r
+                }\r
+            }\r
+            break;\r
+        case PNG_COLOR_TYPE_PALETTE:\r
+            if(color_type1 != PNG_COLOR_TYPE_PALETTE) {\r
+                png_error(p->png_ptr, "Not Support Output Palette Now");\r
+            }\r
+        case PNG_COLOR_TYPE_RGB:\r
+        case PNG_COLOR_TYPE_RGB_ALPHA:\r
+            if(!(color_type1 & PNG_COLOR_MASK_COLOR)) {\r
+                png_set_gray_to_rgb(png_ptr);\r
+            }\r
+            png_set_bgr(png_ptr);\r
+            break;\r
+    }\r
+    if(!(color_type & PNG_COLOR_MASK_ALPHA)) {\r
+        png_set_strip_alpha(png_ptr);\r
+    }\r
+    if(color_type & PNG_COLOR_MASK_ALPHA && !(color_type1 & PNG_COLOR_MASK_ALPHA)) {\r
+        png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER);\r
+    }\r
+    png_read_update_info(png_ptr, info_ptr);\r
+}\r
+static void _png_get_end_func(png_structp png_ptr, png_infop info_ptr) {}\r
+static void _png_get_row_func(png_structp png_ptr, png_bytep new_row, png_uint_32 row_num, int pass)\r
+{\r
+    FXPNG_Context* p = (FXPNG_Context*)png_get_progressive_ptr(png_ptr);\r
+    if(p == NULL) {\r
+        return;\r
+    }\r
+    CCodec_PngModule* pModule = (CCodec_PngModule*)p->parent_ptr;\r
+    FX_LPBYTE src_buf = NULL;\r
+    if(!pModule->AskScanlineBufCallback(p->child_ptr, row_num, src_buf)) {\r
+        png_error(png_ptr, "Ask Scanline buffer Callback Error");\r
+    }\r
+    if(src_buf != NULL) {\r
+        png_progressive_combine_row(png_ptr, src_buf, new_row);\r
+    }\r
+    pModule->FillScanlineBufCompletedCallback(p->child_ptr, pass, row_num);\r
+}\r
+void* CCodec_PngModule::Start(void* pModule)\r
+{\r
+    FXPNG_Context* p = (FXPNG_Context*)FX_Alloc(FX_BYTE, sizeof(FXPNG_Context));\r
+    if(p == NULL) {\r
+        return NULL;\r
+    }\r
+    p->m_AllocFunc = _png_alloc_func;\r
+    p->m_FreeFunc = _png_free_func;\r
+    p->png_ptr = NULL;\r
+    p->info_ptr = NULL;\r
+    p->parent_ptr = (void*)this;\r
+    p->child_ptr = pModule;\r
+    p->png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);\r
+    if (p->png_ptr == NULL) {\r
+        FX_Free(p);\r
+        return NULL;\r
+    }\r
+    p->info_ptr = png_create_info_struct(p->png_ptr);\r
+    if (p->info_ptr == NULL) {\r
+        png_destroy_read_struct(&(p->png_ptr), (png_infopp)NULL, (png_infopp)NULL);\r
+        FX_Free(p);\r
+        return NULL;\r
+    }\r
+    if (setjmp(png_jmpbuf(p->png_ptr))) {\r
+        if(p != NULL) {\r
+            png_destroy_read_struct(&(p->png_ptr), &(p->info_ptr), (png_infopp)NULL);\r
+            FX_Free(p);\r
+        }\r
+        return NULL;\r
+    }\r
+    png_set_progressive_read_fn(p->png_ptr, p,\r
+                                _png_get_header_func,\r
+                                _png_get_row_func,\r
+                                _png_get_end_func);\r
+    png_set_error_fn(p->png_ptr, m_szLastError, (png_error_ptr)_png_error_data, (png_error_ptr)_png_warning_data);\r
+    return p;\r
+}\r
+void CCodec_PngModule::Finish(void* pContext)\r
+{\r
+    FXPNG_Context* p = (FXPNG_Context*)pContext;\r
+    if(p != NULL) {\r
+        png_destroy_read_struct(&(p->png_ptr), &(p->info_ptr), (png_infopp)NULL);\r
+        p->m_FreeFunc(p);\r
+    }\r
+}\r
+FX_BOOL CCodec_PngModule::Input(void* pContext, FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_DIBAttribute* pAttribute)\r
+{\r
+    FXPNG_Context* p = (FXPNG_Context*)pContext;\r
+    if(setjmp(png_jmpbuf(p->png_ptr))) {\r
+        if (pAttribute && 0 == FXSYS_strcmp(m_szLastError, "Read Header Callback Error")) {\r
+            _png_load_bmp_attribute(p->png_ptr, p->info_ptr, pAttribute);\r
+        }\r
+        return FALSE;\r
+    }\r
+    png_process_data(p->png_ptr, p->info_ptr, (FX_LPBYTE)src_buf, src_size);\r
+    return TRUE;\r
+}\r
diff --git a/core/src/fxcodec/codec/fx_codec_progress.cpp b/core/src/fxcodec/codec/fx_codec_progress.cpp
new file mode 100644 (file)
index 0000000..542ac68
--- /dev/null
@@ -0,0 +1,2263 @@
+// Copyright 2014 PDFium Authors. All rights reserved.\r
+// Use of this source code is governed by a BSD-style license that can be\r
+// found in the LICENSE file.\r
+\r
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
+\r
+#include "../../../include/fxge/fx_dib.h"\r
+#include "../../../include/fxcodec/fx_codec.h"\r
+#include "fx_codec_progress.h"\r
+void CFXCODEC_WeightTable::Calc(int dest_len, int dest_min, int dest_max, int src_len, int src_min, int src_max, FX_BOOL bInterpol)\r
+{\r
+    if (m_pWeightTables) {\r
+        FX_Free(m_pWeightTables);\r
+    }\r
+    double scale, base;\r
+    scale = FXSYS_Div((FX_FLOAT)(src_len), (FX_FLOAT)(dest_len));\r
+    if (dest_len < 0) {\r
+        base = (FX_FLOAT)(src_len);\r
+    } else {\r
+        base = 0.0f;\r
+    }\r
+    m_ItemSize = (int)(sizeof(int) * 2 + sizeof(int) * (FXSYS_ceil(FXSYS_fabs((FX_FLOAT)scale)) + 1));\r
+    m_DestMin = dest_min;\r
+    m_pWeightTables = FX_Alloc(FX_BYTE, (dest_max - dest_min) * m_ItemSize + 4);\r
+    if(m_pWeightTables == NULL) {\r
+        return;\r
+    }\r
+    if (FXSYS_fabs((FX_FLOAT)scale) < 1.0f) {\r
+        for (int dest_pixel = dest_min; dest_pixel < dest_max; dest_pixel ++) {\r
+            PixelWeight& pixel_weights = *GetPixelWeight(dest_pixel);\r
+            double src_pos = dest_pixel * scale + scale / 2 + base;\r
+            if (bInterpol) {\r
+                pixel_weights.m_SrcStart = (int)FXSYS_floor((FX_FLOAT)src_pos - 1.0f / 2);\r
+                pixel_weights.m_SrcEnd = (int)FXSYS_floor((FX_FLOAT)src_pos + 1.0f / 2);\r
+                if (pixel_weights.m_SrcStart < src_min) {\r
+                    pixel_weights.m_SrcStart = src_min;\r
+                }\r
+                if (pixel_weights.m_SrcEnd >= src_max) {\r
+                    pixel_weights.m_SrcEnd = src_max - 1;\r
+                }\r
+                if (pixel_weights.m_SrcStart == pixel_weights.m_SrcEnd) {\r
+                    pixel_weights.m_Weights[0] = 65536;\r
+                } else {\r
+                    pixel_weights.m_Weights[1] = FXSYS_round((FX_FLOAT)(src_pos - pixel_weights.m_SrcStart - 1.0f / 2) * 65536);\r
+                    pixel_weights.m_Weights[0] = 65536 - pixel_weights.m_Weights[1];\r
+                }\r
+            } else {\r
+                pixel_weights.m_SrcStart = pixel_weights.m_SrcEnd = (int)FXSYS_floor((FX_FLOAT)src_pos);\r
+                pixel_weights.m_Weights[0] = 65536;\r
+            }\r
+        }\r
+        return;\r
+    }\r
+    for (int dest_pixel = dest_min; dest_pixel < dest_max; dest_pixel ++) {\r
+        PixelWeight& pixel_weights = *GetPixelWeight(dest_pixel);\r
+        double src_start = dest_pixel * scale + base;\r
+        double src_end = src_start + scale;\r
+        int start_i, end_i;\r
+        if (src_start < src_end) {\r
+            start_i = (int)FXSYS_floor((FX_FLOAT)src_start);\r
+            end_i = (int)FXSYS_ceil((FX_FLOAT)src_end);\r
+        } else {\r
+            start_i = (int)FXSYS_floor((FX_FLOAT)src_end);\r
+            end_i = (int)FXSYS_ceil((FX_FLOAT)src_start);\r
+        }\r
+        if (start_i < src_min) {\r
+            start_i = src_min;\r
+        }\r
+        if (end_i >= src_max) {\r
+            end_i = src_max - 1;\r
+        }\r
+        if (start_i > end_i) {\r
+            pixel_weights.m_SrcStart = start_i;\r
+            pixel_weights.m_SrcEnd = start_i;\r
+            continue;\r
+        }\r
+        pixel_weights.m_SrcStart = start_i;\r
+        pixel_weights.m_SrcEnd = end_i;\r
+        for (int j = start_i; j <= end_i; j ++) {\r
+            double dest_start = FXSYS_Div((FX_FLOAT)(j) - base, scale);\r
+            double dest_end = FXSYS_Div((FX_FLOAT)(j + 1) - base, scale);\r
+            if (dest_start > dest_end) {\r
+                double temp = dest_start;\r
+                dest_start = dest_end;\r
+                dest_end = temp;\r
+            }\r
+            double area_start = dest_start > (FX_FLOAT)(dest_pixel) ? dest_start : (FX_FLOAT)(dest_pixel);\r
+            double area_end = dest_end > (FX_FLOAT)(dest_pixel + 1) ? (FX_FLOAT)(dest_pixel + 1) : dest_end;\r
+            double weight = area_start >= area_end ? 0.0f : area_end - area_start;\r
+            if (weight == 0 && j == end_i) {\r
+                pixel_weights.m_SrcEnd --;\r
+                break;\r
+            }\r
+            pixel_weights.m_Weights[j - start_i] = FXSYS_round((FX_FLOAT)(weight * 65536));\r
+        }\r
+    }\r
+}\r
+void CFXCODEC_HorzTable::Calc(int dest_len, int src_len, FX_BOOL bInterpol)\r
+{\r
+    if (m_pWeightTables) {\r
+        FX_Free(m_pWeightTables);\r
+    }\r
+    double scale = (double)dest_len / (double)src_len;\r
+    m_ItemSize = sizeof(int) * 4;\r
+    int size = dest_len * m_ItemSize + 4;\r
+    m_pWeightTables = FX_Alloc(FX_BYTE, size);\r
+    if(m_pWeightTables == NULL)        {\r
+        return;\r
+    }\r
+    FXSYS_memset32(m_pWeightTables, 0, size);\r
+    if(scale > 1) {\r
+        int pre_des_col = 0;\r
+        for (int src_col = 0; src_col < src_len; src_col++) {\r
+            double des_col_f = src_col * scale;\r
+            int des_col = FXSYS_round((FX_FLOAT)des_col_f);\r
+            PixelWeight* pWeight = (PixelWeight*)(m_pWeightTables + des_col * m_ItemSize);\r
+            pWeight->m_SrcStart = pWeight->m_SrcEnd = src_col;\r
+            pWeight->m_Weights[0] = 65536;\r
+            pWeight->m_Weights[1] = 0;\r
+            if(src_col == src_len - 1 && des_col < dest_len - 1) {\r
+                for (int des_col_index = pre_des_col + 1; des_col_index < dest_len; des_col_index++) {\r
+                    pWeight = (PixelWeight*)(m_pWeightTables + des_col_index * m_ItemSize);\r
+                    pWeight->m_SrcStart = pWeight->m_SrcEnd = src_col;\r
+                    pWeight->m_Weights[0] = 65536;\r
+                    pWeight->m_Weights[1] = 0;\r
+                }\r
+                return;\r
+            }\r
+            int des_col_len = des_col - pre_des_col;\r
+            for (int des_col_index = pre_des_col + 1; des_col_index < des_col; des_col_index++) {\r
+                pWeight = (PixelWeight*)(m_pWeightTables + des_col_index * m_ItemSize);\r
+                pWeight->m_SrcStart = src_col - 1;\r
+                pWeight->m_SrcEnd = src_col;\r
+                pWeight->m_Weights[0] = bInterpol ? FXSYS_round((FX_FLOAT)\r
+                                        (\r
+                                            ((FX_FLOAT)des_col - (FX_FLOAT)des_col_index)\r
+                                            / (FX_FLOAT)des_col_len * 65536\r
+                                        )\r
+                                                               ) : 65536;\r
+                pWeight->m_Weights[1] = 65536 - pWeight->m_Weights[0];\r
+            }\r
+            pre_des_col = des_col;\r
+        }\r
+        return;\r
+    }\r
+    for (int des_col = 0; des_col < dest_len; des_col++) {\r
+        double src_col_f = des_col / scale;\r
+        int src_col = FXSYS_round((FX_FLOAT)src_col_f);\r
+        PixelWeight* pWeight = (PixelWeight*)(m_pWeightTables + des_col * m_ItemSize);\r
+        pWeight->m_SrcStart = pWeight->m_SrcEnd = src_col;\r
+        pWeight->m_Weights[0] = 65536;\r
+        pWeight->m_Weights[1] = 0;\r
+    }\r
+}\r
+void CFXCODEC_VertTable::Calc(int dest_len, int src_len)\r
+{\r
+    if (m_pWeightTables) {\r
+        FX_Free(m_pWeightTables);\r
+    }\r
+    double scale = (double)dest_len / (double)src_len;\r
+    m_ItemSize = sizeof(int) * 4;\r
+    int size = dest_len * m_ItemSize + 4;\r
+    m_pWeightTables = FX_Alloc(FX_BYTE, size);\r
+    if(m_pWeightTables == NULL) {\r
+        return;\r
+    }\r
+    FXSYS_memset32(m_pWeightTables, 0, size);\r
+    if(scale > 1) {\r
+        double step = 0.0;\r
+        int src_row = 0;\r
+        while ( step < (double)dest_len ) {\r
+            int start_step = (int)step;\r
+            step = scale * (++src_row);\r
+            int end_step = (int)step;\r
+            if(end_step >= dest_len) {\r
+                end_step = dest_len;\r
+                for (int des_row = start_step; des_row < end_step; des_row++) {\r
+                    PixelWeight* pWeight = (PixelWeight*)(m_pWeightTables + des_row * m_ItemSize);\r
+                    pWeight->m_SrcStart = start_step;\r
+                    pWeight->m_SrcEnd = start_step;\r
+                    pWeight->m_Weights[0] = 65536;\r
+                    pWeight->m_Weights[1] = 0;\r
+                }\r
+                return;\r
+            }\r
+            int length = end_step - start_step;\r
+            {\r
+                PixelWeight* pWeight = (PixelWeight*)(m_pWeightTables + start_step * m_ItemSize);\r
+                pWeight->m_SrcStart = start_step;\r
+                pWeight->m_SrcEnd = start_step;\r
+                pWeight->m_Weights[0] = 65536;\r
+                pWeight->m_Weights[1] = 0;\r
+            }\r
+            for (int des_row = start_step + 1; des_row < end_step; des_row++) {\r
+                PixelWeight* pWeight = (PixelWeight*)(m_pWeightTables + des_row * m_ItemSize);\r
+                pWeight->m_SrcStart = start_step;\r
+                pWeight->m_SrcEnd = end_step;\r
+                pWeight->m_Weights[0] = FXSYS_round((FX_FLOAT)(end_step - des_row) / (FX_FLOAT)length * 65536);\r
+                pWeight->m_Weights[1] = 65536 - pWeight->m_Weights[0];\r
+            }\r
+        }\r
+    } else {\r
+        for (int des_row = 0; des_row < dest_len; des_row++) {\r
+            PixelWeight* pWeight = (PixelWeight*)(m_pWeightTables + des_row * m_ItemSize);\r
+            pWeight->m_SrcStart = des_row;\r
+            pWeight->m_SrcEnd = des_row;\r
+            pWeight->m_Weights[0] = 65536;\r
+            pWeight->m_Weights[1] = 0;\r
+        }\r
+    }\r
+}\r
+CCodec_ProgressiveDecoder::CCodec_ProgressiveDecoder(CCodec_ModuleMgr* pCodecMgr)\r
+{\r
+    m_pFile = NULL;\r
+    m_pJpegContext = NULL;\r
+    m_pPngContext = NULL;\r
+    m_pGifContext = NULL;\r
+    m_pBmpContext = NULL;\r
+    m_pTiffContext = NULL;\r
+    m_pCodecMgr = NULL;\r
+    m_pSrcBuf = NULL;\r
+    m_pDecodeBuf = NULL;\r
+    m_pDeviceBitmap = NULL;\r
+    m_pSrcPalette = NULL;\r
+    m_pCodecMgr = pCodecMgr;\r
+    m_offSet = 0;\r
+    m_SrcSize = 0;\r
+    m_ScanlineSize = 0;\r
+    m_SrcWidth = m_SrcHeight = 0;\r
+    m_SrcComponents = 0;\r
+    m_SrcBPC = 0;\r
+    m_SrcPassNumber = 0;\r
+    m_clipBox = FX_RECT(0, 0, 0, 0);\r
+    m_imagType = FXCODEC_IMAGE_UNKNOWN;\r
+    m_status = FXCODEC_STATUS_DECODE_FINISH;\r
+    m_TransMethod = -1;\r
+    m_SrcRow = 0;\r
+    m_SrcFormat = FXCodec_Invalid;\r
+    m_bInterpol = TRUE;\r
+    m_FrameNumber = 0;\r
+    m_FrameCur = 0;\r
+    m_SrcPaletteNumber = 0;\r
+    m_GifPltNumber = 0;\r
+    m_GifBgIndex = 0;\r
+    m_pGifPalette = NULL;\r
+    m_GifTransIndex = -1;\r
+    m_GifFrameRect = FX_RECT(0, 0, 0, 0);\r
+    m_BmpIsTopBottom = FALSE;\r
+}\r
+CCodec_ProgressiveDecoder::~CCodec_ProgressiveDecoder()\r
+{\r
+    m_pFile = NULL;\r
+    if(m_pJpegContext != NULL) {\r
+        m_pCodecMgr->GetJpegModule()->Finish(m_pJpegContext);\r
+    }\r
+    if(m_pPngContext != NULL) {\r
+        m_pCodecMgr->GetPngModule()->Finish(m_pPngContext);\r
+    }\r
+    if(m_pGifContext != NULL) {\r
+        m_pCodecMgr->GetGifModule()->Finish(m_pGifContext);\r
+    }\r
+    if(m_pBmpContext != NULL) {\r
+        m_pCodecMgr->GetBmpModule()->Finish(m_pBmpContext);\r
+    }\r
+    if(m_pTiffContext != NULL) {\r
+        m_pCodecMgr->GetTiffModule()->DestroyDecoder(m_pTiffContext);\r
+    }\r
+    if(m_pSrcBuf != NULL) {\r
+        FX_Free(m_pSrcBuf);\r
+    }\r
+    if(m_pDecodeBuf != NULL) {\r
+        FX_Free(m_pDecodeBuf);\r
+    }\r
+    if(m_pSrcPalette != NULL) {\r
+        FX_Free(m_pSrcPalette);\r
+    }\r
+}\r
+FX_BOOL CCodec_ProgressiveDecoder::JpegReadMoreData(ICodec_JpegModule* pJpegModule, FXCODEC_STATUS& err_status)\r
+{\r
+    FX_DWORD dwSize = (FX_DWORD)m_pFile->GetSize();\r
+    if (dwSize <= m_offSet) {\r
+        return FALSE;\r
+    }\r
+    dwSize = dwSize - m_offSet;\r
+    FX_DWORD dwAvail = pJpegModule->GetAvailInput(m_pJpegContext, NULL);\r
+    if (dwAvail == m_SrcSize) {\r
+        if (dwSize > FXCODEC_BLOCK_SIZE) {\r
+            dwSize = FXCODEC_BLOCK_SIZE;\r
+        }\r
+        m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE;\r
+        m_pSrcBuf = FX_Realloc(FX_BYTE, m_pSrcBuf, m_SrcSize);\r
+        if (!m_pSrcBuf) {\r
+            err_status = FXCODEC_STATUS_ERR_MEMORY;\r
+            return FALSE;\r
+        }\r
+    } else {\r
+        FX_DWORD dwConsume = m_SrcSize - dwAvail;\r
+        if (dwAvail) {\r
+            FXSYS_memcpy32(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail);\r
+        }\r
+        if (dwSize > dwConsume) {\r
+            dwSize = dwConsume;\r
+        }\r
+    }\r
+    if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) {\r
+        err_status = FXCODEC_STATUS_ERR_READ;\r
+        return FALSE;\r
+    }\r
+    m_offSet += dwSize;\r
+    pJpegModule->Input(m_pJpegContext, m_pSrcBuf, dwSize + dwAvail);\r
+    return TRUE;\r
+}\r
+FX_BOOL CCodec_ProgressiveDecoder::PngReadHeaderFunc(void* pModule, int width, int height, int bpc, int pass, int* color_type, double* gamma)\r
+{\r
+    CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;\r
+    if(pCodec->m_pDeviceBitmap == NULL) {\r
+        pCodec->m_SrcWidth = width;\r
+        pCodec->m_SrcHeight = height;\r
+        pCodec->m_SrcBPC = bpc;\r
+        pCodec->m_SrcPassNumber = pass;\r
+        pCodec->m_SrcComponents = *color_type == 0 ? 1 :\r
+                                  *color_type == 2 ? 3 :\r
+                                  *color_type == 3 ? 4 :\r
+                                  *color_type == 4 ? 2 :\r
+                                  *color_type == 6 ? 4 : 0;\r
+        pCodec->m_clipBox = FX_RECT(0, 0, width, height);\r
+        return FALSE;\r
+    }\r
+    FXDIB_Format format = pCodec->m_pDeviceBitmap->GetFormat();\r
+    switch(format) {\r
+        case FXDIB_1bppMask:\r
+        case FXDIB_1bppRgb:\r
+            ASSERT(FALSE);\r
+            return FALSE;\r
+        case FXDIB_8bppMask:\r
+        case FXDIB_8bppRgb:\r
+            *color_type = 0;\r
+            break;\r
+        case FXDIB_Rgb:\r
+            *color_type = 2;\r
+            break;\r
+        case FXDIB_Rgb32:\r
+        case FXDIB_Argb:\r
+            *color_type = 6;\r
+            break;\r
+        default:\r
+            ASSERT(FALSE);\r
+            return FALSE;\r
+    }\r
+    *gamma = FXCODEC_PNG_GAMMA;\r
+    return TRUE;\r
+}\r
+FX_BOOL CCodec_ProgressiveDecoder::PngAskScanlineBufFunc(void* pModule, int line, FX_LPBYTE& src_buf)\r
+{\r
+    CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;\r
+    CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap;\r
+    ASSERT(pDIBitmap != NULL);\r
+    if(pDIBitmap == NULL) {\r
+        return FALSE;\r
+    }\r
+    if(line >= pCodec->m_clipBox.top && line < pCodec->m_clipBox.bottom) {\r
+        double scale_y = (double)pCodec->m_sizeY / (double)pCodec->m_clipBox.Height();\r
+        FX_INT32 row = (FX_INT32)((line - pCodec->m_clipBox.top) * scale_y) + pCodec->m_startY;\r
+        FX_LPBYTE src_scan = (FX_LPBYTE)pDIBitmap->GetScanline(row);\r
+        FX_LPBYTE des_scan = pCodec->m_pDecodeBuf;\r
+        src_buf = pCodec->m_pDecodeBuf;\r
+        FX_INT32 src_Bpp = pDIBitmap->GetBPP() >> 3;\r
+        FX_INT32 des_Bpp = (pCodec->m_SrcFormat & 0xff) >> 3;\r
+        FX_INT32 src_left = pCodec->m_startX;\r
+        FX_INT32 des_left = pCodec->m_clipBox.left;\r
+        src_scan += src_left * src_Bpp;\r
+        des_scan += des_left * des_Bpp;\r
+        for (FX_INT32 src_col = 0; src_col < pCodec->m_sizeX; src_col++) {\r
+            PixelWeight* pPixelWeights = pCodec->m_WeightHorzOO.GetPixelWeight(src_col);\r
+            if(pPixelWeights->m_SrcStart != pPixelWeights->m_SrcEnd) {\r
+                continue;\r
+            }\r
+            switch(pDIBitmap->GetFormat()) {\r
+                case FXDIB_1bppMask:\r
+                case FXDIB_1bppRgb:\r
+                    ASSERT(FALSE);\r
+                    return FALSE;\r
+                case FXDIB_8bppMask:\r
+                case FXDIB_8bppRgb: {\r
+                        if(pDIBitmap->GetPalette() != NULL) {\r
+                            return FALSE;\r
+                        }\r
+                        FX_DWORD des_g = 0;\r
+                        des_g += pPixelWeights->m_Weights[0] * src_scan[src_col];\r
+                        des_scan[pPixelWeights->m_SrcStart] = (FX_BYTE)(des_g >> 16);\r
+                    }\r
+                    break;\r
+                case FXDIB_Rgb:\r
+                case FXDIB_Rgb32: {\r
+                        FX_DWORD des_b = 0, des_g = 0, des_r = 0;\r
+                        FX_LPCBYTE p = src_scan + src_col * src_Bpp;\r
+                        des_b += pPixelWeights->m_Weights[0] * (*p++);\r
+                        des_g += pPixelWeights->m_Weights[0] * (*p++);\r
+                        des_r += pPixelWeights->m_Weights[0] * (*p);\r
+                        FX_LPBYTE pDes = &des_scan[pPixelWeights->m_SrcStart * des_Bpp];\r
+                        *pDes++ = (FX_BYTE)((des_b) >> 16);\r
+                        *pDes++ = (FX_BYTE)((des_g) >> 16);\r
+                        *pDes  = (FX_BYTE)((des_r) >> 16);\r
+                    }\r
+                    break;\r
+                case FXDIB_Argb: {\r
+                        FX_DWORD des_r = 0, des_g = 0, des_b = 0;\r
+                        FX_LPCBYTE p = src_scan + src_col * src_Bpp;\r
+                        des_b += pPixelWeights->m_Weights[0] * (*p++);\r
+                        des_g += pPixelWeights->m_Weights[0] * (*p++);\r
+                        des_r += pPixelWeights->m_Weights[0] * (*p++);\r
+                        FX_LPBYTE pDes = &des_scan[pPixelWeights->m_SrcStart * des_Bpp];\r
+                        *pDes++ = (FX_BYTE)((des_b) >> 16);\r
+                        *pDes++ = (FX_BYTE)((des_g) >> 16);\r
+                        *pDes++        = (FX_BYTE)((des_r) >> 16);\r
+                        *pDes  = *p;\r
+                    }\r
+                    break;\r
+                default:\r
+                    return FALSE;\r
+            }\r
+        }\r
+    }\r
+    return TRUE;\r
+}\r
+void CCodec_ProgressiveDecoder::PngOneOneMapResampleHorz(CFX_DIBitmap* pDeviceBitmap, FX_INT32 des_line, FX_LPBYTE src_scan, FXCodec_Format src_format)\r
+{\r
+    FX_LPBYTE des_scan = (FX_LPBYTE)pDeviceBitmap->GetScanline(des_line);\r
+    FX_INT32 src_Bpp = (m_SrcFormat & 0xff) >> 3;\r
+    FX_INT32 des_Bpp = pDeviceBitmap->GetBPP() >> 3;\r
+    FX_INT32 src_left = m_clipBox.left;\r
+    FX_INT32 des_left = m_startX;\r
+    src_scan += src_left * src_Bpp;\r
+    des_scan += des_left * des_Bpp;\r
+    for (FX_INT32 des_col = 0; des_col < m_sizeX; des_col++) {\r
+        PixelWeight* pPixelWeights = m_WeightHorzOO.GetPixelWeight(des_col);\r
+        switch(pDeviceBitmap->GetFormat()) {\r
+            case FXDIB_1bppMask:\r
+            case FXDIB_1bppRgb:\r
+                ASSERT(FALSE);\r
+                return;\r
+            case FXDIB_8bppMask:\r
+            case FXDIB_8bppRgb: {\r
+                    if(pDeviceBitmap->GetPalette() != NULL) {\r
+                        return;\r
+                    }\r
+                    FX_DWORD des_g = 0;\r
+                    des_g += pPixelWeights->m_Weights[0] * src_scan[pPixelWeights->m_SrcStart];\r
+                    des_g += pPixelWeights->m_Weights[1] * src_scan[pPixelWeights->m_SrcEnd];\r
+                    *des_scan++ = (FX_BYTE)(des_g >> 16);\r
+                }\r
+                break;\r
+            case FXDIB_Rgb:\r
+            case FXDIB_Rgb32: {\r
+                    FX_DWORD des_b = 0, des_g = 0, des_r = 0;\r
+                    FX_LPCBYTE p = src_scan;\r
+                    p = src_scan + pPixelWeights->m_SrcStart * src_Bpp;\r
+                    des_b += pPixelWeights->m_Weights[0] * (*p++);\r
+                    des_g += pPixelWeights->m_Weights[0] * (*p++);\r
+                    des_r += pPixelWeights->m_Weights[0] * (*p);\r
+                    p = src_scan + pPixelWeights->m_SrcEnd * src_Bpp;\r
+                    des_b += pPixelWeights->m_Weights[1] * (*p++);\r
+                    des_g += pPixelWeights->m_Weights[1] * (*p++);\r
+                    des_r += pPixelWeights->m_Weights[1] * (*p);\r
+                    *des_scan++ = (FX_BYTE)((des_b) >> 16);\r
+                    *des_scan++ = (FX_BYTE)((des_g) >> 16);\r
+                    *des_scan++ = (FX_BYTE)((des_r) >> 16);\r
+                    des_scan += des_Bpp - 3;\r
+                }\r
+                break;\r
+            case FXDIB_Argb: {\r
+                    FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0;\r
+                    FX_LPCBYTE p = src_scan;\r
+                    p = src_scan + pPixelWeights->m_SrcStart * src_Bpp;\r
+                    des_b += pPixelWeights->m_Weights[0] * (*p++);\r
+                    des_g += pPixelWeights->m_Weights[0] * (*p++);\r
+                    des_r += pPixelWeights->m_Weights[0] * (*p++);\r
+                    des_a += pPixelWeights->m_Weights[0] * (*p);\r
+                    p = src_scan + pPixelWeights->m_SrcEnd * src_Bpp;\r
+                    des_b += pPixelWeights->m_Weights[1] * (*p++);\r
+                    des_g += pPixelWeights->m_Weights[1] * (*p++);\r
+                    des_r += pPixelWeights->m_Weights[1] * (*p++);\r
+                    des_a += pPixelWeights->m_Weights[1] * (*p);\r
+                    *des_scan++ = (FX_BYTE)((des_b) >> 16);\r
+                    *des_scan++ = (FX_BYTE)((des_g) >> 16);\r
+                    *des_scan++ = (FX_BYTE)((des_r) >> 16);\r
+                    *des_scan++ = (FX_BYTE)((des_a) >> 16);\r
+                }\r
+                break;\r
+            default:\r
+                return;\r
+        }\r
+    }\r
+}\r
+void CCodec_ProgressiveDecoder::PngFillScanlineBufCompletedFunc(void* pModule, int pass, int line)\r
+{\r
+    CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;\r
+    CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap;\r
+    ASSERT(pDIBitmap != NULL);\r
+    int src_top = pCodec->m_clipBox.top;\r
+    int src_bottom = pCodec->m_clipBox.bottom;\r
+    int des_top = pCodec->m_startY;\r
+    int src_hei = pCodec->m_clipBox.Height();\r
+    int des_hei = pCodec->m_sizeY;\r
+    if(line >= src_top && line < src_bottom) {\r
+        double scale_y = (double)des_hei / (double)src_hei;\r
+        int src_row = line - src_top;\r
+        int des_row = (int)(src_row * scale_y)  + des_top;\r
+        if(des_row >= des_top + des_hei)       {\r
+            return;\r
+        }\r
+        pCodec->PngOneOneMapResampleHorz(pDIBitmap, des_row, pCodec->m_pDecodeBuf, pCodec->m_SrcFormat);\r
+        if(pCodec->m_SrcPassNumber == 1 && scale_y > 1.0) {\r
+            pCodec->ResampleVert(pDIBitmap, scale_y, des_row);\r
+            return;\r
+        }\r
+        if(pass == 6 && scale_y > 1.0) {\r
+            pCodec->ResampleVert(pDIBitmap, scale_y, des_row);\r
+        }\r
+    }\r
+}\r
+FX_BOOL CCodec_ProgressiveDecoder::GifReadMoreData(ICodec_GifModule* pGifModule, FXCODEC_STATUS& err_status)\r
+{\r
+    FX_DWORD dwSize = (FX_DWORD)m_pFile->GetSize();\r
+    if (dwSize <= m_offSet) {\r
+        return FALSE;\r
+    }\r
+    dwSize = dwSize - m_offSet;\r
+    FX_DWORD dwAvail = pGifModule->GetAvailInput(m_pGifContext, NULL);\r
+    if (dwAvail == m_SrcSize) {\r
+        if (dwSize > FXCODEC_BLOCK_SIZE) {\r
+            dwSize = FXCODEC_BLOCK_SIZE;\r
+        }\r
+        m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE;\r
+        m_pSrcBuf = FX_Realloc(FX_BYTE, m_pSrcBuf, m_SrcSize);\r
+        if (!m_pSrcBuf) {\r
+            err_status = FXCODEC_STATUS_ERR_MEMORY;\r
+            return FALSE;\r
+        }\r
+    } else {\r
+        FX_DWORD dwConsume = m_SrcSize - dwAvail;\r
+        if (dwAvail) {\r
+            FXSYS_memcpy32(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail);\r
+        }\r
+        if (dwSize > dwConsume) {\r
+            dwSize = dwConsume;\r
+        }\r
+    }\r
+    if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) {\r
+        err_status = FXCODEC_STATUS_ERR_READ;\r
+        return FALSE;\r
+    }\r
+    m_offSet += dwSize;\r
+    pGifModule->Input(m_pGifContext, m_pSrcBuf, dwSize + dwAvail);\r
+    return TRUE;\r
+}\r
+void CCodec_ProgressiveDecoder::GifRecordCurrentPositionCallback(void* pModule, FX_DWORD& cur_pos)\r
+{\r
+    CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;\r
+    FX_DWORD remain_size = pCodec->m_pCodecMgr->GetGifModule()->GetAvailInput(pCodec->m_pGifContext);\r
+    cur_pos = pCodec->m_offSet - remain_size;\r
+}\r
+FX_LPBYTE CCodec_ProgressiveDecoder::GifAskLocalPaletteBufCallback(void* pModule, FX_INT32 frame_num, FX_INT32 pal_size)\r
+{\r
+    return FX_Alloc(FX_BYTE, pal_size);\r
+}\r
+FX_BOOL CCodec_ProgressiveDecoder::GifInputRecordPositionBufCallback(void* pModule, FX_DWORD rcd_pos, const FX_RECT& img_rc,\r
+        FX_INT32 pal_num, void* pal_ptr,\r
+        FX_INT32 delay_time, FX_BOOL user_input,\r
+        FX_INT32 trans_index, FX_INT32 disposal_method, FX_BOOL interlace)\r
+{\r
+    CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;\r
+    pCodec->m_offSet = rcd_pos;\r
+    FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR;\r
+    if(!pCodec->GifReadMoreData(pCodec->m_pCodecMgr->GetGifModule(), error_status)) {\r
+        return FALSE;\r
+    }\r
+    FX_LPBYTE pPalette = NULL;\r
+    if(pal_num != 0 && pal_ptr) {\r
+        pPalette = (FX_LPBYTE)pal_ptr;\r
+    } else {\r
+        pal_num = pCodec->m_GifPltNumber;\r
+        pPalette = pCodec->m_pGifPalette;\r
+    }\r
+    if(pCodec->m_pSrcPalette == NULL) {\r
+        pCodec->m_pSrcPalette = FX_Alloc(FX_ARGB, pal_num);\r
+    } else if(pal_num > pCodec->m_SrcPaletteNumber) {\r
+        pCodec->m_pSrcPalette = FX_Realloc(FX_ARGB, pCodec->m_pSrcPalette, pal_num);\r
+    }\r
+    if(pCodec->m_pSrcPalette == NULL) {\r
+        return FALSE;\r
+    }\r
+    pCodec->m_SrcPaletteNumber = pal_num;\r
+    for (int i = 0; i < pal_num; i++) {\r
+        register FX_DWORD j = i * 3;\r
+        pCodec->m_pSrcPalette[i] =\r
+            ArgbEncode(0xff, pPalette[j], pPalette[j + 1], pPalette[j + 2]);\r
+    }\r
+    pCodec->m_GifTransIndex = trans_index;\r
+    pCodec->m_GifFrameRect = img_rc;\r
+    pCodec->m_SrcPassNumber = interlace ? 4 : 1;\r
+    FX_INT32 pal_index = pCodec->m_GifBgIndex;\r
+    CFX_DIBitmap* pDevice = pCodec->m_pDeviceBitmap;\r
+    if (trans_index >= pal_num) {\r
+        trans_index = -1;\r
+    }\r
+    if (trans_index != -1) {\r
+        pCodec->m_pSrcPalette[trans_index] &= 0x00ffffff;\r
+        if (pDevice->HasAlpha()) {\r
+            pal_index = trans_index;\r
+        }\r
+    }\r
+    int startX = pCodec->m_startX;\r
+    int startY = pCodec->m_startY;\r
+    int sizeX = pCodec->m_sizeX;\r
+    int sizeY = pCodec->m_sizeY;\r
+    int Bpp = pDevice->GetBPP() / 8;\r
+    FX_ARGB argb = pCodec->m_pSrcPalette[pal_index];\r
+    for (int row = 0; row < sizeY; row ++) {\r
+        FX_LPBYTE pScanline = (FX_LPBYTE)pDevice->GetScanline(row + startY) + startX * Bpp;\r
+        switch(pCodec->m_TransMethod) {\r
+            case 3:    {\r
+                    FX_BYTE gray = FXRGB2GRAY(FXARGB_R(argb), FXARGB_G(argb), FXARGB_B(argb));\r
+                    FXSYS_memset8(pScanline, gray, sizeX);\r
+                    break;\r
+                }\r
+            case 8:    {\r
+                    for (int col = 0; col < sizeX; col ++) {\r
+                        *pScanline++ = FXARGB_B(argb);\r
+                        *pScanline++ = FXARGB_G(argb);\r
+                        *pScanline++ = FXARGB_R(argb);\r
+                        pScanline += Bpp - 3;\r
+                    }\r
+                    break;\r
+                }\r
+            case 12: {\r
+                    for (int col = 0; col < sizeX; col ++) {\r
+                        FXARGB_SETDIB(pScanline, argb);\r
+                        pScanline += 4;\r
+                    }\r
+                    break;\r
+                }\r
+        }\r
+    }\r
+    return TRUE;\r
+}\r
+void CCodec_ProgressiveDecoder::GifReadScanlineCallback(void* pModule, FX_INT32 row_num, FX_LPBYTE row_buf)\r
+{\r
+    CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;\r
+    CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap;\r
+    ASSERT(pDIBitmap != NULL);\r
+    FX_INT32 img_width = pCodec->m_GifFrameRect.Width();\r
+    if (!pDIBitmap->HasAlpha()) {\r
+        FX_LPBYTE byte_ptr = row_buf;\r
+        for (int i = 0; i < img_width; i++ ) {\r
+            if(*byte_ptr == pCodec->m_GifTransIndex) {\r
+                *byte_ptr = pCodec->m_GifBgIndex;\r
+            }\r
+            byte_ptr++;\r
+        }\r
+    }\r
+    FX_INT32 pal_index = pCodec->m_GifBgIndex;\r
+    if (pCodec->m_GifTransIndex != -1 && pCodec->m_pDeviceBitmap->HasAlpha()) {\r
+        pal_index = pCodec->m_GifTransIndex;\r
+    }\r
+    FXSYS_memset8(pCodec->m_pDecodeBuf, pal_index, pCodec->m_SrcWidth);\r
+    FX_BOOL bLastPass = ((row_num % 2) == 1) ? TRUE : FALSE;\r
+    FX_INT32 line = row_num + pCodec->m_GifFrameRect.top;\r
+    FX_INT32 left = pCodec->m_GifFrameRect.left;\r
+    FXSYS_memcpy32(pCodec->m_pDecodeBuf + left, row_buf, img_width);\r
+    int src_top = pCodec->m_clipBox.top;\r
+    int src_bottom = pCodec->m_clipBox.bottom;\r
+    int des_top = pCodec->m_startY;\r
+    int src_hei = pCodec->m_clipBox.Height();\r
+    int des_hei = pCodec->m_sizeY;\r
+    if(line >= src_top && line < src_bottom) {\r
+        double scale_y = (double)des_hei / (double)src_hei;\r
+        int src_row = line - src_top;\r
+        int des_row = (int)(src_row * scale_y)  + des_top;\r
+        if(des_row >= des_top + des_hei)       {\r
+            return;\r
+        }\r
+        pCodec->ReSampleScanline(pDIBitmap, des_row, pCodec->m_pDecodeBuf, pCodec->m_SrcFormat);\r
+        if(scale_y > 1.0 && (!pCodec->m_bInterpol || pCodec->m_SrcPassNumber == 1)) {\r
+            pCodec->ResampleVert(pDIBitmap, scale_y, des_row);\r
+            return;\r
+        }\r
+        if(scale_y > 1.0) {\r
+            int des_bottom = des_top + pCodec->m_sizeY;\r
+            int des_Bpp = pDIBitmap->GetBPP() >> 3;\r
+            FX_DWORD des_ScanOffet = pCodec->m_startX * des_Bpp;\r
+            if(des_row + (int)scale_y >= des_bottom - 1) {\r
+                FX_LPBYTE scan_src = (FX_LPBYTE)pDIBitmap->GetScanline(des_row) + des_ScanOffet;\r
+                int cur_row = des_row;\r
+                while (++cur_row < des_bottom) {\r
+                    FX_LPBYTE scan_des = (FX_LPBYTE)pDIBitmap->GetScanline(cur_row) + des_ScanOffet;\r
+                    FX_DWORD size = pCodec->m_sizeX * des_Bpp;\r
+                    FXSYS_memcpy32(scan_des, scan_src, size);\r
+                }\r
+            }\r
+            if(bLastPass) {\r
+                pCodec->GifDoubleLineResampleVert(pDIBitmap, scale_y, des_row);\r
+            }\r
+        }\r
+    }\r
+}\r
+void CCodec_ProgressiveDecoder::GifDoubleLineResampleVert(CFX_DIBitmap* pDeviceBitmap, double scale_y, int des_row)\r
+{\r
+    int des_Bpp = pDeviceBitmap->GetBPP() >> 3;\r
+    FX_DWORD des_ScanOffet = m_startX * des_Bpp;\r
+    int des_top = m_startY;\r
+    int des_row_1 = des_row - int(2 * scale_y);\r
+    if(des_row_1 < des_top) {\r
+        des_row_1 = des_top;\r
+    }\r
+    for (; des_row_1 < des_row; des_row_1++) {\r
+        FX_LPBYTE scan_des = (FX_LPBYTE)pDeviceBitmap->GetScanline(des_row_1) + des_ScanOffet;\r
+        PixelWeight* pWeight = m_WeightVert.GetPixelWeight(des_row_1 - des_top);\r
+        FX_LPCBYTE scan_src1 = pDeviceBitmap->GetScanline(pWeight->m_SrcStart + des_top) + des_ScanOffet;\r
+        FX_LPCBYTE scan_src2 = pDeviceBitmap->GetScanline(pWeight->m_SrcEnd + des_top) + des_ScanOffet;\r
+        for (int des_col = 0; des_col < m_sizeX; des_col++) {\r
+            switch(pDeviceBitmap->GetFormat()) {\r
+                case FXDIB_Invalid:\r
+                case FXDIB_1bppMask:\r
+                case FXDIB_1bppRgb:\r
+                    return;\r
+                case FXDIB_8bppMask:\r
+                case FXDIB_8bppRgb: {\r
+                        if(pDeviceBitmap->GetPalette() != NULL) {\r
+                            return;\r
+                        }\r
+                        int des_g = 0;\r
+                        des_g += pWeight->m_Weights[0] * (*scan_src1++);\r
+                        des_g += pWeight->m_Weights[1] * (*scan_src2++);\r
+                        *scan_des++ = (FX_BYTE)(des_g >> 16);\r
+                    }\r
+                    break;\r
+                case FXDIB_Rgb:\r
+                case FXDIB_Rgb32: {\r
+                        FX_DWORD des_b = 0, des_g = 0, des_r = 0;\r
+                        des_b += pWeight->m_Weights[0] * (*scan_src1++);\r
+                        des_g += pWeight->m_Weights[0] * (*scan_src1++);\r
+                        des_r += pWeight->m_Weights[0] * (*scan_src1++);\r
+                        scan_src1 += des_Bpp - 3;\r
+                        des_b += pWeight->m_Weights[1] * (*scan_src2++);\r
+                        des_g += pWeight->m_Weights[1] * (*scan_src2++);\r
+                        des_r += pWeight->m_Weights[1] * (*scan_src2++);\r
+                        scan_src2 += des_Bpp - 3;\r
+                        *scan_des++ = (FX_BYTE)((des_b) >> 16);\r
+                        *scan_des++ = (FX_BYTE)((des_g) >> 16);\r
+                        *scan_des++ = (FX_BYTE)((des_r) >> 16);\r
+                        scan_des += des_Bpp - 3;\r
+                    }\r
+                    break;\r
+                case FXDIB_Argb: {\r
+                        FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0;\r
+                        des_b += pWeight->m_Weights[0] * (*scan_src1++);\r
+                        des_g += pWeight->m_Weights[0] * (*scan_src1++);\r
+                        des_r += pWeight->m_Weights[0] * (*scan_src1++);\r
+                        des_a += pWeight->m_Weights[0] * (*scan_src1++);\r
+                        des_b += pWeight->m_Weights[1] * (*scan_src2++);\r
+                        des_g += pWeight->m_Weights[1] * (*scan_src2++);\r
+                        des_r += pWeight->m_Weights[1] * (*scan_src2++);\r
+                        des_a += pWeight->m_Weights[1] * (*scan_src2++);\r
+                        *scan_des++ = (FX_BYTE)((des_b) >> 16);\r
+                        *scan_des++ = (FX_BYTE)((des_g) >> 16);\r
+                        *scan_des++ = (FX_BYTE)((des_r) >> 16);\r
+                        *scan_des++ = (FX_BYTE)((des_a) >> 16);\r
+                    }\r
+                    break;\r
+                default:\r
+                    return;\r
+            }\r
+        }\r
+    }\r
+    int des_bottom = des_top + m_sizeY - 1;\r
+    if(des_row + (int)(2 * scale_y) >= des_bottom && des_row + (int)scale_y < des_bottom) {\r
+        GifDoubleLineResampleVert(pDeviceBitmap, scale_y, des_row + (int)scale_y);\r
+    }\r
+}\r
+FX_BOOL CCodec_ProgressiveDecoder::BmpReadMoreData(ICodec_BmpModule* pBmpModule, FXCODEC_STATUS& err_status)\r
+{\r
+    FX_DWORD dwSize = (FX_DWORD)m_pFile->GetSize();\r
+    if (dwSize <= m_offSet) {\r
+        return FALSE;\r
+    }\r
+    dwSize = dwSize - m_offSet;\r
+    FX_DWORD dwAvail = pBmpModule->GetAvailInput(m_pBmpContext, NULL);\r
+    if (dwAvail == m_SrcSize) {\r
+        if (dwSize > FXCODEC_BLOCK_SIZE) {\r
+            dwSize = FXCODEC_BLOCK_SIZE;\r
+        }\r
+        m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE;\r
+        m_pSrcBuf = FX_Realloc(FX_BYTE, m_pSrcBuf, m_SrcSize);\r
+        if (!m_pSrcBuf) {\r
+            err_status = FXCODEC_STATUS_ERR_MEMORY;\r
+            return FALSE;\r
+        }\r
+    } else {\r
+        FX_DWORD dwConsume = m_SrcSize - dwAvail;\r
+        if (dwAvail) {\r
+            FXSYS_memcpy32(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail);\r
+        }\r
+        if (dwSize > dwConsume) {\r
+            dwSize = dwConsume;\r
+        }\r
+    }\r
+    if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) {\r
+        err_status = FXCODEC_STATUS_ERR_READ;\r
+        return FALSE;\r
+    }\r
+    m_offSet += dwSize;\r
+    pBmpModule->Input(m_pBmpContext, m_pSrcBuf, dwSize + dwAvail);\r
+    return TRUE;\r
+}\r
+FX_BOOL CCodec_ProgressiveDecoder::BmpInputImagePositionBufCallback(void* pModule, FX_DWORD rcd_pos)\r
+{\r
+    CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;\r
+    pCodec->m_offSet = rcd_pos;\r
+    FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR;\r
+    if(!pCodec->BmpReadMoreData(pCodec->m_pCodecMgr->GetBmpModule(), error_status)) {\r
+        return FALSE;\r
+    }\r
+    return TRUE;\r
+}\r
+void CCodec_ProgressiveDecoder::BmpReadScanlineCallback(void* pModule, FX_INT32 row_num, FX_LPBYTE row_buf)\r
+{\r
+    CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;\r
+    CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap;\r
+    ASSERT(pDIBitmap != NULL);\r
+    FXSYS_memcpy32(pCodec->m_pDecodeBuf, row_buf, pCodec->m_ScanlineSize);\r
+    int src_top = pCodec->m_clipBox.top;\r
+    int src_bottom = pCodec->m_clipBox.bottom;\r
+    int des_top = pCodec->m_startY;\r
+    int src_hei = pCodec->m_clipBox.Height();\r
+    int des_hei = pCodec->m_sizeY;\r
+    if(row_num >= src_top && row_num < src_bottom) {\r
+        double scale_y = (double)des_hei / (double)src_hei;\r
+        int src_row = row_num - src_top;\r
+        int des_row = (int)(src_row * scale_y)  + des_top;\r
+        if(des_row >= des_top + des_hei)       {\r
+            return;\r
+        }\r
+        pCodec->ReSampleScanline(pDIBitmap, des_row, pCodec->m_pDecodeBuf, pCodec->m_SrcFormat);\r
+        if(scale_y > 1.0) {\r
+            if(pCodec->m_BmpIsTopBottom || !pCodec->m_bInterpol) {\r
+                pCodec->ResampleVert(pDIBitmap, scale_y, des_row);\r
+                return;\r
+            } else {\r
+                pCodec->ResampleVertBT(pDIBitmap, scale_y, des_row);\r
+            }\r
+        }\r
+    }\r
+}\r
+void CCodec_ProgressiveDecoder::ResampleVertBT(CFX_DIBitmap* pDeviceBitmap, double scale_y, int des_row)\r
+{\r
+    int des_Bpp = pDeviceBitmap->GetBPP() >> 3;\r
+    FX_DWORD des_ScanOffet = m_startX * des_Bpp;\r
+    int des_top = m_startY;\r
+    int des_bottom = m_startY + m_sizeY;\r
+    int des_row_1 = des_row + int(scale_y);\r
+    if(des_row_1 >= des_bottom - 1) {\r
+        FX_LPBYTE scan_src = (FX_LPBYTE)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet;\r
+        while (++des_row < des_bottom) {\r
+            FX_LPBYTE scan_des = (FX_LPBYTE)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet;\r
+            FX_DWORD size = m_sizeX * des_Bpp;\r
+            FXSYS_memcpy32(scan_des, scan_src, size);\r
+        }\r
+        return;\r
+    }\r
+    for (; des_row_1 > des_row; des_row_1--) {\r
+        FX_LPBYTE scan_des = (FX_LPBYTE)pDeviceBitmap->GetScanline(des_row_1) + des_ScanOffet;\r
+        PixelWeight* pWeight = m_WeightVert.GetPixelWeight(des_row_1 - des_top);\r
+        FX_LPCBYTE scan_src1 = pDeviceBitmap->GetScanline(pWeight->m_SrcStart + des_top) + des_ScanOffet;\r
+        FX_LPCBYTE scan_src2 = pDeviceBitmap->GetScanline(pWeight->m_SrcEnd + des_top) + des_ScanOffet;\r
+        for (int des_col = 0; des_col < m_sizeX; des_col++) {\r
+            switch(pDeviceBitmap->GetFormat()) {\r
+                case FXDIB_Invalid:\r
+                case FXDIB_1bppMask:\r
+                case FXDIB_1bppRgb:\r
+                    return;\r
+                case FXDIB_8bppMask:\r
+                case FXDIB_8bppRgb: {\r
+                        if(pDeviceBitmap->GetPalette() != NULL) {\r
+                            return;\r
+                        }\r
+                        int des_g = 0;\r
+                        des_g += pWeight->m_Weights[0] * (*scan_src1++);\r
+                        des_g += pWeight->m_Weights[1] * (*scan_src2++);\r
+                        *scan_des++ = (FX_BYTE)(des_g >> 16);\r
+                    }\r
+                    break;\r
+                case FXDIB_Rgb:\r
+                case FXDIB_Rgb32: {\r
+                        FX_DWORD des_b = 0, des_g = 0, des_r = 0;\r
+