mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-26 13:48:55 +08:00
12 lines
4.6 KiB
Go
12 lines
4.6 KiB
Go
//
|
|
// Copyright 2020 FoxyUtils ehf. All rights reserved.
|
|
//
|
|
// This is a commercial product and requires a license to operate.
|
|
// A trial license can be obtained at https://unidoc.io
|
|
//
|
|
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
|
|
//
|
|
// Use of this source code is governed by the UniDoc End User License Agreement
|
|
// terms that can be accessed at https://unidoc.io/eula/
|
|
|
|
package sampling ;import (_c "github.com/unidoc/unipdf/v3/internal/bitwise";_g "github.com/unidoc/unipdf/v3/internal/imageutil";_b "io";);func ResampleUint32 (data []uint32 ,bitsPerInputSample int ,bitsPerOutputSample int )[]uint32 {var _cd []uint32 ;_be :=bitsPerOutputSample ;var _cda uint32 ;var _dfb uint32 ;_ff :=0;_cb :=0;_bc :=0;for _bc < len (data ){if _ff > 0{_eg :=_ff ;if _be < _eg {_eg =_be ;};_cda =(_cda <<uint (_eg ))|uint32 (_dfb >>uint (bitsPerInputSample -_eg ));_ff -=_eg ;if _ff > 0{_dfb =_dfb <<uint (_eg );}else {_dfb =0;};_be -=_eg ;if _be ==0{_cd =append (_cd ,_cda );_be =bitsPerOutputSample ;_cda =0;_cb ++;};}else {_ag :=data [_bc ];_bc ++;_dge :=bitsPerInputSample ;if _be < _dge {_dge =_be ;};_ff =bitsPerInputSample -_dge ;_cda =(_cda <<uint (_dge ))|uint32 (_ag >>uint (_ff ));if _dge < bitsPerInputSample {_dfb =_ag <<uint (_dge );};_be -=_dge ;if _be ==0{_cd =append (_cd ,_cda );_be =bitsPerOutputSample ;_cda =0;_cb ++;};};};for _ff >=bitsPerOutputSample {_fb :=_ff ;if _be < _fb {_fb =_be ;};_cda =(_cda <<uint (_fb ))|uint32 (_dfb >>uint (bitsPerInputSample -_fb ));_ff -=_fb ;if _ff > 0{_dfb =_dfb <<uint (_fb );}else {_dfb =0;};_be -=_fb ;if _be ==0{_cd =append (_cd ,_cda );_be =bitsPerOutputSample ;_cda =0;_cb ++;};};if _be > 0&&_be < bitsPerOutputSample {_cda <<=uint (_be );_cd =append (_cd ,_cda );};return _cd ;};func NewReader (img _g .ImageBase )*Reader {return &Reader {_cc :_c .NewReader (img .Data ),_d :img ,_ee :img .ColorComponents ,_bb :img .BytesPerLine *8!=img .ColorComponents *img .BitsPerComponent *img .Width };};type Writer struct{_bed _g .ImageBase ;_af *_c .Writer ;_bedc ,_ec int ;_bf bool ;};func (_fg *Reader )ReadSamples (samples []uint32 )(_a error ){for _cf :=0;_cf < len (samples );_cf ++{samples [_cf ],_a =_fg .ReadSample ();if _a !=nil {return _a ;};};return nil ;};func (_gb *Reader )ReadSample ()(uint32 ,error ){if _gb ._fd ==_gb ._d .Height {return 0,_b .EOF ;};_ef ,_dg :=_gb ._cc .ReadBits (byte (_gb ._d .BitsPerComponent ));if _dg !=nil {return 0,_dg ;};_gb ._ee --;if _gb ._ee ==0{_gb ._ee =_gb ._d .ColorComponents ;_gb ._gc ++;};if _gb ._gc ==_gb ._d .Width {if _gb ._bb {_gb ._cc .ConsumeRemainingBits ();};_gb ._gc =0;_gb ._fd ++;};return uint32 (_ef ),nil ;};type Reader struct{_d _g .ImageBase ;_cc *_c .Reader ;_gc ,_fd ,_ee int ;_bb bool ;};type SampleWriter interface{WriteSample (_cee uint32 )error ;WriteSamples (_cdf []uint32 )error ;};func (_dfg *Writer )WriteSample (sample uint32 )error {if _ ,_dee :=_dfg ._af .WriteBits (uint64 (sample ),_dfg ._bed .BitsPerComponent );_dee !=nil {return _dee ;};_dfg ._ec --;if _dfg ._ec ==0{_dfg ._ec =_dfg ._bed .ColorComponents ;_dfg ._bedc ++;};if _dfg ._bedc ==_dfg ._bed .Width {if _dfg ._bf {_dfg ._af .FinishByte ();};_dfg ._bedc =0;};return nil ;};type SampleReader interface{ReadSample ()(uint32 ,error );ReadSamples (_f []uint32 )error ;};func (_dfd *Writer )WriteSamples (samples []uint32 )error {for _gbfb :=0;_gbfb < len (samples );_gbfb ++{if _bd :=_dfd .WriteSample (samples [_gbfb ]);_bd !=nil {return _bd ;};};return nil ;};func ResampleBytes (data []byte ,bitsPerSample int )[]uint32 {var _ab []uint32 ;_de :=bitsPerSample ;var _ed uint32 ;var _gbf byte ;_df :=0;_fc :=0;_da :=0;for _da < len (data ){if _df > 0{_gcg :=_df ;if _de < _gcg {_gcg =_de ;};_ed =(_ed <<uint (_gcg ))|uint32 (_gbf >>uint (8-_gcg ));_df -=_gcg ;if _df > 0{_gbf =_gbf <<uint (_gcg );}else {_gbf =0;};_de -=_gcg ;if _de ==0{_ab =append (_ab ,_ed );_de =bitsPerSample ;_ed =0;_fc ++;};}else {_ce :=data [_da ];_da ++;_ea :=8;if _de < _ea {_ea =_de ;};_df =8-_ea ;_ed =(_ed <<uint (_ea ))|uint32 (_ce >>uint (_df ));if _ea < 8{_gbf =_ce <<uint (_ea );};_de -=_ea ;if _de ==0{_ab =append (_ab ,_ed );_de =bitsPerSample ;_ed =0;_fc ++;};};};for _df >=bitsPerSample {_eag :=_df ;if _de < _eag {_eag =_de ;};_ed =(_ed <<uint (_eag ))|uint32 (_gbf >>uint (8-_eag ));_df -=_eag ;if _df > 0{_gbf =_gbf <<uint (_eag );}else {_gbf =0;};_de -=_eag ;if _de ==0{_ab =append (_ab ,_ed );_de =bitsPerSample ;_ed =0;_fc ++;};};return _ab ;};func NewWriter (img _g .ImageBase )*Writer {return &Writer {_af :_c .NewWriterMSB (img .Data ),_bed :img ,_ec :img .ColorComponents ,_bf :img .BytesPerLine *8!=img .ColorComponents *img .BitsPerComponent *img .Width };}; |