mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-30 13:48:51 +08:00
12 lines
46 KiB
Go
12 lines
46 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 imageutil ;import (_d "errors";_f "fmt";_fb "github.com/unidoc/unipdf/v3/internal/bitwise";_a "image";_b "image/color";_bf "image/draw";_dg "math";);func _dgdb (_dbg _b .RGBA )_b .CMYK {_cdee ,_cge ,_agcd ,_aaf :=_b .RGBToCMYK (_dbg .R ,_dbg .G ,_dbg .B );return _b .CMYK {C :_cdee ,M :_cge ,Y :_agcd ,K :_aaf };};func (_beb *Gray2 )Validate ()error {if len (_beb .Data )!=_beb .Height *_beb .BytesPerLine {return ErrInvalidImage ;};return nil ;};func _adbb (_fcgb _b .NRGBA )_b .NRGBA {_fcgb .R =_fcgb .R >>4|(_fcgb .R >>4)<<4;_fcgb .G =_fcgb .G >>4|(_fcgb .G >>4)<<4;_fcgb .B =_fcgb .B >>4|(_fcgb .B >>4)<<4;return _fcgb ;};func (_gadb *Gray8 )ColorAt (x ,y int )(_b .Color ,error ){return ColorAtGray8BPC (x ,y ,_gadb .BytesPerLine ,_gadb .Data ,_gadb .Decode );};func (_ea *CMYK32 )Bounds ()_a .Rectangle {return _a .Rectangle {Max :_a .Point {X :_ea .Width ,Y :_ea .Height }};};func (_bddg *ImageBase )MakeAlpha (){_bddg .newAlpha ()};var _ Image =&Gray16 {};type Gray4 struct{ImageBase };func (_dcaa *NRGBA32 )Bounds ()_a .Rectangle {return _a .Rectangle {Max :_a .Point {X :_dcaa .Width ,Y :_dcaa .Height }};};func (_ageb *Gray8 )Set (x ,y int ,c _b .Color ){_cgcg :=y *_ageb .BytesPerLine +x ;if _cgcg > len (_ageb .Data )-1{return ;};_baf :=_b .GrayModel .Convert (c );_ageb .Data [_cgcg ]=_baf .(_b .Gray ).Y ;};func (_ddg *NRGBA32 )SetNRGBA (x ,y int ,c _b .NRGBA ){_fbfd :=y *_ddg .Width +x ;_fgfba :=3*_fbfd ;if _fgfba +2>=len (_ddg .Data ){return ;};_ddg .setRGBA (_fbfd ,c );return ;};func (_gcag *Gray8 )ColorModel ()_b .Model {return _b .GrayModel };func (_cfc *Monochrome )Copy ()Image {return &Monochrome {ImageBase :_cfc .ImageBase .copy (),ModelThreshold :_cfc .ModelThreshold };};var _ _a .Image =&NRGBA32 {};func ImgToBinary (i _a .Image ,threshold uint8 )*_a .Gray {switch _fgggdf :=i .(type ){case *_a .Gray :if _bfb (_fgggdf ){return _fgggdf ;};return _fdge (_fgggdf ,threshold );case *_a .Gray16 :return _eagc (_fgggdf ,threshold );default:return _bgeb (_fgggdf ,threshold );};};var _ Gray =&Gray8 {};func _bgeb (_ecf _a .Image ,_fdba uint8 )*_a .Gray {_adeg :=_ecf .Bounds ();_efb :=_a .NewGray (_adeg );var (_bbe _b .Color ;_feeb _b .Gray ;);for _cdcd :=0;_cdcd < _adeg .Max .X ;_cdcd ++{for _deda :=0;_deda < _adeg .Max .Y ;_deda ++{_bbe =_ecf .At (_cdcd ,_deda );_efb .Set (_cdcd ,_deda ,_bbe );_feeb =_efb .GrayAt (_cdcd ,_deda );_efb .SetGray (_cdcd ,_deda ,_b .Gray {Y :_eeee (_feeb .Y ,_fdba )});};};return _efb ;};func (_beg *Gray2 )Base ()*ImageBase {return &_beg .ImageBase };func LinearInterpolate (x ,xmin ,xmax ,ymin ,ymax float64 )float64 {if _dg .Abs (xmax -xmin )< 0.000001{return ymin ;};_cebg :=ymin +(x -xmin )*(ymax -ymin )/(xmax -xmin );return _cebg ;};func _fdge (_adcb *_a .Gray ,_bcdb uint8 )*_a .Gray {_fbfe :=_adcb .Bounds ();_gbda :=_a .NewGray (_fbfe );for _fgag :=0;_fgag < _fbfe .Dx ();_fgag ++{for _gbgc :=0;_gbgc < _fbfe .Dy ();_gbgc ++{_fegb :=_adcb .GrayAt (_fgag ,_gbgc );_gbda .SetGray (_fgag ,_gbgc ,_b .Gray {Y :_eeee (_fegb .Y ,_bcdb )});};};return _gbda ;};func _fcfaf (_bef RGBA ,_fgggd Gray ,_gedg _a .Rectangle ){for _feag :=0;_feag < _gedg .Max .X ;_feag ++{for _fcg :=0;_fcg < _gedg .Max .Y ;_fcg ++{_becd :=_gbc (_bef .RGBAAt (_feag ,_fcg ));_fgggd .SetGray (_feag ,_fcg ,_becd );};};};type CMYK interface{CMYKAt (_gf ,_ga int )_b .CMYK ;SetCMYK (_af ,_db int ,_c _b .CMYK );};func GrayHistogram (g Gray )(_cfbdg [256]int ){switch _gaea :=g .(type ){case Histogramer :return _gaea .Histogram ();case _a .Image :_cgd :=_gaea .Bounds ();for _fef :=0;_fef < _cgd .Max .X ;_fef ++{for _egab :=0;_egab < _cgd .Max .Y ;_egab ++{_cfbdg [g .GrayAt (_fef ,_egab ).Y ]++;};};return _cfbdg ;default:return [256]int {};};};func (_fda *Monochrome )setBit (_gag ,_afc int ){_fda .Data [_gag ]|=0x80>>uint (_afc &7)};func (_gfa *Gray2 )Copy ()Image {return &Gray2 {ImageBase :_gfa .copy ()}};var _ Image =&Gray8 {};func (_eae *Monochrome )Set (x ,y int ,c _b .Color ){_dbgf :=y *_eae .BytesPerLine +x >>3;if _dbgf > len (_eae .Data )-1{return ;};_abe :=_eae .ColorModel ().Convert (c ).(_b .Gray );_eae .setGray (x ,_abe ,_dbgf
|