2021-04-06 22:35:37 +00:00

133 lines
40 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 document ;import (_d "encoding/binary";_ec "fmt";_c "github.com/unidoc/unipdf/v3/common";_ebd "github.com/unidoc/unipdf/v3/internal/bitwise";_g "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_aa "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
_fc "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_ebe "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_cb "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_eb "io";_e "math";_a "runtime/debug";);func (_cba *Page )lastSegmentNumber ()(_ddeb uint32 ,_efa error ){const _aag ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";
if len (_cba .Segments )==0{return _ddeb ,_cb .Errorf (_aag ,"\u006e\u006f\u0020se\u0067\u006d\u0065\u006e\u0074\u0073\u0020\u0066\u006fu\u006ed\u0020i\u006e \u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027",_cba .PageNumber );
};return _cba .Segments [len (_cba .Segments )-1].SegmentNumber ,nil ;};func (_fabc *Page )AddPageInformationSegment (){_fbf :=&_fc .PageInformationSegment {PageBMWidth :_fabc .FinalWidth ,PageBMHeight :_fabc .FinalHeight ,ResolutionX :_fabc .ResolutionX ,ResolutionY :_fabc .ResolutionY ,IsLossless :_fabc .IsLossless };
if _fabc .BlackIsOne {_fbf .DefaultPixelValue =uint8 (0x1);};_abb :=&_fc .Header {PageAssociation :_fabc .PageNumber ,SegmentDataLength :uint64 (_fbf .Size ()),SegmentData :_fbf ,Type :_fc .TPageInformation };_fabc .Segments =append (_fabc .Segments ,_abb );
};func (_bba *Page )AddEndOfPageSegment (){_beg :=&_fc .Header {Type :_fc .TEndOfPage ,PageAssociation :_bba .PageNumber };_bba .Segments =append (_bba .Segments ,_beg );};func (_fabe *Page )GetResolutionY ()(int ,error ){return _fabe .getResolutionY ()};
func (_dccf *Page )createNormalPage (_cfgb *_fc .PageInformationSegment )error {const _dfb ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_dccf .Bitmap =_aa .New (_cfgb .PageBMWidth ,_cfgb .PageBMHeight );if _cfgb .DefaultPixelValue !=0{_dccf .Bitmap .SetDefaultPixel ();
};for _ ,_adde :=range _dccf .Segments {switch _adde .Type {case 6,7,22,23,38,39,42,43:_c .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_adde .SegmentNumber );_beb ,_abaa :=_adde .GetSegmentData ();
if _abaa !=nil {return _abaa ;};_cef ,_fgge :=_beb .(_fc .Regioner );if !_fgge {_c .Log .Debug ("\u0053\u0065g\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0054\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0052\u0065\u0067\u0069on\u0065\u0072",_beb );
return _cb .Errorf (_dfb ,"i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062i\u0067\u0032\u0020\u0073\u0065\u0067\u006den\u0074\u0020\u0074\u0079p\u0065\u0020\u002d\u0020\u006e\u006f\u0074\u0020\u0061 R\u0065\u0067i\u006f\u006e\u0065\u0072\u003a\u0020\u0025\u0054",_beb );
};_fgcb ,_abaa :=_cef .GetRegionBitmap ();if _abaa !=nil {return _cb .Wrap (_abaa ,_dfb ,"");};if _dccf .fitsPage (_cfgb ,_fgcb ){_dccf .Bitmap =_fgcb ;}else {_babb :=_cef .GetRegionInfo ();_bdc :=_dccf .getCombinationOperator (_cfgb ,_babb .CombinaionOperator );
_abaa =_aa .Blit (_fgcb ,_dccf .Bitmap ,int (_babb .XLocation ),int (_babb .YLocation ),_bdc );if _abaa !=nil {return _cb .Wrap (_abaa ,_dfb ,"");};};};};return nil ;};type Globals struct{Segments []*_fc .Header ;};func (_ade *Page )GetSegment (number int )(*_fc .Header ,error ){const _cce ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
for _ ,_dbc :=range _ade .Segments {if _dbc .SegmentNumber ==uint32 (number ){return _dbc ,nil ;};};_gdfe :=make ([]uint32 ,len (_ade .Segments ));for _baf ,_deb :=range _ade .Segments {_gdfe [_baf ]=_deb .SegmentNumber ;};return nil ,_cb .Errorf (_cce ,"\u0073e\u0067\u006d\u0065n\u0074\u0020\u0077i\u0074h \u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0069\u006e\u0020\u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u003a\u0020'%\u0064'\u002e\u0020\u004b\u006e\u006f\u0077n\u0020\u0073\u0065\u0067\u006de\u006e\u0074\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0073\u003a \u0025\u0076",number ,_ade .PageNumber ,_gdfe );
};func _adc (_gac *Document ,_gace int )*Page {return &Page {Document :_gac ,PageNumber :_gace ,Segments :[]*_fc .Header {}};};func (_bagc *Page )clearSegmentData (){for _deeg :=range _bagc .Segments {_bagc .Segments [_deeg ].CleanSegmentData ();};};func (_dgdf *Document )GetNumberOfPages ()(uint32 ,error ){if _dgdf .NumberOfPagesUnknown ||_dgdf .NumberOfPages ==0{if len (_dgdf .Pages )==0{if _aeg :=_dgdf .mapData ();
_aeg !=nil {return 0,_cb .Wrap (_aeg ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_dgdf .Pages )),nil ;};return _dgdf .NumberOfPages ,nil ;};func (_afac *Page )nextSegmentNumber ()uint32 {return _afac .Document .nextSegmentNumber ()};
func (_gfcc *Document )mapData ()error {const _bag ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_fee []*_fc .Header ;_cff int64 ;_egf _fc .Type ;);_bbb ,_ege :=_gfcc .isFileHeaderPresent ();if _ege !=nil {return _cb .Wrap (_ege ,_bag ,"");};if _bbb {if _ege =_gfcc .parseFileHeader ();
_ege !=nil {return _cb .Wrap (_ege ,_bag ,"");};_cff +=int64 (_gfcc ._ca );_gfcc .FullHeaders =true ;};var (_bcf *Page ;_agf bool ;);for _egf !=51&&!_agf {_ccbg ,_cdd :=_fc .NewHeader (_gfcc ,_gfcc .InputStream ,_cff ,_gfcc .OrganizationType );if _cdd !=nil {return _cb .Wrap (_cdd ,_bag ,"");
};_c .Log .Trace ("\u0044\u0065c\u006f\u0064\u0069\u006eg\u0020\u0073e\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u0075m\u0062\u0065\u0072\u003a\u0020\u0025\u0064\u002c\u0020\u0054\u0079\u0070e\u003a\u0020\u0025\u0073",_ccbg .SegmentNumber ,_ccbg .Type );
_egf =_ccbg .Type ;if _egf !=_fc .TEndOfFile {if _ccbg .PageAssociation !=0{_bcf =_gfcc .Pages [_ccbg .PageAssociation ];if _bcf ==nil {_bcf =_adc (_gfcc ,_ccbg .PageAssociation );_gfcc .Pages [_ccbg .PageAssociation ]=_bcf ;if _gfcc .NumberOfPagesUnknown {_gfcc .NumberOfPages ++;
};};_bcf .Segments =append (_bcf .Segments ,_ccbg );}else {_gfcc .GlobalSegments .AddSegment (_ccbg );};};_fee =append (_fee ,_ccbg );_cff =_gfcc .InputStream .StreamPosition ();if _gfcc .OrganizationType ==_fc .OSequential {_cff +=int64 (_ccbg .SegmentDataLength );
};_agf ,_cdd =_gfcc .reachedEOF (_cff );if _cdd !=nil {_c .Log .Debug ("\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u0072\u0065\u0061\u0063h\u0065\u0064\u0020\u0045\u004f\u0046\u0020\u0077\u0069\u0074\u0068\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_cdd );
return _cb .Wrap (_cdd ,_bag ,"");};};_gfcc .determineRandomDataOffsets (_fee ,uint64 (_cff ));return nil ;};func (_fad *Page )Encode (w _ebd .BinaryWriter )(_cae int ,_bbcg error ){const _abab ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
var _cfa int ;for _ ,_efb :=range _fad .Segments {if _cfa ,_bbcg =_efb .Encode (w );_bbcg !=nil {return _cae ,_cb .Wrap (_bbcg ,_abab ,"");};_cae +=_cfa ;};return _cae ,nil ;};func (_aac *Document )isFileHeaderPresent ()(bool ,error ){_aac .InputStream .Mark ();
for _ ,_bgcg :=range _ge {_caf ,_gde :=_aac .InputStream .ReadByte ();if _gde !=nil {return false ,_gde ;};if _bgcg !=_caf {_aac .InputStream .Reset ();return false ,nil ;};};_aac .InputStream .Reset ();return true ,nil ;};func (_eac *Document )parseFileHeader ()error {const _eec ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
_ ,_bfa :=_eac .InputStream .Seek (8,_eb .SeekStart );if _bfa !=nil {return _cb .Wrap (_bfa ,_eec ,"\u0069\u0064");};_ ,_bfa =_eac .InputStream .ReadBits (5);if _bfa !=nil {return _cb .Wrap (_bfa ,_eec ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");
};_ceee ,_bfa :=_eac .InputStream .ReadBit ();if _bfa !=nil {return _cb .Wrap (_bfa ,_eec ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _ceee ==1{_eac .GBUseExtTemplate =true ;};_ceee ,_bfa =_eac .InputStream .ReadBit ();
if _bfa !=nil {return _cb .Wrap (_bfa ,_eec ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _ceee !=1{_eac .NumberOfPagesUnknown =false ;};_ceee ,_bfa =_eac .InputStream .ReadBit ();if _bfa !=nil {return _cb .Wrap (_bfa ,_eec ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");
};_eac .OrganizationType =_fc .OrganizationType (_ceee );if !_eac .NumberOfPagesUnknown {_eac .NumberOfPages ,_bfa =_eac .InputStream .ReadUint32 ();if _bfa !=nil {return _cb .Wrap (_bfa ,_eec ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");
};_eac ._ca =13;};return nil ;};func (_cf *Document )completeSymbols ()(_dgb error ){const _bgcd ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _cf .Classer ==nil {return nil ;};if _cf .Classer .UndilatedTemplates ==nil {return _cb .Error (_bgcd ,"\u006e\u006f t\u0065\u006d\u0070l\u0061\u0074\u0065\u0073 de\u0066in\u0065\u0064\u0020\u0066\u006f\u0072\u0020th\u0065\u0020\u0063\u006c\u0061\u0073\u0073e\u0072");
};_gba :=len (_cf .Pages )==1;_gbd :=make ([]int ,_cf .Classer .UndilatedTemplates .Size ());var _fe int ;for _ebeg :=0;_ebeg < _cf .Classer .ClassIDs .Size ();_ebeg ++{_fe ,_dgb =_cf .Classer .ClassIDs .Get (_ebeg );if _dgb !=nil {return _cb .Wrap (_dgb ,_bgcd ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
};_gbd [_fe ]++;};var _ag []int ;for _caaf :=0;_caaf < _cf .Classer .UndilatedTemplates .Size ();_caaf ++{if _gbd [_caaf ]==0{return _cb .Error (_bgcd ,"\u006eo\u0020\u0073y\u006d\u0062\u006f\u006cs\u0020\u0069\u006es\u0074\u0061\u006e\u0063\u0065\u0073\u0020\u0066\u006fun\u0064\u0020\u0066o\u0072\u0020g\u0069\u0076\u0065\u006e\u0020\u0063l\u0061\u0073s\u003f\u0020");
};if _gbd [_caaf ]> 1||_gba {_ag =append (_ag ,_caaf );};};_cf ._de =len (_ag );var _db ,_dgdd int ;for _bgd :=0;_bgd < _cf .Classer .ComponentPageNumbers .Size ();_bgd ++{_db ,_dgb =_cf .Classer .ComponentPageNumbers .Get (_bgd );if _dgb !=nil {return _cb .Wrapf (_dgb ,_bgcd ,"p\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027 \u006e\u006f\u0074\u0020\u0066\u006f\u0075nd\u0020\u0069\u006e\u0020t\u0068\u0065\u0020\u0063\u006c\u0061\u0073\u0073\u0065r \u0070\u0061g\u0065\u006e\u0075\u006d\u0062\u0065\u0072\u0073",_bgd );
};_dgdd ,_dgb =_cf .Classer .ClassIDs .Get (_bgd );if _dgb !=nil {return _cb .Wrapf (_dgb ,_bgcd ,"\u0063\u0061\u006e\u0027\u0074\u0020\u0067e\u0074\u0020\u0073y\u006d\u0062\u006f\u006c \u0066\u006f\u0072\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027\u0020\u0066\u0072\u006f\u006d\u0020\u0063\u006c\u0061\u0073\u0073\u0065\u0072",_db );
};if _gbd [_dgdd ]==1&&!_gba {_cf ._gc [_db ]=append (_cf ._gc [_db ],_dgdd );};};if _dgb =_cf .Classer .ComputeLLCorners ();_dgb !=nil {return _cb .Wrap (_dgb ,_bgcd ,"");};return nil ;};func (_gg *Page )GetHeight ()(int ,error ){return _gg .getHeight ()};
type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _ebd .StreamReader ;GlobalSegments *Globals ;OrganizationType _fc .OrganizationType ;Classer *_ebe .Classer ;XRes ,YRes int ;
FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_aa .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_ca uint8 ;_gef *_ebd .BufferedWriter ;EncodeGlobals bool ;_de int ;_gc map[int ][]int ;_b map[int ][]int ;_ae []int ;_ff map[int ]int ;
};func (_abce *Page )AddGenericRegion (bm *_aa .Bitmap ,xloc ,yloc ,template int ,tp _fc .Type ,duplicateLineRemoval bool )error {const _gfe ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";_dga :=&_fc .GenericRegion {};
if _bead :=_dga .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_bead !=nil {return _cb .Wrap (_bead ,_gfe ,"");};_eacb :=&_fc .Header {Type :_fc .TImmediateGenericRegion ,PageAssociation :_abce .PageNumber ,SegmentData :_dga };_abce .Segments =append (_abce .Segments ,_eacb );
return nil ;};var _ge =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_dfc *Page )String ()string {return _ec .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_dfc .PageNumber );};func (_ddg *Globals )GetSymbolDictionary ()(*_fc .Header ,error ){const _dcgb ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
if _ddg ==nil {return nil ,_cb .Error (_dcgb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_ddg .Segments )==0{return nil ,_cb .Error (_dcgb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};for _ ,_bdfg :=range _ddg .Segments {if _bdfg .Type ==_fc .TSymbolDictionary {return _bdfg ,nil ;};};return nil ,_cb .Error (_dcgb ,"\u0067\u006c\u006fba\u006c\u0020\u0073\u0079\u006d\u0062\u006f\u006c\u0020d\u0069c\u0074i\u006fn\u0061\u0072\u0079\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");
};func (_cgda *Document )GetGlobalSegment (i int )(*_fc .Header ,error ){_fbg ,_gfc :=_cgda .GlobalSegments .GetSegment (i );if _gfc !=nil {return nil ,_cb .Wrap (_gfc ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
};return _fbg ,nil ;};func (_gdee *Globals )GetSegmentByIndex (index int )(*_fc .Header ,error ){const _aef ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _gdee ==nil {return nil ,_cb .Error (_aef ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
};if len (_gdee .Segments )==0{return nil ,_cb .Error (_aef ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_gdee .Segments )-1{return nil ,_cb .Error (_aef ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
};return _gdee .Segments [index ],nil ;};func (_dee *Document )completeClassifiedPages ()(_bg error ){const _ad ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";if _dee .Classer ==nil {return nil ;
};_dee ._ae =make ([]int ,_dee .Classer .UndilatedTemplates .Size ());for _df :=0;_df < _dee .Classer .ClassIDs .Size ();_df ++{_gb ,_gcb :=_dee .Classer .ClassIDs .Get (_df );if _gcb !=nil {return _cb .Wrapf (_gcb ,_ad ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_df );
};_dee ._ae [_gb ]++;};var _bd []int ;for _bf :=0;_bf < _dee .Classer .UndilatedTemplates .Size ();_bf ++{if _dee .NumberOfPages ==1||_dee ._ae [_bf ]> 1{_bd =append (_bd ,_bf );};};var (_ba *Page ;_ac bool ;);for _adg ,_fd :=range *_dee .Classer .ComponentPageNumbers {if _ba ,_ac =_dee .Pages [_fd ];
!_ac {return _cb .Errorf (_ad ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_adg );};if _ba .EncodingMethod ==GenericEM {_c .Log .Error ("\u0047\u0065\u006e\u0065\u0072\u0069c\u0020\u0070\u0061g\u0065\u0020\u0077i\u0074\u0068\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020ma\u0070\u0070\u0065\u0064\u0020\u0061\u0073\u0020\u0063\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0020\u0070\u0061\u0067\u0065",_adg );
continue ;};_dee ._b [_fd ]=append (_dee ._b [_fd ],_adg );_bgc ,_bgca :=_dee .Classer .ClassIDs .Get (_adg );if _bgca !=nil {return _cb .Wrapf (_bgca ,_ad ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_adg );
};if _dee ._ae [_bgc ]==1&&_dee .NumberOfPages !=1{_cbf :=append (_dee ._gc [_fd ],_bgc );_dee ._gc [_fd ]=_cbf ;};};if _bg =_dee .Classer .ComputeLLCorners ();_bg !=nil {return _cb .Wrap (_bg ,_ad ,"");};if _ ,_bg =_dee .addSymbolDictionary (0,_dee .Classer .UndilatedTemplates ,_bd ,_dee ._ff ,false );
_bg !=nil {return _cb .Wrap (_bg ,_ad ,"");};return nil ;};func (_feb *Globals )GetSegment (segmentNumber int )(*_fc .Header ,error ){const _bcd ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _feb ==nil {return nil ,_cb .Error (_bcd ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
};if len (_feb .Segments )==0{return nil ,_cb .Error (_bcd ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _ffba *_fc .Header ;for _ ,_ffba =range _feb .Segments {if _ffba .SegmentNumber ==uint32 (segmentNumber ){break ;
};};if _ffba ==nil {return nil ,_cb .Error (_bcd ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _ffba ,nil ;};func (_ab *Document )produceClassifiedPages ()(_ee error ){const _bfg ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";
if _ab .Classer ==nil {return nil ;};var (_deee *Page ;_gea bool ;_cg *_fc .Header ;);for _bdg :=1;_bdg <=int (_ab .NumberOfPages );_bdg ++{if _deee ,_gea =_ab .Pages [_bdg ];!_gea {return _cb .Errorf (_bfg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_bdg );
};if _deee .EncodingMethod ==GenericEM {continue ;};if _cg ==nil {if _cg ,_ee =_ab .GlobalSegments .GetSymbolDictionary ();_ee !=nil {return _cb .Wrap (_ee ,_bfg ,"");};};if _ee =_ab .produceClassifiedPage (_deee ,_cg );_ee !=nil {return _cb .Wrapf (_ee ,_bfg ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_bdg );
};};return nil ;};func (_bgde *Page )GetBitmap ()(_eag *_aa .Bitmap ,_ead error ){_c .Log .Trace (_ec .Sprintf ("\u005b\u0050\u0041G\u0045\u005d\u005b\u0023%\u0064\u005d\u0020\u0047\u0065\u0074\u0042i\u0074\u006d\u0061\u0070\u0020\u0062\u0065\u0067\u0069\u006e\u0073\u002e\u002e\u002e",_bgde .PageNumber ));
defer func (){if _ead !=nil {_c .Log .Trace (_ec .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064\u005d\u0020\u0047\u0065\u0074B\u0069t\u006d\u0061\u0070\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_bgde .PageNumber ,_ead ));
}else {_c .Log .Trace (_ec .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064]\u0020\u0047\u0065\u0074\u0042\u0069\u0074m\u0061\u0070\u0020\u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064",_bgde .PageNumber ));};}();if _bgde .Bitmap !=nil {return _bgde .Bitmap ,nil ;
};_ead =_bgde .composePageBitmap ();if _ead !=nil {return nil ,_ead ;};return _bgde .Bitmap ,nil ;};func (_fcf *Page )createPage (_eab *_fc .PageInformationSegment )error {var _baa error ;if !_eab .IsStripe ||_eab .PageBMHeight !=-1{_baa =_fcf .createNormalPage (_eab );
}else {_baa =_fcf .createStripedPage (_eab );};return _baa ;};func (_abaf *Page )getHeight ()(int ,error ){const _bff ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _abaf .FinalHeight !=0{return _abaf .FinalHeight ,nil ;};_aeeg :=_abaf .getPageInformationSegment ();
if _aeeg ==nil {return 0,_cb .Error (_bff ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bgg ,_caff :=_aeeg .GetSegmentData ();if _caff !=nil {return 0,_cb .Wrap (_caff ,_bff ,"");};_bfb ,_bbag :=_bgg .(*_fc .PageInformationSegment );
if !_bbag {return 0,_cb .Errorf (_bff ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_bgg );
};if _bfb .PageBMHeight ==_e .MaxInt32 {_ ,_caff =_abaf .GetBitmap ();if _caff !=nil {return 0,_cb .Wrap (_caff ,_bff ,"");};}else {_abaf .FinalHeight =_bfb .PageBMHeight ;};return _abaf .FinalHeight ,nil ;};func (_cdfd *Page )getCombinationOperator (_fcb *_fc .PageInformationSegment ,_adcf _aa .CombinationOperator )_aa .CombinationOperator {if _fcb .CombinationOperatorOverrideAllowed (){return _adcf ;
};return _fcb .CombinationOperator ();};func _bga (_faba _ebd .StreamReader ,_gdg *Globals )(*Document ,error ){_abc :=&Document {Pages :make (map[int ]*Page ),InputStream :_faba ,OrganizationType :_fc .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_gdg ,_ca :9};
if _abc .GlobalSegments ==nil {_abc .GlobalSegments =&Globals {};};if _cfb :=_abc .mapData ();_cfb !=nil {return nil ,_cfb ;};return _abc ,nil ;};func (_dbf *Document )nextPageNumber ()uint32 {_dbf .NumberOfPages ++;return _dbf .NumberOfPages };func (_eccf *Page )fitsPage (_efe *_fc .PageInformationSegment ,_cec *_aa .Bitmap )bool {return _eccf .countRegions ()==1&&_efe .DefaultPixelValue ==0&&_efe .PageBMWidth ==_cec .Width &&_efe .PageBMHeight ==_cec .Height ;
};func (_gdd *Document )encodeSegment (_dcc *_fc .Header ,_cdc *int )error {const _ffe ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_dcc .SegmentNumber =_gdd .nextSegmentNumber ();_dgg ,_fb :=_dcc .Encode (_gdd ._gef );
if _fb !=nil {return _cb .Wrapf (_fb ,_ffe ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_dcc .SegmentNumber );};*_cdc +=_dgg ;return nil ;};func (_edb *Document )addSymbolDictionary (_bdf int ,_gd *_aa .Bitmaps ,_gcc []int ,_dd map[int ]int ,_aba bool )(*_fc .Header ,error ){const _ce ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
_gdf :=&_fc .SymbolDictionary {};if _gbf :=_gdf .InitEncode (_gd ,_gcc ,_dd ,_aba );_gbf !=nil {return nil ,_gbf ;};_ddc :=&_fc .Header {Type :_fc .TSymbolDictionary ,PageAssociation :_bdf ,SegmentData :_gdf };if _bdf ==0{if _edb .GlobalSegments ==nil {_edb .GlobalSegments =&Globals {};
};_edb .GlobalSegments .AddSegment (_ddc );return _ddc ,nil ;};_gf ,_fcd :=_edb .Pages [_bdf ];if !_fcd {return nil ,_cb .Errorf (_ce ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_bdf );};var (_acb int ;
_cgd *_fc .Header ;);for _acb ,_cgd =range _gf .Segments {if _cgd .Type ==_fc .TPageInformation {break ;};};_acb ++;_gf .Segments =append (_gf .Segments ,nil );copy (_gf .Segments [_acb +1:],_gf .Segments [_acb :]);_gf .Segments [_acb ]=_ddc ;return _ddc ,nil ;
};type Page struct{Segments []*_fc .Header ;PageNumber int ;Bitmap *_aa .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;BlackIsOne bool ;
};func (_cffa *Page )GetWidth ()(int ,error ){return _cffa .getWidth ()};func (_ffd *Page )createStripedPage (_fcda *_fc .PageInformationSegment )error {const _agbf ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";
_cbcd ,_adec :=_ffd .collectPageStripes ();if _adec !=nil {return _cb .Wrap (_adec ,_agbf ,"");};var _bcgb int ;for _ ,_afe :=range _cbcd {if _fda ,_bcdd :=_afe .(*_fc .EndOfStripe );_bcdd {_bcgb =_fda .LineNumber ()+1;}else {_daaf :=_afe .(_fc .Regioner );
_efbd :=_daaf .GetRegionInfo ();_cdg :=_ffd .getCombinationOperator (_fcda ,_efbd .CombinaionOperator );_ebde ,_fgf :=_daaf .GetRegionBitmap ();if _fgf !=nil {return _cb .Wrap (_fgf ,_agbf ,"");};_fgf =_aa .Blit (_ebde ,_ffd .Bitmap ,int (_efbd .XLocation ),_bcgb ,_cdg );
if _fgf !=nil {return _cb .Wrap (_fgf ,_agbf ,"");};};};return nil ;};func (_gdad *Page )getResolutionY ()(int ,error ){const _ded ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _gdad .ResolutionY !=0{return _gdad .ResolutionY ,nil ;
};_feed :=_gdad .getPageInformationSegment ();if _feed ==nil {return 0,_cb .Error (_ded ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_aec ,_ddca :=_feed .GetSegmentData ();if _ddca !=nil {return 0,_cb .Wrap (_ddca ,_ded ,"");
};_ccf ,_bee :=_aec .(*_fc .PageInformationSegment );if !_bee {return 0,_cb .Errorf (_ded ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0074\u0079\u0070\u0065\u003a\u0027%\u0054\u0027",_aec );
};_gdad .ResolutionY =_ccf .ResolutionY ;return _gdad .ResolutionY ,nil ;};func (_fca *Page )collectPageStripes ()(_aacd []_fc .Segmenter ,_fdf error ){const _efd ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";
var _fcge _fc .Segmenter ;for _ ,_ccea :=range _fca .Segments {switch _ccea .Type {case 6,7,22,23,38,39,42,43:_fcge ,_fdf =_ccea .GetSegmentData ();if _fdf !=nil {return nil ,_cb .Wrap (_fdf ,_efd ,"");};_aacd =append (_aacd ,_fcge );case 50:_fcge ,_fdf =_ccea .GetSegmentData ();
if _fdf !=nil {return nil ,_fdf ;};_fgd ,_gefa :=_fcge .(*_fc .EndOfStripe );if !_gefa {return nil ,_cb .Errorf (_efd ,"\u0045\u006e\u0064\u004f\u0066\u0053\u0074\u0072\u0069\u0070\u0065\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u006f\u0066\u0020\u0076\u0061l\u0069\u0064\u0020\u0074\u0079p\u0065\u003a \u0027\u0025\u0054\u0027",_fcge );
};_aacd =append (_aacd ,_fgd );_fca .FinalHeight =_fgd .LineNumber ();};};return _aacd ,nil ;};type EncodingMethod int ;func (_ef *Document )Encode ()(_dac []byte ,_cgf error ){const _cfc ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
var _bbe ,_afa int ;if _ef .FullHeaders {if _bbe ,_cgf =_ef .encodeFileHeader (_ef ._gef );_cgf !=nil {return nil ,_cb .Wrap (_cgf ,_cfc ,"");};};var (_cc bool ;_ccb *_fc .Header ;_ddf *Page ;);if _cgf =_ef .completeClassifiedPages ();_cgf !=nil {return nil ,_cb .Wrap (_cgf ,_cfc ,"");
};if _cgf =_ef .produceClassifiedPages ();_cgf !=nil {return nil ,_cb .Wrap (_cgf ,_cfc ,"");};if _ef .GlobalSegments !=nil {for _ ,_ccb =range _ef .GlobalSegments .Segments {if _cgf =_ef .encodeSegment (_ccb ,&_bbe );_cgf !=nil {return nil ,_cb .Wrap (_cgf ,_cfc ,"");
};};};for _fdc :=1;_fdc <=int (_ef .NumberOfPages );_fdc ++{if _ddf ,_cc =_ef .Pages [_fdc ];!_cc {return nil ,_cb .Errorf (_cfc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_fdc );};for _ ,_ccb =range _ddf .Segments {if _cgf =_ef .encodeSegment (_ccb ,&_bbe );
_cgf !=nil {return nil ,_cb .Wrap (_cgf ,_cfc ,"");};};};if _ef .FullHeaders {if _afa ,_cgf =_ef .encodeEOFHeader (_ef ._gef );_cgf !=nil {return nil ,_cb .Wrap (_cgf ,_cfc ,"");};_bbe +=_afa ;};_dac =_ef ._gef .Data ();if len (_dac )!=_bbe {_c .Log .Debug ("\u0042\u0079\u0074\u0065\u0073 \u0077\u0072\u0069\u0074\u0074\u0065\u006e \u0028\u006e\u0029\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u0074\u006f\u0020\u0074\u0068\u0065\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u006f\u0066\u0020t\u0068\u0065\u0020\u0064\u0061\u0074\u0061\u0020\u0065\u006e\u0063\u006fd\u0065\u0064\u003a\u0020\u0027\u0025d\u0027",_bbe ,len (_dac ));
};return _dac ,nil ;};func (_gcf *Document )nextSegmentNumber ()uint32 {_fgg :=_gcf .CurrentSegmentNumber ;_gcf .CurrentSegmentNumber ++;return _fgg ;};func (_gda *Document )GetPage (pageNumber int )(_fc .Pager ,error ){const _dca ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";
if pageNumber < 0{_c .Log .Debug ("\u004a\u0042\u0049\u00472\u0020\u0050\u0061\u0067\u0065\u0020\u002d\u0020\u0047e\u0074\u0050\u0061\u0067\u0065\u003a\u0020\u0025\u0064\u002e\u0020\u0050\u0061\u0067\u0065\u0020\u0063\u0061n\u006e\u006f\u0074\u0020\u0062e\u0020\u006c\u006f\u0077\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0030\u002e\u0020\u0025\u0073",pageNumber ,_a .Stack ());
return nil ,_cb .Errorf (_dca ,"\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032\u0020d\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u002d\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064 \u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a\u0020\u0025\u0064",pageNumber );
};if pageNumber > len (_gda .Pages ){_c .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_a .Stack ());return nil ,_cb .Error (_dca ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
};_eeg ,_caac :=_gda .Pages [pageNumber ];if !_caac {_c .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_a .Stack ());return nil ,_cb .Errorf (_dca ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
};return _eeg ,nil ;};func (_dfdb *Page )countRegions ()int {var _faf int ;for _ ,_eega :=range _dfdb .Segments {switch _eega .Type {case 6,7,22,23,38,39,42,43:_faf ++;};};return _faf ;};func DecodeDocument (input _ebd .StreamReader ,globals *Globals )(*Document ,error ){return _bga (input ,globals );
};func (_cgg *Document )determineRandomDataOffsets (_afag []*_fc .Header ,_ea uint64 ){if _cgg .OrganizationType !=_fc .ORandom {return ;};for _ ,_ffea :=range _afag {_ffea .SegmentDataStartOffset =_ea ;_ea +=_ffea .SegmentDataLength ;};};func (_ceae *Page )getWidth ()(int ,error ){const _cdfb ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";
if _ceae .FinalWidth !=0{return _ceae .FinalWidth ,nil ;};_dacg :=_ceae .getPageInformationSegment ();if _dacg ==nil {return 0,_cb .Error (_cdfb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_fefb ,_cfgf :=_dacg .GetSegmentData ();
if _cfgf !=nil {return 0,_cb .Wrap (_cfgf ,_cdfb ,"");};_cddf ,_gfbg :=_fefb .(*_fc .PageInformationSegment );if !_gfbg {return 0,_cb .Errorf (_cdfb ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_fefb );
};_ceae .FinalWidth =_cddf .PageBMWidth ;return _ceae .FinalWidth ,nil ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func _dc (_dab int )int {_cge :=0;_ed :=(_dab &(_dab -1))==0;_dab >>=1;for ;_dab !=0;_dab >>=1{_cge ++;};if _ed {return _cge ;
};return _cge +1;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_gef :_ebd .BufferedMSB (),Pages :map[int ]*Page {},_gc :map[int ][]int {},_ff :map[int ]int {},_b :map[int ][]int {}};};func (_dge *Document )encodeEOFHeader (_bcg _ebd .BinaryWriter )(_cea int ,_agb error ){_fef :=&_fc .Header {SegmentNumber :_dge .nextSegmentNumber (),Type :_fc .TEndOfFile };
if _cea ,_agb =_fef .Encode (_bcg );_agb !=nil {return 0,_cb .Wrap (_agb ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _cea ,nil ;};func (_gae *Page )getResolutionX ()(int ,error ){const _eebd ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";
if _gae .ResolutionX !=0{return _gae .ResolutionX ,nil ;};_def :=_gae .getPageInformationSegment ();if _def ==nil {return 0,_cb .Error (_eebd ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_acdd ,_dda :=_def .GetSegmentData ();
if _dda !=nil {return 0,_cb .Wrap (_dda ,_eebd ,"");};_aedf ,_cfd :=_acdd .(*_fc .PageInformationSegment );if !_cfd {return 0,_cb .Errorf (_eebd ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_acdd );
};_gae .ResolutionX =_aedf .ResolutionX ;return _gae .ResolutionX ,nil ;};func (_gdc *Page )getPageInformationSegment ()*_fc .Header {for _ ,_cag :=range _gdc .Segments {if _cag .Type ==_fc .TPageInformation {return _cag ;};};_c .Log .Debug ("\u0050\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0066o\u0072\u0020\u0070\u0061\u0067\u0065\u003a\u0020%\u0073\u002e",_gdc );
return nil ;};func (_bea *Document )reachedEOF (_egg int64 )(bool ,error ){const _aee ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_edbe :=_bea .InputStream .Seek (_egg ,_eb .SeekStart );if _edbe !=nil {_c .Log .Debug ("\u0072\u0065\u0061c\u0068\u0065\u0064\u0045\u004f\u0046\u0020\u002d\u0020\u0064\u002e\u0049\u006e\u0070\u0075\u0074\u0053\u0074\u0072\u0065\u0061\u006d\u002e\u0053\u0065\u0065\u006b\u0020\u0066a\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0076",_edbe );
return false ,_cb .Wrap (_edbe ,_aee ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_edbe =_bea .InputStream .ReadBits (32);if _edbe ==_eb .EOF {return true ,nil ;
}else if _edbe !=nil {return false ,_cb .Wrap (_edbe ,_aee ,"");};return false ,nil ;};func (_acd *Globals )AddSegment (segment *_fc .Header ){_acd .Segments =append (_acd .Segments ,segment )};func (_cgdf *Page )composePageBitmap ()error {const _edcf ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";
if _cgdf .PageNumber ==0{return nil ;};_acg :=_cgdf .getPageInformationSegment ();if _acg ==nil {return _cb .Error (_edcf ,"\u0070\u0061\u0067e \u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069o\u006e \u0073e\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");
};_abad ,_adae :=_acg .GetSegmentData ();if _adae !=nil {return _adae ;};_fgc ,_fefg :=_abad .(*_fc .PageInformationSegment );if !_fefg {return _cb .Error (_edcf ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006da\u0074\u0069\u006f\u006e \u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070\u0065");
};if _adae =_cgdf .createPage (_fgc );_adae !=nil {return _cb .Wrap (_adae ,_edcf ,"");};_cgdf .clearSegmentData ();return nil ;};func (_fa *Document )AddGenericPage (bm *_aa .Bitmap ,duplicateLineRemoval bool )(_cd error ){const _ecc ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
if !_fa .FullHeaders &&_fa .NumberOfPages !=0{return _cb .Error (_ecc ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");
};_caa :=&Page {Segments :[]*_fc .Header {},Bitmap :bm ,Document :_fa ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_aa .Chocolate };_caa .PageNumber =int (_fa .nextPageNumber ());_fa .Pages [_caa .PageNumber ]=_caa ;
bm .InverseData ();_caa .AddPageInformationSegment ();if _cd =_caa .AddGenericRegion (bm ,0,0,0,_fc .TImmediateGenericRegion ,duplicateLineRemoval );_cd !=nil {return _cb .Wrap (_cd ,_ecc ,"");};if _fa .FullHeaders {_caa .AddEndOfPageSegment ();};return nil ;
};func (_da *Document )produceClassifiedPage (_dad *Page ,_af *_fc .Header )(_dae error ){const _cbc ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";var _daa map[int ]int ;_dgd :=_da ._de ;_ga :=[]*_fc .Header {_af };
if len (_da ._gc [_dad .PageNumber ])> 0{_daa =map[int ]int {};_gcd ,_bdb :=_da .addSymbolDictionary (_dad .PageNumber ,_da .Classer .UndilatedTemplates ,_da ._gc [_dad .PageNumber ],_daa ,false );if _bdb !=nil {return _cb .Wrap (_bdb ,_cbc ,"");};_ga =append (_ga ,_gcd );
_dgd +=len (_da ._gc [_dad .PageNumber ]);};_aed :=_da ._b [_dad .PageNumber ];_c .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_dad .PageNumber ,_aed );_dad .addTextRegionSegment (_ga ,_da ._ff ,_daa ,_da ._b [_dad .PageNumber ],_da .Classer .PtaLL ,_da .Classer .UndilatedTemplates ,_da .Classer .ClassIDs ,nil ,_dc (_dgd ),len (_da ._b [_dad .PageNumber ]));
return nil ;};func (_dgae *Page )addTextRegionSegment (_dfg []*_fc .Header ,_fce ,_dff map[int ]int ,_add []int ,_fbff *_aa .Points ,_eege *_aa .Bitmaps ,_fcg *_g .IntSlice ,_aegf *_aa .Boxes ,_dde ,_aff int ){_fdd :=&_fc .TextRegion {NumberOfSymbols :uint32 (_aff )};
_fdd .InitEncode (_fce ,_dff ,_add ,_fbff ,_eege ,_fcg ,_aegf ,_dgae .FinalWidth ,_dgae .FinalHeight ,_dde );_egea :=&_fc .Header {RTSegments :_dfg ,SegmentData :_fdd ,PageAssociation :_dgae .PageNumber ,Type :_fc .TImmediateTextRegion };_ada :=_fc .TPageInformation ;
if _dff !=nil {_ada =_fc .TSymbolDictionary ;};var _gfb int ;for ;_gfb < len (_dgae .Segments );_gfb ++{if _dgae .Segments [_gfb ].Type ==_ada {_gfb ++;break ;};};_dgae .Segments =append (_dgae .Segments ,nil );copy (_dgae .Segments [_gfb +1:],_dgae .Segments [_gfb :]);
_dgae .Segments [_gfb ]=_egea ;};func (_edc *Page )GetResolutionX ()(int ,error ){return _edc .getResolutionX ()};func (_dg *Document )AddClassifiedPage (bm *_aa .Bitmap ,method _ebe .Method )(_bb error ){const _fab ="\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0041\u0064d\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064P\u0061\u0067\u0065";
if !_dg .FullHeaders &&_dg .NumberOfPages !=0{return _cb .Error (_fab ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");
};if _dg .Classer ==nil {if _dg .Classer ,_bb =_ebe .Init (_ebe .DefaultSettings ());_bb !=nil {return _cb .Wrap (_bb ,_fab ,"");};};_ffb :=int (_dg .nextPageNumber ());_fg :=&Page {Segments :[]*_fc .Header {},Bitmap :bm ,Document :_dg ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_ffb };
_dg .Pages [_ffb ]=_fg ;switch method {case _ebe .RankHaus :_fg .EncodingMethod =RankHausEM ;case _ebe .Correlation :_fg .EncodingMethod =CorrelationEM ;};_fg .AddPageInformationSegment ();if _bb =_dg .Classer .AddPage (bm ,_ffb ,method );_bb !=nil {return _cb .Wrap (_bb ,_fab ,"");
};if _dg .FullHeaders {_fg .AddEndOfPageSegment ();};return nil ;};func (_dcg *Document )encodeFileHeader (_bab _ebd .BinaryWriter )(_dec int ,_bgb error ){const _ged ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
_dec ,_bgb =_bab .Write (_ge );if _bgb !=nil {return _dec ,_cb .Wrap (_bgb ,_ged ,"\u0069\u0064");};if _bgb =_bab .WriteByte (0x01);_bgb !=nil {return _dec ,_cb .Wrap (_bgb ,_ged ,"\u0066\u006c\u0061g\u0073");};_dec ++;_gdb :=make ([]byte ,4);_d .BigEndian .PutUint32 (_gdb ,_dcg .NumberOfPages );
_be ,_bgb :=_bab .Write (_gdb );if _bgb !=nil {return _be ,_cb .Wrap (_bgb ,_ged ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_dec +=_be ;return _dec ,nil ;};